From fd315ee199395e6a614267efc9c85559ae711034 Mon Sep 17 00:00:00 2001 From: vovodroid Date: Sat, 10 Aug 2024 14:38:14 +0300 Subject: [PATCH 001/129] Allow default acceleration/jerk for all parameters. --- src/libslic3r/PrintConfig.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 089ca62c20..c76106188f 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2372,7 +2372,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Top surface"); def->tooltip = L("Jerk for top surface"); def->sidetext = L("mm/s"); - def->min = 1; + def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(9)); @@ -2380,7 +2380,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Infill"); def->tooltip = L("Jerk for infill"); def->sidetext = L("mm/s"); - def->min = 1; + def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(9)); @@ -2388,7 +2388,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Initial layer"); def->tooltip = L("Jerk for initial layer"); def->sidetext = L("mm/s"); - def->min = 1; + def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(9)); @@ -2396,7 +2396,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Travel"); def->tooltip = L("Jerk for travel"); def->sidetext = L("mm/s"); - def->min = 1; + def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(12)); From 58d524d75f354f68edcb0583887531bc8af72e39 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sun, 26 Jan 2025 11:16:02 +0800 Subject: [PATCH 002/129] Remove unused Organic tree code --- src/libslic3r/Support/TreeSupport3D.cpp | 643 +----------------------- 1 file changed, 4 insertions(+), 639 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport3D.cpp b/src/libslic3r/Support/TreeSupport3D.cpp index 98dc41f486..88074ccac8 100644 --- a/src/libslic3r/Support/TreeSupport3D.cpp +++ b/src/libslic3r/Support/TreeSupport3D.cpp @@ -2776,633 +2776,6 @@ static void create_nodes_from_area( #endif // NDEBUG } -// For producing circular / elliptical areas from SupportElements (one DrawArea per one SupportElement) -// and for smoothing those areas along the tree branches. -struct DrawArea -{ - // Element to be processed. - SupportElement *element; - // Element below, if there is such an element. nullptr if element is a root of a tree. - SupportElement *child_element; - // Polygons to be extruded for this element. - Polygons polygons; -}; - -/*! - * \brief Draws circles around result_on_layer points of the influence areas - * - * \param linear_data[in] All currently existing influence areas with the layer they are on - * \param layer_tree_polygons[out] Resulting branch areas with the layerindex they appear on. layer_tree_polygons.size() has to be at least linear_data.size() as each Influence area in linear_data will save have at least one (that's why it's a vector) corresponding branch area in layer_tree_polygons. - * \param inverse_tree_order[in] A mapping that returns the child of every influence area. - */ -static void generate_branch_areas( - const TreeModelVolumes &volumes, - const TreeSupportSettings &config, - const std::vector &move_bounds, - std::vector &linear_data, - std::function throw_on_cancel) -{ -#ifdef SLIC3R_TREESUPPORTS_PROGRESS - double progress_total = TREE_PROGRESS_PRECALC_AVO + TREE_PROGRESS_PRECALC_COLL + TREE_PROGRESS_GENERATE_NODES + TREE_PROGRESS_AREA_CALC; - constexpr int progress_report_steps = 10; - const size_t progress_inserts_check_interval = linear_data.size() / progress_report_steps; - std::mutex critical_sections; -#endif // SLIC3R_TREESUPPORTS_PROGRESS - - // Pre-generate a circle with correct diameter so that we don't have to recompute those (co)sines every time. - const Polygon branch_circle = make_circle(config.branch_radius, SUPPORT_TREE_CIRCLE_RESOLUTION); - - tbb::parallel_for(tbb::blocked_range(0, linear_data.size()), - [&volumes, &config, &move_bounds, &linear_data, &branch_circle, &throw_on_cancel](const tbb::blocked_range &range) { - for (size_t idx = range.begin(); idx < range.end(); ++ idx) { - DrawArea &draw_area = linear_data[idx]; - const LayerIndex layer_idx = draw_area.element->state.layer_idx; - const coord_t radius = support_element_radius(config, *draw_area.element); - bool parent_uses_min = false; - - // Calculate multiple ovalized circles, to connect with every parent and child. Also generate regular circle for the current layer. Merge all these into one area. - std::vector> movement_directions{ std::pair(Point(0, 0), radius) }; - if (! draw_area.element->state.skip_ovalisation) { - if (draw_area.child_element != nullptr) { - const Point movement = draw_area.child_element->state.result_on_layer - draw_area.element->state.result_on_layer; - movement_directions.emplace_back(movement, radius); - } - const SupportElements *layer_above = layer_idx + 1 < LayerIndex(move_bounds.size()) ? &move_bounds[layer_idx + 1] : nullptr; - for (int32_t parent_idx : draw_area.element->parents) { - const SupportElement &parent = (*layer_above)[parent_idx]; - const Point movement = parent.state.result_on_layer - draw_area.element->state.result_on_layer; - //FIXME why max(..., config.support_line_width)? - movement_directions.emplace_back(movement, std::max(support_element_radius(config, parent), config.support_line_width)); - parent_uses_min |= parent.state.use_min_xy_dist; - } - } - - const Polygons &collision = volumes.getCollision(0, layer_idx, parent_uses_min || draw_area.element->state.use_min_xy_dist); - auto generateArea = [&collision, &draw_area, &branch_circle, branch_radius = config.branch_radius, support_line_width = config.support_line_width, &movement_directions] - (coord_t aoffset, double &max_speed) { - Polygons poly; - max_speed = 0; - for (std::pair movement : movement_directions) { - max_speed = std::max(max_speed, movement.first.cast().norm()); - - // Visualization: https://jsfiddle.net/0zvcq39L/2/ - // Ovalizes the circle to an ellipse, that contains both old center and new target position. - double used_scale = (movement.second + aoffset) / (1.0 * branch_radius); - Point center_position = draw_area.element->state.result_on_layer + movement.first / 2; - const double moveX = movement.first.x() / (used_scale * branch_radius); - const double moveY = movement.first.y() / (used_scale * branch_radius); - const double vsize_inv = 0.5 / (0.01 + std::sqrt(moveX * moveX + moveY * moveY)); - - double matrix[] = { - used_scale * (1 + moveX * moveX * vsize_inv), - used_scale * (0 + moveX * moveY * vsize_inv), - used_scale * (0 + moveX * moveY * vsize_inv), - used_scale * (1 + moveY * moveY * vsize_inv), - }; - Polygon circle; - for (Point vertex : branch_circle) - circle.points.emplace_back(center_position + Point(matrix[0] * vertex.x() + matrix[1] * vertex.y(), matrix[2] * vertex.x() + matrix[3] * vertex.y())); - poly.emplace_back(std::move(circle)); - } - - // There seem to be some rounding errors, causing a branch to be a tiny bit further away from the model that it has to be. - // This can cause the tip to be slightly further away front the overhang (x/y wise) than optimal. This fixes it, and for every other part, 0.05mm will not be noticed. - poly = diff_clipped(offset(union_(poly), std::min(coord_t(50), support_line_width / 4), jtMiter, 1.2), collision); - return poly; - }; - - // Ensure branch area will not overlap with model/collision. This can happen because of e.g. ovalization or increase_until_radius. - double max_speed; - Polygons polygons = generateArea(0, max_speed); - const bool fast_relative_movement = max_speed > radius * 0.75; - - if (fast_relative_movement || support_element_radius(config, *draw_area.element) - support_element_collision_radius(config, draw_area.element->state) > config.support_line_width) { - // Simulate the path the nozzle will take on the outermost wall. - // If multiple parts exist, the outer line will not go all around the support part potentially causing support material to be printed mid air. - ExPolygons nozzle_path = offset_ex(polygons, - config.support_line_width / 2); - if (nozzle_path.size() > 1) { - // Just try to make the area a tiny bit larger. - polygons = generateArea(config.support_line_width / 2, max_speed); - nozzle_path = offset_ex(polygons, -config.support_line_width / 2); - // If larger area did not fix the problem, all parts off the nozzle path that do not contain the center point are removed, hoping for the best. - if (nozzle_path.size() > 1) { - ExPolygons polygons_with_correct_center; - for (ExPolygon &part : nozzle_path) { - bool drop = false; - if (! part.contains(draw_area.element->state.result_on_layer)) { - // try a fuzzy inside as sometimes the point should be on the border, but is not because of rounding errors... - Point pt = draw_area.element->state.result_on_layer; - move_inside(to_polygons(part), pt, 0); - drop = (draw_area.element->state.result_on_layer - pt).cast().norm() >= scaled(0.025); - } - if (! drop) - polygons_with_correct_center.emplace_back(std::move(part)); - } - // Increase the area again, to ensure the nozzle path when calculated later is very similar to the one assumed above. - assert(contains(polygons, draw_area.element->state.result_on_layer)); - polygons = diff_clipped(offset(polygons_with_correct_center, config.support_line_width / 2, jtMiter, 1.2), - //FIXME Vojtech: Clipping may split the region into multiple pieces again, reversing the fixing effort. - collision); - } - } - } - - draw_area.polygons = std::move(polygons); - -#ifdef SLIC3R_TREESUPPORTS_PROGRESS - if (idx % progress_inserts_check_interval == 0) { - std::lock_guard critical_section_progress(critical_sections); - progress_total += TREE_PROGRESS_GENERATE_BRANCH_AREAS / progress_report_steps; - Progress::messageProgress(Progress::Stage::SUPPORT, progress_total * m_progress_multiplier + m_progress_offset, TREE_PROGRESS_TOTAL); - } -#endif - throw_on_cancel(); - } - }); -} - -/*! - * \brief Applies some smoothing to the outer wall, intended to smooth out sudden jumps as they can happen when a branch moves though a hole. - * - * \param layer_tree_polygons[in,out] Resulting branch areas with the layerindex they appear on. - */ -static void smooth_branch_areas( - const TreeSupportSettings &config, - std::vector &move_bounds, - std::vector &linear_data, - const std::vector &linear_data_layers, - std::function throw_on_cancel) -{ -#ifdef SLIC3R_TREESUPPORTS_PROGRESS - double progress_total = TREE_PROGRESS_PRECALC_AVO + TREE_PROGRESS_PRECALC_COLL + TREE_PROGRESS_GENERATE_NODES + TREE_PROGRESS_AREA_CALC + TREE_PROGRESS_GENERATE_BRANCH_AREAS; -#endif // SLIC3R_TREESUPPORTS_PROGRESS - - const coord_t max_radius_change_per_layer = 1 + config.support_line_width / 2; // this is the upper limit a radius may change per layer. +1 to avoid rounding errors - - // smooth upwards - for (LayerIndex layer_idx = 0; layer_idx < LayerIndex(move_bounds.size()) - 1; ++ layer_idx) { - const size_t processing_base = linear_data_layers[layer_idx]; - const size_t processing_base_above = linear_data_layers[layer_idx + 1]; - const SupportElements &layer_above = move_bounds[layer_idx + 1]; - tbb::parallel_for(tbb::blocked_range(0, processing_base_above - processing_base), - [&](const tbb::blocked_range &range) { - for (size_t processing_idx = range.begin(); processing_idx < range.end(); ++ processing_idx) { - DrawArea &draw_area = linear_data[processing_base + processing_idx]; - assert(draw_area.element->state.layer_idx == layer_idx); - double max_outer_wall_distance = 0; - bool do_something = false; - for (int32_t parent_idx : draw_area.element->parents) { - const SupportElement &parent = layer_above[parent_idx]; - assert(parent.state.layer_idx == layer_idx + 1); - if (support_element_radius(config, parent) != support_element_collision_radius(config, parent)) { - do_something = true; - max_outer_wall_distance = std::max(max_outer_wall_distance, - (draw_area.element->state.result_on_layer - parent.state.result_on_layer).cast().norm() - (support_element_radius(config, *draw_area.element) - support_element_radius(config, parent))); - } - } - max_outer_wall_distance += max_radius_change_per_layer; // As this change is a bit larger than what usually appears, lost radius can be slowly reclaimed over the layers. - if (do_something) { - assert(contains(draw_area.polygons, draw_area.element->state.result_on_layer)); - Polygons max_allowed_area = offset(draw_area.polygons, float(max_outer_wall_distance), jtMiter, 1.2); - for (int32_t parent_idx : draw_area.element->parents) { - const SupportElement &parent = layer_above[parent_idx]; -#ifndef NDEBUG - assert(parent.state.layer_idx == layer_idx + 1); - assert(contains(linear_data[processing_base_above + parent_idx].polygons, parent.state.result_on_layer)); - double radius_increase = support_element_radius(config, *draw_area.element) - support_element_radius(config, parent); - assert(radius_increase >= 0); - double shift = (draw_area.element->state.result_on_layer - parent.state.result_on_layer).cast().norm(); - assert(shift < radius_increase + 2. * config.maximum_move_distance_slow); -#endif // NDEBUG - if (support_element_radius(config, parent) != support_element_collision_radius(config, parent)) { - // No other element on this layer than the current one may be connected to &parent, - // thus it is safe to update parent's DrawArea directly. - Polygons &dst = linear_data[processing_base_above + parent_idx].polygons; -// Polygons orig = dst; - if (! dst.empty()) { - dst = intersection(dst, max_allowed_area); -#if 0 - if (dst.empty()) { - static int irun = 0; - SVG::export_expolygons(debug_out_path("treesupport-extrude_areas-smooth-error-%d.svg", irun ++), - { { { union_ex(max_allowed_area) }, { "max_allowed_area", "yellow", 0.5f } }, - { { union_ex(orig) }, { "orig", "red", "black", "", scaled(0.1f), 0.5f } } }); - ::MessageBoxA(nullptr, "TreeSupport smoothing bug", "Bug detected!", MB_OK | MB_SYSTEMMODAL | MB_SETFOREGROUND | MB_ICONWARNING); - } -#endif - } - } - } - } - throw_on_cancel(); - } - }); - } - -#ifdef SLIC3R_TREESUPPORTS_PROGRESS - progress_total += TREE_PROGRESS_SMOOTH_BRANCH_AREAS / 2; - Progress::messageProgress(Progress::Stage::SUPPORT, progress_total * m_progress_multiplier + m_progress_offset, TREE_PROGRESS_TOTAL); // It is just assumed that both smoothing loops together are one third of the time spent in this function. This was guessed. As the whole function is only 10%, and the smoothing is hard to predict a progress report in the loop may be not useful. -#endif - - // smooth downwards - for (auto& element : move_bounds.back()) - element.state.marked = false; - for (int layer_idx = int(move_bounds.size()) - 2; layer_idx >= 0; -- layer_idx) { - const size_t processing_base = linear_data_layers[layer_idx]; - const size_t processing_base_above = linear_data_layers[layer_idx + 1]; - const SupportElements &layer_above = move_bounds[layer_idx + 1]; - tbb::parallel_for(tbb::blocked_range(0, processing_base_above - processing_base), - [&](const tbb::blocked_range &range) { - for (size_t processing_idx = range.begin(); processing_idx < range.end(); ++ processing_idx) { - DrawArea &draw_area = linear_data[processing_base + processing_idx]; - bool do_something = false; - Polygons max_allowed_area; - for (int32_t parent_idx : draw_area.element->parents) { - const SupportElement &parent = layer_above[parent_idx]; - coord_t max_outer_line_increase = max_radius_change_per_layer; - Polygons result = offset(linear_data[processing_base_above + parent_idx].polygons, max_outer_line_increase, jtMiter, 1.2); - Point direction = draw_area.element->state.result_on_layer - parent.state.result_on_layer; - // move the polygons object - for (auto &outer : result) - for (Point& p : outer) - p += direction; - append(max_allowed_area, std::move(result)); - do_something = do_something || parent.state.marked || support_element_collision_radius(config, parent) != support_element_radius(config, parent); - } - if (do_something) { - // Trim the current drawing areas with max_allowed_area. - Polygons result = intersection(max_allowed_area, draw_area.polygons); - if (area(result) < area(draw_area.polygons)) { - // Mark parent as modified to propagate down. - draw_area.element->state.marked = true; - draw_area.polygons = std::move(result); - } - } - throw_on_cancel(); - } - }); - } - -#ifdef SLIC3R_TREESUPPORTS_PROGRESS - progress_total += TREE_PROGRESS_SMOOTH_BRANCH_AREAS / 2; - Progress::messageProgress(Progress::Stage::SUPPORT, progress_total * m_progress_multiplier + m_progress_offset, TREE_PROGRESS_TOTAL); -#endif -} - -/*! - * \brief Drop down areas that do rest non-gracefully on the model to ensure the branch actually rests on something. - * - * \param layer_tree_polygons[in] Resulting branch areas with the layerindex they appear on. - * \param linear_data[in] All currently existing influence areas with the layer they are on - * \param dropped_down_areas[out] Areas that have to be added to support all non-graceful areas. - * \param inverse_tree_order[in] A mapping that returns the child of every influence area. - */ -static void drop_non_gracious_areas( - const TreeModelVolumes &volumes, - const std::vector &linear_data, - std::vector &support_layer_storage, - std::function throw_on_cancel) -{ - const auto _tiny_area_threshold = tiny_area_threshold(); - std::vector>> dropped_down_areas(linear_data.size()); - tbb::parallel_for(tbb::blocked_range(0, linear_data.size()), - [&](const tbb::blocked_range &range) { - for (size_t idx = range.begin(); idx < range.end(); ++ idx) { - // If a element has no child, it connects to whatever is below as no support further down for it will exist. - if (const DrawArea &draw_element = linear_data[idx]; ! draw_element.element->state.to_model_gracious && draw_element.child_element == nullptr) { - Polygons rest_support; - const LayerIndex layer_idx_first = draw_element.element->state.layer_idx - 1; - for (LayerIndex layer_idx = layer_idx_first; area(rest_support) > _tiny_area_threshold && layer_idx >= 0; -- layer_idx) { - rest_support = diff_clipped(layer_idx == layer_idx_first ? draw_element.polygons : rest_support, volumes.getCollision(0, layer_idx, false)); - dropped_down_areas[idx].emplace_back(layer_idx, rest_support); - } - } - throw_on_cancel(); - } - }); - - for (coord_t i = 0; i < static_cast(dropped_down_areas.size()); i++) - for (std::pair &pair : dropped_down_areas[i]) - append(support_layer_storage[pair.first], std::move(pair.second)); -} - -/*! - * \brief Generates Support Floor, ensures Support Roof can not cut of branches, and saves the branches as support to storage - * - * \param support_layer_storage[in] Areas where support should be generated. - * \param support_roof_storage[in] Areas where support was replaced with roof. - * \param storage[in,out] The storage where the support should be stored. - */ -static void finalize_interface_and_support_areas( - const PrintObject &print_object, - const TreeModelVolumes &volumes, - const TreeSupportSettings &config, - const std::vector &overhangs, - std::vector &support_layer_storage, - std::vector &support_roof_storage, - - SupportGeneratorLayersPtr &bottom_contacts, - SupportGeneratorLayersPtr &top_contacts, - SupportGeneratorLayersPtr &intermediate_layers, - SupportGeneratorLayerStorage &layer_storage, - - std::function throw_on_cancel) -{ - assert(std::all_of(bottom_contacts.begin(), bottom_contacts.end(), [](auto *p) { return p == nullptr; })); -// assert(std::all_of(top_contacts.begin(), top_contacts.end(), [](auto* p) { return p == nullptr; })); - assert(std::all_of(intermediate_layers.begin(), intermediate_layers.end(), [](auto* p) { return p == nullptr; })); - - InterfacePreference interface_pref = config.interface_preference; // InterfacePreference::InterfaceAreaOverwritesSupport; - -#ifdef SLIC3R_TREESUPPORTS_PROGRESS - double progress_total = TREE_PROGRESS_PRECALC_AVO + TREE_PROGRESS_PRECALC_COLL + TREE_PROGRESS_GENERATE_NODES + TREE_PROGRESS_AREA_CALC + TREE_PROGRESS_GENERATE_BRANCH_AREAS + TREE_PROGRESS_SMOOTH_BRANCH_AREAS; -#endif // SLIC3R_TREESUPPORTS_PROGRESS - - // Iterate over the generated circles in parallel and clean them up. Also add support floor. - tbb::parallel_for(tbb::blocked_range(0, support_layer_storage.size()), - [&](const tbb::blocked_range &range) { - for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++ layer_idx) { - // Subtract support lines of the branches from the roof - SupportGeneratorLayer *support_roof = top_contacts[layer_idx]; - Polygons support_roof_polygons; - - if (Polygons &src = support_roof_storage[layer_idx]; ! src.empty()) { - if (support_roof != nullptr && ! support_roof->polygons.empty()) { - support_roof_polygons = union_(src, support_roof->polygons); - support_roof->polygons.clear(); - } else - support_roof_polygons = std::move(src); - } else if (support_roof != nullptr) { - support_roof_polygons = std::move(support_roof->polygons); - support_roof->polygons.clear(); - } - - assert(intermediate_layers[layer_idx] == nullptr); - Polygons base_layer_polygons = std::move(support_layer_storage[layer_idx]); - - if (! base_layer_polygons.empty()) { - // Most of the time in this function is this union call. Can take 300+ ms when a lot of areas are to be unioned. - base_layer_polygons = smooth_outward(union_(base_layer_polygons), config.support_line_width); //FIXME was .smooth(50); - //smooth_outward(closing(std::move(bottom), closing_distance + minimum_island_radius, closing_distance, SUPPORT_SURFACES_OFFSET_PARAMETERS), smoothing_distance) : - // simplify a bit, to ensure the output does not contain outrageous amounts of vertices. Should not be necessary, just a precaution. - base_layer_polygons = polygons_simplify(base_layer_polygons, std::min(scaled(0.03), double(config.resolution)), polygons_strictly_simple); - } - - if (! support_roof_polygons.empty() && ! base_layer_polygons.empty()) { -// if (area(intersection(base_layer_polygons, support_roof_polygons)) > tiny_area_threshold) - { - switch (interface_pref) { - case InterfacePreference::InterfaceAreaOverwritesSupport: - base_layer_polygons = diff(base_layer_polygons, support_roof_polygons); - break; - case InterfacePreference::SupportAreaOverwritesInterface: - support_roof_polygons = diff(support_roof_polygons, base_layer_polygons); - break; - //FIXME - #if 1 - case InterfacePreference::InterfaceLinesOverwriteSupport: - case InterfacePreference::SupportLinesOverwriteInterface: - assert(false); - [[fallthrough]]; - #else - case InterfacePreference::InterfaceLinesOverwriteSupport: - { - // Hatch the support roof interfaces, offset them by their line width and subtract them from support base. - Polygons interface_lines = offset(to_polylines( - generate_support_infill_lines(support_roof->polygons, true, layer_idx, config.support_roof_line_distance)), - config.support_roof_line_width / 2); - base_layer_polygons = diff(base_layer_polygons, interface_lines); - break; - } - case InterfacePreference::SupportLinesOverwriteInterface: - { - // Hatch the support roof interfaces, offset them by their line width and subtract them from support base. - Polygons tree_lines = union_(offset(to_polylines( - generate_support_infill_lines(base_layer_polygons, false, layer_idx, config.support_line_distance, true)), - config.support_line_width / 2)); - // do not draw roof where the tree is. I prefer it this way as otherwise the roof may cut of a branch from its support below. - support_roof->polygons = diff(support_roof->polygons, tree_lines); - break; - } - #endif - case InterfacePreference::Nothing: - break; - } - } - } - - // Subtract support floors from the support area and add them to the support floor instead. - if (config.support_bottom_layers > 0 && ! base_layer_polygons.empty()) { - SupportGeneratorLayer*& support_bottom = bottom_contacts[layer_idx]; - Polygons layer_outset = diff_clipped( - config.support_bottom_offset > 0 ? offset(base_layer_polygons, config.support_bottom_offset, jtMiter, 1.2) : base_layer_polygons, - volumes.getCollision(0, layer_idx, false)); - Polygons floor_layer; - size_t layers_below = 0; - while (layers_below <= config.support_bottom_layers) { - // one sample at 0 layers below, another at config.support_bottom_layers. In-between samples at config.performance_interface_skip_layers distance from each other. - const size_t sample_layer = static_cast(std::max(0, (static_cast(layer_idx) - static_cast(layers_below)) - static_cast(config.z_distance_bottom_layers))); - //FIXME subtract the wipe tower - append(floor_layer, intersection(layer_outset, overhangs[sample_layer])); - if (layers_below < config.support_bottom_layers) - layers_below = std::min(layers_below + 1, config.support_bottom_layers); - else - break; - } - if (! floor_layer.empty()) { - if (support_bottom == nullptr) - support_bottom = &layer_allocate(layer_storage, SupporLayerType::BottomContact, print_object.slicing_parameters(), config, layer_idx); - support_bottom->polygons = union_(floor_layer, support_bottom->polygons); - base_layer_polygons = diff_clipped(base_layer_polygons, offset(support_bottom->polygons, scaled(0.01), jtMiter, 1.2)); // Subtract the support floor from the normal support. - } - } - - if (! support_roof_polygons.empty()) { - if (support_roof == nullptr) - support_roof = top_contacts[layer_idx] = &layer_allocate(layer_storage, SupporLayerType::TopContact, print_object.slicing_parameters(), config, layer_idx); - support_roof->polygons = union_(support_roof_polygons); - } - if (! base_layer_polygons.empty()) { - SupportGeneratorLayer *base_layer = intermediate_layers[layer_idx] = &layer_allocate(layer_storage, SupporLayerType::Base, print_object.slicing_parameters(), config, layer_idx); - base_layer->polygons = union_(base_layer_polygons); - } - -#ifdef SLIC3R_TREESUPPORTS_PROGRESS - { - std::lock_guard critical_section_progress(critical_sections); - progress_total += TREE_PROGRESS_FINALIZE_BRANCH_AREAS / support_layer_storage.size(); - Progress::messageProgress(Progress::Stage::SUPPORT, progress_total * m_progress_multiplier + m_progress_offset, TREE_PROGRESS_TOTAL); - } -#endif -#if 0 - { - std::lock_guard lock(critical_sections); - if (!storage.support.supportLayers[layer_idx].support_infill_parts.empty() || !storage.support.supportLayers[layer_idx].support_roof.empty()) - storage.support.layer_nr_max_filled_layer = std::max(storage.support.layer_nr_max_filled_layer, static_cast(layer_idx)); - } -#endif - throw_on_cancel(); - } - }); -} - -/*! - * \brief Draws circles around result_on_layer points of the influence areas and applies some post processing. - * - * \param move_bounds[in] All currently existing influence areas - * \param storage[in,out] The storage where the support should be stored. - */ -static void draw_areas( - PrintObject &print_object, - const TreeModelVolumes &volumes, - const TreeSupportSettings &config, - const std::vector &overhangs, - std::vector &move_bounds, - - SupportGeneratorLayersPtr &bottom_contacts, - SupportGeneratorLayersPtr &top_contacts, - SupportGeneratorLayersPtr &intermediate_layers, - SupportGeneratorLayerStorage &layer_storage, - std::function throw_on_cancel) -{ - std::vector support_layer_storage(move_bounds.size()); - std::vector support_roof_storage(move_bounds.size()); - // All SupportElements are put into a layer independent storage to improve parallelization. - std::vector linear_data; - std::vector linear_data_layers; - { - std::vector> map_downwards_old; - std::vector> map_downwards_new; - for (LayerIndex layer_idx = 0; layer_idx < LayerIndex(move_bounds.size()); ++ layer_idx) { - SupportElements *layer_above = layer_idx + 1 < LayerIndex(move_bounds.size()) ? &move_bounds[layer_idx + 1] : nullptr; - map_downwards_new.clear(); - linear_data_layers.emplace_back(linear_data.size()); - std::sort(map_downwards_old.begin(), map_downwards_old.end(), [](auto &l, auto &r) { return l.first < r.first; }); - for (SupportElement &elem : move_bounds[layer_idx]) { - SupportElement *child = nullptr; - if (layer_idx > 0) { - auto it = std::lower_bound(map_downwards_old.begin(), map_downwards_old.end(), &elem, [](auto &l, const SupportElement *r) { return l.first < r; }); - if (it != map_downwards_old.end() && it->first == &elem) { - child = it->second; - // Only one link points to a node above from below. - assert(! (++ it != map_downwards_old.end() && it->first == &elem)); - } - assert(child ? child->state.result_on_layer_is_set() : elem.state.target_height > layer_idx); - } - for (int32_t parent_idx : elem.parents) { - SupportElement &parent = (*layer_above)[parent_idx]; - if (parent.state.result_on_layer_is_set()) - map_downwards_new.emplace_back(&parent, &elem); - } - linear_data.push_back({ &elem, child }); - } - std::swap(map_downwards_old, map_downwards_new); - } - linear_data_layers.emplace_back(linear_data.size()); - } - - throw_on_cancel(); - -#ifndef NDEBUG - for (size_t i = 0; i < move_bounds.size(); ++ i) { - size_t begin = linear_data_layers[i]; - size_t end = linear_data_layers[i + 1]; - for (size_t j = begin; j < end; ++ j) - assert(linear_data[j].element == &move_bounds[i][j - begin]); - } -#endif // NDEBUG - - auto t_start = std::chrono::high_resolution_clock::now(); - // Generate the circles that will be the branches. - generate_branch_areas(volumes, config, move_bounds, linear_data, throw_on_cancel); - -#if 0 - assert(linear_data_layers.size() == move_bounds.size() + 1); - for (const auto &draw_area : linear_data) - assert(contains(draw_area.polygons, draw_area.element->state.result_on_layer)); - for (size_t i = 0; i < move_bounds.size(); ++ i) { - size_t begin = linear_data_layers[i]; - size_t end = linear_data_layers[i + 1]; - for (size_t j = begin; j < end; ++ j) { - const auto &draw_area = linear_data[j]; - assert(draw_area.element == &move_bounds[i][j - begin]); - assert(contains(draw_area.polygons, draw_area.element->state.result_on_layer)); - } - } -#endif - -#if 0 - for (size_t area_layer_idx = 0; area_layer_idx + 1 < linear_data_layers.size(); ++ area_layer_idx) { - size_t begin = linear_data_layers[area_layer_idx]; - size_t end = linear_data_layers[area_layer_idx + 1]; - Polygons polygons; - for (size_t area_idx = begin; area_idx < end; ++ area_idx) { - DrawArea &area = linear_data[area_idx]; - append(polygons, area.polygons); - } - SVG::export_expolygons(debug_out_path("treesupport-extrude_areas-raw-%d.svg", area_layer_idx), - { { { union_ex(polygons) }, { "parent", "red", "black", "", scaled(0.1f), 0.5f } } }); - } -#endif - - auto t_generate = std::chrono::high_resolution_clock::now(); - // In some edgecases a branch may go though a hole, where the regular radius does not fit. This can result in an apparent jump in branch radius. As such this cases need to be caught and smoothed out. - smooth_branch_areas(config, move_bounds, linear_data, linear_data_layers, throw_on_cancel); - -#if 0 - for (size_t area_layer_idx = 0; area_layer_idx + 1 < linear_data_layers.size(); ++area_layer_idx) { - size_t begin = linear_data_layers[area_layer_idx]; - size_t end = linear_data_layers[area_layer_idx + 1]; - Polygons polygons; - for (size_t area_idx = begin; area_idx < end; ++area_idx) { - DrawArea& area = linear_data[area_idx]; - append(polygons, area.polygons); - } - SVG::export_expolygons(debug_out_path("treesupport-extrude_areas-smooth-%d.svg", area_layer_idx), - { { { union_ex(polygons) }, { "parent", "red", "black", "", scaled(0.1f), 0.5f } } }); - } -#endif - - auto t_smooth = std::chrono::high_resolution_clock::now(); - // drop down all trees that connect non gracefully with the model - drop_non_gracious_areas(volumes, linear_data, support_layer_storage, throw_on_cancel); - auto t_drop = std::chrono::high_resolution_clock::now(); - - // Single threaded combining all support areas to the right layers. - { - auto begin = linear_data.begin(); - for (LayerIndex layer_idx = 0; layer_idx < LayerIndex(move_bounds.size()); ++ layer_idx) { - size_t cnt_roofs = 0; - size_t cnt_layers = 0; - auto end = begin; - for (; end != linear_data.end() && end->element->state.layer_idx == layer_idx; ++ end) - ++ (end->element->state.missing_roof_layers > end->element->state.distance_to_top ? cnt_roofs : cnt_layers); - auto &this_roofs = support_roof_storage[layer_idx]; - auto &this_layers = support_layer_storage[layer_idx]; - this_roofs.reserve(this_roofs.size() + cnt_roofs); - this_layers.reserve(this_layers.size() + cnt_layers); - for (auto it = begin; it != end; ++ it) - std::move(std::begin(it->polygons), std::end(it->polygons), std::back_inserter(it->element->state.missing_roof_layers > it->element->state.distance_to_top ? this_roofs : this_layers)); - begin = end; - } - } - - finalize_interface_and_support_areas(print_object, volumes, config, overhangs, support_layer_storage, support_roof_storage, - bottom_contacts, top_contacts, intermediate_layers, layer_storage, throw_on_cancel); - auto t_end = std::chrono::high_resolution_clock::now(); - - auto dur_gen_tips = 0.001 * std::chrono::duration_cast(t_generate - t_start).count(); - auto dur_smooth = 0.001 * std::chrono::duration_cast(t_smooth - t_generate).count(); - auto dur_drop = 0.001 * std::chrono::duration_cast(t_drop - t_smooth).count(); - auto dur_finalize = 0.001 * std::chrono::duration_cast(t_end - t_drop).count(); - - BOOST_LOG_TRIVIAL(info) << - "Time used for drawing subfuctions: generate_branch_areas: " << dur_gen_tips << " ms " - "smooth_branch_areas: " << dur_smooth << " ms " - "drop_non_gracious_areas: " << dur_drop << " ms " - "finalize_interface_and_support_areas " << dur_finalize << " ms"; -} - template void triangulate_fan(indexed_triangle_set &its, int ifan, int ibegin, int iend) { @@ -4065,18 +3438,10 @@ static void generate_support_areas(Print &print, const BuildVolume &build_volume auto t_place = std::chrono::high_resolution_clock::now(); // ### draw these points as circles - - if (print_object.config().support_style.value != smsOrganic && - // Orca: use organic as default - print_object.config().support_style.value != smsDefault) { - draw_areas(*print.get_object(processing.second.front()), volumes, config, overhangs, move_bounds, - bottom_contacts, top_contacts, intermediate_layers, layer_storage, throw_on_cancel); - } else { - organic_draw_branches( - *print.get_object(processing.second.front()), volumes, config, move_bounds, - bottom_contacts, top_contacts, interface_placer, intermediate_layers, layer_storage, - throw_on_cancel); - } + organic_draw_branches( + *print.get_object(processing.second.front()), volumes, config, move_bounds, + bottom_contacts, top_contacts, interface_placer, intermediate_layers, layer_storage, + throw_on_cancel); remove_undefined_layers(); From 824f9efb69f1970e0c1da9b13cd87db46ce471bc Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sun, 26 Jan 2025 15:36:07 +0800 Subject: [PATCH 003/129] Remove duplicated support code --- src/libslic3r/Support/SupportCommon.cpp | 256 ++-- src/libslic3r/Support/SupportMaterial.cpp | 1562 +-------------------- src/libslic3r/Support/SupportMaterial.hpp | 60 +- 3 files changed, 146 insertions(+), 1732 deletions(-) diff --git a/src/libslic3r/Support/SupportCommon.cpp b/src/libslic3r/Support/SupportCommon.cpp index d37324084c..01261bb6dc 100644 --- a/src/libslic3r/Support/SupportCommon.cpp +++ b/src/libslic3r/Support/SupportCommon.cpp @@ -329,19 +329,21 @@ SupportGeneratorLayersPtr generate_raft_base( const BrimType brim_type = object.config().brim_type; const bool brim_outer = brim_type == btOuterOnly || brim_type == btOuterAndInner; const bool brim_inner = brim_type == btInnerOnly || brim_type == btOuterAndInner; - const auto brim_separation = scaled(object.config().brim_object_gap.value + object.config().brim_width.value); + // BBS: the pattern of raft and brim are the same, thus the brim can be serpated by support raft. + const auto brim_object_gap = scaled(object.config().brim_object_gap.value); + //const auto brim_object_gap = scaled(object.config().brim_object_gap.value + object.config().brim_width.value); for (const ExPolygon &ex : object.layers().front()->lslices) { if (brim_outer && brim_inner) - polygons_append(brim, offset(ex, brim_separation)); + polygons_append(brim, offset(ex, brim_object_gap)); else { if (brim_outer) - polygons_append(brim, offset(ex.contour, brim_separation, ClipperLib::jtRound, float(scale_(0.1)))); + polygons_append(brim, offset(ex.contour, brim_object_gap, ClipperLib::jtRound, float(scale_(0.1)))); else brim.emplace_back(ex.contour); if (brim_inner) { Polygons holes = ex.holes; polygons_reverse(holes); - holes = shrink(holes, brim_separation, ClipperLib::jtRound, float(scale_(0.1))); + holes = shrink(holes, brim_object_gap, ClipperLib::jtRound, float(scale_(0.1))); polygons_reverse(holes); polygons_append(brim, std::move(holes)); } else @@ -378,7 +380,7 @@ SupportGeneratorLayersPtr generate_raft_base( polygons_append(interface_polygons, expand(interfaces->polygons, inflate_factor_fine, SUPPORT_SURFACES_OFFSET_PARAMETERS)); if (base_interfaces != nullptr && ! base_interfaces->polygons.empty()) polygons_append(interface_polygons, expand(base_interfaces->polygons, inflate_factor_fine, SUPPORT_SURFACES_OFFSET_PARAMETERS)); - + // Output vector. SupportGeneratorLayersPtr raft_layers; @@ -402,12 +404,12 @@ SupportGeneratorLayersPtr generate_raft_base( } if (! interface_polygons.empty()) { // Merge the untrimmed columns base with the expanded raft interface, to be used for the support base and interface. - base = union_(base, interface_polygons); + base = union_(base, interface_polygons); } // Do not add the raft contact layer, only add the raft layers below the contact layer. // Insert the 1st layer. { - SupportGeneratorLayer &new_layer = layer_storage.allocate_unguarded(slicing_params.base_raft_layers > 0 ? SupporLayerType::RaftBase : SupporLayerType::RaftInterface); + SupportGeneratorLayer &new_layer = layer_storage.allocate(slicing_params.base_raft_layers > 0 ? SupporLayerType::RaftBase : SupporLayerType::RaftInterface); raft_layers.push_back(&new_layer); new_layer.print_z = slicing_params.first_print_layer_height; new_layer.height = slicing_params.first_print_layer_height; @@ -441,7 +443,12 @@ SupportGeneratorLayersPtr generate_raft_base( if (columns_base != nullptr) { // Expand the bases of the support columns in the 1st layer. Polygons &raft = columns_base->polygons; - Polygons trimming = offset(object.layers().front()->lslices, (float)scale_(support_params.gap_xy), SUPPORT_SURFACES_OFFSET_PARAMETERS); + Polygons trimming; + // BBS: if first layer of support is intersected with object island, it must have the same function as brim unless in nobrim mode. + if (object.has_brim()) + trimming = offset(object.layers().front()->lslices, (float)scale_(object.config().brim_object_gap.value), SUPPORT_SURFACES_OFFSET_PARAMETERS); + else + trimming = offset(object.layers().front()->lslices, (float)scale_(support_params.gap_xy), SUPPORT_SURFACES_OFFSET_PARAMETERS); if (inflate_factor_1st_layer > SCALED_EPSILON) { // Inflate in multiple steps to avoid leaking of the support 1st layer through object walls. auto nsteps = std::max(5, int(ceil(inflate_factor_1st_layer / support_params.first_layer_flow.scaled_width()))); @@ -536,10 +543,10 @@ static Polylines draw_perimeters(const ExPolygon &expoly, double clip_length) return polylines; } -static inline void tree_supports_generate_paths( +void tree_supports_generate_paths( ExtrusionEntitiesPtr &dst, const Polygons &polygons, - const Flow &flow, + const Flow &flow, const SupportParameters &support_params) { // Offset expolygon inside, returns number of expolygons collected (0 or 1). @@ -606,7 +613,7 @@ static inline void tree_supports_generate_paths( // No hole remaining after an offset. Just copy the outer contour. append(out, std::move(contours)); } else { - // Negative offset. There is a chance, that the offsetted hole intersects the outer contour. + // Negative offset. There is a chance, that the offsetted hole intersects the outer contour. // Subtract the offsetted holes from the offsetted contours. ClipperLib_Z::Clipper clipper; clipper.ZFillFunction([](const ClipperLib_Z::IntPoint &e1bot, const ClipperLib_Z::IntPoint &e1top, const ClipperLib_Z::IntPoint &e2bot, const ClipperLib_Z::IntPoint &e2top, ClipperLib_Z::IntPoint &pt) { @@ -637,124 +644,126 @@ static inline void tree_supports_generate_paths( ClipperLib_Z::Paths anchor_candidates; for (ExPolygon& expoly : closing_ex(polygons, float(SCALED_EPSILON), float(SCALED_EPSILON + 0.5 * flow.scaled_width()))) { std::unique_ptr eec; + ExPolygons regions_to_draw_inner_wall{expoly}; if (support_params.tree_branch_diameter_double_wall_area_scaled > 0) if (double area = expoly.area(); area > support_params.tree_branch_diameter_double_wall_area_scaled) { + BOOST_LOG_TRIVIAL(debug)<< "TreeSupports: double wall area: " << area<< " > " << support_params.tree_branch_diameter_double_wall_area_scaled; eec = std::make_unique(); - // Don't reoder internal / external loops of the same island, always start with the internal loop. + // Don't reorder internal / external loops of the same island, always start with the internal loop. eec->no_sort = true; // Make the tree branch stable by adding another perimeter. - ExPolygons level2 = offset2_ex({ expoly }, -1.5 * flow.scaled_width(), 0.5 * flow.scaled_width()); - if (level2.size() == 1) { - Polylines polylines; + ExPolygons level2 = offset2_ex({expoly}, -1.5 * flow.scaled_width(), 0.5 * flow.scaled_width()); + if (level2.size() > 0) { + regions_to_draw_inner_wall = level2; extrusion_entities_append_paths(eec->entities, draw_perimeters(expoly, clip_length), ExtrusionRole::erSupportMaterial, flow.mm3_per_mm(), flow.width(), flow.height(), - // Disable reversal of the path, always start with the anchor, always print CCW. - false); + // Disable reversal of the path, always start with the anchor, always print CCW. + false); expoly = level2.front(); } } + for (ExPolygon &expoly : regions_to_draw_inner_wall) + { + // Try to produce one more perimeter to place the seam anchor. + // First genrate a 2nd perimeter loop as a source for anchor candidates. + // The anchor candidate points are annotated with an index of the source contour or with -1 if on intersection. + anchor_candidates.clear(); + shrink_expolygon_with_contour_idx(expoly, flow.scaled_width(), DefaultJoinType, 1.2, anchor_candidates); + // Orient all contours CW. + for (auto &path : anchor_candidates) + if (ClipperLib_Z::Area(path) > 0) std::reverse(path.begin(), path.end()); - // Try to produce one more perimeter to place the seam anchor. - // First genrate a 2nd perimeter loop as a source for anchor candidates. - // The anchor candidate points are annotated with an index of the source contour or with -1 if on intersection. - anchor_candidates.clear(); - shrink_expolygon_with_contour_idx(expoly, flow.scaled_width(), DefaultJoinType, 1.2, anchor_candidates); - // Orient all contours CW. - for (auto &path : anchor_candidates) - if (ClipperLib_Z::Area(path) > 0) - std::reverse(path.begin(), path.end()); - - // Draw the perimeters. - Polylines polylines; - polylines.reserve(expoly.holes.size() + 1); - for (int idx_loop = 0; idx_loop < int(expoly.num_contours()); ++ idx_loop) { - // Open the loop with a seam. - const Polygon &loop = expoly.contour_or_hole(idx_loop); - Polyline pl(loop.points); - // Orient all contours CW, because the anchor will be added to the end of polyline while we want to start a loop with the anchor. - if (idx_loop == 0) - // It is an outer contour. - pl.reverse(); - pl.points.emplace_back(pl.points.front()); - pl.clip_end(clip_length); - if (pl.size() < 2) - continue; - // Find the foot of the seam point on anchor_candidates. Only pick an anchor point that was created by offsetting the source contour. - ClipperLib_Z::Path *closest_contour = nullptr; - Vec2d closest_point; - int closest_point_idx = -1; - double closest_point_t = 0.; - double d2min = std::numeric_limits::max(); - Vec2d seam_pt = pl.back().cast(); - for (ClipperLib_Z::Path &path : anchor_candidates) - for (int i = 0; i < int(path.size()); ++ i) { - int j = next_idx_modulo(i, path); - if (path[i].z() == idx_loop || path[j].z() == idx_loop) { - Vec2d pi(path[i].x(), path[i].y()); - Vec2d pj(path[j].x(), path[j].y()); - Vec2d v = pj - pi; - Vec2d w = seam_pt - pi; - auto l2 = v.squaredNorm(); - auto t = std::clamp((l2 == 0) ? 0 : v.dot(w) / l2, 0., 1.); - if ((path[i].z() == idx_loop || t > EPSILON) && (path[j].z() == idx_loop || t < 1. - EPSILON)) { - // Closest point. - Vec2d fp = pi + v * t; - double d2 = (fp - seam_pt).squaredNorm(); - if (d2 < d2min) { - d2min = d2; - closest_contour = &path; - closest_point = fp; - closest_point_idx = i; - closest_point_t = t; + // Draw the perimeters. + Polylines polylines; + polylines.reserve(expoly.holes.size() + 1); + for (int idx_loop = 0; idx_loop < int(expoly.num_contours()); ++idx_loop) { + // Open the loop with a seam. + const Polygon &loop = expoly.contour_or_hole(idx_loop); + Polyline pl(loop.points); + // Orient all contours CW, because the anchor will be added to the end of polyline while we want to start a loop with the anchor. + if (idx_loop == 0) + // It is an outer contour. + pl.reverse(); + pl.points.emplace_back(pl.points.front()); + pl.clip_end(clip_length); + if (pl.size() < 2) continue; + // Find the foot of the seam point on anchor_candidates. Only pick an anchor point that was created by offsetting the source contour. + ClipperLib_Z::Path *closest_contour = nullptr; + Vec2d closest_point; + int closest_point_idx = -1; + double closest_point_t = 0.; + double d2min = std::numeric_limits::max(); + Vec2d seam_pt = pl.back().cast(); + for (ClipperLib_Z::Path &path : anchor_candidates) + for (int i = 0; i < int(path.size()); ++i) { + int j = next_idx_modulo(i, path); + if (path[i].z() == idx_loop || path[j].z() == idx_loop) { + Vec2d pi(path[i].x(), path[i].y()); + Vec2d pj(path[j].x(), path[j].y()); + Vec2d v = pj - pi; + Vec2d w = seam_pt - pi; + auto l2 = v.squaredNorm(); + auto t = std::clamp((l2 == 0) ? 0 : v.dot(w) / l2, 0., 1.); + if ((path[i].z() == idx_loop || t > EPSILON) && (path[j].z() == idx_loop || t < 1. - EPSILON)) { + // Closest point. + Vec2d fp = pi + v * t; + double d2 = (fp - seam_pt).squaredNorm(); + if (d2 < d2min) { + d2min = d2; + closest_contour = &path; + closest_point = fp; + closest_point_idx = i; + closest_point_t = t; + } } } } - } - if (d2min < sqr(flow.scaled_width() * 3.)) { - // Try to cut an anchor from the closest_contour. - // Both closest_contour and pl are CW oriented. - pl.points.emplace_back(closest_point.cast()); - const ClipperLib_Z::Path &path = *closest_contour; - double remaining_length = anchor_length - (seam_pt - closest_point).norm(); - int i = closest_point_idx; - int j = next_idx_modulo(i, *closest_contour); - Vec2d pi(path[i].x(), path[i].y()); - Vec2d pj(path[j].x(), path[j].y()); - Vec2d v = pj - pi; - double l = v.norm(); - if (remaining_length < (1. - closest_point_t) * l) { - // Just trim the current line. - pl.points.emplace_back((closest_point + v * (remaining_length / l)).cast()); - } else { - // Take the rest of the current line, continue with the other lines. - pl.points.emplace_back(path[j].x(), path[j].y()); - pi = pj; - for (i = j; path[i].z() == idx_loop && remaining_length > 0; i = j, pi = pj) { - j = next_idx_modulo(i, path); - pj = Vec2d(path[j].x(), path[j].y()); - v = pj - pi; - l = v.norm(); - if (i == closest_point_idx) { - // Back at the first segment. Most likely this should not happen and we may end the anchor. - break; - } - if (remaining_length <= l) { - pl.points.emplace_back((pi + v * (remaining_length / l)).cast()); - break; - } + if (d2min < sqr(flow.scaled_width() * 3.)) { + // Try to cut an anchor from the closest_contour. + // Both closest_contour and pl are CW oriented. + pl.points.emplace_back(closest_point.cast()); + const ClipperLib_Z::Path &path = *closest_contour; + double remaining_length = anchor_length - (seam_pt - closest_point).norm(); + int i = closest_point_idx; + int j = next_idx_modulo(i, *closest_contour); + Vec2d pi(path[i].x(), path[i].y()); + Vec2d pj(path[j].x(), path[j].y()); + Vec2d v = pj - pi; + double l = v.norm(); + if (remaining_length < (1. - closest_point_t) * l) { + // Just trim the current line. + pl.points.emplace_back((closest_point + v * (remaining_length / l)).cast()); + } else { + // Take the rest of the current line, continue with the other lines. pl.points.emplace_back(path[j].x(), path[j].y()); - remaining_length -= l; + pi = pj; + for (i = j; path[i].z() == idx_loop && remaining_length > 0; i = j, pi = pj) { + j = next_idx_modulo(i, path); + pj = Vec2d(path[j].x(), path[j].y()); + v = pj - pi; + l = v.norm(); + if (i == closest_point_idx) { + // Back at the first segment. Most likely this should not happen and we may end the anchor. + break; + } + if (remaining_length <= l) { + pl.points.emplace_back((pi + v * (remaining_length / l)).cast()); + break; + } + pl.points.emplace_back(path[j].x(), path[j].y()); + remaining_length -= l; + } } } + // Start with the anchor. + pl.reverse(); + polylines.emplace_back(std::move(pl)); } - // Start with the anchor. - pl.reverse(); - polylines.emplace_back(std::move(pl)); - } - ExtrusionEntitiesPtr &out = eec ? eec->entities : dst; - extrusion_entities_append_paths(out, std::move(polylines), ExtrusionRole::erSupportMaterial, flow.mm3_per_mm(), flow.width(), flow.height(), - // Disable reversal of the path, always start with the anchor, always print CCW. - false); + ExtrusionEntitiesPtr &out = eec ? eec->entities : dst; + extrusion_entities_append_paths(out, std::move(polylines), ExtrusionRole::erSupportMaterial, flow.mm3_per_mm(), flow.width(), flow.height(), + // Disable reversal of the path, always start with the anchor, always print CCW. + false); + } if (eec) { std::reverse(eec->entities.begin(), eec->entities.end()); dst.emplace_back(eec.release()); @@ -762,20 +771,27 @@ static inline void tree_supports_generate_paths( } } -static inline void fill_expolygons_with_sheath_generate_paths( +void fill_expolygons_with_sheath_generate_paths( ExtrusionEntitiesPtr &dst, const Polygons &polygons, Fill *filler, float density, ExtrusionRole role, const Flow &flow, + const SupportParameters& support_params, bool with_sheath, bool no_sort) { if (polygons.empty()) return; - if (! with_sheath) { + if (with_sheath) { + if (density == 0) { + tree_supports_generate_paths(dst, polygons, flow, support_params); + return; + } + } + else { fill_expolygons_generate_paths(dst, closing_ex(polygons, float(SCALED_EPSILON)), filler, density, role, flow); return; } @@ -1510,7 +1526,7 @@ void generate_support_toolpaths( // Print the support base below the support columns, or the support base for the support columns plus the contacts. if (support_layer_id > 0) { - const Polygons &to_infill_polygons = (support_layer_id < slicing_params.base_raft_layers) ? + const Polygons &to_infill_polygons = (support_layer_id < slicing_params.base_raft_layers) ? raft_layer.polygons : //FIXME misusing contact_polygons for support columns. ((raft_layer.contact_polygons == nullptr) ? Polygons() : *raft_layer.contact_polygons); @@ -1531,7 +1547,7 @@ void generate_support_toolpaths( filler, float(support_params.support_density), // Extrusion parameters ExtrusionRole::erSupportMaterial, flow, - support_params.with_sheath, false); + support_params, support_params.with_sheath, false); } if (! tree_polygons.empty()) tree_supports_generate_paths(support_layer.support_fills.entities, tree_polygons, flow, support_params); @@ -1558,15 +1574,15 @@ void generate_support_toolpaths( filler->link_max_length = coord_t(scale_(filler->spacing * link_max_length_factor / density)); fill_expolygons_with_sheath_generate_paths( // Destination - support_layer.support_fills.entities, + support_layer.support_fills.entities, // Regions to fill tree_polygons.empty() ? raft_layer.polygons : diff(raft_layer.polygons, tree_polygons), // Filler and its parameters filler, density, // Extrusion parameters - (support_layer_id < slicing_params.base_raft_layers) ? ExtrusionRole::erSupportMaterial : ExtrusionRole::erSupportMaterialInterface, flow, + (support_layer_id < slicing_params.base_raft_layers) ? ExtrusionRole::erSupportMaterial : ExtrusionRole::erSupportMaterialInterface, flow, // sheath at first layer - support_layer_id == 0, support_layer_id == 0); + support_params, support_layer_id == 0, support_layer_id == 0); } }); @@ -1734,7 +1750,7 @@ void generate_support_toolpaths( // Filler and its parameters filler, float(density), // Extrusion parameters - ExtrusionRole::erSupportMaterialInterface, interface_flow); + interface_as_base ? ExtrusionRole::erSupportMaterial : ExtrusionRole::erSupportMaterialInterface, interface_flow); } }; const bool top_interfaces = config.support_interface_top_layers.value != 0; @@ -1808,7 +1824,7 @@ void generate_support_toolpaths( filler, density, // Extrusion parameters ExtrusionRole::erSupportMaterial, flow, - sheath, no_sort); + support_params, sheath, no_sort); } // Merge base_interface_layers to base_layers to avoid unneccessary retractions diff --git a/src/libslic3r/Support/SupportMaterial.cpp b/src/libslic3r/Support/SupportMaterial.cpp index 3050bd7f6e..85c461b02b 100644 --- a/src/libslic3r/Support/SupportMaterial.cpp +++ b/src/libslic3r/Support/SupportMaterial.cpp @@ -346,83 +346,12 @@ static std::string get_svg_filename(std::string layer_nr_or_z, std::string tag } PrintObjectSupportMaterial::PrintObjectSupportMaterial(const PrintObject *object, const SlicingParameters &slicing_params) : - m_object (object), m_print_config (&object->print()->config()), m_object_config (&object->config()), - m_slicing_params (slicing_params) + m_slicing_params (slicing_params), + m_support_params (*object), + m_object (object) { - m_support_params.first_layer_flow = support_material_1st_layer_flow(object, float(slicing_params.first_print_layer_height)); - m_support_params.support_material_flow = support_material_flow(object, float(slicing_params.layer_height)); - m_support_params.support_material_interface_flow = support_material_interface_flow(object, float(slicing_params.layer_height)); - m_support_params.support_layer_height_min = 0.01; - - // Calculate a minimum support layer height as a minimum over all extruders, but not smaller than 10um. - m_support_params.support_layer_height_min = 1000000.; - for (auto lh : m_print_config->min_layer_height.values) - m_support_params.support_layer_height_min = std::min(m_support_params.support_layer_height_min, std::max(0.01, lh)); - for (auto layer : m_object->layers()) - m_support_params.support_layer_height_min = std::min(m_support_params.support_layer_height_min, std::max(0.01, layer->height)); - - if (m_object_config->support_interface_top_layers.value == 0) { - // No interface layers allowed, print everything with the base support pattern. - m_support_params.support_material_interface_flow = m_support_params.support_material_flow; - } - - // Evaluate the XY gap between the object outer perimeters and the support structures. - // Evaluate the XY gap between the object outer perimeters and the support structures. - coordf_t external_perimeter_width = 0.; - coordf_t bridge_flow = 0; - for (size_t region_id = 0; region_id < object->num_printing_regions(); ++ region_id) { - const PrintRegion ®ion = object->printing_region(region_id); - external_perimeter_width = std::max(external_perimeter_width, coordf_t(region.flow(*object, frExternalPerimeter, slicing_params.layer_height).width())); - bridge_flow += region.config().bridge_flow; - } - m_support_params.gap_xy = m_object_config->support_object_xy_distance.value; - bridge_flow /= object->num_printing_regions(); - - m_support_params.support_material_bottom_interface_flow = m_slicing_params.soluble_interface || ! m_object_config->thick_bridges ? - m_support_params.support_material_interface_flow.with_flow_ratio(bridge_flow) : - Flow::bridging_flow(bridge_flow * m_support_params.support_material_interface_flow.nozzle_diameter(), m_support_params.support_material_interface_flow.nozzle_diameter()); - - m_support_params.can_merge_support_regions = m_object_config->support_filament.value == m_object_config->support_interface_filament.value; - if (!m_support_params.can_merge_support_regions && (m_object_config->support_filament.value == 0 || m_object_config->support_interface_filament.value == 0)) { - // One of the support extruders is of "don't care" type. - auto object_extruders = m_object->object_extruders(); - if (object_extruders.size() == 1 && - *object_extruders.begin() == std::max(m_object_config->support_filament.value, m_object_config->support_interface_filament.value)) - // Object is printed with the same extruder as the support. - m_support_params.can_merge_support_regions = true; - } - - - m_support_params.base_angle = Geometry::deg2rad(float(m_object_config->support_angle.value)); - m_support_params.interface_angle = Geometry::deg2rad(float(m_object_config->support_angle.value + 90.)); - m_support_params.interface_spacing = m_object_config->support_interface_spacing.value + m_support_params.support_material_interface_flow.spacing(); - m_support_params.interface_density = std::min(1., m_support_params.support_material_interface_flow.spacing() / m_support_params.interface_spacing); - m_support_params.support_spacing = m_object_config->support_base_pattern_spacing.value + m_support_params.support_material_flow.spacing(); - m_support_params.support_density = std::min(1., m_support_params.support_material_flow.spacing() / m_support_params.support_spacing); - if (m_object_config->support_interface_top_layers.value == 0) { - // No interface layers allowed, print everything with the base support pattern. - m_support_params.interface_spacing = m_support_params.support_spacing; - m_support_params.interface_density = m_support_params.support_density; - } - - SupportMaterialPattern support_pattern = m_object_config->support_base_pattern; - m_support_params.with_sheath = support_with_sheath; - m_support_params.base_fill_pattern = - support_pattern == smpHoneycomb ? ipHoneycomb : - m_support_params.support_density > 0.95 || m_support_params.with_sheath ? ipRectilinear : ipSupportBase; - m_support_params.interface_fill_pattern = (m_support_params.interface_density > 0.95 ? ipRectilinear : ipSupportBase); - if (m_object_config->support_interface_pattern == smipGrid) - m_support_params.contact_fill_pattern = ipGrid; - else if (m_object_config->support_interface_pattern == smipRectilinearInterlaced) - m_support_params.contact_fill_pattern = ipRectilinear; - else - m_support_params.contact_fill_pattern = - (m_object_config->support_interface_pattern == smipAuto && m_slicing_params.soluble_interface) || - m_object_config->support_interface_pattern == smipConcentric ? - ipConcentric : - (m_support_params.interface_density > 0.95 ? ipRectilinear : ipSupportBase); } // Using the std::deque as an allocator. @@ -563,14 +492,15 @@ void PrintObjectSupportMaterial::generate(PrintObject &object) // Propagate top / bottom contact layers to generate interface layers // and base interface layers (for soluble interface / non souble base only) - auto [interface_layers, base_interface_layers] = this->generate_interface_layers(bottom_contacts, top_contacts, intermediate_layers, layer_storage); + SupportGeneratorLayersPtr empty_layers; + auto [interface_layers, base_interface_layers] = generate_interface_layers(*m_object_config, m_support_params, bottom_contacts, top_contacts, empty_layers, empty_layers, intermediate_layers, layer_storage); BOOST_LOG_TRIVIAL(info) << "Support generator - Creating raft"; // If raft is to be generated, the 1st top_contact layer will contain the 1st object layer silhouette with holes filled. // There is also a 1st intermediate layer containing bases of support columns. // Inflate the bases of the support columns and create the raft base under the object. - SupportGeneratorLayersPtr raft_layers = this->generate_raft_base(object, top_contacts, interface_layers, base_interface_layers, intermediate_layers, layer_storage); + SupportGeneratorLayersPtr raft_layers = generate_raft_base(object, m_support_params, m_slicing_params, top_contacts, interface_layers, base_interface_layers, intermediate_layers, layer_storage); if (object.print()->canceled()) return; @@ -650,7 +580,7 @@ void PrintObjectSupportMaterial::generate(PrintObject &object) #endif /* SLIC3R_DEBUG */ // Generate the actual toolpaths and save them into each layer. - this->generate_toolpaths(object.support_layers(), raft_layers, bottom_contacts, top_contacts, intermediate_layers, interface_layers, base_interface_layers); + generate_support_toolpaths(object.support_layers(), *m_object_config, m_support_params, m_slicing_params, raft_layers, bottom_contacts, top_contacts, intermediate_layers, interface_layers, base_interface_layers); #ifdef SLIC3R_DEBUG { @@ -2396,7 +2326,7 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::top_contact_layers( // Find the bottom contact layers above the top surfaces of this layer. static inline SupportGeneratorLayer* detect_bottom_contacts( const SlicingParameters &slicing_params, - const PrintObjectSupportMaterial::SupportParams &support_params, + const SupportParameters &support_params, const PrintObject &object, const Layer &layer, // Existing top contact layers, to which this newly created bottom contact layer will be snapped to guarantee a minimum layer height. @@ -3249,1482 +3179,6 @@ void PrintObjectSupportMaterial::trim_support_layers_by_object( BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::trim_support_layers_by_object() in parallel - end"; } -SupportGeneratorLayersPtr PrintObjectSupportMaterial::generate_raft_base( - const PrintObject &object, - const SupportGeneratorLayersPtr &top_contacts, - const SupportGeneratorLayersPtr &interface_layers, - const SupportGeneratorLayersPtr &base_interface_layers, - const SupportGeneratorLayersPtr &base_layers, - SupportGeneratorLayerStorage &layer_storage) const -{ - // If there is brim to be generated, calculate the trimming regions. - Polygons brim; - if (object.has_brim()) { - // Calculate the area covered by the brim. - const BrimType brim_type = object.config().brim_type; - const bool brim_outer = brim_type == btOuterOnly || brim_type == btOuterAndInner; - const bool brim_inner = brim_type == btInnerOnly || brim_type == btOuterAndInner; - // BBS: the pattern of raft and brim are the same, thus the brim can be serpated by support raft. - const auto brim_object_gap = scaled(object.config().brim_object_gap.value); - //const auto brim_object_gap = scaled(object.config().brim_object_gap.value + object.config().brim_width.value); - for (const ExPolygon &ex : object.layers().front()->lslices) { - if (brim_outer && brim_inner) - polygons_append(brim, offset(ex, brim_object_gap)); - else { - if (brim_outer) - polygons_append(brim, offset(ex.contour, brim_object_gap, ClipperLib::jtRound, float(scale_(0.1)))); - else - brim.emplace_back(ex.contour); - if (brim_inner) { - Polygons holes = ex.holes; - polygons_reverse(holes); - holes = shrink(holes, brim_object_gap, ClipperLib::jtRound, float(scale_(0.1))); - polygons_reverse(holes); - polygons_append(brim, std::move(holes)); - } else - polygons_append(brim, ex.holes); - } - } - brim = union_(brim); - } - - // How much to inflate the support columns to be stable. This also applies to the 1st layer, if no raft layers are to be printed. - const float inflate_factor_fine = float(scale_((m_slicing_params.raft_layers() > 1) ? 0.5 : EPSILON)); - const float inflate_factor_1st_layer = std::max(0.f, float(scale_(object.config().raft_first_layer_expansion)) - inflate_factor_fine); - SupportGeneratorLayer *contacts = top_contacts .empty() ? nullptr : top_contacts .front(); - SupportGeneratorLayer *interfaces = interface_layers .empty() ? nullptr : interface_layers .front(); - SupportGeneratorLayer *base_interfaces = base_interface_layers.empty() ? nullptr : base_interface_layers.front(); - SupportGeneratorLayer *columns_base = base_layers .empty() ? nullptr : base_layers .front(); - if (contacts != nullptr && contacts->print_z > std::max(m_slicing_params.first_print_layer_height, m_slicing_params.raft_contact_top_z) + EPSILON) - // This is not the raft contact layer. - contacts = nullptr; - if (interfaces != nullptr && interfaces->bottom_print_z() > m_slicing_params.raft_interface_top_z + EPSILON) - // This is not the raft column base layer. - interfaces = nullptr; - if (base_interfaces != nullptr && base_interfaces->bottom_print_z() > m_slicing_params.raft_interface_top_z + EPSILON) - // This is not the raft column base layer. - base_interfaces = nullptr; - if (columns_base != nullptr && columns_base->bottom_print_z() > m_slicing_params.raft_interface_top_z + EPSILON) - // This is not the raft interface layer. - columns_base = nullptr; - - Polygons interface_polygons; - if (contacts != nullptr && ! contacts->polygons.empty()) - polygons_append(interface_polygons, expand(contacts->polygons, inflate_factor_fine, SUPPORT_SURFACES_OFFSET_PARAMETERS)); - if (interfaces != nullptr && ! interfaces->polygons.empty()) - polygons_append(interface_polygons, expand(interfaces->polygons, inflate_factor_fine, SUPPORT_SURFACES_OFFSET_PARAMETERS)); - if (base_interfaces != nullptr && ! base_interfaces->polygons.empty()) - polygons_append(interface_polygons, expand(base_interfaces->polygons, inflate_factor_fine, SUPPORT_SURFACES_OFFSET_PARAMETERS)); - - // Output vector. - SupportGeneratorLayersPtr raft_layers; - - if (m_slicing_params.raft_layers() > 1) { - Polygons base; - Polygons columns; - if (columns_base != nullptr) { - base = columns_base->polygons; - columns = base; - if (! interface_polygons.empty()) - // Trim the 1st layer columns with the inflated interface polygons. - columns = diff(columns, interface_polygons); - } - if (! interface_polygons.empty()) { - // Merge the untrimmed columns base with the expanded raft interface, to be used for the support base and interface. - base = union_(base, interface_polygons); - } - // Do not add the raft contact layer, only add the raft layers below the contact layer. - // Insert the 1st layer. - { - SupportGeneratorLayer &new_layer = layer_storage.allocate((m_slicing_params.base_raft_layers > 0) ? SupporLayerType::RaftBase : SupporLayerType::RaftInterface); - raft_layers.push_back(&new_layer); - new_layer.print_z = m_slicing_params.first_print_layer_height; - new_layer.height = m_slicing_params.first_print_layer_height; - new_layer.bottom_z = 0.; - new_layer.polygons = inflate_factor_1st_layer > 0 ? expand(base, inflate_factor_1st_layer) : base; - } - // Insert the base layers. - for (size_t i = 1; i < m_slicing_params.base_raft_layers; ++ i) { - coordf_t print_z = raft_layers.back()->print_z; - SupportGeneratorLayer &new_layer = layer_storage.allocate(SupporLayerType::RaftBase); - raft_layers.push_back(&new_layer); - new_layer.print_z = print_z + m_slicing_params.base_raft_layer_height; - new_layer.height = m_slicing_params.base_raft_layer_height; - new_layer.bottom_z = print_z; - new_layer.polygons = base; - } - // Insert the interface layers. - for (size_t i = 1; i < m_slicing_params.interface_raft_layers; ++ i) { - coordf_t print_z = raft_layers.back()->print_z; - SupportGeneratorLayer &new_layer = layer_storage.allocate(SupporLayerType::RaftInterface); - raft_layers.push_back(&new_layer); - new_layer.print_z = print_z + m_slicing_params.interface_raft_layer_height; - new_layer.height = m_slicing_params.interface_raft_layer_height; - new_layer.bottom_z = print_z; - new_layer.polygons = interface_polygons; - //FIXME misusing contact_polygons for support columns. - new_layer.contact_polygons = std::make_unique(columns); - } - } else { - if (columns_base != nullptr) { - // Expand the bases of the support columns in the 1st layer. - Polygons &raft = columns_base->polygons; - Polygons trimming; - // BBS: if first layer of support is intersected with object island, it must have the same function as brim unless in nobrim mode. - if (object.has_brim()) - trimming = offset(m_object->layers().front()->lslices, (float)scale_(object.config().brim_object_gap.value), SUPPORT_SURFACES_OFFSET_PARAMETERS); - else - trimming = offset(m_object->layers().front()->lslices, (float)scale_(m_support_params.gap_xy), SUPPORT_SURFACES_OFFSET_PARAMETERS); - if (inflate_factor_1st_layer > SCALED_EPSILON) { - // Inflate in multiple steps to avoid leaking of the support 1st layer through object walls. - auto nsteps = std::max(5, int(ceil(inflate_factor_1st_layer / m_support_params.first_layer_flow.scaled_width()))); - float step = inflate_factor_1st_layer / nsteps; - for (int i = 0; i < nsteps; ++ i) - raft = diff(expand(raft, step), trimming); - } else - raft = diff(raft, trimming); - if (! interface_polygons.empty()) - columns_base->polygons = diff(columns_base->polygons, interface_polygons); - } - if (! brim.empty()) { - if (columns_base) - columns_base->polygons = diff(columns_base->polygons, brim); - if (contacts) - contacts->polygons = diff(contacts->polygons, brim); - if (interfaces) - interfaces->polygons = diff(interfaces->polygons, brim); - if (base_interfaces) - base_interfaces->polygons = diff(base_interfaces->polygons, brim); - } - } - - return raft_layers; -} - -// Convert some of the intermediate layers into top/bottom interface layers as well as base interface layers. -std::pair PrintObjectSupportMaterial::generate_interface_layers( - const SupportGeneratorLayersPtr &bottom_contacts, - const SupportGeneratorLayersPtr &top_contacts, - SupportGeneratorLayersPtr &intermediate_layers, - SupportGeneratorLayerStorage &layer_storage) const -{ -// my $area_threshold = $self->interface_flow->scaled_spacing ** 2; - - std::pair base_and_interface_layers; - SupportGeneratorLayersPtr &interface_layers = base_and_interface_layers.first; - SupportGeneratorLayersPtr &base_interface_layers = base_and_interface_layers.second; - - // distinguish between interface and base interface layers - // Contact layer is considered an interface layer, therefore run the following block only if support_interface_top_layers > 1. - // Contact layer needs a base_interface layer, therefore run the following block if support_interface_top_layers > 0, has soluble support and extruders are different. - bool soluble_interface_non_soluble_base = - // Zero z-gap between the overhangs and the support interface. - m_slicing_params.soluble_interface && - // Interface extruder soluble. - m_object_config->support_interface_filament.value > 0 && m_print_config->filament_soluble.get_at(m_object_config->support_interface_filament.value - 1) && - // Base extruder: Either "print with active extruder" not soluble. - (m_object_config->support_filament.value == 0 || ! m_print_config->filament_soluble.get_at(m_object_config->support_filament.value - 1)); - bool snug_supports = m_object_config->support_style.value == smsSnug; - // BBS: if support interface and support base do not use the same filament, add a base layer to improve their adhesion - bool differnt_support_interface_filament = m_object_config->support_interface_filament.value != m_object_config->support_filament.value; - int num_base_interface_layers_top = differnt_support_interface_filament ? 1 : 0; - int num_base_interface_layers_bottom = differnt_support_interface_filament ? 1 : 0; - int num_interface_layers_top = m_object_config->support_interface_top_layers + num_base_interface_layers_top; - int num_interface_layers_bottom = m_object_config->support_interface_bottom_layers + num_base_interface_layers_bottom; - if (num_interface_layers_bottom < 0) - num_interface_layers_bottom = num_interface_layers_top; - - if (! intermediate_layers.empty() && (num_interface_layers_top > 1 || num_interface_layers_bottom > 1)) { - // For all intermediate layers, collect top contact surfaces, which are not further than support_interface_top_layers. - BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::generate_interface_layers() in parallel - start"; - // Since the intermediate layer index starts at zero the number of interface layer needs to be reduced by 1. - -- num_interface_layers_top; - -- num_interface_layers_bottom; - int num_interface_layers_only_top = num_interface_layers_top - num_base_interface_layers_top; - int num_interface_layers_only_bottom = num_interface_layers_bottom - num_base_interface_layers_bottom; - interface_layers.assign(intermediate_layers.size(), nullptr); - if (num_base_interface_layers_top || num_base_interface_layers_bottom) - base_interface_layers.assign(intermediate_layers.size(), nullptr); - auto smoothing_distance = m_support_params.support_material_interface_flow.scaled_spacing() * 1.5; - auto minimum_island_radius = m_support_params.support_material_interface_flow.scaled_spacing() / m_support_params.interface_density; - auto closing_distance = smoothing_distance; // scaled(m_object_config->support_closing_radius.value); - // Insert a new layer into base_interface_layers, if intersection with base exists. - auto insert_layer = [&layer_storage, snug_supports, closing_distance, smoothing_distance, minimum_island_radius]( - SupportGeneratorLayer &intermediate_layer, Polygons &bottom, Polygons &&top, const Polygons *subtract, SupporLayerType type) -> SupportGeneratorLayer* { - assert(! bottom.empty() || ! top.empty()); - // Merge top into bottom, unite them with a safety offset. - append(bottom, std::move(top)); - // Merge top / bottom interfaces. For snug supports, merge using closing distance and regularize (close concave corners). - bottom = intersection( - snug_supports ? - smooth_outward(closing(std::move(bottom), closing_distance + minimum_island_radius, closing_distance, SUPPORT_SURFACES_OFFSET_PARAMETERS), smoothing_distance) : - union_safety_offset(std::move(bottom)), - intermediate_layer.polygons); - if (! bottom.empty()) { - //FIXME Remove non-printable tiny islands, let them be printed using the base support. - //bottom = opening(std::move(bottom), minimum_island_radius); - if (! bottom.empty()) { - SupportGeneratorLayer &layer_new = layer_storage.allocate(type); - layer_new.polygons = std::move(bottom); - layer_new.print_z = intermediate_layer.print_z; - layer_new.bottom_z = intermediate_layer.bottom_z; - layer_new.height = intermediate_layer.height; - layer_new.bridging = intermediate_layer.bridging; - // Subtract the interface from the base regions. - intermediate_layer.polygons = diff(intermediate_layer.polygons, layer_new.polygons); - if (subtract) - // Trim the base interface layer with the interface layer. - layer_new.polygons = diff(std::move(layer_new.polygons), *subtract); - //FIXME filter layer_new.polygons islands by a minimum area? - // $interface_area = [ grep abs($_->area) >= $area_threshold, @$interface_area ]; - return &layer_new; - } - } - return nullptr; - }; - tbb::parallel_for(tbb::blocked_range(0, int(intermediate_layers.size())), - [&bottom_contacts, &top_contacts, &intermediate_layers, &insert_layer, - num_interface_layers_top, num_interface_layers_bottom, num_base_interface_layers_top, num_base_interface_layers_bottom, num_interface_layers_only_top, num_interface_layers_only_bottom, - snug_supports, &interface_layers, &base_interface_layers](const tbb::blocked_range& range) { - // Gather the top / bottom contact layers intersecting with num_interface_layers resp. num_interface_layers_only intermediate layers above / below - // this intermediate layer. - // Index of the first top contact layer intersecting the current intermediate layer. - auto idx_top_contact_first = -1; - // Index of the first bottom contact layer intersecting the current intermediate layer. - auto idx_bottom_contact_first = -1; - auto num_intermediate = int(intermediate_layers.size()); - for (int idx_intermediate_layer = range.begin(); idx_intermediate_layer < range.end(); ++ idx_intermediate_layer) { - SupportGeneratorLayer &intermediate_layer = *intermediate_layers[idx_intermediate_layer]; - Polygons polygons_top_contact_projected_interface; - Polygons polygons_top_contact_projected_base; - Polygons polygons_bottom_contact_projected_interface; - Polygons polygons_bottom_contact_projected_base; - if (num_interface_layers_top > 0) { - // Top Z coordinate of a slab, over which we are collecting the top / bottom contact surfaces - coordf_t top_z = intermediate_layers[std::min(num_intermediate - 1, idx_intermediate_layer + num_interface_layers_top - 1)]->print_z; - coordf_t top_inteface_z = std::numeric_limits::max(); - if (num_base_interface_layers_top > 0) - // Some top base interface layers will be generated. - top_inteface_z = num_interface_layers_only_top == 0 ? - // Only base interface layers to generate. - - std::numeric_limits::max() : - intermediate_layers[std::min(num_intermediate - 1, idx_intermediate_layer + num_interface_layers_only_top - 1)]->print_z; - // Move idx_top_contact_first up until above the current print_z. - idx_top_contact_first = idx_higher_or_equal(top_contacts, idx_top_contact_first, [&intermediate_layer](const SupportGeneratorLayer *layer){ return layer->print_z >= intermediate_layer.print_z; }); // - EPSILON - // Collect the top contact areas above this intermediate layer, below top_z. - for (int idx_top_contact = idx_top_contact_first; idx_top_contact < int(top_contacts.size()); ++ idx_top_contact) { - const SupportGeneratorLayer &top_contact_layer = *top_contacts[idx_top_contact]; - //FIXME maybe this adds one interface layer in excess? - if (top_contact_layer.bottom_z - EPSILON > top_z) - break; - polygons_append(top_contact_layer.bottom_z - EPSILON > top_inteface_z ? polygons_top_contact_projected_base : polygons_top_contact_projected_interface, - // For snug supports, project the overhang polygons covering the whole overhang, so that they will merge without a gap with support polygons of the other layers. - // For grid supports, merging of support regions will be performed by the projection into grid. - snug_supports ? *top_contact_layer.overhang_polygons : top_contact_layer.polygons); - } - } - if (num_interface_layers_bottom > 0) { - // Bottom Z coordinate of a slab, over which we are collecting the top / bottom contact surfaces - coordf_t bottom_z = intermediate_layers[std::max(0, idx_intermediate_layer - num_interface_layers_bottom + 1)]->bottom_z; - coordf_t bottom_interface_z = - std::numeric_limits::max(); - if (num_base_interface_layers_bottom > 0) - // Some bottom base interface layers will be generated. - bottom_interface_z = num_interface_layers_only_bottom == 0 ? - // Only base interface layers to generate. - std::numeric_limits::max() : - intermediate_layers[std::max(0, idx_intermediate_layer - num_interface_layers_only_bottom)]->bottom_z; - // Move idx_bottom_contact_first up until touching bottom_z. - idx_bottom_contact_first = idx_higher_or_equal(bottom_contacts, idx_bottom_contact_first, [bottom_z](const SupportGeneratorLayer *layer){ return layer->print_z >= bottom_z - EPSILON; }); - // Collect the top contact areas above this intermediate layer, below top_z. - for (int idx_bottom_contact = idx_bottom_contact_first; idx_bottom_contact < int(bottom_contacts.size()); ++ idx_bottom_contact) { - const SupportGeneratorLayer &bottom_contact_layer = *bottom_contacts[idx_bottom_contact]; - if (bottom_contact_layer.print_z - EPSILON > intermediate_layer.bottom_z) - break; - polygons_append(bottom_contact_layer.print_z - EPSILON > bottom_interface_z ? polygons_bottom_contact_projected_interface : polygons_bottom_contact_projected_base, bottom_contact_layer.polygons); - } - } - SupportGeneratorLayer *interface_layer = nullptr; - if (! polygons_bottom_contact_projected_interface.empty() || ! polygons_top_contact_projected_interface.empty()) { - interface_layer = insert_layer( - intermediate_layer, polygons_bottom_contact_projected_interface, std::move(polygons_top_contact_projected_interface), nullptr, - polygons_top_contact_projected_interface.empty() ? SupporLayerType::BottomInterface : SupporLayerType::TopInterface); - interface_layers[idx_intermediate_layer] = interface_layer; - } - if (! polygons_bottom_contact_projected_base.empty() || ! polygons_top_contact_projected_base.empty()) - base_interface_layers[idx_intermediate_layer] = insert_layer( - intermediate_layer, polygons_bottom_contact_projected_base, std::move(polygons_top_contact_projected_base), - interface_layer ? &interface_layer->polygons : nullptr, SupporLayerType::Base); - } - }); - - // Compress contact_out, remove the nullptr items. - remove_nulls(interface_layers); - remove_nulls(base_interface_layers); - BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::generate_interface_layers() in parallel - end"; - } - - return base_and_interface_layers; -} - -static inline void fill_expolygon_generate_paths( - ExtrusionEntitiesPtr &dst, - ExPolygon &&expolygon, - Fill *filler, - const FillParams &fill_params, - ExtrusionRole role, - const Flow &flow) -{ - Surface surface(stInternal, std::move(expolygon)); - Polylines polylines; - try { - polylines = filler->fill_surface(&surface, fill_params); - } catch (InfillFailedException &) { - } - extrusion_entities_append_paths( - dst, - std::move(polylines), - role, - flow.mm3_per_mm(), flow.width(), flow.height()); -} - -static inline void fill_expolygons_generate_paths( - ExtrusionEntitiesPtr &dst, - ExPolygons &&expolygons, - Fill *filler, - const FillParams &fill_params, - ExtrusionRole role, - const Flow &flow) -{ - for (ExPolygon &expoly : expolygons) - fill_expolygon_generate_paths(dst, std::move(expoly), filler, fill_params, role, flow); -} - -static inline void fill_expolygons_generate_paths( - ExtrusionEntitiesPtr &dst, - ExPolygons &&expolygons, - Fill *filler, - float density, - ExtrusionRole role, - const Flow &flow) -{ - FillParams fill_params; - fill_params.density = density; - fill_params.dont_adjust = true; - fill_expolygons_generate_paths(dst, std::move(expolygons), filler, fill_params, role, flow); -} - -static inline void fill_expolygons_with_sheath_generate_paths( - ExtrusionEntitiesPtr &dst, - const Polygons &polygons, - Fill *filler, - float density, - ExtrusionRole role, - const Flow &flow, - bool with_sheath, - bool no_sort) -{ - if (polygons.empty()) - return; - - if (! with_sheath) { - fill_expolygons_generate_paths(dst, closing_ex(polygons, float(SCALED_EPSILON)), filler, density, role, flow); - return; - } - - FillParams fill_params; - fill_params.density = density; - fill_params.dont_adjust = true; - - double spacing = flow.scaled_spacing(); - // Clip the sheath path to avoid the extruder to get exactly on the first point of the loop. - double clip_length = spacing * 0.15; - - for (ExPolygon &expoly : closing_ex(polygons, float(SCALED_EPSILON), float(SCALED_EPSILON + 0.5*flow.scaled_width()))) { - // Don't reorder the skirt and its infills. - std::unique_ptr eec; - if (no_sort) { - eec = std::make_unique(); - eec->no_sort = true; - } - ExtrusionEntitiesPtr &out = no_sort ? eec->entities : dst; - // Draw the perimeters. - Polylines polylines; - polylines.reserve(expoly.holes.size() + 1); - for (size_t i = 0; i <= expoly.holes.size(); ++ i) { - Polyline pl(i == 0 ? expoly.contour.points : expoly.holes[i - 1].points); - pl.points.emplace_back(pl.points.front()); - pl.clip_end(clip_length); - polylines.emplace_back(std::move(pl)); - } - extrusion_entities_append_paths(out, polylines, erSupportMaterial, flow.mm3_per_mm(), flow.width(), flow.height()); - // Fill in the rest. - fill_expolygons_generate_paths(out, offset_ex(expoly, float(-0.4 * spacing)), filler, fill_params, role, flow); - if (no_sort && ! eec->empty()) - dst.emplace_back(eec.release()); - } -} - -// Support layers, partially processed. -struct MyLayerExtruded -{ - MyLayerExtruded& operator=(MyLayerExtruded &&rhs) { - this->layer = rhs.layer; - this->extrusions = std::move(rhs.extrusions); - m_polygons_to_extrude = std::move(rhs.m_polygons_to_extrude); - rhs.layer = nullptr; - return *this; - } - - bool empty() const { - return layer == nullptr || layer->polygons.empty(); - } - - void set_polygons_to_extrude(Polygons &&polygons) { - if (m_polygons_to_extrude == nullptr) - m_polygons_to_extrude = std::make_unique(std::move(polygons)); - else - *m_polygons_to_extrude = std::move(polygons); - } - Polygons& polygons_to_extrude() { return (m_polygons_to_extrude == nullptr) ? layer->polygons : *m_polygons_to_extrude; } - const Polygons& polygons_to_extrude() const { return (m_polygons_to_extrude == nullptr) ? layer->polygons : *m_polygons_to_extrude; } - - bool could_merge(const MyLayerExtruded &other) const { - return ! this->empty() && ! other.empty() && - std::abs(this->layer->height - other.layer->height) < EPSILON && - this->layer->bridging == other.layer->bridging; - } - - // Merge regions, perform boolean union over the merged polygons. - void merge(MyLayerExtruded &&other) { - assert(this->could_merge(other)); - // 1) Merge the rest polygons to extrude, if there are any. - if (other.m_polygons_to_extrude != nullptr) { - if (m_polygons_to_extrude == nullptr) { - // This layer has no extrusions generated yet, if it has no m_polygons_to_extrude (its area to extrude was not reduced yet). - assert(this->extrusions.empty()); - m_polygons_to_extrude = std::make_unique(this->layer->polygons); - } - Slic3r::polygons_append(*m_polygons_to_extrude, std::move(*other.m_polygons_to_extrude)); - *m_polygons_to_extrude = union_safety_offset(*m_polygons_to_extrude); - other.m_polygons_to_extrude.reset(); - } else if (m_polygons_to_extrude != nullptr) { - assert(other.m_polygons_to_extrude == nullptr); - // The other layer has no extrusions generated yet, if it has no m_polygons_to_extrude (its area to extrude was not reduced yet). - assert(other.extrusions.empty()); - Slic3r::polygons_append(*m_polygons_to_extrude, other.layer->polygons); - *m_polygons_to_extrude = union_safety_offset(*m_polygons_to_extrude); - } - // 2) Merge the extrusions. - this->extrusions.insert(this->extrusions.end(), other.extrusions.begin(), other.extrusions.end()); - other.extrusions.clear(); - // 3) Merge the infill polygons. - Slic3r::polygons_append(this->layer->polygons, std::move(other.layer->polygons)); - this->layer->polygons = union_safety_offset(this->layer->polygons); - other.layer->polygons.clear(); - } - - void polygons_append(Polygons &dst) const { - if (layer != NULL && ! layer->polygons.empty()) - Slic3r::polygons_append(dst, layer->polygons); - } - - // The source layer. It carries the height and extrusion type (bridging / non bridging, extrusion height). - SupportGeneratorLayer *layer { nullptr }; - // Collect extrusions. They will be exported sorted by the bottom height. - ExtrusionEntitiesPtr extrusions; - -private: - // In case the extrusions are non-empty, m_polygons_to_extrude may contain the rest areas yet to be filled by additional support. - // This is useful mainly for the loop interfaces, which are generated before the zig-zag infills. - std::unique_ptr m_polygons_to_extrude; -}; - -typedef std::vector MyLayerExtrudedPtrs; - -struct LoopInterfaceProcessor -{ - LoopInterfaceProcessor(coordf_t circle_r) : - n_contact_loops(0), - circle_radius(circle_r), - circle_distance(circle_r * 3.) - { - // Shape of the top contact area. - circle.points.reserve(6); - for (size_t i = 0; i < 6; ++ i) { - double angle = double(i) * M_PI / 3.; - circle.points.push_back(Point(circle_radius * cos(angle), circle_radius * sin(angle))); - } - } - - // Generate loop contacts at the top_contact_layer, - // trim the top_contact_layer->polygons with the areas covered by the loops. - void generate(MyLayerExtruded &top_contact_layer, const Flow &interface_flow_src) const; - - int n_contact_loops; - coordf_t circle_radius; - coordf_t circle_distance; - Polygon circle; -}; - -void LoopInterfaceProcessor::generate(MyLayerExtruded &top_contact_layer, const Flow &interface_flow_src) const -{ - if (n_contact_loops == 0 || top_contact_layer.empty()) - return; - - Flow flow = interface_flow_src.with_height(top_contact_layer.layer->height); - - Polygons overhang_polygons; - if (top_contact_layer.layer->overhang_polygons != nullptr) - overhang_polygons = std::move(*top_contact_layer.layer->overhang_polygons); - - // Generate the outermost loop. - // Find centerline of the external loop (or any other kind of extrusions should the loop be skipped) - ExPolygons top_contact_expolygons = offset_ex(union_ex(top_contact_layer.layer->polygons), - 0.5f * flow.scaled_width()); - - // Grid size and bit shifts for quick and exact to/from grid coordinates manipulation. - coord_t circle_grid_resolution = 1; - coord_t circle_grid_powerof2 = 0; - { - // epsilon to account for rounding errors - coord_t circle_grid_resolution_non_powerof2 = coord_t(2. * circle_distance + 3.); - while (circle_grid_resolution < circle_grid_resolution_non_powerof2) { - circle_grid_resolution <<= 1; - ++ circle_grid_powerof2; - } - } - - struct PointAccessor { - const Point* operator()(const Point &pt) const { return &pt; } - }; - typedef ClosestPointInRadiusLookup ClosestPointLookupType; - - Polygons loops0; - { - // find centerline of the external loop of the contours - // Only consider the loops facing the overhang. - Polygons external_loops; - // Holes in the external loops. - Polygons circles; - Polygons overhang_with_margin = offset(union_ex(overhang_polygons), 0.5f * flow.scaled_width()); - for (ExPolygons::iterator it_contact_expoly = top_contact_expolygons.begin(); it_contact_expoly != top_contact_expolygons.end(); ++ it_contact_expoly) { - // Store the circle centers placed for an expolygon into a regular grid, hashed by the circle centers. - ClosestPointLookupType circle_centers_lookup(coord_t(circle_distance - SCALED_EPSILON)); - Points circle_centers; - Point center_last; - // For each contour of the expolygon, start with the outer contour, continue with the holes. - for (size_t i_contour = 0; i_contour <= it_contact_expoly->holes.size(); ++ i_contour) { - Polygon &contour = (i_contour == 0) ? it_contact_expoly->contour : it_contact_expoly->holes[i_contour - 1]; - const Point *seg_current_pt = nullptr; - coordf_t seg_current_t = 0.; - if (! intersection_pl(contour.split_at_first_point(), overhang_with_margin).empty()) { - // The contour is below the overhang at least to some extent. - //FIXME ideally one would place the circles below the overhang only. - // Walk around the contour and place circles so their centers are not closer than circle_distance from each other. - if (circle_centers.empty()) { - // Place the first circle. - seg_current_pt = &contour.points.front(); - seg_current_t = 0.; - center_last = *seg_current_pt; - circle_centers_lookup.insert(center_last); - circle_centers.push_back(center_last); - } - for (Points::const_iterator it = contour.points.begin() + 1; it != contour.points.end(); ++it) { - // Is it possible to place a circle on this segment? Is it not too close to any of the circles already placed on this contour? - const Point &p1 = *(it-1); - const Point &p2 = *it; - // Intersection of a ray (p1, p2) with a circle placed at center_last, with radius of circle_distance. - const Vec2d v_seg(coordf_t(p2(0)) - coordf_t(p1(0)), coordf_t(p2(1)) - coordf_t(p1(1))); - const Vec2d v_cntr(coordf_t(p1(0) - center_last(0)), coordf_t(p1(1) - center_last(1))); - coordf_t a = v_seg.squaredNorm(); - coordf_t b = 2. * v_seg.dot(v_cntr); - coordf_t c = v_cntr.squaredNorm() - circle_distance * circle_distance; - coordf_t disc = b * b - 4. * a * c; - if (disc > 0.) { - // The circle intersects a ray. Avoid the parts of the segment inside the circle. - coordf_t t1 = (-b - sqrt(disc)) / (2. * a); - coordf_t t2 = (-b + sqrt(disc)) / (2. * a); - coordf_t t0 = (seg_current_pt == &p1) ? seg_current_t : 0.; - // Take the lowest t in , excluding . - coordf_t t; - if (t0 <= t1) - t = t0; - else if (t2 <= 1.) - t = t2; - else { - // Try the following segment. - seg_current_pt = nullptr; - continue; - } - seg_current_pt = &p1; - seg_current_t = t; - center_last = Point(p1(0) + coord_t(v_seg(0) * t), p1(1) + coord_t(v_seg(1) * t)); - // It has been verified that the new point is far enough from center_last. - // Ensure, that it is far enough from all the centers. - std::pair circle_closest = circle_centers_lookup.find(center_last); - if (circle_closest.first != nullptr) { - -- it; - continue; - } - } else { - // All of the segment is outside the circle. Take the first point. - seg_current_pt = &p1; - seg_current_t = 0.; - center_last = p1; - } - // Place the first circle. - circle_centers_lookup.insert(center_last); - circle_centers.push_back(center_last); - } - external_loops.push_back(std::move(contour)); - for (const Point ¢er : circle_centers) { - circles.push_back(circle); - circles.back().translate(center); - } - } - } - } - // Apply a pattern to the external loops. - loops0 = diff(external_loops, circles); - } - - Polylines loop_lines; - { - // make more loops - Polygons loop_polygons = loops0; - for (int i = 1; i < n_contact_loops; ++ i) - polygons_append(loop_polygons, - opening( - loops0, - i * flow.scaled_spacing() + 0.5f * flow.scaled_spacing(), - 0.5f * flow.scaled_spacing())); - // Clip such loops to the side oriented towards the object. - // Collect split points, so they will be recognized after the clipping. - // At the split points the clipped pieces will be stitched back together. - loop_lines.reserve(loop_polygons.size()); - std::unordered_map map_split_points; - for (Polygons::const_iterator it = loop_polygons.begin(); it != loop_polygons.end(); ++ it) { - assert(map_split_points.find(it->first_point()) == map_split_points.end()); - map_split_points[it->first_point()] = -1; - loop_lines.push_back(it->split_at_first_point()); - } - loop_lines = intersection_pl(loop_lines, expand(overhang_polygons, scale_(SUPPORT_MATERIAL_MARGIN))); - // Because a closed loop has been split to a line, loop_lines may contain continuous segments split to 2 pieces. - // Try to connect them. - for (int i_line = 0; i_line < int(loop_lines.size()); ++ i_line) { - Polyline &polyline = loop_lines[i_line]; - auto it = map_split_points.find(polyline.first_point()); - if (it != map_split_points.end()) { - // This is a stitching point. - // If this assert triggers, multiple source polygons likely intersected at this point. - assert(it->second != -2); - if (it->second < 0) { - // First occurence. - it->second = i_line; - } else { - // Second occurence. Join the lines. - Polyline &polyline_1st = loop_lines[it->second]; - assert(polyline_1st.first_point() == it->first || polyline_1st.last_point() == it->first); - if (polyline_1st.first_point() == it->first) - polyline_1st.reverse(); - polyline_1st.append(std::move(polyline)); - it->second = -2; - } - continue; - } - it = map_split_points.find(polyline.last_point()); - if (it != map_split_points.end()) { - // This is a stitching point. - // If this assert triggers, multiple source polygons likely intersected at this point. - assert(it->second != -2); - if (it->second < 0) { - // First occurence. - it->second = i_line; - } else { - // Second occurence. Join the lines. - Polyline &polyline_1st = loop_lines[it->second]; - assert(polyline_1st.first_point() == it->first || polyline_1st.last_point() == it->first); - if (polyline_1st.first_point() == it->first) - polyline_1st.reverse(); - polyline.reverse(); - polyline_1st.append(std::move(polyline)); - it->second = -2; - } - } - } - // Remove empty lines. - remove_degenerate(loop_lines); - } - - // add the contact infill area to the interface area - // note that growing loops by $circle_radius ensures no tiny - // extrusions are left inside the circles; however it creates - // a very large gap between loops and contact_infill_polygons, so maybe another - // solution should be found to achieve both goals - // Store the trimmed polygons into a separate polygon set, so the original infill area remains intact for - // "modulate by layer thickness". - top_contact_layer.set_polygons_to_extrude(diff(top_contact_layer.layer->polygons, offset(loop_lines, float(circle_radius * 1.1)))); - - // Transform loops into ExtrusionPath objects. - extrusion_entities_append_paths( - top_contact_layer.extrusions, - std::move(loop_lines), - erSupportMaterialInterface, flow.mm3_per_mm(), flow.width(), flow.height()); -} - -#ifdef SLIC3R_DEBUG -static std::string dbg_index_to_color(int idx) -{ - if (idx < 0) - return "yellow"; - idx = idx % 3; - switch (idx) { - case 0: return "red"; - case 1: return "green"; - default: return "blue"; - } -} -#endif /* SLIC3R_DEBUG */ - -// When extruding a bottom interface layer over an object, the bottom interface layer is extruded in a thin air, therefore -// it is being extruded with a bridging flow to not shrink excessively (the die swell effect). -// Tiny extrusions are better avoided and it is always better to anchor the thread to an existing support structure if possible. -// Therefore the bottom interface spots are expanded a bit. The expanded regions may overlap with another bottom interface layers, -// leading to over extrusion, where they overlap. The over extrusion is better avoided as it often makes the interface layers -// to stick too firmly to the object. -// -// Modulate thickness (increase bottom_z) of extrusions_in_out generated for this_layer -// if they overlap with overlapping_layers, whose print_z is above this_layer.bottom_z() and below this_layer.print_z. -void modulate_extrusion_by_overlapping_layers( - // Extrusions generated for this_layer. - ExtrusionEntitiesPtr &extrusions_in_out, - const SupportGeneratorLayer &this_layer, - // Multiple layers overlapping with this_layer, sorted bottom up. - const SupportGeneratorLayersPtr &overlapping_layers) -{ - size_t n_overlapping_layers = overlapping_layers.size(); - if (n_overlapping_layers == 0 || extrusions_in_out.empty()) - // The extrusions do not overlap with any other extrusion. - return; - - // Get the initial extrusion parameters. - ExtrusionPath *extrusion_path_template = dynamic_cast(extrusions_in_out.front()); - assert(extrusion_path_template != nullptr); - ExtrusionRole extrusion_role = extrusion_path_template->role(); - float extrusion_width = extrusion_path_template->width; - - struct ExtrusionPathFragment - { - ExtrusionPathFragment() : mm3_per_mm(-1), width(-1), height(-1) {}; - ExtrusionPathFragment(double mm3_per_mm, float width, float height) : mm3_per_mm(mm3_per_mm), width(width), height(height) {}; - - Polylines polylines; - double mm3_per_mm; - float width; - float height; - }; - - // Split the extrusions by the overlapping layers, reduce their extrusion rate. - // The last path_fragment is from this_layer. - std::vector path_fragments( - n_overlapping_layers + 1, - ExtrusionPathFragment(extrusion_path_template->mm3_per_mm, extrusion_path_template->width, extrusion_path_template->height)); - // Don't use it, it will be released. - extrusion_path_template = nullptr; - -#ifdef SLIC3R_DEBUG - static int iRun = 0; - ++ iRun; - BoundingBox bbox; - for (size_t i_overlapping_layer = 0; i_overlapping_layer < n_overlapping_layers; ++ i_overlapping_layer) { - const SupportGeneratorLayer &overlapping_layer = *overlapping_layers[i_overlapping_layer]; - bbox.merge(get_extents(overlapping_layer.polygons)); - } - for (ExtrusionEntitiesPtr::const_iterator it = extrusions_in_out.begin(); it != extrusions_in_out.end(); ++ it) { - ExtrusionPath *path = dynamic_cast(*it); - assert(path != nullptr); - bbox.merge(get_extents(path->polyline)); - } - SVG svg(debug_out_path("support-fragments-%d-%lf.svg", iRun, this_layer.print_z).c_str(), bbox); - const float transparency = 0.5f; - // Filled polygons for the overlapping regions. - svg.draw(union_ex(this_layer.polygons), dbg_index_to_color(-1), transparency); - for (size_t i_overlapping_layer = 0; i_overlapping_layer < n_overlapping_layers; ++ i_overlapping_layer) { - const SupportGeneratorLayer &overlapping_layer = *overlapping_layers[i_overlapping_layer]; - svg.draw(union_ex(overlapping_layer.polygons), dbg_index_to_color(int(i_overlapping_layer)), transparency); - } - // Contours of the overlapping regions. - svg.draw(to_polylines(this_layer.polygons), dbg_index_to_color(-1), scale_(0.2)); - for (size_t i_overlapping_layer = 0; i_overlapping_layer < n_overlapping_layers; ++ i_overlapping_layer) { - const SupportGeneratorLayer &overlapping_layer = *overlapping_layers[i_overlapping_layer]; - svg.draw(to_polylines(overlapping_layer.polygons), dbg_index_to_color(int(i_overlapping_layer)), scale_(0.1)); - } - // Fill extrusion, the source. - for (ExtrusionEntitiesPtr::const_iterator it = extrusions_in_out.begin(); it != extrusions_in_out.end(); ++ it) { - ExtrusionPath *path = dynamic_cast(*it); - std::string color_name; - switch ((it - extrusions_in_out.begin()) % 9) { - case 0: color_name = "magenta"; break; - case 1: color_name = "deepskyblue"; break; - case 2: color_name = "coral"; break; - case 3: color_name = "goldenrod"; break; - case 4: color_name = "orange"; break; - case 5: color_name = "olivedrab"; break; - case 6: color_name = "blueviolet"; break; - case 7: color_name = "brown"; break; - default: color_name = "orchid"; break; - } - svg.draw(path->polyline, color_name, scale_(0.2)); - } -#endif /* SLIC3R_DEBUG */ - - // End points of the original paths. - std::vector> path_ends; - // Collect the paths of this_layer. - { - Polylines &polylines = path_fragments.back().polylines; - for (ExtrusionEntity *ee : extrusions_in_out) { - ExtrusionPath *path = dynamic_cast(ee); - assert(path != nullptr); - polylines.emplace_back(Polyline(std::move(path->polyline))); - path_ends.emplace_back(std::pair(polylines.back().points.front(), polylines.back().points.back())); - } - } - // Destroy the original extrusion paths, their polylines were moved to path_fragments already. - // This will be the destination for the new paths. - extrusions_in_out.clear(); - - // Fragment the path segments by overlapping layers. The overlapping layers are sorted by an increasing print_z. - // Trim by the highest overlapping layer first. - for (int i_overlapping_layer = int(n_overlapping_layers) - 1; i_overlapping_layer >= 0; -- i_overlapping_layer) { - const SupportGeneratorLayer &overlapping_layer = *overlapping_layers[i_overlapping_layer]; - ExtrusionPathFragment &frag = path_fragments[i_overlapping_layer]; - Polygons polygons_trimming = offset(union_ex(overlapping_layer.polygons), float(scale_(0.5*extrusion_width))); - frag.polylines = intersection_pl(path_fragments.back().polylines, polygons_trimming); - path_fragments.back().polylines = diff_pl(path_fragments.back().polylines, polygons_trimming); - // Adjust the extrusion parameters for a reduced layer height and a non-bridging flow (nozzle_dmr = -1, does not matter). - assert(this_layer.print_z > overlapping_layer.print_z); - frag.height = float(this_layer.print_z - overlapping_layer.print_z); - frag.mm3_per_mm = Flow(frag.width, frag.height, -1.f).mm3_per_mm(); -#ifdef SLIC3R_DEBUG - svg.draw(frag.polylines, dbg_index_to_color(i_overlapping_layer), scale_(0.1)); -#endif /* SLIC3R_DEBUG */ - } - -#ifdef SLIC3R_DEBUG - svg.draw(path_fragments.back().polylines, dbg_index_to_color(-1), scale_(0.1)); - svg.Close(); -#endif /* SLIC3R_DEBUG */ - - // Now chain the split segments using hashing and a nearly exact match, maintaining the order of segments. - // Create a single ExtrusionPath or ExtrusionEntityCollection per source ExtrusionPath. - // Map of fragment start/end points to a pair of - // Because a non-exact matching is used for the end points, a multi-map is used. - // As the clipper library may reverse the order of some clipped paths, store both ends into the map. - struct ExtrusionPathFragmentEnd - { - ExtrusionPathFragmentEnd(size_t alayer_idx, size_t apolyline_idx, bool ais_start) : - layer_idx(alayer_idx), polyline_idx(apolyline_idx), is_start(ais_start) {} - size_t layer_idx; - size_t polyline_idx; - bool is_start; - }; - class ExtrusionPathFragmentEndPointAccessor { - public: - ExtrusionPathFragmentEndPointAccessor(const std::vector &path_fragments) : m_path_fragments(path_fragments) {} - // Return an end point of a fragment, or nullptr if the fragment has been consumed already. - const Point* operator()(const ExtrusionPathFragmentEnd &fragment_end) const { - const Polyline &polyline = m_path_fragments[fragment_end.layer_idx].polylines[fragment_end.polyline_idx]; - return polyline.points.empty() ? nullptr : - (fragment_end.is_start ? &polyline.points.front() : &polyline.points.back()); - } - private: - ExtrusionPathFragmentEndPointAccessor& operator=(const ExtrusionPathFragmentEndPointAccessor&) { - return *this; - } - - const std::vector &m_path_fragments; - }; - const coord_t search_radius = 7; - ClosestPointInRadiusLookup map_fragment_starts( - search_radius, ExtrusionPathFragmentEndPointAccessor(path_fragments)); - for (size_t i_overlapping_layer = 0; i_overlapping_layer <= n_overlapping_layers; ++ i_overlapping_layer) { - const Polylines &polylines = path_fragments[i_overlapping_layer].polylines; - for (size_t i_polyline = 0; i_polyline < polylines.size(); ++ i_polyline) { - // Map a starting point of a polyline to a pair of - if (polylines[i_polyline].points.size() >= 2) { - map_fragment_starts.insert(ExtrusionPathFragmentEnd(i_overlapping_layer, i_polyline, true)); - map_fragment_starts.insert(ExtrusionPathFragmentEnd(i_overlapping_layer, i_polyline, false)); - } - } - } - - // For each source path: - for (size_t i_path = 0; i_path < path_ends.size(); ++ i_path) { - const Point &pt_start = path_ends[i_path].first; - const Point &pt_end = path_ends[i_path].second; - Point pt_current = pt_start; - // Find a chain of fragments with the original / reduced print height. - ExtrusionMultiPath multipath; - for (;;) { - // Find a closest end point to pt_current. - std::pair end_and_dist2 = map_fragment_starts.find(pt_current); - // There may be a bug in Clipper flipping the order of two last points in a fragment? - // assert(end_and_dist2.first != nullptr); - assert(end_and_dist2.first == nullptr || end_and_dist2.second < search_radius * search_radius); - if (end_and_dist2.first == nullptr) { - // New fragment connecting to pt_current was not found. - // Verify that the last point found is close to the original end point of the unfragmented path. - //const double d2 = (pt_end - pt_current).cast.squaredNorm(); - //assert(d2 < coordf_t(search_radius * search_radius)); - // End of the path. - break; - } - const ExtrusionPathFragmentEnd &fragment_end_min = *end_and_dist2.first; - // Fragment to consume. - ExtrusionPathFragment &frag = path_fragments[fragment_end_min.layer_idx]; - Polyline &frag_polyline = frag.polylines[fragment_end_min.polyline_idx]; - // Path to append the fragment to. - ExtrusionPath *path = multipath.paths.empty() ? nullptr : &multipath.paths.back(); - if (path != nullptr) { - // Verify whether the path is compatible with the current fragment. - assert(this_layer.layer_type == SupporLayerType::BottomContact || path->height != frag.height || path->mm3_per_mm != frag.mm3_per_mm); - if (path->height != frag.height || path->mm3_per_mm != frag.mm3_per_mm) { - path = nullptr; - } - // Merging with the previous path. This can only happen if the current layer was reduced by a base layer, which was split into a base and interface layer. - } - if (path == nullptr) { - // Allocate a new path. - multipath.paths.push_back(ExtrusionPath(extrusion_role, frag.mm3_per_mm, frag.width, frag.height)); - path = &multipath.paths.back(); - } - // The Clipper library may flip the order of the clipped polylines arbitrarily. - // Reverse the source polyline, if connecting to the end. - if (! fragment_end_min.is_start) - frag_polyline.reverse(); - // Enforce exact overlap of the end points of successive fragments. - assert(frag_polyline.points.front() == pt_current); - frag_polyline.points.front() = pt_current; - // Don't repeat the first point. - if (! path->polyline.points.empty()) - path->polyline.points.pop_back(); - // Consume the fragment's polyline, remove it from the input fragments, so it will be ignored the next time. - path->polyline.append(std::move(frag_polyline)); - frag_polyline.points.clear(); - pt_current = path->polyline.points.back(); - if (pt_current == pt_end) { - // End of the path. - break; - } - } - if (!multipath.paths.empty()) { - if (multipath.paths.size() == 1) { - // This path was not fragmented. - extrusions_in_out.push_back(new ExtrusionPath(std::move(multipath.paths.front()))); - } else { - // This path was fragmented. Copy the collection as a whole object, so the order inside the collection will not be changed - // during the chaining of extrusions_in_out. - extrusions_in_out.push_back(new ExtrusionMultiPath(std::move(multipath))); - } - } - } - // If there are any non-consumed fragments, add them separately. - //FIXME this shall not happen, if the Clipper works as expected and all paths split to fragments could be re-connected. - for (auto it_fragment = path_fragments.begin(); it_fragment != path_fragments.end(); ++ it_fragment) - extrusion_entities_append_paths(extrusions_in_out, std::move(it_fragment->polylines), extrusion_role, it_fragment->mm3_per_mm, it_fragment->width, it_fragment->height); -} - -void PrintObjectSupportMaterial::generate_toolpaths( - SupportLayerPtrs &support_layers, - const SupportGeneratorLayersPtr &raft_layers, - const SupportGeneratorLayersPtr &bottom_contacts, - const SupportGeneratorLayersPtr &top_contacts, - const SupportGeneratorLayersPtr &intermediate_layers, - const SupportGeneratorLayersPtr &interface_layers, - const SupportGeneratorLayersPtr &base_interface_layers) const -{ - // loop_interface_processor with a given circle radius. - LoopInterfaceProcessor loop_interface_processor(1.5 * m_support_params.support_material_interface_flow.scaled_width()); - loop_interface_processor.n_contact_loops = this->has_contact_loops() ? 1 : 0; - - std::vector angles { m_support_params.base_angle }; - if (m_object_config->support_base_pattern == smpRectilinearGrid) - angles.push_back(m_support_params.interface_angle); - - BoundingBox bbox_object(Point(-scale_(1.), -scale_(1.0)), Point(scale_(1.), scale_(1.))); - -// const coordf_t link_max_length_factor = 3.; - const coordf_t link_max_length_factor = 0.; - - float raft_angle_1st_layer = 0.f; - float raft_angle_base = 0.f; - float raft_angle_interface = 0.f; - if (m_slicing_params.base_raft_layers > 1) { - // There are all raft layer types (1st layer, base, interface & contact layers) available. - raft_angle_1st_layer = m_support_params.interface_angle; - raft_angle_base = m_support_params.base_angle; - raft_angle_interface = m_support_params.interface_angle; - } else if (m_slicing_params.base_raft_layers == 1 || m_slicing_params.interface_raft_layers > 1) { - // 1st layer, interface & contact layers available. - raft_angle_1st_layer = m_support_params.base_angle; - if (this->has_support()) - // Print 1st layer at 45 degrees from both the interface and base angles as both can land on the 1st layer. - raft_angle_1st_layer += 0.7854f; - raft_angle_interface = m_support_params.interface_angle; - } else if (m_slicing_params.interface_raft_layers == 1) { - // Only the contact raft layer is non-empty, which will be printed as the 1st layer. - assert(m_slicing_params.base_raft_layers == 0); - assert(m_slicing_params.interface_raft_layers == 1); - assert(m_slicing_params.raft_layers() == 1 && raft_layers.size() == 0); - } else { - // No raft. - assert(m_slicing_params.base_raft_layers == 0); - assert(m_slicing_params.interface_raft_layers == 0); - assert(m_slicing_params.raft_layers() == 0 && raft_layers.size() == 0); - } - - // Insert the raft base layers. - size_t n_raft_layers = size_t(std::max(0, int(m_slicing_params.raft_layers()) - 1)); - tbb::parallel_for(tbb::blocked_range(0, n_raft_layers), - [this, &support_layers, &raft_layers, - &bbox_object, raft_angle_1st_layer, raft_angle_base, raft_angle_interface, link_max_length_factor] - (const tbb::blocked_range& range) { - for (size_t support_layer_id = range.begin(); support_layer_id < range.end(); ++ support_layer_id) - { - assert(support_layer_id < raft_layers.size()); - SupportLayer &support_layer = *support_layers[support_layer_id]; - assert(support_layer.support_fills.entities.empty()); - SupportGeneratorLayer &raft_layer = *raft_layers[support_layer_id]; - - std::unique_ptr filler_interface = std::unique_ptr(Fill::new_from_type(m_support_params.interface_fill_pattern)); - std::unique_ptr filler_support = std::unique_ptr(Fill::new_from_type(m_support_params.base_fill_pattern)); - filler_interface->set_bounding_box(bbox_object); - filler_support->set_bounding_box(bbox_object); - - // Print the support base below the support columns, or the support base for the support columns plus the contacts. - if (support_layer_id > 0) { - const Polygons &to_infill_polygons = (support_layer_id < m_slicing_params.base_raft_layers) ? - raft_layer.polygons : - //FIXME misusing contact_polygons for support columns. - ((raft_layer.contact_polygons == nullptr) ? Polygons() : *raft_layer.contact_polygons); - if (! to_infill_polygons.empty()) { - assert(! raft_layer.bridging); - Flow flow(float(m_support_params.support_material_flow.width()), float(raft_layer.height), m_support_params.support_material_flow.nozzle_diameter()); - Fill * filler = filler_support.get(); - filler->angle = raft_angle_base; - filler->spacing = m_support_params.support_material_flow.spacing(); - filler->link_max_length = coord_t(scale_(filler->spacing * link_max_length_factor / m_support_params.support_density)); - fill_expolygons_with_sheath_generate_paths( - // Destination - support_layer.support_fills.entities, - // Regions to fill - to_infill_polygons, - // Filler and its parameters - filler, float(m_support_params.support_density), - // Extrusion parameters - erSupportMaterial, flow, - m_support_params.with_sheath, false); - } - } - - Fill *filler = filler_interface.get(); - Flow flow = m_support_params.first_layer_flow; - float density = 0.f; - if (support_layer_id == 0) { - // Base flange. - filler->angle = raft_angle_1st_layer; - filler->spacing = m_support_params.first_layer_flow.spacing(); - density = float(m_object_config->raft_first_layer_density.value * 0.01); - } else if (support_layer_id >= m_slicing_params.base_raft_layers) { - filler->angle = raft_angle_interface; - // We don't use $base_flow->spacing because we need a constant spacing - // value that guarantees that all layers are correctly aligned. - filler->spacing = m_support_params.support_material_flow.spacing(); - assert(! raft_layer.bridging); - flow = Flow(float(m_support_params.support_material_interface_flow.width()), float(raft_layer.height), m_support_params.support_material_flow.nozzle_diameter()); - density = float(m_support_params.interface_density); - } else - continue; - filler->link_max_length = coord_t(scale_(filler->spacing * link_max_length_factor / density)); - fill_expolygons_with_sheath_generate_paths( - // Destination - support_layer.support_fills.entities, - // Regions to fill - raft_layer.polygons, - // Filler and its parameters - filler, density, - // Extrusion parameters - (support_layer_id < m_slicing_params.base_raft_layers) ? erSupportMaterial : erSupportMaterialInterface, flow, - // sheath at first layer - support_layer_id == 0, support_layer_id == 0); - } - }); - - struct LayerCacheItem { - LayerCacheItem(MyLayerExtruded *layer_extruded = nullptr) : layer_extruded(layer_extruded) {} - MyLayerExtruded *layer_extruded; - std::vector overlapping; - }; - struct LayerCache { - MyLayerExtruded bottom_contact_layer; - MyLayerExtruded top_contact_layer; - MyLayerExtruded base_layer; - MyLayerExtruded interface_layer; - MyLayerExtruded base_interface_layer; - boost::container::static_vector nonempty; - - void add_nonempty_and_sort() { - for (MyLayerExtruded *item : { &bottom_contact_layer, &top_contact_layer, &interface_layer, &base_interface_layer, &base_layer }) - if (! item->empty()) - this->nonempty.emplace_back(item); - // Sort the layers with the same print_z coordinate by their heights, thickest first. - std::stable_sort(this->nonempty.begin(), this->nonempty.end(), [](const LayerCacheItem &lc1, const LayerCacheItem &lc2) { return lc1.layer_extruded->layer->height > lc2.layer_extruded->layer->height; }); - } - }; - std::vector layer_caches(support_layers.size()); - - tbb::parallel_for(tbb::blocked_range(n_raft_layers, support_layers.size()), - [this, &support_layers, &bottom_contacts, &top_contacts, &intermediate_layers, &interface_layers, &base_interface_layers, &layer_caches, &loop_interface_processor, - &bbox_object, &angles, link_max_length_factor] - (const tbb::blocked_range& range) { - // Indices of the 1st layer in their respective container at the support layer height. - size_t idx_layer_bottom_contact = size_t(-1); - size_t idx_layer_top_contact = size_t(-1); - size_t idx_layer_intermediate = size_t(-1); - size_t idx_layer_interface = size_t(-1); - size_t idx_layer_base_interface = size_t(-1); - // BBS - const auto fill_type_first_layer = ipConcentric; - auto filler_interface = std::unique_ptr(Fill::new_from_type(m_support_params.contact_fill_pattern)); - // Filler for the 1st layer interface, if different from filler_interface. - auto filler_first_layer_ptr = std::unique_ptr(range.begin() == 0 && m_support_params.contact_fill_pattern != fill_type_first_layer ? Fill::new_from_type(fill_type_first_layer) : nullptr); - // Pointer to the 1st layer interface filler. - auto filler_first_layer = filler_first_layer_ptr ? filler_first_layer_ptr.get() : filler_interface.get(); - // Filler for the base interface (to be used for soluble interface / non soluble base, to produce non soluble interface layer below soluble interface layer). - auto filler_base_interface = std::unique_ptr(base_interface_layers.empty() ? nullptr : - Fill::new_from_type(m_support_params.interface_density > 0.95 || m_support_params.with_sheath ? ipRectilinear : ipSupportBase)); - auto filler_support = std::unique_ptr(Fill::new_from_type(m_support_params.base_fill_pattern)); - filler_interface->set_bounding_box(bbox_object); - if (filler_first_layer_ptr) - filler_first_layer_ptr->set_bounding_box(bbox_object); - if (filler_base_interface) - filler_base_interface->set_bounding_box(bbox_object); - filler_support->set_bounding_box(bbox_object); - for (size_t support_layer_id = range.begin(); support_layer_id < range.end(); ++ support_layer_id) - { - SupportLayer &support_layer = *support_layers[support_layer_id]; - LayerCache &layer_cache = layer_caches[support_layer_id]; - float interface_angle_delta = m_object_config->support_style.value == smsSnug ? - (support_layer.interface_id() & 1) ? float(- M_PI / 4.) : float(+ M_PI / 4.) : - 0; - - // Find polygons with the same print_z. - MyLayerExtruded &bottom_contact_layer = layer_cache.bottom_contact_layer; - MyLayerExtruded &top_contact_layer = layer_cache.top_contact_layer; - MyLayerExtruded &base_layer = layer_cache.base_layer; - MyLayerExtruded &interface_layer = layer_cache.interface_layer; - MyLayerExtruded &base_interface_layer = layer_cache.base_interface_layer; - // Increment the layer indices to find a layer at support_layer.print_z. - { - auto fun = [&support_layer](const SupportGeneratorLayer *l){ return l->print_z >= support_layer.print_z - EPSILON; }; - idx_layer_bottom_contact = idx_higher_or_equal(bottom_contacts, idx_layer_bottom_contact, fun); - idx_layer_top_contact = idx_higher_or_equal(top_contacts, idx_layer_top_contact, fun); - idx_layer_intermediate = idx_higher_or_equal(intermediate_layers, idx_layer_intermediate, fun); - idx_layer_interface = idx_higher_or_equal(interface_layers, idx_layer_interface, fun); - idx_layer_base_interface = idx_higher_or_equal(base_interface_layers, idx_layer_base_interface,fun); - } - // Copy polygons from the layers. - if (idx_layer_bottom_contact < bottom_contacts.size() && bottom_contacts[idx_layer_bottom_contact]->print_z < support_layer.print_z + EPSILON) - bottom_contact_layer.layer = bottom_contacts[idx_layer_bottom_contact]; - if (idx_layer_top_contact < top_contacts.size() && top_contacts[idx_layer_top_contact]->print_z < support_layer.print_z + EPSILON) - top_contact_layer.layer = top_contacts[idx_layer_top_contact]; - if (idx_layer_interface < interface_layers.size() && interface_layers[idx_layer_interface]->print_z < support_layer.print_z + EPSILON) - interface_layer.layer = interface_layers[idx_layer_interface]; - if (idx_layer_base_interface < base_interface_layers.size() && base_interface_layers[idx_layer_base_interface]->print_z < support_layer.print_z + EPSILON) - base_interface_layer.layer = base_interface_layers[idx_layer_base_interface]; - if (idx_layer_intermediate < intermediate_layers.size() && intermediate_layers[idx_layer_intermediate]->print_z < support_layer.print_z + EPSILON) - base_layer.layer = intermediate_layers[idx_layer_intermediate]; - - if (m_object_config->support_interface_top_layers == 0) { - // If no top interface layers were requested, we treat the contact layer exactly as a generic base layer. - if (m_support_params.can_merge_support_regions) { - if (base_layer.could_merge(top_contact_layer)) - base_layer.merge(std::move(top_contact_layer)); - else if (base_layer.empty()) - base_layer = std::move(top_contact_layer); - } - } else { - loop_interface_processor.generate(top_contact_layer, m_support_params.support_material_interface_flow); - // If no loops are allowed, we treat the contact layer exactly as a generic interface layer. - // Merge interface_layer into top_contact_layer, as the top_contact_layer is not synchronized and therefore it will be used - // to trim other layers. - if (top_contact_layer.could_merge(interface_layer)) - top_contact_layer.merge(std::move(interface_layer)); - } - if ((m_object_config->support_interface_top_layers == 0 || m_object_config->support_interface_bottom_layers == 0) && m_support_params.can_merge_support_regions) { - if (base_layer.could_merge(bottom_contact_layer)) - base_layer.merge(std::move(bottom_contact_layer)); - else if (base_layer.empty() && ! bottom_contact_layer.empty() && ! bottom_contact_layer.layer->bridging) - base_layer = std::move(bottom_contact_layer); - } else if (bottom_contact_layer.could_merge(top_contact_layer)) - top_contact_layer.merge(std::move(bottom_contact_layer)); - else if (bottom_contact_layer.could_merge(interface_layer)) - bottom_contact_layer.merge(std::move(interface_layer)); - -#if 0 - if ( ! interface_layer.empty() && ! base_layer.empty()) { - // turn base support into interface when it's contained in our holes - // (this way we get wider interface anchoring) - //FIXME The intention of the code below is unclear. One likely wanted to just merge small islands of base layers filling in the holes - // inside interface layers, but the code below fills just too much, see GH #4570 - Polygons islands = top_level_islands(interface_layer.layer->polygons); - polygons_append(interface_layer.layer->polygons, intersection(base_layer.layer->polygons, islands)); - base_layer.layer->polygons = diff(base_layer.layer->polygons, islands); - } -#endif - - // Calculate top interface angle - float angle_of_biggest_bridge = -1.f; - do - { - // Currently only works when thick_bridges is off - if (m_object->config().thick_bridges) - break; - - coordf_t object_layer_bottom_z = support_layer.print_z + m_slicing_params.gap_support_object; - const Layer* object_layer = m_object->get_layer_at_bottomz(object_layer_bottom_z, 10.0 * EPSILON); - if (object_layer == nullptr) - break; - - if (object_layer != nullptr) { - float biggest_bridge_area = 0.f; - const Polygons& top_contact_polys = top_contact_layer.polygons_to_extrude(); - for (auto layerm : object_layer->regions()) { - for (auto bridge_surface : layerm->fill_surfaces.filter_by_type(stBottomBridge)) { - float bs_area = bridge_surface->area(); - if (bs_area <= biggest_bridge_area || bridge_surface->bridge_angle < 0.f) - continue; - - angle_of_biggest_bridge = bridge_surface->bridge_angle; - biggest_bridge_area = bs_area; - } - } - } - } while (0); - - auto calc_included_angle_degree = [](int degree_a, int degree_b) { - int iad = std::abs(degree_b - degree_a); - return std::min(iad, 180 - iad); - }; - - // Top and bottom contacts, interface layers. - for (size_t i = 0; i < 3; ++ i) { - MyLayerExtruded &layer_ex = (i == 0) ? top_contact_layer : (i == 1 ? bottom_contact_layer : interface_layer); - if (layer_ex.empty() || layer_ex.polygons_to_extrude().empty()) - continue; - bool interface_as_base = m_object_config->support_interface_top_layers.value == 0 || - (m_object_config->support_interface_bottom_layers == 0 && &layer_ex == &bottom_contact_layer); - //FIXME Bottom interfaces are extruded with the briding flow. Some bridging layers have its height slightly reduced, therefore - // the bridging flow does not quite apply. Reduce the flow to area of an ellipse? (A = pi * a * b) - Flow interface_flow; - if (layer_ex.layer->bridging) - interface_flow = Flow::bridging_flow(layer_ex.layer->height, m_support_params.support_material_bottom_interface_flow.nozzle_diameter()); - else if (layer_ex.layer->bottom_z < EPSILON) { - interface_flow = m_support_params.first_layer_flow; - }else - interface_flow = (interface_as_base ? &m_support_params.support_material_flow : &m_support_params.support_material_interface_flow)->with_height(float(layer_ex.layer->height)); - filler_interface->angle = interface_as_base ? - // If zero interface layers are configured, use the same angle as for the base layers. - angles[support_layer_id % angles.size()] : - // Use interface angle for the interface layers. - m_support_params.interface_angle + interface_angle_delta; - - // BBS - bool can_adjust_top_interface_angle = (m_object_config->support_interface_top_layers.value > 1 && &layer_ex == &top_contact_layer); - if (can_adjust_top_interface_angle && angle_of_biggest_bridge >= 0.f) { - int bridge_degree = (int)Geometry::rad2deg(angle_of_biggest_bridge); - int support_intf_degree = (int)Geometry::rad2deg(filler_interface->angle); - int max_included_degree = 0; - int step = 90; - for (int add_on_degree = 0; add_on_degree < 180; add_on_degree += step) { - int degree_to_try = support_intf_degree + add_on_degree; - int included_degree = calc_included_angle_degree(bridge_degree, degree_to_try); - if (included_degree > max_included_degree) { - max_included_degree = included_degree; - filler_interface->angle = Geometry::deg2rad((float)degree_to_try); - } - } - } - double density = interface_as_base ? m_support_params.support_density : m_support_params.interface_density; - filler_interface->spacing = interface_as_base ? m_support_params.support_material_flow.spacing() : m_support_params.support_material_interface_flow.spacing(); - filler_interface->link_max_length = coord_t(scale_(filler_interface->spacing * link_max_length_factor / density)); - // BBS support more interface patterns - FillParams fill_params; - fill_params.density = density; - fill_params.dont_adjust = true; - if (m_object_config->support_interface_pattern == smipGrid) { - filler_interface->angle = Geometry::deg2rad(m_support_params.base_angle); - fill_params.dont_sort = true; - } - if (m_object_config->support_interface_pattern == smipRectilinearInterlaced) - filler_interface->layer_id = support_layer.interface_id(); - fill_expolygons_generate_paths( - // Destination - layer_ex.extrusions, - // Regions to fill - union_safety_offset_ex(layer_ex.polygons_to_extrude()), - // Filler and its parameters - filler_interface.get(), fill_params, - // Extrusion parameters - interface_as_base ? erSupportMaterial : erSupportMaterialInterface, interface_flow); - } - - // Base interface layers under soluble interfaces - if ( ! base_interface_layer.empty() && ! base_interface_layer.polygons_to_extrude().empty()) { - Fill *filler = filler_base_interface.get(); - //FIXME Bottom interfaces are extruded with the briding flow. Some bridging layers have its height slightly reduced, therefore - // the bridging flow does not quite apply. Reduce the flow to area of an ellipse? (A = pi * a * b) - assert(! base_interface_layer.layer->bridging); - Flow interface_flow = m_support_params.support_material_flow.with_height(float(base_interface_layer.layer->height)); - filler->angle = m_support_params.interface_angle + interface_angle_delta; - filler->spacing = m_support_params.support_material_interface_flow.spacing(); - filler->link_max_length = coord_t(scale_(filler->spacing * link_max_length_factor / m_support_params.interface_density)); - fill_expolygons_generate_paths( - // Destination - base_interface_layer.extrusions, - //base_layer_interface.extrusions, - // Regions to fill - union_safety_offset_ex(base_interface_layer.polygons_to_extrude()), - // Filler and its parameters - filler, float(m_support_params.interface_density), - // Extrusion parameters - erSupportMaterial, interface_flow); - } - - // Base support or flange. - if (! base_layer.empty() && ! base_layer.polygons_to_extrude().empty()) { - Fill *filler = filler_support.get(); - filler->angle = angles[support_layer_id % angles.size()]; - // We don't use $base_flow->spacing because we need a constant spacing - // value that guarantees that all layers are correctly aligned. - assert(! base_layer.layer->bridging); - auto flow = m_support_params.support_material_flow.with_height(float(base_layer.layer->height)); - filler->spacing = m_support_params.support_material_flow.spacing(); - filler->link_max_length = coord_t(scale_(filler->spacing * link_max_length_factor / m_support_params.support_density)); - float density = float(m_support_params.support_density); - bool sheath = m_support_params.with_sheath; - bool no_sort = false; - if (base_layer.layer->bottom_z < EPSILON) { - // Base flange (the 1st layer). - filler = filler_first_layer; - // BBS: the 1st layer use the same fill direction as other layers(in rectilinear) to avoid - // that 2nd layer detaches from the 1st layer. - //filler->angle = Geometry::deg2rad(float(m_object_config->support_angle.value + 90.)); - density = float(m_object_config->raft_first_layer_density.value * 0.01); - flow = m_support_params.first_layer_flow; - // use the proper spacing for first layer as we don't need to align - // its pattern to the other layers - //FIXME When paralellizing, each thread shall have its own copy of the fillers. - filler->spacing = flow.spacing(); - filler->link_max_length = coord_t(scale_(filler->spacing * link_max_length_factor / density)); - sheath = true; - no_sort = true; - } - fill_expolygons_with_sheath_generate_paths( - // Destination - base_layer.extrusions, - // Regions to fill - base_layer.polygons_to_extrude(), - // Filler and its parameters - filler, density, - // Extrusion parameters - erSupportMaterial, flow, - sheath, no_sort); - - } - - // Merge base_interface_layers to base_layers to avoid unneccessary retractions - if (! base_layer.empty() && ! base_interface_layer.empty() && ! base_layer.polygons_to_extrude().empty() && ! base_interface_layer.polygons_to_extrude().empty() && - base_layer.could_merge(base_interface_layer)) - base_layer.merge(std::move(base_interface_layer)); - - layer_cache.add_nonempty_and_sort(); - - // Collect the support areas with this print_z into islands, as there is no need - // for retraction over these islands. - Polygons polys; - // Collect the extrusions, sorted by the bottom extrusion height. - for (LayerCacheItem &layer_cache_item : layer_cache.nonempty) { - // Collect islands to polys. - layer_cache_item.layer_extruded->polygons_append(polys); - // The print_z of the top contact surfaces and bottom_z of the bottom contact surfaces are "free" - // in a sense that they are not synchronized with other support layers. As the top and bottom contact surfaces - // are inflated to achieve a better anchoring, it may happen, that these surfaces will at least partially - // overlap in Z with another support layers, leading to over-extrusion. - // Mitigate the over-extrusion by modulating the extrusion rate over these regions. - // The print head will follow the same print_z, but the layer thickness will be reduced - // where it overlaps with another support layer. - //FIXME When printing a briging path, what is an equivalent height of the squished extrudate of the same width? - // Collect overlapping top/bottom surfaces. - layer_cache_item.overlapping.reserve(20); - coordf_t bottom_z = layer_cache_item.layer_extruded->layer->bottom_print_z() + EPSILON; - auto add_overlapping = [&layer_cache_item, bottom_z](const SupportGeneratorLayersPtr &layers, size_t idx_top) { - for (int i = int(idx_top) - 1; i >= 0 && layers[i]->print_z > bottom_z; -- i) - layer_cache_item.overlapping.push_back(layers[i]); - }; - add_overlapping(top_contacts, idx_layer_top_contact); - if (layer_cache_item.layer_extruded->layer->layer_type == SupporLayerType::BottomContact) { - // Bottom contact layer may overlap with a base layer, which may be changed to interface layer. - add_overlapping(intermediate_layers, idx_layer_intermediate); - add_overlapping(interface_layers, idx_layer_interface); - add_overlapping(base_interface_layers, idx_layer_base_interface); - } - // Order the layers by lexicographically by an increasing print_z and a decreasing layer height. - std::stable_sort(layer_cache_item.overlapping.begin(), layer_cache_item.overlapping.end(), [](auto *l1, auto *l2) { return *l1 < *l2; }); - } - if (! polys.empty()) - expolygons_append(support_layer.support_islands, union_ex(polys)); - } // for each support_layer_id - }); - - // Now modulate the support layer height in parallel. - tbb::parallel_for(tbb::blocked_range(n_raft_layers, support_layers.size()), - [&support_layers, &layer_caches] - (const tbb::blocked_range& range) { - for (size_t support_layer_id = range.begin(); support_layer_id < range.end(); ++ support_layer_id) { - SupportLayer &support_layer = *support_layers[support_layer_id]; - LayerCache &layer_cache = layer_caches[support_layer_id]; - // For all extrusion types at this print_z, ordered by decreasing layer height: - for (LayerCacheItem &layer_cache_item : layer_cache.nonempty) { - // Trim the extrusion height from the bottom by the overlapping layers. - modulate_extrusion_by_overlapping_layers(layer_cache_item.layer_extruded->extrusions, *layer_cache_item.layer_extruded->layer, layer_cache_item.overlapping); - support_layer.support_fills.append(std::move(layer_cache_item.layer_extruded->extrusions)); - } - } - }); - -#ifndef NDEBUG - struct Test { - static bool verify_nonempty(const ExtrusionEntityCollection *collection) { - for (const ExtrusionEntity *ee : collection->entities) { - if (const ExtrusionPath *path = dynamic_cast(ee)) - assert(! path->empty()); - else if (const ExtrusionMultiPath *multipath = dynamic_cast(ee)) - assert(! multipath->empty()); - else if (const ExtrusionEntityCollection *eecol = dynamic_cast(ee)) { - assert(! eecol->empty()); - return verify_nonempty(eecol); - } else - assert(false); - } - return true; - } - }; - for (const SupportLayer *support_layer : support_layers) - assert(Test::verify_nonempty(&support_layer->support_fills)); -#endif // NDEBUG -} - /* void PrintObjectSupportMaterial::clip_by_pillars( const PrintObject &object, diff --git a/src/libslic3r/Support/SupportMaterial.hpp b/src/libslic3r/Support/SupportMaterial.hpp index 809f9b1611..e489c2374a 100644 --- a/src/libslic3r/Support/SupportMaterial.hpp +++ b/src/libslic3r/Support/SupportMaterial.hpp @@ -6,6 +6,7 @@ #include "Slicing.hpp" #include "Fill/FillBase.hpp" #include "SupportLayer.hpp" +#include "SupportParameters.hpp" namespace Slic3r { class PrintObject; @@ -18,35 +19,6 @@ class PrintObjectConfig; // the parameters of the raft to determine the 1st layer height and thickness. class PrintObjectSupportMaterial { -public: - - struct SupportParams { - Flow first_layer_flow; - Flow support_material_flow; - Flow support_material_interface_flow; - Flow support_material_bottom_interface_flow; - // Is merging of regions allowed? Could the interface & base support regions be printed with the same extruder? - bool can_merge_support_regions; - - coordf_t support_layer_height_min; - // coordf_t support_layer_height_max; - - coordf_t gap_xy; - - float base_angle; - float interface_angle; - coordf_t interface_spacing; - coordf_t support_expansion; - coordf_t interface_density; - coordf_t support_spacing; - coordf_t support_density; - - InfillPattern base_fill_pattern; - InfillPattern interface_fill_pattern; - InfillPattern contact_fill_pattern; - bool with_sheath; - }; - public: PrintObjectSupportMaterial(const PrintObject *object, const SlicingParameters &slicing_params); @@ -97,25 +69,7 @@ private: SupportGeneratorLayersPtr &intermediate_layers, const std::vector &layer_support_areas) const; - // Generate raft layers, also expand the 1st support layer - // in case there is no raft layer to improve support adhesion. - SupportGeneratorLayersPtr generate_raft_base( - const PrintObject &object, - const SupportGeneratorLayersPtr &top_contacts, - const SupportGeneratorLayersPtr &interface_layers, - const SupportGeneratorLayersPtr &base_interface_layers, - const SupportGeneratorLayersPtr &base_layers, - SupportGeneratorLayerStorage &layer_storage) const; - // Turn some of the base layers into base interface layers. - // For soluble interfaces with non-soluble bases, print maximum two first interface layers with the base - // extruder to improve adhesion of the soluble filament to the base. - std::pair generate_interface_layers( - const SupportGeneratorLayersPtr &bottom_contacts, - const SupportGeneratorLayersPtr &top_contacts, - SupportGeneratorLayersPtr &intermediate_layers, - SupportGeneratorLayerStorage &layer_storage) const; - // Trim support layers by an object to leave a defined gap between // the support volume and the object. @@ -131,16 +85,6 @@ private: void clip_with_shape(); */ - // Produce the actual G-code. - void generate_toolpaths( - SupportLayerPtrs &support_layers, - const SupportGeneratorLayersPtr &raft_layers, - const SupportGeneratorLayersPtr &bottom_contacts, - const SupportGeneratorLayersPtr &top_contacts, - const SupportGeneratorLayersPtr &intermediate_layers, - const SupportGeneratorLayersPtr &interface_layers, - const SupportGeneratorLayersPtr &base_interface_layers) const; - // Following objects are not owned by SupportMaterial class. const PrintObject *m_object; const PrintConfig *m_print_config; @@ -149,7 +93,7 @@ private: // carrying information on a raft, 1st layer height, 1st object layer height, gap between the raft and object etc. SlicingParameters m_slicing_params; // Various precomputed support parameters to be shared with external functions. - SupportParams m_support_params; + SupportParameters m_support_params; }; } // namespace Slic3r From 4034ffea188fbb75ea145cef067bf551c72fe1ab Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sun, 26 Jan 2025 17:08:07 +0800 Subject: [PATCH 004/129] Replace `TreeSupport::SupportParams` with `SupportParameters` (cherry picked from commit bambulab/BambuStudio@39ae64fc53abec794d740e36baaa13fd6fb35849) Co-authored-by: Arthur --- src/libslic3r/Support/SupportCommon.cpp | 10 ++--- src/libslic3r/Support/SupportParameters.hpp | 33 +++++++++++++--- src/libslic3r/Support/TreeSupport.cpp | 42 ++++++--------------- src/libslic3r/Support/TreeSupport.hpp | 33 +--------------- 4 files changed, 45 insertions(+), 73 deletions(-) diff --git a/src/libslic3r/Support/SupportCommon.cpp b/src/libslic3r/Support/SupportCommon.cpp index 01261bb6dc..4754ad47d1 100644 --- a/src/libslic3r/Support/SupportCommon.cpp +++ b/src/libslic3r/Support/SupportCommon.cpp @@ -140,8 +140,8 @@ std::pair generate_interfa if (! intermediate_layers.empty() && support_params.has_interfaces()) { // For all intermediate layers, collect top contact surfaces, which are not further than support_material_interface_layers. BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::generate_interface_layers() in parallel - start"; - const bool snug_supports = config.support_style.value == smsSnug; - const bool smooth_supports = config.support_style.value != smsGrid; + const bool snug_supports = support_params.support_style == smsSnug; + const bool smooth_supports = support_params.support_style != smsGrid; SupportGeneratorLayersPtr &interface_layers = base_and_interface_layers.first; SupportGeneratorLayersPtr &base_interface_layers = base_and_interface_layers.second; interface_layers.assign(intermediate_layers.size(), nullptr); @@ -1646,7 +1646,7 @@ void generate_support_toolpaths( { SupportLayer &support_layer = *support_layers[support_layer_id]; LayerCache &layer_cache = layer_caches[support_layer_id]; - const float support_interface_angle = config.support_style.value == smsGrid ? + const float support_interface_angle = support_params.support_style == smsGrid ? support_params.interface_angle : support_params.raft_interface_angle(support_layer.interface_id()); // Find polygons with the same print_z. @@ -1808,9 +1808,7 @@ void generate_support_toolpaths( filler->link_max_length = coord_t(scale_(filler->spacing * link_max_length_factor / density)); sheath = true; no_sort = true; - } else if (config.support_style == SupportMaterialStyle::smsOrganic || - // Orca: use organic as default - config.support_style == smsDefault) { + } else if (support_params.support_style == SupportMaterialStyle::smsOrganic) { tree_supports_generate_paths(base_layer.extrusions, base_layer.polygons_to_extrude(), flow, support_params); done = true; } diff --git a/src/libslic3r/Support/SupportParameters.hpp b/src/libslic3r/Support/SupportParameters.hpp index e240504c23..98b15dd747 100644 --- a/src/libslic3r/Support/SupportParameters.hpp +++ b/src/libslic3r/Support/SupportParameters.hpp @@ -104,7 +104,12 @@ struct SupportParameters { this->support_density > 0.95 || this->with_sheath ? ipRectilinear : ipSupportBase; this->interface_fill_pattern = (this->interface_density > 0.95 ? ipRectilinear : ipSupportBase); this->raft_interface_fill_pattern = this->raft_interface_density > 0.95 ? ipRectilinear : ipSupportBase; - this->contact_fill_pattern = + if (object_config.support_interface_pattern == smipGrid) + this->contact_fill_pattern = ipGrid; + else if (object_config.support_interface_pattern == smipRectilinearInterlaced) + this->contact_fill_pattern = ipRectilinear; + else + this->contact_fill_pattern = (object_config.support_interface_pattern == smipAuto && slicing_params.soluble_interface) || object_config.support_interface_pattern == smipConcentric ? ipConcentric : @@ -142,11 +147,25 @@ struct SupportParameters { assert(slicing_params.interface_raft_layers == 0); assert(slicing_params.raft_layers() == 0); } - - this->tree_branch_diameter_double_wall_area_scaled = 0.25 * sqr(scaled(object_config.tree_support_branch_diameter_double_wall.value)) * M_PI; - } - // Both top / bottom contacts and interfaces are soluble. + const auto nozzle_diameter = print_config.nozzle_diameter.get_at(object_config.support_interface_filament - 1); + const coordf_t extrusion_width = object_config.line_width.get_abs_value(nozzle_diameter); + support_extrusion_width = object_config.support_line_width.get_abs_value(nozzle_diameter); + support_extrusion_width = support_extrusion_width > 0 ? support_extrusion_width : extrusion_width; + + tree_branch_diameter_double_wall_area_scaled = 0.25 * sqr(scaled(object_config.tree_support_branch_diameter_double_wall.value)) * M_PI; + + support_style = object_config.support_style; + if (support_style == smsDefault) { + if (is_tree(object_config.support_type)) { + // Orca: use organic as default + support_style = smsOrganic; + } else { + support_style = smsGrid; + } + } + } + // Both top / bottom contacts and interfaces are soluble. bool soluble_interface; // Support contact & interface are soluble, but support base is non-soluble. bool soluble_interface_non_soluble_base; @@ -181,6 +200,7 @@ struct SupportParameters { Flow support_material_bottom_interface_flow; // Flow at raft inteface & contact layers. Flow raft_interface_flow; + coordf_t support_extrusion_width; // Is merging of regions allowed? Could the interface & base support regions be printed with the same extruder? bool can_merge_support_regions; @@ -198,6 +218,7 @@ struct SupportParameters { coordf_t raft_interface_density; // Density of the base support layers. coordf_t support_density; + SupportMaterialStyle support_style = smsDefault; // Pattern of the sparse infill including sparse raft layers. InfillPattern base_fill_pattern; @@ -219,6 +240,8 @@ struct SupportParameters { // Produce a raft interface angle for a given SupportLayer::interface_id() float raft_interface_angle(size_t interface_id) const { return this->raft_angle_interface + ((interface_id & 1) ? float(- M_PI / 4.) : float(+ M_PI / 4.)); } + + const double thresh_big_overhang = Slic3r::sqr(scale_(10)); }; } // namespace Slic3r diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 6d6e25ef2b..330c53910a 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -667,41 +667,21 @@ static Point bounding_box_middle(const BoundingBox &bbox) } TreeSupport::TreeSupport(PrintObject& object, const SlicingParameters &slicing_params) - : m_object(&object), m_slicing_params(slicing_params), m_object_config(&object.config()) + : m_object(&object), m_slicing_params(slicing_params), m_support_params(object), m_object_config(&object.config()) { m_print_config = &m_object->print()->config(); m_raft_layers = slicing_params.base_raft_layers + slicing_params.interface_raft_layers; support_type = m_object_config->support_type; - support_style = m_object_config->support_style; - if (support_style == smsDefault) - // Orca: use organic as default - support_style = smsOrganic; + SupportMaterialPattern support_pattern = m_object_config->support_base_pattern; - if (support_style == smsTreeHybrid && support_pattern == smpDefault) + if (m_support_params.support_style == smsTreeHybrid && support_pattern == smpDefault) support_pattern = smpRectilinear; - m_support_params.base_fill_pattern = - support_pattern == smpLightning ? ipLightning : - support_pattern == smpHoneycomb ? ipHoneycomb : - m_support_params.support_density > 0.95 || m_support_params.with_sheath ? ipRectilinear : ipSupportBase; - m_support_params.interface_fill_pattern = (m_support_params.interface_density > 0.95 ? ipRectilinear : ipSupportBase); - if (m_object_config->support_interface_pattern == smipGrid) - m_support_params.contact_fill_pattern = ipGrid; - else if (m_object_config->support_interface_pattern == smipRectilinearInterlaced) - m_support_params.contact_fill_pattern = ipRectilinear; - else - m_support_params.contact_fill_pattern = (m_object_config->support_interface_pattern == smipAuto && m_slicing_params.soluble_interface) || - m_object_config->support_interface_pattern == smipConcentric ? - ipConcentric : - (m_support_params.interface_density > 0.95 ? ipRectilinear : ipSupportBase); + if(support_pattern == smpLightning) + m_support_params.base_fill_pattern = ipLightning; - const auto nozzle_diameter = object.print()->config().nozzle_diameter.get_at(object.config().support_interface_filament-1); - const coordf_t extrusion_width = m_object_config->line_width.get_abs_value(nozzle_diameter); - const coordf_t support_extrusion_width = m_object_config->support_line_width.get_abs_value(nozzle_diameter); - - m_support_params.support_extrusion_width = support_extrusion_width > 0 ? support_extrusion_width : extrusion_width; - is_slim = is_tree_slim(support_type, support_style); - is_strong = is_tree(support_type) && support_style == smsTreeStrong; + is_slim = is_tree_slim(support_type, m_support_params.support_style); + is_strong = is_tree(support_type) && m_support_params.support_style == smsTreeStrong; MAX_BRANCH_RADIUS = 10.0; tree_support_branch_diameter_angle = 5.0;//is_slim ? 10.0 : 5.0; // by default tree support needs no infill, unless it's tree hybrid which contains normal nodes. @@ -1132,7 +1112,7 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) if (max_bridge_length > 0 && ts_layer->overhang_areas.size() > 0 && lower_layer) { // do not break bridge for normal part in TreeHybrid - bool break_bridge = !(support_style == smsTreeHybrid && area(ts_layer->overhang_areas) > m_support_params.thresh_big_overhang); + bool break_bridge = !(m_support_params.support_style == smsTreeHybrid && area(ts_layer->overhang_areas) > m_support_params.thresh_big_overhang); m_object->remove_bridges_from_contacts(lower_layer, layer, extrusion_width_scaled, &ts_layer->overhang_areas, max_bridge_length, break_bridge); } @@ -1587,7 +1567,7 @@ void TreeSupport::generate_toolpaths() bool need_infill = with_infill; if(m_object_config->support_base_pattern==smpDefault) need_infill &= area_group.need_infill; - if (layer_id>0 && area_group.dist_to_top < 10 && !need_infill && support_style!=smsTreeHybrid) { + if (layer_id>0 && area_group.dist_to_top < 10 && !need_infill && m_support_params.support_style!=smsTreeHybrid) { if (area_group.dist_to_top < 5) // 1 wall at the top <5mm make_perimeter_and_inner_brim(ts_layer->support_fills.entities, poly, 1, flow, erSupportMaterial); else // at least 2 walls for range [5,10) @@ -1880,7 +1860,7 @@ Polygons TreeSupport::contact_nodes_to_polygon(const std::vector& contact void TreeSupport::generate() { - if (support_style == smsOrganic) { + if (m_support_params.support_style == smsOrganic) { generate_tree_support_3D(*m_object, this, this->throw_on_cancel); return; } @@ -3438,7 +3418,7 @@ void TreeSupport::generate_contact_points(std::vector m_support_params.thresh_big_overhang) { + if (m_support_params.support_style==smsTreeHybrid && overhang_part.area() > m_support_params.thresh_big_overhang) { Point candidate = overhang_bounds.center(); if (!overhang_part.contains(candidate)) move_inside_expoly(overhang_part, candidate); diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index 2ad8dc1cdb..bd6bc7e38b 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -11,6 +11,7 @@ #include "Flow.hpp" #include "PrintConfig.hpp" #include "Fill/Lightning/Generator.hpp" +#include "TreeSupport3D.hpp" #ifndef SQ #define SQ(x) ((x)*(x)) @@ -361,35 +362,6 @@ public: } }; - struct SupportParams - { - Flow first_layer_flow; - Flow support_material_flow; - Flow support_material_interface_flow; - Flow support_material_bottom_interface_flow; - coordf_t support_extrusion_width; - // Is merging of regions allowed? Could the interface & base support regions be printed with the same extruder? - bool can_merge_support_regions; - - coordf_t support_layer_height_min; - // coordf_t support_layer_height_max; - - coordf_t gap_xy; - - float base_angle; - float interface_angle; - coordf_t interface_spacing; - coordf_t interface_density; - coordf_t support_spacing; - coordf_t support_density; - - InfillPattern base_fill_pattern; - InfillPattern interface_fill_pattern; - InfillPattern contact_fill_pattern; - bool with_sheath; - const double thresh_big_overhang = SQ(scale_(10)); - }; - int avg_node_per_layer = 0; float nodes_angle = 0; bool has_overhangs = false; @@ -397,7 +369,6 @@ public: bool has_cantilever = false; double max_cantilever_dist = 0; SupportType support_type; - SupportMaterialStyle support_style; std::unique_ptr generator; std::unordered_map printZ_to_lightninglayer; @@ -422,7 +393,7 @@ private: const PrintObjectConfig *m_object_config; SlicingParameters m_slicing_params; // Various precomputed support parameters to be shared with external functions. - SupportParams m_support_params; + SupportParameters m_support_params; size_t m_raft_layers = 0; size_t m_highest_overhang_layer = 0; std::vector> m_spanning_trees; From 51290a853daa56f3653be10970a077f1d94624cd Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sun, 26 Jan 2025 17:43:29 +0800 Subject: [PATCH 005/129] Clean up tree support code (cherry picked from commit bambulab/BambuStudio@39ae64fc53abec794d740e36baaa13fd6fb35849) Co-authored-by: Arthur --- src/libslic3r/Support/TreeSupport.cpp | 414 +++++--------------------- src/libslic3r/Support/TreeSupport.hpp | 286 +++++++++--------- 2 files changed, 223 insertions(+), 477 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 330c53910a..009fd35a89 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -39,15 +39,6 @@ namespace Slic3r { #define unscale_(val) ((val) * SCALING_FACTOR) -inline unsigned int round_divide(unsigned int dividend, unsigned int divisor) //!< Return dividend divided by divisor rounded to the nearest integer -{ - return (dividend + divisor / 2) / divisor; -} -inline unsigned int round_up_divide(unsigned int dividend, unsigned int divisor) //!< Return dividend divided by divisor rounded to the nearest integer -{ - return (dividend + divisor - 1) / divisor; -} - inline double dot_with_unscale(const Point a, const Point b) { return unscale_(a(0)) * unscale_(b(0)) + unscale_(a(1)) * unscale_(b(1)); @@ -206,8 +197,8 @@ static void draw_contours_and_nodes_to_svg const ExPolygons &overhangs, const ExPolygons &overhangs_after_offset, const ExPolygons &outlines_below, - const std::vector &layer_nodes, - const std::vector &lower_layer_nodes, + const std::vector &layer_nodes, + const std::vector &lower_layer_nodes, std::string name_prefix, std::vector legends = { "overhang","avoid","outlines" }, std::vector colors = { "blue","red","yellow" } ) @@ -216,7 +207,7 @@ static void draw_contours_and_nodes_to_svg bbox.merge(get_extents(overhangs_after_offset)); bbox.merge(get_extents(outlines_below)); Points layer_pts; - for (TreeSupport::Node* node : layer_nodes) { + for (SupportNode* node : layer_nodes) { layer_pts.push_back(node->position); } bbox.merge(get_extents(layer_pts)); @@ -255,14 +246,14 @@ static void draw_contours_and_nodes_to_svg #if 0 // lower layer points layer_pts.clear(); - for (TreeSupport::Node *node : lower_layer_nodes) { + for (SupportNode *node : lower_layer_nodes) { layer_pts.push_back(node->position); } svg.draw(layer_pts, "black", coord_t(scale_(0.1))); // higher layer points layer_pts.clear(); - for (TreeSupport::Node* node : layer_nodes) { + for (SupportNode* node : layer_nodes) { if(node->parent) layer_pts.push_back(node->parent->position); } @@ -1269,50 +1260,9 @@ static void _make_loops(ExtrusionEntitiesPtr& loops_entities, ExPolygons &suppor expoly_list.erase(first_iter); } - // draw connected loops - if (/*wall_count > 1 && wall_count<5*/0) { - // TODO this method may drop some contours - wall_count = std::min(wall_count, loops.size()); - Polylines polylines; - polylines.push_back(Polyline()); - Polyline& polyline = polylines.back(); - Point end_pt; - Point end_dir; - for (int wall_idx = 0; wall_idx < wall_count; wall_idx++) { - Polygon &loop = loops[wall_idx]; - if (loop.size()<3) continue; - // break the closed loop if this is not the last loop, so the next loop can attach to the end_pt - //if (wall_idx != wall_count - 1 && loop.first_point() == loop.last_point()) - // loop.points.pop_back(); + extrusion_entities_append_loops(loops_entities, std::move(loops), role, float(flow.mm3_per_mm()), float(flow.width()), float(flow.height())); - if (wall_idx == 0) { - polyline.append(loop.points); - } else { - double d = loop.distance_to(end_pt); - if (d < scale_(2)) { // if current loop is close to the previous one - polyline.append(end_pt); - ExtrusionPath expath; - expath.polyline.append(loop.points); - ExtrusionLoop extru_loop(expath); - extru_loop.split_at(end_pt, false); - polyline.append(extru_loop.as_polyline()); - }else{// create a new polylie if they are far away - polylines.push_back(Polyline()); - polyline = polylines.back(); - polyline.append(loop.points); - } - } - end_pt = polyline.points.back(); - end_dir = end_pt - polyline.points[polyline.points.size() - 2]; - Point perpendicular_dir = turn90_ccw(end_dir); - end_pt = end_pt + normal(perpendicular_dir, flow.scaled_spacing()); - } - - extrusion_entities_append_paths(loops_entities, polylines, role, float(flow.mm3_per_mm()), float(flow.width()), float(flow.height())); - } else { - extrusion_entities_append_loops(loops_entities, std::move(loops), role, float(flow.mm3_per_mm()), float(flow.width()), float(flow.height())); - } - } +} static void make_perimeter_and_inner_brim(ExtrusionEntitiesPtr &dst, const ExPolygon &support_area, size_t wall_count, const Flow &flow, ExtrusionRole role) { @@ -1654,210 +1604,6 @@ void TreeSupport::generate_toolpaths() ); } -Polygons TreeSupport::spanning_tree_to_polygon(const std::vector& spanning_trees, Polygons layer_contours, int layer_nr) -{ - Polygons polys; - auto& mst_line_x_layer_contour_cache = m_mst_line_x_layer_contour_caches[layer_nr]; - for (MinimumSpanningTree mst : spanning_trees) { - std::vector points = mst.vertices(); - if (points.size() == 0) - continue; - std::map visited; - for (int i=0;i to_ignore; - for (int i = 0; i < points.size(); i++) { - if (visited[points[i]] == true) - continue; - - Polygon poly; - bool has_next = true; - Point pt1 = points[i]; - poly.points.push_back(pt1); - visited[pt1] = true; - - while (has_next) { - const std::vector& neighbours = mst.adjacent_nodes(pt1); - if (neighbours.empty()) - { - break; - } - - double min_ccw = std::numeric_limits::max(); - Point pt_selected = neighbours[0]; - has_next = false; - for (Point pt2 : neighbours) { - if (to_ignore.find(Line(pt1, pt2)) == to_ignore.end()) { - auto iter = mst_line_x_layer_contour_cache.find({ pt1,pt2 }); - if (iter != mst_line_x_layer_contour_cache.end()) { - if (iter->second) - continue; - } - else { - Polylines pls; - pls.emplace_back(pt1, pt2); - Polylines pls_intersect = intersection_pl(pls, layer_contours); - mst_line_x_layer_contour_cache.insert({ {pt1, pt2}, !pls_intersect.empty() }); - mst_line_x_layer_contour_cache.insert({ {pt2, pt1}, !pls_intersect.empty() }); - if (!pls_intersect.empty()) - continue; - } - - if (poly.points.size() < 2 || visited[pt2]==false) - { - pt_selected = pt2; - has_next = true; - break; - } - double curr_ccw = pt2.ccw(pt1, poly.points.back()); - if (curr_ccw < min_ccw) - { - min_ccw = curr_ccw; - pt_selected = pt2; - has_next = true; - } - } - } - if (has_next) { - poly.points.push_back(pt_selected); - to_ignore.insert(Line(pt1, pt_selected)); - visited[pt_selected] = true; - pt1 = pt_selected; - } - } - polys.emplace_back(std::move(poly)); - } - } - return polys; -} - -Polygons TreeSupport::contact_nodes_to_polygon(const std::vector& contact_nodes, Polygons layer_contours, int layer_nr, std::vector& radiis, std::vector& is_interface) -{ - Polygons polys; - std::vector spanning_trees; - std::vector radiis_mtree; - std::vector is_interface_mtree; - // generate minimum spanning trees - { - std::map visited; - for (int i = 0; i < contact_nodes.size(); i++) - visited.emplace(contact_nodes[i], false); - std::unordered_set to_ignore; - - // generate minimum spaning trees - for (int i = 0; i < contact_nodes.size(); i++) { - Node* node = contact_nodes[i]; - if (visited[node]) - continue; - - std::vector points_to_mstree; - double radius = 0; - Point pt1 = node->position; - points_to_mstree.push_back(pt1); - visited[node] = true; - radius += node->radius; - - for (int j = i + 1; j < contact_nodes.size(); j++) { - Node* node2 = contact_nodes[j]; - Point pt2 = node2->position; - // connect to this neighbor if: - // 1) both are interface or both are not - // 3) not readly added - // 4) won't cross perimeters: this is not right since we need to check all possible connections - if ((node->support_roof_layers_below > 0) == (node2->support_roof_layers_below > 0) - && to_ignore.find(Line(pt1, pt2)) == to_ignore.end()) - { - points_to_mstree.emplace_back(pt2); - visited[node2] = true; - radius += node2->radius; - } - } - - spanning_trees.emplace_back(points_to_mstree); - radiis_mtree.push_back(radius / points_to_mstree.size()); - is_interface_mtree.push_back(node->support_roof_layers_below > 0); - } - } - auto lines = spanning_tree_to_lines(spanning_trees); -#if 1 - // convert mtree to polygon - for (int k = 0; k < spanning_trees.size(); k++) { - auto& mst_line_x_layer_contour_cache = m_mst_line_x_layer_contour_caches[layer_nr]; - MinimumSpanningTree mst = spanning_trees[k]; - std::vector points = mst.vertices(); - std::map visited; - for (int i = 0; i < points.size(); i++) - visited.emplace(points[i], false); - - std::unordered_set to_ignore; - for (int i = 0; i < points.size(); i++) { - if (visited[points[i]]) - continue; - - Polygon poly; - Point pt1 = points[i]; - poly.points.push_back(pt1); - visited[pt1] = true; - - bool has_next = true; - while (has_next) - { - const std::vector& neighbours = mst.adjacent_nodes(pt1); - double min_ccw = -std::numeric_limits::max(); - Point pt_selected; - has_next = false; - for (Point pt2 : neighbours) { - if (to_ignore.find(Line(pt1, pt2)) == to_ignore.end()) { - auto iter = mst_line_x_layer_contour_cache.find({ pt1,pt2 }); - if (iter != mst_line_x_layer_contour_cache.end()) { - if (iter->second) - continue; - } - else { - Polylines pls; - pls.emplace_back(pt1, pt2); - Polylines pls_intersect = intersection_pl(pls, layer_contours); - mst_line_x_layer_contour_cache.insert({ {pt1, pt2}, !pls_intersect.empty() }); - mst_line_x_layer_contour_cache.insert({ {pt2, pt1}, !pls_intersect.empty() }); - if (!pls_intersect.empty()) - continue; - } - if (poly.points.size() < 2) - { - pt_selected = pt2; - has_next = true; - break; - } - double curr_ccw = pt2.ccw(pt1, poly.points.rbegin()[1]); - if (curr_ccw > min_ccw) - { - has_next = true; - min_ccw = curr_ccw; - pt_selected = pt2; - } - } - } - if (!has_next) - break; - - poly.points.push_back(pt_selected); - to_ignore.insert(Line(pt1, pt_selected)); - visited[pt_selected] = true; - pt1 = pt_selected; - } - polys.emplace_back(std::move(poly)); - radiis.push_back(radiis_mtree[k]); - is_interface.push_back(is_interface_mtree[k]); - } - } -#else - polys = spanning_tree_to_polygon(spanning_trees, layer_contours, layer_nr, radiis); -#endif - return polys; -} - - void TreeSupport::generate() { if (m_support_params.support_style == smsOrganic) { @@ -1865,7 +1611,7 @@ void TreeSupport::generate() return; } - std::vector> contact_nodes(m_object->layers().size()); + std::vector> contact_nodes(m_object->layers().size()); profiler.stage_start(STAGE_total); @@ -1907,7 +1653,7 @@ if (!m_object->config().tree_support_adaptive_layer_height) for (auto& layer : contact_nodes) { - for (Node* p_node : layer) + for (SupportNode* p_node : layer) { delete p_node; } @@ -2061,7 +1807,7 @@ Polygons TreeSupport::get_trim_support_regions( return polygons_trimming; } -void TreeSupport::draw_circles(const std::vector>& contact_nodes) +void TreeSupport::draw_circles(const std::vector>& contact_nodes) { const PrintObjectConfig &config = m_object->config(); const Print* print = m_object->print(); @@ -2123,7 +1869,7 @@ void TreeSupport::draw_circles(const std::vector>& contact_no if (print->canceled()) break; - const std::vector& curr_layer_nodes = contact_nodes[layer_nr]; + const std::vector& curr_layer_nodes = contact_nodes[layer_nr]; SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); assert(ts_layer != nullptr); @@ -2134,7 +1880,7 @@ void TreeSupport::draw_circles(const std::vector>& contact_no continue; } - Node* first_node = curr_layer_nodes.front(); + SupportNode* first_node = curr_layer_nodes.front(); ts_layer->print_z = first_node->print_z; ts_layer->height = first_node->height; if (ts_layer->height < EPSILON) { @@ -2155,12 +1901,12 @@ void TreeSupport::draw_circles(const std::vector>& contact_no BOOST_LOG_TRIVIAL(debug) << "circles at layer " << layer_nr << " contact nodes size=" << contact_nodes[layer_nr].size(); //Draw the support areas and add the roofs appropriately to the support roof instead of normal areas. ts_layer->lslices.reserve(contact_nodes[layer_nr].size()); - for (const Node* p_node : contact_nodes[layer_nr]) + for (const SupportNode* p_node : contact_nodes[layer_nr]) { if (print->canceled()) break; - const Node& node = *p_node; + const SupportNode& node = *p_node; ExPolygons area; // Generate directly from overhang polygon if one of the following is true: // 1) node is a normal part of hybrid support @@ -2347,7 +2093,7 @@ void TreeSupport::draw_circles(const std::vector>& contact_no std::vector overhangs; for (int layer_nr = 1; layer_nr < m_object->layer_count(); layer_nr++) { if (print->canceled()) break; - const std::vector& curr_layer_nodes = contact_nodes[layer_nr]; + const std::vector& curr_layer_nodes = contact_nodes[layer_nr]; SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); assert(ts_layer != nullptr); @@ -2439,7 +2185,7 @@ void TreeSupport::draw_circles(const std::vector>& contact_no if (print->canceled()) break; m_object->print()->set_status(66, (boost::format(_L("Support: fix holes at layer %d")) % layer_nr).str()); - const std::vector& curr_layer_nodes = contact_nodes[layer_nr]; + const std::vector& curr_layer_nodes = contact_nodes[layer_nr]; SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); assert(ts_layer != nullptr); @@ -2547,7 +2293,7 @@ void TreeSupport::draw_circles(const std::vector>& contact_no } } -void TreeSupport::drop_nodes(std::vector>& contact_nodes) +void TreeSupport::drop_nodes(std::vector>& contact_nodes) { const PrintObjectConfig &config = m_object->config(); // Use Minimum Spanning Tree to connect the points on each layer and move them while dropping them down. @@ -2573,7 +2319,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) if (config.tree_support_branch_angle.value < 30.0) return config.tree_support_branch_angle.value; return (radius - MIN_BRANCH_RADIUS) / (MAX_BRANCH_RADIUS - MIN_BRANCH_RADIUS) * (config.tree_support_branch_angle.value - 30.0) + 30.0; }; - auto get_max_move_dist = [this, &config, branch_radius, tip_layers, diameter_angle_scale_factor, wall_count, support_extrusion_width, support_line_width](const Node *node, int power = 1) { + auto get_max_move_dist = [this, &config, branch_radius, tip_layers, diameter_angle_scale_factor, wall_count, support_extrusion_width, support_line_width](const SupportNode *node, int power = 1) { double move_dist = node->max_move_dist; if (node->max_move_dist == 0) { if (node->radius == 0) node->radius = calc_branch_radius(branch_radius, node->dist_mm_to_top, diameter_angle_scale_factor); @@ -2594,7 +2340,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) std::vector &layer_heights = m_ts_data->layer_heights; if (layer_heights.empty()) return; - std::unordered_set to_free_node_set; + std::unordered_set to_free_node_set; m_spanning_trees.resize(contact_nodes.size()); //m_mst_line_x_layer_contour_caches.resize(contact_nodes.size()); @@ -2613,7 +2359,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) if (layer_heights[layer_nr].height < EPSILON) continue; auto& layer_radius = all_layer_radius[layer_nr]; auto& layer_node_dist = all_layer_node_dist[layer_nr]; - for (Node *p_node : contact_nodes[layer_nr]) { + for (SupportNode *p_node : contact_nodes[layer_nr]) { layer_node_dist.emplace(p_node->dist_mm_to_top); } size_t layer_nr_next = layer_heights[layer_nr].next_layer_nr; @@ -2655,7 +2401,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) coordf_t print_z_next = layer_heights[layer_nr_next].print_z; coordf_t height_next = layer_heights[layer_nr_next].height; - std::deque> unsupported_branch_leaves; // All nodes that are leaves on this layer that would result in unsupported ('mid-air') branches. + std::deque> unsupported_branch_leaves; // All nodes that are leaves on this layer that would result in unsupported ('mid-air') branches. const Layer* ts_layer = m_object->get_support_layer(layer_nr); m_object->print()->set_status(60, (boost::format(_L("Support: propagate branches at layer %d")) % layer_nr).str()); @@ -2685,14 +2431,14 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) //Group together all nodes for each part. const ExPolygons& parts = m_ts_data->get_avoidance(0, layer_nr); - std::vector> nodes_per_part(1 + parts.size()); //All nodes that aren't inside a part get grouped together in the 0th part. - for (Node* p_node : layer_contact_nodes) + std::vector> nodes_per_part(1 + parts.size()); //All nodes that aren't inside a part get grouped together in the 0th part. + for (SupportNode* p_node : layer_contact_nodes) { - const Node& node = *p_node; + const SupportNode& node = *p_node; if (node.distance_to_top < 0) { // gap nodes do not merge or move - Node* next_node = new Node(p_node->position, p_node->distance_to_top + 1, layer_nr_next, p_node->support_roof_layers_below - 1, p_node->to_buildplate, p_node, + SupportNode* next_node = new SupportNode(p_node->position, p_node->distance_to_top + 1, layer_nr_next, p_node->support_roof_layers_below - 1, p_node->to_buildplate, p_node, print_z_next, height_next); get_max_move_dist(next_node); next_node->is_merged = false; @@ -2747,10 +2493,10 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) profiler.tic(); //std::vector& spanning_trees = m_spanning_trees[layer_nr]; std::vector spanning_trees; - for (const std::unordered_map& group : nodes_per_part) + for (const std::unordered_map& group : nodes_per_part) { std::vector points_to_buildplate; - for (const std::pair& entry : group) + for (const std::pair& entry : group) { points_to_buildplate.emplace_back(entry.first); //Just the position of the node. } @@ -2767,11 +2513,11 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) { const MinimumSpanningTree& mst = spanning_trees[group_index]; //In the first pass, merge all nodes that are close together. - std::unordered_set to_delete; - for (const std::pair& entry : nodes_per_part[group_index]) + std::unordered_set to_delete; + for (const std::pair& entry : nodes_per_part[group_index]) { - Node* p_node = entry.second; - Node& node = *p_node; + SupportNode* p_node = entry.second; + SupportNode& node = *p_node; if (to_delete.find(p_node) != to_delete.end()) { continue; //Delete this node (don't create a new node for it on the next layer). @@ -2780,7 +2526,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) if (node.type == ePolygon) { // Remove all neighbours that are completely inside the polygon and merge them into this node. for (const Point &neighbour : neighbours) { - Node * neighbour_node = nodes_per_part[group_index][neighbour]; + SupportNode * neighbour_node = nodes_per_part[group_index][neighbour]; coord_t neighbour_radius = scale_(calc_branch_radius(branch_radius, neighbour_node->dist_mm_to_top, diameter_angle_scale_factor)); Point pt_north = neighbour + Point(0, neighbour_radius), pt_south = neighbour - Point(0, neighbour_radius), pt_west = neighbour - Point(neighbour_radius, 0), pt_east = neighbour + Point(neighbour_radius, 0); @@ -2812,8 +2558,8 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) move_out_expolys(avoid_layer, next_position, radius_sample_resolution + EPSILON, max_move_between_samples); } - Node* neighbour = nodes_per_part[group_index][neighbours[0]]; - Node* node_; + SupportNode* neighbour = nodes_per_part[group_index][neighbours[0]]; + SupportNode* node_; if (p_node->parent && neighbour->parent) node_ = (node.dist_mm_to_top >= neighbour->dist_mm_to_top && p_node->parent) ? p_node : neighbour; else @@ -2821,7 +2567,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) // Make sure the next pass doesn't drop down either of these (since that already happened). node_->merged_neighbours.push_front(node_ == p_node ? neighbour : p_node); const bool to_buildplate = !is_inside_ex(m_ts_data->get_avoidance(0, layer_nr_next), next_position); - Node * next_node = new Node(next_position, node_->distance_to_top + 1, layer_nr_next, node_->support_roof_layers_below-1, to_buildplate, node_, + SupportNode * next_node = new SupportNode(next_position, node_->distance_to_top + 1, layer_nr_next, node_->support_roof_layers_below-1, to_buildplate, node_, print_z_next, height_next); next_node->movement = next_position - node.position; get_max_move_dist(next_node); @@ -2839,7 +2585,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) { if (vsize2_with_unscale(neighbour - node.position) < /*max_move_distance2*/get_max_move_dist(&node,2)) { - Node* neighbour_node = nodes_per_part[group_index][neighbour]; + SupportNode* neighbour_node = nodes_per_part[group_index][neighbour]; if (neighbour_node->type == ePolygon) continue; node.distance_to_top = std::max(node.distance_to_top, neighbour_node->distance_to_top); @@ -2855,10 +2601,10 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) } //In the second pass, move all middle nodes. - for (const std::pair& entry : nodes_per_part[group_index]) + for (const std::pair& entry : nodes_per_part[group_index]) { - Node* p_node = entry.second; - const Node& node = *p_node; + SupportNode* p_node = entry.second; + const SupportNode& node = *p_node; if (to_delete.find(p_node) != to_delete.end()) { continue; @@ -2866,7 +2612,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) if (node.type == ePolygon) { // polygon node do not merge or move const bool to_buildplate = !is_inside_ex(m_ts_data->m_layer_outlines[layer_nr], p_node->position); - Node * next_node = new Node(p_node->position, p_node->distance_to_top + 1, layer_nr_next, p_node->support_roof_layers_below - 1, to_buildplate, + SupportNode * next_node = new SupportNode(p_node->position, p_node->distance_to_top + 1, layer_nr_next, p_node->support_roof_layers_below - 1, to_buildplate, p_node, print_z_next, height_next); next_node->max_move_dist = 0; next_node->is_merged = false; @@ -2887,7 +2633,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) unsupported_branch_leaves.push_front({ layer_nr, p_node }); } else { - Node* pn = p_node; + SupportNode* pn = p_node; for (int i = 0; i <= bottom_interface_layers && pn; i++, pn = pn->parent) pn->support_floor_layers_above = bottom_interface_layers - i + 1; // +1 so the parent node has support_floor_layers_above=2 to_delete.insert(p_node); @@ -2897,7 +2643,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) // if the link between parent and current is cut by contours, mark current as bottom contact node if (p_node->parent && intersection_ln({p_node->position, p_node->parent->position}, layer_contours).empty()==false) { - Node* pn = p_node->parent; + SupportNode* pn = p_node->parent; for (int i = 0; i <= bottom_interface_layers && pn; i++, pn = pn->parent) pn->support_floor_layers_above = bottom_interface_layers - i + 1; to_delete.insert(p_node); @@ -2919,7 +2665,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) Point sum_direction(0, 0); for (const Point &neighbour : neighbours) { // do not move to the neighbor to be deleted - Node *neighbour_node = nodes_per_part[group_index][neighbour]; + SupportNode *neighbour_node = nodes_per_part[group_index][neighbour]; if (to_delete.find(neighbour_node) != to_delete.end()) continue; Point direction = neighbour - node.position; @@ -3010,7 +2756,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) } const bool to_buildplate = !is_inside_ex(m_ts_data->m_layer_outlines[layer_nr], next_layer_vertex);// !is_inside_ex(m_ts_data->get_avoidance(m_ts_data->m_xy_distance, layer_nr - 1), next_layer_vertex); - Node * next_node = new Node(next_layer_vertex, node.distance_to_top + 1, layer_nr_next, node.support_roof_layers_below - 1, to_buildplate, p_node, + SupportNode * next_node = new SupportNode(next_layer_vertex, node.distance_to_top + 1, layer_nr_next, node.support_roof_layers_below - 1, to_buildplate, p_node, print_z_next, height_next); next_node->movement = movement; get_max_move_dist(next_node); @@ -3038,11 +2784,11 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) for (;! unsupported_branch_leaves.empty(); unsupported_branch_leaves.pop_back()) { const auto& entry = unsupported_branch_leaves.back(); - Node* i_node = entry.second; + SupportNode* i_node = entry.second; for (; i_node != nullptr; i_node = i_node->parent) { size_t i_layer = i_node->obj_layer_nr; - std::vector::iterator to_erase = std::find(contact_nodes[i_layer].begin(), contact_nodes[i_layer].end(), i_node); + std::vector::iterator to_erase = std::find(contact_nodes[i_layer].begin(), contact_nodes[i_layer].end(), i_node); if (to_erase != contact_nodes[i_layer].end()) { // update the parent-child chain @@ -3053,7 +2799,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) contact_nodes[i_layer].erase(to_erase); to_free_node_set.insert(i_node); - for (Node* neighbour : i_node->merged_neighbours) + for (SupportNode* neighbour : i_node->merged_neighbours) { unsupported_branch_leaves.push_front({ i_layer, neighbour }); } @@ -3064,32 +2810,32 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) BOOST_LOG_TRIVIAL(debug) << "after m_avoidance_cache.size()=" << m_ts_data->m_avoidance_cache.size(); - for (Node *node : to_free_node_set) + for (SupportNode *node : to_free_node_set) { delete node; } to_free_node_set.clear(); } -void TreeSupport::smooth_nodes(std::vector> &contact_nodes) +void TreeSupport::smooth_nodes(std::vector> &contact_nodes) { for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { - std::vector &curr_layer_nodes = contact_nodes[layer_nr]; + std::vector &curr_layer_nodes = contact_nodes[layer_nr]; if (curr_layer_nodes.empty()) continue; - for (Node *node : curr_layer_nodes) { + for (SupportNode *node : curr_layer_nodes) { node->is_processed = false; if (layer_nr == 0) node->is_merged = true; // nodes on plate are also merged nodes } } for (int layer_nr = 0; layer_nr< contact_nodes.size(); layer_nr++) { - std::vector &curr_layer_nodes = contact_nodes[layer_nr]; + std::vector &curr_layer_nodes = contact_nodes[layer_nr]; if (curr_layer_nodes.empty()) continue; - for (Node *node : curr_layer_nodes) { + for (SupportNode *node : curr_layer_nodes) { if (!node->is_processed) { std::vector pts; - std::vector branch; - Node * p_node = node; + std::vector branch; + SupportNode * p_node = node; // add a fixed head if (node->child) { pts.push_back(p_node->child->position); @@ -3125,11 +2871,11 @@ void TreeSupport::smooth_nodes(std::vector> &contact_nodes) } // save tree structure for viewing in python auto& tree_nodes = m_ts_data->tree_nodes; - std::map ptr2idx; - std::map idx2ptr; + std::map ptr2idx; + std::map idx2ptr; for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { - std::vector& curr_layer_nodes = contact_nodes[layer_nr]; - for (Node* node : curr_layer_nodes) { + std::vector& curr_layer_nodes = contact_nodes[layer_nr]; + for (SupportNode* node : curr_layer_nodes) { ptr2idx.emplace(node, tree_nodes.size()); idx2ptr.emplace(tree_nodes.size(), node); tree_nodes.emplace_back(node->position, node->print_z); @@ -3137,7 +2883,7 @@ void TreeSupport::smooth_nodes(std::vector> &contact_nodes) } for (size_t i = 0; i < tree_nodes.size(); i++) { TreeNode& tree_node = tree_nodes[i]; - Node* p_node = idx2ptr[i]; + SupportNode* p_node = idx2ptr[i]; if (p_node->child) tree_node.children.push_back(ptr2idx[p_node->child]); if(p_node->parent) @@ -3159,7 +2905,7 @@ void TreeSupport::smooth_nodes(std::vector> &contact_nodes) #endif } -void TreeSupport::adjust_layer_heights(std::vector>& contact_nodes) +void TreeSupport::adjust_layer_heights(std::vector>& contact_nodes) { if (contact_nodes.empty()) return; @@ -3170,8 +2916,8 @@ void TreeSupport::adjust_layer_heights(std::vector>& contact_ // TODO can we merge layers in a way that guaranttees smoothness? if (!print_config.independent_support_layer_height || is_slim) { for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { - std::vector& curr_layer_nodes = contact_nodes[layer_nr]; - for (Node* node : curr_layer_nodes) { + std::vector& curr_layer_nodes = contact_nodes[layer_nr]; + for (SupportNode* node : curr_layer_nodes) { node->print_z = m_object->get_layer(layer_nr)->print_z; node->height = m_object->get_layer(layer_nr)->height; } @@ -3190,14 +2936,14 @@ void TreeSupport::adjust_layer_heights(std::vector>& contact_ if (layer_height == max_layer_height) return; extremes.push_back(0); - for (Node* node : contact_nodes[0]) { + for (SupportNode* node : contact_nodes[0]) { node->print_z = m_object->get_layer(0)->print_z; node->height = m_object->get_layer(0)->height; } for (int layer_nr = 1; layer_nr < contact_nodes.size(); layer_nr++) { - std::vector& curr_layer_nodes = contact_nodes[layer_nr]; - for (Node* node : curr_layer_nodes) { + std::vector& curr_layer_nodes = contact_nodes[layer_nr]; + for (SupportNode* node : curr_layer_nodes) { if (node->support_roof_layers_below >0 || node->support_floor_layers_above == bot_intf_layers) { extremes.push_back(layer_nr); break; @@ -3206,7 +2952,7 @@ void TreeSupport::adjust_layer_heights(std::vector>& contact_ if (extremes.back() == layer_nr) { // contact layer use the same print_z and layer height with object layer - for (Node* node : curr_layer_nodes) { + for (SupportNode* node : curr_layer_nodes) { node->print_z = m_object->get_layer(layer_nr)->print_z; node->height = m_object->get_layer(layer_nr)->height; } @@ -3230,11 +2976,11 @@ void TreeSupport::adjust_layer_heights(std::vector>& contact_ coordf_t print_z = extr1z + step; assert(step >= layer_height - EPSILON); for (int layer_nr = extr1_layer_nr + 1; layer_nr < extr2_layer_nr; layer_nr++) { - std::vector& curr_layer_nodes = contact_nodes[layer_nr]; + std::vector& curr_layer_nodes = contact_nodes[layer_nr]; if (curr_layer_nodes.empty()) continue; if (std::abs(print_z - curr_layer_nodes[0]->print_z) < step / 2 + EPSILON) { - for (Node* node : curr_layer_nodes) { + for (SupportNode* node : curr_layer_nodes) { node->print_z = print_z; node->height = step; } @@ -3242,7 +2988,7 @@ void TreeSupport::adjust_layer_heights(std::vector>& contact_ } else { // can't clear curr_layer_nodes, or the model will have empty layers - for (Node* node : curr_layer_nodes) { + for (SupportNode* node : curr_layer_nodes) { node->print_z = 0.0; node->height = 0.0; } @@ -3251,7 +2997,7 @@ void TreeSupport::adjust_layer_heights(std::vector>& contact_ } } -std::vector TreeSupport::plan_layer_heights(std::vector> &contact_nodes) +std::vector TreeSupport::plan_layer_heights(std::vector> &contact_nodes) { const PrintObjectConfig& config = m_object->config(); const PrintConfig & print_config = m_object->print()->config(); @@ -3350,7 +3096,7 @@ std::vector TreeSupport::plan_layer_heights(std::vector>& contact_nodes) +void TreeSupport::generate_contact_points(std::vector>& contact_nodes) { const PrintObjectConfig &config = m_object->config(); const coordf_t point_spread = scale_(config.tree_support_branch_distance.value); @@ -3423,7 +3169,7 @@ void TreeSupport::generate_contact_points(std::vectorm_layer_outlines_below[layer_nr], candidate))) { - Node* contact_node = new Node(candidate, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, true, Node::NO_PARENT, print_z, + SupportNode* contact_node = new SupportNode(candidate, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, true, SupportNode::NO_PARENT, print_z, height, z_distance_top); contact_node->type = ePolygon; contact_node->overhang = &overhang_part; @@ -3452,8 +3198,8 @@ void TreeSupport::generate_contact_points(std::vectorget_collision(0, layer_nr), candidate)) { constexpr bool to_buildplate = true; - Node * contact_node = new Node(candidate, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, to_buildplate, - Node::NO_PARENT, print_z, height, z_distance_top); + SupportNode * contact_node = new SupportNode(candidate, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, to_buildplate, + SupportNode::NO_PARENT, print_z, height, z_distance_top); contact_node->overhang = &overhang_part; curr_nodes.emplace_back(contact_node); added = true; @@ -3475,7 +3221,7 @@ void TreeSupport::generate_contact_points(std::vectoroverhang = &overhang_part; curr_nodes.emplace_back(contact_node); @@ -3491,7 +3237,7 @@ void TreeSupport::generate_contact_points(std::vector().normalized(); auto v2 = (pt - points[(i + 1) % nSize]).cast().normalized(); if (v1.dot(v2) > -0.7) { // angle smaller than 135 degrees - Node *contact_node = new Node(pt, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, true, Node::NO_PARENT, print_z, + SupportNode *contact_node = new SupportNode(pt, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, true, SupportNode::NO_PARENT, print_z, height, z_distance_top); contact_node->overhang = &overhang_part; contact_node->is_corner = true; @@ -3551,16 +3297,16 @@ void TreeSupport::generate_contact_points(std::vector& nodes_layer, Node* p_node) +void TreeSupport::insert_dropped_node(std::vector& nodes_layer, SupportNode* p_node) { - std::vector::iterator conflicting_node_it = std::find(nodes_layer.begin(), nodes_layer.end(), p_node); + std::vector::iterator conflicting_node_it = std::find(nodes_layer.begin(), nodes_layer.end(), p_node); if (conflicting_node_it == nodes_layer.end()) //No conflict. { nodes_layer.emplace_back(p_node); return; } - Node* conflicting_node = *conflicting_node_it; + SupportNode* conflicting_node = *conflicting_node_it; conflicting_node->distance_to_top = std::max(conflicting_node->distance_to_top, p_node->distance_to_top); conflicting_node->support_roof_layers_below = std::max(conflicting_node->support_roof_layers_below, p_node->support_roof_layers_below); } diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index bd6bc7e38b..8a19acc485 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -41,6 +41,142 @@ struct TreeNode { } }; +enum TreeNodeType { + eCircle, + eSquare, + ePolygon +}; + + +/*! + * \brief Represents the metadata of a node in the tree. + */ +struct SupportNode +{ + static constexpr SupportNode* NO_PARENT = nullptr; + + SupportNode() + : distance_to_top(0) + , position(Point(0, 0)) + , obj_layer_nr(0) + , support_roof_layers_below(0) + , support_floor_layers_above(0) + , to_buildplate(true) + , parent(nullptr) + , print_z(0.0) + , height(0.0) + {} + + // when dist_mm_to_top_==0, new node's dist_mm_to_top=parent->dist_mm_to_top + parent->height; + SupportNode(const Point position, const int distance_to_top, const int obj_layer_nr, const int support_roof_layers_below, const bool to_buildplate, SupportNode* parent, + coordf_t print_z_, coordf_t height_, coordf_t dist_mm_to_top_=0) + : distance_to_top(distance_to_top) + , position(position) + , obj_layer_nr(obj_layer_nr) + , support_roof_layers_below(support_roof_layers_below) + , support_floor_layers_above(0) + , to_buildplate(to_buildplate) + , parent(parent) + , print_z(print_z_) + , height(height_) + , dist_mm_to_top(dist_mm_to_top_) + { + if (parent) { + type = parent->type; + overhang = parent->overhang; + if (dist_mm_to_top==0) + dist_mm_to_top = parent->dist_mm_to_top + parent->height; + parent->child = this; + for (auto& neighbor : parent->merged_neighbours) + neighbor->child = this; + } + } + +#ifdef DEBUG // Clear the delete node's data so if there's invalid access after, we may get a clue by inspecting that node. + ~SupportNode() + { + parent = nullptr; + merged_neighbours.clear(); + } +#endif // DEBUG + + /*! + * \brief The number of layers to go to the top of this branch. + * Negative value means it's a virtual node between support and overhang, which doesn't need to be extruded. + */ + int distance_to_top; + coordf_t dist_mm_to_top = 0; // dist to bottom contact in mm + + /*! + * \brief The position of this node on the layer. + */ + Point position; + Point movement; // movement towards neighbor center or outline + mutable double radius = 0.0; + mutable double max_move_dist = 0.0; + TreeNodeType type = eCircle; + bool is_merged = false; // this node is generated by merging upper nodes + bool is_corner = false; + bool is_processed = false; + const ExPolygon *overhang = nullptr; // when type==ePolygon, set this value to get original overhang area + + /*! + * \brief The direction of the skin lines above the tip of the branch. + * + * This determines in which direction we should reduce the width of the + * branch. + */ + bool skin_direction; + + /*! + * \brief The number of support roof layers below this one. + * + * When a contact point is created, it is determined whether the mesh + * needs to be supported with support roof or not, since that is a + * per-mesh setting. This is stored in this variable in order to track + * how far we need to extend that support roof downwards. + */ + int support_roof_layers_below; + int support_floor_layers_above; + int obj_layer_nr; + + /*! + * \brief Whether to try to go towards the build plate. + * + * If the node is inside the collision areas, it has no choice but to go + * towards the model. If it is not inside the collision areas, it must + * go towards the build plate to prevent a scar on the surface. + */ + bool to_buildplate; + + /*! + * \brief The originating node for this one, one layer higher. + * + * In order to prune branches that can't have any support (because they + * can't be on the model and the path to the buildplate isn't clear), + * the entire branch needs to be known. + */ + SupportNode* parent; + SupportNode* child = nullptr; + + /*! + * \brief All neighbours (on the same layer) that where merged into this node. + * + * In order to prune branches that can't have any support (because they + * can't be on the model and the path to the buildplate isn't clear), + * the entire branch needs to be known. + */ + std::list merged_neighbours; + + coordf_t print_z; + coordf_t height; + + bool operator==(const SupportNode& other) const + { + return position == other.position; + } +}; + /*! * \brief Lazily generates tree guidance volumes. * @@ -227,140 +363,6 @@ public: void detect_overhangs(bool detect_first_sharp_tail_only=false); - enum NodeType { - eCircle, - eSquare, - ePolygon - }; - - /*! - * \brief Represents the metadata of a node in the tree. - */ - struct Node - { - static constexpr Node* NO_PARENT = nullptr; - - Node() - : distance_to_top(0) - , position(Point(0, 0)) - , obj_layer_nr(0) - , support_roof_layers_below(0) - , support_floor_layers_above(0) - , to_buildplate(true) - , parent(nullptr) - , print_z(0.0) - , height(0.0) - {} - - // when dist_mm_to_top_==0, new node's dist_mm_to_top=parent->dist_mm_to_top + parent->height; - Node(const Point position, const int distance_to_top, const int obj_layer_nr, const int support_roof_layers_below, const bool to_buildplate, Node* parent, - coordf_t print_z_, coordf_t height_, coordf_t dist_mm_to_top_=0) - : distance_to_top(distance_to_top) - , position(position) - , obj_layer_nr(obj_layer_nr) - , support_roof_layers_below(support_roof_layers_below) - , support_floor_layers_above(0) - , to_buildplate(to_buildplate) - , parent(parent) - , print_z(print_z_) - , height(height_) - , dist_mm_to_top(dist_mm_to_top_) - { - if (parent) { - type = parent->type; - overhang = parent->overhang; - if (dist_mm_to_top==0) - dist_mm_to_top = parent->dist_mm_to_top + parent->height; - parent->child = this; - for (auto& neighbor : parent->merged_neighbours) - neighbor->child = this; - } - } - -#ifdef DEBUG // Clear the delete node's data so if there's invalid access after, we may get a clue by inspecting that node. - ~Node() - { - parent = nullptr; - merged_neighbours.clear(); - } -#endif // DEBUG - - /*! - * \brief The number of layers to go to the top of this branch. - * Negative value means it's a virtual node between support and overhang, which doesn't need to be extruded. - */ - int distance_to_top; - coordf_t dist_mm_to_top = 0; // dist to bottom contact in mm - - /*! - * \brief The position of this node on the layer. - */ - Point position; - Point movement; // movement towards neighbor center or outline - mutable double radius = 0.0; - mutable double max_move_dist = 0.0; - NodeType type = eCircle; - bool is_merged = false; // this node is generated by merging upper nodes - bool is_corner = false; - bool is_processed = false; - const ExPolygon *overhang = nullptr; // when type==ePolygon, set this value to get original overhang area - - /*! - * \brief The direction of the skin lines above the tip of the branch. - * - * This determines in which direction we should reduce the width of the - * branch. - */ - bool skin_direction; - - /*! - * \brief The number of support roof layers below this one. - * - * When a contact point is created, it is determined whether the mesh - * needs to be supported with support roof or not, since that is a - * per-mesh setting. This is stored in this variable in order to track - * how far we need to extend that support roof downwards. - */ - int support_roof_layers_below; - int support_floor_layers_above; - int obj_layer_nr; - - /*! - * \brief Whether to try to go towards the build plate. - * - * If the node is inside the collision areas, it has no choice but to go - * towards the model. If it is not inside the collision areas, it must - * go towards the build plate to prevent a scar on the surface. - */ - bool to_buildplate; - - /*! - * \brief The originating node for this one, one layer higher. - * - * In order to prune branches that can't have any support (because they - * can't be on the model and the path to the buildplate isn't clear), - * the entire branch needs to be known. - */ - Node *parent; - Node *child = nullptr; - - /*! - * \brief All neighbours (on the same layer) that where merged into this node. - * - * In order to prune branches that can't have any support (because they - * can't be on the model and the path to the buildplate isn't clear), - * the entire branch needs to be known. - */ - std::list merged_neighbours; - - coordf_t print_z; - coordf_t height; - - bool operator==(const Node& other) const - { - return position == other.position; - } - }; int avg_node_per_layer = 0; float nodes_angle = 0; @@ -418,7 +420,7 @@ private: * save the resulting support polygons to. * \param contact_nodes The nodes to draw as support. */ - void draw_circles(const std::vector>& contact_nodes); + void draw_circles(const std::vector>& contact_nodes); /*! * \brief Drops down the nodes of the tree support towards the build plate. @@ -432,18 +434,18 @@ private: * dropped down. The nodes are dropped to lower layers inside the same * vector of layers. */ - void drop_nodes(std::vector> &contact_nodes); + void drop_nodes(std::vector>& contact_nodes); - void smooth_nodes(std::vector> &contact_nodes); + void smooth_nodes(std::vector>& contact_nodes); - void adjust_layer_heights(std::vector>& contact_nodes); + void adjust_layer_heights(std::vector>& contact_nodes); /*! BBS: MusangKing: maximum layer height * \brief Optimize the generation of tree support by pre-planning the layer_heights * */ - std::vector plan_layer_heights(std::vector> &contact_nodes); + std::vector plan_layer_heights(std::vector>& contact_nodes); /*! * \brief Creates points where support contacts the model. * @@ -457,18 +459,16 @@ private: * \return For each layer, a list of points where the tree should connect * with the model. */ - void generate_contact_points(std::vector>& contact_nodes); + void generate_contact_points(std::vector>& contact_nodes); /*! * \brief Add a node to the next layer. * * If a node is already at that position in the layer, the nodes are merged. */ - void insert_dropped_node(std::vector& nodes_layer, Node* node); + void insert_dropped_node(std::vector& nodes_layer, SupportNode* node); void create_tree_support_layers(); void generate_toolpaths(); - Polygons spanning_tree_to_polygon(const std::vector& spanning_trees, Polygons layer_contours, int layer_nr); - Polygons contact_nodes_to_polygon(const std::vector& contact_nodes, Polygons layer_contours, int layer_nr, std::vector& radiis, std::vector& is_interface); coordf_t calc_branch_radius(coordf_t base_radius, size_t layers_to_top, size_t tip_layers, double diameter_angle_scale_factor); coordf_t calc_branch_radius(coordf_t base_radius, coordf_t mm_to_top, double diameter_angle_scale_factor); From 1d1df4b0a51869430911930adeb605ece99a7ef7 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sun, 26 Jan 2025 22:11:30 +0800 Subject: [PATCH 006/129] ENH: improve tree support 1. add a hook inside tree branches for improved strength 2. fix the issue that interface may fly as a mess (delete the logic where gap nodes can skip dropping down) 3. fix the issue that base nodes may fly as a mess (smoothing should skip polygon nodes, see Jira:STUDIO-4403) Change-Id: Ie9f2039813c2ca3127ed8913304cc455fec8e7ee (cherry picked from commit 83cef5f91d49ff3d275a89ec3df8b5f0fd573f8c) (cherry picked from commit bambulab/BambuStudio@76f876a3c6e9b1b46182408ab66bb1f9c25370f5) Co-authored-by: Arthur --- src/libslic3r/ClipperUtils.cpp | 2 + src/libslic3r/ClipperUtils.hpp | 1 + src/libslic3r/Support/SupportCommon.hpp | 3 + src/libslic3r/Support/SupportParameters.hpp | 5 +- src/libslic3r/Support/TreeSupport.cpp | 535 +++++++++----------- src/libslic3r/Support/TreeSupport.hpp | 28 +- src/libslic3r/Support/TreeSupport3D.hpp | 4 + 7 files changed, 268 insertions(+), 310 deletions(-) diff --git a/src/libslic3r/ClipperUtils.cpp b/src/libslic3r/ClipperUtils.cpp index b9a63e37e7..9082382a54 100644 --- a/src/libslic3r/ClipperUtils.cpp +++ b/src/libslic3r/ClipperUtils.cpp @@ -664,6 +664,8 @@ Slic3r::Polygons diff(const Slic3r::Polygons &subject, const Slic3r::Polygons &c { return _clipper(ClipperLib::ctDifference, ClipperUtils::PolygonsProvider(subject), ClipperUtils::PolygonsProvider(clip), do_safety_offset); } Slic3r::Polygons diff_clipped(const Slic3r::Polygons &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset) { return diff(subject, ClipperUtils::clip_clipper_polygons_with_subject_bbox(clip, get_extents(subject).inflated(SCALED_EPSILON)), do_safety_offset); } +Slic3r::ExPolygons diff_clipped(const Slic3r::ExPolygons &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset) + { return diff_ex(subject, ClipperUtils::clip_clipper_polygons_with_subject_bbox(clip, get_extents(subject).inflated(SCALED_EPSILON)), do_safety_offset); } Slic3r::Polygons diff(const Slic3r::Polygons &subject, const Slic3r::ExPolygons &clip, ApplySafetyOffset do_safety_offset) { return _clipper(ClipperLib::ctDifference, ClipperUtils::PolygonsProvider(subject), ClipperUtils::ExPolygonsProvider(clip), do_safety_offset); } Slic3r::Polygons diff(const Slic3r::ExPolygons &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset) diff --git a/src/libslic3r/ClipperUtils.hpp b/src/libslic3r/ClipperUtils.hpp index 167449dc21..bc79dca5d5 100644 --- a/src/libslic3r/ClipperUtils.hpp +++ b/src/libslic3r/ClipperUtils.hpp @@ -433,6 +433,7 @@ Slic3r::Polygons diff(const Slic3r::Polygons &subject, const Slic3r::ExPolygon // Optimized version clipping the "clipping" polygon using clip_clipper_polygon_with_subject_bbox(). // To be used with complex clipping polygons, where majority of the clipping polygons are outside of the source polygon. Slic3r::Polygons diff_clipped(const Slic3r::Polygons &src, const Slic3r::Polygons &clipping, ApplySafetyOffset do_safety_offset = ApplySafetyOffset::No); +Slic3r::ExPolygons diff_clipped(const Slic3r::ExPolygons &src, const Slic3r::Polygons &clipping, ApplySafetyOffset do_safety_offset = ApplySafetyOffset::No); Slic3r::Polygons diff(const Slic3r::ExPolygons &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset::No); Slic3r::Polygons diff(const Slic3r::ExPolygons &subject, const Slic3r::ExPolygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset::No); Slic3r::Polygons diff(const Slic3r::Surfaces &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset::No); diff --git a/src/libslic3r/Support/SupportCommon.hpp b/src/libslic3r/Support/SupportCommon.hpp index cdaa43c5db..d292c9cd8f 100644 --- a/src/libslic3r/Support/SupportCommon.hpp +++ b/src/libslic3r/Support/SupportCommon.hpp @@ -50,6 +50,9 @@ SupportGeneratorLayersPtr generate_raft_base( const SupportGeneratorLayersPtr &base_layers, SupportGeneratorLayerStorage &layer_storage); +void fill_expolygons_with_sheath_generate_paths( + ExtrusionEntitiesPtr &dst, const Polygons &polygons, Fill *filler, float density, ExtrusionRole role, const Flow &flow, const SupportParameters& support_params, bool with_sheath, bool no_sort); + // returns sorted layers SupportGeneratorLayersPtr generate_support_layers( PrintObject &object, diff --git a/src/libslic3r/Support/SupportParameters.hpp b/src/libslic3r/Support/SupportParameters.hpp index 98b15dd747..da615ab1fd 100644 --- a/src/libslic3r/Support/SupportParameters.hpp +++ b/src/libslic3r/Support/SupportParameters.hpp @@ -152,7 +152,9 @@ struct SupportParameters { const coordf_t extrusion_width = object_config.line_width.get_abs_value(nozzle_diameter); support_extrusion_width = object_config.support_line_width.get_abs_value(nozzle_diameter); support_extrusion_width = support_extrusion_width > 0 ? support_extrusion_width : extrusion_width; - + + independent_layer_height = print_config.independent_support_layer_height; + tree_branch_diameter_double_wall_area_scaled = 0.25 * sqr(scaled(object_config.tree_support_branch_diameter_double_wall.value)) * M_PI; support_style = object_config.support_style; @@ -241,6 +243,7 @@ struct SupportParameters { float raft_interface_angle(size_t interface_id) const { return this->raft_angle_interface + ((interface_id & 1) ? float(- M_PI / 4.) : float(+ M_PI / 4.)); } + bool independent_layer_height = false; const double thresh_big_overhang = Slic3r::sqr(scale_(10)); }; diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 009fd35a89..376589321e 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -29,6 +29,7 @@ #endif #define TAU (2.0 * M_PI) #define NO_INDEX (std::numeric_limits::max()) +#define USE_SUPPORT_3D 0 // #define SUPPORT_TREE_DEBUG_TO_SVG @@ -331,7 +332,8 @@ static void draw_polylines(SupportLayer* ts_layer, Polylines& polylines) // Move point from inside polygon if distance>0, outside if distance<0. // Special case: distance=0 means find the nearest point of from on the polygon contour. // The max move distance should not excceed max_move_distance. -static unsigned int move_inside_expoly(const ExPolygon &polygon, Point& from, double distance = 0, double max_move_distance = std::numeric_limits::max()) +// @return success(true) or not(false) +static bool move_inside_expoly(const ExPolygon &polygon, Point& from, double distance = 0, double max_move_distance = std::numeric_limits::max()) { //TODO: This is copied from the moveInside of Polygons. /* @@ -347,7 +349,7 @@ static unsigned int move_inside_expoly(const ExPolygon &polygon, Point& from, do if (contour.points.size() < 2) { - return 0; + return false; } Point p0 = contour.points[polygon.contour.size() - 2]; Point p1 = contour.points.back(); @@ -444,12 +446,14 @@ static unsigned int move_inside_expoly(const ExPolygon &polygon, Point& from, do { from = ret; } + return true; } else if (bestDist2 < max_move_distance * max_move_distance) { from = ret; + return true; } - return 0; + return false; } /* @@ -622,6 +626,7 @@ static bool is_inside_ex(const ExPolygons &polygons, const Point &pt) return false; } +// use project_onto which is more accurate but more expensive static bool move_out_expolys(const ExPolygons& polygons, Point& from, double distance, double max_move_distance) { Point from0 = from; @@ -810,6 +815,7 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) if (!is_tree(stype)) return; max_cantilever_dist = 0; + m_highest_overhang_layer = 0; // main part of overhang detection can be parallel tbb::parallel_for(tbb::blocked_range(0, m_object->layer_count()), @@ -1125,7 +1131,10 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) } } - if (!ts_layer->overhang_areas.empty()) has_overhangs = true; + if (!ts_layer->overhang_areas.empty()) { + has_overhangs = true; + m_highest_overhang_layer = std::max(m_highest_overhang_layer, size_t(layer_nr)); + } if (!layer->cantilevers.empty()) has_cantilever = true; } @@ -1383,7 +1392,7 @@ void TreeSupport::generate_toolpaths() { ExtrusionRole raft_contour_er = m_slicing_params.base_raft_layers > 0 ? erSupportMaterial : erSupportMaterialInterface; SupportLayer *ts_layer = m_object->support_layers().front(); - Flow flow = m_object->print()->brim_flow(); + Flow flow = Flow(support_extrusion_width, ts_layer->height, nozzle_diameter); Polygons loops; for (const ExPolygon& expoly : raft_areas) { @@ -1399,7 +1408,7 @@ void TreeSupport::generate_toolpaths() SupportLayer *ts_layer = m_object->get_support_layer(layer_nr); coordf_t expand_offset = (layer_nr == 0 ? 0. : -1.); - Flow support_flow = layer_nr == 0 ? m_object->print()->brim_flow() : Flow(support_extrusion_width, ts_layer->height, nozzle_diameter); + Flow support_flow = Flow(support_extrusion_width, ts_layer->height, nozzle_diameter); Fill* filler_interface = Fill::new_from_type(ipRectilinear); filler_interface->angle = layer_nr == 0 ? 90 : 0; filler_interface->spacing = support_extrusion_width; @@ -1517,27 +1526,34 @@ void TreeSupport::generate_toolpaths() bool need_infill = with_infill; if(m_object_config->support_base_pattern==smpDefault) need_infill &= area_group.need_infill; - if (layer_id>0 && area_group.dist_to_top < 10 && !need_infill && m_support_params.support_style!=smsTreeHybrid) { - if (area_group.dist_to_top < 5) // 1 wall at the top <5mm - make_perimeter_and_inner_brim(ts_layer->support_fills.entities, poly, 1, flow, erSupportMaterial); - else // at least 2 walls for range [5,10) - make_perimeter_and_inner_brim(ts_layer->support_fills.entities, poly, std::max(wall_count, size_t(2)), flow, erSupportMaterial); - } - else if (layer_id > 0 && need_infill && m_support_params.base_fill_pattern != ipLightning) { - std::shared_ptr filler_support = std::shared_ptr(Fill::new_from_type(m_support_params.base_fill_pattern)); - filler_support->set_bounding_box(bbox_object); - filler_support->spacing = object_config.support_base_pattern_spacing.value * support_density;// constant spacing to align support infill lines - filler_support->angle = Geometry::deg2rad(object_config.support_angle.value); - + size_t walls = wall_count; + if (layer_id == 0) walls = std::numeric_limits::max(); + else if (area_group.need_extra_wall && walls < 2) walls += 1; + std::shared_ptr filler_support = std::shared_ptr(Fill::new_from_type(layer_id == 0 ? ipConcentric : m_support_params.base_fill_pattern)); + filler_support->set_bounding_box(bbox_object); + filler_support->spacing = object_config.support_base_pattern_spacing.value * support_density;// constant spacing to align support infill lines + filler_support->angle = Geometry::deg2rad(object_config.support_angle.value); + if (need_infill && m_support_params.base_fill_pattern != ipLightning) { // allow infill-only mode if support is thick enough (so min_wall_count is 0); // otherwise must draw 1 wall size_t min_wall_count = offset(poly, -scale_(support_spacing * 1.5)).empty() ? 1 : 0; - make_perimeter_and_infill(ts_layer->support_fills.entities, *m_object->print(), poly, std::max(min_wall_count, wall_count), flow, + make_perimeter_and_infill(ts_layer->support_fills.entities, *m_object->print(), poly, std::max(min_wall_count, walls), flow, erSupportMaterial, filler_support.get(), support_density); } else { - make_perimeter_and_inner_brim(ts_layer->support_fills.entities, poly, - layer_id > 0 ? wall_count : std::numeric_limits::max(), flow, erSupportMaterial); + Polygons loops; + loops.emplace_back(poly.contour); + if (layer_id == 0) { + float density = float(m_object_config->raft_first_layer_density.value * 0.01); + fill_expolygons_with_sheath_generate_paths(ts_layer->support_fills.entities, loops, filler_support.get(), density, erSupportMaterial, flow, m_support_params, true, false); + } + else { + for (size_t i = 1; i < walls; i++) { + Polygons contour_new = offset(poly.contour, -(i-0.5f) * flow.scaled_spacing(), jtSquare); + loops.insert(loops.end(), contour_new.begin(), contour_new.end()); + } + fill_expolygons_with_sheath_generate_paths(ts_layer->support_fills.entities, loops, nullptr, 0, erSupportMaterial, flow, m_support_params, true, false); + } } } @@ -1611,8 +1627,6 @@ void TreeSupport::generate() return; } - std::vector> contact_nodes(m_object->layers().size()); - profiler.stage_start(STAGE_total); // Generate overhang areas @@ -1627,23 +1641,22 @@ void TreeSupport::generate() m_ts_data->is_slim = is_slim; // Generate contact points of tree support + std::vector> contact_nodes(m_object->layers().size()); + + std::vector move_bounds(m_highest_overhang_layer + 1); profiler.stage_start(STAGE_GENERATE_CONTACT_NODES); m_object->print()->set_status(56, _L("Support: generate contact points")); - generate_contact_points(contact_nodes); + generate_contact_points(contact_nodes, move_bounds); profiler.stage_finish(STAGE_GENERATE_CONTACT_NODES); + //Drop nodes to lower layers. profiler.stage_start(STAGE_DROP_DOWN_NODES); m_object->print()->set_status(60, _L("Support: propagate branches")); drop_nodes(contact_nodes); profiler.stage_finish(STAGE_DROP_DOWN_NODES); - smooth_nodes(contact_nodes); - -if (!m_object->config().tree_support_adaptive_layer_height) - // Adjust support layer heights - adjust_layer_heights(contact_nodes); - + smooth_nodes(contact_nodes); // , tree_support_3d_config); //Generate support areas. profiler.stage_start(STAGE_DRAW_CIRCLES); @@ -1691,7 +1704,7 @@ coordf_t TreeSupport::calc_branch_radius(coordf_t base_radius, size_t layers_to_ return radius; } -coordf_t TreeSupport::calc_branch_radius(coordf_t base_radius, coordf_t mm_to_top, double diameter_angle_scale_factor) +coordf_t TreeSupport::calc_branch_radius(coordf_t base_radius, coordf_t mm_to_top, double diameter_angle_scale_factor, bool use_min_distance) { double radius; coordf_t tip_height = base_radius;// this is a 45 degree tip @@ -1712,11 +1725,63 @@ coordf_t TreeSupport::calc_branch_radius(coordf_t base_radius, coordf_t mm_to_to return radius; } +ExPolygons TreeSupport::get_avoidance(coordf_t radius, size_t obj_layer_nr) +{ +#if USE_SUPPORT_3D + if (m_model_volumes) { + bool on_build_plate = m_object_config->support_on_build_plate_only.value; + const Polygons& avoid_polys = m_model_volumes->getAvoidance(radius, obj_layer_nr, TreeSupport3D::TreeModelVolumes::AvoidanceType::Fast, on_build_plate, true); + ExPolygons expolys; + for (auto& poly : avoid_polys) + expolys.emplace_back(std::move(poly)); + return expolys; + } + return ExPolygons(); +#else + return m_ts_data->get_avoidance(radius, obj_layer_nr); +#endif +} +ExPolygons TreeSupport::get_collision(coordf_t radius, size_t layer_nr) +{ +#if USE_SUPPORT_3D + if (m_model_volumes) { + bool on_build_plate = m_object_config->support_on_build_plate_only.value; + const Polygons& collision_polys = m_model_volumes->getCollision(radius, layer_nr, true); + ExPolygons expolys; + for (auto& poly : collision_polys) + expolys.emplace_back(std::move(poly)); + return expolys; + } +#else + return m_ts_data->get_collision(radius, layer_nr); +#endif + return ExPolygons(); +} +Polygons TreeSupport::get_collision_polys(coordf_t radius, size_t layer_nr) +{ +#if USE_SUPPORT_3D + if (m_model_volumes) { + bool on_build_plate = m_object_config->support_on_build_plate_only.value; + const Polygons& collision_polys = m_model_volumes->getCollision(radius, layer_nr, true); + return collision_polys; + } +#else + ExPolygons expolys = m_ts_data->get_collision(radius, layer_nr); + Polygons polys; + for (auto& expoly : expolys) + polys.emplace_back(std::move(expoly.contour)); + return polys; +#endif + return Polygons(); +} + template // RegionType could be ExPolygons or Polygons ExPolygons avoid_object_remove_extra_small_parts(ExPolygons &expolys, const RegionType&avoid_region) { ExPolygons expolys_out; + if(expolys.empty()) return expolys_out; + auto clipped_avoid_region=ClipperUtils::clip_clipper_polygons_with_subject_bbox(avoid_region, get_extents(expolys)); for (auto expoly : expolys) { - auto expolys_avoid = diff_ex(expoly, avoid_region); + auto expolys_avoid = diff_ex(expoly, clipped_avoid_region); int idx_max_area = -1; float max_area = 0; for (int i = 0; i < expolys_avoid.size(); ++i) { @@ -1815,7 +1880,7 @@ void TreeSupport::draw_circles(const std::vector>& con int bottom_gap_layers = round(m_slicing_params.gap_object_support / m_slicing_params.layer_height); const coordf_t branch_radius = config.tree_support_branch_diameter.value / 2; const coordf_t branch_radius_scaled = scale_(branch_radius); - bool on_buildplate_only = config.support_on_build_plate_only.value; + bool on_buildplate_only = m_object_config->support_on_build_plate_only.value; Polygon branch_circle; //Pre-generate a circle with correct diameter so that we don't have to recompute those (co)sines every time. // Use square support if there are too many nodes per layer because circle support needs much longer time to compute @@ -1861,7 +1926,7 @@ void TreeSupport::draw_circles(const std::vector>& con // coconut: previously std::unordered_map in m_collision_cache is not multi-thread safe which may cause programs stuck, here we change to tbb::concurrent_unordered_map tbb::parallel_for( - tbb::blocked_range(0, m_object->layer_count()), + tbb::blocked_range(0, m_object->layer_count(), m_object->layer_count()), [&](const tbb::blocked_range& range) { for (size_t layer_nr = range.begin(); layer_nr < range.end(); layer_nr++) @@ -1912,10 +1977,10 @@ void TreeSupport::draw_circles(const std::vector>& con // 1) node is a normal part of hybrid support // 2) node is virtual if (node.type == ePolygon || node.distance_to_top<0) { - if (node.overhang->contour.size() > 100 || node.overhang->holes.size()>1) - area.emplace_back(*node.overhang); + if (node.overhang.contour.size() > 100 || node.overhang.holes.size()>1) + area.emplace_back(node.overhang); else { - area = offset_ex({ *node.overhang }, scale_(m_ts_data->m_xy_distance)); + area = offset_ex({ node.overhang }, scale_(m_ts_data->m_xy_distance)); } if (node.type == ePolygon) has_polygon_node = true; @@ -1923,7 +1988,7 @@ void TreeSupport::draw_circles(const std::vector>& con else { Polygon circle; size_t layers_to_top = node.distance_to_top; - double scale = calc_branch_radius(branch_radius, node.dist_mm_to_top, diameter_angle_scale_factor) / branch_radius; + double scale = calc_branch_radius(branch_radius, node.dist_mm_to_top, diameter_angle_scale_factor, false) / branch_radius; if (/*is_slim*/1) { // draw ellipse along movement direction double moveX = node.movement.x() / (scale * branch_radius_scaled); @@ -1949,18 +2014,20 @@ void TreeSupport::draw_circles(const std::vector>& con ? layers_to_top * layer_height / (scale * branch_radius) * 0.5 : config.tree_support_brim_width; - circle = offset(circle, scale_(brim_width))[0]; + auto tmp=offset(circle, scale_(brim_width)); + if(!tmp.empty()) + circle = tmp[0]; } area.emplace_back(ExPolygon(circle)); // merge overhang to get a smoother interface surface // Do not merge when buildplate_only is on, because some underneath nodes may have been deleted. if (top_interface_layers > 0 && node.support_roof_layers_below > 0 && !on_buildplate_only) { ExPolygons overhang_expanded; - if (node.overhang->contour.size() > 100 || node.overhang->holes.size()>1) - overhang_expanded.emplace_back(*node.overhang); + if (node.overhang.contour.size() > 100 || node.overhang.holes.size()>1) + overhang_expanded.emplace_back(node.overhang); else { // 对于有缺陷的模型,overhang膨胀以后可能是空的! - overhang_expanded = offset_ex({ *node.overhang }, scale_(m_ts_data->m_xy_distance)); + overhang_expanded = offset_ex({ node.overhang }, scale_(m_ts_data->m_xy_distance)); } append(area, overhang_expanded); } @@ -2013,21 +2080,21 @@ void TreeSupport::draw_circles(const std::vector>& con roof_1st_layer = avoid_object_remove_extra_small_parts(roof_1st_layer, avoid_region_interface); } else { - roof_areas = std::move(diff_ex(roof_areas, avoid_region_interface)); - roof_1st_layer = std::move(diff_ex(roof_1st_layer, avoid_region_interface)); + roof_areas = diff_ex(roof_areas, ClipperUtils::clip_clipper_polygons_with_subject_bbox(avoid_region_interface, get_extents(roof_areas))); + roof_1st_layer = diff_ex(roof_1st_layer, ClipperUtils::clip_clipper_polygons_with_subject_bbox(avoid_region_interface, get_extents(roof_1st_layer))); } roof_areas = intersection_ex(roof_areas, m_machine_border); // roof_1st_layer and roof_areas may intersect, so need to subtract roof_areas from roof_1st_layer - roof_1st_layer = std::move(diff_ex(roof_1st_layer, roof_areas)); + roof_1st_layer = diff_ex(roof_1st_layer, ClipperUtils::clip_clipper_polygons_with_subject_bbox(roof_areas,get_extents(roof_1st_layer))); roof_1st_layer = intersection_ex(roof_1st_layer, m_machine_border); // let supports touch objects when brim is on - auto avoid_region = m_ts_data->get_collision((layer_nr == 0 && has_brim) ? config.brim_object_gap : m_ts_data->m_xy_distance, layer_nr); - base_areas = avoid_object_remove_extra_small_parts(base_areas, avoid_region); - base_areas = std::move(diff_ex(base_areas, roof_areas)); - base_areas = std::move(diff_ex(base_areas, roof_1st_layer)); - base_areas = std::move(diff_ex(base_areas, roof_gap_areas)); + auto avoid_region = get_collision_polys((layer_nr == 0 && has_brim) ? config.brim_object_gap : m_ts_data->m_xy_distance, layer_nr); + //base_areas = avoid_object_remove_extra_small_parts(base_areas, avoid_region); + base_areas = diff_clipped(base_areas, avoid_region); + ExPolygons roofs; append(roofs, roof_1st_layer); append(roofs, roof_areas);append(roofs, roof_gap_areas); + base_areas = diff_ex(base_areas, ClipperUtils::clip_clipper_polygons_with_subject_bbox(roofs, get_extents(base_areas))); base_areas = intersection_ex(base_areas, m_machine_border); if (SQUARE_SUPPORT) { @@ -2255,7 +2322,7 @@ void TreeSupport::draw_circles(const std::vector>& con // make sure 1) roof1 and object 2) roof1 and roof, won't intersect // Note: We can't replace roof1 directly, as we have recorded its address. // So instead we need to replace its members one by one. - auto tmp1 = diff_ex(roof1, m_ts_data->get_collision((layer_nr == 0 && has_brim) ? config.brim_object_gap : m_ts_data->m_xy_distance, layer_nr)); + auto tmp1 = diff_ex(roof1, get_collision((layer_nr == 0 && has_brim) ? config.brim_object_gap : m_ts_data->m_xy_distance, layer_nr)); tmp1 = diff_ex(tmp1, ts_layer->roof_areas); if (!tmp1.empty()) { roof1.contour = std::move(tmp1[0].contour); @@ -2327,8 +2394,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod if (angle > 30.0 && node->radius > MIN_BRANCH_RADIUS) angle = (node->radius - MIN_BRANCH_RADIUS) / (MAX_BRANCH_RADIUS - MIN_BRANCH_RADIUS) * (config.tree_support_branch_angle.value - 30.0) + 30.0; double tan_angle = tan(angle * M_PI / 180); - int wall_count_ = node->radius > 2 * support_line_width ? wall_count : 1; - node->max_move_dist = (angle < 90) ? (coordf_t) (tan_angle * node->height) * wall_count_ : std::numeric_limits::max(); + node->max_move_dist = (angle < 90) ? (coordf_t) (tan_angle * node->height) : std::numeric_limits::max(); node->max_move_dist = std::min(node->max_move_dist, support_extrusion_width); move_dist = node->max_move_dist; } @@ -2344,50 +2410,6 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod m_spanning_trees.resize(contact_nodes.size()); //m_mst_line_x_layer_contour_caches.resize(contact_nodes.size()); - if (0) - {// get outlines below and avoidance area using tbb - // This part only takes very little time, so we disable it. - typedef std::chrono::high_resolution_clock clock_; - typedef std::chrono::duration > second_; - std::chrono::time_point t0{ clock_::now() }; - - // get all the possible radiis - std::vector > all_layer_radius(m_highest_overhang_layer+1); - std::vector> all_layer_node_dist(m_highest_overhang_layer + 1); - for (size_t layer_nr = m_highest_overhang_layer; layer_nr > 0; layer_nr--) - { - if (layer_heights[layer_nr].height < EPSILON) continue; - auto& layer_radius = all_layer_radius[layer_nr]; - auto& layer_node_dist = all_layer_node_dist[layer_nr]; - for (SupportNode *p_node : contact_nodes[layer_nr]) { - layer_node_dist.emplace(p_node->dist_mm_to_top); - } - size_t layer_nr_next = layer_heights[layer_nr].next_layer_nr; - if (layer_nr_next <= m_highest_overhang_layer && layer_nr_next>0) { - for (auto node_dist : layer_node_dist) - all_layer_node_dist[layer_nr_next].emplace(node_dist + layer_heights[layer_nr].height); - } - for (auto node_dist : layer_node_dist) { - layer_radius.emplace(calc_branch_radius(branch_radius, node_dist, diameter_angle_scale_factor)); - } - } - // parallel pre-compute avoidance - //tbb::parallel_for(tbb::blocked_range(1, m_highest_overhang_layer), [&](const tbb::blocked_range &range) { - //for (size_t layer_nr = range.begin(); layer_nr < range.end(); layer_nr++) { - for (size_t layer_nr = 0; layer_nr < all_layer_radius.size(); layer_nr++) { - BOOST_LOG_TRIVIAL(debug) << "pre calculate_avoidance layer=" << layer_nr; - for (auto node_radius : all_layer_radius[layer_nr]) { - m_ts_data->get_avoidance(0, layer_nr); - m_ts_data->get_avoidance(node_radius, layer_nr); - } - } - //}); - - double duration{ std::chrono::duration_cast(clock_::now() - t0).count() }; - BOOST_LOG_TRIVIAL(debug) << "before m_avoidance_cache.size()=" << m_ts_data->m_avoidance_cache.size() - << ", takes " << duration << " secs."; - } - for (size_t layer_nr = contact_nodes.size() - 1; layer_nr > 0; layer_nr--) // Skip layer 0, since we can't drop down the vertices there. { if (m_object->print()->canceled()) @@ -2436,15 +2458,6 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod { const SupportNode& node = *p_node; - if (node.distance_to_top < 0) { - // gap nodes do not merge or move - SupportNode* next_node = new SupportNode(p_node->position, p_node->distance_to_top + 1, layer_nr_next, p_node->support_roof_layers_below - 1, p_node->to_buildplate, p_node, - print_z_next, height_next); - get_max_move_dist(next_node); - next_node->is_merged = false; - contact_nodes[layer_nr_next].emplace_back(next_node); - continue; - } if (support_on_buildplate_only && !node.to_buildplate) //Can't rest on model and unable to reach the build plate. Then we must drop the node and leave parts unsupported. { unsupported_branch_leaves.push_front({ layer_nr, p_node }); @@ -2530,14 +2543,13 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod coord_t neighbour_radius = scale_(calc_branch_radius(branch_radius, neighbour_node->dist_mm_to_top, diameter_angle_scale_factor)); Point pt_north = neighbour + Point(0, neighbour_radius), pt_south = neighbour - Point(0, neighbour_radius), pt_west = neighbour - Point(neighbour_radius, 0), pt_east = neighbour + Point(neighbour_radius, 0); - if (is_inside_ex(*node.overhang, neighbour) && is_inside_ex(*node.overhang, pt_north) && is_inside_ex(*node.overhang, pt_south) - && is_inside_ex(*node.overhang, pt_west) && is_inside_ex(*node.overhang, pt_east)){ + if (is_inside_ex(node.overhang, neighbour) && is_inside_ex(node.overhang, pt_north) && is_inside_ex(node.overhang, pt_south) + && is_inside_ex(node.overhang, pt_west) && is_inside_ex(node.overhang, pt_east)){ node.distance_to_top = std::max(node.distance_to_top, neighbour_node->distance_to_top); node.support_roof_layers_below = std::max(node.support_roof_layers_below, neighbour_node->support_roof_layers_below); node.dist_mm_to_top = std::max(node.dist_mm_to_top, neighbour_node->dist_mm_to_top); node.merged_neighbours.push_front(neighbour_node); node.merged_neighbours.insert(node.merged_neighbours.end(), neighbour_node->merged_neighbours.begin(), neighbour_node->merged_neighbours.end()); - node.is_merged = true; to_delete.insert(neighbour_node); } } @@ -2550,7 +2562,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod const coordf_t branch_radius_node = calc_branch_radius(branch_radius, node.dist_mm_to_top, diameter_angle_scale_factor); - auto avoid_layer = m_ts_data->get_avoidance(branch_radius_node, layer_nr_next); + auto avoid_layer = get_avoidance(branch_radius_node, layer_nr_next); if (group_index == 0) { //Avoid collisions. @@ -2566,12 +2578,12 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod node_ = p_node->parent ? p_node : neighbour; // Make sure the next pass doesn't drop down either of these (since that already happened). node_->merged_neighbours.push_front(node_ == p_node ? neighbour : p_node); - const bool to_buildplate = !is_inside_ex(m_ts_data->get_avoidance(0, layer_nr_next), next_position); + //const bool to_buildplate = !is_inside_ex(get_collision(0, layer_nr_next), next_position); + const bool to_buildplate = !is_inside_ex(m_ts_data->m_layer_outlines[layer_nr_next], next_position); SupportNode * next_node = new SupportNode(next_position, node_->distance_to_top + 1, layer_nr_next, node_->support_roof_layers_below-1, to_buildplate, node_, print_z_next, height_next); next_node->movement = next_position - node.position; get_max_move_dist(next_node); - next_node->is_merged = true; contact_nodes[layer_nr_next].push_back(next_node); @@ -2593,7 +2605,6 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod node.dist_mm_to_top = std::max(node.dist_mm_to_top, neighbour_node->dist_mm_to_top); node.merged_neighbours.push_front(neighbour_node); node.merged_neighbours.insert(node.merged_neighbours.end(), neighbour_node->merged_neighbours.begin(), neighbour_node->merged_neighbours.end()); - node.is_merged = true; to_delete.insert(neighbour_node); } } @@ -2615,7 +2626,6 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod SupportNode * next_node = new SupportNode(p_node->position, p_node->distance_to_top + 1, layer_nr_next, p_node->support_roof_layers_below - 1, to_buildplate, p_node, print_z_next, height_next); next_node->max_move_dist = 0; - next_node->is_merged = false; contact_nodes[layer_nr_next].emplace_back(next_node); continue; } @@ -2633,9 +2643,6 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod unsupported_branch_leaves.push_front({ layer_nr, p_node }); } else { - SupportNode* pn = p_node; - for (int i = 0; i <= bottom_interface_layers && pn; i++, pn = pn->parent) - pn->support_floor_layers_above = bottom_interface_layers - i + 1; // +1 so the parent node has support_floor_layers_above=2 to_delete.insert(p_node); } continue; @@ -2643,9 +2650,6 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod // if the link between parent and current is cut by contours, mark current as bottom contact node if (p_node->parent && intersection_ln({p_node->position, p_node->parent->position}, layer_contours).empty()==false) { - SupportNode* pn = p_node->parent; - for (int i = 0; i <= bottom_interface_layers && pn; i++, pn = pn->parent) - pn->support_floor_layers_above = bottom_interface_layers - i + 1; to_delete.insert(p_node); continue; } @@ -2703,7 +2707,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod branch_radius_temp = branch_radius_node; } #endif - auto avoid_layer = m_ts_data->get_avoidance(branch_radius_node, layer_nr_next); + auto avoid_layer = get_avoidance(branch_radius_node, layer_nr_next); Point to_outside = projection_onto(avoid_layer, node.position); Point direction_to_outer = to_outside - node.position; @@ -2755,27 +2759,26 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod } } - const bool to_buildplate = !is_inside_ex(m_ts_data->m_layer_outlines[layer_nr], next_layer_vertex);// !is_inside_ex(m_ts_data->get_avoidance(m_ts_data->m_xy_distance, layer_nr - 1), next_layer_vertex); + const bool to_buildplate = !is_inside_ex(m_ts_data->m_layer_outlines[layer_nr], next_layer_vertex); SupportNode * next_node = new SupportNode(next_layer_vertex, node.distance_to_top + 1, layer_nr_next, node.support_roof_layers_below - 1, to_buildplate, p_node, print_z_next, height_next); next_node->movement = movement; get_max_move_dist(next_node); - next_node->is_merged = false; contact_nodes[layer_nr_next].push_back(next_node); } } #ifdef SUPPORT_TREE_DEBUG_TO_SVG if (contact_nodes[layer_nr].empty() == false) { - draw_contours_and_nodes_to_svg((boost::format("%.2f") % contact_nodes[layer_nr][0]->print_z).str(), m_ts_data->get_avoidance(0, layer_nr), - m_ts_data->get_avoidance(branch_radius_temp, layer_nr), + draw_contours_and_nodes_to_svg((boost::format("%.2f") % contact_nodes[layer_nr][0]->print_z).str(), get_avoidance(0, layer_nr), + get_avoidance(branch_radius_temp, layer_nr), m_ts_data->m_layer_outlines_below[layer_nr], contact_nodes[layer_nr], contact_nodes[layer_nr_next], "contact_points", { "overhang","avoid","outline" }, { "blue","red","yellow" }); BOOST_LOG_TRIVIAL(debug) << "drop_nodes layer " << layer_nr << ", print_z=" << ts_layer->print_z; for (size_t i = 0; i < std::min(size_t(5), contact_nodes[layer_nr].size()); i++) { auto &node = contact_nodes[layer_nr][i]; - BOOST_LOG_TRIVIAL(debug) << "\t node " << i << ", pos=" << node->position << ", move = " << node->movement << ", is_merged=" << node->is_merged; + BOOST_LOG_TRIVIAL(debug) << "\t node " << i << ", pos=" << node->position << ", move = " << node->movement; } } #endif @@ -2792,10 +2795,13 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod if (to_erase != contact_nodes[i_layer].end()) { // update the parent-child chain - if(i_node->parent) - i_node->parent->child = i_node->child; - if(i_node->child) - i_node->child->parent = i_node->parent; + for (SupportNode* parent : i_node->parents) { + if (parent->child==i_node) + parent->child = i_node->child; + } + if (i_node->child) { + i_node->child->parents= i_node->parents; + } contact_nodes[i_layer].erase(to_erase); to_free_node_set.insert(i_node); @@ -2824,47 +2830,66 @@ void TreeSupport::smooth_nodes(std::vector> &contact_ if (curr_layer_nodes.empty()) continue; for (SupportNode *node : curr_layer_nodes) { node->is_processed = false; - if (layer_nr == 0) node->is_merged = true; // nodes on plate are also merged nodes } } - + + float max_move = scale_(m_object_config->support_line_width / 2); for (int layer_nr = 0; layer_nr< contact_nodes.size(); layer_nr++) { std::vector &curr_layer_nodes = contact_nodes[layer_nr]; if (curr_layer_nodes.empty()) continue; for (SupportNode *node : curr_layer_nodes) { if (!node->is_processed) { std::vector pts; + std::vector radii; std::vector branch; SupportNode * p_node = node; - // add a fixed head - if (node->child) { + // add a fixed head if it's not a polygon node, see STUDIO-4403 + // Polygon node can't be added because the move distance might be huge, making the nodes in between jump and dangling + if (node->child && node->child->type!=ePolygon) { pts.push_back(p_node->child->position); + radii.push_back(p_node->child->radius); branch.push_back(p_node->child); } do { pts.push_back(p_node->position); + radii.push_back(p_node->radius); branch.push_back(p_node); p_node = p_node->parent; } while (p_node && !p_node->is_processed); if (pts.size() < 3) continue; std::vector pts1 = pts; + std::vector radii1 = radii; // TODO here we assume layer height gap is constant. If not true, need to consider height jump const int iterations = 100; for (size_t k = 0; k < iterations; k++) { for (size_t i = 1; i < pts.size() - 1; i++) { size_t i2 = i >= 2 ? i - 2 : 0; size_t i3 = i < pts.size() - 2 ? i + 2 : pts.size() - 1; - Point pt = (pts[i2] + pts[i - 1] + pts[i] + pts[i + 1] + pts[i3]) / 5; + Point pt = ( pts[i - 1] + pts[i] + pts[i + 1] ) / 3; pts1[i] = pt; + radii1[i] = (radii[i - 1] + radii[i] + radii[i + 1] ) / 3; if (k == iterations - 1) { branch[i]->position = pt; + branch[i]->radius = radii1[i]; branch[i]->movement = (pts[i + 1] - pts[i - 1]) / 2; branch[i]->is_processed = true; + if (branch[i]->parents.size()>1 || (branch[i]->movement.x() > max_move || branch[i]->movement.y() > max_move)) + branch[i]->need_extra_wall = true; + BOOST_LOG_TRIVIAL(info) << "smooth_nodes: layer_nr=" << layer_nr << ", i=" << i << ", pt=" << pt << ", movement=" << branch[i]->movement << ", radius=" << branch[i]->radius; } } - if (k < iterations - 1) + if (k < iterations - 1) { std::swap(pts, pts1); + std::swap(radii, radii1); + } + else { + // interpolate need_extra_wall in the end + for (size_t i = 1; i < branch.size() - 1; i++) { + if (branch[i - 1]->need_extra_wall && branch[i + 1]->need_extra_wall) + branch[i]->need_extra_wall = true; + } + } } } } @@ -2905,116 +2930,22 @@ void TreeSupport::smooth_nodes(std::vector> &contact_ #endif } -void TreeSupport::adjust_layer_heights(std::vector>& contact_nodes) -{ - if (contact_nodes.empty()) - return; - - const PrintConfig& print_config = m_object->print()->config(); - const PrintObjectConfig& config = m_object->config(); - // don't merge layers for Vine support, or the branches will be unsmooth - // TODO can we merge layers in a way that guaranttees smoothness? - if (!print_config.independent_support_layer_height || is_slim) { - for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { - std::vector& curr_layer_nodes = contact_nodes[layer_nr]; - for (SupportNode* node : curr_layer_nodes) { - node->print_z = m_object->get_layer(layer_nr)->print_z; - node->height = m_object->get_layer(layer_nr)->height; - } - } - return; - } - - // extreme layer_id - std::vector extremes; - const coordf_t layer_height = config.layer_height.value; - const coordf_t max_layer_height = m_slicing_params.max_layer_height; - const size_t bot_intf_layers = config.support_interface_bottom_layers.value; - const size_t top_intf_layers = config.support_interface_top_layers.value; - - // if already using max layer height, no need to adjust - if (layer_height == max_layer_height) return; - - extremes.push_back(0); - for (SupportNode* node : contact_nodes[0]) { - node->print_z = m_object->get_layer(0)->print_z; - node->height = m_object->get_layer(0)->height; - } - - for (int layer_nr = 1; layer_nr < contact_nodes.size(); layer_nr++) { - std::vector& curr_layer_nodes = contact_nodes[layer_nr]; - for (SupportNode* node : curr_layer_nodes) { - if (node->support_roof_layers_below >0 || node->support_floor_layers_above == bot_intf_layers) { - extremes.push_back(layer_nr); - break; - } - } - - if (extremes.back() == layer_nr) { - // contact layer use the same print_z and layer height with object layer - for (SupportNode* node : curr_layer_nodes) { - node->print_z = m_object->get_layer(layer_nr)->print_z; - node->height = m_object->get_layer(layer_nr)->height; - } - } - } - - // schedule new layer heights and print_z - for (size_t idx_extreme = 0; idx_extreme < extremes.size(); idx_extreme++) { - int extr2_layer_nr = extremes[idx_extreme]; - coordf_t extr2z = m_object->get_layer(extr2_layer_nr)->bottom_z(); - int extr1_layer_nr = idx_extreme == 0 ? -1 : extremes[idx_extreme - 1]; - coordf_t extr1z = idx_extreme == 0 ? 0.f : m_object->get_layer(extr1_layer_nr)->print_z; - coordf_t dist = extr2z - extr1z; - - // Insert intermediate layers. - size_t n_layers_extra = size_t(ceil(dist / m_slicing_params.max_suport_layer_height)); - if (n_layers_extra <= 1) - continue; - - coordf_t step = dist / coordf_t(n_layers_extra); - coordf_t print_z = extr1z + step; - assert(step >= layer_height - EPSILON); - for (int layer_nr = extr1_layer_nr + 1; layer_nr < extr2_layer_nr; layer_nr++) { - std::vector& curr_layer_nodes = contact_nodes[layer_nr]; - if (curr_layer_nodes.empty()) continue; - - if (std::abs(print_z - curr_layer_nodes[0]->print_z) < step / 2 + EPSILON) { - for (SupportNode* node : curr_layer_nodes) { - node->print_z = print_z; - node->height = step; - } - print_z += step; - } - else { - // can't clear curr_layer_nodes, or the model will have empty layers - for (SupportNode* node : curr_layer_nodes) { - node->print_z = 0.0; - node->height = 0.0; - } - } - } - } -} - std::vector TreeSupport::plan_layer_heights(std::vector> &contact_nodes) { - const PrintObjectConfig& config = m_object->config(); - const PrintConfig & print_config = m_object->print()->config(); const coordf_t max_layer_height = m_slicing_params.max_layer_height; - const coordf_t layer_height = config.layer_height.value; + const coordf_t layer_height = m_object_config->layer_height.value; coordf_t z_distance_top = m_slicing_params.gap_support_object; // BBS: add extra distance if thick bridge is enabled // Note: normal support uses print_z, but tree support uses integer layers, so we need to subtract layer_height if (!m_slicing_params.soluble_interface && m_object_config->thick_bridges) { - z_distance_top += m_object->layers()[0]->regions()[0]->region().bridging_height_avg(m_object->print()->config()) - layer_height; + z_distance_top += m_object->layers()[0]->regions()[0]->region().bridging_height_avg(*m_print_config) - layer_height; } - const size_t support_roof_layers = config.support_interface_top_layers.value; + const size_t support_roof_layers = m_object_config->support_interface_top_layers.value; const int z_distance_top_layers = round_up_divide(scale_(z_distance_top), scale_(layer_height)) + 1; std::vector layer_heights(contact_nodes.size()); std::vector bounds; - if (!config.tree_support_adaptive_layer_height || layer_height == max_layer_height || !print_config.independent_support_layer_height) { + if (!m_object_config->tree_support_adaptive_layer_height || layer_height == max_layer_height || !m_support_params.independent_layer_height) { for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { layer_heights[layer_nr] = {m_object->get_layer(layer_nr)->print_z, m_object->get_layer(layer_nr)->height, layer_nr > 0 ? size_t(layer_nr - 1) : 0}; } @@ -3096,7 +3027,7 @@ std::vector TreeSupport::plan_layer_heights(std::vector>& contact_nodes) +void TreeSupport::generate_contact_points(std::vector>& contact_nodes, const std::vector& move_bounds) { const PrintObjectConfig &config = m_object->config(); const coordf_t point_spread = scale_(config.tree_support_branch_distance.value); @@ -3144,7 +3075,6 @@ void TreeSupport::generate_contact_points(std::vector> if (m_object->layers().size() <= z_distance_top_layers + 1) return; - m_highest_overhang_layer = 0; int nonempty_layers = 0; std::vector all_nodes; for (size_t layer_nr = 1; layer_nr < m_object->layers().size(); layer_nr++) @@ -3157,7 +3087,7 @@ void TreeSupport::generate_contact_points(std::vector> if (overhang.empty()) continue; - m_highest_overhang_layer = std::max(m_highest_overhang_layer, layer_nr); + std::unordered_set already_inserted; auto print_z = m_object->get_layer(layer_nr)->print_z; auto height = m_object->get_layer(layer_nr)->height; @@ -3172,92 +3102,90 @@ void TreeSupport::generate_contact_points(std::vector> SupportNode* contact_node = new SupportNode(candidate, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, true, SupportNode::NO_PARENT, print_z, height, z_distance_top); contact_node->type = ePolygon; - contact_node->overhang = &overhang_part; + contact_node->overhang = overhang_part; curr_nodes.emplace_back(contact_node); continue; } } - overhang_bounds.inflated(half_overhang_distance); - bool added = false; //Did we add a point this way? - for (Point candidate : grid_points) - { - if (overhang_bounds.contains(candidate)) - { - // BBS: move_inside_expoly shouldn't be used if candidate is already inside, as it moves point to boundary and the inside is not well supported! - bool is_inside = is_inside_ex(overhang_part, candidate); - if (!is_inside) { - constexpr coordf_t distance_inside = 0; // Move point towards the border of the polygon if it is closer than half the overhang distance: Catch points that - // fall between overhang areas on constant surfaces. - move_inside_expoly(overhang_part, candidate, distance_inside, half_overhang_distance); - is_inside = is_inside_ex(overhang_part, candidate); - } - if (is_inside) - { - // collision radius has to be 0 or the supports are too few at curved slopes - //if (!is_inside_ex(m_ts_data->get_collision(0, layer_nr), candidate)) - { - constexpr bool to_buildplate = true; - SupportNode * contact_node = new SupportNode(candidate, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, to_buildplate, - SupportNode::NO_PARENT, print_z, height, z_distance_top); - contact_node->overhang = &overhang_part; - curr_nodes.emplace_back(contact_node); - added = true; - } - } - } - } - - if (!added) //If we didn't add any points due to bad luck, we want to add one anyway such that loose parts are also supported. - { - auto bbox = overhang_part.contour.bounding_box(); - Points candidates; - if (ts_layer->overhang_types[&overhang_part] == SupportLayer::Detected) - candidates = {bbox.min, bounding_box_middle(bbox), bbox.max}; - else - candidates = {bounding_box_middle(bbox)}; - - for (Point candidate : candidates) { - if (!overhang_part.contains(candidate)) - move_inside_expoly(overhang_part, candidate); - constexpr bool to_buildplate = true; - SupportNode *contact_node = new SupportNode(candidate, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, to_buildplate, SupportNode::NO_PARENT, - print_z, height, z_distance_top); - contact_node->overhang = &overhang_part; - curr_nodes.emplace_back(contact_node); - } - } // add supports at corners for both auto and manual overhangs, github #2008 if (/*ts_layer->overhang_types[&overhang_part] == SupportLayer::Detected*/1) { // add points at corners - auto &points = overhang_part.contour.points; + auto& points = overhang_part.contour.points; int nSize = points.size(); for (int i = 0; i < nSize; i++) { auto pt = points[i]; auto v1 = (pt - points[(i - 1 + nSize) % nSize]).cast().normalized(); auto v2 = (pt - points[(i + 1) % nSize]).cast().normalized(); if (v1.dot(v2) > -0.7) { // angle smaller than 135 degrees - SupportNode *contact_node = new SupportNode(pt, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, true, SupportNode::NO_PARENT, print_z, - height, z_distance_top); - contact_node->overhang = &overhang_part; + SupportNode* contact_node = new SupportNode(pt, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, true, SupportNode::NO_PARENT, print_z, + height, z_distance_top); + contact_node->overhang = overhang_part; contact_node->is_corner = true; curr_nodes.emplace_back(contact_node); + + Point hash_pos = pt / ((m_min_radius + 1) / 1); + already_inserted.emplace(hash_pos); + } + } + } + auto& move_bounds_layer = move_bounds[layer_nr]; + if (move_bounds_layer.empty()) { + overhang_bounds.inflated(half_overhang_distance); + bool added = false; //Did we add a point this way? + for (Point candidate : grid_points) { + if (overhang_bounds.contains(candidate)) { + // BBS: move_inside_expoly shouldn't be used if candidate is already inside, as it moves point to boundary and the inside is not well supported! + bool is_inside = is_inside_ex(overhang_part, candidate); + if (!is_inside) { + constexpr coordf_t distance_inside = 0; // Move point towards the border of the polygon if it is closer than half the overhang distance: Catch points that + // fall between overhang areas on constant surfaces. + is_inside = move_inside_expoly(overhang_part, candidate, distance_inside, half_overhang_distance); + } + if (is_inside) { + // normalize the point a bit to also catch points which are so close that inserting it would achieve nothing + Point hash_pos = candidate / ((m_min_radius + 1) / 1); + if (!already_inserted.count(hash_pos)) { + already_inserted.emplace(hash_pos); + constexpr bool to_buildplate = true; + SupportNode* contact_node = new SupportNode(candidate, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, to_buildplate, + SupportNode::NO_PARENT, print_z, height, z_distance_top); + contact_node->overhang=overhang_part; + curr_nodes.emplace_back(contact_node); + added = true; + } + } + } + } + if (!added) //If we didn't add any points due to bad luck, we want to add one anyway such that loose parts are also supported. + { + auto bbox = overhang_part.contour.bounding_box(); + Points candidates; + if (ts_layer->overhang_types[&overhang_part] == SupportLayer::Detected) + candidates = { bbox.min, bounding_box_middle(bbox), bbox.max }; + else + candidates = { bounding_box_middle(bbox) }; + for (Point candidate : candidates) { + if (!overhang_part.contains(candidate)) + move_inside_expoly(overhang_part, candidate); + constexpr bool to_buildplate = true; + SupportNode* contact_node = new SupportNode(candidate, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, to_buildplate, SupportNode::NO_PARENT, + print_z, height, z_distance_top); + contact_node->overhang=overhang_part; + curr_nodes.emplace_back(contact_node); } } - } - if(ts_layer->overhang_types[&overhang_part] == SupportLayer::Enforced || is_slim){ - // remove close points in Enforcers - // auto above_nodes = contact_nodes[layer_nr - 1]; - if (!curr_nodes.empty() /*&& !above_nodes.empty()*/) { + if (ts_layer->overhang_types[&overhang_part] == SupportLayer::Enforced || is_slim) { + // remove close points for (auto it = curr_nodes.begin(); it != curr_nodes.end();) { bool is_duplicate = false; if (!(*it)->is_corner) { Slic3r::Vec3f curr_pt((*it)->position(0), (*it)->position(1), scale_((*it)->print_z)); - for (auto &pt : all_nodes) { + for (auto& pt : all_nodes) { auto dif = curr_pt - pt; if (dif.norm() < point_spread / 2) { delete (*it); - it = curr_nodes.erase(it); + it = curr_nodes.erase(it); is_duplicate = true; break; } @@ -3267,6 +3195,14 @@ void TreeSupport::generate_contact_points(std::vector> } } } + else { + for (auto& elem:move_bounds_layer) { + SupportNode* contact_node = new SupportNode(elem.state.result_on_layer, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, elem.state.to_buildplate, + SupportNode::NO_PARENT, print_z, height, z_distance_top); + contact_node->overhang = ExPolygon(elem.influence_area.front()); + curr_nodes.emplace_back(contact_node); + } + } } if (!curr_nodes.empty()) nonempty_layers++; for (auto node : curr_nodes) { all_nodes.emplace_back(node->position(0), node->position(1), scale_(node->print_z)); } @@ -3395,6 +3331,7 @@ const ExPolygons& TreeSupportData::calculate_collision(const RadiusLayerPair& ke assert(key.layer_nr < m_layer_outlines.size()); ExPolygons collision_areas = offset_ex(m_layer_outlines[key.layer_nr], scale_(key.radius)); + collision_areas = expolygons_simplify(collision_areas, scale_(m_radius_sample_resolution)); const auto ret = m_collision_cache.insert({ key, std::move(collision_areas) }); return ret.first->second; } @@ -3434,7 +3371,7 @@ const ExPolygons& TreeSupportData::calculate_avoidance(const RadiusLayerPair& ke //assert(ret.second); return ret.first->second; } else { - ExPolygons avoidance_areas = offset_ex(m_layer_outlines_below[layer_nr], scale_(m_xy_distance + radius)); + ExPolygons avoidance_areas = get_collision(radius, layer_nr);// std::move(offset_ex(m_layer_outlines_below[layer_nr], scale_(m_xy_distance + radius))); auto ret = m_avoidance_cache.insert({ key, std::move(avoidance_areas) }); assert(ret.second); return ret.first->second; diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index 8a19acc485..e371a5e6bc 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -11,6 +11,7 @@ #include "Flow.hpp" #include "PrintConfig.hpp" #include "Fill/Lightning/Generator.hpp" +#include "TreeModelVolumes.hpp" #include "TreeSupport3D.hpp" #ifndef SQ @@ -60,7 +61,6 @@ struct SupportNode , position(Point(0, 0)) , obj_layer_nr(0) , support_roof_layers_below(0) - , support_floor_layers_above(0) , to_buildplate(true) , parent(nullptr) , print_z(0.0) @@ -74,7 +74,6 @@ struct SupportNode , position(position) , obj_layer_nr(obj_layer_nr) , support_roof_layers_below(support_roof_layers_below) - , support_floor_layers_above(0) , to_buildplate(to_buildplate) , parent(parent) , print_z(print_z_) @@ -82,13 +81,16 @@ struct SupportNode , dist_mm_to_top(dist_mm_to_top_) { if (parent) { + parents.push_back(parent); type = parent->type; overhang = parent->overhang; if (dist_mm_to_top==0) dist_mm_to_top = parent->dist_mm_to_top + parent->height; parent->child = this; - for (auto& neighbor : parent->merged_neighbours) + for (auto& neighbor : parent->merged_neighbours) { neighbor->child = this; + parents.push_back(neighbor); + } } } @@ -115,10 +117,10 @@ struct SupportNode mutable double radius = 0.0; mutable double max_move_dist = 0.0; TreeNodeType type = eCircle; - bool is_merged = false; // this node is generated by merging upper nodes bool is_corner = false; bool is_processed = false; - const ExPolygon *overhang = nullptr; // when type==ePolygon, set this value to get original overhang area + bool need_extra_wall = false; + ExPolygon overhang; // when type==ePolygon, set this value to get original overhang area /*! * \brief The direction of the skin lines above the tip of the branch. @@ -137,7 +139,6 @@ struct SupportNode * how far we need to extend that support roof downwards. */ int support_roof_layers_below; - int support_floor_layers_above; int obj_layer_nr; /*! @@ -157,6 +158,7 @@ struct SupportNode * the entire branch needs to be known. */ SupportNode* parent; + std::vector parents; SupportNode* child = nullptr; /*! @@ -391,6 +393,8 @@ private: * \warning This class is NOT currently thread-safe and should not be accessed in OpenMP blocks */ std::shared_ptr m_ts_data; + + std::unique_ptr m_model_volumes; PrintObject *m_object; const PrintObjectConfig *m_object_config; SlicingParameters m_slicing_params; @@ -400,10 +404,12 @@ private: size_t m_highest_overhang_layer = 0; std::vector> m_spanning_trees; std::vector< std::unordered_map> m_mst_line_x_layer_contour_caches; + float DO_NOT_MOVER_UNDER_MM = 0.0; coordf_t MAX_BRANCH_RADIUS = 10.0; coordf_t MAX_BRANCH_RADIUS_FIRST_LAYER = 12.0; coordf_t MIN_BRANCH_RADIUS = 0.5; float tree_support_branch_diameter_angle = 5.0; + coord_t m_min_radius = scale_(1); // in mm bool is_strong = false; bool is_slim = false; bool with_infill = false; @@ -438,8 +444,6 @@ private: void smooth_nodes(std::vector>& contact_nodes); - void adjust_layer_heights(std::vector>& contact_nodes); - /*! BBS: MusangKing: maximum layer height * \brief Optimize the generation of tree support by pre-planning the layer_heights * @@ -459,7 +463,7 @@ private: * \return For each layer, a list of points where the tree should connect * with the model. */ - void generate_contact_points(std::vector>& contact_nodes); + void generate_contact_points(std::vector>& contact_nodes, const std::vector& move_bounds); /*! * \brief Add a node to the next layer. @@ -470,7 +474,11 @@ private: void create_tree_support_layers(); void generate_toolpaths(); coordf_t calc_branch_radius(coordf_t base_radius, size_t layers_to_top, size_t tip_layers, double diameter_angle_scale_factor); - coordf_t calc_branch_radius(coordf_t base_radius, coordf_t mm_to_top, double diameter_angle_scale_factor); + coordf_t calc_branch_radius(coordf_t base_radius, coordf_t mm_to_top, double diameter_angle_scale_factor, bool use_min_distance=true); + ExPolygons get_avoidance(coordf_t radius, size_t obj_layer_nr); + ExPolygons get_collision(coordf_t radius, size_t layer_nr); + // get Polygons instead of ExPolygons + Polygons get_collision_polys(coordf_t radius, size_t layer_nr); // similar to SupportMaterial::trim_support_layers_by_object Polygons get_trim_support_regions( diff --git a/src/libslic3r/Support/TreeSupport3D.hpp b/src/libslic3r/Support/TreeSupport3D.hpp index 311df504b7..ba543fbc81 100644 --- a/src/libslic3r/Support/TreeSupport3D.hpp +++ b/src/libslic3r/Support/TreeSupport3D.hpp @@ -139,6 +139,10 @@ struct SupportElementStateBits { struct SupportElementState : public SupportElementStateBits { + int type = 0; + coordf_t radius = 0; + float print_z = 0; + /*! * \brief The layer this support elements wants reach */ From 2205ad0069e116c9b6638e18f321476fb4d362de Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sun, 26 Jan 2025 23:11:53 +0800 Subject: [PATCH 007/129] FIX: improve tree support generation speed 1. Improve generation speed by removing unnecessary get_avoidance. 2. Fix a bug of hybrid support's interface (Jira: STUDIO-4878, STUDIO-4726, Github#2614) 3. Fix a bug of tree support pass through objects (Jira: STUDIO-4252, STUDIO-4608 STUDIO-4298) 4. Fix a bug with first layer + Arachne (Jira: STUDIO-4281, Github #2423) Change-Id: I40978c93ab93fa6964483514dad552d73a66c710 (cherry picked from commit 2ccbbe49c74d4aab4f086e79a6f8262b7fc80f15) (cherry picked from commit bambulab/BambuStudio@d7a4623380d524a1878a62d14da32c93d0b2fa66) Co-authored-by: Arthur --- src/libslic3r/Support/TreeSupport.cpp | 86 +++++++++++++-------------- src/libslic3r/Support/TreeSupport.hpp | 2 + 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 376589321e..262c2d2c06 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -31,7 +31,7 @@ #define NO_INDEX (std::numeric_limits::max()) #define USE_SUPPORT_3D 0 -// #define SUPPORT_TREE_DEBUG_TO_SVG +//#define SUPPORT_TREE_DEBUG_TO_SVG #ifdef SUPPORT_TREE_DEBUG_TO_SVG #include "nlohmann/json.hpp" @@ -1533,29 +1533,29 @@ void TreeSupport::generate_toolpaths() filler_support->set_bounding_box(bbox_object); filler_support->spacing = object_config.support_base_pattern_spacing.value * support_density;// constant spacing to align support infill lines filler_support->angle = Geometry::deg2rad(object_config.support_angle.value); - if (need_infill && m_support_params.base_fill_pattern != ipLightning) { - // allow infill-only mode if support is thick enough (so min_wall_count is 0); - // otherwise must draw 1 wall - size_t min_wall_count = offset(poly, -scale_(support_spacing * 1.5)).empty() ? 1 : 0; - make_perimeter_and_infill(ts_layer->support_fills.entities, *m_object->print(), poly, std::max(min_wall_count, walls), flow, - erSupportMaterial, filler_support.get(), support_density); + + Polygons loops = to_polygons(poly); + if (layer_id == 0) { + float density = float(m_object_config->raft_first_layer_density.value * 0.01); + fill_expolygons_with_sheath_generate_paths(ts_layer->support_fills.entities, loops, filler_support.get(), density, erSupportMaterial, flow, + m_support_params, true, false); } else { - Polygons loops; - loops.emplace_back(poly.contour); - if (layer_id == 0) { - float density = float(m_object_config->raft_first_layer_density.value * 0.01); - fill_expolygons_with_sheath_generate_paths(ts_layer->support_fills.entities, loops, filler_support.get(), density, erSupportMaterial, flow, m_support_params, true, false); + if (need_infill && m_support_params.base_fill_pattern != ipLightning) { + // allow infill-only mode if support is thick enough (so min_wall_count is 0); + // otherwise must draw 1 wall + size_t min_wall_count = offset(poly, -scale_(support_spacing * 1.5)).empty() ? 1 : 0; + make_perimeter_and_infill(ts_layer->support_fills.entities, *m_object->print(), poly, std::max(min_wall_count, walls), flow, + erSupportMaterial, filler_support.get(), support_density); } else { for (size_t i = 1; i < walls; i++) { - Polygons contour_new = offset(poly.contour, -(i-0.5f) * flow.scaled_spacing(), jtSquare); + Polygons contour_new = offset(poly.contour, -(i - 0.5f) * flow.scaled_spacing(), jtSquare); loops.insert(loops.end(), contour_new.begin(), contour_new.end()); } fill_expolygons_with_sheath_generate_paths(ts_layer->support_fills.entities, loops, nullptr, 0, erSupportMaterial, flow, m_support_params, true, false); } } - } } if (m_support_params.base_fill_pattern == ipLightning) @@ -1730,7 +1730,7 @@ ExPolygons TreeSupport::get_avoidance(coordf_t radius, size_t obj_layer_nr) #if USE_SUPPORT_3D if (m_model_volumes) { bool on_build_plate = m_object_config->support_on_build_plate_only.value; - const Polygons& avoid_polys = m_model_volumes->getAvoidance(radius, obj_layer_nr, TreeSupport3D::TreeModelVolumes::AvoidanceType::Fast, on_build_plate, true); + const Polygons& avoid_polys = m_model_volumes->getAvoidance(radius, obj_layer_nr, TreeSupport3D::TreeModelVolumes::AvoidanceType::FastSafe, on_build_plate, true); ExPolygons expolys; for (auto& poly : avoid_polys) expolys.emplace_back(std::move(poly)); @@ -1769,7 +1769,8 @@ Polygons TreeSupport::get_collision_polys(coordf_t radius, size_t layer_nr) ExPolygons expolys = m_ts_data->get_collision(radius, layer_nr); Polygons polys; for (auto& expoly : expolys) - polys.emplace_back(std::move(expoly.contour)); + for (int i = 0; i < expoly.num_contours(); i++) + polys.emplace_back(std::move(expoly.contour_or_hole(i))); return polys; #endif return Polygons(); @@ -1987,12 +1988,13 @@ void TreeSupport::draw_circles(const std::vector>& con } else { Polygon circle; - size_t layers_to_top = node.distance_to_top; - double scale = calc_branch_radius(branch_radius, node.dist_mm_to_top, diameter_angle_scale_factor, false) / branch_radius; + double scale = calc_branch_radius(branch_radius, node.dist_mm_to_top, diameter_angle_scale_factor) / branch_radius; - if (/*is_slim*/1) { // draw ellipse along movement direction - double moveX = node.movement.x() / (scale * branch_radius_scaled); - double moveY = node.movement.y() / (scale * branch_radius_scaled); + double moveX = node.movement.x() / (scale * branch_radius_scaled); + double moveY = node.movement.y() / (scale * branch_radius_scaled); + //BOOST_LOG_TRIVIAL(debug) << format("scale,moveX,moveY: %.3f,%.3f,%.3f", scale, moveX, moveY); + + if (!SQUARE_SUPPORT && std::abs(moveX)>0.001 && std::abs(moveY)>0.001) { // draw ellipse along movement direction const double vsize_inv = 0.5 / (0.01 + std::sqrt(moveX * moveX + moveY * moveY)); double matrix[2*2] = { scale * (1 + moveX * moveX * vsize_inv),scale * (0 + moveX * moveY * vsize_inv), @@ -2011,7 +2013,7 @@ void TreeSupport::draw_circles(const std::vector>& con if (layer_nr == 0 && m_raft_layers == 0) { double brim_width = config.tree_support_auto_brim - ? layers_to_top * layer_height / + ? node.dist_mm_to_top / (scale * branch_radius) * 0.5 : config.tree_support_brim_width; auto tmp=offset(circle, scale_(brim_width)); @@ -2091,8 +2093,8 @@ void TreeSupport::draw_circles(const std::vector>& con // let supports touch objects when brim is on auto avoid_region = get_collision_polys((layer_nr == 0 && has_brim) ? config.brim_object_gap : m_ts_data->m_xy_distance, layer_nr); - //base_areas = avoid_object_remove_extra_small_parts(base_areas, avoid_region); - base_areas = diff_clipped(base_areas, avoid_region); + base_areas = avoid_object_remove_extra_small_parts(base_areas, avoid_region); + //base_areas = diff_clipped(base_areas, avoid_region); ExPolygons roofs; append(roofs, roof_1st_layer); append(roofs, roof_areas);append(roofs, roof_gap_areas); base_areas = diff_ex(base_areas, ClipperUtils::clip_clipper_polygons_with_subject_bbox(roofs, get_extents(base_areas))); base_areas = intersection_ex(base_areas, m_machine_border); @@ -2452,7 +2454,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod }; //Group together all nodes for each part. - const ExPolygons& parts = m_ts_data->get_avoidance(0, layer_nr); + const ExPolygons& parts = m_ts_data->m_layer_outlines_below[layer_nr];// m_ts_data->get_avoidance(0, layer_nr); std::vector> nodes_per_part(1 + parts.size()); //All nodes that aren't inside a part get grouped together in the 0th part. for (SupportNode* p_node : layer_contact_nodes) { @@ -2537,9 +2539,10 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod } const std::vector& neighbours = mst.adjacent_nodes(node.position); if (node.type == ePolygon) { - // Remove all neighbours that are completely inside the polygon and merge them into this node. + // Remove all circle neighbours that are completely inside the polygon and merge them into this node. for (const Point &neighbour : neighbours) { SupportNode * neighbour_node = nodes_per_part[group_index][neighbour]; + if (neighbour_node->type == ePolygon) continue; coord_t neighbour_radius = scale_(calc_branch_radius(branch_radius, neighbour_node->dist_mm_to_top, diameter_angle_scale_factor)); Point pt_north = neighbour + Point(0, neighbour_radius), pt_south = neighbour - Point(0, neighbour_radius), pt_west = neighbour - Point(neighbour_radius, 0), pt_east = neighbour + Point(neighbour_radius, 0); @@ -2631,10 +2634,10 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod } //If the branch falls completely inside a collision area (the entire branch would be removed by the X/Y offset), delete it. - if (group_index > 0 && is_inside_ex(m_ts_data->get_collision(m_ts_data->m_xy_distance, layer_nr), node.position)) + if (group_index > 0 && is_inside_ex(get_collision(m_ts_data->m_xy_distance, layer_nr), node.position)) { const coordf_t branch_radius_node = calc_branch_radius(branch_radius, node.dist_mm_to_top, diameter_angle_scale_factor); - Point to_outside = projection_onto(m_ts_data->get_collision(m_ts_data->m_xy_distance, layer_nr), node.position); + Point to_outside = projection_onto(get_collision(m_ts_data->m_xy_distance, layer_nr), node.position); double dist2_to_outside = vsize2_with_unscale(node.position - to_outside); if (dist2_to_outside >= branch_radius_node * branch_radius_node) //Too far inside. { @@ -2707,20 +2710,21 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod branch_radius_temp = branch_radius_node; } #endif - auto avoid_layer = get_avoidance(branch_radius_node, layer_nr_next); + auto avoidance_next = get_avoidance(branch_radius_node, layer_nr_next); - Point to_outside = projection_onto(avoid_layer, node.position); + Point to_outside = projection_onto(avoidance_next, node.position); Point direction_to_outer = to_outside - node.position; double dist2_to_outer = vsize2_with_unscale(direction_to_outer); // don't move if // 1) line of node and to_outside is cut by contour (means supports may intersect with object) // 2) it's impossible to move to build plate if (is_line_cut_by_contour(node.position, to_outside) || dist2_to_outer > max_move_distance2 * SQ(layer_nr) || - !is_inside_ex(avoid_layer, node.position)) { + !is_inside_ex(avoidance_next, node.position)) { // try move to outside of lower layer instead Point candidate_vertex = node.position; const coordf_t max_move_between_samples = max_move_distance + radius_sample_resolution + EPSILON; // 100 micron extra for rounding errors. - bool is_outside = move_out_expolys(avoid_layer, candidate_vertex, max_move_between_samples, max_move_between_samples); + // use get_collision instead of get_avoidance here (See STUDIO-4252) + bool is_outside = move_out_expolys(get_collision(branch_radius_node,layer_nr_next), candidate_vertex, max_move_between_samples, max_move_between_samples); if (is_outside) { direction_to_outer = candidate_vertex - node.position; dist2_to_outer = vsize2_with_unscale(direction_to_outer); @@ -2743,18 +2747,15 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod if (vsize2_with_unscale(movement) > get_max_move_dist(&node,2)) movement = normal(movement, scale_(get_max_move_dist(&node))); - // add momentum to force smooth movement - //movement = movement * 0.5 + p_node->movement * 0.5; - next_layer_vertex += movement; if (group_index == 0) { // Avoid collisions. const coordf_t max_move_between_samples = get_max_move_dist(&node, 1) + radius_sample_resolution + EPSILON; // 100 micron extra for rounding errors. - bool is_outside = move_out_expolys(avoid_layer, next_layer_vertex, radius_sample_resolution + EPSILON, max_move_between_samples); + bool is_outside = move_out_expolys(avoidance_next, next_layer_vertex, radius_sample_resolution + EPSILON, max_move_between_samples); if (!is_outside) { Point candidate_vertex = node.position; - is_outside = move_out_expolys(avoid_layer, candidate_vertex, radius_sample_resolution + EPSILON, max_move_between_samples); + is_outside = move_out_expolys(avoidance_next, candidate_vertex, radius_sample_resolution + EPSILON, max_move_between_samples); if (is_outside) { next_layer_vertex = candidate_vertex; } } } @@ -2770,9 +2771,9 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod #ifdef SUPPORT_TREE_DEBUG_TO_SVG if (contact_nodes[layer_nr].empty() == false) { - draw_contours_and_nodes_to_svg((boost::format("%.2f") % contact_nodes[layer_nr][0]->print_z).str(), get_avoidance(0, layer_nr), + draw_contours_and_nodes_to_svg((boost::format("%.2f") % contact_nodes[layer_nr][0]->print_z).str(), get_collision(0,layer_nr_next), get_avoidance(branch_radius_temp, layer_nr), - m_ts_data->m_layer_outlines_below[layer_nr], + m_ts_data->m_layer_outlines[layer_nr], contact_nodes[layer_nr], contact_nodes[layer_nr_next], "contact_points", { "overhang","avoid","outline" }, { "blue","red","yellow" }); BOOST_LOG_TRIVIAL(debug) << "drop_nodes layer " << layer_nr << ", print_z=" << ts_layer->print_z; @@ -3103,6 +3104,7 @@ void TreeSupport::generate_contact_points(std::vector> height, z_distance_top); contact_node->type = ePolygon; contact_node->overhang = overhang_part; + contact_node->radius = unscale_(overhang_bounds.radius()); curr_nodes.emplace_back(contact_node); continue; } @@ -3311,7 +3313,6 @@ Polygons TreeSupportData::get_contours_with_holes(size_t layer_nr) const coordf_t TreeSupportData::ceil_radius(coordf_t radius) const { -#if 1 size_t factor = (size_t)(radius / m_radius_sample_resolution); coordf_t remains = radius - m_radius_sample_resolution * factor; if (remains > EPSILON) { @@ -3320,10 +3321,6 @@ coordf_t TreeSupportData::ceil_radius(coordf_t radius) const else { return radius; } -#else - coordf_t resolution = m_radius_sample_resolution; - return ceil(radius / resolution) * resolution; -#endif } const ExPolygons& TreeSupportData::calculate_collision(const RadiusLayerPair& key) const @@ -3371,6 +3368,7 @@ const ExPolygons& TreeSupportData::calculate_avoidance(const RadiusLayerPair& ke //assert(ret.second); return ret.first->second; } else { + BOOST_LOG_TRIVIAL(debug) << "calculate_avoidance exceeds max_recursion_depth*2 on radius=" << radius << ", layer=" << layer_nr << ", recursion=" << key.recursions; ExPolygons avoidance_areas = get_collision(radius, layer_nr);// std::move(offset_ex(m_layer_outlines_below[layer_nr], scale_(m_xy_distance + radius))); auto ret = m_avoidance_cache.insert({ key, std::move(avoidance_areas) }); assert(ret.second); diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index e371a5e6bc..322ef66da8 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -473,7 +473,9 @@ private: void insert_dropped_node(std::vector& nodes_layer, SupportNode* node); void create_tree_support_layers(); void generate_toolpaths(); + // get unscaled radius of node coordf_t calc_branch_radius(coordf_t base_radius, size_t layers_to_top, size_t tip_layers, double diameter_angle_scale_factor); + // get unscaled radius(mm) of node based on the distance mm to top coordf_t calc_branch_radius(coordf_t base_radius, coordf_t mm_to_top, double diameter_angle_scale_factor, bool use_min_distance=true); ExPolygons get_avoidance(coordf_t radius, size_t obj_layer_nr); ExPolygons get_collision(coordf_t radius, size_t layer_nr); From 70c4961df385e9149e7a9f00fa741e92f8ed90b8 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sun, 26 Jan 2025 23:19:13 +0800 Subject: [PATCH 008/129] FIX: tree support generates floating hybrid supports Jira: STUDIO-4763 Github: #2660 Change-Id: I13d5a1443af8bc82f0cadd177e0db3fc3db971f1 (cherry picked from commit bambulab/BambuStudio@0964b5bb0aef5e3b04d634fd78d5ddc268c4501f) Co-authored-by: Arthur --- src/libslic3r/Support/TreeSupport.cpp | 38 ++++++++++++++++++--------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 262c2d2c06..c88225c91b 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1927,7 +1927,7 @@ void TreeSupport::draw_circles(const std::vector>& con // coconut: previously std::unordered_map in m_collision_cache is not multi-thread safe which may cause programs stuck, here we change to tbb::concurrent_unordered_map tbb::parallel_for( - tbb::blocked_range(0, m_object->layer_count(), m_object->layer_count()), + tbb::blocked_range(0, m_object->layer_count()), [&](const tbb::blocked_range& range) { for (size_t layer_nr = range.begin(); layer_nr < range.end(); layer_nr++) @@ -2581,8 +2581,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod node_ = p_node->parent ? p_node : neighbour; // Make sure the next pass doesn't drop down either of these (since that already happened). node_->merged_neighbours.push_front(node_ == p_node ? neighbour : p_node); - //const bool to_buildplate = !is_inside_ex(get_collision(0, layer_nr_next), next_position); - const bool to_buildplate = !is_inside_ex(m_ts_data->m_layer_outlines[layer_nr_next], next_position); + const bool to_buildplate = !is_inside_ex(get_collision(0, layer_nr_next), next_position); SupportNode * next_node = new SupportNode(next_position, node_->distance_to_top + 1, layer_nr_next, node_->support_roof_layers_below-1, to_buildplate, node_, print_z_next, height_next); next_node->movement = next_position - node.position; @@ -2625,11 +2624,26 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod } if (node.type == ePolygon) { // polygon node do not merge or move - const bool to_buildplate = !is_inside_ex(m_ts_data->m_layer_outlines[layer_nr], p_node->position); - SupportNode * next_node = new SupportNode(p_node->position, p_node->distance_to_top + 1, layer_nr_next, p_node->support_roof_layers_below - 1, to_buildplate, - p_node, print_z_next, height_next); - next_node->max_move_dist = 0; - contact_nodes[layer_nr_next].emplace_back(next_node); + const bool to_buildplate = true; + // keep only the part that won't be removed by the next layer + ExPolygons overhangs_next = diff_clipped({ node.overhang }, get_collision_polys(0, layer_nr_next)); + // find the biggest overhang if there are many + float area_biggest = -1; + int index_biggest = -1; + for (int i = 0; i < overhangs_next.size(); i++) { + float a=area(overhangs_next[i]); + if (a > area_biggest) { + area_biggest = a; + index_biggest = i; + } + } + if (index_biggest >= 0) { + SupportNode* next_node = new SupportNode(p_node->position, p_node->distance_to_top + 1, layer_nr_next, p_node->support_roof_layers_below - 1, to_buildplate, + p_node, print_z_next, height_next); + next_node->max_move_dist = 0; + next_node->overhang = std::move(overhangs_next[index_biggest]); + contact_nodes[layer_nr_next].emplace_back(next_node); + } continue; } @@ -2760,7 +2774,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod } } - const bool to_buildplate = !is_inside_ex(m_ts_data->m_layer_outlines[layer_nr], next_layer_vertex); + const bool to_buildplate = !is_inside_ex(get_collision(0, layer_nr_next), next_layer_vertex); SupportNode * next_node = new SupportNode(next_layer_vertex, node.distance_to_top + 1, layer_nr_next, node.support_roof_layers_below - 1, to_buildplate, p_node, print_z_next, height_next); next_node->movement = movement; @@ -3096,10 +3110,8 @@ void TreeSupport::generate_contact_points(std::vector> { BoundingBox overhang_bounds = get_extents(overhang_part); if (m_support_params.support_style==smsTreeHybrid && overhang_part.area() > m_support_params.thresh_big_overhang) { - Point candidate = overhang_bounds.center(); - if (!overhang_part.contains(candidate)) - move_inside_expoly(overhang_part, candidate); - if (!(config.support_on_build_plate_only && is_inside_ex(m_ts_data->m_layer_outlines_below[layer_nr], candidate))) { + if (!overlaps({ overhang_part }, m_ts_data->m_layer_outlines_below[layer_nr-1])) { + Point candidate = overhang_bounds.center(); SupportNode* contact_node = new SupportNode(candidate, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, true, SupportNode::NO_PARENT, print_z, height, z_distance_top); contact_node->type = ePolygon; From 5fb0e01943e2c049a1a22859e31aaa2d7ea03481 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Mon, 27 Jan 2025 15:32:38 +0800 Subject: [PATCH 009/129] ENH: improve auto-arranging objects with tree support We decide to set brim width of all objects to MAX_BRANCH_RADIUS_FIRST_LAYER if there is an object with tree support after discussion. Jira: MAK-2009 Change-Id: I4c4940800632c433235966b01c44ac910e33a51c (cherry picked from commit bambulab/BambuStudio@2bd6b1150565b2345d9517ea10b8f2ea621c635b) Co-authored-by: Arthur --- src/libslic3r/Support/TreeSupport.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index c88225c91b..a1e983cb67 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1920,7 +1920,7 @@ void TreeSupport::draw_circles(const std::vector>& con const bool with_lightning_infill = m_support_params.base_fill_pattern == ipLightning; coordf_t support_extrusion_width = m_support_params.support_extrusion_width; - const size_t wall_count = config.tree_support_wall_count.value; + const float tree_brim_width = config.tree_support_brim_width.value; const PrintObjectConfig& object_config = m_object->config(); BOOST_LOG_TRIVIAL(info) << "draw_circles for object: " << m_object->model_object()->name; @@ -2011,11 +2011,7 @@ void TreeSupport::draw_circles(const std::vector>& con } } if (layer_nr == 0 && m_raft_layers == 0) { - double brim_width = - config.tree_support_auto_brim - ? node.dist_mm_to_top / - (scale * branch_radius) * 0.5 - : config.tree_support_brim_width; + double brim_width = !config.tree_support_auto_brim ? tree_brim_width : std::max(0.0, std::min(node.radius + node.dist_mm_to_top / (scale * branch_radius) * 0.5, MAX_BRANCH_RADIUS_FIRST_LAYER) - node.radius); auto tmp=offset(circle, scale_(brim_width)); if(!tmp.empty()) circle = tmp[0]; From 8a7cc7912939cd89c4ebf3fa77dd67062dc77e91 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 31 Oct 2023 10:33:42 +0800 Subject: [PATCH 010/129] ENH: improve first layer tree support First layer support can't be top interface, and min brim width of auto mode should be larger than 0. Jira: STUDIO-5010 Change-Id: I02f8b017b535f8a47965387e8679f692b1966e04 (cherry picked from commit 3e7d54abe352e8ab5f9d6492b5a86a96f9067f94) (cherry picked from commit 7efebe6bc682d66953a33704829140369b3ee7b8) --- src/libslic3r/Support/TreeSupport.cpp | 8 ++++---- src/libslic3r/Support/TreeSupport.hpp | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index a1e983cb67..9b199adc45 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -2011,7 +2011,7 @@ void TreeSupport::draw_circles(const std::vector>& con } } if (layer_nr == 0 && m_raft_layers == 0) { - double brim_width = !config.tree_support_auto_brim ? tree_brim_width : std::max(0.0, std::min(node.radius + node.dist_mm_to_top / (scale * branch_radius) * 0.5, MAX_BRANCH_RADIUS_FIRST_LAYER) - node.radius); + double brim_width = !config.tree_support_auto_brim ? tree_brim_width : std::max(MIN_BRANCH_RADIUS_FIRST_LAYER, std::min(node.radius + node.dist_mm_to_top / (scale * branch_radius) * 0.5, MAX_BRANCH_RADIUS_FIRST_LAYER) - node.radius); auto tmp=offset(circle, scale_(brim_width)); if(!tmp.empty()) circle = tmp[0]; @@ -2032,14 +2032,14 @@ void TreeSupport::draw_circles(const std::vector>& con has_circle_node = true; } - if (node.distance_to_top < 0) + if (layer_nr>0 && node.distance_to_top < 0) append(roof_gap_areas, area); - else if (node.support_roof_layers_below == 1) + else if (layer_nr > 0 && node.support_roof_layers_below == 1) { append(roof_1st_layer, area); max_layers_above_roof1 = std::max(max_layers_above_roof1, node.dist_mm_to_top); } - else if (node.support_roof_layers_below > 0) + else if (layer_nr > 0 && node.support_roof_layers_below > 0) { append(roof_areas, area); max_layers_above_roof = std::max(max_layers_above_roof, node.dist_mm_to_top); diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index 322ef66da8..62cce6ffea 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -406,8 +406,9 @@ private: std::vector< std::unordered_map> m_mst_line_x_layer_contour_caches; float DO_NOT_MOVER_UNDER_MM = 0.0; coordf_t MAX_BRANCH_RADIUS = 10.0; - coordf_t MAX_BRANCH_RADIUS_FIRST_LAYER = 12.0; coordf_t MIN_BRANCH_RADIUS = 0.5; + coordf_t MAX_BRANCH_RADIUS_FIRST_LAYER = 12.0; + coordf_t MIN_BRANCH_RADIUS_FIRST_LAYER = 2.0; float tree_support_branch_diameter_angle = 5.0; coord_t m_min_radius = scale_(1); // in mm bool is_strong = false; From 14ecfac5921bc0a6b98311c3b88f9c367bf52984 Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 16 Nov 2023 21:05:26 +0800 Subject: [PATCH 011/129] ENH: open support wall count for normal support 1. open support wall count for normal support Enabling this option makes normal support stronger and gives better overhang quality, but also more difficult to removal. Jira: STUDIO-5192 2. fix a bug where tree support (hybrid style) may get overlapped extrusions near the walls. 3. fix a bug where raft layers can't be 1 in tree support Jira: STUDIO-5261 Change-Id: Iadc0c67a9b50b5b221c8e83d5aa22ed282018cf8 (cherry picked from commit c0bb0084e386cb70ed6e16edf93190e4b38f5b90) (cherry picked from commit bf93fd02fb92912563796a2eec1ccfb4b0ed7fa9) --- src/libslic3r/Support/SupportParameters.hpp | 6 +- src/libslic3r/Support/TreeSupport.cpp | 121 +++++++++++--------- src/slic3r/GUI/ConfigManipulation.cpp | 2 +- src/slic3r/GUI/Tab.cpp | 2 +- 4 files changed, 69 insertions(+), 62 deletions(-) diff --git a/src/libslic3r/Support/SupportParameters.hpp b/src/libslic3r/Support/SupportParameters.hpp index da615ab1fd..1318925849 100644 --- a/src/libslic3r/Support/SupportParameters.hpp +++ b/src/libslic3r/Support/SupportParameters.hpp @@ -96,10 +96,10 @@ struct SupportParameters { // No interface layers allowed, print everything with the base support pattern. this->interface_density = this->support_density; } - + SupportMaterialPattern support_pattern = object_config.support_base_pattern; - this->with_sheath = false;//object_config.support_material_with_sheath; - this->base_fill_pattern = + this->with_sheath = /*is_tree(object_config.support_type) &&*/ object_config.tree_support_wall_count > 0; + this->base_fill_pattern = support_pattern == smpHoneycomb ? ipHoneycomb : this->support_density > 0.95 || this->with_sheath ? ipRectilinear : ipSupportBase; this->interface_fill_pattern = (this->interface_density > 0.95 ? ipRectilinear : ipSupportBase); diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 9b199adc45..18c9f8e0e4 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -17,10 +17,6 @@ #include #include -#define _L(s) Slic3r::I18N::translate(s) - -#define USE_PLAN_LAYER_HEIGHTS 1 - #ifndef M_PI #define M_PI 3.1415926535897932384626433832795 #endif @@ -176,7 +172,7 @@ Lines spanning_tree_to_lines(const std::vector& spanning_tr #ifdef SUPPORT_TREE_DEBUG_TO_SVG -static std::string get_svg_filename(std::string layer_nr_or_z, std::string tag = "bbl_ts") +static std::string get_svg_filename(const std::string& tag = "bbl_ts", const std::string& layer_nr_or_z="") { static bool rand_init = false; @@ -186,10 +182,13 @@ static std::string get_svg_filename(std::string layer_nr_or_z, std::string tag } int rand_num = rand() % 1000000; - //makedir("./SVG"); - std::string prefix = "./SVG/"; + std::string prefix = "C:/Users/arthur.tang/AppData/Roaming/BambuStudioInternal/SVG/"; + //makedir(prefix); std::string suffix = ".svg"; - return prefix + tag + "_" + layer_nr_or_z /*+ "_" + std::to_string(rand_num)*/ + suffix; + std::string name = prefix + tag; + if(!layer_nr_or_z.empty()) + name+= "_" + layer_nr_or_z; + return name + suffix; } static void draw_contours_and_nodes_to_svg @@ -217,10 +216,7 @@ static void draw_contours_and_nodes_to_svg bbox.max.y() = std::max(bbox.max.y(), (coord_t)scale_(10)); SVG svg; - if(!layer_nr_or_z.empty()) - svg.open(get_svg_filename(layer_nr_or_z, name_prefix), bbox); - else - svg.open(name_prefix, bbox); + svg.open(get_svg_filename(name_prefix, layer_nr_or_z), bbox); if (!svg.is_opened()) return; // draw grid @@ -276,7 +272,7 @@ static void draw_layer_mst bbox.merge(bb); } - SVG svg(get_svg_filename(layer_nr_or_z, "mstree").c_str(), bbox); + SVG svg(get_svg_filename("mstree",layer_nr_or_z).c_str(), bbox); if (!svg.is_opened()) return; svg.draw(lines, "blue", coord_t(scale_(0.05))); @@ -293,7 +289,7 @@ static void draw_two_overhangs_to_svg(SupportLayer* ts_layer, const ExPolygons& BoundingBox bbox2 = get_extents(overhangs2); bbox1.merge(bbox2); - SVG svg(get_svg_filename(std::to_string(ts_layer->print_z), "two_overhangs"), bbox1); + SVG svg(get_svg_filename("two_overhangs", std::to_string(ts_layer->print_z)), bbox1); if (!svg.is_opened()) return; svg.draw(union_ex(overhangs1), "blue"); @@ -306,7 +302,7 @@ static void draw_polylines(SupportLayer* ts_layer, Polylines& polylines) return; BoundingBox bbox = get_extents(polylines); - SVG svg(get_svg_filename(std::to_string(ts_layer->print_z), "lightnings"), bbox); + SVG svg(get_svg_filename("lightnings", std::to_string(ts_layer->print_z)), bbox); if (!svg.is_opened()) return; int id = 0; @@ -687,7 +683,7 @@ TreeSupport::TreeSupport(PrintObject& object, const SlicingParameters &slicing_p // align with the centered object in current plate (may not be the 1st plate, so need to add the plate offset) m_machine_border.translate(Point(scale_(plate_offset(0)), scale_(plate_offset(1))) - m_object->instances().front().shift); #ifdef SUPPORT_TREE_DEBUG_TO_SVG - SVG svg("SVG/machine_boarder.svg", m_object->bounding_box()); + SVG svg(get_svg_filename("machine_boarder"), m_object->bounding_box()); if (svg.is_opened()) svg.draw(m_machine_border, "yellow"); #endif } @@ -889,7 +885,7 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) if (!overhang.empty()) { has_sharp_tails = true; #ifdef SUPPORT_TREE_DEBUG_TO_SVG - SVG svg(format("SVG/sharp_tail_orig_%.02f.svg", layer->print_z), m_object->bounding_box()); + SVG svg(get_svg_filename(format("sharp_tail_orig_%.02f", layer->print_z)), m_object->bounding_box()); if (svg.is_opened()) svg.draw(overhang, "red"); #endif } @@ -1007,7 +1003,7 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) if (!overhang.empty()) has_sharp_tails = true; #ifdef SUPPORT_TREE_DEBUG_TO_SVG - SVG svg(format("SVG/sharp_tail_%.02f.svg",layer->print_z), m_object->bounding_box()); + SVG svg(get_svg_filename(format("sharp_tail_%.02f",layer->print_z)), m_object->bounding_box()); if (svg.is_opened()) svg.draw(overhang, "red"); #endif } @@ -1020,6 +1016,8 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) for (size_t layer_nr = 0; layer_nr < m_object->layer_count(); layer_nr++) { if (m_object->print()->canceled()) break; + if(layer_nr+m_raft_layers>=m_object->support_layer_count()) + break; SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); Layer* layer = m_object->get_layer(layer_nr); for (auto& overhang : ts_layer->overhang_areas) { @@ -1060,9 +1058,9 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) const Layer* layer1 = m_object->get_layer(cluster.min_layer); BoundingBox bbox = cluster.merged_bbox; bbox.merge(get_extents(layer1->lslices)); - SVG svg(format("SVG/overhangCluster_%s-%s_%s-%s_tail=%s_cantilever=%s_small=%s.svg", + SVG svg(get_svg_filename(format("overhangCluster_%s-%s_%s-%s_tail=%s_cantilever=%s_small=%s", cluster.min_layer, cluster.max_layer, layer1->print_z, m_object->get_layer(cluster.max_layer)->print_z, - cluster.is_sharp_tail, cluster.is_cantilever, cluster.is_small_overhang), bbox); + cluster.is_sharp_tail, cluster.is_cantilever, cluster.is_small_overhang)), bbox); if (svg.is_opened()) { svg.draw(layer1->lslices, "red"); svg.draw(cluster.merged_poly, "blue"); @@ -1108,8 +1106,9 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) } if (max_bridge_length > 0 && ts_layer->overhang_areas.size() > 0 && lower_layer) { - // do not break bridge for normal part in TreeHybrid - bool break_bridge = !(m_support_params.support_style == smsTreeHybrid && area(ts_layer->overhang_areas) > m_support_params.thresh_big_overhang); + // do not break bridge for normal part in TreeHybrid, nor Tree Strong + bool break_bridge = !(m_support_params.support_style == smsTreeHybrid && area(ts_layer->overhang_areas) > m_support_params.thresh_big_overhang) + && !(m_support_params.support_style==smsTreeStrong); m_object->remove_bridges_from_contacts(lower_layer, layer, extrusion_width_scaled, &ts_layer->overhang_areas, max_bridge_length, break_bridge); } @@ -1143,7 +1142,7 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) if (layer->overhang_areas.empty() && (blockers.size()<=layer->id() || blockers[layer->id()].empty())) continue; - SVG svg(format("SVG/overhang_areas_%s.svg", layer->print_z), m_object->bounding_box()); + SVG svg(get_svg_filename("overhang_areas", std::to_string(layer->print_z)), m_object->bounding_box()); if (svg.is_opened()) { svg.draw_outline(m_object->get_layer(layer->id())->lslices, "yellow"); svg.draw(layer->overhang_areas, "orange"); @@ -1186,18 +1185,20 @@ void TreeSupport::create_tree_support_layers() } for (Layer *layer : m_object->layers()) { - SupportLayer* ts_layer = m_object->add_tree_support_layer(layer->id(), layer->height, layer->print_z, layer->slice_z); + SupportLayer* ts_layer = m_object->add_tree_support_layer(layer_id++, layer->height, layer->print_z, layer->slice_z); if (ts_layer->id() > m_raft_layers) { SupportLayer* lower_layer = m_object->get_support_layer(ts_layer->id() - 1); - lower_layer->upper_layer = ts_layer; - ts_layer->lower_layer = lower_layer; + if (lower_layer) { + lower_layer->upper_layer = ts_layer; + ts_layer->lower_layer = lower_layer; + } } } } static inline BoundingBox fill_expolygon_generate_paths( ExtrusionEntitiesPtr &dst, - ExPolygon &&expolygon, + ExPolygon &expolygon, Fill *filler, const FillParams &fill_params, ExtrusionRole role, @@ -1224,7 +1225,7 @@ static inline BoundingBox fill_expolygon_generate_paths( static inline std::vector fill_expolygons_generate_paths( ExtrusionEntitiesPtr &dst, - ExPolygons &&expolygons, + ExPolygons &expolygons, Fill *filler, const FillParams &fill_params, ExtrusionRole role, @@ -1390,16 +1391,9 @@ void TreeSupport::generate_toolpaths() // generate raft tool path if (m_raft_layers > 0) { - ExtrusionRole raft_contour_er = m_slicing_params.base_raft_layers > 0 ? erSupportMaterial : erSupportMaterialInterface; SupportLayer *ts_layer = m_object->support_layers().front(); Flow flow = Flow(support_extrusion_width, ts_layer->height, nozzle_diameter); - - Polygons loops; - for (const ExPolygon& expoly : raft_areas) { - loops.push_back(expoly.contour); - loops.insert(loops.end(), expoly.holes.begin(), expoly.holes.end()); - } - extrusion_entities_append_loops(ts_layer->support_fills.entities, std::move(loops), raft_contour_er, + extrusion_entities_append_loops(ts_layer->support_fills.entities, to_polygons(raft_areas), erSupportMaterial, float(flow.mm3_per_mm()), float(flow.width()), float(flow.height())); raft_areas = offset_ex(raft_areas, -flow.scaled_spacing() / 2.); } @@ -1407,6 +1401,7 @@ void TreeSupport::generate_toolpaths() for (size_t layer_nr = 0; layer_nr < m_slicing_params.base_raft_layers; layer_nr++) { SupportLayer *ts_layer = m_object->get_support_layer(layer_nr); coordf_t expand_offset = (layer_nr == 0 ? 0. : -1.); + raft_areas = offset_ex(raft_areas, scale_(expand_offset)); Flow support_flow = Flow(support_extrusion_width, ts_layer->height, nozzle_diameter); Fill* filler_interface = Fill::new_from_type(ipRectilinear); @@ -1417,16 +1412,25 @@ void TreeSupport::generate_toolpaths() fill_params.density = object_config.raft_first_layer_density * 0.01; fill_params.dont_adjust = true; - fill_expolygons_generate_paths(ts_layer->support_fills.entities, std::move(offset_ex(raft_areas, scale_(expand_offset))), + fill_expolygons_generate_paths(ts_layer->support_fills.entities, raft_areas, filler_interface, fill_params, erSupportMaterial, support_flow); } + // subtract the non-raft support bases, otherwise we'll get support base on top of raft interfaces which is not stable + SupportLayer* first_non_raft_layer = m_object->get_support_layer(m_raft_layers); + ExPolygons first_non_raft_base; + for (auto& area_group : first_non_raft_layer->area_groups) { + if (area_group.type == SupportLayer::BaseType) + first_non_raft_base.emplace_back(*area_group.area); + } + ExPolygons raft_base_areas = intersection_ex(raft_areas, first_non_raft_base); + ExPolygons raft_interface_areas = diff_ex(raft_areas, raft_base_areas); + for (size_t layer_nr = m_slicing_params.base_raft_layers; layer_nr < m_slicing_params.base_raft_layers + m_slicing_params.interface_raft_layers; layer_nr++) { SupportLayer *ts_layer = m_object->get_support_layer(layer_nr); - coordf_t expand_offset = (layer_nr == 0 ? 0. : -1.); Flow support_flow(support_extrusion_width, ts_layer->height, nozzle_diameter); Fill* filler_interface = Fill::new_from_type(ipRectilinear); @@ -1437,8 +1441,12 @@ void TreeSupport::generate_toolpaths() fill_params.density = interface_density; fill_params.dont_adjust = true; - fill_expolygons_generate_paths(ts_layer->support_fills.entities, std::move(offset_ex(raft_areas, scale_(expand_offset))), + fill_expolygons_generate_paths(ts_layer->support_fills.entities, raft_interface_areas, filler_interface, fill_params, erSupportMaterialInterface, support_flow); + + fill_params.density = object_config.raft_first_layer_density * 0.01; + fill_expolygons_generate_paths(ts_layer->support_fills.entities, raft_base_areas, + filler_interface, fill_params, erSupportMaterial, support_flow); } BoundingBox bbox_object(Point(-scale_(1.), -scale_(1.0)), Point(scale_(1.), scale_(1.))); @@ -1459,7 +1467,7 @@ void TreeSupport::generate_toolpaths() if (m_object->print()->canceled()) break; - m_object->print()->set_status(70, (boost::format(_L("Support: generate toolpath at layer %d")) % layer_id).str()); + m_object->print()->set_status(70, (boost::format(_u8L("Support: generate toolpath at layer %d")) % layer_id).str()); SupportLayer* ts_layer = m_object->get_support_layer(layer_id); Flow support_flow(support_extrusion_width, ts_layer->height, nozzle_diameter); @@ -1526,9 +1534,6 @@ void TreeSupport::generate_toolpaths() bool need_infill = with_infill; if(m_object_config->support_base_pattern==smpDefault) need_infill &= area_group.need_infill; - size_t walls = wall_count; - if (layer_id == 0) walls = std::numeric_limits::max(); - else if (area_group.need_extra_wall && walls < 2) walls += 1; std::shared_ptr filler_support = std::shared_ptr(Fill::new_from_type(layer_id == 0 ? ipConcentric : m_support_params.base_fill_pattern)); filler_support->set_bounding_box(bbox_object); filler_support->spacing = object_config.support_base_pattern_spacing.value * support_density;// constant spacing to align support infill lines @@ -1544,11 +1549,14 @@ void TreeSupport::generate_toolpaths() if (need_infill && m_support_params.base_fill_pattern != ipLightning) { // allow infill-only mode if support is thick enough (so min_wall_count is 0); // otherwise must draw 1 wall + // Don't need extra walls if we have infill. Extra walls may overlap with the infills. size_t min_wall_count = offset(poly, -scale_(support_spacing * 1.5)).empty() ? 1 : 0; - make_perimeter_and_infill(ts_layer->support_fills.entities, *m_object->print(), poly, std::max(min_wall_count, walls), flow, + make_perimeter_and_infill(ts_layer->support_fills.entities, *m_object->print(), poly, std::max(min_wall_count, wall_count), flow, erSupportMaterial, filler_support.get(), support_density); } else { + size_t walls = wall_count; + if (area_group.need_extra_wall && walls < 2) walls += 1; for (size_t i = 1; i < walls; i++) { Polygons contour_new = offset(poly.contour, -(i - 0.5f) * flow.scaled_spacing(), jtSquare); loops.insert(loops.end(), contour_new.begin(), contour_new.end()); @@ -1600,7 +1608,7 @@ void TreeSupport::generate_toolpaths() float(flow.mm3_per_mm()), float(flow.width()), float(flow.height())); #ifdef SUPPORT_TREE_DEBUG_TO_SVG - std::string name = "./SVG/trees_polyline_" + std::to_string(ts_layer->print_z) /*+ "_" + std::to_string(rand_num)*/ + ".svg"; + std::string name = get_svg_filename("trees_polyline", std::to_string(ts_layer->print_z)); BoundingBox bbox = get_extents(ts_layer->base_areas); SVG svg(name, bbox); if (svg.is_opened()) { @@ -1631,7 +1639,7 @@ void TreeSupport::generate() // Generate overhang areas profiler.stage_start(STAGE_DETECT_OVERHANGS); - m_object->print()->set_status(55, _L("Support: detect overhangs")); + m_object->print()->set_status(55, _u8L("Support: detect overhangs")); detect_overhangs(); profiler.stage_finish(STAGE_DETECT_OVERHANGS); @@ -1645,14 +1653,14 @@ void TreeSupport::generate() std::vector move_bounds(m_highest_overhang_layer + 1); profiler.stage_start(STAGE_GENERATE_CONTACT_NODES); - m_object->print()->set_status(56, _L("Support: generate contact points")); + m_object->print()->set_status(56, _u8L("Support: generate contact points")); generate_contact_points(contact_nodes, move_bounds); profiler.stage_finish(STAGE_GENERATE_CONTACT_NODES); //Drop nodes to lower layers. profiler.stage_start(STAGE_DROP_DOWN_NODES); - m_object->print()->set_status(60, _L("Support: propagate branches")); + m_object->print()->set_status(60, _u8L("Support: propagate branches")); drop_nodes(contact_nodes); profiler.stage_finish(STAGE_DROP_DOWN_NODES); @@ -1660,7 +1668,7 @@ void TreeSupport::generate() //Generate support areas. profiler.stage_start(STAGE_DRAW_CIRCLES); - m_object->print()->set_status(65, _L("Support: draw polygons")); + m_object->print()->set_status(65, _u8L("Support: draw polygons")); draw_circles(contact_nodes); profiler.stage_finish(STAGE_DRAW_CIRCLES); @@ -1675,7 +1683,7 @@ void TreeSupport::generate() contact_nodes.clear(); profiler.stage_start(STAGE_GENERATE_TOOLPATHS); - m_object->print()->set_status(69, _L("Support: generate toolpath")); + m_object->print()->set_status(69, _u8L("Support: generate toolpath")); generate_toolpaths(); profiler.stage_finish(STAGE_GENERATE_TOOLPATHS); @@ -2063,7 +2071,7 @@ void TreeSupport::draw_circles(const std::vector>& con ts_layer->lslices_bboxes.emplace_back(get_extents(expoly)); ts_layer->backup_untyped_slices(); - m_object->print()->set_status(65, (boost::format( _L("Support: generate polygons at layer %d")) % layer_nr).str()); + m_object->print()->set_status(65, (boost::format( _u8L("Support: generate polygons at layer %d")) % layer_nr).str()); // join roof segments double contact_dist_scaled = scale_(0.5);// scale_(m_slicing_params.gap_support_object); @@ -2248,7 +2256,7 @@ void TreeSupport::draw_circles(const std::vector>& con std::map> holePropagationInfos; for (int layer_nr = m_object->layer_count() - 1; layer_nr > 0; layer_nr--) { if (print->canceled()) break; - m_object->print()->set_status(66, (boost::format(_L("Support: fix holes at layer %d")) % layer_nr).str()); + m_object->print()->set_status(66, (boost::format(_u8L("Support: fix holes at layer %d")) % layer_nr).str()); const std::vector& curr_layer_nodes = contact_nodes[layer_nr]; SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); @@ -2342,10 +2350,9 @@ void TreeSupport::draw_circles(const std::vector>& con ExPolygons& base_areas = ts_layer->base_areas; ExPolygons& roof_areas = ts_layer->roof_areas; ExPolygons& roof_1st_layer = ts_layer->roof_1st_layer; - ExPolygons& floor_areas = ts_layer->floor_areas; + ExPolygons roofs = roof_areas; append(roofs, roof_1st_layer); if (base_areas.empty() && roof_areas.empty() && roof_1st_layer.empty()) continue; - char fname[10]; sprintf(fname, "%d_%.2f", layer_nr, ts_layer->print_z); - draw_contours_and_nodes_to_svg("", base_areas, roof_areas, roof_1st_layer, {}, {}, get_svg_filename(fname, "circles"), {"base", "roof", "roof1st"}); + draw_contours_and_nodes_to_svg(format("%d_%.2f", layer_nr, ts_layer->print_z), base_areas, roofs, ts_layer->lslices, {}, {}, "circles", {"base", "roof", "lslices"}, {"blue","red","black"}); } #endif // SUPPORT_TREE_DEBUG_TO_SVG @@ -2424,9 +2431,9 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod std::deque> unsupported_branch_leaves; // All nodes that are leaves on this layer that would result in unsupported ('mid-air') branches. const Layer* ts_layer = m_object->get_support_layer(layer_nr); - m_object->print()->set_status(60, (boost::format(_L("Support: propagate branches at layer %d")) % layer_nr).str()); + m_object->print()->set_status(60, (boost::format(_u8L("Support: propagate branches at layer %d")) % layer_nr).str()); - Polygons layer_contours = m_ts_data->get_contours_with_holes(layer_nr); + Polygons layer_contours = std::move(m_ts_data->get_contours_with_holes(layer_nr)); //std::unordered_map& mst_line_x_layer_contour_cache = m_mst_line_x_layer_contour_caches[layer_nr]; std::unordered_map mst_line_x_layer_contour_cache; auto is_line_cut_by_contour = [&mst_line_x_layer_contour_cache,&layer_contours](Point a, Point b) diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index a376aa7f1f..a8e77677d4 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -611,7 +611,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co for (auto el : {"tree_support_branch_angle", "tree_support_branch_distance", "tree_support_branch_diameter" }) toggle_line(el, support_is_normal_tree); // settings specific to normal trees - for (auto el : {"tree_support_wall_count", "tree_support_auto_brim", "tree_support_brim_width", "tree_support_adaptive_layer_height"}) + for (auto el : {"tree_support_auto_brim", "tree_support_brim_width", "tree_support_adaptive_layer_height"}) toggle_line(el, support_is_normal_tree); // settings specific to organic trees for (auto el : {"tree_support_branch_angle_organic", "tree_support_branch_distance_organic", "tree_support_branch_diameter_organic","tree_support_angle_slow","tree_support_tip_diameter", "tree_support_top_rate", "tree_support_branch_diameter_angle", "tree_support_branch_diameter_double_wall"}) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index fea8908d75..67863846d2 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2250,6 +2250,7 @@ void TabPrint::build() optgroup = page->new_optgroup(L("Advanced"), L"param_advanced"); optgroup->append_single_option_line("support_top_z_distance", "support#top-z-distance"); optgroup->append_single_option_line("support_bottom_z_distance", "support#bottom-z-distance"); + optgroup->append_single_option_line("tree_support_wall_count"); optgroup->append_single_option_line("support_base_pattern", "support#base-pattern"); optgroup->append_single_option_line("support_base_pattern_spacing", "support#base-pattern"); optgroup->append_single_option_line("support_angle"); @@ -2278,7 +2279,6 @@ void TabPrint::build() optgroup->append_single_option_line("tree_support_branch_angle_organic", "support#tree-support-only-options"); optgroup->append_single_option_line("tree_support_angle_slow"); optgroup->append_single_option_line("tree_support_branch_diameter_double_wall"); - optgroup->append_single_option_line("tree_support_wall_count"); optgroup->append_single_option_line("tree_support_adaptive_layer_height"); optgroup->append_single_option_line("tree_support_auto_brim"); optgroup->append_single_option_line("tree_support_brim_width"); From 5f450923c9526c6ff8d1c278587889a2ae278123 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 17 Nov 2023 11:38:55 +0800 Subject: [PATCH 012/129] FIX: compiling error on linux jira: none Change-Id: I1a4563503b5ddf74a1979cc0cee7a15b8aced904 (cherry picked from commit de52c6ca62c9f3a6314ddf5a856c1d8534329886) (cherry picked from commit 4bd2b7f96dee8862cf2ae87807e33f4255070d2d) --- src/libslic3r/Support/TreeSupport.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 18c9f8e0e4..51df15c0e7 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1233,7 +1233,7 @@ static inline std::vector fill_expolygons_generate_paths( { std::vector fill_boxes; for (ExPolygon& expoly : expolygons) { - auto box = fill_expolygon_generate_paths(dst, std::move(expoly), filler, fill_params, role, flow); + auto box = fill_expolygon_generate_paths(dst, expoly, filler, fill_params, role, flow); fill_boxes.emplace_back(box); } return fill_boxes; @@ -1291,7 +1291,7 @@ static void make_perimeter_and_infill(ExtrusionEntitiesPtr& dst, const Print& pr fill_params.density = support_density; fill_params.dont_adjust = true; ExPolygons to_infill = support_area_new; - std::vector fill_boxes = fill_expolygons_generate_paths(dst, std::move(to_infill), filler_support, fill_params, role, flow); + std::vector fill_boxes = fill_expolygons_generate_paths(dst, to_infill, filler_support, fill_params, role, flow); // allow wall_count to be zero, which means only draw infill if (wall_count == 0) { @@ -1513,7 +1513,7 @@ void TreeSupport::generate_toolpaths() // floor_areas fill_params.density = bottom_interface_density; filler_interface->spacing = m_support_material_interface_flow.spacing(); - fill_expolygons_generate_paths(ts_layer->support_fills.entities, std::move(polys), + fill_expolygons_generate_paths(ts_layer->support_fills.entities, polys, filler_interface.get(), fill_params, erSupportMaterialInterface, m_support_material_interface_flow); } else if (area_group.type == SupportLayer::RoofType) { // roof_areas @@ -1525,7 +1525,7 @@ void TreeSupport::generate_toolpaths() } if (m_object_config->support_interface_pattern == smipRectilinearInterlaced) filler_interface->layer_id = round(area_group.dist_to_top / ts_layer->height); - fill_expolygons_generate_paths(ts_layer->support_fills.entities, std::move(polys), filler_interface.get(), fill_params, erSupportMaterialInterface, + fill_expolygons_generate_paths(ts_layer->support_fills.entities, polys, filler_interface.get(), fill_params, erSupportMaterialInterface, m_support_material_interface_flow); } else { From e8d4291e02c6c4320a0f3f9e90853715fff28d8c Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 13 Sep 2023 21:00:04 +0800 Subject: [PATCH 013/129] FIX: adaptive layer height may mess up support layers We must ensure when independent support layer height is enabled, the support layers are strictly synced with object layers. Otherwise, the wipe tower toolchange may be messed up. Jira: STUDIO-4097 Change-Id: I6208653f9665b15d028940d5e130c9e895629fc2 (cherry picked from commit 41d35c8af152c91cb356a68d88a879a115b44778) (cherry picked from commit 2b593ce378e7294c52f4d96b2403004972ed2a18) --- src/libslic3r/Support/SupportMaterial.cpp | 84 +++++++++++++++++++---- 1 file changed, 71 insertions(+), 13 deletions(-) diff --git a/src/libslic3r/Support/SupportMaterial.cpp b/src/libslic3r/Support/SupportMaterial.cpp index 85c461b02b..b64862f60e 100644 --- a/src/libslic3r/Support/SupportMaterial.cpp +++ b/src/libslic3r/Support/SupportMaterial.cpp @@ -1685,6 +1685,48 @@ static inline std::tuple detect_contacts( return std::make_tuple(std::move(contact_polygons), std::move(enforcer_polygons), no_interface_offset); } +// find the object layer that is closest to the {layer.bottom_z-gap_support_object} for top contact, +// or {layer.print_z+gap_object_support} for bottom contact +Layer* sync_gap_with_object_layer(const Layer& layer, const coordf_t gap_support_object, bool is_top_contact) +{ + // sync gap with the object layer height + float gap_synced = 0; + if (is_top_contact) { + Layer* lower_layer = layer.lower_layer, * last_valid_gap_layer = layer.lower_layer; + while (lower_layer && gap_synced < gap_support_object) { + last_valid_gap_layer = lower_layer; + gap_synced += lower_layer->height; + lower_layer = lower_layer->lower_layer; + + } + // maybe gap_synced is too large, find the nearest object layer (one layer above may be better) + if (std::abs(gap_synced - last_valid_gap_layer->height - gap_support_object) < std::abs(gap_synced - gap_support_object)) { + gap_synced -= last_valid_gap_layer->height; + last_valid_gap_layer = last_valid_gap_layer->upper_layer; + } + lower_layer = last_valid_gap_layer; // layer just below the last valid gap layer + if (last_valid_gap_layer->lower_layer) + lower_layer = last_valid_gap_layer->lower_layer; + return lower_layer; + }else{ + Layer* upper_layer = layer.upper_layer, * last_valid_gap_layer = layer.upper_layer; + while (upper_layer && gap_synced < gap_support_object) { + last_valid_gap_layer = upper_layer; + gap_synced += upper_layer->height; + upper_layer = upper_layer->upper_layer; + } + // maybe gap_synced is too large, find the nearest object layer (one layer above may be better) + if (std::abs(gap_synced - last_valid_gap_layer->height - gap_support_object) < std::abs(gap_synced - gap_support_object)) { + gap_synced -= last_valid_gap_layer->height; + last_valid_gap_layer = last_valid_gap_layer->lower_layer; + } + upper_layer = last_valid_gap_layer; // layer just above the last valid gap layer + if (last_valid_gap_layer->upper_layer) + upper_layer = last_valid_gap_layer->upper_layer; + return upper_layer; + } +} + // Allocate one, possibly two support contact layers. // For "thick" overhangs, one support layer will be generated to support normal extrusions, the other to support the "thick" extrusions. static inline std::pair new_contact_layer( @@ -1712,9 +1754,18 @@ static inline std::pair new_cont print_z = layer.bottom_z(); height = layer.lower_layer->height; bottom_z = (layer_id == 1) ? slicing_params.object_print_z_min : layer.lower_layer->lower_layer->print_z; - } else { - print_z = layer.bottom_z() - slicing_params.gap_support_object; - height = print_config.independent_support_layer_height ? 0. : layer.lower_layer->height/*object_config.layer_height*/; // BBS: need to consider adaptive layer heights + } + else { + // BBS: need to consider adaptive layer heights + if (print_config.independent_support_layer_height) { + print_z = layer.bottom_z() - slicing_params.gap_support_object; + height = 0; + } + else { + Layer* synced_layer = sync_gap_with_object_layer(layer, slicing_params.gap_support_object, true); + print_z = synced_layer->print_z; + height = synced_layer->height; + } bottom_z = print_z - height; // Ignore this contact area if it's too low. // Don't want to print a layer below the first layer height as it may not stick well. @@ -1739,7 +1790,7 @@ static inline std::pair new_cont // Contact layer will be printed with a normal flow, but // it will support layers printed with a bridging flow. - if (object_config.thick_bridges && SupportMaterialInternal::has_bridging_extrusions(layer)) { + if (object_config.thick_bridges && SupportMaterialInternal::has_bridging_extrusions(layer) && print_config.independent_support_layer_height) { coordf_t bridging_height = 0.; for (const LayerRegion* region : layer.regions()) bridging_height += region->region().bridging_height_avg(print_config); @@ -2373,15 +2424,22 @@ static inline SupportGeneratorLayer* detect_bottom_contacts( // Grow top surfaces so that interface and support generation are generated // with some spacing from object - it looks we don't need the actual // top shapes so this can be done here - //FIXME calculate layer height based on the actual thickness of the layer: - // If the layer is extruded with no bridging flow, support just the normal extrusions. - layer_new.height = slicing_params.soluble_interface || !object.print()->config().independent_support_layer_height ? - // Align the interface layer with the object's layer height. - layer.upper_layer->height : - // Place a bridge flow interface layer or the normal flow interface layer over the top surface. - support_params.support_material_bottom_interface_flow.height(); - layer_new.print_z = slicing_params.soluble_interface ? layer.upper_layer->print_z : - layer.print_z + layer_new.height + slicing_params.gap_object_support; + if (object.print()->config().independent_support_layer_height) { + // If the layer is extruded with no bridging flow, support just the normal extrusions. + layer_new.height = slicing_params.soluble_interface? + // Align the interface layer with the object's layer height. + layer.upper_layer->height : + // Place a bridge flow interface layer or the normal flow interface layer over the top surface. + support_params.support_material_bottom_interface_flow.height(); + layer_new.print_z = slicing_params.soluble_interface ? layer.upper_layer->print_z : + layer.print_z + layer_new.height + slicing_params.gap_object_support; + } + else { + Layer* synced_layer = sync_gap_with_object_layer(layer, slicing_params.gap_object_support, false); + // If the layer is extruded with no bridging flow, support just the normal extrusions. + layer_new.height = synced_layer->height; + layer_new.print_z = synced_layer->print_z; + } layer_new.bottom_z = layer.print_z; layer_new.idx_object_layer_below = layer_id; layer_new.bridging = !slicing_params.soluble_interface && object.config().thick_bridges; From c443951f30f7dd1739a3d0f902395024c6378877 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 28 Nov 2023 17:17:11 +0800 Subject: [PATCH 014/129] FIX: organic support not work with raft only There is no raft generated when only raft enabled but no support needed. jira: none Change-Id: Ic0c9269e2f98038d85c9bc54e4a85f892dc5d764 (cherry picked from commit 1106ff825312b3f192de84019dfee1453afbc1cc) --- src/libslic3r/Support/TreeSupport3D.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libslic3r/Support/TreeSupport3D.cpp b/src/libslic3r/Support/TreeSupport3D.cpp index 88074ccac8..60a66546dc 100644 --- a/src/libslic3r/Support/TreeSupport3D.cpp +++ b/src/libslic3r/Support/TreeSupport3D.cpp @@ -3367,6 +3367,9 @@ static void generate_support_areas(Print &print, const BuildVolume &build_volume bool has_raft = config.raft_layers.size() > 0; num_support_layers = std::max(num_support_layers, config.raft_layers.size()); + if (num_support_layers == 0) + continue; + SupportParameters support_params(print_object); support_params.with_sheath = true; // Don't override the support density of tree supports, as the support density is used for raft. From 8c51f3e693592ab5f219d3586cfba79a1b6b6acc Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 1 Dec 2023 10:12:22 +0800 Subject: [PATCH 015/129] FIX: crash when support type and style are inconsistent jira: STUDIO-5428 Change-Id: Ib1e79c71736810099e15282c30524e55e8f60f34 (cherry picked from commit aefb7fbaf25146c03bd2eb336f58ed2eb0e83ea6) (cherry picked from commit 697a7bbee327901ddff22369b89c8d752ef7e8d7) --- src/libslic3r/Support/SupportMaterial.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/Support/SupportMaterial.cpp b/src/libslic3r/Support/SupportMaterial.cpp index b64862f60e..2975c2c3fb 100644 --- a/src/libslic3r/Support/SupportMaterial.cpp +++ b/src/libslic3r/Support/SupportMaterial.cpp @@ -677,7 +677,9 @@ public: m_extrusion_width(params.extrusion_width), m_support_material_closing_radius(params.support_closing_radius) { - if (m_style != smsSnug) m_style = smsGrid; + if (m_style == smsDefault) m_style = smsGrid; + if (std::set{smsTreeSlim, smsTreeStrong, smsTreeHybrid, smsOrganic}.count(m_style)) + m_style = smsGrid; switch (m_style) { case smsGrid: { @@ -769,6 +771,13 @@ public: ) { switch (m_style) { + case smsTreeSlim: + case smsTreeStrong: + case smsTreeHybrid: + case smsOrganic: + assert(false); + //[[fallthrough]]; + return Polygons(); case smsGrid: { #ifdef SUPPORT_USE_AGG_RASTERIZER From 1c498664a59a54637692e02e8ecd699cde2c92f8 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 20 Dec 2023 12:09:27 +0800 Subject: [PATCH 016/129] FIX: several support bugs 1. interlaced rectilinear interface pattern not working with tree supports 2. infill overlaps with walls when wall count>1 3. support blockers can't block sharp tail detection in normal support jira: STUDIO-5663 4. bottom z distance=0 not working for normal support. jira: STUDIO-5676 github: #3203 Change-Id: I025eff2aaad90ad565661aa656c59c82ff969bbf (cherry picked from commit 5aaf7ead0fd697043f673161e0ede0145ec49f4d) (cherry picked from commit f3bd5ff87021b5c26794751a1f1da4349b603102) --- src/libslic3r/Layer.hpp | 1 + src/libslic3r/Support/SupportMaterial.cpp | 27 +++++++++++++---------- src/libslic3r/Support/TreeSupport.cpp | 12 +++++++--- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/libslic3r/Layer.hpp b/src/libslic3r/Layer.hpp index a277aca29e..747e943179 100644 --- a/src/libslic3r/Layer.hpp +++ b/src/libslic3r/Layer.hpp @@ -311,6 +311,7 @@ protected: { ExPolygon *area; int type; + int interface_id = 0; coordf_t dist_to_top; // mm dist to top bool need_infill = false; bool need_extra_wall = false; diff --git a/src/libslic3r/Support/SupportMaterial.cpp b/src/libslic3r/Support/SupportMaterial.cpp index 2975c2c3fb..16156965fb 100644 --- a/src/libslic3r/Support/SupportMaterial.cpp +++ b/src/libslic3r/Support/SupportMaterial.cpp @@ -1523,8 +1523,9 @@ static inline ExPolygons detect_overhangs( // spanning just the projection between the two slices. // Subtracting them as they are may leave unwanted narrow // residues of diff_polygons that would then be supported. - diff_polygons = diff(diff_polygons, - expand(union_(annotations.blockers_layers[layer_id]), float(1000. * SCALED_EPSILON))); + auto blocker = expand(union_(annotations.blockers_layers[layer_id]), float(1000. * SCALED_EPSILON)); + diff_polygons = diff(diff_polygons, blocker); + layer.sharp_tails = diff_ex(layer.sharp_tails, blocker); } if (bridge_no_support) { @@ -1729,9 +1730,11 @@ Layer* sync_gap_with_object_layer(const Layer& layer, const coordf_t gap_support gap_synced -= last_valid_gap_layer->height; last_valid_gap_layer = last_valid_gap_layer->lower_layer; } - upper_layer = last_valid_gap_layer; // layer just above the last valid gap layer - if (last_valid_gap_layer->upper_layer) - upper_layer = last_valid_gap_layer->upper_layer; + if (gap_support_object > 0) { + upper_layer = last_valid_gap_layer; // layer just above the last valid gap layer + if (last_valid_gap_layer->upper_layer) + upper_layer = last_valid_gap_layer->upper_layer; + } return upper_layer; } } @@ -2433,21 +2436,21 @@ static inline SupportGeneratorLayer* detect_bottom_contacts( // Grow top surfaces so that interface and support generation are generated // with some spacing from object - it looks we don't need the actual // top shapes so this can be done here + Layer* upper_layer = layer.upper_layer; if (object.print()->config().independent_support_layer_height) { // If the layer is extruded with no bridging flow, support just the normal extrusions. - layer_new.height = slicing_params.soluble_interface? + layer_new.height = slicing_params.soluble_interface ? // Align the interface layer with the object's layer height. - layer.upper_layer->height : + upper_layer->height : // Place a bridge flow interface layer or the normal flow interface layer over the top surface. support_params.support_material_bottom_interface_flow.height(); - layer_new.print_z = slicing_params.soluble_interface ? layer.upper_layer->print_z : + layer_new.print_z = slicing_params.soluble_interface ? upper_layer->print_z : layer.print_z + layer_new.height + slicing_params.gap_object_support; } else { - Layer* synced_layer = sync_gap_with_object_layer(layer, slicing_params.gap_object_support, false); - // If the layer is extruded with no bridging flow, support just the normal extrusions. - layer_new.height = synced_layer->height; - layer_new.print_z = synced_layer->print_z; + upper_layer = sync_gap_with_object_layer(layer, slicing_params.gap_object_support, false); + layer_new.height = upper_layer->height; + layer_new.print_z = upper_layer->print_z; } layer_new.bottom_z = layer.print_z; layer_new.idx_object_layer_below = layer_id; diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 51df15c0e7..ab5366dfa5 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1290,7 +1290,7 @@ static void make_perimeter_and_infill(ExtrusionEntitiesPtr& dst, const Print& pr FillParams fill_params; fill_params.density = support_density; fill_params.dont_adjust = true; - ExPolygons to_infill = support_area_new; + ExPolygons to_infill = offset_ex(support_area, -float(wall_count) * float(flow.scaled_spacing()), jtSquare); std::vector fill_boxes = fill_expolygons_generate_paths(dst, to_infill, filler_support, fill_params, role, flow); // allow wall_count to be zero, which means only draw infill @@ -1524,7 +1524,8 @@ void TreeSupport::generate_toolpaths() fill_params.dont_sort = true; } if (m_object_config->support_interface_pattern == smipRectilinearInterlaced) - filler_interface->layer_id = round(area_group.dist_to_top / ts_layer->height); + filler_interface->layer_id = area_group.interface_id; + fill_expolygons_generate_paths(ts_layer->support_fills.entities, polys, filler_interface.get(), fill_params, erSupportMaterialInterface, m_support_material_interface_flow); } @@ -1969,6 +1970,7 @@ void TreeSupport::draw_circles(const std::vector>& con coordf_t max_layers_above_base = 0; coordf_t max_layers_above_roof = 0; coordf_t max_layers_above_roof1 = 0; + int interface_id = 0; bool has_polygon_node = false; bool has_circle_node = false; @@ -2051,6 +2053,7 @@ void TreeSupport::draw_circles(const std::vector>& con { append(roof_areas, area); max_layers_above_roof = std::max(max_layers_above_roof, node.dist_mm_to_top); + interface_id = node.obj_layer_nr % top_interface_layers; } else { @@ -2140,7 +2143,10 @@ void TreeSupport::draw_circles(const std::vector>& con area_groups.emplace_back(&area, SupportLayer::BaseType, max_layers_above_base); area_groups.back().need_infill = has_polygon_node; } - for (auto &area : ts_layer->roof_areas) area_groups.emplace_back(&area, SupportLayer::RoofType, max_layers_above_roof); + for (auto& area : ts_layer->roof_areas) { + area_groups.emplace_back(&area, SupportLayer::RoofType, max_layers_above_roof); + area_groups.back().interface_id = interface_id; + } for (auto &area : ts_layer->floor_areas) area_groups.emplace_back(&area, SupportLayer::FloorType, 10000); for (auto &area : ts_layer->roof_1st_layer) area_groups.emplace_back(&area, SupportLayer::Roof1stLayer, max_layers_above_roof1); From cc9f29c46302d993269d0ada99bf62ac438c70cc Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Mon, 27 Jan 2025 17:09:32 +0800 Subject: [PATCH 017/129] Rename `smsOrganic` to `smsTreeOrganic` --- src/libslic3r/Print.cpp | 4 ++-- src/libslic3r/PrintConfig.cpp | 2 +- src/libslic3r/PrintConfig.hpp | 2 +- src/libslic3r/Support/SupportCommon.cpp | 2 +- src/libslic3r/Support/SupportMaterial.cpp | 4 ++-- src/libslic3r/Support/SupportParameters.hpp | 2 +- src/libslic3r/Support/TreeSupport.cpp | 2 +- src/slic3r/GUI/ConfigManipulation.cpp | 4 ++-- src/slic3r/GUI/Tab.cpp | 2 +- 9 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 31f225cfa2..642cf79b5c 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1166,7 +1166,7 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* // Custom layering is not allowed for tree supports as of now. for (size_t print_object_idx = 0; print_object_idx < m_objects.size(); ++ print_object_idx) if (const PrintObject &print_object = *m_objects[print_object_idx]; - print_object.has_support_material() && is_tree(print_object.config().support_type.value) && (print_object.config().support_style.value == smsOrganic || + print_object.has_support_material() && is_tree(print_object.config().support_type.value) && (print_object.config().support_style.value == smsTreeOrganic || // Orca: use organic as default print_object.config().support_style.value == smsDefault) && print_object.model_object()->has_custom_layering()) { @@ -1339,7 +1339,7 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* // Prusa: Fixing crashes with invalid tip diameter or branch diameter // https://github.com/prusa3d/PrusaSlicer/commit/96b3ae85013ac363cd1c3e98ec6b7938aeacf46d - if (is_tree(object->config().support_type.value) && (object->config().support_style == smsOrganic || + if (is_tree(object->config().support_type.value) && (object->config().support_style == smsTreeOrganic || // Orca: use organic as default object->config().support_style == smsDefault)) { float extrusion_width = std::min( diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 8fb93e3024..7c6be8edab 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -230,7 +230,7 @@ static t_config_enum_values s_keys_map_SupportMaterialStyle { { "tree_slim", smsTreeSlim }, { "tree_strong", smsTreeStrong }, { "tree_hybrid", smsTreeHybrid }, - { "organic", smsOrganic } + { "organic", smsTreeOrganic } }; CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(SupportMaterialStyle) diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 33a0e7eabf..6e1f2701d6 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -132,7 +132,7 @@ enum SupportMaterialPattern { }; enum SupportMaterialStyle { - smsDefault, smsGrid, smsSnug, smsTreeSlim, smsTreeStrong, smsTreeHybrid, smsOrganic, + smsDefault, smsGrid, smsSnug, smsTreeSlim, smsTreeStrong, smsTreeHybrid, smsTreeOrganic, }; enum LongRectrationLevel diff --git a/src/libslic3r/Support/SupportCommon.cpp b/src/libslic3r/Support/SupportCommon.cpp index 4754ad47d1..edc71e76df 100644 --- a/src/libslic3r/Support/SupportCommon.cpp +++ b/src/libslic3r/Support/SupportCommon.cpp @@ -1808,7 +1808,7 @@ void generate_support_toolpaths( filler->link_max_length = coord_t(scale_(filler->spacing * link_max_length_factor / density)); sheath = true; no_sort = true; - } else if (support_params.support_style == SupportMaterialStyle::smsOrganic) { + } else if (support_params.support_style == SupportMaterialStyle::smsTreeOrganic) { tree_supports_generate_paths(base_layer.extrusions, base_layer.polygons_to_extrude(), flow, support_params); done = true; } diff --git a/src/libslic3r/Support/SupportMaterial.cpp b/src/libslic3r/Support/SupportMaterial.cpp index 16156965fb..cbf331fd78 100644 --- a/src/libslic3r/Support/SupportMaterial.cpp +++ b/src/libslic3r/Support/SupportMaterial.cpp @@ -678,7 +678,7 @@ public: m_support_material_closing_radius(params.support_closing_radius) { if (m_style == smsDefault) m_style = smsGrid; - if (std::set{smsTreeSlim, smsTreeStrong, smsTreeHybrid, smsOrganic}.count(m_style)) + if (std::set{smsTreeSlim, smsTreeStrong, smsTreeHybrid, smsTreeOrganic}.count(m_style)) m_style = smsGrid; switch (m_style) { case smsGrid: @@ -774,7 +774,7 @@ public: case smsTreeSlim: case smsTreeStrong: case smsTreeHybrid: - case smsOrganic: + case smsTreeOrganic: assert(false); //[[fallthrough]]; return Polygons(); diff --git a/src/libslic3r/Support/SupportParameters.hpp b/src/libslic3r/Support/SupportParameters.hpp index 1318925849..f36709fb53 100644 --- a/src/libslic3r/Support/SupportParameters.hpp +++ b/src/libslic3r/Support/SupportParameters.hpp @@ -161,7 +161,7 @@ struct SupportParameters { if (support_style == smsDefault) { if (is_tree(object_config.support_type)) { // Orca: use organic as default - support_style = smsOrganic; + support_style = smsTreeOrganic; } else { support_style = smsGrid; } diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index ab5366dfa5..945cef143f 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1631,7 +1631,7 @@ void TreeSupport::generate_toolpaths() void TreeSupport::generate() { - if (m_support_params.support_style == smsOrganic) { + if (m_support_params.support_style == smsTreeOrganic) { generate_tree_support_3D(*m_object, this, this->throw_on_cancel); return; } diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index a8e77677d4..3425890d70 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -426,7 +426,7 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con auto support_type = config->opt_enum("support_type"); auto support_style = config->opt_enum("support_style"); std::set enum_set_normal = { smsDefault, smsGrid, smsSnug }; - std::set enum_set_tree = { smsDefault, smsTreeSlim, smsTreeStrong, smsTreeHybrid, smsOrganic }; + std::set enum_set_tree = { smsDefault, smsTreeSlim, smsTreeStrong, smsTreeHybrid, smsTreeOrganic }; auto & set = is_tree(support_type) ? enum_set_tree : enum_set_normal; if (set.find(support_style) == set.end()) { DynamicPrintConfig new_conf = *config; @@ -603,7 +603,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co //toggle_field("support_closing_radius", have_support_material && support_style == smsSnug); bool support_is_tree = config->opt_bool("enable_support") && is_tree(support_type); - bool support_is_normal_tree = support_is_tree && support_style != smsOrganic && + bool support_is_normal_tree = support_is_tree && support_style != smsTreeOrganic && // Orca: use organic as default support_style != smsDefault; bool support_is_organic = support_is_tree && !support_is_normal_tree; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 67863846d2..916cb38ce6 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2441,7 +2441,7 @@ void TabPrint::toggle_options() if (auto choice = dynamic_cast(field)) { auto def = print_config_def.get("support_style"); std::vector enum_set_normal = {smsDefault, smsGrid, smsSnug }; - std::vector enum_set_tree = { smsDefault, smsTreeSlim, smsTreeStrong, smsTreeHybrid, smsOrganic }; + std::vector enum_set_tree = { smsDefault, smsTreeSlim, smsTreeStrong, smsTreeHybrid, smsTreeOrganic }; auto & set = is_tree(support_type) ? enum_set_tree : enum_set_normal; auto & opt = const_cast(field->m_opt); auto cb = dynamic_cast(choice->window); From b3be5bb1618cf685be3872a40104fb00f1d72c19 Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 14 Sep 2023 17:20:58 +0800 Subject: [PATCH 018/129] ENH: tree support uses accurate lslices For tree support, use lslices as tree support island when generating brim, as this is faster and more accurate. For normal support, still use "support_fills.polygons_covered_by_spacing()" as support island when generating brim; Jira: studio 4332 Change-Id: Ibfadd3a166606f824e5780b57112fff221470aaf (cherry picked from commit 64960b19818c7029eaaaf3d8a89804aeaa26f11d) (cherry picked from commit 181b05c236d251ce29a7730966012c5402061899) --- src/libslic3r/Support/TreeSupport.cpp | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 945cef143f..64fd58d315 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1973,6 +1973,7 @@ void TreeSupport::draw_circles(const std::vector>& con int interface_id = 0; bool has_polygon_node = false; bool has_circle_node = false; + bool need_extra_wall = false; BOOST_LOG_TRIVIAL(debug) << "circles at layer " << layer_nr << " contact nodes size=" << contact_nodes[layer_nr].size(); //Draw the support areas and add the roofs appropriately to the support roof instead of normal areas. @@ -2039,7 +2040,6 @@ void TreeSupport::draw_circles(const std::vector>& con } append(area, overhang_expanded); } - has_circle_node = true; } if (layer_nr>0 && node.distance_to_top < 0) @@ -2061,19 +2061,8 @@ void TreeSupport::draw_circles(const std::vector>& con max_layers_above_base = std::max(max_layers_above_base, node.dist_mm_to_top); } - if (layer_nr < brim_skirt_layers) - append(ts_layer->lslices, area); } - ts_layer->lslices = std::move(union_ex(ts_layer->lslices)); - - //Must update bounding box which is used in avoid crossing perimeter - ts_layer->lslices_bboxes.clear(); - ts_layer->lslices_bboxes.reserve(ts_layer->lslices.size()); - for (const ExPolygon &expoly : ts_layer->lslices) - ts_layer->lslices_bboxes.emplace_back(get_extents(expoly)); - ts_layer->backup_untyped_slices(); - m_object->print()->set_status(65, (boost::format( _u8L("Support: generate polygons at layer %d")) % layer_nr).str()); // join roof segments @@ -2142,6 +2131,7 @@ void TreeSupport::draw_circles(const std::vector>& con for (auto& area : ts_layer->base_areas) { area_groups.emplace_back(&area, SupportLayer::BaseType, max_layers_above_base); area_groups.back().need_infill = has_polygon_node; + // area_groups.back().need_extra_wall = need_extra_wall; } for (auto& area : ts_layer->roof_areas) { area_groups.emplace_back(&area, SupportLayer::RoofType, max_layers_above_roof); @@ -2158,8 +2148,19 @@ void TreeSupport::draw_circles(const std::vector>& con return bbox_size[0] < scale_(2) && bbox_size[1] < scale_(2); }), expoly->holes.end()); + + if (layer_nr < brim_skirt_layers) + ts_layer->lslices.emplace_back(*expoly); } + ts_layer->lslices = std::move(union_ex(ts_layer->lslices)); + //Must update bounding box which is used in avoid crossing perimeter + ts_layer->lslices_bboxes.clear(); + ts_layer->lslices_bboxes.reserve(ts_layer->lslices.size()); + for (const ExPolygon& expoly : ts_layer->lslices) + ts_layer->lslices_bboxes.emplace_back(get_extents(expoly)); + ts_layer->backup_untyped_slices(); + } }); From de24d0ac2fa0619290bba35fbf4cf8965ae7334d Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 4 Aug 2023 22:29:56 +0800 Subject: [PATCH 019/129] FIX: tree support bottom interface layers were not correct The bottom interface layers were not right when "independent support layer height" is enabled. This commit ensures there are always 2 bottom interface layers and the gap is not less than specified. However, the gap may be slightly larger. Jira: STUDIO-3842, STUDIO-2138 Github: #2127 Change-Id: Ifd8fbc4c7bc6dd92f2534fdd0179458a9e93c79a (cherry picked from commit edcdad162ef68ab94f8d1e66c225c2617f43e00e) --- src/libslic3r/Support/TreeSupport.cpp | 35 ++++++++++++++++----------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 64fd58d315..16127d95c5 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1471,6 +1471,7 @@ void TreeSupport::generate_toolpaths() SupportLayer* ts_layer = m_object->get_support_layer(layer_id); Flow support_flow(support_extrusion_width, ts_layer->height, nozzle_diameter); + m_support_material_interface_flow = support_material_interface_flow(m_object, ts_layer->height); // update flow using real support layer height coordf_t support_spacing = object_config.support_base_pattern_spacing.value + support_flow.spacing(); coordf_t support_density = std::min(1., support_flow.spacing() / support_spacing); ts_layer->support_fills.no_sort = false; @@ -1934,9 +1935,7 @@ void TreeSupport::draw_circles(const std::vector>& con const PrintObjectConfig& object_config = m_object->config(); BOOST_LOG_TRIVIAL(info) << "draw_circles for object: " << m_object->model_object()->name; - // coconut: previously std::unordered_map in m_collision_cache is not multi-thread safe which may cause programs stuck, here we change to tbb::concurrent_unordered_map - tbb::parallel_for( - tbb::blocked_range(0, m_object->layer_count()), + tbb::parallel_for(tbb::blocked_range(0, m_object->layer_count()), [&](const tbb::blocked_range& range) { for (size_t layer_nr = range.begin(); layer_nr < range.end(); layer_nr++) @@ -1998,7 +1997,7 @@ void TreeSupport::draw_circles(const std::vector>& con has_polygon_node = true; } else { - Polygon circle; + Polygon circle(branch_circle); double scale = calc_branch_radius(branch_radius, node.dist_mm_to_top, diameter_angle_scale_factor) / branch_radius; double moveX = node.movement.x() / (scale * branch_radius_scaled); @@ -2011,14 +2010,14 @@ void TreeSupport::draw_circles(const std::vector>& con scale * (1 + moveX * moveX * vsize_inv),scale * (0 + moveX * moveY * vsize_inv), scale * (0 + moveX * moveY * vsize_inv),scale * (1 + moveY * moveY * vsize_inv), }; + int i = 0; for (auto vertex: branch_circle.points) { vertex = Point(matrix[0] * vertex.x() + matrix[1] * vertex.y(), matrix[2] * vertex.x() + matrix[3] * vertex.y()); - circle.append(node.position + vertex); + circle.points[i++] = node.position + vertex; } } else { - for (auto iter = branch_circle.points.begin(); iter != branch_circle.points.end(); iter++) { - Point corner = (*iter) * scale; - circle.append(node.position + corner); + for (int i = 0;i< circle.points.size(); i++) { + circle.points[i] = circle.points[i] * scale + node.position; } } if (layer_nr == 0 && m_raft_layers == 0) { @@ -2107,16 +2106,22 @@ void TreeSupport::draw_circles(const std::vector>& con { if (layer_nr >= bottom_interface_layers + bottom_gap_layers) { - for (size_t i = 0; i <= bottom_gap_layers; i++) + // find the lowest interface layer + // TODO the gap may not be exact when "independent support layer height" is enabled + size_t layer_nr_next = layer_nr; + for (size_t i = 0; i < bottom_interface_layers && layer_nr_next>0; i++) { + layer_nr_next = m_ts_data->layer_heights[layer_nr_next].next_layer_nr; + } + for (size_t i = 0; i <= bottom_gap_layers && i<=layer_nr_next; i++) { - const Layer* below_layer = m_object->get_layer(layer_nr - bottom_interface_layers - i); + const Layer* below_layer = m_object->get_layer(layer_nr_next - i); ExPolygons bottom_interface = intersection_ex(base_areas, below_layer->lslices); floor_areas.insert(floor_areas.end(), bottom_interface.begin(), bottom_interface.end()); } } if (floor_areas.empty() == false) { - floor_areas = std::move(diff_ex(floor_areas, avoid_region_interface)); - floor_areas = std::move(offset2_ex(floor_areas, contact_dist_scaled, -contact_dist_scaled)); + //floor_areas = std::move(diff_ex(floor_areas, avoid_region_interface)); + //floor_areas = std::move(offset2_ex(floor_areas, contact_dist_scaled, -contact_dist_scaled)); base_areas = std::move(diff_ex(base_areas, offset_ex(floor_areas, 10))); } } @@ -2238,6 +2243,8 @@ void TreeSupport::draw_circles(const std::vector>& con // check if poly's contour intersects with expoly's contour auto intersects_contour = [](Polygon poly, ExPolygon expoly, Point& pt_on_poly, Point& pt_on_expoly, Point& pt_far_on_poly, float dist_thresh = 0.01) { + Polylines pl_out = intersection_pl(to_polylines(expoly), ExPolygon(poly)); + if (pl_out.empty()) return false; float min_dist = std::numeric_limits::max(); float max_dist = 0; for (auto from : poly.points) { @@ -3045,8 +3052,8 @@ std::vector TreeSupport::plan_layer_heights(std::vectornext_layer_nr: " << layer_heights[i].print_z << " " << layer_heights[i].height << " " - << i << "->" << layer_heights[i].next_layer_nr << std::endl; + BOOST_LOG_TRIVIAL(info) << "plan_layer_heights print_z, height, layer_nr->next_layer_nr: " << layer_heights[i].print_z << " " << layer_heights[i].height << " " + << i << "->" << layer_heights[i].next_layer_nr; } return layer_heights; From d0868d6711682d6a2eee742407cc6be9a20f3261 Mon Sep 17 00:00:00 2001 From: Arthur Date: Sat, 6 Jan 2024 21:27:46 +0800 Subject: [PATCH 020/129] ENH: accurate top z distance for tree support 1. accurate top z distance for tree support Also fix a bug that bottom z and top z distances are misused. jira: STUDIO-3000, STUDIO-5990 github: #1827 2. Change interface pattern to interlaced rectilinear when using support material. 2. clean up tree support code Change-Id: Icc8ce1b6844c841a6fbd1d623df707fdc8ed0f7b (cherry picked from commit da7412a48dfb5767918ef125b9d0fb9718c03a61) (cherry picked from commit 39ae64fc53abec794d740e36baaa13fd6fb35849) --- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 4 +- src/libslic3r/ClipperUtils.cpp | 4 + src/libslic3r/ClipperUtils.hpp | 1 + src/libslic3r/Layer.hpp | 2 +- src/libslic3r/Support/TreeSupport.cpp | 612 ++++++++++---------- src/libslic3r/Support/TreeSupport.hpp | 90 +-- src/libslic3r/utils.cpp | 18 +- src/slic3r/GUI/Tab.cpp | 6 +- 8 files changed, 365 insertions(+), 372 deletions(-) diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 2e2d49487e..effc208b23 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -7315,11 +7315,11 @@ 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 " +"0 top z distance, 0 interface spacing, interlaced rectilinear pattern and disable " "independent support layer height" msgstr "" "当使用支持界面的支持材料时,我们推荐以下设置:\n" -"0顶层z距离,0接触层间距,同心图案,并且禁用独立支撑层高" +"0顶层z距离,0接触层间距,交叠直线图案,并且禁用独立支撑层高" msgid "" "Enabling this option will modify the model's shape. If your print requires " diff --git a/src/libslic3r/ClipperUtils.cpp b/src/libslic3r/ClipperUtils.cpp index 9082382a54..7d893a3bf2 100644 --- a/src/libslic3r/ClipperUtils.cpp +++ b/src/libslic3r/ClipperUtils.cpp @@ -666,6 +666,10 @@ Slic3r::Polygons diff_clipped(const Slic3r::Polygons &subject, const Slic3r::Pol { return diff(subject, ClipperUtils::clip_clipper_polygons_with_subject_bbox(clip, get_extents(subject).inflated(SCALED_EPSILON)), do_safety_offset); } Slic3r::ExPolygons diff_clipped(const Slic3r::ExPolygons &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset) { return diff_ex(subject, ClipperUtils::clip_clipper_polygons_with_subject_bbox(clip, get_extents(subject).inflated(SCALED_EPSILON)), do_safety_offset); } +Slic3r::ExPolygons diff_clipped(const Slic3r::ExPolygons & subject, const Slic3r::ExPolygons & clip, ApplySafetyOffset do_safety_offset) +{ + return diff_ex(subject, ClipperUtils::clip_clipper_polygons_with_subject_bbox(clip, get_extents(subject).inflated(SCALED_EPSILON)), do_safety_offset); +} Slic3r::Polygons diff(const Slic3r::Polygons &subject, const Slic3r::ExPolygons &clip, ApplySafetyOffset do_safety_offset) { return _clipper(ClipperLib::ctDifference, ClipperUtils::PolygonsProvider(subject), ClipperUtils::ExPolygonsProvider(clip), do_safety_offset); } Slic3r::Polygons diff(const Slic3r::ExPolygons &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset) diff --git a/src/libslic3r/ClipperUtils.hpp b/src/libslic3r/ClipperUtils.hpp index bc79dca5d5..c6aebb5e4a 100644 --- a/src/libslic3r/ClipperUtils.hpp +++ b/src/libslic3r/ClipperUtils.hpp @@ -434,6 +434,7 @@ Slic3r::Polygons diff(const Slic3r::Polygons &subject, const Slic3r::ExPolygon // To be used with complex clipping polygons, where majority of the clipping polygons are outside of the source polygon. Slic3r::Polygons diff_clipped(const Slic3r::Polygons &src, const Slic3r::Polygons &clipping, ApplySafetyOffset do_safety_offset = ApplySafetyOffset::No); Slic3r::ExPolygons diff_clipped(const Slic3r::ExPolygons &src, const Slic3r::Polygons &clipping, ApplySafetyOffset do_safety_offset = ApplySafetyOffset::No); +Slic3r::ExPolygons diff_clipped(const Slic3r::ExPolygons &src, const Slic3r::ExPolygons &clipping, ApplySafetyOffset do_safety_offset = ApplySafetyOffset::No); Slic3r::Polygons diff(const Slic3r::ExPolygons &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset::No); Slic3r::Polygons diff(const Slic3r::ExPolygons &subject, const Slic3r::ExPolygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset::No); Slic3r::Polygons diff(const Slic3r::Surfaces &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset::No); diff --git a/src/libslic3r/Layer.hpp b/src/libslic3r/Layer.hpp index 747e943179..45f185c425 100644 --- a/src/libslic3r/Layer.hpp +++ b/src/libslic3r/Layer.hpp @@ -317,7 +317,7 @@ protected: bool need_extra_wall = false; AreaGroup(ExPolygon *a, int t, coordf_t d) : area(a), type(t), dist_to_top(d) {} }; - enum OverhangType { Detected = 0, Enforced }; + enum OverhangType { Detected = 0, Enforced, SharpTail }; std::vector area_groups; std::map overhang_types; }; diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 16127d95c5..bae9ee3de1 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -14,6 +14,7 @@ #include "TreeSupport3D.hpp" #include +#include #include #include @@ -80,7 +81,7 @@ enum TreeSupportStage { class TreeSupportProfiler { public: - uint32_t stage_durations[NUM_STAGES]; + uint32_t stage_durations[NUM_STAGES] = { 0 }; uint32_t stage_index = 0; boost::posix_time::ptime tic_time; boost::posix_time::ptime toc_time; @@ -110,14 +111,15 @@ public: } void tic() { tic_time = boost::posix_time::microsec_clock::local_time(); } - void toc() { toc_time = boost::posix_time::microsec_clock::local_time(); } - void stage_add(TreeSupportStage stage, bool do_toc = false) + uint32_t toc() { + toc_time = boost::posix_time::microsec_clock::local_time(); + return (toc_time - tic_time).total_milliseconds(); + } + void stage_add(TreeSupportStage stage) { if (stage > NUM_STAGES) return; - if(do_toc) - toc_time = boost::posix_time::microsec_clock::local_time(); - stage_durations[stage] += (toc_time - tic_time).total_milliseconds(); + stage_durations[stage] += toc(); } std::string report() @@ -172,35 +174,16 @@ Lines spanning_tree_to_lines(const std::vector& spanning_tr #ifdef SUPPORT_TREE_DEBUG_TO_SVG -static std::string get_svg_filename(const std::string& tag = "bbl_ts", const std::string& layer_nr_or_z="") -{ - static bool rand_init = false; - - if (!rand_init) { - srand(time(NULL)); - rand_init = true; - } - - int rand_num = rand() % 1000000; - std::string prefix = "C:/Users/arthur.tang/AppData/Roaming/BambuStudioInternal/SVG/"; - //makedir(prefix); - std::string suffix = ".svg"; - std::string name = prefix + tag; - if(!layer_nr_or_z.empty()) - name+= "_" + layer_nr_or_z; - return name + suffix; -} - static void draw_contours_and_nodes_to_svg ( - std::string layer_nr_or_z, + std::string fname, const ExPolygons &overhangs, const ExPolygons &overhangs_after_offset, const ExPolygons &outlines_below, - const std::vector &layer_nodes, - const std::vector &lower_layer_nodes, - std::string name_prefix, - std::vector legends = { "overhang","avoid","outlines" }, std::vector colors = { "blue","red","yellow" } + const std::vector& layer_nodes, + const std::vector& lower_layer_nodes, + std::vector legends = { "overhang","avoid","outlines" }, + std::vector colors = { "blue","red","yellow" } ) { BoundingBox bbox = get_extents(overhangs); @@ -216,34 +199,29 @@ static void draw_contours_and_nodes_to_svg bbox.max.y() = std::max(bbox.max.y(), (coord_t)scale_(10)); SVG svg; - svg.open(get_svg_filename(name_prefix, layer_nr_or_z), bbox); + svg.open(fname, bbox); if (!svg.is_opened()) return; // draw grid svg.draw_grid(bbox, "gray", coord_t(scale_(0.05))); // draw overhang areas - svg.draw_outline(union_ex(overhangs), colors[0]); - svg.draw_outline(union_ex(overhangs_after_offset), colors[1]); + svg.draw_outline(overhangs, colors[0]); + svg.draw_outline(overhangs_after_offset, colors[1]); svg.draw_outline(outlines_below, colors[2]); // draw legend - if (!lower_layer_nodes.empty()) { - svg.draw_text(bbox.min + Point(scale_(0), scale_(0)), format("nPoints: %1%->%2%",layer_nodes.size(), lower_layer_nodes.size()).c_str(), "green", 2); - } - else { - svg.draw_text(bbox.min + Point(scale_(0), scale_(0)), ("nPoints: " + std::to_string(layer_nodes.size())).c_str(), "green", 2); - } + svg.draw_text(bbox.min + Point(scale_(0), scale_(0)), format("nPoints: %1%->%2%",layer_nodes.size(), lower_layer_nodes.size()).c_str(), "green", 2); svg.draw_text(bbox.min + Point(scale_(0), scale_(2)), legends[0].c_str(), colors[0].c_str(), 2); svg.draw_text(bbox.min + Point(scale_(0), scale_(4)), legends[1].c_str(), colors[1].c_str(), 2); svg.draw_text(bbox.min + Point(scale_(0), scale_(6)), legends[2].c_str(), colors[2].c_str(), 2); // draw layer nodes svg.draw(layer_pts, "green", coord_t(scale_(0.1))); -#if 0 + // lower layer points layer_pts.clear(); - for (SupportNode *node : lower_layer_nodes) { + for (SupportNode* node : lower_layer_nodes) { layer_pts.push_back(node->position); } svg.draw(layer_pts, "black", coord_t(scale_(0.1))); @@ -255,11 +233,10 @@ static void draw_contours_and_nodes_to_svg layer_pts.push_back(node->parent->position); } svg.draw(layer_pts, "blue", coord_t(scale_(0.1))); -#endif } static void draw_layer_mst -(const std::string &layer_nr_or_z, +(const std::string &fname, const std::vector &spanning_trees, const ExPolygons& outline ) @@ -272,7 +249,7 @@ static void draw_layer_mst bbox.merge(bb); } - SVG svg(get_svg_filename("mstree",layer_nr_or_z).c_str(), bbox); + SVG svg(fname, bbox); if (!svg.is_opened()) return; svg.draw(lines, "blue", coord_t(scale_(0.05))); @@ -281,48 +258,6 @@ static void draw_layer_mst svg.draw(spanning_tree.vertices(), "black", coord_t(scale_(0.1))); } -static void draw_two_overhangs_to_svg(SupportLayer* ts_layer, const ExPolygons& overhangs1, const ExPolygons& overhangs2) -{ - if (overhangs1.empty() && overhangs2.empty()) - return; - BoundingBox bbox1 = get_extents(overhangs1); - BoundingBox bbox2 = get_extents(overhangs2); - bbox1.merge(bbox2); - - SVG svg(get_svg_filename("two_overhangs", std::to_string(ts_layer->print_z)), bbox1); - if (!svg.is_opened()) return; - - svg.draw(union_ex(overhangs1), "blue"); - svg.draw(union_ex(overhangs2), "red"); -} - -static void draw_polylines(SupportLayer* ts_layer, Polylines& polylines) -{ - if (polylines.empty()) - return; - BoundingBox bbox = get_extents(polylines); - - SVG svg(get_svg_filename("lightnings", std::to_string(ts_layer->print_z)), bbox); - if (!svg.is_opened()) return; - - int id = 0; - for (Polyline& pline : polylines) - { - int i1, i2; - for (size_t i = 0; i < pline.size() - 1; i++) - { - i1 = i; - i2 = i + 1; - svg.draw(Line(pline.points[i1], pline.points[i2]), "blue"); - svg.draw(pline.points[i1], "red"); - id++; - svg.draw_text(pline.points[i1], std::to_string(id).c_str(), "black", 1); - } - svg.draw(pline.points[i2], "red"); - id++; - svg.draw_text(pline.points[i2], std::to_string(id).c_str(), "black", 1); - } -} #endif // Move point from inside polygon if distance>0, outside if distance<0. @@ -683,7 +618,7 @@ TreeSupport::TreeSupport(PrintObject& object, const SlicingParameters &slicing_p // align with the centered object in current plate (may not be the 1st plate, so need to add the plate offset) m_machine_border.translate(Point(scale_(plate_offset(0)), scale_(plate_offset(1))) - m_object->instances().front().shift); #ifdef SUPPORT_TREE_DEBUG_TO_SVG - SVG svg(get_svg_filename("machine_boarder"), m_object->bounding_box()); + SVG svg(debug_out_path("machine_boarder.svg"), m_object->bounding_box()); if (svg.is_opened()) svg.draw(m_machine_border, "yellow"); #endif } @@ -885,8 +820,7 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) if (!overhang.empty()) { has_sharp_tails = true; #ifdef SUPPORT_TREE_DEBUG_TO_SVG - SVG svg(get_svg_filename(format("sharp_tail_orig_%.02f", layer->print_z)), m_object->bounding_box()); - if (svg.is_opened()) svg.draw(overhang, "red"); + SVG::export_expolygons(debug_out_path("sharp_tail_orig_%.02f.svg", layer->print_z), { expoly }); #endif } } @@ -1003,8 +937,7 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) if (!overhang.empty()) has_sharp_tails = true; #ifdef SUPPORT_TREE_DEBUG_TO_SVG - SVG svg(get_svg_filename(format("sharp_tail_%.02f",layer->print_z)), m_object->bounding_box()); - if (svg.is_opened()) svg.draw(overhang, "red"); + SVG::export_expolygons(debug_out_path("sharp_tail_%.02f.svg", layer->print_z), overhang); #endif } @@ -1056,17 +989,14 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) #ifdef SUPPORT_TREE_DEBUG_TO_SVG const Layer* layer1 = m_object->get_layer(cluster.min_layer); - BoundingBox bbox = cluster.merged_bbox; - bbox.merge(get_extents(layer1->lslices)); - SVG svg(get_svg_filename(format("overhangCluster_%s-%s_%s-%s_tail=%s_cantilever=%s_small=%s", + std::string fname = debug_out_path("overhangCluster_%d-%d_%.2f-%.2f_tail=%d_cantilever=%d_small=%d.svg", cluster.min_layer, cluster.max_layer, layer1->print_z, m_object->get_layer(cluster.max_layer)->print_z, - cluster.is_sharp_tail, cluster.is_cantilever, cluster.is_small_overhang)), bbox); - if (svg.is_opened()) { - svg.draw(layer1->lslices, "red"); - svg.draw(cluster.merged_poly, "blue"); - svg.draw_text(bbox.min + Point(scale_(0), scale_(2)), "lslices", "red", 2); - svg.draw_text(bbox.min + Point(scale_(0), scale_(2)), "overhang", "blue", 2); - } + cluster.is_sharp_tail, cluster.is_cantilever, cluster.is_small_overhang); + SVG::export_expolygons(fname, { + { layer1->lslices, {"min_layer_lslices","red",0.5} }, + { m_object->get_layer(cluster.max_layer)->lslices, {"max_layer_lslices","yellow",0.5} }, + { cluster.merged_poly,{"overhang", "blue", 0.5} }, + { cluster.is_cantilever? layer1->cantilevers: offset_ex(cluster.merged_poly, -1 * extrusion_width_scaled), {cluster.is_cantilever ? "cantilever":"erode1","green",0.5}} }); #endif if (!cluster.is_small_overhang) @@ -1112,9 +1042,7 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) m_object->remove_bridges_from_contacts(lower_layer, layer, extrusion_width_scaled, &ts_layer->overhang_areas, max_bridge_length, break_bridge); } - for (auto &area : ts_layer->overhang_areas) { - ts_layer->overhang_types.emplace(&area, SupportLayer::Detected); - } + int nDetected = ts_layer->overhang_areas.size(); // enforcers now follow same logic as normal support. See STUDIO-3692 if (layer_nr < enforcers.size() && lower_layer) { float no_interface_offset = std::accumulate(layer->regions().begin(), layer->regions().end(), FLT_MAX, @@ -1126,9 +1054,14 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) // Inflate just a tiny bit to avoid intersection of the overhang areas with the object. expand(lower_layer_polygons, 0.05f * no_interface_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS)); append(ts_layer->overhang_areas, enforcer_polygons); - ts_layer->overhang_types.emplace(&ts_layer->overhang_areas.back(), SupportLayer::Enforced); } } + int nEnforced = ts_layer->overhang_areas.size(); + + // fill overhang_types + for (size_t i = 0; i < ts_layer->overhang_areas.size(); i++) + ts_layer->overhang_types.emplace(&ts_layer->overhang_areas[i], i < nDetected ? SupportLayer::Detected : + i < nEnforced ? SupportLayer::Enforced : SupportLayer::SharpTail); if (!ts_layer->overhang_areas.empty()) { has_overhangs = true; @@ -1142,13 +1075,11 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) if (layer->overhang_areas.empty() && (blockers.size()<=layer->id() || blockers[layer->id()].empty())) continue; - SVG svg(get_svg_filename("overhang_areas", std::to_string(layer->print_z)), m_object->bounding_box()); - if (svg.is_opened()) { - svg.draw_outline(m_object->get_layer(layer->id())->lslices, "yellow"); - svg.draw(layer->overhang_areas, "orange"); - if (blockers.size() > layer->id()) - svg.draw(blockers[layer->id()], "red"); - } + SVG::export_expolygons(debug_out_path("overhang_areas_%.2f.svg", layer->print_z), { + { m_object->get_layer(layer->id())->lslices, {"lslices","yellow",0.5} }, + { layer->overhang_areas, {"overhang","red",0.5} } + }); + if (enforcers.size() > layer->id()) { SVG svg(format("SVG/enforcer_%s.svg", layer->print_z), m_object->bounding_box()); if (svg.is_opened()) { @@ -1610,7 +1541,7 @@ void TreeSupport::generate_toolpaths() float(flow.mm3_per_mm()), float(flow.width()), float(flow.height())); #ifdef SUPPORT_TREE_DEBUG_TO_SVG - std::string name = get_svg_filename("trees_polyline", std::to_string(ts_layer->print_z)); + std::string name = debug_out_path("trees_polyline_%.2f.svg", ts_layer->print_z); BoundingBox bbox = get_extents(ts_layer->base_areas); SVG svg(name, bbox); if (svg.is_opened()) { @@ -1630,6 +1561,12 @@ void TreeSupport::generate_toolpaths() ); } +void deleteDirectoryContents(const std::filesystem::path& dir) +{ + for (const auto& entry : std::filesystem::directory_iterator(dir)) + std::filesystem::remove_all(entry.path()); +} + void TreeSupport::generate() { if (m_support_params.support_style == smsTreeOrganic) { @@ -1973,6 +1910,20 @@ void TreeSupport::draw_circles(const std::vector>& con bool has_polygon_node = false; bool has_circle_node = false; bool need_extra_wall = false; + ExPolygons collision_sharp_tails; + ExPolygons collision_base; + auto get_collision = [&](bool sharp_tail) -> ExPolygons& { + if (sharp_tail) { + if (collision_sharp_tails.empty()) + collision_sharp_tails = m_ts_data->get_collision(m_object_config->support_top_z_distance.value, layer_nr); + return collision_sharp_tails; + } + else { + if (collision_base.empty()) + collision_base = m_ts_data->get_collision((layer_nr == 0 && has_brim) ? config.brim_object_gap : m_ts_data->m_xy_distance, layer_nr); + return collision_base; + } + }; BOOST_LOG_TRIVIAL(debug) << "circles at layer " << layer_nr << " contact nodes size=" << contact_nodes[layer_nr].size(); //Draw the support areas and add the roofs appropriately to the support roof instead of normal areas. @@ -1987,7 +1938,7 @@ void TreeSupport::draw_circles(const std::vector>& con // Generate directly from overhang polygon if one of the following is true: // 1) node is a normal part of hybrid support // 2) node is virtual - if (node.type == ePolygon || node.distance_to_top<0) { + if (node.type == ePolygon || (node.distance_to_top<0 && !node.is_sharp_tail)) { if (node.overhang.contour.size() > 100 || node.overhang.holes.size()>1) area.emplace_back(node.overhang); else { @@ -1998,8 +1949,7 @@ void TreeSupport::draw_circles(const std::vector>& con } else { Polygon circle(branch_circle); - double scale = calc_branch_radius(branch_radius, node.dist_mm_to_top, diameter_angle_scale_factor) / branch_radius; - + double scale = node.radius / branch_radius; double moveX = node.movement.x() / (scale * branch_radius_scaled); double moveY = node.movement.y() / (scale * branch_radius_scaled); //BOOST_LOG_TRIVIAL(debug) << format("scale,moveX,moveY: %.3f,%.3f,%.3f", scale, moveX, moveY); @@ -2029,7 +1979,7 @@ void TreeSupport::draw_circles(const std::vector>& con area.emplace_back(ExPolygon(circle)); // merge overhang to get a smoother interface surface // Do not merge when buildplate_only is on, because some underneath nodes may have been deleted. - if (top_interface_layers > 0 && node.support_roof_layers_below > 0 && !on_buildplate_only) { + if (top_interface_layers > 0 && node.support_roof_layers_below > 0 && !on_buildplate_only && !node.is_sharp_tail) { ExPolygons overhang_expanded; if (node.overhang.contour.size() > 100 || node.overhang.holes.size()>1) overhang_expanded.emplace_back(node.overhang); @@ -2043,12 +1993,12 @@ void TreeSupport::draw_circles(const std::vector>& con if (layer_nr>0 && node.distance_to_top < 0) append(roof_gap_areas, area); - else if (layer_nr > 0 && node.support_roof_layers_below == 1) + else if (layer_nr > 0 && node.support_roof_layers_below == 1 && node.is_sharp_tail==false) { append(roof_1st_layer, area); max_layers_above_roof1 = std::max(max_layers_above_roof1, node.dist_mm_to_top); } - else if (layer_nr > 0 && node.support_roof_layers_below > 0) + else if (layer_nr > 0 && node.support_roof_layers_below > 0 && node.is_sharp_tail==false) { append(roof_areas, area); max_layers_above_roof = std::max(max_layers_above_roof, node.dist_mm_to_top); @@ -2070,8 +2020,9 @@ void TreeSupport::draw_circles(const std::vector>& con roof_1st_layer = std::move(offset2_ex(roof_1st_layer, contact_dist_scaled, -contact_dist_scaled)); // avoid object - //ExPolygons avoid_region_interface = m_ts_data->get_collision(m_ts_data->m_xy_distance, layer_nr); - Polygons avoid_region_interface = get_trim_support_regions(*m_object, ts_layer, m_slicing_params.gap_object_support, m_slicing_params.gap_support_object, m_ts_data->m_xy_distance); + // arthur: do not leave a gap for top interface if the top z distance is 0. See STUDIO-3991 + Polygons avoid_region_interface = get_trim_support_regions(*m_object, ts_layer, m_slicing_params.gap_support_object, m_slicing_params.gap_object_support, + m_slicing_params.gap_support_object == 0 ? 0 : m_ts_data->m_xy_distance); if (has_circle_node) { roof_areas = avoid_object_remove_extra_small_parts(roof_areas, avoid_region_interface); roof_1st_layer = avoid_object_remove_extra_small_parts(roof_1st_layer, avoid_region_interface); @@ -2087,8 +2038,8 @@ void TreeSupport::draw_circles(const std::vector>& con roof_1st_layer = intersection_ex(roof_1st_layer, m_machine_border); // let supports touch objects when brim is on - auto avoid_region = get_collision_polys((layer_nr == 0 && has_brim) ? config.brim_object_gap : m_ts_data->m_xy_distance, layer_nr); - base_areas = avoid_object_remove_extra_small_parts(base_areas, avoid_region); + //auto avoid_region = get_collision_polys((layer_nr == 0 && has_brim) ? config.brim_object_gap : m_ts_data->m_xy_distance, layer_nr); + //base_areas = avoid_object_remove_extra_small_parts(base_areas, avoid_region); //base_areas = diff_clipped(base_areas, avoid_region); ExPolygons roofs; append(roofs, roof_1st_layer); append(roofs, roof_areas);append(roofs, roof_gap_areas); base_areas = diff_ex(base_areas, ClipperUtils::clip_clipper_polygons_with_subject_bbox(roofs, get_extents(base_areas))); @@ -2225,10 +2176,6 @@ void TreeSupport::draw_circles(const std::vector>& con overhangs.emplace_back(to_polygons(overhang)); contours.emplace_back(to_polygons(base_areas_lower)); printZ_to_lightninglayer[lower_layer->print_z] = overhangs.size() - 1; - -#ifdef SUPPORT_TREE_DEBUG_TO_SVG - draw_two_overhangs_to_svg(m_object->get_support_layer(layer_nr_lower + m_raft_layers), base_areas_lower, to_expolygons(overhangs.back())); -#endif } @@ -2366,7 +2313,7 @@ void TreeSupport::draw_circles(const std::vector>& con ExPolygons& roof_1st_layer = ts_layer->roof_1st_layer; ExPolygons roofs = roof_areas; append(roofs, roof_1st_layer); if (base_areas.empty() && roof_areas.empty() && roof_1st_layer.empty()) continue; - draw_contours_and_nodes_to_svg(format("%d_%.2f", layer_nr, ts_layer->print_z), base_areas, roofs, ts_layer->lslices, {}, {}, "circles", {"base", "roof", "lslices"}, {"blue","red","black"}); + draw_contours_and_nodes_to_svg(debug_out_path("circles_%d_%.2f.svg", layer_nr, ts_layer->print_z), base_areas, roofs, ts_layer->lslices_extrudable, {}, {}, {"base", "roof", "lslices"}, {"blue","red","black"}); } #endif // SUPPORT_TREE_DEBUG_TO_SVG @@ -2379,6 +2326,8 @@ void TreeSupport::draw_circles(const std::vector>& con } } +double SupportNode::diameter_angle_scale_factor; + void TreeSupport::drop_nodes(std::vector>& contact_nodes) { const PrintObjectConfig &config = m_object->config(); @@ -2397,6 +2346,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod const bool support_on_buildplate_only = config.support_on_build_plate_only.value; const size_t bottom_interface_layers = config.support_interface_bottom_layers.value; const size_t top_interface_layers = config.support_interface_top_layers.value; + SupportNode::diameter_angle_scale_factor = diameter_angle_scale_factor; float DO_NOT_MOVER_UNDER_MM = is_slim ? 0 : 5; // do not move contact points under 5mm const auto nozzle_diameter = m_object->print()->config().nozzle_diameter.get_at(m_object->config().support_interface_filament-1); const auto support_line_width = config.support_line_width.get_abs_value(nozzle_diameter); @@ -2463,7 +2413,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod Lines pls_intersect = intersection_ln(ln, layer_contours); mst_line_x_layer_contour_cache.insert({ {a, b}, !pls_intersect.empty() }); mst_line_x_layer_contour_cache.insert({ ln, !pls_intersect.empty() }); - profiler.stage_add(STAGE_intersection_ln, true); + profiler.stage_add(STAGE_intersection_ln); if (!pls_intersect.empty()) return true; } @@ -2534,12 +2484,12 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod } spanning_trees.emplace_back(points_to_buildplate); } - profiler.stage_add(STAGE_MinimumSpanningTree,true); + profiler.stage_add(STAGE_MinimumSpanningTree); #ifdef SUPPORT_TREE_DEBUG_TO_SVG coordf_t branch_radius_temp = 0; coordf_t max_y = std::numeric_limits::min(); - draw_layer_mst(std::to_string(ts_layer->print_z), spanning_trees, m_object->get_layer(layer_nr)->lslices); + draw_layer_mst(debug_out_path("mtree_%.2f.svg", print_z), spanning_trees, m_object->get_layer(obj_layer_nr)->lslices_extrudable); #endif for (size_t group_index = 0; group_index < nodes_per_part.size(); group_index++) { @@ -2560,7 +2510,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod for (const Point &neighbour : neighbours) { SupportNode * neighbour_node = nodes_per_part[group_index][neighbour]; if (neighbour_node->type == ePolygon) continue; - coord_t neighbour_radius = scale_(calc_branch_radius(branch_radius, neighbour_node->dist_mm_to_top, diameter_angle_scale_factor)); + coord_t neighbour_radius = scale_(neighbour_node->radius); Point pt_north = neighbour + Point(0, neighbour_radius), pt_south = neighbour - Point(0, neighbour_radius), pt_west = neighbour - Point(neighbour_radius, 0), pt_east = neighbour + Point(neighbour_radius, 0); if (is_inside_ex(node.overhang, neighbour) && is_inside_ex(node.overhang, pt_north) && is_inside_ex(node.overhang, pt_south) @@ -2599,7 +2549,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod // Make sure the next pass doesn't drop down either of these (since that already happened). node_->merged_neighbours.push_front(node_ == p_node ? neighbour : p_node); const bool to_buildplate = !is_inside_ex(get_collision(0, layer_nr_next), next_position); - SupportNode * next_node = new SupportNode(next_position, node_->distance_to_top + 1, layer_nr_next, node_->support_roof_layers_below-1, to_buildplate, node_, + SupportNode * next_node = m_ts_data->create_node(next_position, node_->distance_to_top + 1, layer_nr_next, node_->support_roof_layers_below-1, to_buildplate, node_, print_z_next, height_next); next_node->movement = next_position - node.position; get_max_move_dist(next_node); @@ -2625,6 +2575,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod node.merged_neighbours.push_front(neighbour_node); node.merged_neighbours.insert(node.merged_neighbours.end(), neighbour_node->merged_neighbours.begin(), neighbour_node->merged_neighbours.end()); to_delete.insert(neighbour_node); + neighbour_node->valid = false; } } } @@ -2655,7 +2606,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod } } if (index_biggest >= 0) { - SupportNode* next_node = new SupportNode(p_node->position, p_node->distance_to_top + 1, layer_nr_next, p_node->support_roof_layers_below - 1, to_buildplate, + SupportNode* next_node = m_ts_data->create_node(p_node->position, p_node->distance_to_top + 1, layer_nr_next, p_node->support_roof_layers_below - 1, to_buildplate, p_node, print_z_next, height_next); next_node->max_move_dist = 0; next_node->overhang = std::move(overhangs_next[index_biggest]); @@ -2678,6 +2629,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod } else { to_delete.insert(p_node); + p_node->valid = false; } continue; } @@ -2685,6 +2637,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod if (p_node->parent && intersection_ln({p_node->position, p_node->parent->position}, layer_contours).empty()==false) { to_delete.insert(p_node); + p_node->valid = false; continue; } } @@ -2792,7 +2745,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod } const bool to_buildplate = !is_inside_ex(get_collision(0, layer_nr_next), next_layer_vertex); - SupportNode * next_node = new SupportNode(next_layer_vertex, node.distance_to_top + 1, layer_nr_next, node.support_roof_layers_below - 1, to_buildplate, p_node, + SupportNode * next_node = m_ts_data->create_node(next_layer_vertex, node.distance_to_top + 1, layer_nr_next, node.support_roof_layers_below - 1, to_buildplate, p_node, print_z_next, height_next); next_node->movement = movement; get_max_move_dist(next_node); @@ -2802,12 +2755,13 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod #ifdef SUPPORT_TREE_DEBUG_TO_SVG if (contact_nodes[layer_nr].empty() == false) { - draw_contours_and_nodes_to_svg((boost::format("%.2f") % contact_nodes[layer_nr][0]->print_z).str(), get_collision(0,layer_nr_next), + draw_contours_and_nodes_to_svg(debug_out_path("contact_points_%.2f.svg", contact_nodes[layer_nr][0]->print_z), get_collision(0,layer_nr_next), get_avoidance(branch_radius_temp, layer_nr), m_ts_data->m_layer_outlines[layer_nr], - contact_nodes[layer_nr], contact_nodes[layer_nr_next], "contact_points", { "overhang","avoid","outline" }, { "blue","red","yellow" }); + contact_nodes[layer_nr], contact_nodes[layer_nr_next], { "overhang","avoid","outline" }, { "blue","red","yellow" }); - BOOST_LOG_TRIVIAL(debug) << "drop_nodes layer " << layer_nr << ", print_z=" << ts_layer->print_z; + BOOST_LOG_TRIVIAL(debug) << "drop_nodes layer->next " << layer_nr << "->" << layer_nr_next << ", print_z=" << ts_layer->print_z + << ", num points: " << contact_nodes[layer_nr].size() << "->" << contact_nodes[layer_nr_next].size(); for (size_t i = 0; i < std::min(size_t(5), contact_nodes[layer_nr].size()); i++) { auto &node = contact_nodes[layer_nr][i]; BOOST_LOG_TRIVIAL(debug) << "\t node " << i << ", pos=" << node->position << ", move = " << node->movement; @@ -2827,15 +2781,20 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod if (to_erase != contact_nodes[i_layer].end()) { // update the parent-child chain - for (SupportNode* parent : i_node->parents) { + if (i_node->parent) { + i_node->parent->child = i_node->child; + for (SupportNode* parent : i_node->parents) { if (parent->child==i_node) parent->child = i_node->child; + } } if (i_node->child) { - i_node->child->parents= i_node->parents; + i_node->child->parent = i_node->parent; + i_node->child->parents.erase(std::find(i_node->child->parents.begin(), i_node->child->parents.end(), i_node)); + append(i_node->child->parents, i_node->parents); } contact_nodes[i_layer].erase(to_erase); - to_free_node_set.insert(i_node); + i_node->valid = false; for (SupportNode* neighbour : i_node->merged_neighbours) { @@ -2847,12 +2806,6 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod } BOOST_LOG_TRIVIAL(debug) << "after m_avoidance_cache.size()=" << m_ts_data->m_avoidance_cache.size(); - - for (SupportNode *node : to_free_node_set) - { - delete node; - } - to_free_node_set.clear(); } void TreeSupport::smooth_nodes(std::vector> &contact_nodes) @@ -2926,40 +2879,6 @@ void TreeSupport::smooth_nodes(std::vector> &contact_ } } } - // save tree structure for viewing in python - auto& tree_nodes = m_ts_data->tree_nodes; - std::map ptr2idx; - std::map idx2ptr; - for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { - std::vector& curr_layer_nodes = contact_nodes[layer_nr]; - for (SupportNode* node : curr_layer_nodes) { - ptr2idx.emplace(node, tree_nodes.size()); - idx2ptr.emplace(tree_nodes.size(), node); - tree_nodes.emplace_back(node->position, node->print_z); - } - } - for (size_t i = 0; i < tree_nodes.size(); i++) { - TreeNode& tree_node = tree_nodes[i]; - SupportNode* p_node = idx2ptr[i]; - if (p_node->child) - tree_node.children.push_back(ptr2idx[p_node->child]); - if(p_node->parent) - tree_node.parents.push_back(ptr2idx[p_node->parent]); - } -#ifdef SUPPORT_TREE_DEBUG_TO_SVG - nlohmann::json jj; - for (size_t i = 0; i < tree_nodes.size(); i++) { - nlohmann::json j; - j["pos"] = tree_nodes[i].pos; - j["children"] = tree_nodes[i].children; - j["linked"] = !(tree_nodes[i].pos.z() > 0.205 && tree_nodes[i].children.empty()); - jj.push_back(j); - } - - std::ofstream ofs("tree_nodes.json"); - ofs << jj.dump(); - ofs.close(); -#endif } std::vector TreeSupport::plan_layer_heights(std::vector> &contact_nodes) @@ -2988,29 +2907,33 @@ std::vector TreeSupport::plan_layer_heights(std::vectorget_layer(0)->print_z, m_object->get_layer(0)->height, 0}; // Collect top contact layers + coordf_t print_z = layer_heights[0].print_z; for (int layer_nr = 1; layer_nr < contact_nodes.size(); layer_nr++) { - if (!contact_nodes[layer_nr].empty()) - for (int i = 0; i < support_roof_layers + z_distance_top_layers + 1; i++) { - if (layer_nr - i > 0) { - bounds.push_back(layer_nr - i); - layer_heights[layer_nr - i].print_z = m_object->get_layer(layer_nr - i)->print_z; - layer_heights[layer_nr - i].height = m_object->get_layer(layer_nr - i)->height; - } - else { - break; + if (!contact_nodes[layer_nr].empty()) { + bounds.push_back(layer_nr); + layer_heights[layer_nr].print_z = contact_nodes[layer_nr].front()->print_z; + layer_heights[layer_nr].height = contact_nodes[layer_nr].front()->height; + if (layer_heights[layer_nr].bottom_z() - print_z < m_slicing_params.min_layer_height) { + layer_heights[layer_nr].height = layer_heights[layer_nr].print_z - print_z; + for (auto& node : contact_nodes[layer_nr]) { + node->height = layer_heights[layer_nr].height; } + } + print_z = layer_heights[layer_nr].print_z; + BOOST_LOG_TRIVIAL(trace) << "plan_layer_heights0 print_z, height, layer_nr: " << layer_heights[layer_nr].print_z << " " << layer_heights[layer_nr].height << " " + << layer_nr; } } std::set s(bounds.begin(), bounds.end()); bounds.assign(s.begin(), s.end()); - for (size_t idx_extreme = 0; idx_extreme < bounds.size(); idx_extreme++) { + for (size_t idx_extreme = 1; idx_extreme < bounds.size(); idx_extreme++) { int extr2_layer_nr = bounds[idx_extreme]; - coordf_t extr2z = m_object->get_layer(extr2_layer_nr)->bottom_z(); - int extr1_layer_nr = idx_extreme == 0 ? -1 : bounds[idx_extreme - 1]; - coordf_t extr1z = idx_extreme == 0 ? 0.f : m_object->get_layer(extr1_layer_nr)->print_z; + coordf_t extr2z = layer_heights[extr2_layer_nr].bottom_z(); + int extr1_layer_nr = bounds[idx_extreme - 1]; + coordf_t extr1z = layer_heights[extr1_layer_nr].print_z; coordf_t dist = extr2z - extr1z; // Insert intermediate layers. @@ -3022,7 +2945,8 @@ std::vector TreeSupport::plan_layer_heights(std::vector= layer_height - EPSILON); + //assert(step >= layer_height - EPSILON); + coordf_t extr2z_large_steps = extr2z; for (int layer_nr = extr1_layer_nr + 1; layer_nr < extr2_layer_nr; layer_nr++) { // if (curr_layer_nodes.empty()) continue; if (std::abs(print_z - m_object->get_layer(layer_nr)->print_z) < step / 2 + EPSILON || extr_layers_left < 1) { @@ -3052,8 +2976,21 @@ std::vector TreeSupport::plan_layer_heights(std::vectornext_layer_nr: " << layer_heights[i].print_z << " " << layer_heights[i].height << " " - << i << "->" << layer_heights[i].next_layer_nr; + } + for (i = 0; i < layer_heights.size(); i++) { + // there might be gap between layers due to non-integer interfaces + if (size_t next_layer_nr = layer_heights[i].next_layer_nr; + next_layer_nr>0 && layer_heights[i].height + EPSILON < layer_heights[i].print_z - layer_heights[next_layer_nr].print_z) + { + layer_heights[i].height = layer_heights[i].print_z - layer_heights[next_layer_nr].print_z; + } + // update interfaces' height + for (auto& node : contact_nodes[i]) { + node->height = layer_heights[i].height; + } + if (layer_heights[i].height > EPSILON) + BOOST_LOG_TRIVIAL(trace) << "plan_layer_heights print_z, height, lower_layer_nr->layer_nr: " << layer_heights[i].print_z << " " << layer_heights[i].height << " " + << layer_heights[i].next_layer_nr << "->" << i; } return layer_heights; @@ -3063,6 +3000,9 @@ void TreeSupport::generate_contact_points(std::vector> { const PrintObjectConfig &config = m_object->config(); const coordf_t point_spread = scale_(config.tree_support_branch_distance.value); + const coordf_t max_bridge_length = scale_(config.max_bridge_length.value); + coord_t radius = scale_(config.tree_support_branch_diameter.value / 2); + radius = std::max(m_min_radius, radius); //First generate grid points to cover the entire area of the print. BoundingBox bounding_box = m_object->bounding_box(); @@ -3077,8 +3017,9 @@ void TreeSupport::generate_contact_points(std::vector> bounding_box_size(0) * sin_angle + bounding_box_size(1) * cos_angle) / 2; std::vector grid_points; - for (auto x = -rotated_dims(0); x < rotated_dims(0); x += point_spread) { - for (auto y = -rotated_dims(1); y < rotated_dims(1); y += point_spread) { + coordf_t sample_step = std::max(point_spread, max_bridge_length / 2); + for (auto x = -rotated_dims(0); x < rotated_dims(0); x += sample_step) { + for (auto y = -rotated_dims(1); y < rotated_dims(1); y += sample_step) { Point pt(x, y); pt.rotate(cos_angle, sin_angle); pt += center; @@ -3090,12 +3031,18 @@ void TreeSupport::generate_contact_points(std::vector> const coordf_t layer_height = config.layer_height.value; coordf_t z_distance_top = m_slicing_params.gap_support_object; + if (!m_support_params.independent_layer_height) { + z_distance_top = round(z_distance_top / layer_height) * layer_height; // BBS: add extra distance if thick bridge is enabled // Note: normal support uses print_z, but tree support uses integer layers, so we need to subtract layer_height if (!m_slicing_params.soluble_interface && m_object_config->thick_bridges) { z_distance_top += m_object->layers()[0]->regions()[0]->region().bridging_height_avg(m_object->print()->config()) - layer_height; + } } const int z_distance_top_layers = round_up_divide(scale_(z_distance_top), scale_(layer_height)) + 1; //Support must always be 1 layer below overhang. + // virtual layer with 0 height will be deleted + if (z_distance_top == 0) + z_distance_top = 0.001; size_t support_roof_layers = config.support_interface_top_layers.value; if (support_roof_layers > 0) @@ -3108,140 +3055,131 @@ void TreeSupport::generate_contact_points(std::vector> return; int nonempty_layers = 0; - std::vector all_nodes; - for (size_t layer_nr = 1; layer_nr < m_object->layers().size(); layer_nr++) - { - if (m_object->print()->canceled()) - break; - auto ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); - const ExPolygons &overhang = ts_layer->overhang_areas; - auto & curr_nodes = contact_nodes[layer_nr]; - if (overhang.empty()) - continue; - - std::unordered_set already_inserted; - auto print_z = m_object->get_layer(layer_nr)->print_z; - auto height = m_object->get_layer(layer_nr)->height; - - for (const ExPolygon &overhang_part : overhang) - { - BoundingBox overhang_bounds = get_extents(overhang_part); - if (m_support_params.support_style==smsTreeHybrid && overhang_part.area() > m_support_params.thresh_big_overhang) { - if (!overlaps({ overhang_part }, m_ts_data->m_layer_outlines_below[layer_nr-1])) { - Point candidate = overhang_bounds.center(); - SupportNode* contact_node = new SupportNode(candidate, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, true, SupportNode::NO_PARENT, print_z, - height, z_distance_top); - contact_node->type = ePolygon; + tbb::concurrent_vector all_nodes; + tbb::parallel_for(tbb::blocked_range(1, m_object->layers().size()), [&](const tbb::blocked_range& range) { + for (size_t layer_nr = range.begin(); layer_nr < range.end(); layer_nr++) { + if (m_object->print()->canceled()) + break; + auto ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); + Layer* layer = m_object->get_layer(layer_nr); + auto& curr_nodes = contact_nodes[layer_nr - 1]; + if (ts_layer->overhang_areas.empty()) continue; + std::unordered_set already_inserted; + auto print_z = m_object->get_layer(layer_nr)->print_z; + auto bottom_z = m_object->get_layer(layer_nr)->bottom_z(); + auto height = m_object->get_layer(layer_nr)->height; + bool added = false; // Did we add a point this way? + bool is_sharp_tail = false; + auto insert_point = [&](Point pt, const ExPolygon& overhang_part, bool force_add = false) { + Point hash_pos = pt / ((radius + 1) / 1); + SupportNode* contact_node = nullptr; + if (force_add || !already_inserted.count(hash_pos)) { + already_inserted.emplace(hash_pos); + bool to_buildplate = true; + // add a new node as a virtual node which acts as the invisible gap between support and object + // distance_to_top=-1: it's virtual + // print_z=object_layer->bottom_z: it directly contacts the bottom + // height=z_distance_top: it's height is exactly the gap distance + // dist_mm_to_top=0: it directly contacts the bottom + contact_node = m_ts_data->create_node(pt, -1, layer_nr - 1, support_roof_layers + 1, to_buildplate, SupportNode::NO_PARENT, bottom_z, z_distance_top, 0, + unscale_(radius)); contact_node->overhang = overhang_part; - contact_node->radius = unscale_(overhang_bounds.radius()); + contact_node->is_sharp_tail = is_sharp_tail; + if (is_sharp_tail) { + int ind = overhang_part.contour.closest_point_index(pt); + auto n1 = (overhang_part.contour[ind] - overhang_part.contour[ind - 1]).cast().normalized(); + auto n2 = (overhang_part.contour[ind] - overhang_part.contour[ind + 1]).cast().normalized(); + contact_node->skin_direction = scaled((n1 + n2).normalized()); + } curr_nodes.emplace_back(contact_node); - continue; - } - } + added = true; + }; + return contact_node; + }; - // add supports at corners for both auto and manual overhangs, github #2008 - if (/*ts_layer->overhang_types[&overhang_part] == SupportLayer::Detected*/1) { - // add points at corners - auto& points = overhang_part.contour.points; - int nSize = points.size(); - for (int i = 0; i < nSize; i++) { - auto pt = points[i]; - auto v1 = (pt - points[(i - 1 + nSize) % nSize]).cast().normalized(); - auto v2 = (pt - points[(i + 1) % nSize]).cast().normalized(); - if (v1.dot(v2) > -0.7) { // angle smaller than 135 degrees - SupportNode* contact_node = new SupportNode(pt, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, true, SupportNode::NO_PARENT, print_z, - height, z_distance_top); - contact_node->overhang = overhang_part; - contact_node->is_corner = true; + for (const auto& area_type : ts_layer->overhang_types) { + const auto& overhang_part = *area_type.first; + is_sharp_tail = area_type.second == SupportLayer::SharpTail; + BoundingBox overhang_bounds = get_extents(overhang_part); + if (m_support_params.support_style == smsTreeHybrid && overhang_part.area() > m_support_params.thresh_big_overhang && !is_sharp_tail) { + if (!overlaps({ overhang_part }, m_ts_data->m_layer_outlines_below[layer_nr - 1])) { + Point candidate = overhang_bounds.center(); + SupportNode* contact_node = insert_point(candidate, overhang_part, true); + contact_node->type = ePolygon; + contact_node->radius = unscale_(overhang_bounds.radius()); curr_nodes.emplace_back(contact_node); - - Point hash_pos = pt / ((m_min_radius + 1) / 1); - already_inserted.emplace(hash_pos); + continue; } } - } - auto& move_bounds_layer = move_bounds[layer_nr]; - if (move_bounds_layer.empty()) { - overhang_bounds.inflated(half_overhang_distance); - bool added = false; //Did we add a point this way? - for (Point candidate : grid_points) { - if (overhang_bounds.contains(candidate)) { - // BBS: move_inside_expoly shouldn't be used if candidate is already inside, as it moves point to boundary and the inside is not well supported! - bool is_inside = is_inside_ex(overhang_part, candidate); - if (!is_inside) { - constexpr coordf_t distance_inside = 0; // Move point towards the border of the polygon if it is closer than half the overhang distance: Catch points that - // fall between overhang areas on constant surfaces. - is_inside = move_inside_expoly(overhang_part, candidate, distance_inside, half_overhang_distance); - } - if (is_inside) { - // normalize the point a bit to also catch points which are so close that inserting it would achieve nothing - Point hash_pos = candidate / ((m_min_radius + 1) / 1); - if (!already_inserted.count(hash_pos)) { - already_inserted.emplace(hash_pos); - constexpr bool to_buildplate = true; - SupportNode* contact_node = new SupportNode(candidate, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, to_buildplate, - SupportNode::NO_PARENT, print_z, height, z_distance_top); - contact_node->overhang=overhang_part; - curr_nodes.emplace_back(contact_node); - added = true; - } - } - } - } - if (!added) //If we didn't add any points due to bad luck, we want to add one anyway such that loose parts are also supported. + + // add supports at corners for both auto and manual overhangs, github #2008 { - auto bbox = overhang_part.contour.bounding_box(); - Points candidates; - if (ts_layer->overhang_types[&overhang_part] == SupportLayer::Detected) - candidates = { bbox.min, bounding_box_middle(bbox), bbox.max }; - else - candidates = { bounding_box_middle(bbox) }; - for (Point candidate : candidates) { - if (!overhang_part.contains(candidate)) - move_inside_expoly(overhang_part, candidate); - constexpr bool to_buildplate = true; - SupportNode* contact_node = new SupportNode(candidate, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, to_buildplate, SupportNode::NO_PARENT, - print_z, height, z_distance_top); - contact_node->overhang=overhang_part; + auto& points = overhang_part.contour.points; + int nSize = points.size(); + for (int i = 0; i < nSize; i++) { + auto pt = points[i]; + auto v1 = (pt - points[(i - 1 + nSize) % nSize]).cast().normalized(); + auto v2 = (pt - points[(i + 1) % nSize]).cast().normalized(); + if (v1.dot(v2) > -0.7) { // angle smaller than 135 degrees + SupportNode* contact_node = insert_point(pt, overhang_part); + if (contact_node) { + contact_node->is_corner = true; + } + } + } + } + auto& move_bounds_layer = move_bounds[layer_nr]; + if (move_bounds_layer.empty()) { + overhang_bounds.inflated(half_overhang_distance); + bool added = false; //Did we add a point this way? + for (Point candidate : grid_points) { + if (overhang_bounds.contains(candidate)) { + // BBS: move_inside_expoly shouldn't be used if candidate is already inside, as it moves point to boundary and the inside is not well supported! + bool is_inside = is_inside_ex(overhang_part, candidate); + if (!is_inside) { + constexpr coordf_t distance_inside = 0; // Move point towards the border of the polygon if it is closer than half the overhang distance: Catch points that + // fall between overhang areas on constant surfaces. + is_inside = move_inside_expoly(overhang_part, candidate, distance_inside, half_overhang_distance); + } + if (is_inside) { + SupportNode* contact_node = insert_point(candidate, overhang_part); + if (contact_node) + added = true; + } + } + } + if (!added) //If we didn't add any points due to bad luck, we want to add one anyway such that loose parts are also supported. + { + auto bbox = overhang_part.contour.bounding_box(); + Points candidates; + if (ts_layer->overhang_types[&overhang_part] == SupportLayer::Detected) + candidates = { bbox.min, bounding_box_middle(bbox), bbox.max }; + else + candidates = { bounding_box_middle(bbox) }; + for (Point candidate : candidates) { + if (!overhang_part.contains(candidate)) + move_inside_expoly(overhang_part, candidate); + insert_point(candidate, overhang_part); + } + } + } + else { + for (auto& elem : move_bounds_layer) { + SupportNode* contact_node = m_ts_data->create_node(elem.state.result_on_layer, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, elem.state.to_buildplate, + SupportNode::NO_PARENT, print_z, height, z_distance_top); + contact_node->overhang = ExPolygon(elem.influence_area.front()); curr_nodes.emplace_back(contact_node); } } - if (ts_layer->overhang_types[&overhang_part] == SupportLayer::Enforced || is_slim) { - // remove close points - for (auto it = curr_nodes.begin(); it != curr_nodes.end();) { - bool is_duplicate = false; - if (!(*it)->is_corner) { - Slic3r::Vec3f curr_pt((*it)->position(0), (*it)->position(1), scale_((*it)->print_z)); - for (auto& pt : all_nodes) { - auto dif = curr_pt - pt; - if (dif.norm() < point_spread / 2) { - delete (*it); - it = curr_nodes.erase(it); - is_duplicate = true; - break; - } - } - } - if (!is_duplicate) it++; - } - } } - else { - for (auto& elem:move_bounds_layer) { - SupportNode* contact_node = new SupportNode(elem.state.result_on_layer, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, elem.state.to_buildplate, - SupportNode::NO_PARENT, print_z, height, z_distance_top); - contact_node->overhang = ExPolygon(elem.influence_area.front()); - curr_nodes.emplace_back(contact_node); - } - } - } - if (!curr_nodes.empty()) nonempty_layers++; - for (auto node : curr_nodes) { all_nodes.emplace_back(node->position(0), node->position(1), scale_(node->print_z)); } + if (!curr_nodes.empty()) nonempty_layers++; + for (auto node : curr_nodes) { all_nodes.emplace_back(node->position(0), node->position(1), scale_(node->print_z)); } #ifdef SUPPORT_TREE_DEBUG_TO_SVG - draw_contours_and_nodes_to_svg(std::to_string(print_z), overhang, m_ts_data->m_layer_outlines_below[layer_nr], {}, - contact_nodes[layer_nr], {}, "init_contact_points", { "overhang","outlines","" }); + draw_contours_and_nodes_to_svg(debug_out_path("init_contact_points_%.2f.svg", print_z), ts_layer->overhang_areas, m_ts_data->m_layer_outlines_below[layer_nr], {}, + contact_nodes[layer_nr], contact_nodes[layer_nr - 1], { "overhang","outlines","" }); #endif - } + }} + ); // end tbb::parallel_for int nNodes = all_nodes.size(); avg_node_per_layer = nodes_angle = 0; if (nNodes > 0) { @@ -3281,6 +3219,7 @@ void TreeSupport::insert_dropped_node(std::vector& nodes_layer, Su TreeSupportData::TreeSupportData(const PrintObject &object, coordf_t xy_distance, coordf_t max_move, coordf_t radius_sample_resolution) : m_xy_distance(xy_distance), m_max_move(max_move), m_radius_sample_resolution(radius_sample_resolution) { + clear_nodes(); for (std::size_t layer_nr = 0; layer_nr < object.layers().size(); ++layer_nr) { const Layer* layer = object.get_layer(layer_nr); @@ -3304,7 +3243,7 @@ const ExPolygons& TreeSupportData::get_collision(coordf_t radius, size_t layer_n RadiusLayerPair key{radius, layer_nr}; const auto it = m_collision_cache.find(key); const ExPolygons& collision = it != m_collision_cache.end() ? it->second : calculate_collision(key); - profiler.stage_add(STAGE_get_collision, true); + profiler.stage_add(STAGE_get_collision); return collision; } @@ -3316,7 +3255,7 @@ const ExPolygons& TreeSupportData::get_avoidance(coordf_t radius, size_t layer_n const auto it = m_avoidance_cache.find(key); const ExPolygons& avoidance = it != m_avoidance_cache.end() ? it->second : calculate_avoidance(key); - profiler.stage_add(STAGE_GET_AVOIDANCE, true); + profiler.stage_add(STAGE_GET_AVOIDANCE); return avoidance; } @@ -3340,6 +3279,35 @@ Polygons TreeSupportData::get_contours_with_holes(size_t layer_nr) const return contours; } +SupportNode* TreeSupportData::create_node(const Point position, const int distance_to_top, const int obj_layer_nr, const int support_roof_layers_below, const bool to_buildplate, SupportNode* parent, coordf_t print_z_, coordf_t height_, coordf_t dist_mm_to_top_, coordf_t radius_) +{ + // this function may be called from multiple threads, need to lock + m_mutex.lock(); + SupportNode* node = new SupportNode(position, distance_to_top, obj_layer_nr, support_roof_layers_below, to_buildplate, parent, print_z_, height_, dist_mm_to_top_, radius_); + contact_nodes.emplace_back(node); + m_mutex.unlock(); + return node; +} +void TreeSupportData::clear_nodes() +{ + for (auto node : contact_nodes) { + delete node; + } + contact_nodes.clear(); +} +void TreeSupportData::remove_invalid_nodes() +{ + for (auto it = contact_nodes.begin(); it != contact_nodes.end();) { + if ((*it)->valid==false) { + delete (*it); + it = contact_nodes.erase(it); + } + else { + it++; + } + } +} + coordf_t TreeSupportData::ceil_radius(coordf_t radius) const { size_t factor = (size_t)(radius / m_radius_sample_resolution); diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index 62cce6ffea..da58aaf498 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -31,14 +31,8 @@ struct LayerHeightData size_t next_layer_nr = 0; LayerHeightData() = default; LayerHeightData(coordf_t z, coordf_t h, size_t next_layer) : print_z(z), height(h), next_layer_nr(next_layer) {} -}; - -struct TreeNode { - Vec3f pos; - std::vector children; // index of children in the storing vector - std::vector parents; // index of parents in the storing vector - TreeNode(Point pt, float z) { - pos = { float(unscale_(pt.x())),float(unscale_(pt.y())),z }; + coordf_t bottom_z() { + return print_z - height; } }; @@ -57,40 +51,45 @@ struct SupportNode static constexpr SupportNode* NO_PARENT = nullptr; SupportNode() - : distance_to_top(0) - , position(Point(0, 0)) - , obj_layer_nr(0) - , support_roof_layers_below(0) - , to_buildplate(true) - , parent(nullptr) - , print_z(0.0) - , height(0.0) + : distance_to_top(0) + , position(Point(0, 0)) + , obj_layer_nr(0) + , support_roof_layers_below(0) + , to_buildplate(true) + , parent(nullptr) + , print_z(0.0) + , height(0.0) {} // when dist_mm_to_top_==0, new node's dist_mm_to_top=parent->dist_mm_to_top + parent->height; SupportNode(const Point position, const int distance_to_top, const int obj_layer_nr, const int support_roof_layers_below, const bool to_buildplate, SupportNode* parent, - coordf_t print_z_, coordf_t height_, coordf_t dist_mm_to_top_=0) - : distance_to_top(distance_to_top) - , position(position) - , obj_layer_nr(obj_layer_nr) - , support_roof_layers_below(support_roof_layers_below) - , to_buildplate(to_buildplate) - , parent(parent) - , print_z(print_z_) - , height(height_) - , dist_mm_to_top(dist_mm_to_top_) + coordf_t print_z_, coordf_t height_, coordf_t dist_mm_to_top_ = 0, coordf_t radius_ = 0) + : distance_to_top(distance_to_top) + , position(position) + , obj_layer_nr(obj_layer_nr) + , support_roof_layers_below(support_roof_layers_below) + , to_buildplate(to_buildplate) + , parent(parent) + , print_z(print_z_) + , height(height_) + , dist_mm_to_top(dist_mm_to_top_) + , radius(radius_) { if (parent) { parents.push_back(parent); - type = parent->type; + type = parent->type; overhang = parent->overhang; - if (dist_mm_to_top==0) + if (dist_mm_to_top == 0) dist_mm_to_top = parent->dist_mm_to_top + parent->height; + if (radius == 0) + radius = parent->radius + (dist_mm_to_top - parent->dist_mm_to_top) * diameter_angle_scale_factor; parent->child = this; for (auto& neighbor : parent->merged_neighbours) { neighbor->child = this; parents.push_back(neighbor); } + is_sharp_tail = parent->is_sharp_tail; + skin_direction = parent->skin_direction; } } @@ -109,18 +108,23 @@ struct SupportNode int distance_to_top; coordf_t dist_mm_to_top = 0; // dist to bottom contact in mm + // all nodes will have same diameter_angle_scale_factor because it's defined by user + static double diameter_angle_scale_factor; + /*! * \brief The position of this node on the layer. */ - Point position; - Point movement; // movement towards neighbor center or outline - mutable double radius = 0.0; - mutable double max_move_dist = 0.0; - TreeNodeType type = eCircle; - bool is_corner = false; - bool is_processed = false; - bool need_extra_wall = false; - ExPolygon overhang; // when type==ePolygon, set this value to get original overhang area + Point position; + Point movement; // movement towards neighbor center or outline + mutable double radius = 0.0; + mutable double max_move_dist = 0.0; + TreeNodeType type = eCircle; + bool is_corner = false; + bool is_processed = false; + bool need_extra_wall = false; + bool is_sharp_tail = false; + bool valid = true; + ExPolygon overhang; // when type==ePolygon, set this value to get original overhang area /*! * \brief The direction of the skin lines above the tip of the branch. @@ -128,7 +132,7 @@ struct SupportNode * This determines in which direction we should reduce the width of the * branch. */ - bool skin_direction; + Point skin_direction; /*! * \brief The number of support roof layers below this one. @@ -199,6 +203,9 @@ public: * \param collision_resolution */ TreeSupportData(const PrintObject& object, coordf_t max_move, coordf_t radius_sample_resolution, coordf_t collision_resolution); + ~TreeSupportData() { + clear_nodes(); + } TreeSupportData(TreeSupportData&&) = default; TreeSupportData& operator=(TreeSupportData&&) = default; @@ -237,9 +244,13 @@ public: Polygons get_contours(size_t layer_nr) const; Polygons get_contours_with_holes(size_t layer_nr) const; + SupportNode* create_node(const Point position, const int distance_to_top, const int obj_layer_nr, const int support_roof_layers_below, const bool to_buildplate, SupportNode* parent, + coordf_t print_z_, coordf_t height_, coordf_t dist_mm_to_top_ = 0, coordf_t radius_ = 0); + void clear_nodes(); + void remove_invalid_nodes(); std::vector layer_heights; - std::vector tree_nodes; + std::vector contact_nodes; private: /*! @@ -285,6 +296,7 @@ private: */ const ExPolygons& calculate_avoidance(const RadiusLayerPair& key) const; + tbb::spin_mutex m_mutex; public: bool is_slim = false; diff --git a/src/libslic3r/utils.cpp b/src/libslic3r/utils.cpp index b6900553ee..744eb98311 100644 --- a/src/libslic3r/utils.cpp +++ b/src/libslic3r/utils.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include "format.hpp" #include "Platform.hpp" @@ -298,12 +299,13 @@ static std::atomic debug_out_path_called(false); std::string debug_out_path(const char *name, ...) { - static constexpr const char *SLIC3R_DEBUG_OUT_PATH_PREFIX = "out/"; + //static constexpr const char *SLIC3R_DEBUG_OUT_PATH_PREFIX = "out/"; + auto svg_folder = boost::filesystem::path(g_data_dir) / "SVG/"; if (! debug_out_path_called.exchange(true)) { - std::string path = boost::filesystem::system_complete(SLIC3R_DEBUG_OUT_PATH_PREFIX).string(); - if (!boost::filesystem::exists(path)) { - boost::filesystem::create_directory(path); + if (!boost::filesystem::exists(svg_folder)) { + boost::filesystem::create_directory(svg_folder); } + std::string path = boost::filesystem::system_complete(svg_folder).string(); printf("Debugging output files will be written to %s\n", path.c_str()); } char buffer[2048]; @@ -311,7 +313,13 @@ std::string debug_out_path(const char *name, ...) va_start(args, name); std::vsprintf(buffer, name, args); va_end(args); - return std::string(SLIC3R_DEBUG_OUT_PATH_PREFIX) + std::string(buffer); + + std::string buf(buffer); + if (size_t pos = buf.find_first_of('/'); pos != std::string::npos) { + std::string sub_dir = buf.substr(0, pos); + std::filesystem::create_directory(svg_folder.string() + sub_dir); + } + return svg_folder.string() + std::string(buffer); } namespace logging = boost::log; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 916cb38ce6..8ed06d1d87 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1537,9 +1537,9 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) if (opt_key == "support_interface_filament") { int interface_filament_id = m_config->opt_int("support_interface_filament") - 1; // the displayed id is based from 1, while internal id is based from 0 if (is_support_filament(interface_filament_id) && !(m_config->opt_float("support_top_z_distance") == 0 && m_config->opt_float("support_interface_spacing") == 0 && - m_config->opt_enum("support_interface_pattern") == SupportMaterialInterfacePattern::smipConcentric)) { + m_config->opt_enum("support_interface_pattern") == SupportMaterialInterfacePattern::smipRectilinearInterlaced)) { wxString msg_text = _L("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"); + "0 top z distance, 0 interface spacing, interlaced rectilinear pattern and disable independent support layer height"); msg_text += "\n\n" + _L("Change these settings automatically? \n" "Yes - Change these settings automatically\n" "No - Do not change these settings for me"); @@ -1548,7 +1548,7 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) if (dialog.ShowModal() == wxID_YES) { new_conf.set_key_value("support_top_z_distance", new ConfigOptionFloat(0)); new_conf.set_key_value("support_interface_spacing", new ConfigOptionFloat(0)); - new_conf.set_key_value("support_interface_pattern", new ConfigOptionEnum(SupportMaterialInterfacePattern::smipConcentric)); + new_conf.set_key_value("support_interface_pattern", new ConfigOptionEnum(SupportMaterialInterfacePattern::smipRectilinearInterlaced)); new_conf.set_key_value("independent_support_layer_height", new ConfigOptionBool(false)); m_config_manipulation.apply(m_config, &new_conf); } From c7febad548e9b8667b8491c793d760ce8e592682 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 26 Jan 2024 16:19:59 +0800 Subject: [PATCH 021/129] FIX: raft_first_layer_expansion not working with tree support jira: STUDIO-6043 github: #3355 Change-Id: Idf2a0053026a6f232a5239c3f504191321feb6ee (cherry picked from commit 3eb35f5b1a53990d215ae4d3527917611f5083c6) (cherry picked from commit 0589348c3264e56b9e3a16afea95a5d44983498b) --- src/libslic3r/Print.hpp | 2 +- src/libslic3r/Support/TreeSupport.cpp | 56 +++++++++++++++++---------- src/libslic3r/Support/TreeSupport.hpp | 2 +- 3 files changed, 37 insertions(+), 23 deletions(-) diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index 7b7d13e709..9618e69dfc 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -385,7 +385,7 @@ public: size_t support_layer_count() const { return m_support_layers.size(); } void clear_support_layers(); - SupportLayer* get_support_layer(int idx) { return m_support_layers[idx]; } + SupportLayer* get_support_layer(int idx) { return idxsupport_layer_count() >= m_object->layer_count()) return; + bool tree_support_enable = m_object_config->enable_support.value && is_tree(m_object_config->support_type.value); + // Clear and create Tree Support Layers m_object->clear_support_layers(); m_object->clear_tree_support_preview_cache(); - create_tree_support_layers(); + create_tree_support_layers(tree_support_enable); + if (!tree_support_enable) + return; const PrintObjectConfig& config = m_object->config(); SupportType stype = support_type; @@ -1098,7 +1102,9 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) #endif } -void TreeSupport::create_tree_support_layers() +// create support layers for raft and tree support +// if support is disabled, only raft layers are created +void TreeSupport::create_tree_support_layers(bool support_enabled) { int layer_id = 0; coordf_t raft_print_z = 0.f; @@ -1115,6 +1121,9 @@ void TreeSupport::create_tree_support_layers() m_object->add_tree_support_layer(layer_id, m_slicing_params.base_raft_layer_height, raft_print_z, raft_slice_z); } + if (!support_enabled) + return; + for (Layer *layer : m_object->layers()) { SupportLayer* ts_layer = m_object->add_tree_support_layer(layer_id++, layer->height, layer->print_z, layer->slice_z); if (ts_layer->id() > m_raft_layers) { @@ -1319,20 +1328,10 @@ void TreeSupport::generate_toolpaths() raft_areas = std::move(offset_ex(raft_areas, scale_(object_config.raft_first_layer_expansion))); - // generate raft tool path - if (m_raft_layers > 0) - { - SupportLayer *ts_layer = m_object->support_layers().front(); - Flow flow = Flow(support_extrusion_width, ts_layer->height, nozzle_diameter); - extrusion_entities_append_loops(ts_layer->support_fills.entities, to_polygons(raft_areas), erSupportMaterial, - float(flow.mm3_per_mm()), float(flow.width()), float(flow.height())); - raft_areas = offset_ex(raft_areas, -flow.scaled_spacing() / 2.); - } - for (size_t layer_nr = 0; layer_nr < m_slicing_params.base_raft_layers; layer_nr++) { SupportLayer *ts_layer = m_object->get_support_layer(layer_nr); - coordf_t expand_offset = (layer_nr == 0 ? 0. : -1.); - raft_areas = offset_ex(raft_areas, scale_(expand_offset)); + coordf_t expand_offset = (layer_nr == 0 ? m_object_config->raft_first_layer_expansion.value : 0.); + auto raft_areas1 = offset_ex(raft_areas, scale_(expand_offset)); Flow support_flow = Flow(support_extrusion_width, ts_layer->height, nozzle_diameter); Fill* filler_interface = Fill::new_from_type(ipRectilinear); @@ -1343,16 +1342,25 @@ void TreeSupport::generate_toolpaths() fill_params.density = object_config.raft_first_layer_density * 0.01; fill_params.dont_adjust = true; - fill_expolygons_generate_paths(ts_layer->support_fills.entities, raft_areas, + // wall of first layer raft + if (layer_nr == 0) { + Flow flow = Flow(support_extrusion_width, ts_layer->height, nozzle_diameter); + extrusion_entities_append_loops(ts_layer->support_fills.entities, to_polygons(raft_areas1), erSupportMaterial, + float(flow.mm3_per_mm()), float(flow.width()), float(flow.height())); + raft_areas1 = offset_ex(raft_areas1, -flow.scaled_spacing() / 2.); + } + fill_expolygons_generate_paths(ts_layer->support_fills.entities, raft_areas1, filler_interface, fill_params, erSupportMaterial, support_flow); } // subtract the non-raft support bases, otherwise we'll get support base on top of raft interfaces which is not stable - SupportLayer* first_non_raft_layer = m_object->get_support_layer(m_raft_layers); ExPolygons first_non_raft_base; - for (auto& area_group : first_non_raft_layer->area_groups) { - if (area_group.type == SupportLayer::BaseType) - first_non_raft_base.emplace_back(*area_group.area); + SupportLayer* first_non_raft_layer = m_object->get_support_layer(m_raft_layers); + if (first_non_raft_layer) { + for (auto& area_group : first_non_raft_layer->area_groups) { + if (area_group.type == SupportLayer::BaseType) + first_non_raft_base.emplace_back(*area_group.area); + } } ExPolygons raft_base_areas = intersection_ex(raft_areas, first_non_raft_base); ExPolygons raft_interface_areas = diff_ex(raft_areas, raft_base_areas); @@ -1380,6 +1388,9 @@ void TreeSupport::generate_toolpaths() filler_interface, fill_params, erSupportMaterial, support_flow); } + if (m_object->support_layer_count() <= m_raft_layers) + return; + BoundingBox bbox_object(Point(-scale_(1.), -scale_(1.0)), Point(scale_(1.), scale_(1.))); std::shared_ptr filler_interface = std::shared_ptr(Fill::new_from_type(m_support_params.contact_fill_pattern)); @@ -1869,7 +1880,8 @@ void TreeSupport::draw_circles(const std::vector>& con coordf_t support_extrusion_width = m_support_params.support_extrusion_width; const float tree_brim_width = config.tree_support_brim_width.value; - const PrintObjectConfig& object_config = m_object->config(); + if (m_object->support_layer_count() <= m_raft_layers) + return; BOOST_LOG_TRIVIAL(info) << "draw_circles for object: " << m_object->model_object()->name; tbb::parallel_for(tbb::blocked_range(0, m_object->layer_count()), @@ -2180,7 +2192,7 @@ void TreeSupport::draw_circles(const std::vector>& con auto m_support_material_flow = support_material_flow(m_object, m_slicing_params.layer_height); - coordf_t support_spacing = object_config.support_base_pattern_spacing.value + m_support_material_flow.spacing(); + coordf_t support_spacing = m_object_config->support_base_pattern_spacing.value + m_support_material_flow.spacing(); coordf_t support_density = std::min(1., m_support_material_flow.spacing() / support_spacing * 2); // for lightning infill the density is defined differently, so need to double it generator = std::make_unique(m_object, contours, overhangs, []() {}, support_density); } @@ -3053,6 +3065,8 @@ void TreeSupport::generate_contact_points(std::vector> // fix bug of generating support for very thin objects if (m_object->layers().size() <= z_distance_top_layers + 1) return; + if (m_object->support_layer_count() <= m_raft_layers) + return; int nonempty_layers = 0; tbb::concurrent_vector all_nodes; diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index da58aaf498..8c4a12f43b 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -484,7 +484,7 @@ private: * If a node is already at that position in the layer, the nodes are merged. */ void insert_dropped_node(std::vector& nodes_layer, SupportNode* node); - void create_tree_support_layers(); + void create_tree_support_layers(bool support_enabled=true); void generate_toolpaths(); // get unscaled radius of node coordf_t calc_branch_radius(coordf_t base_radius, size_t layers_to_top, size_t tip_layers, double diameter_angle_scale_factor); From a2e5332eeff05bcf8f8695bddbdf18ded58fdf03 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 31 Jan 2024 14:05:09 +0800 Subject: [PATCH 022/129] FIX: z_distance_top==0 not working jira: STUDIO-6144 Change-Id: I9ddaa237e2d71c8697a41bbbdb86f70d0b1e1452 (cherry picked from commit 38ba45e9cf7f59d2c1de658a56d8f2b109721bcd) (cherry picked from commit 9d37a31338cf42a285b39daab84af5504e51d009) --- src/libslic3r/Support/TreeSupport.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 775e1f1282..fa8ee64367 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -3052,6 +3052,7 @@ void TreeSupport::generate_contact_points(std::vector> } } const int z_distance_top_layers = round_up_divide(scale_(z_distance_top), scale_(layer_height)) + 1; //Support must always be 1 layer below overhang. + int gap_layers = z_distance_top == 0 ? 0 : 1; // virtual layer with 0 height will be deleted if (z_distance_top == 0) z_distance_top = 0.001; @@ -3095,7 +3096,7 @@ void TreeSupport::generate_contact_points(std::vector> // print_z=object_layer->bottom_z: it directly contacts the bottom // height=z_distance_top: it's height is exactly the gap distance // dist_mm_to_top=0: it directly contacts the bottom - contact_node = m_ts_data->create_node(pt, -1, layer_nr - 1, support_roof_layers + 1, to_buildplate, SupportNode::NO_PARENT, bottom_z, z_distance_top, 0, + contact_node = m_ts_data->create_node(pt, -gap_layers, layer_nr - 1, support_roof_layers + 1, to_buildplate, SupportNode::NO_PARENT, bottom_z, z_distance_top, 0, unscale_(radius)); contact_node->overhang = overhang_part; contact_node->is_sharp_tail = is_sharp_tail; @@ -3179,7 +3180,7 @@ void TreeSupport::generate_contact_points(std::vector> } else { for (auto& elem : move_bounds_layer) { - SupportNode* contact_node = m_ts_data->create_node(elem.state.result_on_layer, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, elem.state.to_buildplate, + SupportNode* contact_node = m_ts_data->create_node(elem.state.result_on_layer, -gap_layers, layer_nr-1, support_roof_layers + 1, elem.state.to_buildplate, SupportNode::NO_PARENT, print_z, height, z_distance_top); contact_node->overhang = ExPolygon(elem.influence_area.front()); curr_nodes.emplace_back(contact_node); From 31a5f0d523f47e200de50cf5d4d91d765e245b88 Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 1 Feb 2024 17:39:37 +0800 Subject: [PATCH 023/129] FIX: Checking support necessity not working Only early stop detect_overhangs if support is disabled AND not checking support necessity. jira: STUDIO-6158 Change-Id: I2d9662231d941827d6392d57344f7d911f641e09 (cherry picked from commit b811a6031d1afe0e7b1cb73050fe6391a65411ef) (cherry picked from commit fa61ee6abdb4b04a2141b3f8ea9e2e8a789b7881) --- src/libslic3r/PrintObject.cpp | 14 ++++++++------ src/libslic3r/Support/TreeSupport.cpp | 15 +++++++-------- src/libslic3r/Support/TreeSupport.hpp | 4 ++-- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index b76eaa4574..d9c76ba849 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -633,13 +633,9 @@ void PrintObject::generate_support_material() if (this->set_started(posSupportMaterial)) { this->clear_support_layers(); - if ((this->has_support() && m_layers.size() > 1) || (this->has_raft() && ! m_layers.empty())) { - m_print->set_status(50, L("Generating support")); - - this->_generate_support_material(); - m_print->throw_if_canceled(); - } else if(!m_print->get_no_check_flag()) { + if(!has_support() && !m_print->get_no_check_flag()) { // BBS: pop a warning if objects have significant amount of overhangs but support material is not enabled + // Note: we also need to pop warning if support is disabled and only raft is enabled m_print->set_status(50, L("Checking support necessity")); typedef std::chrono::high_resolution_clock clock_; typedef std::chrono::duration > second_; @@ -669,6 +665,12 @@ void PrintObject::generate_support_material() #endif } + if ((this->has_support() && m_layers.size() > 1) || (this->has_raft() && !m_layers.empty())) { + m_print->set_status(50, L("Generating support")); + + this->_generate_support_material(); + m_print->throw_if_canceled(); + } this->set_done(posSupportMaterial); } } diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index fa8ee64367..66e2f57c5d 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -625,7 +625,7 @@ TreeSupport::TreeSupport(PrintObject& object, const SlicingParameters &slicing_p #define SUPPORT_SURFACES_OFFSET_PARAMETERS ClipperLib::jtSquare, 0. -void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) +void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) { // overhangs are already detected if (m_object->support_layer_count() >= m_object->layer_count()) @@ -636,8 +636,8 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) // Clear and create Tree Support Layers m_object->clear_support_layers(); m_object->clear_tree_support_preview_cache(); - create_tree_support_layers(tree_support_enable); - if (!tree_support_enable) + create_tree_support_layers(); + if (!tree_support_enable && !check_support_necessity) return; const PrintObjectConfig& config = m_object->config(); @@ -863,9 +863,11 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) ); // end tbb::parallel_for BOOST_LOG_TRIVIAL(info) << "max_cantilever_dist=" << max_cantilever_dist; + if (check_support_necessity) + return; // check if the sharp tails should be extended higher - if (is_auto(stype) && g_config_support_sharp_tails && !detect_first_sharp_tail_only) { + if (is_auto(stype) && g_config_support_sharp_tails) { for (size_t layer_nr = 0; layer_nr < m_object->layer_count(); layer_nr++) { if (m_object->print()->canceled()) break; @@ -1104,7 +1106,7 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) // create support layers for raft and tree support // if support is disabled, only raft layers are created -void TreeSupport::create_tree_support_layers(bool support_enabled) +void TreeSupport::create_tree_support_layers() { int layer_id = 0; coordf_t raft_print_z = 0.f; @@ -1121,9 +1123,6 @@ void TreeSupport::create_tree_support_layers(bool support_enabled) m_object->add_tree_support_layer(layer_id, m_slicing_params.base_raft_layer_height, raft_print_z, raft_slice_z); } - if (!support_enabled) - return; - for (Layer *layer : m_object->layers()) { SupportLayer* ts_layer = m_object->add_tree_support_layer(layer_id++, layer->height, layer->print_z, layer->slice_z); if (ts_layer->id() > m_raft_layers) { diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index 8c4a12f43b..d5e4d0fe2f 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -375,7 +375,7 @@ public: */ void generate(); - void detect_overhangs(bool detect_first_sharp_tail_only=false); + void detect_overhangs(bool check_support_necessity = false); int avg_node_per_layer = 0; @@ -484,7 +484,7 @@ private: * If a node is already at that position in the layer, the nodes are merged. */ void insert_dropped_node(std::vector& nodes_layer, SupportNode* node); - void create_tree_support_layers(bool support_enabled=true); + void create_tree_support_layers(); void generate_toolpaths(); // get unscaled radius of node coordf_t calc_branch_radius(coordf_t base_radius, size_t layers_to_top, size_t tip_layers, double diameter_angle_scale_factor); From 562dc76ab02316abd5ad1cd32846c526dd58eef9 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 6 Mar 2024 09:50:15 +0800 Subject: [PATCH 024/129] FIX: raft of tree support was incorrect 1. Raft was not generated when tree support is selected but enable_support is false. 2. Raft angle and density of tree support was incorrect github: #3675 Change-Id: Ifd78bf619a28eb03a908e75ad56af4934b6b08b7 (cherry picked from commit 2a448095a2fb4a2abebb0a5c8082a2ddbb635f16) (cherry picked from commit e7ffe31cb3c6b526268adb4c2349a2623b181c53) --- src/libslic3r/Support/TreeSupport.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 66e2f57c5d..3f78d5b091 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1333,12 +1333,13 @@ void TreeSupport::generate_toolpaths() auto raft_areas1 = offset_ex(raft_areas, scale_(expand_offset)); Flow support_flow = Flow(support_extrusion_width, ts_layer->height, nozzle_diameter); - Fill* filler_interface = Fill::new_from_type(ipRectilinear); - filler_interface->angle = layer_nr == 0 ? 90 : 0; - filler_interface->spacing = support_extrusion_width; + Fill* filler_raft = Fill::new_from_type(ipRectilinear); + filler_raft->angle = layer_nr == 0 ? PI/2 : 0; + filler_raft->spacing = support_flow.spacing(); FillParams fill_params; - fill_params.density = object_config.raft_first_layer_density * 0.01; + coordf_t raft_density = std::min(1., support_flow.spacing() / (object_config.support_base_pattern_spacing.value + support_flow.spacing())); + fill_params.density = layer_nr == 0 ? object_config.raft_first_layer_density * 0.01 : raft_density; fill_params.dont_adjust = true; // wall of first layer raft @@ -1349,7 +1350,7 @@ void TreeSupport::generate_toolpaths() raft_areas1 = offset_ex(raft_areas1, -flow.scaled_spacing() / 2.); } fill_expolygons_generate_paths(ts_layer->support_fills.entities, raft_areas1, - filler_interface, fill_params, erSupportMaterial, support_flow); + filler_raft, fill_params, erSupportMaterial, support_flow); } // subtract the non-raft support bases, otherwise we'll get support base on top of raft interfaces which is not stable @@ -1372,8 +1373,8 @@ void TreeSupport::generate_toolpaths() Flow support_flow(support_extrusion_width, ts_layer->height, nozzle_diameter); Fill* filler_interface = Fill::new_from_type(ipRectilinear); - filler_interface->angle = 0; - filler_interface->spacing = support_extrusion_width; + filler_interface->angle = PI / 2; // interface should be perpendicular to base + filler_interface->spacing = support_flow.spacing(); FillParams fill_params; fill_params.density = interface_density; From 715e8e1c32155eb5c0cba7fe8752f9a709c1009d Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 7 Mar 2024 09:26:48 +0800 Subject: [PATCH 025/129] FIX: improve cantilever detection of tree support github: #3667 Change-Id: I5fd6d7d5a6e80aaa563f7d033381e6b8cb9093e0 (cherry picked from commit 3f5fdf82dcaa8636d295794a1113aab78f7327af) (cherry picked from commit 58bba45bc2294ac80c624c0032bfa284228eaa2f) --- src/libslic3r/Support/TreeSupport.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 3f78d5b091..f80564c02c 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -778,6 +778,7 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) Layer* lower_layer = layer->lower_layer; coordf_t lower_layer_offset = layer_nr < enforce_support_layers ? -0.15 * extrusion_width : (float)lower_layer->height / tan(threshold_rad); + //lower_layer_offset = std::min(lower_layer_offset, extrusion_width); coordf_t support_offset_scaled = scale_(lower_layer_offset); // Filter out areas whose diameter that is smaller than extrusion_width. Do not use offset2() for this purpose! ExPolygons lower_polys; @@ -838,7 +839,8 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) // check cantilever { - auto cluster_boundary_ex = intersection_ex(poly, offset_ex(lower_layer->lslices, scale_(0.5))); + // lower_layer_offset may be very small, so we need to do max and then add 0.1 + auto cluster_boundary_ex = intersection_ex(poly, offset_ex(lower_layer->lslices, scale_(std::max(extrusion_width,lower_layer_offset)+0.1))); Polygons cluster_boundary = to_polygons(cluster_boundary_ex); if (cluster_boundary.empty()) continue; double dist_max = 0; From c199730004cc0ca2c2a91dadc63ad859d028800e Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 14 Sep 2023 14:11:12 +0800 Subject: [PATCH 026/129] FIX: tree support detect overhang inaccurate Jira: STUDIO-3657 Change-Id: I1ef4ca3ec299b121eb467afc12acee68e0f12b39 (cherry picked from commit 36f8937ae0d0d79c7558662903fffef20b528cb8) (cherry picked from commit a631e6cb99ee3f9b2f47aaa4d90831df623a0018) --- src/libslic3r/Support/TreeSupport.cpp | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index f80564c02c..fe1ad5f053 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -800,20 +800,15 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) ExPolygons lower_layer_offseted = offset_ex(lower_polys, support_offset_scaled, SUPPORT_SURFACES_OFFSET_PARAMETERS); ExPolygons overhang_areas = diff_ex(curr_polys, lower_layer_offseted); - overhang_areas.erase(std::remove_if(overhang_areas.begin(), overhang_areas.end(), - [extrusion_width_scaled](ExPolygon& area) { return offset_ex(area, -0.1 * extrusion_width_scaled).empty(); }), - overhang_areas.end()); - - if (is_auto(stype) && g_config_support_sharp_tails) { // BBS detect sharp tail for (const ExPolygon* expoly : curr_poly_ptrs) { bool is_sharp_tail = false; // 1. nothing below - // this is a sharp tail region if it's small but non-ignorable + // this is a sharp tail region if it's floating and non-ignorable if (!overlaps(offset_ex(*expoly, 0.5 * extrusion_width_scaled), lower_polys)) { - is_sharp_tail = expoly->area() < area_thresh_well_supported && !offset_ex(*expoly, -0.1 * extrusion_width_scaled).empty(); + is_sharp_tail = !offset_ex(*expoly, -0.1 * extrusion_width_scaled).empty(); } if (is_sharp_tail) { @@ -834,7 +829,6 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); for (ExPolygon& poly : overhang_areas) { - if (offset_ex(poly, -0.1 * extrusion_width_scaled).empty()) continue; ts_layer->overhang_areas.emplace_back(poly); // check cantilever From 107551f7b494ea1a418f00bd94fc0f4f45a30d3b Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 7 Mar 2024 16:14:46 +0800 Subject: [PATCH 027/129] ENH: improve the support of blade-shape overhangs 1. reduce the gap between blade-shape overhang and support github: #3667 2. improve sharp tail detection of blade-shape overhangs by introducing lslices_extrudable. github: #2786, #3367 jira: STUDIO-5065, STUDIO-6038 Change-Id: I4e899eace1aa28b100a6f4ce2b8d740c317f5530 (cherry picked from commit 08328b848e39c345b6c7b64021d1e0f04df24d08) (cherry picked from commit 22056d5f7e7bef5574b53fc0453781cd365bf0e1) --- src/libslic3r/Layer.hpp | 3 +- src/libslic3r/Support/SupportMaterial.cpp | 16 +++---- src/libslic3r/Support/TreeSupport.cpp | 56 +++++++++++------------ 3 files changed, 37 insertions(+), 38 deletions(-) diff --git a/src/libslic3r/Layer.hpp b/src/libslic3r/Layer.hpp index 45f185c425..b9be3f3d8e 100644 --- a/src/libslic3r/Layer.hpp +++ b/src/libslic3r/Layer.hpp @@ -139,7 +139,7 @@ public: // BBS mutable ExPolygons sharp_tails; mutable ExPolygons cantilevers; - mutable std::map sharp_tails_height; + mutable std::vector sharp_tails_height; // Collection of expolygons generated by slicing the possibly multiple meshes of the source geometry // (with possibly differing extruder ID and slicing parameters) and merged. @@ -150,6 +150,7 @@ public: // These lslices are also used to detect overhangs and overlaps between successive layers, therefore it is important // that the 1st lslice is not compensated by the Elephant foot compensation algorithm. ExPolygons lslices; + ExPolygons lslices_extrudable; // BBS: the extrudable part of lslices used for tree support std::vector lslices_bboxes; // BBS diff --git a/src/libslic3r/Support/SupportMaterial.cpp b/src/libslic3r/Support/SupportMaterial.cpp index cbf331fd78..57567b90d8 100644 --- a/src/libslic3r/Support/SupportMaterial.cpp +++ b/src/libslic3r/Support/SupportMaterial.cpp @@ -1412,6 +1412,7 @@ static inline ExPolygons detect_overhangs( const coordf_t max_bridge_length = scale_(object_config.max_bridge_length.value); const bool bridge_no_support = object_config.bridge_no_support.value; const coordf_t xy_expansion = scale_(object_config.support_expansion.value); + float lower_layer_offset = 0; if (layer_id == 0) { @@ -1424,7 +1425,7 @@ static inline ExPolygons detect_overhangs( !(bbox_size.x() > length_thresh_well_supported && bbox_size.y() > length_thresh_well_supported)) { layer.sharp_tails.push_back(slice); - layer.sharp_tails_height.insert({ &slice, layer.height }); + layer.sharp_tails_height.push_back(layer.height); } } } @@ -1444,7 +1445,6 @@ static inline ExPolygons detect_overhangs( } } - float lower_layer_offset = 0; for (LayerRegion *layerm : layer.regions()) { // Extrusion width accounts for the roundings of the extrudates. // It is the maximum widh of the extrudate. @@ -1506,7 +1506,7 @@ static inline ExPolygons detect_overhangs( if (is_sharp_tail) { ExPolygons overhang = diff_ex({ expoly }, lower_layer_expolys); layer.sharp_tails.push_back(expoly); - layer.sharp_tails_height.insert({ &expoly, accum_height }); + layer.sharp_tails_height.push_back(accum_height); overhang = offset_ex(overhang, 0.05 * fw); polygons_append(diff_polygons, to_polygons(overhang)); } @@ -1546,7 +1546,7 @@ static inline ExPolygons detect_overhangs( if (layer.lower_layer) { for (ExPolygon& poly : overhang_areas) { float fw = float(layer.regions().front()->flow(frExternalPerimeter).scaled_width()); - auto cluster_boundary_ex = intersection_ex(poly, offset_ex(layer.lower_layer->lslices, scale_(0.5))); + auto cluster_boundary_ex = intersection_ex(poly, offset_ex(layer.lower_layer->lslices, std::max(fw, lower_layer_offset) + scale_(0.1))); Polygons cluster_boundary = to_polygons(cluster_boundary_ex); if (cluster_boundary.empty()) continue; double dist_max = 0; @@ -2216,9 +2216,9 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::top_contact_layers( } // 2.3 check whether sharp tail exceed the max height - for (const auto& lower_sharp_tail_height : lower_layer_sharptails_height) { - if (lower_sharp_tail_height.first->overlaps(expoly)) { - accum_height += lower_sharp_tail_height.second; + for (size_t i = 0; i < lower_layer_sharptails_height.size();i++) { + if (lower_layer_sharptails[i].overlaps(expoly)) { + accum_height += lower_layer_sharptails_height[i]; break; } } @@ -2243,7 +2243,7 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::top_contact_layers( if (is_sharp_tail) { ExPolygons overhang = diff_ex({ expoly }, lower_layer->lslices); layer->sharp_tails.push_back(expoly); - layer->sharp_tails_height.insert({ &expoly, accum_height }); + layer->sharp_tails_height.push_back( accum_height ); append(overhangs_per_layers[layer_nr], overhang); #ifdef SUPPORT_TREE_DEBUG_TO_SVG SVG svg(get_svg_filename(std::to_string(layer->print_z), "sharp_tail"), object.bounding_box()); diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index fe1ad5f053..cf7634814d 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -752,6 +752,17 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) max_cantilever_dist = 0; m_highest_overhang_layer = 0; + // calc the extrudable expolygons of each layer + tbb::parallel_for(tbb::blocked_range(0, m_object->layer_count()), + [&](const tbb::blocked_range& range) { + for (size_t layer_nr = range.begin(); layer_nr < range.end(); layer_nr++) { + if (m_object->print()->canceled()) + break; + Layer* layer = m_object->get_layer(layer_nr); + // Filter out areas whose diameter that is smaller than extrusion_width, but we don't want to lose any details. + layer->lslices_extrudable = intersection_ex(layer->lslices, offset2_ex(layer->lslices, -extrusion_width_scaled / 2, extrusion_width_scaled)); + } + }); // main part of overhang detection can be parallel tbb::parallel_for(tbb::blocked_range(0, m_object->layer_count()), [&](const tbb::blocked_range& range) { @@ -770,7 +781,7 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) if (!((bbox_size.x() > length_thresh_well_supported && bbox_size.y() > length_thresh_well_supported)) && g_config_support_sharp_tails) { layer->sharp_tails.push_back(slice); - layer->sharp_tails_height.insert({ &slice, layer->height }); + layer->sharp_tails_height.push_back(layer->height); } } continue; @@ -780,21 +791,8 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) coordf_t lower_layer_offset = layer_nr < enforce_support_layers ? -0.15 * extrusion_width : (float)lower_layer->height / tan(threshold_rad); //lower_layer_offset = std::min(lower_layer_offset, extrusion_width); coordf_t support_offset_scaled = scale_(lower_layer_offset); - // Filter out areas whose diameter that is smaller than extrusion_width. Do not use offset2() for this purpose! - ExPolygons lower_polys; - for (const ExPolygon& expoly : lower_layer->lslices) { - if (!offset_ex(expoly, -extrusion_width_scaled / 2).empty()) { - lower_polys.emplace_back(expoly); - } - } - ExPolygons curr_polys; - std::vector curr_poly_ptrs; - for (const ExPolygon& expoly : layer->lslices) { - if (!offset_ex(expoly, -extrusion_width_scaled / 2).empty()) { - curr_polys.emplace_back(expoly); - curr_poly_ptrs.emplace_back(&expoly); - } - } + ExPolygons& curr_polys = layer->lslices_extrudable; + ExPolygons& lower_polys = lower_layer->lslices_extrudable; // normal overhang ExPolygons lower_layer_offseted = offset_ex(lower_polys, support_offset_scaled, SUPPORT_SURFACES_OFFSET_PARAMETERS); @@ -803,24 +801,24 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) if (is_auto(stype) && g_config_support_sharp_tails) { // BBS detect sharp tail - for (const ExPolygon* expoly : curr_poly_ptrs) { + for (const ExPolygon& expoly : curr_polys) { bool is_sharp_tail = false; // 1. nothing below // this is a sharp tail region if it's floating and non-ignorable - if (!overlaps(offset_ex(*expoly, 0.5 * extrusion_width_scaled), lower_polys)) { - is_sharp_tail = !offset_ex(*expoly, -0.1 * extrusion_width_scaled).empty(); + if (!overlaps(offset_ex(expoly, 0.5 * extrusion_width_scaled), lower_polys)) { + is_sharp_tail = !offset_ex(expoly, -0.1 * extrusion_width_scaled).empty(); } if (is_sharp_tail) { - ExPolygons overhang = diff_ex({ *expoly }, lower_polys); - layer->sharp_tails.push_back(*expoly); - layer->sharp_tails_height.insert({ expoly, layer->height }); + ExPolygons overhang = diff_ex({ expoly }, lower_polys); + layer->sharp_tails.push_back(expoly); + layer->sharp_tails_height.push_back(layer->height); append(overhang_areas, overhang); if (!overhang.empty()) { has_sharp_tails = true; #ifdef SUPPORT_TREE_DEBUG_TO_SVG - SVG::export_expolygons(debug_out_path("sharp_tail_orig_%.02f.svg", layer->print_z), { expoly }); + SVG::export_expolygons(debug_out_path("sharp_tail_orig_%.02f.svg", layer->print_z), { expoly }); #endif } } @@ -834,7 +832,7 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) // check cantilever { // lower_layer_offset may be very small, so we need to do max and then add 0.1 - auto cluster_boundary_ex = intersection_ex(poly, offset_ex(lower_layer->lslices, scale_(std::max(extrusion_width,lower_layer_offset)+0.1))); + auto cluster_boundary_ex = intersection_ex(poly, offset_ex(lower_polys, scale_(std::max(extrusion_width,lower_layer_offset)+0.1))); Polygons cluster_boundary = to_polygons(cluster_boundary_ex); if (cluster_boundary.empty()) continue; double dist_max = 0; @@ -877,7 +875,7 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) // BBS detect sharp tail const ExPolygons& lower_layer_sharptails = lower_layer->sharp_tails; const auto& lower_layer_sharptails_height = lower_layer->sharp_tails_height; - for (ExPolygon& expoly : layer->lslices) { + for (ExPolygon& expoly : layer->lslices_extrudable) { bool is_sharp_tail = false; float accum_height = layer->height; do { @@ -907,9 +905,9 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) } // 2.3 check whether sharp tail exceed the max height - for (const auto& lower_sharp_tail_height : lower_layer_sharptails_height) { - if (lower_sharp_tail_height.first->overlaps(expoly)) { - accum_height += lower_sharp_tail_height.second; + for(size_t i=0;ilslices); layer->sharp_tails.push_back(expoly); - layer->sharp_tails_height.insert({ &expoly, accum_height }); + layer->sharp_tails_height.push_back( accum_height); append(ts_layer->overhang_areas, overhang); if (!overhang.empty()) From 242a36a26299895b722688e115d23d087b495327 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 8 Mar 2024 16:02:47 +0800 Subject: [PATCH 028/129] FIX: several issue of organic support 1. raft under organic trees are not generated 2. Studio may crash when generating organic supports for some objects. jira: STUDIO-6407 Change-Id: I6e7ff2423b9fee95e4a4a85ccc2844549142f0c8 (cherry picked from commit 00db6c241270f5524bf1618109a2b45872073fd0) (cherry picked from commit c7d12b703e23a83840f480e2cbb3a80fb00e059d) --- src/libslic3r/Support/TreeSupport3D.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport3D.cpp b/src/libslic3r/Support/TreeSupport3D.cpp index 60a66546dc..2a4b4b6396 100644 --- a/src/libslic3r/Support/TreeSupport3D.cpp +++ b/src/libslic3r/Support/TreeSupport3D.cpp @@ -195,7 +195,7 @@ static std::vector>> group_me } #endif -[[nodiscard]] static const std::vector generate_overhangs(const TreeSupportSettings &settings, const PrintObject &print_object, std::function throw_on_cancel) +[[nodiscard]] static const std::vector generate_overhangs(const TreeSupportSettings &settings, PrintObject &print_object, std::function throw_on_cancel) { const size_t num_raft_layers = settings.raft_layers.size(); const size_t num_object_layers = print_object.layer_count(); @@ -217,6 +217,20 @@ static std::vector>> group_me //FIXME this is a fudge constant! auto enforcer_overhang_offset = scaled(config.tree_support_tip_diameter.value); + // calc the extrudable expolygons of each layer + const coordf_t extrusion_width = config.line_width.value; + const coordf_t extrusion_width_scaled = scale_(extrusion_width); + tbb::parallel_for(tbb::blocked_range(0, print_object.layer_count()), + [&](const tbb::blocked_range& range) { + for (size_t layer_nr = range.begin(); layer_nr < range.end(); layer_nr++) { + if (print_object.print()->canceled()) + break; + Layer* layer = print_object.get_layer(layer_nr); + // Filter out areas whose diameter that is smaller than extrusion_width, but we don't want to lose any details. + layer->lslices_extrudable = intersection_ex(layer->lslices, offset2_ex(layer->lslices, -extrusion_width_scaled / 2, extrusion_width_scaled)); + } + }); + size_t num_overhang_layers = support_auto ? num_object_layers : std::min(num_object_layers, std::max(size_t(support_enforce_layers), enforcers_layers.size())); tbb::parallel_for(tbb::blocked_range(1, num_overhang_layers), [&print_object, &config, &print_config, &enforcers_layers, &blockers_layers, @@ -244,9 +258,8 @@ static std::vector>> group_me lower_layer_offset = external_perimeter_width - float(scale_(config.support_threshold_overlap.get_abs_value(unscale_(external_perimeter_width)))); } else lower_layer_offset = scaled(lower_layer.height / tan_threshold); - overhangs = lower_layer_offset == 0 ? - diff(current_layer.lslices, lower_layer.lslices) : - diff(current_layer.lslices, offset(lower_layer.lslices, lower_layer_offset)); + Polygons lower_layer_offseted = offset(lower_layer.lslices_extrudable, lower_layer_offset); + overhangs = diff(current_layer.lslices_extrudable, lower_layer_offseted); if (lower_layer_offset == 0) { raw_overhangs = overhangs; raw_overhangs_calculated = true; @@ -3441,6 +3454,7 @@ static void generate_support_areas(Print &print, const BuildVolume &build_volume auto t_place = std::chrono::high_resolution_clock::now(); // ### draw these points as circles + // this new function give correct result when raft is also enabled organic_draw_branches( *print.get_object(processing.second.front()), volumes, config, move_bounds, bottom_contacts, top_contacts, interface_placer, intermediate_layers, layer_storage, From 4ee6d636c7b99a2c6e624b79958418b418e5c3ff Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 8 Mar 2024 16:35:05 +0800 Subject: [PATCH 029/129] FIX: blockers are not working correctly with organic supports. jira: STUDIO-6278 Change-Id: If74e611821db25241dd67dfc4a3e44fac557a10d (cherry picked from commit 76b9b2b7e856f648082cd3a09386775695c6accb) (cherry picked from commit cf35d0268fce05308d56b87bc2c50eb822451c02) --- src/libslic3r/Support/TreeSupport3D.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport3D.cpp b/src/libslic3r/Support/TreeSupport3D.cpp index 2a4b4b6396..6d3f041207 100644 --- a/src/libslic3r/Support/TreeSupport3D.cpp +++ b/src/libslic3r/Support/TreeSupport3D.cpp @@ -216,6 +216,7 @@ static std::vector>> group_me double tan_threshold = support_threshold_auto ? 0. : tan(M_PI * double(support_threshold + 1) / 180.); //FIXME this is a fudge constant! auto enforcer_overhang_offset = scaled(config.tree_support_tip_diameter.value); + const coordf_t radius_sample_resolution = g_config_tree_support_collision_resolution; // calc the extrudable expolygons of each layer const coordf_t extrusion_width = config.line_width.value; @@ -234,7 +235,7 @@ static std::vector>> group_me size_t num_overhang_layers = support_auto ? num_object_layers : std::min(num_object_layers, std::max(size_t(support_enforce_layers), enforcers_layers.size())); tbb::parallel_for(tbb::blocked_range(1, num_overhang_layers), [&print_object, &config, &print_config, &enforcers_layers, &blockers_layers, - support_auto, support_enforce_layers, support_threshold_auto, tan_threshold, enforcer_overhang_offset, num_raft_layers, &throw_on_cancel, &out] + support_auto, support_enforce_layers, support_threshold_auto, tan_threshold, enforcer_overhang_offset, num_raft_layers, radius_sample_resolution, &throw_on_cancel, &out] (const tbb::blocked_range &range) { for (LayerIndex layer_id = range.begin(); layer_id < range.end(); ++ layer_id) { const Layer ¤t_layer = *print_object.get_layer(layer_id); @@ -264,12 +265,8 @@ static std::vector>> group_me raw_overhangs = overhangs; raw_overhangs_calculated = true; } - if (! (enforced_layer || blockers_layers.empty() || blockers_layers[layer_id].empty())) { - Polygons &blocker = blockers_layers[layer_id]; - // Arthur: union_ is a must because after mirroring, the blocker polygons are in left-hand coordinates, ie clockwise, - // which are not valid polygons, and will be removed by offset. union_ can make these polygons right. - overhangs = diff(overhangs, offset(union_(blocker), scale_(g_config_tree_support_collision_resolution)), ApplySafetyOffset::Yes); - } + if (! (enforced_layer || blockers_layers.empty() || blockers_layers[layer_id].empty())) + overhangs = diff(overhangs, offset_ex(union_(blockers_layers[layer_id]), scale_(radius_sample_resolution)), ApplySafetyOffset::Yes); if (config.bridge_no_support) { for (const LayerRegion *layerm : current_layer.regions()) remove_bridges_from_contacts(print_config, lower_layer, *layerm, From fd3ed419c2c7c98c4a53c8fb867bfc7b1fab8d52 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 6 Mar 2024 08:44:32 +0800 Subject: [PATCH 030/129] NEW: add support_object_first_layer_gap option jira: STUDIO-6202 github: #3521 Change-Id: I6f1ce9f5312e9482c0f5bf6ac3215861c501106c (cherry picked from commit 83027d923a6e67fa0013e5d9f627283c68e996de) (cherry picked from commit 29da3bc441a194d5b83ce267fe24ebf3f3811133) --- src/libslic3r/Preset.cpp | 2 +- src/libslic3r/PrintConfig.cpp | 11 +++++++++++ src/libslic3r/PrintConfig.hpp | 1 + src/libslic3r/PrintObject.cpp | 1 + src/libslic3r/Support/SupportCommon.cpp | 9 +++++---- src/libslic3r/Support/SupportParameters.hpp | 10 ++++++---- src/libslic3r/Support/TreeSupport.cpp | 6 +++--- src/libslic3r/Support/TreeSupportCommon.hpp | 2 ++ src/slic3r/GUI/ConfigManipulation.cpp | 2 +- src/slic3r/GUI/GUI_Factories.cpp | 8 +++++--- src/slic3r/GUI/Tab.cpp | 1 + 11 files changed, 37 insertions(+), 16 deletions(-) diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 134538dde5..3051d88fb0 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -792,7 +792,7 @@ static std::vector s_Preset_print_options { "fuzzy_skin", "fuzzy_skin_thickness", "fuzzy_skin_point_distance", "fuzzy_skin_first_layer", "fuzzy_skin_noise_type", "fuzzy_skin_scale", "fuzzy_skin_octaves", "fuzzy_skin_persistence", "max_volumetric_extrusion_rate_slope", "max_volumetric_extrusion_rate_slope_segment_length","extrusion_rate_smoothing_external_perimeter_only", "inner_wall_speed", "outer_wall_speed", "sparse_infill_speed", "internal_solid_infill_speed", - "top_surface_speed", "support_speed", "support_object_xy_distance", "support_interface_speed", + "top_surface_speed", "support_speed", "support_object_xy_distance", "support_object_first_layer_gap", "support_interface_speed", "bridge_speed", "internal_bridge_speed", "gap_infill_speed", "travel_speed", "travel_speed_z", "initial_layer_speed", "outer_wall_acceleration", "initial_layer_acceleration", "top_surface_acceleration", "default_acceleration", "skirt_type", "skirt_loops", "skirt_speed","min_skirt_length", "skirt_distance", "skirt_start_angle", "skirt_height", "draft_shield", "brim_width", "brim_object_gap", "brim_type", "brim_ears_max_angle", "brim_ears_detection_length", "enable_support", "support_type", "support_threshold_angle", "support_threshold_overlap","enforce_support_layers", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 7c6be8edab..31ab6fcbff 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -4493,6 +4493,17 @@ void PrintConfigDef::init_fff_params() //Support with too small spacing may touch the object and difficult to remove. def->set_default_value(new ConfigOptionFloat(0.35)); + def = this->add("support_object_first_layer_gap", coFloat); + def->label = L("Support/object first layer gap"); + def->category = L("Support"); + def->tooltip = L("XY separation between an object and its support at the first layer."); + def->sidetext = L("mm"); + def->min = 0; + def->max = 10; + def->mode = comAdvanced; + //Support with too small spacing may touch the object and difficult to remove. + def->set_default_value(new ConfigOptionFloat(0.2)); + def = this->add("support_angle", coFloat); def->label = L("Pattern angle"); def->category = L("Support"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 6e1f2701d6..b0c1d910fa 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -831,6 +831,7 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionInt, support_threshold_angle)) ((ConfigOptionFloatOrPercent, support_threshold_overlap)) ((ConfigOptionFloat, support_object_xy_distance)) + ((ConfigOptionFloat, support_object_first_layer_gap)) ((ConfigOptionFloat, xy_hole_compensation)) ((ConfigOptionFloat, xy_contour_compensation)) ((ConfigOptionBool, flush_into_objects)) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index d9c76ba849..a25df3451a 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -1017,6 +1017,7 @@ bool PrintObject::invalidate_state_by_config_options( || opt_key == "support_base_pattern" || opt_key == "support_style" || opt_key == "support_object_xy_distance" + || opt_key == "support_object_first_layer_gap" || opt_key == "support_base_pattern_spacing" || opt_key == "support_expansion" //|| opt_key == "independent_support_layer_height" // BBS diff --git a/src/libslic3r/Support/SupportCommon.cpp b/src/libslic3r/Support/SupportCommon.cpp index edc71e76df..6d6553b12f 100644 --- a/src/libslic3r/Support/SupportCommon.cpp +++ b/src/libslic3r/Support/SupportCommon.cpp @@ -445,10 +445,11 @@ SupportGeneratorLayersPtr generate_raft_base( Polygons &raft = columns_base->polygons; Polygons trimming; // BBS: if first layer of support is intersected with object island, it must have the same function as brim unless in nobrim mode. - if (object.has_brim()) - trimming = offset(object.layers().front()->lslices, (float)scale_(object.config().brim_object_gap.value), SUPPORT_SURFACES_OFFSET_PARAMETERS); - else - trimming = offset(object.layers().front()->lslices, (float)scale_(support_params.gap_xy), SUPPORT_SURFACES_OFFSET_PARAMETERS); + // brim_object_gap is changed to 0 by default, it's no longer appropriate to use it to determine the gap of first layer support. + //if (object.has_brim()) + // trimming = offset(object.layers().front()->lslices, (float)scale_(object.config().brim_object_gap.value), SUPPORT_SURFACES_OFFSET_PARAMETERS); + //else + trimming = offset(object.layers().front()->lslices, (float)scale_(support_params.gap_xy_first_layer), SUPPORT_SURFACES_OFFSET_PARAMETERS); if (inflate_factor_1st_layer > SCALED_EPSILON) { // Inflate in multiple steps to avoid leaking of the support 1st layer through object walls. auto nsteps = std::max(5, int(ceil(inflate_factor_1st_layer / support_params.first_layer_flow.scaled_width()))); diff --git a/src/libslic3r/Support/SupportParameters.hpp b/src/libslic3r/Support/SupportParameters.hpp index f36709fb53..e4c0dcd00e 100644 --- a/src/libslic3r/Support/SupportParameters.hpp +++ b/src/libslic3r/Support/SupportParameters.hpp @@ -69,10 +69,11 @@ struct SupportParameters { external_perimeter_width = std::max(external_perimeter_width, coordf_t(region.flow(object, frExternalPerimeter, slicing_params.layer_height).width())); bridge_flow_ratio += region.config().bridge_flow; } - this->gap_xy = object_config.support_object_xy_distance;//.get_abs_value(external_perimeter_width); + this->gap_xy = object_config.support_object_xy_distance.value; + this->gap_xy_first_layer = object_config.support_object_first_layer_gap.value; bridge_flow_ratio /= object.num_printing_regions(); - - this->support_material_bottom_interface_flow = slicing_params.soluble_interface || ! object_config.thick_bridges ? + + this->support_material_bottom_interface_flow = slicing_params.soluble_interface || !object_config.thick_bridges ? this->support_material_interface_flow.with_flow_ratio(bridge_flow_ratio) : Flow::bridging_flow(bridge_flow_ratio * this->support_material_interface_flow.nozzle_diameter(), this->support_material_interface_flow.nozzle_diameter()); @@ -209,7 +210,8 @@ struct SupportParameters { coordf_t support_layer_height_min; // coordf_t support_layer_height_max; - coordf_t gap_xy; + coordf_t gap_xy; + coordf_t gap_xy_first_layer; float base_angle; float interface_angle; diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index cf7634814d..d7873491b3 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1926,7 +1926,7 @@ void TreeSupport::draw_circles(const std::vector>& con } else { if (collision_base.empty()) - collision_base = m_ts_data->get_collision((layer_nr == 0 && has_brim) ? config.brim_object_gap : m_ts_data->m_xy_distance, layer_nr); + collision_base = m_ts_data->get_collision((layer_nr == 0) ? config.support_object_first_layer_gap : m_ts_data->m_xy_distance, layer_nr); return collision_base; } }; @@ -2044,7 +2044,7 @@ void TreeSupport::draw_circles(const std::vector>& con roof_1st_layer = intersection_ex(roof_1st_layer, m_machine_border); // let supports touch objects when brim is on - //auto avoid_region = get_collision_polys((layer_nr == 0 && has_brim) ? config.brim_object_gap : m_ts_data->m_xy_distance, layer_nr); + //auto avoid_region = get_collision_polys((layer_nr == 0) ? config.support_object_xy_distance : m_ts_data->m_xy_distance, layer_nr); //base_areas = avoid_object_remove_extra_small_parts(base_areas, avoid_region); //base_areas = diff_clipped(base_areas, avoid_region); ExPolygons roofs; append(roofs, roof_1st_layer); append(roofs, roof_areas);append(roofs, roof_gap_areas); @@ -2295,7 +2295,7 @@ void TreeSupport::draw_circles(const std::vector>& con // make sure 1) roof1 and object 2) roof1 and roof, won't intersect // Note: We can't replace roof1 directly, as we have recorded its address. // So instead we need to replace its members one by one. - auto tmp1 = diff_ex(roof1, get_collision((layer_nr == 0 && has_brim) ? config.brim_object_gap : m_ts_data->m_xy_distance, layer_nr)); + auto tmp1 = diff_ex(roof1, get_collision((layer_nr == 0) ? config.support_object_xy_distance : m_ts_data->m_xy_distance, layer_nr)); tmp1 = diff_ex(tmp1, ts_layer->roof_areas); if (!tmp1.empty()) { roof1.contour = std::move(tmp1[0].contour); diff --git a/src/libslic3r/Support/TreeSupportCommon.hpp b/src/libslic3r/Support/TreeSupportCommon.hpp index 50ca626fa3..b382f6526c 100644 --- a/src/libslic3r/Support/TreeSupportCommon.hpp +++ b/src/libslic3r/Support/TreeSupportCommon.hpp @@ -69,6 +69,7 @@ struct TreeSupportMeshGroupSettings { 0; this->support_material_buildplate_only = config.support_on_build_plate_only; this->support_xy_distance = scaled(config.support_object_xy_distance.value); + this->support_xy_distance_1st_layer = scaled(config.support_object_first_layer_gap.value); // Separation of interfaces, it is likely smaller than support_xy_distance. this->support_xy_distance_overhang = std::min(this->support_xy_distance, scaled(0.5 * external_perimeter_width)); this->support_top_distance = scaled(slicing_params.gap_support_object); @@ -158,6 +159,7 @@ struct TreeSupportMeshGroupSettings { // Distance of the support structure from the print in the X/Y directions. // minimum: 0, maximum warning: 1.5 * machine_nozzle_tip_outer_diameter coord_t support_xy_distance { scaled(0.7) }; + coord_t support_xy_distance_1st_layer { scaled(0.7) }; // Minimum Support X/Y Distance // Distance of the support structure from the overhang in the X/Y directions. // minimum_value: 0, minimum warning": support_xy_distance - support_line_width * 2, maximum warning: support_xy_distance diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 3425890d70..4e13f7972c 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -596,7 +596,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co "support_interface_pattern", "support_interface_top_layers", "support_interface_bottom_layers", "bridge_no_support", "max_bridge_length", "support_top_z_distance", "support_bottom_z_distance", "support_type", "support_on_build_plate_only", "support_critical_regions_only","support_interface_not_for_body", - "support_object_xy_distance"/*, "independent_support_layer_height"*/}) + "support_object_xy_distance","support_object_first_layer_gap"/*, "independent_support_layer_height"*/}) toggle_field(el, have_support_material); toggle_field("support_threshold_angle", have_support_material && is_auto(support_type)); toggle_field("support_threshold_overlap", config->opt_int("support_threshold_angle") == 0 && have_support_material && is_auto(support_type)); diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index 416c269905..096a83a512 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -91,9 +91,10 @@ std::map> SettingsFactory::OBJECT_C {"enable_support", "",4},{"support_type", "",5},{"support_threshold_angle", "",6}, {"support_threshold_overlap", "",6}, {"support_on_build_plate_only", "",7}, {"support_filament", "",8},{"support_interface_filament", "",9},{"support_expansion", "",24},{"support_style", "",25}, {"tree_support_brim_width", "",26}, {"tree_support_branch_angle", "",10},{"tree_support_branch_angle_organic","",10}, {"tree_support_wall_count", "",11},//tree support - {"support_top_z_distance", "",13},{"support_bottom_z_distance", "",12},{"support_base_pattern", "",14},{"support_base_pattern_spacing", "",15}, - {"support_interface_top_layers", "",16},{"support_interface_bottom_layers", "",17},{"support_interface_spacing", "",18},{"support_bottom_interface_spacing", "",19}, - {"support_object_xy_distance", "",20}, {"bridge_no_support", "",21},{"max_bridge_length", "",22},{"support_critical_regions_only", "",23},{"support_remove_small_overhang","",27} + {"support_top_z_distance", "",13},{"support_bottom_z_distance", "",12},{"support_base_pattern", "",14},{"support_base_pattern_spacing", "",15}, + {"support_interface_top_layers", "",16},{"support_interface_bottom_layers", "",17},{"support_interface_spacing", "",18},{"support_bottom_interface_spacing", "",19}, + {"support_object_xy_distance", "",20}, {"bridge_no_support", "",21},{"max_bridge_length", "",22},{"support_critical_regions_only", "",23},{"support_remove_small_overhang","",27}, + {"support_object_first_layer_gap","",28} }}, { L("Speed"), {{"support_speed", "",12}, {"support_interface_speed", "",13} }} @@ -155,6 +156,7 @@ std::vector SettingsFactory::get_visible_options(const std::s "tree_support_wall_count", //support "support_top_z_distance", "support_base_pattern", "support_base_pattern_spacing", "support_interface_top_layers", "support_interface_bottom_layers", "support_interface_spacing", "support_bottom_interface_spacing", "support_object_xy_distance", + "support_object_first_layer_gap", //adhesion "brim_type", "brim_width", "brim_object_gap", "raft_layers" };*/ diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 8ed06d1d87..05822fdfdb 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2263,6 +2263,7 @@ void TabPrint::build() //optgroup->append_single_option_line("support_interface_loop_pattern"); optgroup->append_single_option_line("support_object_xy_distance", "support"); + optgroup->append_single_option_line("support_object_first_layer_gap", "support"); optgroup->append_single_option_line("bridge_no_support", "support#base-pattern"); optgroup->append_single_option_line("max_bridge_length", "support#base-pattern"); optgroup->append_single_option_line("independent_support_layer_height", "support"); From da7eea49c943fe797ee43e6134753cc3c547d43f Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 14 Mar 2024 17:57:32 +0800 Subject: [PATCH 031/129] FIX: reduce unnecessary small parts of tree supports 1. reduce unnecessary small parts of tree supports jira: STUDIO-6506 2. fix the bug that zero height tree support may be generated with synced support layer height. 3. fix the bug that tree nodes' radii may change abruptly jira: STUDIO-6326 Change-Id: I38153d136e46bf9d797881cc6ca8803767f46736 (cherry picked from commit 59af0a6c2643169463cf18010ffd75f3aa19b704) (cherry picked from commit 47440f040cae70f79e430b02d44f6093208ac066) --- src/libslic3r/Support/TreeSupport.cpp | 186 ++++++++++++-------------- src/libslic3r/Support/TreeSupport.hpp | 2 +- 2 files changed, 86 insertions(+), 102 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index d7873491b3..61fede21eb 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1952,6 +1952,7 @@ void TreeSupport::draw_circles(const std::vector>& con } if (node.type == ePolygon) has_polygon_node = true; + area = diff_clipped(area, get_collision(node.is_sharp_tail && node.distance_to_top <= 0)); } else { Polygon circle(branch_circle); @@ -1982,7 +1983,7 @@ void TreeSupport::draw_circles(const std::vector>& con if(!tmp.empty()) circle = tmp[0]; } - area.emplace_back(ExPolygon(circle)); + area = avoid_object_remove_extra_small_parts(ExPolygons{ ExPolygon(circle) }, get_collision(node.is_sharp_tail && node.distance_to_top <= 0)); // merge overhang to get a smoother interface surface // Do not merge when buildplate_only is on, because some underneath nodes may have been deleted. if (top_interface_layers > 0 && node.support_roof_layers_below > 0 && !on_buildplate_only && !node.is_sharp_tail) { @@ -2025,28 +2026,10 @@ void TreeSupport::draw_circles(const std::vector>& con roof_areas = std::move(offset2_ex(roof_areas, contact_dist_scaled, -contact_dist_scaled)); roof_1st_layer = std::move(offset2_ex(roof_1st_layer, contact_dist_scaled, -contact_dist_scaled)); - // avoid object - // arthur: do not leave a gap for top interface if the top z distance is 0. See STUDIO-3991 - Polygons avoid_region_interface = get_trim_support_regions(*m_object, ts_layer, m_slicing_params.gap_support_object, m_slicing_params.gap_object_support, - m_slicing_params.gap_support_object == 0 ? 0 : m_ts_data->m_xy_distance); - if (has_circle_node) { - roof_areas = avoid_object_remove_extra_small_parts(roof_areas, avoid_region_interface); - roof_1st_layer = avoid_object_remove_extra_small_parts(roof_1st_layer, avoid_region_interface); - } - else { - roof_areas = diff_ex(roof_areas, ClipperUtils::clip_clipper_polygons_with_subject_bbox(avoid_region_interface, get_extents(roof_areas))); - roof_1st_layer = diff_ex(roof_1st_layer, ClipperUtils::clip_clipper_polygons_with_subject_bbox(avoid_region_interface, get_extents(roof_1st_layer))); - } - roof_areas = intersection_ex(roof_areas, m_machine_border); - // roof_1st_layer and roof_areas may intersect, so need to subtract roof_areas from roof_1st_layer roof_1st_layer = diff_ex(roof_1st_layer, ClipperUtils::clip_clipper_polygons_with_subject_bbox(roof_areas,get_extents(roof_1st_layer))); roof_1st_layer = intersection_ex(roof_1st_layer, m_machine_border); - // let supports touch objects when brim is on - //auto avoid_region = get_collision_polys((layer_nr == 0) ? config.support_object_xy_distance : m_ts_data->m_xy_distance, layer_nr); - //base_areas = avoid_object_remove_extra_small_parts(base_areas, avoid_region); - //base_areas = diff_clipped(base_areas, avoid_region); ExPolygons roofs; append(roofs, roof_1st_layer); append(roofs, roof_areas);append(roofs, roof_gap_areas); base_areas = diff_ex(base_areas, ClipperUtils::clip_clipper_polygons_with_subject_bbox(roofs, get_extents(base_areas))); base_areas = intersection_ex(base_areas, m_machine_border); @@ -2549,7 +2532,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod SupportNode* neighbour = nodes_per_part[group_index][neighbours[0]]; SupportNode* node_; if (p_node->parent && neighbour->parent) - node_ = (node.dist_mm_to_top >= neighbour->dist_mm_to_top && p_node->parent) ? p_node : neighbour; + node_ = (node.dist_mm_to_top >= neighbour->dist_mm_to_top) ? p_node : neighbour; else node_ = p_node->parent ? p_node : neighbour; // Make sure the next pass doesn't drop down either of these (since that already happened). @@ -2557,7 +2540,6 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod const bool to_buildplate = !is_inside_ex(get_collision(0, layer_nr_next), next_position); SupportNode * next_node = m_ts_data->create_node(next_position, node_->distance_to_top + 1, layer_nr_next, node_->support_roof_layers_below-1, to_buildplate, node_, print_z_next, height_next); - next_node->movement = next_position - node.position; get_max_move_dist(next_node); contact_nodes[layer_nr_next].push_back(next_node); @@ -2574,10 +2556,9 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod { SupportNode* neighbour_node = nodes_per_part[group_index][neighbour]; if (neighbour_node->type == ePolygon) continue; + // only allow bigger node to merge smaller nodes. See STUDIO-6326 + if(node.dist_mm_to_top < neighbour_node->dist_mm_to_top) continue; - node.distance_to_top = std::max(node.distance_to_top, neighbour_node->distance_to_top); - node.support_roof_layers_below = std::max(node.support_roof_layers_below, neighbour_node->support_roof_layers_below); - node.dist_mm_to_top = std::max(node.dist_mm_to_top, neighbour_node->dist_mm_to_top); node.merged_neighbours.push_front(neighbour_node); node.merged_neighbours.insert(node.merged_neighbours.end(), neighbour_node->merged_neighbours.begin(), neighbour_node->merged_neighbours.end()); to_delete.insert(neighbour_node); @@ -2753,7 +2734,6 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod const bool to_buildplate = !is_inside_ex(get_collision(0, layer_nr_next), next_layer_vertex); SupportNode * next_node = m_ts_data->create_node(next_layer_vertex, node.distance_to_top + 1, layer_nr_next, node.support_roof_layers_below - 1, to_buildplate, p_node, print_z_next, height_next); - next_node->movement = movement; get_max_move_dist(next_node); contact_nodes[layer_nr_next].push_back(next_node); } @@ -2906,91 +2886,94 @@ std::vector TreeSupport::plan_layer_heights(std::vectorget_layer(layer_nr)->print_z, m_object->get_layer(layer_nr)->height, layer_nr > 0 ? size_t(layer_nr - 1) : 0}; } - return layer_heights; } - - bounds.push_back(0); - // Keep first layer still - layer_heights[0] = {m_object->get_layer(0)->print_z, m_object->get_layer(0)->height, 0}; - // Collect top contact layers - coordf_t print_z = layer_heights[0].print_z; - for (int layer_nr = 1; layer_nr < contact_nodes.size(); layer_nr++) - { - if (!contact_nodes[layer_nr].empty()) { - bounds.push_back(layer_nr); - layer_heights[layer_nr].print_z = contact_nodes[layer_nr].front()->print_z; - layer_heights[layer_nr].height = contact_nodes[layer_nr].front()->height; - if (layer_heights[layer_nr].bottom_z() - print_z < m_slicing_params.min_layer_height) { - layer_heights[layer_nr].height = layer_heights[layer_nr].print_z - print_z; - for (auto& node : contact_nodes[layer_nr]) { - node->height = layer_heights[layer_nr].height; + else { + bounds.push_back(0); + // Keep first layer still + layer_heights[0] = { m_object->get_layer(0)->print_z, m_object->get_layer(0)->height, 0 }; + // Collect top contact layers + coordf_t print_z = layer_heights[0].print_z; + for (int layer_nr = 1; layer_nr < contact_nodes.size(); layer_nr++) { + if (!contact_nodes[layer_nr].empty()) { + bounds.push_back(layer_nr); + layer_heights[layer_nr].print_z = contact_nodes[layer_nr].front()->print_z; + layer_heights[layer_nr].height = contact_nodes[layer_nr].front()->height; + if (layer_heights[layer_nr].bottom_z() - print_z < m_slicing_params.min_layer_height) { + layer_heights[layer_nr].height = layer_heights[layer_nr].print_z - print_z; + for (auto& node : contact_nodes[layer_nr]) { + node->height = layer_heights[layer_nr].height; + } } + print_z = layer_heights[layer_nr].print_z; + + BOOST_LOG_TRIVIAL(trace) << "plan_layer_heights0 print_z, height, layer_nr: " << layer_heights[layer_nr].print_z << " " << layer_heights[layer_nr].height << " " + << layer_nr; + } + } + std::set s(bounds.begin(), bounds.end()); + bounds.assign(s.begin(), s.end()); + + for (size_t idx_extreme = 1; idx_extreme < bounds.size(); idx_extreme++) { + int extr2_layer_nr = bounds[idx_extreme]; + coordf_t extr2z = layer_heights[extr2_layer_nr].bottom_z(); + int extr1_layer_nr = bounds[idx_extreme - 1]; + coordf_t extr1z = layer_heights[extr1_layer_nr].print_z; + coordf_t dist = extr2z - extr1z; + + // Insert intermediate layers. + size_t n_layers_extra = size_t(ceil(dist / (m_slicing_params.max_suport_layer_height + EPSILON))); + int actual_internel_layers = extr2_layer_nr - extr1_layer_nr - 1; + int extr_layers_left = extr2_layer_nr - extr1_layer_nr - n_layers_extra - 1; + if (n_layers_extra < 1) + continue; + + coordf_t step = dist / coordf_t(n_layers_extra); + coordf_t print_z = extr1z + step; + //assert(step >= layer_height - EPSILON); + coordf_t extr2z_large_steps = extr2z; + for (int layer_nr = extr1_layer_nr + 1; layer_nr < extr2_layer_nr; layer_nr++) { + // if (curr_layer_nodes.empty()) continue; + if (std::abs(print_z - m_object->get_layer(layer_nr)->print_z) < step / 2 + EPSILON || extr_layers_left < 1) { + layer_heights[layer_nr].print_z = print_z; + layer_heights[layer_nr].height = step; + print_z += step; + } + else { + // can't clear curr_layer_nodes, or the model will have empty layers + layer_heights[layer_nr].print_z = 0.0; + layer_heights[layer_nr].height = 0.0; + extr_layers_left--; } - print_z = layer_heights[layer_nr].print_z; - BOOST_LOG_TRIVIAL(trace) << "plan_layer_heights0 print_z, height, layer_nr: " << layer_heights[layer_nr].print_z << " " << layer_heights[layer_nr].height << " " - << layer_nr; - } - } - std::set s(bounds.begin(), bounds.end()); - bounds.assign(s.begin(), s.end()); + } - for (size_t idx_extreme = 1; idx_extreme < bounds.size(); idx_extreme++) { - int extr2_layer_nr = bounds[idx_extreme]; - coordf_t extr2z = layer_heights[extr2_layer_nr].bottom_z(); - int extr1_layer_nr = bounds[idx_extreme - 1]; - coordf_t extr1z = layer_heights[extr1_layer_nr].print_z; - coordf_t dist = extr2z - extr1z; - - // Insert intermediate layers. - size_t n_layers_extra = size_t(ceil(dist / (m_slicing_params.max_suport_layer_height + EPSILON))); - int actual_internel_layers = extr2_layer_nr - extr1_layer_nr - 1; - int extr_layers_left = extr2_layer_nr - extr1_layer_nr - n_layers_extra - 1; - if (n_layers_extra < 1) - continue; - - coordf_t step = dist / coordf_t(n_layers_extra); - coordf_t print_z = extr1z + step; - //assert(step >= layer_height - EPSILON); - coordf_t extr2z_large_steps = extr2z; - for (int layer_nr = extr1_layer_nr + 1; layer_nr < extr2_layer_nr; layer_nr++) { - // if (curr_layer_nodes.empty()) continue; - if (std::abs(print_z - m_object->get_layer(layer_nr)->print_z) < step / 2 + EPSILON || extr_layers_left < 1) { - layer_heights[layer_nr].print_z = print_z; - layer_heights[layer_nr].height = step; - print_z += step; + // fill in next_layer_nr + int i = layer_heights.size() - 1, j = i; + for (; j >= 0; i = j) { + if (layer_heights[i].height < EPSILON) { + j--; + continue; } - else { - // can't clear curr_layer_nodes, or the model will have empty layers - layer_heights[layer_nr].print_z = 0.0; - layer_heights[layer_nr].height = 0.0; - extr_layers_left--; + for (j = i - 1; j >= 0; j--) { + if (layer_heights[j].height > EPSILON) { + layer_heights[i].next_layer_nr = j; + break; + } } } + + for (i = 0; i < layer_heights.size(); i++) { + // there might be gap between layers due to non-integer interfaces + if (size_t next_layer_nr = layer_heights[i].next_layer_nr; + next_layer_nr > 0 && layer_heights[i].height + EPSILON < layer_heights[i].print_z - layer_heights[next_layer_nr].print_z) { + layer_heights[i].height = layer_heights[i].print_z - layer_heights[next_layer_nr].print_z; + } + + } } - // fill in next_layer_nr - int i = layer_heights.size() - 1, j = i; - for (; j >= 0; i = j) { - if (layer_heights[i].height < EPSILON) { - j--; - continue; - } - for (j = i - 1; j >= 0; j--) { - if (layer_heights[j].height > EPSILON) { - layer_heights[i].next_layer_nr = j; - break; - } - } - } - for (i = 0; i < layer_heights.size(); i++) { - // there might be gap between layers due to non-integer interfaces - if (size_t next_layer_nr = layer_heights[i].next_layer_nr; - next_layer_nr>0 && layer_heights[i].height + EPSILON < layer_heights[i].print_z - layer_heights[next_layer_nr].print_z) - { - layer_heights[i].height = layer_heights[i].print_z - layer_heights[next_layer_nr].print_z; - } - // update interfaces' height + // update interfaces' height + for (size_t i = 0; i < layer_heights.size(); i++) { for (auto& node : contact_nodes[i]) { node->height = layer_heights[i].height; } @@ -2998,7 +2981,6 @@ std::vector TreeSupport::plan_layer_heights(std::vectorlayer_nr: " << layer_heights[i].print_z << " " << layer_heights[i].height << " " << layer_heights[i].next_layer_nr << "->" << i; } - return layer_heights; } @@ -3295,6 +3277,8 @@ SupportNode* TreeSupportData::create_node(const Point position, const int distan SupportNode* node = new SupportNode(position, distance_to_top, obj_layer_nr, support_roof_layers_below, to_buildplate, parent, print_z_, height_, dist_mm_to_top_, radius_); contact_nodes.emplace_back(node); m_mutex.unlock(); + if (parent) + node->movement = position - parent->position; return node; } void TreeSupportData::clear_nodes() diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index d5e4d0fe2f..9606df1c5e 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -81,7 +81,7 @@ struct SupportNode overhang = parent->overhang; if (dist_mm_to_top == 0) dist_mm_to_top = parent->dist_mm_to_top + parent->height; - if (radius == 0) + if (radius == 0 && parent->radius>0) radius = parent->radius + (dist_mm_to_top - parent->dist_mm_to_top) * diameter_angle_scale_factor; parent->child = this; for (auto& neighbor : parent->merged_neighbours) { From 19107b586940389e7ccd2948474edfe586617dbe Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 15 Mar 2024 10:11:54 +0800 Subject: [PATCH 032/129] FIX: compiling error due to template function deduction jira: none Change-Id: Ib2a3f03468b7992defef3ff2298882b4435cabd1 (cherry picked from commit 9efa2ee2e2dcd4d1322afa03c7b7ce05b1d69872) (cherry picked from commit 40a468be3df9abc35054185ce780ada20902970b) --- src/libslic3r/Support/TreeSupport.cpp | 30 +++++++++++++-------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 61fede21eb..07586d0006 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1728,24 +1728,22 @@ Polygons TreeSupport::get_collision_polys(coordf_t radius, size_t layer_nr) return Polygons(); } -template // RegionType could be ExPolygons or Polygons -ExPolygons avoid_object_remove_extra_small_parts(ExPolygons &expolys, const RegionType&avoid_region) { +ExPolygons avoid_object_remove_extra_small_parts(const ExPolygon &expoly, const ExPolygons& avoid_region) { ExPolygons expolys_out; - if(expolys.empty()) return expolys_out; - auto clipped_avoid_region=ClipperUtils::clip_clipper_polygons_with_subject_bbox(avoid_region, get_extents(expolys)); - for (auto expoly : expolys) { - auto expolys_avoid = diff_ex(expoly, clipped_avoid_region); - int idx_max_area = -1; - float max_area = 0; - for (int i = 0; i < expolys_avoid.size(); ++i) { - auto a = expolys_avoid[i].area(); - if (a > max_area) { - max_area = a; - idx_max_area = i; - } + if(expoly.empty()) return expolys_out; + auto clipped_avoid_region=ClipperUtils::clip_clipper_polygons_with_subject_bbox(avoid_region, get_extents(expoly)); + auto expolys_avoid = diff_ex(expoly, clipped_avoid_region); + int idx_max_area = -1; + float max_area = 0; + for (int i = 0; i < expolys_avoid.size(); ++i) { + auto a = expolys_avoid[i].area(); + if (a > max_area) { + max_area = a; + idx_max_area = i; } - if (idx_max_area >= 0) expolys_out.emplace_back(std::move(expolys_avoid[idx_max_area])); } + if (idx_max_area >= 0) expolys_out.emplace_back(std::move(expolys_avoid[idx_max_area])); + return expolys_out; } @@ -1983,7 +1981,7 @@ void TreeSupport::draw_circles(const std::vector>& con if(!tmp.empty()) circle = tmp[0]; } - area = avoid_object_remove_extra_small_parts(ExPolygons{ ExPolygon(circle) }, get_collision(node.is_sharp_tail && node.distance_to_top <= 0)); + area = avoid_object_remove_extra_small_parts(ExPolygon(circle), get_collision(node.is_sharp_tail && node.distance_to_top <= 0)); // merge overhang to get a smoother interface surface // Do not merge when buildplate_only is on, because some underneath nodes may have been deleted. if (top_interface_layers > 0 && node.support_roof_layers_below > 0 && !on_buildplate_only && !node.is_sharp_tail) { From 0b671e8852707dcb6c5efa9664995c31ff6e6428 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 15 Mar 2024 11:53:06 +0800 Subject: [PATCH 033/129] ENH: speedup tree support generation 1. speedup detect_overhangs by skipping sharp tail and cantilever detection if there are too many overhangs. jira: STUDIO-3584, STUDIO-2592 2. drop_nodes with precalculation of avoidance and tbb parallel_for_each for all nodes in each layer. jira: STUDIO-1814, STUDIO-2381, STUDIO-2639, STUDIO-5020, 3. don't show too many progress messages Change-Id: Ia4897089c69c235fb7cd8e5fdcf4690086048b31 (cherry picked from commit 9c08e28b5b5342dfdde2c939fc953f143a42a59b) (cherry picked from commit 9de69035a029374be477b74e67c96dd8235daafa) --- src/libslic3r/Support/TreeSupport.cpp | 262 +++++++++++++++----------- src/libslic3r/Support/TreeSupport.hpp | 1 + 2 files changed, 158 insertions(+), 105 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 07586d0006..d0dfbbf9cc 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -15,8 +15,10 @@ #include #include +#include #include #include +#include #ifndef M_PI #define M_PI 3.1415926535897932384626433832795 @@ -649,7 +651,8 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) const coordf_t max_bridge_length = scale_(config.max_bridge_length.value); const bool bridge_no_support = max_bridge_length > 0; const bool support_critical_regions_only = config.support_critical_regions_only.value; - const bool config_remove_small_overhangs = config.support_remove_small_overhang.value; + bool config_remove_small_overhangs = config.support_remove_small_overhang.value; + bool config_detect_sharp_tails = g_config_support_sharp_tails; const int enforce_support_layers = config.enforce_support_layers.value; const double area_thresh_well_supported = SQ(scale_(6)); const double length_thresh_well_supported = scale_(6); @@ -763,6 +766,10 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) layer->lslices_extrudable = intersection_ex(layer->lslices, offset2_ex(layer->lslices, -extrusion_width_scaled / 2, extrusion_width_scaled)); } }); + + typedef std::chrono::high_resolution_clock clock_; + typedef std::chrono::duration > second_; + std::chrono::time_point t0{ clock_::now() }; // main part of overhang detection can be parallel tbb::parallel_for(tbb::blocked_range(0, m_object->layer_count()), [&](const tbb::blocked_range& range) { @@ -795,10 +802,18 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) ExPolygons& lower_polys = lower_layer->lslices_extrudable; // normal overhang + SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); ExPolygons lower_layer_offseted = offset_ex(lower_polys, support_offset_scaled, SUPPORT_SURFACES_OFFSET_PARAMETERS); - ExPolygons overhang_areas = diff_ex(curr_polys, lower_layer_offseted); + ts_layer->overhang_areas = std::move(diff_ex(curr_polys, lower_layer_offseted)); - if (is_auto(stype) && g_config_support_sharp_tails) + double duration{ std::chrono::duration_cast(clock_::now() - t0).count() }; + if (duration > 30 || ts_layer->overhang_areas.size() > 100) { + BOOST_LOG_TRIVIAL(info) << "detect_overhangs takes more than 30 secs, skip cantilever and sharp tails detection: layer_nr=" << layer_nr << " duration=" << duration; + config_detect_sharp_tails = false; + config_remove_small_overhangs = false; + continue; + } + if (is_auto(stype) && config_detect_sharp_tails) { // BBS detect sharp tail for (const ExPolygon& expoly : curr_polys) { @@ -813,7 +828,7 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) ExPolygons overhang = diff_ex({ expoly }, lower_polys); layer->sharp_tails.push_back(expoly); layer->sharp_tails_height.push_back(layer->height); - append(overhang_areas, overhang); + append(ts_layer->overhang_areas, overhang); if (!overhang.empty()) { has_sharp_tails = true; @@ -825,31 +840,28 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) } } - SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); - for (ExPolygon& poly : overhang_areas) { - ts_layer->overhang_areas.emplace_back(poly); - // check cantilever - { - // lower_layer_offset may be very small, so we need to do max and then add 0.1 - auto cluster_boundary_ex = intersection_ex(poly, offset_ex(lower_polys, scale_(std::max(extrusion_width,lower_layer_offset)+0.1))); - Polygons cluster_boundary = to_polygons(cluster_boundary_ex); - if (cluster_boundary.empty()) continue; - double dist_max = 0; - for (auto& pt : poly.contour.points) { - double dist_pt = std::numeric_limits::max(); - for (auto& ply : cluster_boundary) { - double d = ply.distance_to(pt); - dist_pt = std::min(dist_pt, d); - } - dist_max = std::max(dist_max, dist_pt); - } - if (dist_max > scale_(3)) { // is cantilever if the farmost point is larger than 3mm away from base - max_cantilever_dist = std::max(max_cantilever_dist, dist_max); - layer->cantilevers.emplace_back(poly); - BOOST_LOG_TRIVIAL(debug) << "found a cantilever cluster. layer_nr=" << layer_nr << dist_max; - has_cantilever = true; + // check cantilever + // lower_layer_offset may be very small, so we need to do max and then add 0.1 + lower_layer_offseted = offset_ex(lower_layer_offseted, scale_(std::max(extrusion_width - lower_layer_offset, 0.) + 0.1)); + for (ExPolygon& poly : ts_layer->overhang_areas) { + auto cluster_boundary_ex = intersection_ex(poly, lower_layer_offseted); + Polygons cluster_boundary = to_polygons(cluster_boundary_ex); + if (cluster_boundary.empty()) continue; + double dist_max = 0; + for (auto& pt : poly.contour.points) { + double dist_pt = std::numeric_limits::max(); + for (auto& ply : cluster_boundary) { + double d = ply.distance_to(pt); + dist_pt = std::min(dist_pt, d); } + dist_max = std::max(dist_max, dist_pt); + } + if (dist_max > scale_(3)) { // is cantilever if the farmost point is larger than 3mm away from base + max_cantilever_dist = std::max(max_cantilever_dist, dist_max); + layer->cantilevers.emplace_back(poly); + BOOST_LOG_TRIVIAL(debug) << "found a cantilever cluster. layer_nr=" << layer_nr << dist_max; + has_cantilever = true; } } } @@ -861,7 +873,7 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) return; // check if the sharp tails should be extended higher - if (is_auto(stype) && g_config_support_sharp_tails) { + if (is_auto(stype) && config_detect_sharp_tails) { for (size_t layer_nr = 0; layer_nr < m_object->layer_count(); layer_nr++) { if (m_object->print()->canceled()) break; @@ -945,21 +957,6 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) } } - // group overhang clusters - for (size_t layer_nr = 0; layer_nr < m_object->layer_count(); layer_nr++) { - if (m_object->print()->canceled()) - break; - if(layer_nr+m_raft_layers>=m_object->support_layer_count()) - break; - SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); - Layer* layer = m_object->get_layer(layer_nr); - for (auto& overhang : ts_layer->overhang_areas) { - OverhangCluster* cluster = find_and_insert_cluster(overhangClusters, overhang, layer_nr, extrusion_width_scaled); - if (overlaps({ overhang },layer->cantilevers)) - cluster->is_cantilever = true; - } - } - auto enforcers = m_object->slice_support_enforcers(); auto blockers = m_object->slice_support_blockers(); m_object->project_and_append_custom_facets(false, EnforcerBlockerType::ENFORCER, enforcers); @@ -967,6 +964,21 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) if (is_auto(stype) && config_remove_small_overhangs) { if (blockers.size() < m_object->layer_count()) blockers.resize(m_object->layer_count()); + // group overhang clusters + for (size_t layer_nr = 0; layer_nr < m_object->layer_count(); layer_nr++) { + if (m_object->print()->canceled()) + break; + if (layer_nr + m_raft_layers >= m_object->support_layer_count()) + break; + SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); + Layer* layer = m_object->get_layer(layer_nr); + for (auto& overhang : ts_layer->overhang_areas) { + OverhangCluster* cluster = find_and_insert_cluster(overhangClusters, overhang, layer_nr, extrusion_width_scaled); + if (overlaps({ overhang }, layer->cantilevers)) + cluster->is_cantilever = true; + } + } + // remove small overhangs for (auto& cluster : overhangClusters) { // 3. check whether the small overhang is sharp tail cluster.is_sharp_tail = false; @@ -1403,7 +1415,7 @@ void TreeSupport::generate_toolpaths() if (m_object->print()->canceled()) break; - m_object->print()->set_status(70, (boost::format(_u8L("Support: generate toolpath at layer %d")) % layer_id).str()); + //m_object->print()->set_status(70, (boost::format(_u8L("Support: generate toolpath at layer %d")) % layer_id).str()); SupportLayer* ts_layer = m_object->get_support_layer(layer_id); Flow support_flow(support_extrusion_width, ts_layer->height, nozzle_diameter); @@ -1583,7 +1595,7 @@ void TreeSupport::generate() // Generate overhang areas profiler.stage_start(STAGE_DETECT_OVERHANGS); - m_object->print()->set_status(55, _u8L("Support: detect overhangs")); + m_object->print()->set_status(55, _u8L("Generating supports")); detect_overhangs(); profiler.stage_finish(STAGE_DETECT_OVERHANGS); @@ -1604,7 +1616,7 @@ void TreeSupport::generate() //Drop nodes to lower layers. profiler.stage_start(STAGE_DROP_DOWN_NODES); - m_object->print()->set_status(60, _u8L("Support: propagate branches")); + m_object->print()->set_status(60, _u8L("Generating supports")); drop_nodes(contact_nodes); profiler.stage_finish(STAGE_DROP_DOWN_NODES); @@ -1612,22 +1624,14 @@ void TreeSupport::generate() //Generate support areas. profiler.stage_start(STAGE_DRAW_CIRCLES); - m_object->print()->set_status(65, _u8L("Support: draw polygons")); + m_object->print()->set_status(65, _u8L("Generating supports")); draw_circles(contact_nodes); profiler.stage_finish(STAGE_DRAW_CIRCLES); - for (auto& layer : contact_nodes) - { - for (SupportNode* p_node : layer) - { - delete p_node; - } - layer.clear(); - } - contact_nodes.clear(); + profiler.stage_start(STAGE_GENERATE_TOOLPATHS); - m_object->print()->set_status(69, _u8L("Support: generate toolpath")); + m_object->print()->set_status(69, _u8L("Generating supports")); generate_toolpaths(); profiler.stage_finish(STAGE_GENERATE_TOOLPATHS); @@ -1677,6 +1681,13 @@ coordf_t TreeSupport::calc_branch_radius(coordf_t base_radius, coordf_t mm_to_to return radius; } +coordf_t TreeSupport::get_radius(const SupportNode* node, coordf_t base_radius) +{ + if (node->radius == 0) + node->radius = calc_branch_radius(base_radius, node->dist_mm_to_top, node->diameter_angle_scale_factor); + return node->radius; +} + ExPolygons TreeSupport::get_avoidance(coordf_t radius, size_t obj_layer_nr) { #if USE_SUPPORT_3D @@ -2017,7 +2028,7 @@ void TreeSupport::draw_circles(const std::vector>& con } - m_object->print()->set_status(65, (boost::format( _u8L("Support: generate polygons at layer %d")) % layer_nr).str()); + //m_object->print()->set_status(65, (boost::format( _u8L("Support: generate polygons at layer %d")) % layer_nr).str()); // join roof segments double contact_dist_scaled = scale_(0.5);// scale_(m_slicing_params.gap_support_object); @@ -2204,7 +2215,7 @@ void TreeSupport::draw_circles(const std::vector>& con std::map> holePropagationInfos; for (int layer_nr = m_object->layer_count() - 1; layer_nr > 0; layer_nr--) { if (print->canceled()) break; - m_object->print()->set_status(66, (boost::format(_u8L("Support: fix holes at layer %d")) % layer_nr).str()); + //m_object->print()->set_status(66, (boost::format(_u8L("Support: fix holes at layer %d")) % layer_nr).str()); const std::vector& curr_layer_nodes = contact_nodes[layer_nr]; SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); @@ -2338,14 +2349,10 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod const auto nozzle_diameter = m_object->print()->config().nozzle_diameter.get_at(m_object->config().support_interface_filament-1); const auto support_line_width = config.support_line_width.get_abs_value(nozzle_diameter); - auto get_branch_angle = [this,&config](coordf_t radius) { - if (config.tree_support_branch_angle.value < 30.0) return config.tree_support_branch_angle.value; - return (radius - MIN_BRANCH_RADIUS) / (MAX_BRANCH_RADIUS - MIN_BRANCH_RADIUS) * (config.tree_support_branch_angle.value - 30.0) + 30.0; - }; auto get_max_move_dist = [this, &config, branch_radius, tip_layers, diameter_angle_scale_factor, wall_count, support_extrusion_width, support_line_width](const SupportNode *node, int power = 1) { double move_dist = node->max_move_dist; if (node->max_move_dist == 0) { - if (node->radius == 0) node->radius = calc_branch_radius(branch_radius, node->dist_mm_to_top, diameter_angle_scale_factor); + node->radius = get_radius(node, branch_radius); double angle = config.tree_support_branch_angle.value; if (angle > 30.0 && node->radius > MIN_BRANCH_RADIUS) angle = (node->radius - MIN_BRANCH_RADIUS) / (MAX_BRANCH_RADIUS - MIN_BRANCH_RADIUS) * (config.tree_support_branch_angle.value - 30.0) + 30.0; @@ -2362,7 +2369,47 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod std::vector &layer_heights = m_ts_data->layer_heights; if (layer_heights.empty()) return; - std::unordered_set to_free_node_set; + // precalculate avoidance of all possible radii. + // This will cause computing more (radius, layer_nr) pairs, but it's worth to do so since we are doning this in parallel. + if (1) { + typedef std::chrono::high_resolution_clock clock_; + typedef std::chrono::duration > second_; + std::chrono::time_point t0{ clock_::now() }; + + // get all the possible radiis + std::vector > all_layer_radius(contact_nodes.size()); + std::vector> all_layer_node_dist(contact_nodes.size()); + for (size_t layer_nr = contact_nodes.size() - 1; layer_nr > 0; layer_nr--) { + if (layer_heights[layer_nr].height < EPSILON) continue; + auto& layer_radius = all_layer_radius[layer_nr]; + auto& layer_node_dist = all_layer_node_dist[layer_nr]; + for (auto* p_node : contact_nodes[layer_nr]) { + layer_node_dist.emplace(p_node->dist_mm_to_top); + } + size_t layer_nr_next = layer_heights[layer_nr].next_layer_nr; + if (layer_nr_next <= contact_nodes.size() - 1 && layer_nr_next > 0) { + for (auto node_dist : layer_node_dist) + all_layer_node_dist[layer_nr_next].emplace(node_dist + layer_heights[layer_nr].height); + } + for (auto node_dist : layer_node_dist) { + layer_radius.emplace(calc_branch_radius(branch_radius, node_dist, diameter_angle_scale_factor)); + } + } + // parallel pre-compute avoidance + tbb::parallel_for(tbb::blocked_range(0, contact_nodes.size() - 1), [&](const tbb::blocked_range &range) { + for (size_t layer_nr = range.begin(); layer_nr < range.end(); layer_nr++) { + for (auto node_radius : all_layer_radius[layer_nr]) { + m_ts_data->get_avoidance(node_radius, layer_nr); + get_collision(m_ts_data->m_xy_distance, layer_nr); + } + } + }); + + double duration{ std::chrono::duration_cast(clock_::now() - t0).count() }; + BOOST_LOG_TRIVIAL(debug) << "finish pre calculate_avoidance. before m_avoidance_cache.size()=" << m_ts_data->m_avoidance_cache.size() + << ", takes " << duration << " secs."; + } + m_spanning_trees.resize(contact_nodes.size()); //m_mst_line_x_layer_contour_caches.resize(contact_nodes.size()); @@ -2382,11 +2429,11 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod std::deque> unsupported_branch_leaves; // All nodes that are leaves on this layer that would result in unsupported ('mid-air') branches. const Layer* ts_layer = m_object->get_support_layer(layer_nr); - m_object->print()->set_status(60, (boost::format(_u8L("Support: propagate branches at layer %d")) % layer_nr).str()); + m_object->print()->set_status(60 + int(10 * (1 - float(layer_nr) / contact_nodes.size())), _u8L("Generating supports"));// (boost::format(_u8L("Support: propagate branches at layer %d")) % layer_nr).str()); Polygons layer_contours = std::move(m_ts_data->get_contours_with_holes(layer_nr)); //std::unordered_map& mst_line_x_layer_contour_cache = m_mst_line_x_layer_contour_caches[layer_nr]; - std::unordered_map mst_line_x_layer_contour_cache; + tbb::concurrent_unordered_map mst_line_x_layer_contour_cache; auto is_line_cut_by_contour = [&mst_line_x_layer_contour_cache,&layer_contours](Point a, Point b) { auto iter = mst_line_x_layer_contour_cache.find({ a, b }); @@ -2408,7 +2455,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod }; //Group together all nodes for each part. - const ExPolygons& parts = m_ts_data->m_layer_outlines_below[layer_nr];// m_ts_data->get_avoidance(0, layer_nr); + const ExPolygons& parts = m_ts_data->m_layer_outlines_below[layer_nr]; std::vector> nodes_per_part(1 + parts.size()); //All nodes that aren't inside a part get grouped together in the 0th part. for (SupportNode* p_node : layer_contact_nodes) { @@ -2480,23 +2527,24 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod #endif for (size_t group_index = 0; group_index < nodes_per_part.size(); group_index++) { + auto& nodes_this_part = nodes_per_part[group_index]; const MinimumSpanningTree& mst = spanning_trees[group_index]; //In the first pass, merge all nodes that are close together. - std::unordered_set to_delete; - for (const std::pair& entry : nodes_per_part[group_index]) - { + tbb::concurrent_unordered_set to_delete; + std::vector> nodes_vec(nodes_this_part.begin(), nodes_this_part.end()); + tbb::parallel_for_each(nodes_vec.begin(), nodes_vec.end(), [&](const std::pair& entry) { SupportNode* p_node = entry.second; SupportNode& node = *p_node; if (to_delete.find(p_node) != to_delete.end()) { - continue; //Delete this node (don't create a new node for it on the next layer). + return; //Delete this node (don't create a new node for it on the next layer). } const std::vector& neighbours = mst.adjacent_nodes(node.position); if (node.type == ePolygon) { // Remove all circle neighbours that are completely inside the polygon and merge them into this node. for (const Point &neighbour : neighbours) { - SupportNode * neighbour_node = nodes_per_part[group_index][neighbour]; - if (neighbour_node->type == ePolygon) continue; + SupportNode * neighbour_node = nodes_this_part[neighbour]; + if(neighbour_node->type==ePolygon) return; coord_t neighbour_radius = scale_(neighbour_node->radius); Point pt_north = neighbour + Point(0, neighbour_radius), pt_south = neighbour - Point(0, neighbour_radius), pt_west = neighbour - Point(neighbour_radius, 0), pt_east = neighbour + Point(neighbour_radius, 0); @@ -2512,14 +2560,12 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod } } else if (neighbours.size() == 1 && vsize2_with_unscale(neighbours[0] - node.position) < max_move_distance2 && mst.adjacent_nodes(neighbours[0]).size() == 1 && - nodes_per_part[group_index][neighbours[0]]->type!=ePolygon) // We have just two nodes left, and they're very close, and the only neighbor is not ePolygon + nodes_this_part[neighbours[0]]->type!=ePolygon) // We have just two nodes left, and they're very close, and the only neighbor is not ePolygon { //Insert a completely new node and let both original nodes fade. Point next_position = (node.position + neighbours[0]) / 2; //Average position of the two nodes. - - const coordf_t branch_radius_node = calc_branch_radius(branch_radius, node.dist_mm_to_top, diameter_angle_scale_factor); - - auto avoid_layer = get_avoidance(branch_radius_node, layer_nr_next); + coordf_t next_radius = calc_branch_radius(branch_radius, node.dist_mm_to_top+height_next, diameter_angle_scale_factor); + auto avoid_layer = get_avoidance(next_radius, layer_nr_next); if (group_index == 0) { //Avoid collisions. @@ -2527,23 +2573,23 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod move_out_expolys(avoid_layer, next_position, radius_sample_resolution + EPSILON, max_move_between_samples); } - SupportNode* neighbour = nodes_per_part[group_index][neighbours[0]]; - SupportNode* node_; + SupportNode* neighbour = nodes_this_part[neighbours[0]]; + SupportNode* node_parent; if (p_node->parent && neighbour->parent) - node_ = (node.dist_mm_to_top >= neighbour->dist_mm_to_top) ? p_node : neighbour; + node_parent = (node.dist_mm_to_top >= neighbour->dist_mm_to_top) ? p_node : neighbour; else - node_ = p_node->parent ? p_node : neighbour; + node_parent = p_node->parent ? p_node : neighbour; // Make sure the next pass doesn't drop down either of these (since that already happened). - node_->merged_neighbours.push_front(node_ == p_node ? neighbour : p_node); + node_parent->merged_neighbours.push_front(node_parent == p_node ? neighbour : p_node); const bool to_buildplate = !is_inside_ex(get_collision(0, layer_nr_next), next_position); - SupportNode * next_node = m_ts_data->create_node(next_position, node_->distance_to_top + 1, layer_nr_next, node_->support_roof_layers_below-1, to_buildplate, node_, - print_z_next, height_next); + SupportNode* next_node = m_ts_data->create_node(next_position, node_parent->distance_to_top + 1, layer_nr_next, node_parent->support_roof_layers_below - 1, to_buildplate, node_parent, + print_z_next, height_next); get_max_move_dist(next_node); + m_ts_data->m_mutex.lock(); contact_nodes[layer_nr_next].push_back(next_node); - - to_delete.insert(neighbour); to_delete.insert(p_node); + m_ts_data->m_mutex.unlock(); } else if (neighbours.size() > 1) //Don't merge leaf nodes because we would then incur movement greater than the maximum move distance. { @@ -2552,7 +2598,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod { if (vsize2_with_unscale(neighbour - node.position) < /*max_move_distance2*/get_max_move_dist(&node,2)) { - SupportNode* neighbour_node = nodes_per_part[group_index][neighbour]; + SupportNode* neighbour_node = nodes_this_part[neighbour]; if (neighbour_node->type == ePolygon) continue; // only allow bigger node to merge smaller nodes. See STUDIO-6326 if(node.dist_mm_to_top < neighbour_node->dist_mm_to_top) continue; @@ -2565,15 +2611,16 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod } } } + ); //In the second pass, move all middle nodes. - for (const std::pair& entry : nodes_per_part[group_index]) - { + tbb::parallel_for_each(nodes_vec.begin(), nodes_vec.end(), [&](const std::pair& entry) { + SupportNode* p_node = entry.second; const SupportNode& node = *p_node; if (to_delete.find(p_node) != to_delete.end()) { - continue; + return; } if (node.type == ePolygon) { // polygon node do not merge or move @@ -2595,15 +2642,19 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod p_node, print_z_next, height_next); next_node->max_move_dist = 0; next_node->overhang = std::move(overhangs_next[index_biggest]); + m_ts_data->m_mutex.lock(); contact_nodes[layer_nr_next].emplace_back(next_node); + m_ts_data->m_mutex.unlock(); + } - continue; + return; } //If the branch falls completely inside a collision area (the entire branch would be removed by the X/Y offset), delete it. if (group_index > 0 && is_inside_ex(get_collision(m_ts_data->m_xy_distance, layer_nr), node.position)) { - const coordf_t branch_radius_node = calc_branch_radius(branch_radius, node.dist_mm_to_top, diameter_angle_scale_factor); + std::scoped_lock lock(m_ts_data->m_mutex); + const coordf_t branch_radius_node = get_radius(p_node, branch_radius); Point to_outside = projection_onto(get_collision(m_ts_data->m_xy_distance, layer_nr), node.position); double dist2_to_outside = vsize2_with_unscale(node.position - to_outside); if (dist2_to_outside >= branch_radius_node * branch_radius_node) //Too far inside. @@ -2616,21 +2667,21 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod to_delete.insert(p_node); p_node->valid = false; } - continue; + return; } // if the link between parent and current is cut by contours, mark current as bottom contact node if (p_node->parent && intersection_ln({p_node->position, p_node->parent->position}, layer_contours).empty()==false) { to_delete.insert(p_node); p_node->valid = false; - continue; + return; } } Point next_layer_vertex = node.position; Point move_to_neighbor_center; std::vector moves; std::vector weights; - const std::vector neighbours = mst.adjacent_nodes(node.position); + const std::vector& neighbours = mst.adjacent_nodes(node.position); // 1. do not merge neighbors under 5mm // 2. Only merge node with single neighbor in distance between [max_move_distance, 10mm/layer_height] float dist2_to_first_neighbor = neighbours.empty() ? 0 : vsize2_with_unscale(neighbours[0] - node.position); @@ -2641,7 +2692,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod Point sum_direction(0, 0); for (const Point &neighbour : neighbours) { // do not move to the neighbor to be deleted - SupportNode *neighbour_node = nodes_per_part[group_index][neighbour]; + SupportNode *neighbour_node = nodes_this_part[neighbour]; if (to_delete.find(neighbour_node) != to_delete.end()) continue; Point direction = neighbour - node.position; @@ -2672,14 +2723,14 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod } } - const coordf_t branch_radius_node = calc_branch_radius(branch_radius, node.dist_mm_to_top/*+node.print_z*/, diameter_angle_scale_factor); #ifdef SUPPORT_TREE_DEBUG_TO_SVG if (node.position(1) > max_y) { max_y = node.position(1); - branch_radius_temp = branch_radius_node; + branch_radius_temp = get_radius(p_node, branch_radius); } #endif - auto avoidance_next = get_avoidance(branch_radius_node, layer_nr_next); + coordf_t next_radius = calc_branch_radius(branch_radius, node.dist_mm_to_top + height_next, diameter_angle_scale_factor); + auto avoidance_next = get_avoidance(next_radius, layer_nr_next); Point to_outside = projection_onto(avoidance_next, node.position); Point direction_to_outer = to_outside - node.position; @@ -2693,7 +2744,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod Point candidate_vertex = node.position; const coordf_t max_move_between_samples = max_move_distance + radius_sample_resolution + EPSILON; // 100 micron extra for rounding errors. // use get_collision instead of get_avoidance here (See STUDIO-4252) - bool is_outside = move_out_expolys(get_collision(branch_radius_node,layer_nr_next), candidate_vertex, max_move_between_samples, max_move_between_samples); + bool is_outside = move_out_expolys(get_collision(next_radius,layer_nr_next), candidate_vertex, max_move_between_samples, max_move_between_samples); if (is_outside) { direction_to_outer = candidate_vertex - node.position; dist2_to_outer = vsize2_with_unscale(direction_to_outer); @@ -2733,8 +2784,11 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod SupportNode * next_node = m_ts_data->create_node(next_layer_vertex, node.distance_to_top + 1, layer_nr_next, node.support_roof_layers_below - 1, to_buildplate, p_node, print_z_next, height_next); get_max_move_dist(next_node); + m_ts_data->m_mutex.lock(); contact_nodes[layer_nr_next].push_back(next_node); + m_ts_data->m_mutex.unlock(); } + ); } #ifdef SUPPORT_TREE_DEBUG_TO_SVG @@ -2833,8 +2887,6 @@ void TreeSupport::smooth_nodes(std::vector> &contact_ const int iterations = 100; for (size_t k = 0; k < iterations; k++) { for (size_t i = 1; i < pts.size() - 1; i++) { - size_t i2 = i >= 2 ? i - 2 : 0; - size_t i3 = i < pts.size() - 2 ? i + 2 : pts.size() - 1; Point pt = ( pts[i - 1] + pts[i] + pts[i + 1] ) / 3; pts1[i] = pt; radii1[i] = (radii[i - 1] + radii[i] + radii[i + 1] ) / 3; @@ -3325,7 +3377,7 @@ const ExPolygons& TreeSupportData::calculate_avoidance(const RadiusLayerPair& ke { const auto& radius = key.radius; const auto& layer_nr = key.layer_nr; - BOOST_LOG_TRIVIAL(debug) << "calculate_avoidance on radius=" << radius << ", layer=" << layer_nr<<", recursion="< +#include #include "TreeSupport3D.hpp" #include @@ -629,18 +630,15 @@ TreeSupport::TreeSupport(PrintObject& object, const SlicingParameters &slicing_p #define SUPPORT_SURFACES_OFFSET_PARAMETERS ClipperLib::jtSquare, 0. void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) { - // overhangs are already detected - if (m_object->support_layer_count() >= m_object->layer_count()) - return; - bool tree_support_enable = m_object_config->enable_support.value && is_tree(m_object_config->support_type.value); + if (!tree_support_enable && !check_support_necessity) { + BOOST_LOG_TRIVIAL(info) << "Tree support is disabled."; + return; + } // Clear and create Tree Support Layers m_object->clear_support_layers(); m_object->clear_tree_support_preview_cache(); - create_tree_support_layers(); - if (!tree_support_enable && !check_support_necessity) - return; const PrintObjectConfig& config = m_object->config(); SupportType stype = support_type; @@ -764,6 +762,7 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) Layer* layer = m_object->get_layer(layer_nr); // Filter out areas whose diameter that is smaller than extrusion_width, but we don't want to lose any details. layer->lslices_extrudable = intersection_ex(layer->lslices, offset2_ex(layer->lslices, -extrusion_width_scaled / 2, extrusion_width_scaled)); + layer->loverhangs.clear(); } }); @@ -771,6 +770,7 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) typedef std::chrono::duration > second_; std::chrono::time_point t0{ clock_::now() }; // main part of overhang detection can be parallel + tbb::concurrent_vector overhangs_all_layers(m_object->layer_count()); tbb::parallel_for(tbb::blocked_range(0, m_object->layer_count()), [&](const tbb::blocked_range& range) { for (size_t layer_nr = range.begin(); layer_nr < range.end(); layer_nr++) { @@ -802,12 +802,11 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) ExPolygons& lower_polys = lower_layer->lslices_extrudable; // normal overhang - SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); ExPolygons lower_layer_offseted = offset_ex(lower_polys, support_offset_scaled, SUPPORT_SURFACES_OFFSET_PARAMETERS); - ts_layer->overhang_areas = std::move(diff_ex(curr_polys, lower_layer_offseted)); + overhangs_all_layers[layer_nr] = std::move(diff_ex(curr_polys, lower_layer_offseted)); double duration{ std::chrono::duration_cast(clock_::now() - t0).count() }; - if (duration > 30 || ts_layer->overhang_areas.size() > 100) { + if (duration > 30 || overhangs_all_layers[layer_nr].size() > 100) { BOOST_LOG_TRIVIAL(info) << "detect_overhangs takes more than 30 secs, skip cantilever and sharp tails detection: layer_nr=" << layer_nr << " duration=" << duration; config_detect_sharp_tails = false; config_remove_small_overhangs = false; @@ -825,18 +824,14 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) } if (is_sharp_tail) { - ExPolygons overhang = diff_ex({ expoly }, lower_polys); layer->sharp_tails.push_back(expoly); - layer->sharp_tails_height.push_back(layer->height); - append(ts_layer->overhang_areas, overhang); + layer->sharp_tails_height.push_back(0); - if (!overhang.empty()) { - has_sharp_tails = true; + has_sharp_tails = true; #ifdef SUPPORT_TREE_DEBUG_TO_SVG - SVG::export_expolygons(debug_out_path("sharp_tail_orig_%.02f.svg", layer->print_z), { expoly }); + SVG::export_expolygons(debug_out_path("sharp_tail_orig_%.02f.svg", layer->print_z), { expoly }); #endif - } - } + } } } @@ -844,7 +839,7 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) // check cantilever // lower_layer_offset may be very small, so we need to do max and then add 0.1 lower_layer_offseted = offset_ex(lower_layer_offseted, scale_(std::max(extrusion_width - lower_layer_offset, 0.) + 0.1)); - for (ExPolygon& poly : ts_layer->overhang_areas) { + for (ExPolygon& poly : overhangs_all_layers[layer_nr]) { auto cluster_boundary_ex = intersection_ex(poly, lower_layer_offseted); Polygons cluster_boundary = to_polygons(cluster_boundary_ex); if (cluster_boundary.empty()) continue; @@ -879,7 +874,6 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) break; Layer* layer = m_object->get_layer(layer_nr); - SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); Layer* lower_layer = layer->lower_layer; if (!lower_layer) continue; @@ -941,43 +935,32 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) } while (0); if (is_sharp_tail) { - ExPolygons overhang = diff_ex({ expoly }, lower_layer->lslices); layer->sharp_tails.push_back(expoly); layer->sharp_tails_height.push_back( accum_height); - append(ts_layer->overhang_areas, overhang); - - if (!overhang.empty()) - has_sharp_tails = true; -#ifdef SUPPORT_TREE_DEBUG_TO_SVG - SVG::export_expolygons(debug_out_path("sharp_tail_%.02f.svg", layer->print_z), overhang); -#endif } } } } - + + // group overhang clusters + for (size_t layer_nr = 0; layer_nr < m_object->layer_count(); layer_nr++) { + if (m_object->print()->canceled()) + break; + Layer* layer = m_object->get_layer(layer_nr); + for (auto& overhang : overhangs_all_layers[layer_nr]) { + OverhangCluster* cluster = find_and_insert_cluster(overhangClusters, overhang, layer_nr, extrusion_width_scaled); + if (overlaps({ overhang }, layer->cantilevers)) + cluster->is_cantilever = true; + } + } + auto enforcers = m_object->slice_support_enforcers(); auto blockers = m_object->slice_support_blockers(); m_object->project_and_append_custom_facets(false, EnforcerBlockerType::ENFORCER, enforcers); m_object->project_and_append_custom_facets(false, EnforcerBlockerType::BLOCKER, blockers); + if (is_auto(stype) && config_remove_small_overhangs) { - if (blockers.size() < m_object->layer_count()) - blockers.resize(m_object->layer_count()); - // group overhang clusters - for (size_t layer_nr = 0; layer_nr < m_object->layer_count(); layer_nr++) { - if (m_object->print()->canceled()) - break; - if (layer_nr + m_raft_layers >= m_object->support_layer_count()) - break; - SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); - Layer* layer = m_object->get_layer(layer_nr); - for (auto& overhang : ts_layer->overhang_areas) { - OverhangCluster* cluster = find_and_insert_cluster(overhangClusters, overhang, layer_nr, extrusion_width_scaled); - if (overlaps({ overhang }, layer->cantilevers)) - cluster->is_cantilever = true; - } - } // remove small overhangs for (auto& cluster : overhangClusters) { // 3. check whether the small overhang is sharp tail @@ -1010,51 +993,66 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) { cluster.merged_poly,{"overhang", "blue", 0.5} }, { cluster.is_cantilever? layer1->cantilevers: offset_ex(cluster.merged_poly, -1 * extrusion_width_scaled), {cluster.is_cantilever ? "cantilever":"erode1","green",0.5}} }); #endif - - if (!cluster.is_small_overhang) - continue; - - for (auto it = cluster.layer_overhangs.begin(); it != cluster.layer_overhangs.end(); it++) { - int layer_nr = it->first; - auto p_overhang = it->second; - blockers[layer_nr].push_back(p_overhang->contour); - } } } - has_overhangs = false; + for (auto& cluster : overhangClusters) { + if (cluster.is_small_overhang) continue; + // collect overhangs that's not small overhangs + for (auto it = cluster.layer_overhangs.begin(); it != cluster.layer_overhangs.end(); it++) { + int layer_nr = it->first; + auto p_overhang = it->second; + m_object->get_layer(layer_nr)->loverhangs.emplace_back(*p_overhang); + } + } + + int layers_with_overhangs = 0; for (int layer_nr = 0; layer_nr < m_object->layer_count(); layer_nr++) { if (m_object->print()->canceled()) break; - SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); auto layer = m_object->get_layer(layer_nr); auto lower_layer = layer->lower_layer; - if (support_critical_regions_only && is_auto(stype)) { - ts_layer->overhang_areas.clear(); - if (lower_layer == nullptr) - ts_layer->overhang_areas = layer->sharp_tails; - else - ts_layer->overhang_areas = diff_ex(layer->sharp_tails, lower_layer->lslices); - append(ts_layer->overhang_areas, layer->cantilevers); + // add support for every 1mm height for sharp tails + ExPolygons sharp_tail_overhangs; + if (lower_layer == nullptr) + sharp_tail_overhangs = layer->sharp_tails; + else { + ExPolygons lower_layer_expanded = offset_ex(lower_layer->lslices_extrudable, SCALED_RESOLUTION); + for (size_t i = 0; i < layer->sharp_tails_height.size();i++) { + ExPolygons areas = diff_clipped({ layer->sharp_tails[i]}, lower_layer_expanded); + float accum_height = layer->sharp_tails_height[i]; + if (!areas.empty() && int(accum_height * 10) % 5 == 0) { + append(sharp_tail_overhangs, areas); + has_sharp_tails = true; +#ifdef SUPPORT_TREE_DEBUG_TO_SVG + SVG::export_expolygons(debug_out_path("sharp_tail_%.02f.svg", layer->print_z), areas); +#endif + } + } + } + + if (support_critical_regions_only && is_auto(stype)) { + layer->loverhangs.clear(); // remove oridinary overhangs, only keep cantilevers and sharp tails (added later) + append(layer->loverhangs, layer->cantilevers); } if (layer_nr < blockers.size()) { Polygons& blocker = blockers[layer_nr]; // Arthur: union_ is a must because after mirroring, the blocker polygons are in left-hand coordinates, ie clockwise, // which are not valid polygons, and will be removed by offset_ex. union_ can make these polygons right. - ts_layer->overhang_areas = diff_ex(ts_layer->overhang_areas, offset_ex(union_(blocker), scale_(radius_sample_resolution))); + layer->loverhangs = diff_ex(layer->loverhangs, offset_ex(union_(blocker), scale_(radius_sample_resolution))); } - if (max_bridge_length > 0 && ts_layer->overhang_areas.size() > 0 && lower_layer) { + if (max_bridge_length > 0 && layer->loverhangs.size() > 0 && lower_layer) { // do not break bridge for normal part in TreeHybrid, nor Tree Strong - bool break_bridge = !(m_support_params.support_style == smsTreeHybrid && area(ts_layer->overhang_areas) > m_support_params.thresh_big_overhang) + bool break_bridge = !(m_support_params.support_style == smsTreeHybrid && area(layer->loverhangs) > m_support_params.thresh_big_overhang) && !(m_support_params.support_style==smsTreeStrong); - m_object->remove_bridges_from_contacts(lower_layer, layer, extrusion_width_scaled, &ts_layer->overhang_areas, max_bridge_length, break_bridge); + m_object->remove_bridges_from_contacts(lower_layer, layer, extrusion_width_scaled, &layer->loverhangs, max_bridge_length, break_bridge); } - int nDetected = ts_layer->overhang_areas.size(); + int nDetected = layer->loverhangs.size(); // enforcers now follow same logic as normal support. See STUDIO-3692 if (layer_nr < enforcers.size() && lower_layer) { float no_interface_offset = std::accumulate(layer->regions().begin(), layer->regions().end(), FLT_MAX, @@ -1065,31 +1063,36 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) ExPolygons enforcer_polygons = diff_ex(intersection_ex(layer->lslices, enforcer), // Inflate just a tiny bit to avoid intersection of the overhang areas with the object. expand(lower_layer_polygons, 0.05f * no_interface_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS)); - append(ts_layer->overhang_areas, enforcer_polygons); + append(layer->loverhangs, enforcer_polygons); } } - int nEnforced = ts_layer->overhang_areas.size(); + int nEnforced = layer->loverhangs.size(); + // add sharp tail overhangs + append(layer->loverhangs, sharp_tail_overhangs); + // fill overhang_types - for (size_t i = 0; i < ts_layer->overhang_areas.size(); i++) - ts_layer->overhang_types.emplace(&ts_layer->overhang_areas[i], i < nDetected ? SupportLayer::Detected : - i < nEnforced ? SupportLayer::Enforced : SupportLayer::SharpTail); + for (size_t i = 0; i < layer->loverhangs.size(); i++) + overhang_types.emplace(&layer->loverhangs[i], i < nDetected ? OverhangType::Detected : + i < nEnforced ? OverhangType::Enforced : OverhangType::SharpTail); - if (!ts_layer->overhang_areas.empty()) { - has_overhangs = true; + if (!layer->loverhangs.empty()) { + layers_with_overhangs++; m_highest_overhang_layer = std::max(m_highest_overhang_layer, size_t(layer_nr)); } if (!layer->cantilevers.empty()) has_cantilever = true; } + BOOST_LOG_TRIVIAL(info) << "Tree support overhang detection done. " << layers_with_overhangs << " layers with overhangs."; + #ifdef SUPPORT_TREE_DEBUG_TO_SVG - for (const SupportLayer* layer : m_object->support_layers()) { - if (layer->overhang_areas.empty() && (blockers.size()<=layer->id() || blockers[layer->id()].empty())) + for (const Layer* layer : m_object->layers()) { + if (layer->loverhangs.empty() && (blockers.size()<=layer->id() || blockers[layer->id()].empty())) continue; - SVG::export_expolygons(debug_out_path("overhang_areas_%.2f.svg", layer->print_z), { + SVG::export_expolygons(debug_out_path("overhang_areas_%d_%.2f.svg",layer->id(), layer->print_z), { { m_object->get_layer(layer->id())->lslices, {"lslices","yellow",0.5} }, - { layer->overhang_areas, {"overhang","red",0.5} } + { layer->loverhangs, {"overhang","red",0.5} } }); if (enforcers.size() > layer->id()) { @@ -1595,12 +1598,11 @@ void TreeSupport::generate() // Generate overhang areas profiler.stage_start(STAGE_DETECT_OVERHANGS); - m_object->print()->set_status(55, _u8L("Generating supports")); + m_object->print()->set_status(55, _u8L("Generating support")); detect_overhangs(); profiler.stage_finish(STAGE_DETECT_OVERHANGS); - if (!has_overhangs) return; - + create_tree_support_layers(); m_ts_data = m_object->alloc_tree_support_preview_cache(); m_ts_data->is_slim = is_slim; @@ -1610,13 +1612,13 @@ void TreeSupport::generate() std::vector move_bounds(m_highest_overhang_layer + 1); profiler.stage_start(STAGE_GENERATE_CONTACT_NODES); m_object->print()->set_status(56, _u8L("Support: generate contact points")); - generate_contact_points(contact_nodes, move_bounds); + generate_contact_points(contact_nodes); profiler.stage_finish(STAGE_GENERATE_CONTACT_NODES); //Drop nodes to lower layers. profiler.stage_start(STAGE_DROP_DOWN_NODES); - m_object->print()->set_status(60, _u8L("Generating supports")); + m_object->print()->set_status(60, _u8L("Generating support")); drop_nodes(contact_nodes); profiler.stage_finish(STAGE_DROP_DOWN_NODES); @@ -1624,14 +1626,14 @@ void TreeSupport::generate() //Generate support areas. profiler.stage_start(STAGE_DRAW_CIRCLES); - m_object->print()->set_status(65, _u8L("Generating supports")); + m_object->print()->set_status(65, _u8L("Generating support")); draw_circles(contact_nodes); profiler.stage_finish(STAGE_DRAW_CIRCLES); profiler.stage_start(STAGE_GENERATE_TOOLPATHS); - m_object->print()->set_status(69, _u8L("Generating supports")); + m_object->print()->set_status(70, _u8L("Generating support")); generate_toolpaths(); profiler.stage_finish(STAGE_GENERATE_TOOLPATHS); @@ -1922,7 +1924,6 @@ void TreeSupport::draw_circles(const std::vector>& con coordf_t max_layers_above_roof = 0; coordf_t max_layers_above_roof1 = 0; int interface_id = 0; - bool has_polygon_node = false; bool has_circle_node = false; bool need_extra_wall = false; ExPolygons collision_sharp_tails; @@ -1943,6 +1944,7 @@ void TreeSupport::draw_circles(const std::vector>& con BOOST_LOG_TRIVIAL(debug) << "circles at layer " << layer_nr << " contact nodes size=" << contact_nodes[layer_nr].size(); //Draw the support areas and add the roofs appropriately to the support roof instead of normal areas. ts_layer->lslices.reserve(contact_nodes[layer_nr].size()); + ExPolygons area_poly; // the polygon node area which will be printed as normal support for (const SupportNode* p_node : contact_nodes[layer_nr]) { if (print->canceled()) @@ -1959,9 +1961,9 @@ void TreeSupport::draw_circles(const std::vector>& con else { area = offset_ex({ node.overhang }, scale_(m_ts_data->m_xy_distance)); } - if (node.type == ePolygon) - has_polygon_node = true; area = diff_clipped(area, get_collision(node.is_sharp_tail && node.distance_to_top <= 0)); + if (node.type == ePolygon) + area_poly = area; } else { Polygon circle(branch_circle); @@ -2084,8 +2086,8 @@ void TreeSupport::draw_circles(const std::vector>& con auto &area_groups = ts_layer->area_groups; for (auto& area : ts_layer->base_areas) { area_groups.emplace_back(&area, SupportLayer::BaseType, max_layers_above_base); - area_groups.back().need_infill = has_polygon_node; - // area_groups.back().need_extra_wall = need_extra_wall; + area_groups.back().need_infill = overlaps({ area }, area_poly); + area_groups.back().need_extra_wall = need_extra_wall; } for (auto& area : ts_layer->roof_areas) { area_groups.emplace_back(&area, SupportLayer::RoofType, max_layers_above_roof); @@ -2423,13 +2425,14 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod continue; int layer_nr_next = layer_heights[layer_nr].next_layer_nr; + coordf_t print_z = layer_heights[layer_nr].print_z; coordf_t print_z_next = layer_heights[layer_nr_next].print_z; coordf_t height_next = layer_heights[layer_nr_next].height; std::deque> unsupported_branch_leaves; // All nodes that are leaves on this layer that would result in unsupported ('mid-air') branches. const Layer* ts_layer = m_object->get_support_layer(layer_nr); - m_object->print()->set_status(60 + int(10 * (1 - float(layer_nr) / contact_nodes.size())), _u8L("Generating supports"));// (boost::format(_u8L("Support: propagate branches at layer %d")) % layer_nr).str()); + m_object->print()->set_status(60 + int(10 * (1 - float(layer_nr) / contact_nodes.size())), _u8L("Generating support"));// (boost::format(_u8L("Support: propagate branches at layer %d")) % layer_nr).str()); Polygons layer_contours = std::move(m_ts_data->get_contours_with_holes(layer_nr)); //std::unordered_map& mst_line_x_layer_contour_cache = m_mst_line_x_layer_contour_caches[layer_nr]; @@ -3034,7 +3037,7 @@ std::vector TreeSupport::plan_layer_heights(std::vector>& contact_nodes, const std::vector& move_bounds) +void TreeSupport::generate_contact_points(std::vector>& contact_nodes) { const PrintObjectConfig &config = m_object->config(); const coordf_t point_spread = scale_(config.tree_support_branch_distance.value); @@ -3092,8 +3095,8 @@ void TreeSupport::generate_contact_points(std::vector> // fix bug of generating support for very thin objects if (m_object->layers().size() <= z_distance_top_layers + 1) return; - if (m_object->support_layer_count() <= m_raft_layers) - return; + //if (m_object->support_layer_count() <= m_raft_layers) + // return; int nonempty_layers = 0; tbb::concurrent_vector all_nodes; @@ -3101,10 +3104,10 @@ void TreeSupport::generate_contact_points(std::vector> for (size_t layer_nr = range.begin(); layer_nr < range.end(); layer_nr++) { if (m_object->print()->canceled()) break; - auto ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); Layer* layer = m_object->get_layer(layer_nr); auto& curr_nodes = contact_nodes[layer_nr - 1]; - if (ts_layer->overhang_areas.empty()) continue; + if (layer->loverhangs.empty()) continue; + std::unordered_set already_inserted; auto print_z = m_object->get_layer(layer_nr)->print_z; auto bottom_z = m_object->get_layer(layer_nr)->bottom_z(); @@ -3138,9 +3141,9 @@ void TreeSupport::generate_contact_points(std::vector> return contact_node; }; - for (const auto& area_type : ts_layer->overhang_types) { - const auto& overhang_part = *area_type.first; - is_sharp_tail = area_type.second == SupportLayer::SharpTail; + for (const auto& overhang_part : layer->loverhangs) { + const auto& overhang_type = this->overhang_types[&overhang_part]; + is_sharp_tail = overhang_type == OverhangType::SharpTail; BoundingBox overhang_bounds = get_extents(overhang_part); if (m_support_params.support_style == smsTreeHybrid && overhang_part.area() > m_support_params.thresh_big_overhang && !is_sharp_tail) { if (!overlaps({ overhang_part }, m_ts_data->m_layer_outlines_below[layer_nr - 1])) { @@ -3169,55 +3172,42 @@ void TreeSupport::generate_contact_points(std::vector> } } } - auto& move_bounds_layer = move_bounds[layer_nr]; - if (move_bounds_layer.empty()) { - overhang_bounds.inflated(half_overhang_distance); - bool added = false; //Did we add a point this way? + + // add supports along contours + libnest2d::placers::EdgeCache edge_cache(overhang_part); + for (size_t i = 0; i < edge_cache.holeCount() + 1; i++) { + double step = point_spread / (i == 0 ? edge_cache.circumference() : edge_cache.circumference(i - 1)); + double distance = 0; + while (distance < 1) { + auto pt = i == 0 ? edge_cache.coords(distance) : edge_cache.coords(i - 1, distance); + SupportNode* contact_node = insert_point(pt, overhang_part); + distance += step; + } + } + + // don't add inner supports for sharp tails + if (is_sharp_tail) + continue; + + // add inner supports + overhang_bounds.inflated(-radius); + ExPolygons overhang_inner = offset_ex(overhang_part, -radius); for (Point candidate : grid_points) { if (overhang_bounds.contains(candidate)) { // BBS: move_inside_expoly shouldn't be used if candidate is already inside, as it moves point to boundary and the inside is not well supported! - bool is_inside = is_inside_ex(overhang_part, candidate); - if (!is_inside) { - constexpr coordf_t distance_inside = 0; // Move point towards the border of the polygon if it is closer than half the overhang distance: Catch points that - // fall between overhang areas on constant surfaces. - is_inside = move_inside_expoly(overhang_part, candidate, distance_inside, half_overhang_distance); - } + bool is_inside = is_inside_ex(overhang_inner, candidate); if (is_inside) { SupportNode* contact_node = insert_point(candidate, overhang_part); - if (contact_node) - added = true; } } } - if (!added) //If we didn't add any points due to bad luck, we want to add one anyway such that loose parts are also supported. - { - auto bbox = overhang_part.contour.bounding_box(); - Points candidates; - if (ts_layer->overhang_types[&overhang_part] == SupportLayer::Detected) - candidates = { bbox.min, bounding_box_middle(bbox), bbox.max }; - else - candidates = { bounding_box_middle(bbox) }; - for (Point candidate : candidates) { - if (!overhang_part.contains(candidate)) - move_inside_expoly(overhang_part, candidate); - insert_point(candidate, overhang_part); - } - } - } - else { - for (auto& elem : move_bounds_layer) { - SupportNode* contact_node = m_ts_data->create_node(elem.state.result_on_layer, -gap_layers, layer_nr-1, support_roof_layers + 1, elem.state.to_buildplate, - SupportNode::NO_PARENT, print_z, height, z_distance_top); - contact_node->overhang = ExPolygon(elem.influence_area.front()); - curr_nodes.emplace_back(contact_node); - } - } + } if (!curr_nodes.empty()) nonempty_layers++; for (auto node : curr_nodes) { all_nodes.emplace_back(node->position(0), node->position(1), scale_(node->print_z)); } #ifdef SUPPORT_TREE_DEBUG_TO_SVG - draw_contours_and_nodes_to_svg(debug_out_path("init_contact_points_%.2f.svg", print_z), ts_layer->overhang_areas, m_ts_data->m_layer_outlines_below[layer_nr], {}, - contact_nodes[layer_nr], contact_nodes[layer_nr - 1], { "overhang","outlines","" }); + draw_contours_and_nodes_to_svg(debug_out_path("init_contact_points_%.2f.svg", print_z), layer->loverhangs,layer->lslices, m_ts_data->m_layer_outlines_below[layer_nr], + contact_nodes[layer_nr], contact_nodes[layer_nr - 1], { "overhang","lslices","outlines_below"}); #endif }} ); // end tbb::parallel_for diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index c1aa6cb284..dc641669da 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -380,7 +380,6 @@ public: int avg_node_per_layer = 0; float nodes_angle = 0; - bool has_overhangs = false; bool has_sharp_tails = false; bool has_cantilever = false; double max_cantilever_dist = 0; @@ -397,6 +396,8 @@ public: */ ExPolygon m_machine_border; + enum OverhangType { Detected = 0, Enforced, SharpTail }; + std::map overhang_types; private: /*! * \brief Generator for model collision, avoidance and internal guide volumes @@ -416,6 +417,7 @@ private: size_t m_highest_overhang_layer = 0; std::vector> m_spanning_trees; std::vector< std::unordered_map> m_mst_line_x_layer_contour_caches; + float DO_NOT_MOVER_UNDER_MM = 0.0; coordf_t MAX_BRANCH_RADIUS = 10.0; coordf_t MIN_BRANCH_RADIUS = 0.5; @@ -476,7 +478,7 @@ private: * \return For each layer, a list of points where the tree should connect * with the model. */ - void generate_contact_points(std::vector>& contact_nodes, const std::vector& move_bounds); + void generate_contact_points(std::vector>& contact_nodes); /*! * \brief Add a node to the next layer. diff --git a/src/libslic3r/Support/TreeSupport3D.cpp b/src/libslic3r/Support/TreeSupport3D.cpp index 6d3f041207..ece9eea2b5 100644 --- a/src/libslic3r/Support/TreeSupport3D.cpp +++ b/src/libslic3r/Support/TreeSupport3D.cpp @@ -3367,10 +3367,28 @@ static void generate_support_areas(Print &print, const BuildVolume &build_volume #endif // SLIC3R_TREESUPPORTS_PROGRESS /* additional_excluded_areas */{} }; - //FIXME generating overhangs just for the furst mesh of the group. + //FIXME generating overhangs just for the first mesh of the group. assert(processing.second.size() == 1); - std::vector overhangs = generate_overhangs(config, *print.get_object(processing.second.front()), throw_on_cancel); +#if 1 + // use smart overhang detection + std::vector overhangs; + tree_support->detect_overhangs(); + const int num_raft_layers = int(config.raft_layers.size()); + const int num_layers = int(print_object.layer_count()) + num_raft_layers; + overhangs.resize(num_layers); + for (size_t i = 0; i < print_object.layer_count(); i++) { + for (ExPolygon& expoly : print_object.get_layer(i)->loverhangs) { + Polygons polys = to_polygons(expoly); + if (tree_support->overhang_types[&expoly] == TreeSupport::SharpTail) { + polys = offset(to_polygons(expoly), scale_(0.2)); + } + append(overhangs[i + num_raft_layers], polys); + } + } +#else + std::vector overhangs = generate_overhangs(config, *print.get_object(processing.second.front()), throw_on_cancel); +#endif // ### Precalculate avoidances, collision etc. size_t num_support_layers = precalculate(print, overhangs, processing.first, processing.second, volumes, throw_on_cancel); bool has_support = num_support_layers > 0; @@ -3443,6 +3461,7 @@ static void generate_support_areas(Print &print, const BuildVolume &build_volume #endif // TREESUPPORT_DEBUG_SVG // ### Propagate the influence areas downwards. This is an inherently serial operation. + print.set_status(60, _L("Generating support")); create_layer_pathing(volumes, config, move_bounds, throw_on_cancel); auto t_path = std::chrono::high_resolution_clock::now(); @@ -3496,6 +3515,7 @@ static void generate_support_areas(Print &print, const BuildVolume &build_volume }); // Don't fill in the tree supports, make them hollow with just a single sheath line. + print.set_status(69, _L("Generating support")); generate_support_toolpaths(print_object.support_layers(), print_object.config(), support_params, print_object.slicing_parameters(), raft_layers, bottom_contacts, top_contacts, intermediate_layers, interface_layers, base_interface_layers); From 5a8612eb6317abac46b5dc8105e010815f8ecfe1 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 29 Mar 2024 20:31:14 +0800 Subject: [PATCH 035/129] FIX: tree supports may generate flying nodes Previous parallelization has a bug where two adjacent nodes may be deleted at the same time. jira: none Change-Id: I99a29dae9f72aa74ed2721eea4421b15eec10732 (cherry picked from commit 91efe67d723652d3f7e4484dd3cdf31638f769a4) (cherry picked from commit 734a70b493b0347870dc955021b0f7055c76f84b) --- src/libslic3r/Support/TreeSupport.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 029fc62107..36293df5ab 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -2547,7 +2547,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod // Remove all circle neighbours that are completely inside the polygon and merge them into this node. for (const Point &neighbour : neighbours) { SupportNode * neighbour_node = nodes_this_part[neighbour]; - if(neighbour_node->type==ePolygon) return; + if(neighbour_node->type==ePolygon) continue; coord_t neighbour_radius = scale_(neighbour_node->radius); Point pt_north = neighbour + Point(0, neighbour_radius), pt_south = neighbour - Point(0, neighbour_radius), pt_west = neighbour - Point(neighbour_radius, 0), pt_east = neighbour + Point(neighbour_radius, 0); @@ -2606,10 +2606,15 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod // only allow bigger node to merge smaller nodes. See STUDIO-6326 if(node.dist_mm_to_top < neighbour_node->dist_mm_to_top) continue; - node.merged_neighbours.push_front(neighbour_node); - node.merged_neighbours.insert(node.merged_neighbours.end(), neighbour_node->merged_neighbours.begin(), neighbour_node->merged_neighbours.end()); - to_delete.insert(neighbour_node); - neighbour_node->valid = false; + m_ts_data->m_mutex.lock(); + if (to_delete.find(p_node) == to_delete.end()) + { // since we are processing all nodes in parallel, p_node may have been deleted by another thread. In this case, we should not delete neighbour_node. + node.merged_neighbours.push_front(neighbour_node); + node.merged_neighbours.insert(node.merged_neighbours.end(), neighbour_node->merged_neighbours.begin(), neighbour_node->merged_neighbours.end()); + to_delete.insert(neighbour_node); + neighbour_node->valid = false; + } + m_ts_data->m_mutex.unlock(); } } } From 6e05d9ef84323f61fec9d0801e95107d90729cde Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 1 Apr 2024 10:03:30 +0800 Subject: [PATCH 036/129] FIX: overhang interface may overlap with object jira: STUDIO-6710 Change-Id: Ie13ec81e07326a2572d698607c03aeb793f119c8 (cherry picked from commit cc49c82793a877c2c4187e6254e4092de9285010) (cherry picked from commit 39839e37325bd93e73ba069a2ea18cb326911c42) --- src/libslic3r/Support/TreeSupport.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 36293df5ab..c4c01c3399 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -783,7 +783,7 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) Layer* layer = m_object->get_layer(layer_nr); if (layer->lower_layer == nullptr) { - for (auto& slice : layer->lslices) { + for (auto& slice : layer->lslices_extrudable) { auto bbox_size = get_extents(slice).size(); if (!((bbox_size.x() > length_thresh_well_supported && bbox_size.y() > length_thresh_well_supported)) && g_config_support_sharp_tails) { @@ -1057,10 +1057,10 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) if (layer_nr < enforcers.size() && lower_layer) { float no_interface_offset = std::accumulate(layer->regions().begin(), layer->regions().end(), FLT_MAX, [](float acc, const LayerRegion* layerm) { return std::min(acc, float(layerm->flow(frExternalPerimeter).scaled_width())); }); - Polygons lower_layer_polygons = (layer_nr == 0) ? Polygons() : to_polygons(lower_layer->lslices); + Polygons lower_layer_polygons = (layer_nr == 0) ? Polygons() : to_polygons(lower_layer->lslices_extrudable); Polygons& enforcer = enforcers[layer_nr]; if (!enforcer.empty()) { - ExPolygons enforcer_polygons = diff_ex(intersection_ex(layer->lslices, enforcer), + ExPolygons enforcer_polygons = diff_ex(intersection_ex(layer->lslices_extrudable, enforcer), // Inflate just a tiny bit to avoid intersection of the overhang areas with the object. expand(lower_layer_polygons, 0.05f * no_interface_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS)); append(layer->loverhangs, enforcer_polygons); @@ -1091,21 +1091,21 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) continue; SVG::export_expolygons(debug_out_path("overhang_areas_%d_%.2f.svg",layer->id(), layer->print_z), { - { m_object->get_layer(layer->id())->lslices, {"lslices","yellow",0.5} }, + { m_object->get_layer(layer->id())->lslices_extrudable, {"lslices_extrudable","yellow",0.5} }, { layer->loverhangs, {"overhang","red",0.5} } }); if (enforcers.size() > layer->id()) { SVG svg(format("SVG/enforcer_%s.svg", layer->print_z), m_object->bounding_box()); if (svg.is_opened()) { - svg.draw_outline(m_object->get_layer(layer->id())->lslices, "yellow"); + svg.draw_outline(m_object->get_layer(layer->id())->lslices_extrudable, "yellow"); svg.draw(enforcers[layer->id()], "red"); } } if (blockers.size() > layer->id()) { SVG svg(format("SVG/blocker_%s.svg", layer->print_z), m_object->bounding_box()); if (svg.is_opened()) { - svg.draw_outline(m_object->get_layer(layer->id())->lslices, "yellow"); + svg.draw_outline(m_object->get_layer(layer->id())->lslices_extrudable, "yellow"); svg.draw(blockers[layer->id()], "red"); } } @@ -1994,7 +1994,6 @@ void TreeSupport::draw_circles(const std::vector>& con if(!tmp.empty()) circle = tmp[0]; } - area = avoid_object_remove_extra_small_parts(ExPolygon(circle), get_collision(node.is_sharp_tail && node.distance_to_top <= 0)); // merge overhang to get a smoother interface surface // Do not merge when buildplate_only is on, because some underneath nodes may have been deleted. if (top_interface_layers > 0 && node.support_roof_layers_below > 0 && !on_buildplate_only && !node.is_sharp_tail) { From 36f2df3339fa1ce37b65a39e7dfcb3f401c38ac7 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 12 Apr 2024 19:46:04 +0800 Subject: [PATCH 037/129] FIX: blockers not working for sharp tails of tree support also change default style to tree organic jira: STUDIO-6801 Change-Id: Iab1d8c6117139c9a7a4c1fa71de0a13bcb356dd5 (cherry picked from commit d2c4efad58f16b23bef49bd47d3b70bf322d6f55) (cherry picked from commit cd9305e3e061b67903ed8f5cd05d0136d608ee01) --- src/libslic3r/Support/TreeSupport.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index c4c01c3399..914a0ed667 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1033,18 +1033,20 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) } } + if (layer_nr < blockers.size()) { + // Arthur: union_ is a must because after mirroring, the blocker polygons are in left-hand coordinates, ie clockwise, + // which are not valid polygons, and will be removed by offset_ex. union_ can make these polygons right. + ExPolygons blocker = offset_ex(union_(blockers[layer_nr]), scale_(radius_sample_resolution)); + layer->loverhangs = diff_ex(layer->loverhangs, blocker); + layer->cantilevers = diff_ex(layer->cantilevers, blocker); + sharp_tail_overhangs = diff_ex(sharp_tail_overhangs, blocker); + } + if (support_critical_regions_only && is_auto(stype)) { layer->loverhangs.clear(); // remove oridinary overhangs, only keep cantilevers and sharp tails (added later) append(layer->loverhangs, layer->cantilevers); } - if (layer_nr < blockers.size()) { - Polygons& blocker = blockers[layer_nr]; - // Arthur: union_ is a must because after mirroring, the blocker polygons are in left-hand coordinates, ie clockwise, - // which are not valid polygons, and will be removed by offset_ex. union_ can make these polygons right. - layer->loverhangs = diff_ex(layer->loverhangs, offset_ex(union_(blocker), scale_(radius_sample_resolution))); - } - if (max_bridge_length > 0 && layer->loverhangs.size() > 0 && lower_layer) { // do not break bridge for normal part in TreeHybrid, nor Tree Strong bool break_bridge = !(m_support_params.support_style == smsTreeHybrid && area(layer->loverhangs) > m_support_params.thresh_big_overhang) From 3d70bdc3e1224c9f9c0a6c0808af2003ae30d04d Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 23 May 2024 22:01:01 +0800 Subject: [PATCH 038/129] FIX: top z distance incorrect with adaptive layer height This bug causes supports difficult to remove. Rule to remmeber: never decrease the top z distance, you can only increase it SLIGHTLY. jira: STUDIO-7103, STUDIO-7001 Change-Id: I24f71cd67d182d4e2c0902f244a8ca8f4c3ee982 (cherry picked from commit 461af9e8f6f98a8e0b363436276f225183365998) --- src/libslic3r/Support/TreeSupport.cpp | 35 ++++++--------------------- 1 file changed, 7 insertions(+), 28 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 914a0ed667..1a8a86ea58 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1910,9 +1910,8 @@ void TreeSupport::draw_circles(const std::vector>& con continue; } - SupportNode* first_node = curr_layer_nodes.front(); - ts_layer->print_z = first_node->print_z; - ts_layer->height = first_node->height; + ts_layer->print_z = m_ts_data->layer_heights[layer_nr].print_z; + ts_layer->height = m_ts_data->layer_heights[layer_nr].height; if (ts_layer->height < EPSILON) { continue; } @@ -2951,20 +2950,11 @@ std::vector TreeSupport::plan_layer_heights(std::vectorget_layer(0)->print_z, m_object->get_layer(0)->height, 0 }; // Collect top contact layers - coordf_t print_z = layer_heights[0].print_z; for (int layer_nr = 1; layer_nr < contact_nodes.size(); layer_nr++) { if (!contact_nodes[layer_nr].empty()) { bounds.push_back(layer_nr); layer_heights[layer_nr].print_z = contact_nodes[layer_nr].front()->print_z; layer_heights[layer_nr].height = contact_nodes[layer_nr].front()->height; - if (layer_heights[layer_nr].bottom_z() - print_z < m_slicing_params.min_layer_height) { - layer_heights[layer_nr].height = layer_heights[layer_nr].print_z - print_z; - for (auto& node : contact_nodes[layer_nr]) { - node->height = layer_heights[layer_nr].height; - } - } - print_z = layer_heights[layer_nr].print_z; - BOOST_LOG_TRIVIAL(trace) << "plan_layer_heights0 print_z, height, layer_nr: " << layer_heights[layer_nr].print_z << " " << layer_heights[layer_nr].height << " " << layer_nr; } @@ -3008,34 +2998,23 @@ std::vector TreeSupport::plan_layer_heights(std::vector= 0; i = j) { + for (; i >= 0; i--) { if (layer_heights[i].height < EPSILON) { - j--; continue; } for (j = i - 1; j >= 0; j--) { - if (layer_heights[j].height > EPSILON) { + if (layer_heights[j].height > EPSILON && layer_heights[j].print_z0.01) // there is a gap more than 0.01mm, increase the top z distance to fill the gap + layer_heights[i].height = layer_heights[i].print_z - layer_heights[j].print_z; break; } } } - - for (i = 0; i < layer_heights.size(); i++) { - // there might be gap between layers due to non-integer interfaces - if (size_t next_layer_nr = layer_heights[i].next_layer_nr; - next_layer_nr > 0 && layer_heights[i].height + EPSILON < layer_heights[i].print_z - layer_heights[next_layer_nr].print_z) { - layer_heights[i].height = layer_heights[i].print_z - layer_heights[next_layer_nr].print_z; - } - - } } - // update interfaces' height + // log layer_heights for (size_t i = 0; i < layer_heights.size(); i++) { - for (auto& node : contact_nodes[i]) { - node->height = layer_heights[i].height; - } if (layer_heights[i].height > EPSILON) BOOST_LOG_TRIVIAL(trace) << "plan_layer_heights print_z, height, lower_layer_nr->layer_nr: " << layer_heights[i].print_z << " " << layer_heights[i].height << " " << layer_heights[i].next_layer_nr << "->" << i; From 2332caa84c61b02c91b9c29e6c87c064043d7a41 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 28 May 2024 18:07:44 +0800 Subject: [PATCH 039/129] FIX: empty first layer of tree support The raft gap layer should only exist if there are raft layers. jira: STUDIO-7184 Change-Id: Ia4d2a5b7ddf873fb4ef16c7087648214e6bde806 (cherry picked from commit f13144d6a9c20cfbad11c6907c30b10447d8f8a3) --- src/libslic3r/Support/TreeSupport.cpp | 36 ++++++++++++++++++--------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 1a8a86ea58..5b61f11120 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1120,18 +1120,30 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) void TreeSupport::create_tree_support_layers() { int layer_id = 0; - coordf_t raft_print_z = 0.f; - coordf_t raft_slice_z = 0.f; - for (; layer_id < m_slicing_params.base_raft_layers; layer_id++) { - raft_print_z += m_slicing_params.base_raft_layer_height; - raft_slice_z = raft_print_z - m_slicing_params.base_raft_layer_height / 2; - m_object->add_tree_support_layer(layer_id, m_slicing_params.base_raft_layer_height, raft_print_z, raft_slice_z); - } - - for (; layer_id < m_slicing_params.base_raft_layers + m_slicing_params.interface_raft_layers; layer_id++) { - raft_print_z += m_slicing_params.interface_raft_layer_height; - raft_slice_z = raft_print_z - m_slicing_params.interface_raft_layer_height / 2; - m_object->add_tree_support_layer(layer_id, m_slicing_params.base_raft_layer_height, raft_print_z, raft_slice_z); + if (m_raft_layers > 0) { //create raft layers + coordf_t raft_print_z = 0.f; + coordf_t raft_slice_z = 0.f; + { + // Do not add the raft contact layer, 1st layer should use first_print_layer_height + coordf_t height = m_slicing_params.first_print_layer_height; + raft_print_z += height; + raft_slice_z = raft_print_z - height / 2; + m_object->add_tree_support_layer(layer_id++, height, raft_print_z, raft_slice_z); + } + // Insert the base layers. + for (size_t i = 1; i < m_slicing_params.base_raft_layers; i++) { + coordf_t height = m_slicing_params.base_raft_layer_height; + raft_print_z += height; + raft_slice_z = raft_print_z - height / 2; + m_object->add_tree_support_layer(layer_id++, height, raft_print_z, raft_slice_z); + } + // Insert the interface layers. + for (size_t i = 0; i < m_slicing_params.interface_raft_layers; i++) { + coordf_t height = m_slicing_params.interface_raft_layer_height; + raft_print_z += height; + raft_slice_z = raft_print_z - height / 2; + m_object->add_tree_support_layer(layer_id++, height, raft_print_z, raft_slice_z); + } } for (Layer *layer : m_object->layers()) { From fa11957c17ae80eb9eaab3605a432ec788709360 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 25 Jun 2024 09:30:12 +0800 Subject: [PATCH 040/129] FIX: do not break bridges in tree support jira: STUDIO-7424 github: #4318 Change-Id: Icccf56b129c4910f3b0a49d69871b8df1375a6d9 (cherry picked from commit 99211cde5f2114fd64e2724069540577793f889a) (cherry picked from commit 6a130a19ef2e881a7853183123163ce67d63bc37) --- src/libslic3r/Support/TreeSupport.cpp | 5 ++--- src/libslic3r/Support/TreeSupport3D.cpp | 2 +- src/slic3r/GUI/GUI_App.cpp | 3 ++- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 5b61f11120..47e7422b3c 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1048,9 +1048,8 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) } if (max_bridge_length > 0 && layer->loverhangs.size() > 0 && lower_layer) { - // do not break bridge for normal part in TreeHybrid, nor Tree Strong - bool break_bridge = !(m_support_params.support_style == smsTreeHybrid && area(layer->loverhangs) > m_support_params.thresh_big_overhang) - && !(m_support_params.support_style==smsTreeStrong); + // do not break bridge as the interface will be poor, see #4318 + bool break_bridge = false; m_object->remove_bridges_from_contacts(lower_layer, layer, extrusion_width_scaled, &layer->loverhangs, max_bridge_length, break_bridge); } diff --git a/src/libslic3r/Support/TreeSupport3D.cpp b/src/libslic3r/Support/TreeSupport3D.cpp index ece9eea2b5..8773cae565 100644 --- a/src/libslic3r/Support/TreeSupport3D.cpp +++ b/src/libslic3r/Support/TreeSupport3D.cpp @@ -3447,7 +3447,7 @@ static void generate_support_areas(Print &print, const BuildVolume &build_volume move_bounds, interface_placer, throw_on_cancel); auto t_gen = std::chrono::high_resolution_clock::now(); - #ifdef TREESUPPORT_DEBUG_SVG +#ifdef TREESUPPORT_DEBUG_SVG for (size_t layer_idx = 0; layer_idx < move_bounds.size(); ++layer_idx) { Polygons polys; for (auto& area : move_bounds[layer_idx]) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 287f72a082..a01c509b15 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -2125,7 +2125,8 @@ bool GUI_App::OnInit() { try { return on_init_inner(); - } catch (const std::exception&) { + } catch (const std::exception& e) { + BOOST_LOG_TRIVIAL(fatal) << "OnInit Got Fatal error: " << e.what(); generic_exception_handle(); return false; } From 0cfa5f47fee56388b4b3acae8a51ae09f28c8ae1 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 24 May 2024 18:23:29 +0800 Subject: [PATCH 041/129] FIX: missing support layers at raft gap jira: none Change-Id: I9a7f34c148ee0e228cf2e8e18c85136253f354ad (cherry picked from commit 615751538a65cdaeb8e398dcc941971c98ec11b8) (cherry picked from commit da7f1439ce78d92326726be961528d2755d9a6e2) --- src/libslic3r/Support/TreeSupport.cpp | 48 +++++++++++++++++++++------ src/libslic3r/Support/TreeSupport.hpp | 2 +- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 47e7422b3c..a8cfa9cbfe 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1143,6 +1143,17 @@ void TreeSupport::create_tree_support_layers() raft_slice_z = raft_print_z - height / 2; m_object->add_tree_support_layer(layer_id++, height, raft_print_z, raft_slice_z); } + + // Layers between the raft contacts and bottom of the object. + double dist_to_go = m_slicing_params.object_print_z_min - raft_print_z; + auto nsteps = int(ceil(dist_to_go / m_slicing_params.max_suport_layer_height)); + double height = dist_to_go / nsteps; + for (int i = 0; i < nsteps; ++i) { + raft_print_z += height; + raft_slice_z = raft_print_z - height / 2; + m_object->add_tree_support_layer(layer_id++, height, raft_print_z, raft_slice_z); + } + m_raft_layers = layer_id; } for (Layer *layer : m_object->layers()) { @@ -1242,7 +1253,7 @@ static void make_perimeter_and_inner_brim(ExtrusionEntitiesPtr &dst, const ExPol _make_loops(dst, support_area_new, role, wall_count, flow); } -static void make_perimeter_and_infill(ExtrusionEntitiesPtr& dst, const Print& print, const ExPolygon& support_area, size_t wall_count, const Flow& flow, ExtrusionRole role, Fill* filler_support, double support_density, bool infill_first=true) +static void make_perimeter_and_infill(ExtrusionEntitiesPtr& dst, const ExPolygon& support_area, size_t wall_count, const Flow& flow, ExtrusionRole role, Fill* filler_support, double support_density, bool infill_first=true) { Polygons loops; ExPolygons support_area_new = offset_ex(support_area, -0.5f * float(flow.scaled_spacing()), jtSquare); @@ -1349,7 +1360,8 @@ void TreeSupport::generate_toolpaths() raft_areas = std::move(offset_ex(raft_areas, scale_(object_config.raft_first_layer_expansion))); - for (size_t layer_nr = 0; layer_nr < m_slicing_params.base_raft_layers; layer_nr++) { + size_t layer_nr = 0; + for (; layer_nr < m_slicing_params.base_raft_layers; layer_nr++) { SupportLayer *ts_layer = m_object->get_support_layer(layer_nr); coordf_t expand_offset = (layer_nr == 0 ? m_object_config->raft_first_layer_expansion.value : 0.); auto raft_areas1 = offset_ex(raft_areas, scale_(expand_offset)); @@ -1384,10 +1396,13 @@ void TreeSupport::generate_toolpaths() first_non_raft_base.emplace_back(*area_group.area); } } + first_non_raft_base = offset_ex(first_non_raft_base, support_extrusion_width); ExPolygons raft_base_areas = intersection_ex(raft_areas, first_non_raft_base); ExPolygons raft_interface_areas = diff_ex(raft_areas, raft_base_areas); - for (size_t layer_nr = m_slicing_params.base_raft_layers; + + // raft interfaces + for (layer_nr = m_slicing_params.base_raft_layers; layer_nr < m_slicing_params.base_raft_layers + m_slicing_params.interface_raft_layers; layer_nr++) { @@ -1410,6 +1425,17 @@ void TreeSupport::generate_toolpaths() filler_interface, fill_params, erSupportMaterial, support_flow); } + // layers between raft and object + for (; layer_nr < m_raft_layers; layer_nr++) { + SupportLayer *ts_layer = m_object->get_support_layer(layer_nr); + Flow support_flow(support_extrusion_width, ts_layer->height, nozzle_diameter); + Fill* filler_raft = Fill::new_from_type(ipRectilinear); + filler_raft->angle = PI / 2; + filler_raft->spacing = support_flow.spacing(); + for (auto& poly : first_non_raft_base) + make_perimeter_and_infill(ts_layer->support_fills.entities, poly, std::min(size_t(1), wall_count), support_flow, erSupportMaterial, filler_raft, interface_density, false); + } + if (m_object->support_layer_count() <= m_raft_layers) return; @@ -1435,7 +1461,7 @@ void TreeSupport::generate_toolpaths() SupportLayer* ts_layer = m_object->get_support_layer(layer_id); Flow support_flow(support_extrusion_width, ts_layer->height, nozzle_diameter); - m_support_material_interface_flow = support_material_interface_flow(m_object, ts_layer->height); // update flow using real support layer height + Flow interface_flow = support_material_interface_flow(m_object, ts_layer->height); // update flow using real support layer height coordf_t support_spacing = object_config.support_base_pattern_spacing.value + support_flow.spacing(); coordf_t support_density = std::min(1., support_flow.spacing() / support_spacing); ts_layer->support_fills.no_sort = false; @@ -1464,10 +1490,10 @@ void TreeSupport::generate_toolpaths() // roof_1st_layer fill_params.density = interface_density; // Note: spacing means the separation between two lines as if they are tightly extruded - filler_Roof1stLayer->spacing = m_support_material_interface_flow.spacing(); + filler_Roof1stLayer->spacing = interface_flow.spacing(); // generate a perimeter first to support interface better ExtrusionEntityCollection* temp_support_fills = new ExtrusionEntityCollection(); - make_perimeter_and_infill(temp_support_fills->entities, *m_object->print(), poly, 1, m_support_material_interface_flow, erSupportMaterial, + make_perimeter_and_infill(temp_support_fills->entities, poly, 1, interface_flow, erSupportMaterial, filler_Roof1stLayer.get(), interface_density, false); temp_support_fills->no_sort = true; // make sure loops are first if (!temp_support_fills->entities.empty()) @@ -1477,13 +1503,13 @@ void TreeSupport::generate_toolpaths() } else if (area_group.type == SupportLayer::FloorType) { // floor_areas fill_params.density = bottom_interface_density; - filler_interface->spacing = m_support_material_interface_flow.spacing(); + filler_interface->spacing = interface_flow.spacing(); fill_expolygons_generate_paths(ts_layer->support_fills.entities, polys, - filler_interface.get(), fill_params, erSupportMaterialInterface, m_support_material_interface_flow); + filler_interface.get(), fill_params, erSupportMaterialInterface, interface_flow); } else if (area_group.type == SupportLayer::RoofType) { // roof_areas fill_params.density = interface_density; - filler_interface->spacing = m_support_material_interface_flow.spacing(); + filler_interface->spacing = interface_flow.spacing(); if (m_object_config->support_interface_pattern == smipGrid) { filler_interface->angle = Geometry::deg2rad(object_config.support_angle.value); fill_params.dont_sort = true; @@ -1492,7 +1518,7 @@ void TreeSupport::generate_toolpaths() filler_interface->layer_id = area_group.interface_id; fill_expolygons_generate_paths(ts_layer->support_fills.entities, polys, filler_interface.get(), fill_params, erSupportMaterialInterface, - m_support_material_interface_flow); + interface_flow); } else { // base_areas @@ -1517,7 +1543,7 @@ void TreeSupport::generate_toolpaths() // otherwise must draw 1 wall // Don't need extra walls if we have infill. Extra walls may overlap with the infills. size_t min_wall_count = offset(poly, -scale_(support_spacing * 1.5)).empty() ? 1 : 0; - make_perimeter_and_infill(ts_layer->support_fills.entities, *m_object->print(), poly, std::max(min_wall_count, wall_count), flow, + make_perimeter_and_infill(ts_layer->support_fills.entities, poly, std::max(min_wall_count, wall_count), flow, erSupportMaterial, filler_support.get(), support_density); } else { diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index dc641669da..b8d4bdbbba 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -413,7 +413,7 @@ private: SlicingParameters m_slicing_params; // Various precomputed support parameters to be shared with external functions. SupportParameters m_support_params; - size_t m_raft_layers = 0; + size_t m_raft_layers = 0; // number of raft layers, including raft base, raft interface, raft gap size_t m_highest_overhang_layer = 0; std::vector> m_spanning_trees; std::vector< std::unordered_map> m_mst_line_x_layer_contour_caches; From 9ee61bb3dd8762a1d78a6937c0dd870976d20d71 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 2 Jul 2024 18:41:29 +0800 Subject: [PATCH 042/129] FIX: top z distance inaccurate if it's too large The top z gap should be split if it's too large. Also we use same logic for both synced and independent support layer. jira: STUDIO-7232 github: #4191 Change-Id: Idca792e8fa51a83c2a09441ecac64d40b91d6390 (cherry picked from commit c262a7ea137db09e453c157115b3d5417a32886d) --- src/libslic3r/Support/TreeSupport.cpp | 122 +++++++++++++------------- 1 file changed, 63 insertions(+), 59 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index a8cfa9cbfe..9d6b780df0 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -748,7 +748,7 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) return cluster; }; - if (!is_tree(stype)) return; + if (!is_tree(stype)) return; max_cantilever_dist = 0; m_highest_overhang_layer = 0; @@ -852,7 +852,7 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) } dist_max = std::max(dist_max, dist_pt); } - if (dist_max > scale_(3)) { // is cantilever if the farmost point is larger than 3mm away from base + if (dist_max > scale_(3)) { // is cantilever if the farmost point is larger than 3mm away from base max_cantilever_dist = std::max(max_cantilever_dist, dist_max); layer->cantilevers.emplace_back(poly); BOOST_LOG_TRIVIAL(debug) << "found a cantilever cluster. layer_nr=" << layer_nr << dist_max; @@ -939,7 +939,7 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) layer->sharp_tails_height.push_back( accum_height); } - } + } } } @@ -1034,7 +1034,7 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) } if (layer_nr < blockers.size()) { - // Arthur: union_ is a must because after mirroring, the blocker polygons are in left-hand coordinates, ie clockwise, + // Arthur: union_ is a must because after mirroring, the blocker polygons are in left-hand coordinates, ie clockwise, // which are not valid polygons, and will be removed by offset_ex. union_ can make these polygons right. ExPolygons blocker = offset_ex(union_(blockers[layer_nr]), scale_(radius_sample_resolution)); layer->loverhangs = diff_ex(layer->loverhangs, blocker); @@ -1071,7 +1071,7 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) // add sharp tail overhangs append(layer->loverhangs, sharp_tail_overhangs); - + // fill overhang_types for (size_t i = 0; i < layer->loverhangs.size(); i++) overhang_types.emplace(&layer->loverhangs[i], i < nDetected ? OverhangType::Detected : @@ -1295,7 +1295,7 @@ static void make_perimeter_and_infill(ExtrusionEntitiesPtr& dst, const ExPolygon if (infill_first) dst.insert(dst.end(), loops_entities.begin(), loops_entities.end()); - else { // loops first + else { // loops first loops_entities.insert(loops_entities.end(), dst.begin(), dst.end()); dst = std::move(loops_entities); } @@ -1670,7 +1670,7 @@ void TreeSupport::generate() profiler.stage_finish(STAGE_DRAW_CIRCLES); - + profiler.stage_start(STAGE_GENERATE_TOOLPATHS); m_object->print()->set_status(70, _u8L("Generating support")); generate_toolpaths(); @@ -1795,7 +1795,7 @@ ExPolygons avoid_object_remove_extra_small_parts(const ExPolygon &expoly, const } } if (idx_max_area >= 0) expolys_out.emplace_back(std::move(expolys_avoid[idx_max_area])); - + return expolys_out; } @@ -1888,7 +1888,7 @@ void TreeSupport::draw_circles(const std::vector>& con // Use square support if there are too many nodes per layer because circle support needs much longer time to compute // Hower circle support can be printed faster, so we prefer circle for fewer nodes case. - const bool SQUARE_SUPPORT = avg_node_per_layer > 200; + const bool SQUARE_SUPPORT = avg_node_per_layer > 200; const int CIRCLE_RESOLUTION = SQUARE_SUPPORT ? 4 : 100; // The number of vertices in each circle. @@ -2312,7 +2312,7 @@ void TreeSupport::draw_circles(const std::vector>& con { // if roof1 interface is inside a hole, need to expand the interface for (auto& roof1 : ts_layer->roof_1st_layer) { - //if (hole.contains(roof1.contour.points.front()) && hole.contains(roof1.contour.bounding_box().center())) + //if (hole.contains(roof1.contour.points.front()) && hole.contains(roof1.contour.bounding_box().center())) bool is_inside_hole = std::all_of(roof1.contour.points.begin(), roof1.contour.points.end(), [&hole](Point& pt) { return hole.contains(pt); }); if (is_inside_hole) { Polygon hole_reoriented = hole; @@ -2460,7 +2460,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod auto& layer_contact_nodes = contact_nodes[layer_nr]; if (layer_contact_nodes.empty()) continue; - + int layer_nr_next = layer_heights[layer_nr].next_layer_nr; coordf_t print_z = layer_heights[layer_nr].print_z; coordf_t print_z_next = layer_heights[layer_nr_next].print_z; @@ -2660,7 +2660,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod //In the second pass, move all middle nodes. tbb::parallel_for_each(nodes_vec.begin(), nodes_vec.end(), [&](const std::pair& entry) { - + SupportNode* p_node = entry.second; const SupportNode& node = *p_node; if (to_delete.find(p_node) != to_delete.end()) @@ -2738,7 +2738,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod for (const Point &neighbour : neighbours) { // do not move to the neighbor to be deleted SupportNode *neighbour_node = nodes_this_part[neighbour]; - if (to_delete.find(neighbour_node) != to_delete.end()) continue; + if (to_delete.find(neighbour_node) != to_delete.end()) continue; Point direction = neighbour - node.position; // do not move to neighbor that's too far away (即使以最大速度移动,在接触热床之前都无法汇聚) @@ -2754,7 +2754,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod if (!is_strong) sum_direction += direction * (1 / dist2_to_neighbor); else - sum_direction += direction; + sum_direction += direction; } if (!is_strong) @@ -2964,71 +2964,72 @@ void TreeSupport::smooth_nodes(std::vector> &contact_ std::vector TreeSupport::plan_layer_heights(std::vector> &contact_nodes) { - const coordf_t max_layer_height = m_slicing_params.max_layer_height; - const coordf_t layer_height = m_object_config->layer_height.value; - coordf_t z_distance_top = m_slicing_params.gap_support_object; - // BBS: add extra distance if thick bridge is enabled - // Note: normal support uses print_z, but tree support uses integer layers, so we need to subtract layer_height - if (!m_slicing_params.soluble_interface && m_object_config->thick_bridges) { - z_distance_top += m_object->layers()[0]->regions()[0]->region().bridging_height_avg(*m_print_config) - layer_height; - } - const size_t support_roof_layers = m_object_config->support_interface_top_layers.value; - const int z_distance_top_layers = round_up_divide(scale_(z_distance_top), scale_(layer_height)) + 1; std::vector layer_heights(contact_nodes.size()); - std::vector bounds; + std::map> bounds; // layer_nr:(print_z, height) - if (!m_object_config->tree_support_adaptive_layer_height || layer_height == max_layer_height || !m_support_params.independent_layer_height) { - for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { - layer_heights[layer_nr] = {m_object->get_layer(layer_nr)->print_z, m_object->get_layer(layer_nr)->height, layer_nr > 0 ? size_t(layer_nr - 1) : 0}; - } - } - else { - bounds.push_back(0); + { // Keep first layer still layer_heights[0] = { m_object->get_layer(0)->print_z, m_object->get_layer(0)->height, 0 }; + bounds[0] = { m_object->get_layer(0)->print_z, m_object->get_layer(0)->height}; // Collect top contact layers for (int layer_nr = 1; layer_nr < contact_nodes.size(); layer_nr++) { if (!contact_nodes[layer_nr].empty()) { - bounds.push_back(layer_nr); - layer_heights[layer_nr].print_z = contact_nodes[layer_nr].front()->print_z; - layer_heights[layer_nr].height = contact_nodes[layer_nr].front()->height; - BOOST_LOG_TRIVIAL(trace) << "plan_layer_heights0 print_z, height, layer_nr: " << layer_heights[layer_nr].print_z << " " << layer_heights[layer_nr].height << " " - << layer_nr; + coordf_t print_z = contact_nodes[layer_nr].front()->print_z; + coordf_t height = contact_nodes[layer_nr].front()->height; + if(height>m_slicing_params.max_suport_layer_height){ + // split this layer into multiple layers if the gap is too big + int num_layers=std::ceil(height/m_slicing_params.max_suport_layer_height); + coordf_t new_height= height/num_layers; + for(auto& node: contact_nodes[layer_nr]) { + node->height = new_height; + node->distance_to_top = -num_layers; + node->support_roof_layers_below+=num_layers-1; + } + + for (int i=0; i s(bounds.begin(), bounds.end()); - bounds.assign(s.begin(), s.end()); - for (size_t idx_extreme = 1; idx_extreme < bounds.size(); idx_extreme++) { - int extr2_layer_nr = bounds[idx_extreme]; - coordf_t extr2z = layer_heights[extr2_layer_nr].bottom_z(); - int extr1_layer_nr = bounds[idx_extreme - 1]; - coordf_t extr1z = layer_heights[extr1_layer_nr].print_z; + auto it1 = bounds.begin(); + auto it2 = bounds.begin(); + it2++; + for (; it2 != bounds.end();it1++, it2++) { + int extr2_layer_nr = it2->first; + coordf_t extr2z = it2->second.first - it2->second.second; // bottom_z of upper bound + int extr1_layer_nr = it1->first; //bounds[idx_extreme - 1]; + coordf_t extr1z = it1->second.first;// print_z of lower bound coordf_t dist = extr2z - extr1z; + layer_heights[extr2_layer_nr].print_z = it2->second.first; + layer_heights[extr2_layer_nr].height = it2->second.second; + BOOST_LOG_TRIVIAL(trace) << "plan_layer_heights0 print_z, height, layer_nr: " << layer_heights[extr2_layer_nr].print_z << " " << layer_heights[extr2_layer_nr].height << " " << extr2_layer_nr; + // Insert intermediate layers. - size_t n_layers_extra = size_t(ceil(dist / (m_slicing_params.max_suport_layer_height + EPSILON))); - int actual_internel_layers = extr2_layer_nr - extr1_layer_nr - 1; - int extr_layers_left = extr2_layer_nr - extr1_layer_nr - n_layers_extra - 1; + size_t n_layers_extra = m_support_params.independent_layer_height ? size_t(ceil(dist / (m_slicing_params.max_suport_layer_height))) : + size_t(ceil(dist / (m_slicing_params.min_layer_height))); if (n_layers_extra < 1) continue; coordf_t step = dist / coordf_t(n_layers_extra); - coordf_t print_z = extr1z + step; - //assert(step >= layer_height - EPSILON); - coordf_t extr2z_large_steps = extr2z; + coordf_t print_z = extr1z; for (int layer_nr = extr1_layer_nr + 1; layer_nr < extr2_layer_nr; layer_nr++) { - // if (curr_layer_nodes.empty()) continue; - if (std::abs(print_z - m_object->get_layer(layer_nr)->print_z) < step / 2 + EPSILON || extr_layers_left < 1) { + Layer* layer = m_object->get_layer(layer_nr); + if (!m_support_params.independent_layer_height) step = layer->height; + if (std::abs((print_z+step) - layer->print_z) < step / 2 + EPSILON) { + print_z += step; layer_heights[layer_nr].print_z = print_z; layer_heights[layer_nr].height = step; - print_z += step; } else { // can't clear curr_layer_nodes, or the model will have empty layers layer_heights[layer_nr].print_z = 0.0; layer_heights[layer_nr].height = 0.0; - extr_layers_left--; } } } @@ -3152,9 +3153,12 @@ void TreeSupport::generate_contact_points(std::vector> contact_node->overhang = overhang_part; contact_node->is_sharp_tail = is_sharp_tail; if (is_sharp_tail) { - int ind = overhang_part.contour.closest_point_index(pt); - auto n1 = (overhang_part.contour[ind] - overhang_part.contour[ind - 1]).cast().normalized(); - auto n2 = (overhang_part.contour[ind] - overhang_part.contour[ind + 1]).cast().normalized(); + int ind = overhang_part.contour.closest_point_index(pt); + int nSize = overhang_part.contour.points.size(); + int ind_prev = (ind - 1 + nSize) % nSize; + int ind_next = (ind + 1) % nSize; + auto n1 = (overhang_part.contour[ind] - overhang_part.contour[ind_prev]).cast().normalized(); + auto n2 = (overhang_part.contour[ind] - overhang_part.contour[ind_next]).cast().normalized(); contact_node->skin_direction = scaled((n1 + n2).normalized()); } curr_nodes.emplace_back(contact_node); @@ -3223,7 +3227,7 @@ void TreeSupport::generate_contact_points(std::vector> } } } - + } if (!curr_nodes.empty()) nonempty_layers++; for (auto node : curr_nodes) { all_nodes.emplace_back(node->position(0), node->position(1), scale_(node->print_z)); } @@ -3250,7 +3254,7 @@ void TreeSupport::generate_contact_points(std::vector> mx2 += x * x; } nodes_angle = atan2(nNodes * mxy - mx * my, nNodes * mx2 - SQ(mx)); - + BOOST_LOG_TRIVIAL(info) << "avg_node_per_layer=" << avg_node_per_layer << ", nodes_angle=" << nodes_angle; } } From f00bdfeca88e438c35b8bac78c8ad76e374fcf07 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 3 Jul 2024 10:44:55 +0800 Subject: [PATCH 043/129] FIX: enforcers may not work with contour expansion To fix this we have to expand the enforcer areas just like organic support. jira: STUDIO-7538 Change-Id: I8e4e3fd18b0e77db9beb57347d8da895fc83f4b0 (cherry picked from commit 319b3e2247e01e545bb9e4cebea7950d875cd89a) --- src/libslic3r/Support/TreeSupport.cpp | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 9d6b780df0..2a410e443f 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -662,6 +662,9 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) double thresh_angle = config.support_threshold_angle.value > EPSILON ? config.support_threshold_angle.value + 1 : 30; thresh_angle = std::min(thresh_angle, 89.); // should be smaller than 90 const double threshold_rad = Geometry::deg2rad(thresh_angle); + // FIXME this is a fudge constant! + double support_tree_tip_diameter = 0.8; + auto enforcer_overhang_offset = scaled(support_tree_tip_diameter); // for small overhang removal struct OverhangCluster { @@ -1007,6 +1010,7 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) } int layers_with_overhangs = 0; + int layers_with_enforcers = 0; for (int layer_nr = 0; layer_nr < m_object->layer_count(); layer_nr++) { if (m_object->print()->canceled()) break; @@ -1056,15 +1060,11 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) int nDetected = layer->loverhangs.size(); // enforcers now follow same logic as normal support. See STUDIO-3692 if (layer_nr < enforcers.size() && lower_layer) { - float no_interface_offset = std::accumulate(layer->regions().begin(), layer->regions().end(), FLT_MAX, - [](float acc, const LayerRegion* layerm) { return std::min(acc, float(layerm->flow(frExternalPerimeter).scaled_width())); }); - Polygons lower_layer_polygons = (layer_nr == 0) ? Polygons() : to_polygons(lower_layer->lslices_extrudable); - Polygons& enforcer = enforcers[layer_nr]; - if (!enforcer.empty()) { - ExPolygons enforcer_polygons = diff_ex(intersection_ex(layer->lslices_extrudable, enforcer), - // Inflate just a tiny bit to avoid intersection of the overhang areas with the object. - expand(lower_layer_polygons, 0.05f * no_interface_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS)); - append(layer->loverhangs, enforcer_polygons); + ExPolygons enforced_overhangs = intersection_ex(diff_ex(layer->lslices_extrudable, lower_layer->lslices_extrudable), enforcers[layer_nr]); + if (!enforced_overhangs.empty()) { + // FIXME this is a hack to make enforcers work on steep overhangs. See STUDIO-7538. + enforced_overhangs = diff_ex(offset_ex(enforced_overhangs, enforcer_overhang_offset), lower_layer->lslices_extrudable); + append(layer->loverhangs, enforced_overhangs); } } int nEnforced = layer->loverhangs.size(); @@ -1081,10 +1081,11 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) layers_with_overhangs++; m_highest_overhang_layer = std::max(m_highest_overhang_layer, size_t(layer_nr)); } + if (nEnforced > 0) layers_with_enforcers++; if (!layer->cantilevers.empty()) has_cantilever = true; } - BOOST_LOG_TRIVIAL(info) << "Tree support overhang detection done. " << layers_with_overhangs << " layers with overhangs."; + BOOST_LOG_TRIVIAL(info) << "Tree support overhang detection done. " << layers_with_overhangs << " layers with overhangs. nEnforced=" << layers_with_enforcers; #ifdef SUPPORT_TREE_DEBUG_TO_SVG for (const Layer* layer : m_object->layers()) { @@ -2563,7 +2564,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod #ifdef SUPPORT_TREE_DEBUG_TO_SVG coordf_t branch_radius_temp = 0; coordf_t max_y = std::numeric_limits::min(); - draw_layer_mst(debug_out_path("mtree_%.2f.svg", print_z), spanning_trees, m_object->get_layer(obj_layer_nr)->lslices_extrudable); + draw_layer_mst(debug_out_path("mtree_%.2f.svg", print_z), spanning_trees, m_object->get_layer(layer_nr)->lslices); #endif for (size_t group_index = 0; group_index < nodes_per_part.size(); group_index++) { @@ -2843,7 +2844,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod m_ts_data->m_layer_outlines[layer_nr], contact_nodes[layer_nr], contact_nodes[layer_nr_next], { "overhang","avoid","outline" }, { "blue","red","yellow" }); - BOOST_LOG_TRIVIAL(debug) << "drop_nodes layer->next " << layer_nr << "->" << layer_nr_next << ", print_z=" << ts_layer->print_z + BOOST_LOG_TRIVIAL(debug) << "drop_nodes layer->next " << layer_nr << "->" << layer_nr_next << ", print_z=" << print_z << ", num points: " << contact_nodes[layer_nr].size() << "->" << contact_nodes[layer_nr_next].size(); for (size_t i = 0; i < std::min(size_t(5), contact_nodes[layer_nr].size()); i++) { auto &node = contact_nodes[layer_nr][i]; From 532dcae37a2a0c0edc4f995e10fd89805650766c Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 28 May 2024 20:11:45 +0800 Subject: [PATCH 044/129] ENH: add rectilinear interface pattern for organic support 1. add rectilinear interface pattern for organic support jira: STUDIO-7181 2. add tree support optgroup Change-Id: I94882bc34a61c6adc06b8ecbc9f2323f9b039aac (cherry picked from commit a8142ab3f37e0bd140a31a7e635b8475f471d7e3) (cherry picked from commit 69cf816b9431bc21ca0187c7db1148e2d2e898ab) --- src/libslic3r/CMakeLists.txt | 8 +-- src/libslic3r/Fill/FillBase.cpp | 2 +- src/libslic3r/Support/SupportMaterial.cpp | 62 ------------------ src/libslic3r/Support/SupportParameters.hpp | 31 ++++----- src/libslic3r/Support/TreeSupport.cpp | 68 +++++++++---------- src/libslic3r/Support/TreeSupport.hpp | 16 ++--- src/libslic3r/Support/TreeSupport3D.cpp | 72 +++++++++++++-------- src/libslic3r/Support/TreeSupport3D.hpp | 2 - src/libslic3r/Support/TreeSupportCommon.hpp | 62 +++++++----------- src/slic3r/GUI/Tab.cpp | 37 ----------- 10 files changed, 130 insertions(+), 230 deletions(-) diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 7c673231e0..6db340051a 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -309,16 +309,16 @@ set(lisbslic3r_sources Support/SupportLayer.hpp Support/SupportMaterial.cpp Support/SupportMaterial.hpp - Support/SupportParameters.hpp Support/SupportSpotsGenerator.cpp Support/SupportSpotsGenerator.hpp Support/TreeSupport.hpp Support/TreeSupport.cpp - Support/TreeSupport3D.cpp Support/TreeSupport3D.hpp - Support/TreeSupportCommon.hpp - Support/TreeModelVolumes.cpp + Support/TreeSupport3D.cpp Support/TreeModelVolumes.hpp + Support/TreeModelVolumes.cpp + Support/TreeSupportCommon.hpp + Support/SupportParameters.hpp PrincipalComponents2D.cpp PrincipalComponents2D.hpp MinimumSpanningTree.hpp diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp index d5ce03d3b4..d64ab81689 100644 --- a/src/libslic3r/Fill/FillBase.cpp +++ b/src/libslic3r/Fill/FillBase.cpp @@ -56,7 +56,7 @@ Fill* Fill::new_from_type(const InfillPattern type) case ipOctagramSpiral: return new FillOctagramSpiral(); case ipAdaptiveCubic: return new FillAdaptive::Filler(); case ipSupportCubic: return new FillAdaptive::Filler(); - case ipSupportBase: return new FillSupportBase(); + case ipSupportBase: return new FillSupportBase(); // simply line fill case ipLightning: return new FillLightning::Filler(); // BBS: for internal solid infill only case ipConcentricInternal: return new FillConcentricInternal(); diff --git a/src/libslic3r/Support/SupportMaterial.cpp b/src/libslic3r/Support/SupportMaterial.cpp index 57567b90d8..47c476564b 100644 --- a/src/libslic3r/Support/SupportMaterial.cpp +++ b/src/libslic3r/Support/SupportMaterial.cpp @@ -329,22 +329,6 @@ static Polygons contours_simplified(const Vec2i32 &grid_size, const double pixel } #endif // SUPPORT_USE_AGG_RASTERIZER -static std::string get_svg_filename(std::string layer_nr_or_z, std::string tag = "bbl_ts") -{ - static bool rand_init = false; - - if (!rand_init) { - srand(time(NULL)); - rand_init = true; - } - - int rand_num = rand() % 1000000; - //makedir("./SVG"); - std::string prefix = "./SVG/"; - std::string suffix = ".svg"; - return prefix + tag + "_" + layer_nr_or_z /*+ "_" + std::to_string(rand_num)*/ + suffix; -} - PrintObjectSupportMaterial::PrintObjectSupportMaterial(const PrintObject *object, const SlicingParameters &slicing_params) : m_print_config (&object->print()->config()), m_object_config (&object->config()), @@ -567,18 +551,6 @@ void PrintObjectSupportMaterial::generate(PrintObject &object) } #endif /* SLIC3R_DEBUG */ -#if 0 // #ifdef SLIC3R_DEBUG - // check bounds - std::ofstream out; - out.open("./SVG/ns_support_layers.txt"); - if (out.is_open()) { - out << "### Support Layers ###" << std::endl; - for (auto& i : object.support_layers()) { - out << i->print_z << std::endl; - } - } -#endif /* SLIC3R_DEBUG */ - // Generate the actual toolpaths and save them into each layer. generate_support_toolpaths(object.support_layers(), *m_object_config, m_support_params, m_slicing_params, raft_layers, bottom_contacts, top_contacts, intermediate_layers, interface_layers, base_interface_layers); @@ -2245,10 +2217,6 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::top_contact_layers( layer->sharp_tails.push_back(expoly); layer->sharp_tails_height.push_back( accum_height ); append(overhangs_per_layers[layer_nr], overhang); -#ifdef SUPPORT_TREE_DEBUG_TO_SVG - SVG svg(get_svg_filename(std::to_string(layer->print_z), "sharp_tail"), object.bounding_box()); - if (svg.is_opened()) svg.draw(overhang, "yellow"); -#endif } } @@ -2959,36 +2927,6 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::raft_and_intermediate_supp for (size_t i = 0; i < top_contacts.size(); ++i) assert(top_contacts[i]->height > 0.); #endif /* _DEBUG */ - -#if 0 // #ifdef SLIC3R_DEBUG - // check bounds - std::ofstream out; - out.open("./SVG/ns_bounds.txt"); - if (out.is_open()) { - if (!top_contacts.empty()) { - out << "### Top Contacts ###" << std::endl; - for (auto& t : top_contacts) { - out << t->print_z << std::endl; - } - } - if (!bottom_contacts.empty()) { - out << "### Bottome Contacts ###" << std::endl; - for (auto& b : bottom_contacts) { - out << b->print_z << std::endl; - } - } - if (!intermediate_layers.empty()) { - out << "### Intermediate Layers ###" << std::endl; - for (auto& i : intermediate_layers) { - out << i->print_z << std::endl; - } - } - out << "### Slice Layers ###" << std::endl; - for (size_t j = 0; j < object.layers().size(); ++j) { - out << object.layers()[j]->print_z << std::endl; - } - } -#endif /* SLIC3R_DEBUG */ return intermediate_layers; } diff --git a/src/libslic3r/Support/SupportParameters.hpp b/src/libslic3r/Support/SupportParameters.hpp index e4c0dcd00e..1b1c11d953 100644 --- a/src/libslic3r/Support/SupportParameters.hpp +++ b/src/libslic3r/Support/SupportParameters.hpp @@ -5,11 +5,8 @@ #include "../Flow.hpp" namespace Slic3r { - -class PrintObject; -enum InfillPattern : int; - struct SupportParameters { + SupportParameters() = default; SupportParameters(const PrintObject &object) { const PrintConfig &print_config = object.print()->config(); @@ -86,20 +83,24 @@ struct SupportParameters { // Object is printed with the same extruder as the support. this->can_merge_support_regions = true; } - - double interface_spacing = object_config.support_interface_spacing.value + this->support_material_interface_flow.spacing(); - this->interface_density = std::min(1., this->support_material_interface_flow.spacing() / interface_spacing); + + + this->base_angle = Geometry::deg2rad(float(object_config.support_angle.value)); + this->interface_angle = Geometry::deg2rad(float(object_config.support_angle.value + 90.)); + this->interface_spacing = object_config.support_interface_spacing.value + this->support_material_interface_flow.spacing(); + this->interface_density = std::min(1., this->support_material_interface_flow.spacing() / this->interface_spacing); double raft_interface_spacing = object_config.support_interface_spacing.value + this->raft_interface_flow.spacing(); this->raft_interface_density = std::min(1., this->raft_interface_flow.spacing() / raft_interface_spacing); - double support_spacing = object_config.support_base_pattern_spacing.value + this->support_material_flow.spacing(); - this->support_density = std::min(1., this->support_material_flow.spacing() / support_spacing); + this->support_spacing = object_config.support_base_pattern_spacing.value + this->support_material_flow.spacing(); + this->support_density = std::min(1., this->support_material_flow.spacing() / this->support_spacing); if (object_config.support_interface_top_layers.value == 0) { // No interface layers allowed, print everything with the base support pattern. + this->interface_spacing = this->support_spacing; this->interface_density = this->support_density; } SupportMaterialPattern support_pattern = object_config.support_base_pattern; - this->with_sheath = /*is_tree(object_config.support_type) &&*/ object_config.tree_support_wall_count > 0; + this->with_sheath = object_config.tree_support_wall_count > 0; this->base_fill_pattern = support_pattern == smpHoneycomb ? ipHoneycomb : this->support_density > 0.95 || this->with_sheath ? ipRectilinear : ipSupportBase; @@ -115,9 +116,7 @@ struct SupportParameters { object_config.support_interface_pattern == smipConcentric ? ipConcentric : (this->interface_density > 0.95 ? ipRectilinear : ipSupportBase); - - this->base_angle = Geometry::deg2rad(float(object_config.support_angle.value)); - this->interface_angle = Geometry::deg2rad(float(object_config.support_angle.value + 90.)); + this->raft_angle_1st_layer = 0.f; this->raft_angle_base = 0.f; this->raft_angle_interface = 0.f; @@ -215,11 +214,13 @@ struct SupportParameters { float base_angle; float interface_angle; - + coordf_t interface_spacing; + coordf_t support_expansion=0; // Density of the top / bottom interface and contact layers. coordf_t interface_density; // Density of the raft interface and contact layers. coordf_t raft_interface_density; + coordf_t support_spacing; // Density of the base support layers. coordf_t support_density; SupportMaterialStyle support_style = smsDefault; @@ -235,7 +236,7 @@ struct SupportParameters { // Shall the sparse (base) layers be printed with a single perimeter line (sheath) for robustness? bool with_sheath; // Branches of organic supports with area larger than this threshold will be extruded with double lines. - double tree_branch_diameter_double_wall_area_scaled; + double tree_branch_diameter_double_wall_area_scaled = 0.25 * sqr(scaled(3.0)) * M_PI;; float raft_angle_1st_layer; float raft_angle_base; diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 2a410e443f..37613bcb8c 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1,23 +1,27 @@ #include -#include "MinimumSpanningTree.hpp" -#include "TreeSupport.hpp" -#include "Print.hpp" -#include "Layer.hpp" + +#include "ClipperUtils.hpp" +#include "Fill/FillBase.hpp" #include "Fill/FillBase.hpp" #include "Fill/FillConcentric.hpp" -#include "CurveAnalyzer.hpp" -#include "SVG.hpp" -#include "ShortestPath.hpp" #include "I18N.hpp" +#include "Layer.hpp" +#include "MinimumSpanningTree.hpp" +#include "Print.hpp" +#include "ShortestPath.hpp" +#include "SupportCommon.hpp" +#include "SVG.hpp" +#include "TreeSupportCommon.hpp" +#include "TreeSupport.hpp" +#include "TreeSupport3D.hpp" #include #include -#include "TreeSupport3D.hpp" -#include -#include -#include + #include +#include +#include #include #include @@ -1646,28 +1650,25 @@ void TreeSupport::generate() m_ts_data = m_object->alloc_tree_support_preview_cache(); m_ts_data->is_slim = is_slim; - // Generate contact points of tree support - std::vector> contact_nodes(m_object->layers().size()); - std::vector move_bounds(m_highest_overhang_layer + 1); profiler.stage_start(STAGE_GENERATE_CONTACT_NODES); m_object->print()->set_status(56, _u8L("Support: generate contact points")); - generate_contact_points(contact_nodes); + generate_contact_points(); profiler.stage_finish(STAGE_GENERATE_CONTACT_NODES); //Drop nodes to lower layers. profiler.stage_start(STAGE_DROP_DOWN_NODES); m_object->print()->set_status(60, _u8L("Generating support")); - drop_nodes(contact_nodes); + drop_nodes(); profiler.stage_finish(STAGE_DROP_DOWN_NODES); - smooth_nodes(contact_nodes); // , tree_support_3d_config); + smooth_nodes();// , tree_support_3d_config); //Generate support areas. profiler.stage_start(STAGE_DRAW_CIRCLES); m_object->print()->set_status(65, _u8L("Generating support")); - draw_circles(contact_nodes); + draw_circles(); profiler.stage_finish(STAGE_DRAW_CIRCLES); @@ -1714,7 +1715,6 @@ coordf_t TreeSupport::calc_branch_radius(coordf_t base_radius, coordf_t mm_to_to { radius = mm_to_top;// this is a 45 degree tip } - radius = std::max(radius, MIN_BRANCH_RADIUS); radius = std::min(radius, MAX_BRANCH_RADIUS); // if have interface layers, radius should be larger @@ -1876,7 +1876,7 @@ Polygons TreeSupport::get_trim_support_regions( return polygons_trimming; } -void TreeSupport::draw_circles(const std::vector>& contact_nodes) +void TreeSupport::draw_circles() { const PrintObjectConfig &config = m_object->config(); const Print* print = m_object->print(); @@ -1980,11 +1980,11 @@ void TreeSupport::draw_circles(const std::vector>& con } }; - BOOST_LOG_TRIVIAL(debug) << "circles at layer " << layer_nr << " contact nodes size=" << contact_nodes[layer_nr].size(); + BOOST_LOG_TRIVIAL(debug) << "circles at layer " << layer_nr << " contact nodes size=" << curr_layer_nodes.size(); //Draw the support areas and add the roofs appropriately to the support roof instead of normal areas. - ts_layer->lslices.reserve(contact_nodes[layer_nr].size()); + ts_layer->lslices.reserve(curr_layer_nodes.size()); ExPolygons area_poly; // the polygon node area which will be printed as normal support - for (const SupportNode* p_node : contact_nodes[layer_nr]) + for (const SupportNode* p_node : curr_layer_nodes) { if (print->canceled()) break; @@ -2366,7 +2366,7 @@ void TreeSupport::draw_circles(const std::vector>& con double SupportNode::diameter_angle_scale_factor; -void TreeSupport::drop_nodes(std::vector>& contact_nodes) +void TreeSupport::drop_nodes() { const PrintObjectConfig &config = m_object->config(); // Use Minimum Spanning Tree to connect the points on each layer and move them while dropping them down. @@ -2405,7 +2405,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod return move_dist; }; - m_ts_data->layer_heights = plan_layer_heights(contact_nodes); + m_ts_data->layer_heights = plan_layer_heights(); std::vector &layer_heights = m_ts_data->layer_heights; if (layer_heights.empty()) return; @@ -2468,7 +2468,6 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod coordf_t height_next = layer_heights[layer_nr_next].height; std::deque> unsupported_branch_leaves; // All nodes that are leaves on this layer that would result in unsupported ('mid-air') branches. - const Layer* ts_layer = m_object->get_support_layer(layer_nr); m_object->print()->set_status(60 + int(10 * (1 - float(layer_nr) / contact_nodes.size())), _u8L("Generating support"));// (boost::format(_u8L("Support: propagate branches at layer %d")) % layer_nr).str()); @@ -2731,7 +2730,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod // 1. do not merge neighbors under 5mm // 2. Only merge node with single neighbor in distance between [max_move_distance, 10mm/layer_height] float dist2_to_first_neighbor = neighbours.empty() ? 0 : vsize2_with_unscale(neighbours[0] - node.position); - if (ts_layer->print_z > DO_NOT_MOVER_UNDER_MM && + if (node.print_z > DO_NOT_MOVER_UNDER_MM && (neighbours.size() > 1 || (neighbours.size() == 1 && dist2_to_first_neighbor >= max_move_distance2))) // Only nodes that aren't about to collapse. { // Move towards the average position of all neighbours. @@ -2747,7 +2746,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod coordf_t branch_bottom_radius = calc_branch_radius(branch_radius, node.dist_mm_to_top + node.print_z, diameter_angle_scale_factor); coordf_t neighbour_bottom_radius = calc_branch_radius(branch_radius, neighbour_node->dist_mm_to_top + neighbour_node->print_z, diameter_angle_scale_factor); - double max_converge_distance = tan_angle * (ts_layer->print_z - DO_NOT_MOVER_UNDER_MM) + std::max(branch_bottom_radius, neighbour_bottom_radius); + double max_converge_distance = tan_angle * (p_node->print_z - DO_NOT_MOVER_UNDER_MM) + std::max(branch_bottom_radius, neighbour_bottom_radius); if (dist2_to_neighbor > max_converge_distance * max_converge_distance) continue; if (is_line_cut_by_contour(node.position, neighbour)) continue; @@ -2892,7 +2891,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nod BOOST_LOG_TRIVIAL(debug) << "after m_avoidance_cache.size()=" << m_ts_data->m_avoidance_cache.size(); } -void TreeSupport::smooth_nodes(std::vector> &contact_nodes) +void TreeSupport::smooth_nodes() { for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { std::vector &curr_layer_nodes = contact_nodes[layer_nr]; @@ -2963,7 +2962,7 @@ void TreeSupport::smooth_nodes(std::vector> &contact_ } } -std::vector TreeSupport::plan_layer_heights(std::vector> &contact_nodes) +std::vector TreeSupport::plan_layer_heights() { std::vector layer_heights(contact_nodes.size()); std::map> bounds; // layer_nr:(print_z, height) @@ -3061,7 +3060,7 @@ std::vector TreeSupport::plan_layer_heights(std::vector>& contact_nodes) +void TreeSupport::generate_contact_points() { const PrintObjectConfig &config = m_object->config(); const coordf_t point_spread = scale_(config.tree_support_branch_distance.value); @@ -3119,8 +3118,11 @@ void TreeSupport::generate_contact_points(std::vector> // fix bug of generating support for very thin objects if (m_object->layers().size() <= z_distance_top_layers + 1) return; - //if (m_object->support_layer_count() <= m_raft_layers) - // return; + + contact_nodes.clear(); + contact_nodes.resize(m_object->layers().size()); + + tbb::spin_mutex mtx; int nonempty_layers = 0; tbb::concurrent_vector all_nodes; diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index b8d4bdbbba..f94fd57020 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -379,7 +379,7 @@ public: int avg_node_per_layer = 0; - float nodes_angle = 0; + float nodes_angle = 0; bool has_sharp_tails = false; bool has_cantilever = false; double max_cantilever_dist = 0; @@ -405,11 +405,11 @@ private: * Lazily computes volumes as needed. * \warning This class is NOT currently thread-safe and should not be accessed in OpenMP blocks */ + std::vector> contact_nodes; std::shared_ptr m_ts_data; - std::unique_ptr m_model_volumes; PrintObject *m_object; - const PrintObjectConfig *m_object_config; + const PrintObjectConfig* m_object_config; SlicingParameters m_slicing_params; // Various precomputed support parameters to be shared with external functions. SupportParameters m_support_params; @@ -441,7 +441,7 @@ private: * save the resulting support polygons to. * \param contact_nodes The nodes to draw as support. */ - void draw_circles(const std::vector>& contact_nodes); + void draw_circles(); /*! * \brief Drops down the nodes of the tree support towards the build plate. @@ -455,16 +455,16 @@ private: * dropped down. The nodes are dropped to lower layers inside the same * vector of layers. */ - void drop_nodes(std::vector>& contact_nodes); + void drop_nodes(); - void smooth_nodes(std::vector>& contact_nodes); + void smooth_nodes(); /*! BBS: MusangKing: maximum layer height * \brief Optimize the generation of tree support by pre-planning the layer_heights * */ - std::vector plan_layer_heights(std::vector>& contact_nodes); + std::vector plan_layer_heights(); /*! * \brief Creates points where support contacts the model. * @@ -478,7 +478,7 @@ private: * \return For each layer, a list of points where the tree should connect * with the model. */ - void generate_contact_points(std::vector>& contact_nodes); + void generate_contact_points(); /*! * \brief Add a node to the next layer. diff --git a/src/libslic3r/Support/TreeSupport3D.cpp b/src/libslic3r/Support/TreeSupport3D.cpp index 8773cae565..22505d4f92 100644 --- a/src/libslic3r/Support/TreeSupport3D.cpp +++ b/src/libslic3r/Support/TreeSupport3D.cpp @@ -7,22 +7,22 @@ // CuraEngine is released under the terms of the AGPLv3 or higher. #include "TreeSupport3D.hpp" - -#include "../AABBTreeIndirect.hpp" -#include "../BuildVolume.hpp" -#include "../ClipperUtils.hpp" -#include "../EdgeGrid.hpp" -#include "../Fill/Fill.hpp" -#include "../Layer.hpp" -#include "../Print.hpp" -#include "../MultiPoint.hpp" -#include "../Polygon.hpp" -#include "../Polyline.hpp" -#include "../MutablePolygon.hpp" -#include "TreeSupportCommon.hpp" +#include "AABBTreeIndirect.hpp" +#include "AABBTreeLines.hpp" +#include "BuildVolume.hpp" +#include "ClipperUtils.hpp" +#include "EdgeGrid.hpp" +#include "Fill/Fill.hpp" +#include "Layer.hpp" +#include "Print.hpp" +#include "MultiPoint.hpp" +#include "Polygon.hpp" +#include "Polyline.hpp" +#include "MutablePolygon.hpp" #include "SupportCommon.hpp" +#include "TriangleMeshSlicer.hpp" #include "TreeSupport.hpp" -#include "libslic3r.h" +#include "I18N.hpp" #include #include @@ -49,7 +49,11 @@ #include #endif // TREE_SUPPORT_ORGANIC_NUDGE_NEW -// #define TREESUPPORT_DEBUG_SVG +#ifndef _L +#define _L(s) Slic3r::I18N::translate(s) +#endif + + //#define TREESUPPORT_DEBUG_SVG namespace Slic3r { @@ -57,16 +61,6 @@ namespace Slic3r namespace TreeSupport3D { -enum class LineStatus -{ - INVALID, - TO_MODEL, - TO_MODEL_GRACIOUS, - TO_MODEL_GRACIOUS_SAFE, - TO_BP, - TO_BP_SAFE -}; - using LineInformation = std::vector>; using LineInformations = std::vector; using namespace std::literals; @@ -363,6 +357,28 @@ static std::vector>> group_me return max_layer; } +// picked from convert_lines_to_internal() +[[nodiscard]] LineStatus get_avoidance_status(const Point& p, coord_t radius, LayerIndex layer_idx, + const TreeModelVolumes& volumes, const TreeSupportSettings& config) +{ + const bool min_xy_dist = config.xy_distance > config.xy_min_distance; + + LineStatus type = LineStatus::INVALID; + + if (!contains(volumes.getAvoidance(radius, layer_idx, TreeModelVolumes::AvoidanceType::FastSafe, false, min_xy_dist), p)) + type = LineStatus::TO_BP_SAFE; + else if (!contains(volumes.getAvoidance(radius, layer_idx, TreeModelVolumes::AvoidanceType::Fast, false, min_xy_dist), p)) + type = LineStatus::TO_BP; + else if (config.support_rests_on_model && !contains(volumes.getAvoidance(radius, layer_idx, TreeModelVolumes::AvoidanceType::FastSafe, true, min_xy_dist), p)) + type = LineStatus::TO_MODEL_GRACIOUS_SAFE; + else if (config.support_rests_on_model && !contains(volumes.getAvoidance(radius, layer_idx, TreeModelVolumes::AvoidanceType::Fast, true, min_xy_dist), p)) + type = LineStatus::TO_MODEL_GRACIOUS; + else if (config.support_rests_on_model && !contains(volumes.getCollision(radius, layer_idx, min_xy_dist), p)) + type = LineStatus::TO_MODEL; + + return type; +} + /*! * \brief Converts a Polygons object representing a line into the internal format. * @@ -1942,7 +1958,7 @@ static void increase_areas_one_layer( inc_wo_collision.clear(); if (!settings.no_error) { // ERROR CASE - // if the area becomes for whatever reason something that clipper sees as a line, offset would stop working, so ensure that even if if wrongly would be a line, it still actually has an area that can be increased + // if the area becomes for whatever reason something that clipper sees as a line, offset would stop working, so ensure that even if it would be a line wrongly, it still actually has an area that can be increased Polygons lines_offset = offset(to_polylines(parent.influence_area), scaled(0.005), jtMiter, 1.2); Polygons base_error_area = union_(parent.influence_area, lines_offset); result = increase_single_area(volumes, config, settings, layer_idx, parent, @@ -3321,7 +3337,7 @@ static void organic_smooth_branches_avoid_collisions( * \param storage The data storage where the mesh data is gotten from and * where the resulting support areas are stored. */ -static void generate_support_areas(Print &print, const BuildVolume &build_volume, const std::vector &print_object_ids, std::function throw_on_cancel) +static void generate_support_areas(Print &print, TreeSupport* tree_support, const BuildVolume &build_volume, const std::vector &print_object_ids, std::function throw_on_cancel) { // Settings with the indexes of meshes that use these settings. std::vector>> grouped_meshes = group_meshes(print, print_object_ids); @@ -3985,7 +4001,7 @@ void generate_tree_support_3D(PrintObject &print_object, TreeSupport* tree_suppo std::transform(bedpts.begin(), bedpts.end(), std::back_inserter(bedptsf), [](const Point &p) { return unscale(p); }); BuildVolume build_volume{ bedptsf, tree_support->m_print_config->printable_height }; - TreeSupport3D::generate_support_areas(*print_object.print(), build_volume, { idx }, throw_on_cancel); + TreeSupport3D::generate_support_areas(*print_object.print(), tree_support, build_volume, { idx }, throw_on_cancel); } } // namespace Slic3r diff --git a/src/libslic3r/Support/TreeSupport3D.hpp b/src/libslic3r/Support/TreeSupport3D.hpp index ba543fbc81..1e58743c25 100644 --- a/src/libslic3r/Support/TreeSupport3D.hpp +++ b/src/libslic3r/Support/TreeSupport3D.hpp @@ -47,8 +47,6 @@ struct SlicingParameters; namespace TreeSupport3D { -// The number of vertices in each circle. -static constexpr const size_t SUPPORT_TREE_CIRCLE_RESOLUTION = 25; struct AreaIncreaseSettings { diff --git a/src/libslic3r/Support/TreeSupportCommon.hpp b/src/libslic3r/Support/TreeSupportCommon.hpp index b382f6526c..3122a43d2d 100644 --- a/src/libslic3r/Support/TreeSupportCommon.hpp +++ b/src/libslic3r/Support/TreeSupportCommon.hpp @@ -17,10 +17,10 @@ namespace Slic3r { - + // The number of vertices in each circle. + static constexpr const size_t SUPPORT_TREE_CIRCLE_RESOLUTION = 25; namespace TreeSupport3D { - using LayerIndex = int; enum class InterfacePreference @@ -40,18 +40,18 @@ struct TreeSupportMeshGroupSettings { const PrintObjectConfig &config = print_object.config(); const SlicingParameters &slicing_params = print_object.slicing_parameters(); // const std::vector printing_extruders = print_object.object_extruders(); - + // Support must be enabled and set to Tree style. - assert(config.enable_support || config.enforce_support_layers > 0); - assert(is_tree(config.support_type)); - + //assert(config.support_material); + //assert(config.support_material_style == smsTree || config.support_material_style == smsOrganic); + // Calculate maximum external perimeter width over all printing regions, taking into account the default layer height. coordf_t external_perimeter_width = 0.; for (size_t region_id = 0; region_id < print_object.num_printing_regions(); ++ region_id) { const PrintRegion ®ion = print_object.printing_region(region_id); external_perimeter_width = std::max(external_perimeter_width, region.flow(print_object, frExternalPerimeter, config.layer_height).width()); } - + this->layer_height = scaled(config.layer_height.value); this->resolution = scaled(print_config.resolution.value); // Arache feature @@ -74,24 +74,15 @@ struct TreeSupportMeshGroupSettings { this->support_xy_distance_overhang = std::min(this->support_xy_distance, scaled(0.5 * external_perimeter_width)); this->support_top_distance = scaled(slicing_params.gap_support_object); this->support_bottom_distance = scaled(slicing_params.gap_object_support); - // this->support_interface_skip_height = - // this->support_infill_angles = this->support_roof_enable = config.support_interface_top_layers.value > 0; - this->support_roof_layers = this->support_roof_enable ? config.support_interface_top_layers.value : 0; - this->support_floor_enable = config.support_interface_top_layers.value > 0 && config.support_interface_bottom_layers.value > 0; - this->support_floor_layers = this->support_floor_enable ? config.support_interface_bottom_layers.value : 0; - // this->minimum_roof_area = - // this->support_roof_angles = + this->support_roof_layers = config.support_interface_top_layers.value; + this->support_floor_enable = config.support_interface_bottom_layers.value > 0; + this->support_floor_layers = config.support_interface_bottom_layers.value; this->support_roof_pattern = config.support_interface_pattern; this->support_pattern = config.support_base_pattern; this->support_line_spacing = scaled(config.support_base_pattern_spacing.value); - // this->support_bottom_offset = - // this->support_wall_count = config.support_material_with_sheath ? 1 : 0; - this->support_wall_count = 1; + this->support_wall_count = std::max(1, config.tree_support_wall_count.value); // at least 1 wall for organic tree support this->support_roof_line_distance = scaled(config.support_interface_spacing.value) + this->support_roof_line_width; - // this->minimum_support_area = - // this->minimum_bottom_area = - // this->support_offset = this->support_tree_branch_distance = scaled(config.tree_support_branch_distance_organic.value); this->support_tree_angle = std::clamp(config.tree_support_branch_angle_organic * M_PI / 180., 0., 0.5 * M_PI - EPSILON); this->support_tree_angle_slow = std::clamp(config.tree_support_angle_slow * M_PI / 180., 0., this->support_tree_angle - EPSILON); @@ -100,26 +91,6 @@ struct TreeSupportMeshGroupSettings { this->support_tree_top_rate = config.tree_support_top_rate.value; // percent // this->support_tree_tip_diameter = this->support_line_width; this->support_tree_tip_diameter = std::clamp(scaled(config.tree_support_tip_diameter.value), (coord_t)0, this->support_tree_branch_diameter); - - std::cout << "\n---------------\n" - << "layer_height: " << layer_height << "\nresolution: " << resolution << "\nmin_feature_size: " << min_feature_size - << "\nsupport_angle: " << support_angle << "\nconfig.support_threshold_angle: " << config.support_threshold_angle << "\nsupport_line_width: " << support_line_width - << "\nsupport_roof_line_width: " << support_roof_line_width << "\nsupport_bottom_enable: " << support_bottom_enable - << "\nsupport_bottom_height: " << support_bottom_height - << "\nsupport_material_buildplate_only: " << support_material_buildplate_only - << "\nsupport_xy_distance: " << support_xy_distance << "\nsupport_xy_distance_overhang: " << support_xy_distance_overhang - << "\nsupport_top_distance: " << support_top_distance << "\nsupport_bottom_distance: " << support_bottom_distance - << "\nsupport_roof_enable: " << support_roof_enable << "\nsupport_roof_layers: " << support_roof_layers - << "\nsupport_floor_enable: " << support_floor_enable << "\nsupport_floor_layers: " << support_floor_layers - << "\nsupport_roof_pattern: " << support_roof_pattern << "\nsupport_pattern: " << support_pattern - << "\nsupport_line_spacing: " << support_line_spacing << "\nsupport_wall_count: " << support_wall_count - << "\nsupport_roof_line_distance: " << support_roof_line_distance - << "\nsupport_tree_branch_distance: " << support_tree_branch_distance - << "\nsupport_tree_angle_slow: " << support_tree_angle_slow - << "\nsupport_tree_branch_diameter: " << support_tree_branch_diameter - << "\nsupport_tree_branch_diameter_angle: " << support_tree_branch_diameter_angle - << "\nsupport_tree_top_rate: " << support_tree_top_rate << "\nsupport_tree_tip_diameter: " << support_tree_tip_diameter - << "\n---------------\n"; } /*********************************************************************/ @@ -768,6 +739,17 @@ private: std::mutex m_mutex_layer_storage; }; +enum class LineStatus +{ + INVALID, + TO_MODEL, + TO_MODEL_GRACIOUS, + TO_MODEL_GRACIOUS_SAFE, + TO_BP, + TO_BP_SAFE +}; + + } // namespace TreeSupport3D } // namespace Slic3r diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 05822fdfdb..4ae655c2cf 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1496,43 +1496,6 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) m_config_manipulation.apply(m_config, &new_conf); } - // BBS popup a message to ask the user to set optimum parameters for tree support - if (opt_key == "support_type" || opt_key == "support_style") { - if (is_tree_slim(m_config->opt_enum("support_type"), m_config->opt_enum("support_style")) && - !(m_config->opt_float("support_top_z_distance") == 0 && m_config->opt_int("support_interface_top_layers") == 0 && m_config->opt_int("tree_support_wall_count") == 2)) { - wxString msg_text = _L("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."); - msg_text += "\n\n" + _L("Change these settings automatically? \n" - "Yes - Change these settings automatically\n" - "No - Do not change these settings for me"); - MessageDialog dialog(wxGetApp().plater(), msg_text, "Suggestion", wxICON_WARNING | wxYES | wxNO); - DynamicPrintConfig new_conf = *m_config; - if (dialog.ShowModal() == wxID_YES) { - new_conf.set_key_value("support_top_z_distance", new ConfigOptionFloat(0)); - new_conf.set_key_value("support_interface_top_layers", new ConfigOptionInt(0)); - new_conf.set_key_value("tree_support_wall_count", new ConfigOptionInt(2)); - m_config_manipulation.apply(m_config, &new_conf); - } - wxGetApp().plater()->update(); - } else if ((m_config->opt_enum("support_type")==stTreeAuto && (m_config->opt_enum("support_style")==smsTreeStrong || m_config->opt_enum("support_style") == smsTreeHybrid)) && - !((m_config->opt_float("support_top_z_distance") >=0.1 || is_support_filament(m_config->opt_int("support_interface_filament") - 1)) - && m_config->opt_int("support_interface_top_layers") >1) ) { - wxString msg_text = _L("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."); - msg_text += "\n\n" + _L("Change these settings automatically? \n" - "Yes - Change these settings automatically\n" - "No - Do not change these settings for me"); - MessageDialog dialog(wxGetApp().plater(), msg_text, "Suggestion", wxICON_WARNING | wxYES | wxNO); - DynamicPrintConfig new_conf = *m_config; - if (dialog.ShowModal() == wxID_YES) { - if (!is_support_filament(m_config->opt_int("support_interface_filament") - 1) && m_config->opt_float("support_top_z_distance") < 0.1) - new_conf.set_key_value("support_top_z_distance", new ConfigOptionFloat(0.2)); - new_conf.set_key_value("support_interface_top_layers", new ConfigOptionInt(2)); - m_config_manipulation.apply(m_config, &new_conf); - } - wxGetApp().plater()->update(); - } - } - // BBS popup a message to ask the user to set optimum parameters for support interface if support materials are used if (opt_key == "support_interface_filament") { int interface_filament_id = m_config->opt_int("support_interface_filament") - 1; // the displayed id is based from 1, while internal id is based from 0 From 5054ee85082a42ea31982e718cf0ebe9c5853962 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 22 Jul 2024 10:52:37 +0800 Subject: [PATCH 045/129] ENH: improve hybrid tree support 1. do not add interface for small overhangs so supports are easier to remove 2. calculate avoidance more accurately using real layer height jira: STUDIO-6285 3. hybrid nodes won't collide with lower layers 4. calculate max move more accurately 5. do not increase radius if next layer has collision jira: STUDIO-2296, STUDIO-7883 6. rewrite plan_layer_heights to prevent support layers overlap. Now the tree support layers are completely independent to object layers. 6. increase collision areas for interface. The top layers may be too close to interface with adaptive layer heights and very small overhang angle Change-Id: I052c3f66e68afb7663e2d70c846dd09ed7086071 (cherry picked from commit aca511caebfdeec270d4fc0ec6bbbadde77cddc9) (cherry picked from commit f2fc996652b3b204b4e554f57afed8519feb0397) --- src/libslic3r/PrintObject.cpp | 8 +- src/libslic3r/Support/TreeSupport.cpp | 600 +++++++++++++----------- src/libslic3r/Support/TreeSupport.hpp | 52 +- src/libslic3r/Support/TreeSupport3D.cpp | 242 +++++----- src/libslic3r/Support/TreeSupport3D.hpp | 2 +- 5 files changed, 479 insertions(+), 425 deletions(-) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index a25df3451a..7f3945042a 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -845,14 +845,8 @@ void PrintObject::clear_support_layers() std::shared_ptr PrintObject::alloc_tree_support_preview_cache() { if (!m_tree_support_preview_cache) { - const coordf_t layer_height = m_config.layer_height.value; const coordf_t xy_distance = m_config.support_object_xy_distance.value; - const double angle = m_config.tree_support_branch_angle.value * M_PI / 180.; - const coordf_t max_move_distance - = (angle < M_PI / 2) ? (coordf_t)(tan(angle) * layer_height) : std::numeric_limits::max(); - const coordf_t radius_sample_resolution = g_config_tree_support_collision_resolution; - - m_tree_support_preview_cache = std::make_shared(*this, xy_distance, max_move_distance, radius_sample_resolution); + m_tree_support_preview_cache = std::make_shared(*this, xy_distance, g_config_tree_support_collision_resolution); } return m_tree_support_preview_cache; diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 37613bcb8c..7265945b3b 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -3,8 +3,6 @@ #include "ClipperUtils.hpp" #include "Fill/FillBase.hpp" -#include "Fill/FillBase.hpp" -#include "Fill/FillConcentric.hpp" #include "I18N.hpp" #include "Layer.hpp" #include "MinimumSpanningTree.hpp" @@ -616,14 +614,15 @@ TreeSupport::TreeSupport(PrintObject& object, const SlicingParameters &slicing_p is_slim = is_tree_slim(support_type, m_support_params.support_style); is_strong = is_tree(support_type) && m_support_params.support_style == smsTreeStrong; - MAX_BRANCH_RADIUS = 10.0; - tree_support_branch_diameter_angle = 5.0;//is_slim ? 10.0 : 5.0; + base_radius = std::max(MIN_BRANCH_RADIUS, m_object_config->tree_support_branch_diameter.value / 2); // by default tree support needs no infill, unless it's tree hybrid which contains normal nodes. with_infill = support_pattern != smpNone && support_pattern != smpDefault; m_machine_border.contour = get_bed_shape_with_excluded_area(*m_print_config); Vec3d plate_offset = m_object->print()->get_plate_origin(); // align with the centered object in current plate (may not be the 1st plate, so need to add the plate offset) m_machine_border.translate(Point(scale_(plate_offset(0)), scale_(plate_offset(1))) - m_object->instances().front().shift); + top_z_distance = m_object_config->support_top_z_distance.value; + if (top_z_distance > EPSILON) top_z_distance = std::max(top_z_distance, float(m_slicing_params.min_layer_height)); #ifdef SUPPORT_TREE_DEBUG_TO_SVG SVG svg(debug_out_path("machine_boarder.svg"), m_object->bounding_box()); if (svg.is_opened()) svg.draw(m_machine_border, "yellow"); @@ -661,7 +660,6 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) static const double sharp_tail_max_support_height = 16.f; // a region is considered well supported if the number of layers below it exceeds this threshold const int thresh_layers_below = 10 / config.layer_height; - double obj_height = m_object->size().z(); // +1 makes the threshold inclusive double thresh_angle = config.support_threshold_angle.value > EPSILON ? config.support_threshold_angle.value + 1 : 30; thresh_angle = std::min(thresh_angle, 89.); // should be smaller than 90 @@ -1160,17 +1158,6 @@ void TreeSupport::create_tree_support_layers() } m_raft_layers = layer_id; } - - for (Layer *layer : m_object->layers()) { - SupportLayer* ts_layer = m_object->add_tree_support_layer(layer_id++, layer->height, layer->print_z, layer->slice_z); - if (ts_layer->id() > m_raft_layers) { - SupportLayer* lower_layer = m_object->get_support_layer(ts_layer->id() - 1); - if (lower_layer) { - lower_layer->upper_layer = ts_layer; - ts_layer->lower_layer = lower_layer; - } - } - } } static inline BoundingBox fill_expolygon_generate_paths( @@ -1631,6 +1618,36 @@ void deleteDirectoryContents(const std::filesystem::path& dir) std::filesystem::remove_all(entry.path()); } + +void TreeSupport::move_bounds_to_contact_nodes(std::vector &move_bounds, + PrintObject &print_object, + const TreeSupport3D::TreeSupportSettings &config) +{ + m_ts_data = print_object.alloc_tree_support_preview_cache(); + // convert move_bounds back to Support Nodes for tree skeleton preview + this->contact_nodes.resize(move_bounds.size()); + for (int layer_nr = move_bounds.size() - 1; layer_nr >= 0; layer_nr--) { + TreeSupport3D::SupportElements &elements = move_bounds[layer_nr]; + auto &contact_nodes_layer = this->contact_nodes[layer_nr]; + for (size_t i = 0; i < elements.size(); i++) { + auto &elem = elements[i]; + auto &state = elem.state; + state.print_z = layer_z(print_object.slicing_parameters(), config, layer_nr); + auto node = this->create_node(state.result_on_layer, state.distance_to_top, layer_nr, 0, state.to_buildplate, nullptr, state.print_z, config.layer_height); + contact_nodes_layer.push_back(node); + if (layer_nr < move_bounds.size() - 1 && !elem.parents.empty()) { + node->parent = contact_nodes[layer_nr + 1][elem.parents.front()]; + for (int j : elem.parents) { + contact_nodes[layer_nr + 1][j]->child = node; + node->parents.push_back(contact_nodes[layer_nr + 1][j]); + } + } + + if (i == 0) { m_ts_data->layer_heights.emplace_back(state.print_z, config.layer_height, std::max(0, layer_nr - 1)); } + } + } +} + void TreeSupport::generate() { if (m_support_params.support_style == smsTreeOrganic) { @@ -1656,6 +1673,7 @@ void TreeSupport::generate() generate_contact_points(); profiler.stage_finish(STAGE_GENERATE_CONTACT_NODES); + m_ts_data->layer_heights = plan_layer_heights(); //Drop nodes to lower layers. profiler.stage_start(STAGE_DROP_DOWN_NODES); @@ -1697,9 +1715,8 @@ coordf_t TreeSupport::calc_branch_radius(coordf_t base_radius, size_t layers_to_ } else { radius = base_radius * (layers_to_top + 1) / (tip_layers * 2); } - radius = std::max(radius, MIN_BRANCH_RADIUS); } - radius = std::min(radius, MAX_BRANCH_RADIUS); + radius = std::clamp(radius, MIN_BRANCH_RADIUS, MAX_BRANCH_RADIUS); return radius; } @@ -1715,18 +1732,22 @@ coordf_t TreeSupport::calc_branch_radius(coordf_t base_radius, coordf_t mm_to_to { radius = mm_to_top;// this is a 45 degree tip } - radius = std::max(radius, MIN_BRANCH_RADIUS); - radius = std::min(radius, MAX_BRANCH_RADIUS); + radius = std::clamp(radius, MIN_BRANCH_RADIUS, MAX_BRANCH_RADIUS); // if have interface layers, radius should be larger if (m_object_config->support_interface_top_layers.value > 0) radius = std::max(radius, base_radius); return radius; } -coordf_t TreeSupport::get_radius(const SupportNode* node, coordf_t base_radius) +coordf_t TreeSupport::calc_radius(coordf_t mm_to_top) +{ + return calc_branch_radius(base_radius, mm_to_top, diameter_angle_scale_factor); +} + +coordf_t TreeSupport::get_radius(const SupportNode* node) { if (node->radius == 0) - node->radius = calc_branch_radius(base_radius, node->dist_mm_to_top, node->diameter_angle_scale_factor); + node->radius = calc_radius(node->dist_mm_to_top); return node->radius; } @@ -1916,11 +1937,9 @@ void TreeSupport::draw_circles() const coordf_t layer_height = config.layer_height.value; const size_t top_interface_layers = config.support_interface_top_layers.value; const size_t bottom_interface_layers = config.support_interface_bottom_layers.value; - const double diameter_angle_scale_factor = tan(tree_support_branch_diameter_angle * M_PI / 180.);// * layer_height / branch_radius; //Scale factor per layer to produce the desired angle. const double nozzle_diameter = m_object->print()->config().nozzle_diameter.get_at(0); const coordf_t line_width = config.get_abs_value("support_line_width", nozzle_diameter); const coordf_t line_width_scaled = scale_(line_width); - const bool with_lightning_infill = m_support_params.base_fill_pattern == ipLightning; coordf_t support_extrusion_width = m_support_params.support_extrusion_width; const float tree_brim_width = config.tree_support_brim_width.value; @@ -1929,7 +1948,7 @@ void TreeSupport::draw_circles() return; BOOST_LOG_TRIVIAL(info) << "draw_circles for object: " << m_object->model_object()->name; - tbb::parallel_for(tbb::blocked_range(0, m_object->layer_count()), + tbb::parallel_for(tbb::blocked_range(0, contact_nodes.size()), [&](const tbb::blocked_range& range) { for (size_t layer_nr = range.begin(); layer_nr < range.end(); layer_nr++) @@ -1950,6 +1969,7 @@ void TreeSupport::draw_circles() ts_layer->print_z = m_ts_data->layer_heights[layer_nr].print_z; ts_layer->height = m_ts_data->layer_heights[layer_nr].height; + size_t obj_layer_nr = m_ts_data->layer_heights[layer_nr].obj_layer_nr; if (ts_layer->height < EPSILON) { continue; } @@ -1967,17 +1987,23 @@ void TreeSupport::draw_circles() bool need_extra_wall = false; ExPolygons collision_sharp_tails; ExPolygons collision_base; - auto get_collision = [&](bool sharp_tail) -> ExPolygons& { - if (sharp_tail) { - if (collision_sharp_tails.empty()) - collision_sharp_tails = m_ts_data->get_collision(m_object_config->support_top_z_distance.value, layer_nr); - return collision_sharp_tails; - } - else { - if (collision_base.empty()) - collision_base = m_ts_data->get_collision((layer_nr == 0) ? config.support_object_first_layer_gap : m_ts_data->m_xy_distance, layer_nr); - return collision_base; + auto get_collision = [&](bool sharp_tail) -> ExPolygons &{ + ExPolygons &collision = sharp_tail ? collision_sharp_tails : collision_base; + if (collision.empty()) { + collision = offset_ex(m_ts_data->m_layer_outlines[obj_layer_nr], + sharp_tail ? scale_(top_z_distance) : + scale_((obj_layer_nr == 0) ? config.support_object_first_layer_gap : m_ts_data->m_xy_distance)); + // the top layers may be too close to interface with adaptive layer heights and very small overhang angle + if (top_z_distance > EPSILON) { + float accum_height = 0; + for (size_t layer_id = obj_layer_nr + 1; + layer_id < m_ts_data->m_layer_outlines.size() && (accum_height += m_object->get_layer(layer_id)->height) && accum_height <= top_z_distance; + layer_id++) { + collision = union_ex(collision, offset_ex(m_ts_data->m_layer_outlines[layer_id], scale_(top_z_distance))); + } + } } + return collision; }; BOOST_LOG_TRIVIAL(debug) << "circles at layer " << layer_nr << " contact nodes size=" << curr_layer_nodes.size(); @@ -2027,7 +2053,7 @@ void TreeSupport::draw_circles() circle.points[i] = circle.points[i] * scale + node.position; } } - if (layer_nr == 0 && m_raft_layers == 0) { + if (obj_layer_nr == 0 && m_raft_layers == 0) { double brim_width = !config.tree_support_auto_brim ? tree_brim_width : std::max(MIN_BRANCH_RADIUS_FIRST_LAYER, std::min(node.radius + node.dist_mm_to_top / (scale * branch_radius) * 0.5, MAX_BRANCH_RADIUS_FIRST_LAYER) - node.radius); auto tmp=offset(circle, scale_(brim_width)); if(!tmp.empty()) @@ -2040,21 +2066,20 @@ void TreeSupport::draw_circles() if (node.overhang.contour.size() > 100 || node.overhang.holes.size()>1) overhang_expanded.emplace_back(node.overhang); else { - // 对于有缺陷的模型,overhang膨胀以后可能是空的! overhang_expanded = offset_ex({ node.overhang }, scale_(m_ts_data->m_xy_distance)); } append(area, overhang_expanded); } } - if (layer_nr>0 && node.distance_to_top < 0) + if (obj_layer_nr>0 && node.distance_to_top < 0) append(roof_gap_areas, area); - else if (layer_nr > 0 && node.support_roof_layers_below == 1 && node.is_sharp_tail==false) + else if (obj_layer_nr > 0 && node.support_roof_layers_below == 1 && node.is_sharp_tail==false) { append(roof_1st_layer, area); max_layers_above_roof1 = std::max(max_layers_above_roof1, node.dist_mm_to_top); } - else if (layer_nr > 0 && node.support_roof_layers_below > 0 && node.is_sharp_tail==false) + else if (obj_layer_nr > 0 && node.support_roof_layers_below > 0 && node.is_sharp_tail == false) { append(roof_areas, area); max_layers_above_roof = std::max(max_layers_above_roof, node.dist_mm_to_top); @@ -2071,9 +2096,8 @@ void TreeSupport::draw_circles() //m_object->print()->set_status(65, (boost::format( _u8L("Support: generate polygons at layer %d")) % layer_nr).str()); // join roof segments - double contact_dist_scaled = scale_(0.5);// scale_(m_slicing_params.gap_support_object); - roof_areas = std::move(offset2_ex(roof_areas, contact_dist_scaled, -contact_dist_scaled)); - roof_1st_layer = std::move(offset2_ex(roof_1st_layer, contact_dist_scaled, -contact_dist_scaled)); + roof_areas = diff_clipped(offset2_ex(roof_areas, line_width_scaled, -line_width_scaled), get_collision(false)); + roof_1st_layer = diff_clipped(offset2_ex(roof_1st_layer, line_width_scaled, -line_width_scaled), get_collision(false)); // roof_1st_layer and roof_areas may intersect, so need to subtract roof_areas from roof_1st_layer roof_1st_layer = diff_ex(roof_1st_layer, ClipperUtils::clip_clipper_polygons_with_subject_bbox(roof_areas,get_extents(roof_1st_layer))); @@ -2097,13 +2121,11 @@ void TreeSupport::draw_circles() { // find the lowest interface layer // TODO the gap may not be exact when "independent support layer height" is enabled - size_t layer_nr_next = layer_nr; - for (size_t i = 0; i < bottom_interface_layers && layer_nr_next>0; i++) { - layer_nr_next = m_ts_data->layer_heights[layer_nr_next].next_layer_nr; - } - for (size_t i = 0; i <= bottom_gap_layers && i<=layer_nr_next; i++) + size_t layer_nr_next = layer_nr - bottom_interface_layers; + size_t obj_layer_nr_next = m_ts_data->layer_heights[layer_nr_next].obj_layer_nr; + for (size_t i = 0; i <= bottom_gap_layers && i <= obj_layer_nr_next; i++) { - const Layer* below_layer = m_object->get_layer(layer_nr_next - i); + const Layer *below_layer = m_object->get_layer(obj_layer_nr_next - i); ExPolygons bottom_interface = intersection_ex(base_areas, below_layer->lslices); floor_areas.insert(floor_areas.end(), bottom_interface.begin(), bottom_interface.end()); } @@ -2115,7 +2137,7 @@ void TreeSupport::draw_circles() } } if (bottom_gap_layers > 0 && layer_nr > bottom_gap_layers) { - const Layer* below_layer = m_object->get_layer(layer_nr - bottom_gap_layers); + const Layer* below_layer = m_object->get_layer(m_ts_data->layer_heights[layer_nr].obj_layer_nr - bottom_gap_layers); ExPolygons bottom_gap_area = intersection_ex(floor_areas, below_layer->lslices); if (!bottom_gap_area.empty()) { floor_areas = std::move(diff_ex(floor_areas, bottom_gap_area)); @@ -2165,7 +2187,7 @@ void TreeSupport::draw_circles() std::vector contours; std::vector overhangs; - for (int layer_nr = 1; layer_nr < m_object->layer_count(); layer_nr++) { + for (int layer_nr = 1; layer_nr < contact_nodes.size(); layer_nr++) { if (print->canceled()) break; const std::vector& curr_layer_nodes = contact_nodes[layer_nr]; SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); @@ -2253,7 +2275,7 @@ void TreeSupport::draw_circles() // polygon pointer: depth, direction, farPoint std::map> holePropagationInfos; - for (int layer_nr = m_object->layer_count() - 1; layer_nr > 0; layer_nr--) { + for (int layer_nr = contact_nodes.size() - 1; layer_nr > 0; layer_nr--) { if (print->canceled()) break; //m_object->print()->set_status(66, (boost::format(_u8L("Support: fix holes at layer %d")) % layer_nr).str()); @@ -2327,7 +2349,7 @@ void TreeSupport::draw_circles() // make sure 1) roof1 and object 2) roof1 and roof, won't intersect // Note: We can't replace roof1 directly, as we have recorded its address. // So instead we need to replace its members one by one. - auto tmp1 = diff_ex(roof1, get_collision((layer_nr == 0) ? config.support_object_xy_distance : m_ts_data->m_xy_distance, layer_nr)); + auto tmp1 = diff_ex(roof1, get_collision(0, m_ts_data->layer_heights[layer_nr].obj_layer_nr)); tmp1 = diff_ex(tmp1, ts_layer->roof_areas); if (!tmp1.empty()) { roof1.contour = std::move(tmp1[0].contour); @@ -2344,7 +2366,7 @@ void TreeSupport::draw_circles() #ifdef SUPPORT_TREE_DEBUG_TO_SVG - for (int layer_nr = m_object->layer_count() - 1; layer_nr >= 0; layer_nr--) { + for (int layer_nr = m_object->support_layer_count() - 1; layer_nr >= 0; layer_nr--) { SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); ExPolygons& base_areas = ts_layer->base_areas; ExPolygons& roof_areas = ts_layer->roof_areas; @@ -2377,35 +2399,24 @@ void TreeSupport::drop_nodes() double tan_angle = tan(angle); // when nodes are thick, they can move further. this is the max angle const coordf_t max_move_distance = (angle < M_PI / 2) ? (coordf_t)(tan_angle * layer_height)*wall_count : std::numeric_limits::max(); const double max_move_distance2 = max_move_distance * max_move_distance; - const coordf_t branch_radius = config.tree_support_branch_diameter.value / 2; - const size_t tip_layers = branch_radius / layer_height; //The number of layers to be shrinking the circle to create a tip. This produces a 45 degree angle. - const double diameter_angle_scale_factor = tan(tree_support_branch_diameter_angle * M_PI / 180.);//*layer_height / branch_radius; // Scale factor per layer to produce the desired angle. + const size_t tip_layers = base_radius / layer_height; //The number of layers to be shrinking the circle to create a tip. This produces a 45 degree angle. const coordf_t radius_sample_resolution = m_ts_data->m_radius_sample_resolution; const bool support_on_buildplate_only = config.support_on_build_plate_only.value; const size_t bottom_interface_layers = config.support_interface_bottom_layers.value; const size_t top_interface_layers = config.support_interface_top_layers.value; SupportNode::diameter_angle_scale_factor = diameter_angle_scale_factor; float DO_NOT_MOVER_UNDER_MM = is_slim ? 0 : 5; // do not move contact points under 5mm - const auto nozzle_diameter = m_object->print()->config().nozzle_diameter.get_at(m_object->config().support_interface_filament-1); - const auto support_line_width = config.support_line_width.get_abs_value(nozzle_diameter); - auto get_max_move_dist = [this, &config, branch_radius, tip_layers, diameter_angle_scale_factor, wall_count, support_extrusion_width, support_line_width](const SupportNode *node, int power = 1) { - double move_dist = node->max_move_dist; + auto get_max_move_dist = [this, &config, tan_angle, wall_count, support_extrusion_width](const SupportNode *node, int power = 1) { if (node->max_move_dist == 0) { - node->radius = get_radius(node, branch_radius); - double angle = config.tree_support_branch_angle.value; - if (angle > 30.0 && node->radius > MIN_BRANCH_RADIUS) - angle = (node->radius - MIN_BRANCH_RADIUS) / (MAX_BRANCH_RADIUS - MIN_BRANCH_RADIUS) * (config.tree_support_branch_angle.value - 30.0) + 30.0; - double tan_angle = tan(angle * M_PI / 180); - node->max_move_dist = (angle < 90) ? (coordf_t) (tan_angle * node->height) : std::numeric_limits::max(); - node->max_move_dist = std::min(node->max_move_dist, support_extrusion_width); - move_dist = node->max_move_dist; + node->radius = get_radius(node); + node->max_move_dist = std::min(tan_angle * node->height, support_extrusion_width); } + double move_dist = node->max_move_dist; if (power == 2) move_dist = SQ(move_dist); return move_dist; }; - m_ts_data->layer_heights = plan_layer_heights(); std::vector &layer_heights = m_ts_data->layer_heights; if (layer_heights.empty()) return; @@ -2420,27 +2431,28 @@ void TreeSupport::drop_nodes() std::vector > all_layer_radius(contact_nodes.size()); std::vector> all_layer_node_dist(contact_nodes.size()); for (size_t layer_nr = contact_nodes.size() - 1; layer_nr > 0; layer_nr--) { - if (layer_heights[layer_nr].height < EPSILON) continue; auto& layer_radius = all_layer_radius[layer_nr]; auto& layer_node_dist = all_layer_node_dist[layer_nr]; for (auto* p_node : contact_nodes[layer_nr]) { layer_node_dist.emplace(p_node->dist_mm_to_top); } - size_t layer_nr_next = layer_heights[layer_nr].next_layer_nr; + size_t layer_nr_next = layer_nr - 1; if (layer_nr_next <= contact_nodes.size() - 1 && layer_nr_next > 0) { for (auto node_dist : layer_node_dist) all_layer_node_dist[layer_nr_next].emplace(node_dist + layer_heights[layer_nr].height); } for (auto node_dist : layer_node_dist) { - layer_radius.emplace(calc_branch_radius(branch_radius, node_dist, diameter_angle_scale_factor)); + layer_radius.emplace(calc_radius(node_dist)); } } // parallel pre-compute avoidance tbb::parallel_for(tbb::blocked_range(0, contact_nodes.size() - 1), [&](const tbb::blocked_range &range) { for (size_t layer_nr = range.begin(); layer_nr < range.end(); layer_nr++) { for (auto node_radius : all_layer_radius[layer_nr]) { - m_ts_data->get_avoidance(node_radius, layer_nr); - get_collision(m_ts_data->m_xy_distance, layer_nr); + size_t obj_layer_nr= layer_heights[layer_nr].obj_layer_nr; + m_ts_data->get_avoidance(node_radius, obj_layer_nr); + get_collision(0, obj_layer_nr); + get_collision(node_radius, obj_layer_nr); } } }); @@ -2462,16 +2474,18 @@ void TreeSupport::drop_nodes() if (layer_contact_nodes.empty()) continue; - int layer_nr_next = layer_heights[layer_nr].next_layer_nr; + int layer_nr_next = layer_nr - 1; coordf_t print_z = layer_heights[layer_nr].print_z; coordf_t print_z_next = layer_heights[layer_nr_next].print_z; - coordf_t height_next = layer_heights[layer_nr_next].height; + coordf_t height_next = layer_heights[layer_nr_next].height; + size_t obj_layer_nr = layer_heights[layer_nr].obj_layer_nr; + size_t obj_layer_nr_next = layer_heights[layer_nr_next].obj_layer_nr; std::deque> unsupported_branch_leaves; // All nodes that are leaves on this layer that would result in unsupported ('mid-air') branches. m_object->print()->set_status(60 + int(10 * (1 - float(layer_nr) / contact_nodes.size())), _u8L("Generating support"));// (boost::format(_u8L("Support: propagate branches at layer %d")) % layer_nr).str()); - Polygons layer_contours = std::move(m_ts_data->get_contours_with_holes(layer_nr)); + Polygons layer_contours = std::move(m_ts_data->get_contours_with_holes(obj_layer_nr)); //std::unordered_map& mst_line_x_layer_contour_cache = m_mst_line_x_layer_contour_caches[layer_nr]; tbb::concurrent_unordered_map mst_line_x_layer_contour_cache; auto is_line_cut_by_contour = [&mst_line_x_layer_contour_cache,&layer_contours](Point a, Point b) @@ -2495,7 +2509,7 @@ void TreeSupport::drop_nodes() }; //Group together all nodes for each part. - const ExPolygons& parts = m_ts_data->m_layer_outlines_below[layer_nr]; + const ExPolygons& parts = m_ts_data->m_layer_outlines_below[obj_layer_nr]; std::vector> nodes_per_part(1 + parts.size()); //All nodes that aren't inside a part get grouped together in the 0th part. for (SupportNode* p_node : layer_contact_nodes) { @@ -2563,19 +2577,18 @@ void TreeSupport::drop_nodes() #ifdef SUPPORT_TREE_DEBUG_TO_SVG coordf_t branch_radius_temp = 0; coordf_t max_y = std::numeric_limits::min(); - draw_layer_mst(debug_out_path("mtree_%.2f.svg", print_z), spanning_trees, m_object->get_layer(layer_nr)->lslices); + draw_layer_mst(debug_out_path("mtree_%.2f.svg", print_z), spanning_trees, m_object->get_layer(obj_layer_nr)->lslices_extrudable); #endif for (size_t group_index = 0; group_index < nodes_per_part.size(); group_index++) { auto& nodes_this_part = nodes_per_part[group_index]; const MinimumSpanningTree& mst = spanning_trees[group_index]; //In the first pass, merge all nodes that are close together. - tbb::concurrent_unordered_set to_delete; std::vector> nodes_vec(nodes_this_part.begin(), nodes_this_part.end()); tbb::parallel_for_each(nodes_vec.begin(), nodes_vec.end(), [&](const std::pair& entry) { SupportNode* p_node = entry.second; SupportNode& node = *p_node; - if (to_delete.find(p_node) != to_delete.end()) + if (!p_node->valid) { return; //Delete this node (don't create a new node for it on the next layer). } @@ -2595,17 +2608,17 @@ void TreeSupport::drop_nodes() node.dist_mm_to_top = std::max(node.dist_mm_to_top, neighbour_node->dist_mm_to_top); node.merged_neighbours.push_front(neighbour_node); node.merged_neighbours.insert(node.merged_neighbours.end(), neighbour_node->merged_neighbours.begin(), neighbour_node->merged_neighbours.end()); - to_delete.insert(neighbour_node); + neighbour_node->valid = false; } } - } - else if (neighbours.size() == 1 && vsize2_with_unscale(neighbours[0] - node.position) < max_move_distance2 && mst.adjacent_nodes(neighbours[0]).size() == 1 && + } else if (neighbours.size() == 1 && vsize2_with_unscale(neighbours[0] - node.position) < get_max_move_dist(p_node, 2) && + mst.adjacent_nodes(neighbours[0]).size() == 1 && nodes_this_part[neighbours[0]]->type!=ePolygon) // We have just two nodes left, and they're very close, and the only neighbor is not ePolygon { //Insert a completely new node and let both original nodes fade. Point next_position = (node.position + neighbours[0]) / 2; //Average position of the two nodes. - coordf_t next_radius = calc_branch_radius(branch_radius, node.dist_mm_to_top+height_next, diameter_angle_scale_factor); - auto avoid_layer = get_avoidance(next_radius, layer_nr_next); + coordf_t next_radius = calc_radius(node.dist_mm_to_top+height_next); + auto avoid_layer = get_avoidance(next_radius, obj_layer_nr_next); if (group_index == 0) { //Avoid collisions. @@ -2621,14 +2634,14 @@ void TreeSupport::drop_nodes() node_parent = p_node->parent ? p_node : neighbour; // Make sure the next pass doesn't drop down either of these (since that already happened). node_parent->merged_neighbours.push_front(node_parent == p_node ? neighbour : p_node); - const bool to_buildplate = !is_inside_ex(get_collision(0, layer_nr_next), next_position); - SupportNode* next_node = m_ts_data->create_node(next_position, node_parent->distance_to_top + 1, layer_nr_next, node_parent->support_roof_layers_below - 1, to_buildplate, node_parent, + const bool to_buildplate = !is_inside_ex(get_collision(0, obj_layer_nr_next), next_position); + SupportNode* next_node = m_ts_data->create_node(next_position, node_parent->distance_to_top + 1, obj_layer_nr_next, node_parent->support_roof_layers_below - 1, to_buildplate, node_parent, print_z_next, height_next); get_max_move_dist(next_node); m_ts_data->m_mutex.lock(); contact_nodes[layer_nr_next].push_back(next_node); - to_delete.insert(neighbour); - to_delete.insert(p_node); + neighbour->valid = false; + p_node->valid = false; m_ts_data->m_mutex.unlock(); } else if (neighbours.size() > 1) //Don't merge leaf nodes because we would then incur movement greater than the maximum move distance. @@ -2636,7 +2649,7 @@ void TreeSupport::drop_nodes() //Remove all neighbours that are too close and merge them into this node. for (const Point& neighbour : neighbours) { - if (vsize2_with_unscale(neighbour - node.position) < /*max_move_distance2*/get_max_move_dist(&node,2)) + if (vsize2_with_unscale(neighbour - node.position) < get_max_move_dist(&node,2)) { SupportNode* neighbour_node = nodes_this_part[neighbour]; if (neighbour_node->type == ePolygon) continue; @@ -2644,11 +2657,10 @@ void TreeSupport::drop_nodes() if(node.dist_mm_to_top < neighbour_node->dist_mm_to_top) continue; m_ts_data->m_mutex.lock(); - if (to_delete.find(p_node) == to_delete.end()) + if (p_node->valid) { // since we are processing all nodes in parallel, p_node may have been deleted by another thread. In this case, we should not delete neighbour_node. node.merged_neighbours.push_front(neighbour_node); node.merged_neighbours.insert(node.merged_neighbours.end(), neighbour_node->merged_neighbours.begin(), neighbour_node->merged_neighbours.end()); - to_delete.insert(neighbour_node); neighbour_node->valid = false; } m_ts_data->m_mutex.unlock(); @@ -2663,7 +2675,7 @@ void TreeSupport::drop_nodes() SupportNode* p_node = entry.second; const SupportNode& node = *p_node; - if (to_delete.find(p_node) != to_delete.end()) + if (!p_node->valid) { return; } @@ -2671,7 +2683,7 @@ void TreeSupport::drop_nodes() // polygon node do not merge or move const bool to_buildplate = true; // keep only the part that won't be removed by the next layer - ExPolygons overhangs_next = diff_clipped({ node.overhang }, get_collision_polys(0, layer_nr_next)); + ExPolygons overhangs_next = diff_clipped({ node.overhang }, get_collision(0, obj_layer_nr_next)); // find the biggest overhang if there are many float area_biggest = -1; int index_biggest = -1; @@ -2683,7 +2695,7 @@ void TreeSupport::drop_nodes() } } if (index_biggest >= 0) { - SupportNode* next_node = m_ts_data->create_node(p_node->position, p_node->distance_to_top + 1, layer_nr_next, p_node->support_roof_layers_below - 1, to_buildplate, + SupportNode* next_node = m_ts_data->create_node(p_node->position, p_node->distance_to_top + 1, obj_layer_nr_next, p_node->support_roof_layers_below - 1, to_buildplate, p_node, print_z_next, height_next); next_node->max_move_dist = 0; next_node->overhang = std::move(overhangs_next[index_biggest]); @@ -2696,11 +2708,11 @@ void TreeSupport::drop_nodes() } //If the branch falls completely inside a collision area (the entire branch would be removed by the X/Y offset), delete it. - if (group_index > 0 && is_inside_ex(get_collision(m_ts_data->m_xy_distance, layer_nr), node.position)) + if (group_index > 0 && is_inside_ex(get_collision(0, obj_layer_nr), node.position)) { std::scoped_lock lock(m_ts_data->m_mutex); - const coordf_t branch_radius_node = get_radius(p_node, branch_radius); - Point to_outside = projection_onto(get_collision(m_ts_data->m_xy_distance, layer_nr), node.position); + const coordf_t branch_radius_node = get_radius(p_node); + Point to_outside = projection_onto(get_collision(0, obj_layer_nr), node.position); double dist2_to_outside = vsize2_with_unscale(node.position - to_outside); if (dist2_to_outside >= branch_radius_node * branch_radius_node) //Too far inside. { @@ -2709,7 +2721,6 @@ void TreeSupport::drop_nodes() unsupported_branch_leaves.push_front({ layer_nr, p_node }); } else { - to_delete.insert(p_node); p_node->valid = false; } return; @@ -2717,7 +2728,6 @@ void TreeSupport::drop_nodes() // if the link between parent and current is cut by contours, mark current as bottom contact node if (p_node->parent && intersection_ln({p_node->position, p_node->parent->position}, layer_contours).empty()==false) { - to_delete.insert(p_node); p_node->valid = false; return; } @@ -2731,21 +2741,21 @@ void TreeSupport::drop_nodes() // 2. Only merge node with single neighbor in distance between [max_move_distance, 10mm/layer_height] float dist2_to_first_neighbor = neighbours.empty() ? 0 : vsize2_with_unscale(neighbours[0] - node.position); if (node.print_z > DO_NOT_MOVER_UNDER_MM && - (neighbours.size() > 1 || (neighbours.size() == 1 && dist2_to_first_neighbor >= max_move_distance2))) // Only nodes that aren't about to collapse. + (neighbours.size() > 1 || (neighbours.size() == 1 && dist2_to_first_neighbor >= get_max_move_dist(p_node, 2)))) // Only nodes that aren't about to collapse. { // Move towards the average position of all neighbours. Point sum_direction(0, 0); for (const Point &neighbour : neighbours) { // do not move to the neighbor to be deleted SupportNode *neighbour_node = nodes_this_part[neighbour]; - if (to_delete.find(neighbour_node) != to_delete.end()) continue; + if (!neighbour_node->valid) continue; Point direction = neighbour - node.position; // do not move to neighbor that's too far away (即使以最大速度移动,在接触热床之前都无法汇聚) float dist2_to_neighbor = vsize2_with_unscale(direction); - coordf_t branch_bottom_radius = calc_branch_radius(branch_radius, node.dist_mm_to_top + node.print_z, diameter_angle_scale_factor); - coordf_t neighbour_bottom_radius = calc_branch_radius(branch_radius, neighbour_node->dist_mm_to_top + neighbour_node->print_z, diameter_angle_scale_factor); + coordf_t branch_bottom_radius = calc_radius(node.dist_mm_to_top + node.print_z); + coordf_t neighbour_bottom_radius = calc_radius(neighbour_node->dist_mm_to_top + neighbour_node->print_z); double max_converge_distance = tan_angle * (p_node->print_z - DO_NOT_MOVER_UNDER_MM) + std::max(branch_bottom_radius, neighbour_bottom_radius); if (dist2_to_neighbor > max_converge_distance * max_converge_distance) continue; @@ -2760,10 +2770,10 @@ void TreeSupport::drop_nodes() if (!is_strong) move_to_neighbor_center = sum_direction; else { - if (vsize2_with_unscale(sum_direction) <= max_move_distance2) { + if (vsize2_with_unscale(sum_direction) <= get_max_move_dist(p_node, 2)) { move_to_neighbor_center = sum_direction; } else { - move_to_neighbor_center = normal(sum_direction, scale_(get_max_move_dist(&node))); + move_to_neighbor_center = normal(sum_direction, scale_(get_max_move_dist(p_node))); } } } @@ -2771,11 +2781,11 @@ void TreeSupport::drop_nodes() #ifdef SUPPORT_TREE_DEBUG_TO_SVG if (node.position(1) > max_y) { max_y = node.position(1); - branch_radius_temp = get_radius(p_node, branch_radius); + branch_radius_temp = get_radius(p_node); } #endif - coordf_t next_radius = calc_branch_radius(branch_radius, node.dist_mm_to_top + height_next, diameter_angle_scale_factor); - auto avoidance_next = get_avoidance(next_radius, layer_nr_next); + coordf_t next_radius = calc_radius(node.dist_mm_to_top + height_next); + auto avoidance_next = get_avoidance(next_radius, obj_layer_nr_next); Point to_outside = projection_onto(avoidance_next, node.position); Point direction_to_outer = to_outside - node.position; @@ -2783,13 +2793,13 @@ void TreeSupport::drop_nodes() // don't move if // 1) line of node and to_outside is cut by contour (means supports may intersect with object) // 2) it's impossible to move to build plate - if (is_line_cut_by_contour(node.position, to_outside) || dist2_to_outer > max_move_distance2 * SQ(layer_nr) || + if (is_line_cut_by_contour(node.position, to_outside) || dist2_to_outer > max_move_distance2 * SQ(obj_layer_nr) || !is_inside_ex(avoidance_next, node.position)) { // try move to outside of lower layer instead Point candidate_vertex = node.position; const coordf_t max_move_between_samples = max_move_distance + radius_sample_resolution + EPSILON; // 100 micron extra for rounding errors. // use get_collision instead of get_avoidance here (See STUDIO-4252) - bool is_outside = move_out_expolys(get_collision(next_radius,layer_nr_next), candidate_vertex, max_move_between_samples, max_move_between_samples); + bool is_outside = move_out_expolys(get_collision(next_radius,obj_layer_nr_next), candidate_vertex, max_move_between_samples, max_move_between_samples); if (is_outside) { direction_to_outer = candidate_vertex - node.position; dist2_to_outer = vsize2_with_unscale(direction_to_outer); @@ -2824,10 +2834,15 @@ void TreeSupport::drop_nodes() if (is_outside) { next_layer_vertex = candidate_vertex; } } } - - const bool to_buildplate = !is_inside_ex(get_collision(0, layer_nr_next), next_layer_vertex); - SupportNode * next_node = m_ts_data->create_node(next_layer_vertex, node.distance_to_top + 1, layer_nr_next, node.support_roof_layers_below - 1, to_buildplate, p_node, + auto next_collision = get_collision(0, obj_layer_nr_next); + const bool to_buildplate = !is_inside_ex(next_collision, next_layer_vertex); + SupportNode * next_node = m_ts_data->create_node(next_layer_vertex, node.distance_to_top + 1, obj_layer_nr_next, node.support_roof_layers_below - 1, to_buildplate, p_node, print_z_next, height_next); + // don't increase radius if next node will collide partially with the object (STUDIO-7883) + to_outside = projection_onto(next_collision, next_node->position); + direction_to_outer = to_outside - node.position; + double dist_to_outer = unscale_(direction_to_outer.cast().norm()); + next_node->radius = std::max(node.radius, std::min(next_node->radius, dist_to_outer)); get_max_move_dist(next_node); m_ts_data->m_mutex.lock(); contact_nodes[layer_nr_next].push_back(next_node); @@ -2838,9 +2853,9 @@ void TreeSupport::drop_nodes() #ifdef SUPPORT_TREE_DEBUG_TO_SVG if (contact_nodes[layer_nr].empty() == false) { - draw_contours_and_nodes_to_svg(debug_out_path("contact_points_%.2f.svg", contact_nodes[layer_nr][0]->print_z), get_collision(0,layer_nr_next), - get_avoidance(branch_radius_temp, layer_nr), - m_ts_data->m_layer_outlines[layer_nr], + draw_contours_and_nodes_to_svg(debug_out_path("contact_points_%.2f.svg", contact_nodes[layer_nr][0]->print_z), get_collision(0,obj_layer_nr_next), + get_avoidance(branch_radius_temp, obj_layer_nr), + m_ts_data->m_layer_outlines[obj_layer_nr], contact_nodes[layer_nr], contact_nodes[layer_nr_next], { "overhang","avoid","outline" }, { "blue","red","yellow" }); BOOST_LOG_TRIVIAL(debug) << "drop_nodes layer->next " << layer_nr << "->" << layer_nr_next << ", print_z=" << print_z @@ -2964,98 +2979,128 @@ void TreeSupport::smooth_nodes() std::vector TreeSupport::plan_layer_heights() { - std::vector layer_heights(contact_nodes.size()); - std::map> bounds; // layer_nr:(print_z, height) - - { + std::vector layer_heights; + std::map z_heights; // print_z:height + if (!m_support_params.independent_layer_height) { + layer_heights.resize(m_object->layer_count()); + for (int layer_nr = 0; layer_nr < m_object->layer_count(); layer_nr++) { + z_heights[m_object->get_layer(layer_nr)->print_z] = m_object->get_layer(layer_nr)->height; + layer_heights[layer_nr] = {m_object->get_layer(layer_nr)->print_z, m_object->get_layer(layer_nr)->height, size_t(layer_nr)}; + } + } else { + const coordf_t max_layer_height = m_slicing_params.max_suport_layer_height; + const coordf_t min_layer_height = m_slicing_params.min_layer_height; + std::map bounds; // print_z: height // Keep first layer still - layer_heights[0] = { m_object->get_layer(0)->print_z, m_object->get_layer(0)->height, 0 }; - bounds[0] = { m_object->get_layer(0)->print_z, m_object->get_layer(0)->height}; + bounds[m_object->get_layer(0)->print_z] = {m_object->get_layer(0)->height}; + std::vector obj_layer_zs; + obj_layer_zs.reserve(m_object->layer_count()); + for (const Layer *l : m_object->layers()) obj_layer_zs.emplace_back((float) l->print_z); + z_heights[m_object->get_layer(0)->print_z] = m_object->get_layer(0)->height; // Collect top contact layers for (int layer_nr = 1; layer_nr < contact_nodes.size(); layer_nr++) { if (!contact_nodes[layer_nr].empty()) { coordf_t print_z = contact_nodes[layer_nr].front()->print_z; coordf_t height = contact_nodes[layer_nr].front()->height; - if(height>m_slicing_params.max_suport_layer_height){ - // split this layer into multiple layers if the gap is too big - int num_layers=std::ceil(height/m_slicing_params.max_suport_layer_height); - coordf_t new_height= height/num_layers; - for(auto& node: contact_nodes[layer_nr]) { - node->height = new_height; - node->distance_to_top = -num_layers; - node->support_roof_layers_below+=num_layers-1; - } - - for (int i=0; ifirst; - coordf_t extr2z = it2->second.first - it2->second.second; // bottom_z of upper bound - int extr1_layer_nr = it1->first; //bounds[idx_extreme - 1]; - coordf_t extr1z = it1->second.first;// print_z of lower bound - coordf_t dist = extr2z - extr1z; + auto it2 = std::next(it1); + for (; it2 != bounds.end(); it2++) { + coordf_t z2 = it2->first; + coordf_t h2 = it2->second; + coordf_t z1 = it1->first; + coordf_t h1 = it1->second; + coordf_t dist = z2 - z1; + if (dist < min_layer_height - EPSILON) continue; - layer_heights[extr2_layer_nr].print_z = it2->second.first; - layer_heights[extr2_layer_nr].height = it2->second.second; - BOOST_LOG_TRIVIAL(trace) << "plan_layer_heights0 print_z, height, layer_nr: " << layer_heights[extr2_layer_nr].print_z << " " << layer_heights[extr2_layer_nr].height << " " << extr2_layer_nr; + BOOST_LOG_TRIVIAL(trace) << format("plan_layer_heights0 (%.2f,%.2f)->(%.2f,%.2f): ", z1, h1, z2, h2); // Insert intermediate layers. - size_t n_layers_extra = m_support_params.independent_layer_height ? size_t(ceil(dist / (m_slicing_params.max_suport_layer_height))) : - size_t(ceil(dist / (m_slicing_params.min_layer_height))); - if (n_layers_extra < 1) - continue; - + size_t n_layers_extra = size_t(ceil(dist / max_layer_height)); coordf_t step = dist / coordf_t(n_layers_extra); - coordf_t print_z = extr1z; - for (int layer_nr = extr1_layer_nr + 1; layer_nr < extr2_layer_nr; layer_nr++) { - Layer* layer = m_object->get_layer(layer_nr); - if (!m_support_params.independent_layer_height) step = layer->height; - if (std::abs((print_z+step) - layer->print_z) < step / 2 + EPSILON) { - print_z += step; - layer_heights[layer_nr].print_z = print_z; - layer_heights[layer_nr].height = step; - } - else { - // can't clear curr_layer_nodes, or the model will have empty layers - layer_heights[layer_nr].print_z = 0.0; - layer_heights[layer_nr].height = 0.0; - } + coordf_t print_z = z1 + step; + for (int i = 0; i < n_layers_extra; i++, print_z += step) { + z_heights[print_z] = step; + BOOST_LOG_TRIVIAL(debug) << "plan_layer_heights add entry print_z, height: " << print_z << " " << step; } + it1=it2; } - // fill in next_layer_nr - int i = layer_heights.size() - 1, j = i; - for (; i >= 0; i--) { - if (layer_heights[i].height < EPSILON) { - continue; + // map z_heights to layer_heights + int i = 0; + size_t obj_layer_nr = 0; + layer_heights.resize(z_heights.size()); + for (auto it = z_heights.begin(); it != z_heights.end(); it++, i++) { + coordf_t print_z = it->first; + coordf_t height = it->second; + while (obj_layer_nr < obj_layer_zs.size() && obj_layer_zs[obj_layer_nr] < print_z - height / 2) obj_layer_nr++; + layer_heights[i] = {print_z, height, obj_layer_nr}; + + } + } + + // add support layers according to layer_heights + int support_layer_nr = m_raft_layers; + for (size_t i = 0; i < layer_heights.size(); i++, support_layer_nr++) { + SupportLayer *ts_layer = m_object->add_tree_support_layer(support_layer_nr, layer_heights[i].print_z, layer_heights[i].height, layer_heights[i].print_z); + if (ts_layer->id() > m_raft_layers) { + SupportLayer *lower_layer = m_object->get_support_layer(ts_layer->id() - 1); + if (lower_layer) { + lower_layer->upper_layer = ts_layer; + ts_layer->lower_layer = lower_layer; } - for (j = i - 1; j >= 0; j--) { - if (layer_heights[j].height > EPSILON && layer_heights[j].print_z0.01) // there is a gap more than 0.01mm, increase the top z distance to fill the gap - layer_heights[i].height = layer_heights[i].print_z - layer_heights[j].print_z; - break; - } + } + } + + + // re-distribute contact_nodes to support layers + decltype(contact_nodes) contact_nodes2(support_layer_nr); + for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { + if (contact_nodes[layer_nr].empty()) continue; + SupportNode *node1 = contact_nodes[layer_nr].front(); + auto it = z_heights.lower_bound(node1->print_z - EPSILON); + if (it == z_heights.end()) it = std::prev(it); + int layer_nr2 = std::distance(z_heights.begin(), it); + contact_nodes2[layer_nr2].insert(contact_nodes2[layer_nr2].end(), contact_nodes[layer_nr].begin(), contact_nodes[layer_nr].end()); + } + contact_nodes = contact_nodes2; + + // adjust contact nodes' distance_to_top and support_roof_layers_below according to layer_heights + // In case of very large top z distance, one gap layer is not enough, we need to split it into multiple layers + for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { + if (contact_nodes[layer_nr].empty()) continue; + SupportNode *node1 = contact_nodes[layer_nr].front(); + BOOST_LOG_TRIVIAL(debug) << format("plan_layer_heights node1->layer_nr,printz,height,distance_to_top: %d, %.2f,%.2f, %d", layer_nr, node1->print_z, node1->height, node1->distance_to_top) + << ", object_layer_zs[" << layer_heights[layer_nr].obj_layer_nr << "]=" << m_object->get_layer(layer_heights[layer_nr].obj_layer_nr)->print_z; + coordf_t new_height = layer_heights[layer_nr].height; + if (std::abs(node1->height - new_height) < EPSILON) continue; + coordf_t accum_height = 0; + int num_layers = 0; + for (int i=layer_nr;i>=0;i--){ + if (layer_heights[i].height > EPSILON) { + accum_height += layer_heights[i].height; + num_layers++; + if (accum_height > node1->height - EPSILON) break; } } + BOOST_LOG_TRIVIAL(debug) << format("plan_layer_heights adjust node's height %d %.2f: (%.3f,%d)->(%.3f,%.3f,%d)", layer_nr, node1->print_z, + node1->height, node1->distance_to_top, new_height, accum_height, -num_layers); + for (SupportNode *node : contact_nodes[layer_nr]) { + node->height = new_height; + node->distance_to_top = -num_layers; + node->support_roof_layers_below += num_layers - 1; + } } // log layer_heights for (size_t i = 0; i < layer_heights.size(); i++) { - if (layer_heights[i].height > EPSILON) - BOOST_LOG_TRIVIAL(trace) << "plan_layer_heights print_z, height, lower_layer_nr->layer_nr: " << layer_heights[i].print_z << " " << layer_heights[i].height << " " - << layer_heights[i].next_layer_nr << "->" << i; + //if (layer_heights[i].height > EPSILON) + BOOST_LOG_TRIVIAL(trace) << format("plan_layer_heights[%d] print_z, height: %.2f, %.2f",i, layer_heights[i].print_z, layer_heights[i].height); } return layer_heights; } @@ -3065,8 +3110,10 @@ void TreeSupport::generate_contact_points() const PrintObjectConfig &config = m_object->config(); const coordf_t point_spread = scale_(config.tree_support_branch_distance.value); const coordf_t max_bridge_length = scale_(config.max_bridge_length.value); - coord_t radius = scale_(config.tree_support_branch_diameter.value / 2); - radius = std::max(m_min_radius, radius); + coord_t radius_scaled = scale_(base_radius); + bool on_buildplate_only = m_object_config->support_on_build_plate_only.value; + const bool roof_enabled = config.support_interface_top_layers.value > 0; + const bool force_tip_to_roof = roof_enabled && m_support_params.soluble_interface; //First generate grid points to cover the entire area of the print. BoundingBox bounding_box = m_object->bounding_box(); @@ -3094,15 +3141,15 @@ void TreeSupport::generate_contact_points() } const coordf_t layer_height = config.layer_height.value; - coordf_t z_distance_top = m_slicing_params.gap_support_object; - if (!m_support_params.independent_layer_height) { - z_distance_top = round(z_distance_top / layer_height) * layer_height; - // BBS: add extra distance if thick bridge is enabled - // Note: normal support uses print_z, but tree support uses integer layers, so we need to subtract layer_height - if (!m_slicing_params.soluble_interface && m_object_config->thick_bridges) { - z_distance_top += m_object->layers()[0]->regions()[0]->region().bridging_height_avg(m_object->print()->config()) - layer_height; - } - } + coordf_t z_distance_top = this->top_z_distance; + // if (!m_support_params.independent_layer_height) { + // z_distance_top = round(z_distance_top / layer_height) * layer_height; + // // BBS: add extra distance if thick bridge is enabled + // // Note: normal support uses print_z, but tree support uses integer layers, so we need to subtract layer_height + // if (!m_slicing_params.soluble_interface && m_object_config->thick_bridges) { + // z_distance_top += m_object->layers()[0]->regions()[0]->region().bridging_height_avg(m_object->print()->config()) - layer_height; + //} + // } const int z_distance_top_layers = round_up_divide(scale_(z_distance_top), scale_(layer_height)) + 1; //Support must always be 1 layer below overhang. int gap_layers = z_distance_top == 0 ? 0 : 1; // virtual layer with 0 height will be deleted @@ -3131,39 +3178,36 @@ void TreeSupport::generate_contact_points() if (m_object->print()->canceled()) break; Layer* layer = m_object->get_layer(layer_nr); - auto& curr_nodes = contact_nodes[layer_nr - 1]; + auto& curr_nodes = contact_nodes[layer_nr-1]; if (layer->loverhangs.empty()) continue; std::unordered_set already_inserted; - auto print_z = m_object->get_layer(layer_nr)->print_z; auto bottom_z = m_object->get_layer(layer_nr)->bottom_z(); - auto height = m_object->get_layer(layer_nr)->height; bool added = false; // Did we add a point this way? bool is_sharp_tail = false; - auto insert_point = [&](Point pt, const ExPolygon& overhang_part, bool force_add = false) { - Point hash_pos = pt / ((radius + 1) / 1); + + // take the least restrictive avoidance possible + ExPolygons relevant_forbidden = offset_ex(m_ts_data->m_layer_outlines[layer_nr - 1], scale_(MIN_BRANCH_RADIUS)); + // prevent rounding errors down the line, points placed directly on the line of the forbidden area may not be added otherwise. + relevant_forbidden = offset_ex(union_ex(relevant_forbidden), scaled(0.005), jtMiter, 1.2); + + + auto insert_point = [&](Point pt, const ExPolygon& overhang, double radius, bool force_add = false, bool add_interface=true) { + Point hash_pos = pt / ((radius_scaled + 1) / 1); SupportNode* contact_node = nullptr; if (force_add || !already_inserted.count(hash_pos)) { already_inserted.emplace(hash_pos); bool to_buildplate = true; + size_t roof_layers = add_interface ? support_roof_layers : 0; // add a new node as a virtual node which acts as the invisible gap between support and object // distance_to_top=-1: it's virtual // print_z=object_layer->bottom_z: it directly contacts the bottom // height=z_distance_top: it's height is exactly the gap distance // dist_mm_to_top=0: it directly contacts the bottom - contact_node = m_ts_data->create_node(pt, -gap_layers, layer_nr - 1, support_roof_layers + 1, to_buildplate, SupportNode::NO_PARENT, bottom_z, z_distance_top, 0, - unscale_(radius)); - contact_node->overhang = overhang_part; + contact_node = m_ts_data->create_node(pt, -gap_layers, layer_nr-1, roof_layers + 1, to_buildplate, SupportNode::NO_PARENT, bottom_z, z_distance_top, 0, + radius); + contact_node->overhang = overhang; contact_node->is_sharp_tail = is_sharp_tail; - if (is_sharp_tail) { - int ind = overhang_part.contour.closest_point_index(pt); - int nSize = overhang_part.contour.points.size(); - int ind_prev = (ind - 1 + nSize) % nSize; - int ind_next = (ind + 1) % nSize; - auto n1 = (overhang_part.contour[ind] - overhang_part.contour[ind_prev]).cast().normalized(); - auto n2 = (overhang_part.contour[ind] - overhang_part.contour[ind_next]).cast().normalized(); - contact_node->skin_direction = scaled((n1 + n2).normalized()); - } curr_nodes.emplace_back(contact_node); added = true; }; @@ -3173,69 +3217,73 @@ void TreeSupport::generate_contact_points() for (const auto& overhang_part : layer->loverhangs) { const auto& overhang_type = this->overhang_types[&overhang_part]; is_sharp_tail = overhang_type == OverhangType::SharpTail; - BoundingBox overhang_bounds = get_extents(overhang_part); + ExPolygons overhangs_regular; if (m_support_params.support_style == smsTreeHybrid && overhang_part.area() > m_support_params.thresh_big_overhang && !is_sharp_tail) { - if (!overlaps({ overhang_part }, m_ts_data->m_layer_outlines_below[layer_nr - 1])) { - Point candidate = overhang_bounds.center(); - SupportNode* contact_node = insert_point(candidate, overhang_part, true); + overhangs_regular = offset_ex(intersection_ex({overhang_part}, m_ts_data->m_layer_outlines_below[layer_nr - 1]), radius_scaled); + overhangs_regular = diff_ex(overhangs_regular, relevant_forbidden); + ExPolygons overhangs_normal = diff_ex({overhang_part}, overhangs_regular); + for(auto& overhang:overhangs_normal) { + BoundingBox overhang_bounds = get_extents(overhang); + double radius = unscale_(overhang_bounds.radius()); + Point candidate = overhang_bounds.center(); + SupportNode *contact_node = insert_point(candidate, overhang, radius, true, true); contact_node->type = ePolygon; - contact_node->radius = unscale_(overhang_bounds.radius()); curr_nodes.emplace_back(contact_node); - continue; } + } else { + overhangs_regular = ExPolygons{overhang_part}; } - // add supports at corners for both auto and manual overhangs, github #2008 - { - auto& points = overhang_part.contour.points; + for (auto &overhang : overhangs_regular) { + bool add_interface = (force_tip_to_roof || area(overhang) > minimum_roof_area) && !is_sharp_tail; + BoundingBox overhang_bounds = get_extents(overhang); + double radius = std::clamp(unscale_(overhang_bounds.radius()), MIN_BRANCH_RADIUS, base_radius); + // add supports at corners for both auto and manual overhangs, github #2008 + auto &points = overhang.contour.points; int nSize = points.size(); for (int i = 0; i < nSize; i++) { auto pt = points[i]; auto v1 = (pt - points[(i - 1 + nSize) % nSize]).cast().normalized(); auto v2 = (pt - points[(i + 1) % nSize]).cast().normalized(); if (v1.dot(v2) > -0.7) { // angle smaller than 135 degrees - SupportNode* contact_node = insert_point(pt, overhang_part); + SupportNode *contact_node = insert_point(pt, overhang, radius, false, add_interface); if (contact_node) { contact_node->is_corner = true; } } } - } // add supports along contours - libnest2d::placers::EdgeCache edge_cache(overhang_part); + libnest2d::placers::EdgeCache edge_cache(overhang); for (size_t i = 0; i < edge_cache.holeCount() + 1; i++) { - double step = point_spread / (i == 0 ? edge_cache.circumference() : edge_cache.circumference(i - 1)); + double step = point_spread / (i == 0 ? edge_cache.circumference() : edge_cache.circumference(i - 1)); double distance = 0; while (distance < 1) { - auto pt = i == 0 ? edge_cache.coords(distance) : edge_cache.coords(i - 1, distance); - SupportNode* contact_node = insert_point(pt, overhang_part); + auto pt = i == 0 ? edge_cache.coords(distance) : edge_cache.coords(i - 1, distance); + SupportNode *contact_node = insert_point(pt, overhang,radius, false, add_interface); distance += step; } } // don't add inner supports for sharp tails - if (is_sharp_tail) - continue; + if (is_sharp_tail) continue; // add inner supports - overhang_bounds.inflated(-radius); - ExPolygons overhang_inner = offset_ex(overhang_part, -radius); + overhang_bounds.inflated(-radius_scaled); + ExPolygons overhang_inner = offset_ex(overhang, -radius_scaled); for (Point candidate : grid_points) { if (overhang_bounds.contains(candidate)) { // BBS: move_inside_expoly shouldn't be used if candidate is already inside, as it moves point to boundary and the inside is not well supported! - bool is_inside = is_inside_ex(overhang_inner, candidate); - if (is_inside) { - SupportNode* contact_node = insert_point(candidate, overhang_part); - } + bool is_inside = is_inside_ex(overhang_inner, candidate); + if (is_inside) { SupportNode *contact_node = insert_point(candidate, overhang,radius, false, add_interface); } } } - + } } if (!curr_nodes.empty()) nonempty_layers++; for (auto node : curr_nodes) { all_nodes.emplace_back(node->position(0), node->position(1), scale_(node->print_z)); } #ifdef SUPPORT_TREE_DEBUG_TO_SVG - draw_contours_and_nodes_to_svg(debug_out_path("init_contact_points_%.2f.svg", print_z), layer->loverhangs,layer->lslices, m_ts_data->m_layer_outlines_below[layer_nr], + draw_contours_and_nodes_to_svg(debug_out_path("init_contact_points_%.2f.svg", bottom_z), layer->loverhangs,layer->lslices_extrudable, m_ts_data->m_layer_outlines_below[layer_nr], contact_nodes[layer_nr], contact_nodes[layer_nr - 1], { "overhang","lslices","outlines_below"}); #endif }} @@ -3276,13 +3324,16 @@ void TreeSupport::insert_dropped_node(std::vector& nodes_layer, Su conflicting_node->support_roof_layers_below = std::max(conflicting_node->support_roof_layers_below, p_node->support_roof_layers_below); } -TreeSupportData::TreeSupportData(const PrintObject &object, coordf_t xy_distance, coordf_t max_move, coordf_t radius_sample_resolution) - : m_xy_distance(xy_distance), m_max_move(max_move), m_radius_sample_resolution(radius_sample_resolution) +TreeSupportData::TreeSupportData(const PrintObject &object, coordf_t xy_distance, coordf_t radius_sample_resolution) + : m_xy_distance(xy_distance), m_radius_sample_resolution(radius_sample_resolution) { + branch_scale_factor = tan(object.config().tree_support_branch_angle.value * M_PI / 180.); clear_nodes(); + m_max_move_distances.resize(object.layers().size(), 0); for (std::size_t layer_nr = 0; layer_nr < object.layers().size(); ++layer_nr) { const Layer* layer = object.get_layer(layer_nr); + m_max_move_distances[layer_nr] = layer->height * branch_scale_factor; m_layer_outlines.push_back(ExPolygons()); ExPolygons& outline = m_layer_outlines.back(); for (const ExPolygon& poly : layer->lslices) { @@ -3386,7 +3437,7 @@ const ExPolygons& TreeSupportData::calculate_collision(const RadiusLayerPair& ke { assert(key.layer_nr < m_layer_outlines.size()); - ExPolygons collision_areas = offset_ex(m_layer_outlines[key.layer_nr], scale_(key.radius)); + ExPolygons collision_areas = offset_ex(m_layer_outlines[key.layer_nr], scale_(key.radius+m_xy_distance)); collision_areas = expolygons_simplify(collision_areas, scale_(m_radius_sample_resolution)); const auto ret = m_collision_cache.insert({ key, std::move(collision_areas) }); return ret.first->second; @@ -3394,45 +3445,32 @@ const ExPolygons& TreeSupportData::calculate_collision(const RadiusLayerPair& ke const ExPolygons& TreeSupportData::calculate_avoidance(const RadiusLayerPair& key) const { - const auto& radius = key.radius; - const auto& layer_nr = key.layer_nr; - BOOST_LOG_TRIVIAL(debug) << "calculate_avoidance on (radius,layer)= (" << radius << "," << layer_nr<<"), recursion="< 0; layers_below++) { layer_nr_next = layer_heights[layer_nr_next].next_layer_nr; } - // Check if we would exceed the recursion limit by trying to process this layer - if (layers_below >= max_recursion_depth && m_avoidance_cache.find({radius, layer_nr_next}) == m_avoidance_cache.end()) { - // Force the calculation of the layer `max_recursion_depth` below our current one, ignoring the result. - get_avoidance(radius, layer_nr_next, key.recursions + 1); - } - - layer_nr_next = layer_heights[layer_nr].next_layer_nr; - ExPolygons avoidance_areas = offset_ex(get_avoidance(radius, layer_nr_next, key.recursions+1), scale_(-m_max_move)); - const ExPolygons &collision = get_collision(radius, layer_nr); - avoidance_areas.insert(avoidance_areas.end(), collision.begin(), collision.end()); - avoidance_areas = std::move(union_ex(avoidance_areas)); - auto ret = m_avoidance_cache.insert({ key, std::move(avoidance_areas) }); - //assert(ret.second); - return ret.first->second; - } else { - BOOST_LOG_TRIVIAL(debug) << "calculate_avoidance exceeds max_recursion_depth*2 on radius=" << radius << ", layer=" << layer_nr << ", recursion=" << key.recursions; - ExPolygons avoidance_areas = get_collision(radius, layer_nr);// std::move(offset_ex(m_layer_outlines_below[layer_nr], scale_(m_xy_distance + radius))); - auto ret = m_avoidance_cache.insert({ key, std::move(avoidance_areas) }); - assert(ret.second); - return ret.first->second; + const auto &radius = key.radius; + const auto &layer_nr = key.layer_nr; + if (layer_nr == 0) { + m_avoidance_cache[key] = get_collision(radius, 0); + return m_avoidance_cache[key]; } + + // Avoidance for a given layer depends on all layers beneath it so could have very deep recursion depths if + // called at high layer heights. We can limit the reqursion depth to N by checking if the layer N + // below the current one exists and if not, forcing the calculation of that layer. This may cause another recursion + // if the layer at 2N below the current one but we won't exceed our limit unless there are N*N uncalculated layers + // below our current one. + constexpr auto max_recursion_depth = 100; + // Check if we would exceed the recursion limit by trying to process this layer + if (layer_nr >= max_recursion_depth && m_avoidance_cache.find({radius, layer_nr - max_recursion_depth}) == m_avoidance_cache.end()) { + // Force the calculation of the layer `max_recursion_depth` below our current one, ignoring the result. + get_avoidance(radius, layer_nr - max_recursion_depth); + } + + ExPolygons avoidance_areas = offset_ex(get_avoidance(radius, layer_nr - 1), scale_(-m_max_move_distances[layer_nr-1])); + const ExPolygons &collision = get_collision(radius, layer_nr); + avoidance_areas.insert(avoidance_areas.end(), collision.begin(), collision.end()); + avoidance_areas = std::move(union_ex(avoidance_areas)); + auto ret = m_avoidance_cache.insert({key, std::move(avoidance_areas)}); + //assert(ret.second); + return ret.first->second; } } //namespace Slic3r diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index f94fd57020..ff5b4f201a 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -28,9 +28,9 @@ struct LayerHeightData { coordf_t print_z = 0; coordf_t height = 0; - size_t next_layer_nr = 0; + size_t obj_layer_nr = 0; LayerHeightData() = default; - LayerHeightData(coordf_t z, coordf_t h, size_t next_layer) : print_z(z), height(h), next_layer_nr(next_layer) {} + LayerHeightData(coordf_t z, coordf_t h, size_t obj_layer) : print_z(z), height(h), obj_layer_nr(obj_layer) {} coordf_t bottom_z() { return print_z - height; } @@ -202,7 +202,7 @@ public: * \param radius_sample_resolution Sample size used to round requested node radii. * \param collision_resolution */ - TreeSupportData(const PrintObject& object, coordf_t max_move, coordf_t radius_sample_resolution, coordf_t collision_resolution); + TreeSupportData(const PrintObject& object, coordf_t radius_sample_resolution, coordf_t collision_resolution); ~TreeSupportData() { clear_nodes(); } @@ -305,11 +305,7 @@ public: */ coordf_t m_xy_distance; - /*! - * \brief The maximum distance that the centrepoint of a tree branch may - * move in consequtive layers - */ - coordf_t m_max_move; + double branch_scale_factor = 1.0; // tan(45 degrees) /*! * \brief Sample resolution for radius values. @@ -328,6 +324,8 @@ public: // union contours of all layers below std::vector m_layer_outlines_below; + std::vector m_max_move_distances; + /*! * \brief Caches for the collision, avoidance and internal model polygons * at given radius and layer indices. @@ -366,6 +364,10 @@ public: */ TreeSupport(PrintObject& object, const SlicingParameters &slicing_params); + void move_bounds_to_contact_nodes(std::vector &move_bounds, + PrintObject &print_object, + const TreeSupport3D::TreeSupportSettings &config); + /*! * \brief Create the areas that need support. * @@ -377,6 +379,19 @@ public: void detect_overhangs(bool check_support_necessity = false); + SupportNode* create_node(const Point position, + const int distance_to_top, + const int obj_layer_nr, + const int support_roof_layers_below, + const bool to_buildplate, + SupportNode* parent, + coordf_t print_z_, + coordf_t height_, + coordf_t dist_mm_to_top_ = 0, + coordf_t radius_ = 0) + { + return m_ts_data->create_node(position, distance_to_top, obj_layer_nr, support_roof_layers_below, to_buildplate, parent, print_z_, height_, dist_mm_to_top_, radius_); + } int avg_node_per_layer = 0; float nodes_angle = 0; @@ -419,12 +434,17 @@ private: std::vector< std::unordered_map> m_mst_line_x_layer_contour_caches; float DO_NOT_MOVER_UNDER_MM = 0.0; - coordf_t MAX_BRANCH_RADIUS = 10.0; - coordf_t MIN_BRANCH_RADIUS = 0.5; - coordf_t MAX_BRANCH_RADIUS_FIRST_LAYER = 12.0; - coordf_t MIN_BRANCH_RADIUS_FIRST_LAYER = 2.0; - float tree_support_branch_diameter_angle = 5.0; - coord_t m_min_radius = scale_(1); // in mm + coordf_t base_radius = 0.0; + const coordf_t MAX_BRANCH_RADIUS = 10.0; + const coordf_t MIN_BRANCH_RADIUS = 0.4; + const coordf_t MAX_BRANCH_RADIUS_FIRST_LAYER = 12.0; + const coordf_t MIN_BRANCH_RADIUS_FIRST_LAYER = 2.0; + const double tree_support_branch_diameter_angle = 5.0; + const double diameter_angle_scale_factor = tan(tree_support_branch_diameter_angle*M_PI/180.0); + // minimum roof area (1 mm^2), area smaller than this value will not have interface + const double minimum_roof_area{SQ(scaled(1.))}; + float top_z_distance = 0.0; + bool is_strong = false; bool is_slim = false; bool with_infill = false; @@ -492,8 +512,10 @@ private: coordf_t calc_branch_radius(coordf_t base_radius, size_t layers_to_top, size_t tip_layers, double diameter_angle_scale_factor); // get unscaled radius(mm) of node based on the distance mm to top coordf_t calc_branch_radius(coordf_t base_radius, coordf_t mm_to_top, double diameter_angle_scale_factor, bool use_min_distance=true); - coordf_t get_radius(const SupportNode* node, coordf_t base_radius); + coordf_t calc_radius(coordf_t mm_to_top); + coordf_t get_radius(const SupportNode* node); ExPolygons get_avoidance(coordf_t radius, size_t obj_layer_nr); + // layer's expolygon expanded by radius+m_xy_distance ExPolygons get_collision(coordf_t radius, size_t layer_nr); // get Polygons instead of ExPolygons Polygons get_collision_polys(coordf_t radius, size_t layer_nr); diff --git a/src/libslic3r/Support/TreeSupport3D.cpp b/src/libslic3r/Support/TreeSupport3D.cpp index 22505d4f92..f5b588bf72 100644 --- a/src/libslic3r/Support/TreeSupport3D.cpp +++ b/src/libslic3r/Support/TreeSupport3D.cpp @@ -68,28 +68,28 @@ using namespace std::literals; static inline void validate_range(const Point &pt) { static constexpr const int32_t hi = 65536 * 16384; - if (pt.x() > hi || pt.y() > hi || -pt.x() > hi || -pt.y() > hi) - throw ClipperLib::clipperException("Coordinate outside allowed range"); + if (pt.x() > hi || pt.y() > hi || -pt.x() > hi || -pt.y() > hi) + throw ClipperLib::clipperException("Coordinate outside allowed range"); } -static inline void validate_range(const Points &points) +static inline void validate_range(const Points &points) { for (const Point &p : points) validate_range(p); } -static inline void validate_range(const MultiPoint &mp) +static inline void validate_range(const MultiPoint &mp) { validate_range(mp.points); } -static inline void validate_range(const Polygons &polygons) +static inline void validate_range(const Polygons &polygons) { for (const Polygon &p : polygons) validate_range(p); } -static inline void validate_range(const Polylines &polylines) +static inline void validate_range(const Polylines &polylines) { for (const Polyline &p : polylines) validate_range(p); @@ -136,7 +136,7 @@ static std::vector>> group_me size_t largest_printed_mesh_idx = 0; - // Group all meshes that can be processed together. NOTE this is different from mesh-groups! Only one setting object is needed per group, + // Group all meshes that can be processed together. NOTE this is different from mesh-groups! Only one setting object is needed per group, // as different settings in the same group may only occur in the tip, which uses the original settings objects from the meshes. for (size_t object_id : print_object_ids) { const PrintObject &print_object = *print.get_object(object_id); @@ -228,7 +228,7 @@ static std::vector>> group_me size_t num_overhang_layers = support_auto ? num_object_layers : std::min(num_object_layers, std::max(size_t(support_enforce_layers), enforcers_layers.size())); tbb::parallel_for(tbb::blocked_range(1, num_overhang_layers), - [&print_object, &config, &print_config, &enforcers_layers, &blockers_layers, + [&print_object, &config, &print_config, &enforcers_layers, &blockers_layers, support_auto, support_enforce_layers, support_threshold_auto, tan_threshold, enforcer_overhang_offset, num_raft_layers, radius_sample_resolution, &throw_on_cancel, &out] (const tbb::blocked_range &range) { for (LayerIndex layer_id = range.begin(); layer_id < range.end(); ++ layer_id) { @@ -263,7 +263,7 @@ static std::vector>> group_me overhangs = diff(overhangs, offset_ex(union_(blockers_layers[layer_id]), scale_(radius_sample_resolution)), ApplySafetyOffset::Yes); if (config.bridge_no_support) { for (const LayerRegion *layerm : current_layer.regions()) - remove_bridges_from_contacts(print_config, lower_layer, *layerm, + remove_bridges_from_contacts(print_config, lower_layer, *layerm, float(layerm->flow(frExternalPerimeter).scaled_width()), overhangs); } } @@ -284,7 +284,7 @@ static std::vector>> group_me enforced_overhangs = diff(offset(union_ex(enforced_overhangs), enforcer_overhang_offset), lower_layer.lslices); #ifdef TREESUPPORT_DEBUG_SVG -// if (! intersecting_edges(enforced_overhangs).empty()) +// if (! intersecting_edges(enforced_overhangs).empty()) { static int irun = 0; SVG::export_expolygons(debug_out_path("treesupport-self-intersections-%d.svg", ++irun), @@ -297,7 +297,7 @@ static std::vector>> group_me overhangs = overhangs.empty() ? std::move(enforced_overhangs) : union_(overhangs, enforced_overhangs); //check_self_intersections(overhangs, "generate_overhangs - enforcers"); } - } + } out[layer_id + num_raft_layers] = std::move(overhangs); throw_on_cancel(); } @@ -460,7 +460,7 @@ static std::vector>> group_me return true; if (config.support_rests_on_model && (p.second != LineStatus::TO_BP && p.second != LineStatus::TO_BP_SAFE)) return ! contains( - p.second == LineStatus::TO_MODEL_GRACIOUS || p.second == LineStatus::TO_MODEL_GRACIOUS_SAFE ? + p.second == LineStatus::TO_MODEL_GRACIOUS || p.second == LineStatus::TO_MODEL_GRACIOUS_SAFE ? volumes.getAvoidance(config.getRadius(0), current_layer - 1, p.second == LineStatus::TO_MODEL_GRACIOUS_SAFE ? AvoidanceType::FastSafe : AvoidanceType::Fast, true, min_xy_dist) : volumes.getCollision(config.getRadius(0), current_layer - 1, min_xy_dist), p.first); @@ -532,7 +532,7 @@ static std::optional> polyline_sample_next_point_at_dis // Squared distance of "start_pt" from the ray (p0, p1). double l2_from_line = xf.squaredNorm(); // Squared distance of an intersection point of a circle with center at the foot point. - if (double l2_intersection = dist2 - l2_from_line; + if (double l2_intersection = dist2 - l2_from_line; l2_intersection > - SCALED_EPSILON) { // The ray (p0, p1) touches or intersects a circle centered at "start_pt" with radius "dist". // Distance of the circle intersection point from the foot point. @@ -627,7 +627,7 @@ static std::optional> polyline_sample_next_point_at_dis } else { if (current_point == next_point->first) { // In case a fixpoint is encountered, better aggressively overcompensate so the code does not become stuck here... - BOOST_LOG_TRIVIAL(warning) << "Tree Support: Encountered a fixpoint in polyline_sample_next_point_at_distance. This is expected to happen if the distance (currently " << next_distance << + BOOST_LOG_TRIVIAL(warning) << "Tree Support: Encountered a fixpoint in polyline_sample_next_point_at_distance. This is expected to happen if the distance (currently " << next_distance << ") is smaller than 100"; tree_supports_show_error("Encountered issue while placing tips. Some tips may be missing."sv, true); if (next_distance > 2 * current_distance) @@ -693,9 +693,9 @@ static std::optional> polyline_sample_next_point_at_dis int divisor = static_cast(angles.size()); int index = ((layer_idx % divisor) + divisor) % divisor; const AngleRadians fill_angle = angles[index]; - Infill roof_computation(pattern, true /* zig_zaggify_infill */, connect_polygons, polygon, - roof ? config.support_roof_line_width : config.support_line_width, support_infill_distance, support_roof_overlap, infill_multiplier, - fill_angle, z, support_shift, config.resolution, wall_line_count, infill_origin, + Infill roof_computation(pattern, true /* zig_zaggify_infill */, connect_polygons, polygon, + roof ? config.support_roof_line_width : config.support_line_width, support_infill_distance, support_roof_overlap, infill_multiplier, + fill_angle, z, support_shift, config.resolution, wall_line_count, infill_origin, perimeter_gaps, connected_zigzags, use_endpieces, false /* skip_some_zags */, zag_skip_count, pocket_size); Polygons polygons; Polygons lines; @@ -712,7 +712,7 @@ static std::optional> polyline_sample_next_point_at_dis filler->layer_id = layer_idx; filler->spacing = flow.spacing(); - filler->angle = roof ? + filler->angle = roof ? //fixme support_layer.interface_id() instead of layer_idx (support_params.interface_angle + (layer_idx & 1) ? float(- M_PI / 4.) : float(+ M_PI / 4.)) : support_params.base_angle; @@ -783,7 +783,7 @@ static std::optional> polyline_sample_next_point_at_dis result = union_(offset(to_polylines(first), scaled(0.002), jtMiter, 1.2), offset(to_polylines(second), scaled(0.002), jtMiter, 1.2)); } } - + return result; } @@ -800,7 +800,7 @@ static std::optional> polyline_sample_next_point_at_dis { bool do_final_difference = last_step_offset_without_check == 0; Polygons ret = safe_union(me); // ensure sane input - + // Trim the collision polygons with the region of interest for diff() efficiency. Polygons collision_trimmed_buffer; auto collision_trimmed = [&collision_trimmed_buffer, &collision, &ret, distance]() -> const Polygons& { @@ -882,7 +882,7 @@ public: // called by sample_overhang_area() void add_points_along_lines( // Insert points (tree tips or top contact interfaces) along these lines. - LineInformations lines, + LineInformations lines, // Start at this layer. LayerIndex insert_layer_idx, // Insert this number of interface layers. @@ -922,7 +922,7 @@ public: // add all points that would not be valid for (const LineInformation &line : points) for (const std::pair &point_data : line) - add_point_as_influence_area(point_data, this_layer_idx, + add_point_as_influence_area(point_data, this_layer_idx, // don't move until roof_tip_layers - dtt_roof_tip, // supports roof @@ -1009,7 +1009,7 @@ private: // Temps coord_t m_base_radius; Polygon m_base_circle; - + // Mutexes, guards std::mutex m_mutex_movebounds; std::vector> m_already_inserted; @@ -1093,10 +1093,10 @@ void finalize_raft_contact( // Produce // 1) Maximum num_support_roof_layers roof (top interface & contact) layers. // 2) Tree tips supporting either the roof layers or the object itself. -// num_support_roof_layers should always be respected: +// num_support_roof_layers should always be respected: // If num_support_roof_layers contact layers could not be produced, then the tree tip // is augmented with SupportElementState::missing_roof_layers -// and the top "missing_roof_layers" of such particular tree tips are supposed to be coverted to +// and the top "missing_roof_layers" of such particular tree tips are supposed to be coverted to // roofs aka interface layers by the tool path generator. void sample_overhang_area( // Area to support @@ -1108,18 +1108,18 @@ void sample_overhang_area( const size_t layer_idx, // Maximum number of roof (contact, interface) layers between the overhang and tree tips to be generated. const size_t num_support_roof_layers, - // + // const coord_t connect_length, // Configuration classes - const TreeSupportMeshGroupSettings &mesh_group_settings, + const TreeSupportMeshGroupSettings& mesh_group_settings, // Configuration & Output - RichInterfacePlacer &interface_placer) + RichInterfacePlacer& interface_placer) { - // Assumption is that roof will support roof further up to avoid a lot of unnecessary branches. Each layer down it is checked whether the roof area - // is still large enough to be a roof and aborted as soon as it is not. This part was already reworked a few times, and there could be an argument + // Assumption is that roof will support roof further up to avoid a lot of unnecessary branches. Each layer down it is checked whether the roof area + // is still large enough to be a roof and aborted as soon as it is not. This part was already reworked a few times, and there could be an argument // made to change it again if there are actual issues encountered regarding supporting roofs. - // Main problem is that some patterns change each layer, so just calculating points and checking if they are still valid an layer below is not useful, - // as the pattern may be different one layer below. Same with calculating which points are now no longer being generated as result from + // Main problem is that some patterns change each layer, so just calculating points and checking if they are still valid an layer below is not useful, + // as the pattern may be different one layer below. Same with calculating which points are now no longer being generated as result from // a decreasing roof, as there is no guarantee that a line will be above these points. Implementing a separate roof support behavior // for each pattern harms maintainability as it very well could be >100 LOC auto generate_roof_lines = [&interface_placer, &mesh_group_settings](const Polygons &area, LayerIndex layer_idx) -> Polylines { @@ -1186,10 +1186,10 @@ void sample_overhang_area( if (overhang_lines.empty()) { // support_line_width to form a line here as otherwise most will be unsupported. Technically this violates branch distance, but not only is this the only reasonable choice, - // but it ensures consistant behaviour as some infill patterns generate each line segment as its own polyline part causing a similar line forming behaviour. + // but it ensures consistant behaviour as some infill patterns generate each line segment as its own polyline part causing a similar line forming behaviour. // This is not doen when a roof is above as the roof will support the model and the trees only need to support the roof - bool supports_roof = dtt_roof > 0; - bool continuous_tips = ! supports_roof && large_horizontal_roof; + bool supports_roof = dtt_roof > 0; + bool continuous_tips = !supports_roof && large_horizontal_roof; Polylines polylines = ensure_maximum_distance_polyline( generate_support_infill_lines(overhang_area, interface_placer.support_parameters, supports_roof, layer_idx - layer_generation_dtt, supports_roof ? mesh_group_settings.support_roof_line_distance : mesh_group_settings.support_tree_branch_distance), @@ -1200,10 +1200,10 @@ void sample_overhang_area( const size_t min_support_points = std::max(coord_t(1), std::min(coord_t(3), coord_t(total_length(overhang_area) / connect_length))); if (point_count <= min_support_points) { // add the outer wall (of the overhang) to ensure it is correct supported instead. Try placing the support points in a way that they fully support the outer wall, instead of just the with half of the the support line width. - // I assume that even small overhangs are over one line width wide, so lets try to place the support points in a way that the full support area generated from them - // will support the overhang (if this is not done it may only be half). This WILL NOT be the case when supporting an angle of about < 60� so there is a fallback, + // I assume that even small overhangs are over one line width wide, so lets try to place the support points in a way that the full support area generated from them + // will support the overhang (if this is not done it may only be half). This WILL NOT be the case when supporting an angle of about < 60 degrees so there is a fallback, // as some support is better than none. - Polygons reduced_overhang_area = offset(union_ex(overhang_area), - interface_placer.config.support_line_width / 2.2, jtMiter, 1.2); + Polygons reduced_overhang_area = offset(union_ex(overhang_area), -interface_placer.config.support_line_width / 2.2, jtMiter, 1.2); polylines = ensure_maximum_distance_polyline( to_polylines( ! reduced_overhang_area.empty() && @@ -1269,11 +1269,11 @@ static void generate_initial_areas( const coord_t connect_length = (config.support_line_width * 100. / mesh_group_settings.support_tree_top_rate) + std::max(2. * config.min_radius - 1.0 * config.support_line_width, 0.0); // As r*r=x*x+y*y (circle equation): If a circle with center at (0,0) the top most point is at (0,r) as in y=r. - // This calculates how far one has to move on the x-axis so that y=r-support_line_width/2. + // This calculates how far one has to move on the x-axis so that y=r-support_line_width/2. // In other words how far does one need to move on the x-axis to be support_line_width/2 away from the circle line. // As a circle is round this length is identical for every axis as long as the 90 degrees angle between both remains. - const coord_t circle_length_to_half_linewidth_change = config.min_radius < config.support_line_width ? - config.min_radius / 2 : + const coord_t circle_length_to_half_linewidth_change = config.min_radius < config.support_line_width ? + config.min_radius / 2 : scale_(sqrt(sqr(unscale(config.min_radius)) - sqr(unscale(config.min_radius - config.support_line_width / 2)))); // Extra support offset to compensate for larger tip radiis. Also outset a bit more when z overwrites xy, because supporting something with a part of a support line is better than not supporting it at all. //FIXME Vojtech: This is not sufficient for support enforcers to work. @@ -1286,14 +1286,16 @@ static void generate_initial_areas( const size_t num_support_roof_layers = mesh_group_settings.support_roof_layers; const bool roof_enabled = num_support_roof_layers > 0; const bool force_tip_to_roof = roof_enabled && (interface_placer.support_parameters.soluble_interface || sqr(config.min_radius) * M_PI > mesh_group_settings.minimum_roof_area); - // cap for how much layer below the overhang a new support point may be added, as other than with regular support every new inserted point - // may cause extra material and time cost. Could also be an user setting or differently calculated. Idea is that if an overhang - // does not turn valid in double the amount of layers a slope of support angle would take to travel xy_distance, nothing reasonable will come from it. + // cap for how much layer below the overhang a new support point may be added, as other than with regular support every new inserted point + // may cause extra material and time cost. Could also be an user setting or differently calculated. Idea is that if an overhang + // does not turn valid in double the amount of layers a slope of support angle would take to travel xy_distance, nothing reasonable will come from it. // The 2*z_distance_delta is only a catch for when the support angle is very high. // Used only if not min_xy_dist. coord_t max_overhang_insert_lag = 0; if (config.z_distance_top_layers > 0) { max_overhang_insert_lag = 2 * config.z_distance_top_layers; + + //FIXME if (mesh_group_settings.support_angle > EPSILON && mesh_group_settings.support_angle < 0.5 * M_PI - EPSILON) { //FIXME mesh_group_settings.support_angle does not apply to enforcers and also it does not apply to automatic support angle (by half the external perimeter width). //used by max_overhang_insert_lag, only if not min_xy_dist. @@ -1339,12 +1341,12 @@ static void generate_initial_areas( relevant_forbidden = offset(union_ex(relevant_forbidden_raw), scaled(0.005), jtMiter, 1.2); } - // every overhang has saved if a roof should be generated for it. This can NOT be done in the for loop as an area may NOT have a roof - // even if it is larger than the minimum_roof_area when it is only larger because of the support horizontal expansion and + // every overhang has saved if a roof should be generated for it. This can NOT be done in the for loop as an area may NOT have a roof + // even if it is larger than the minimum_roof_area when it is only larger because of the support horizontal expansion and // it would not have a roof if the overhang is offset by support roof horizontal expansion instead. (At least this is the current behavior of the regular support) Polygons overhang_regular; { - // When support_offset = 0 safe_offset_inc will only be the difference between overhang_raw and relevant_forbidden, that has to be calculated anyway. + // When support_offset = 0 safe_offset_inc will only be the difference between overhang_raw and relevant_forbidden, that has to be calculated anyway. overhang_regular = safe_offset_inc(overhang_raw, mesh_group_settings.support_offset, relevant_forbidden, config.min_radius * 1.75 + config.xy_min_distance, 0, 1); //check_self_intersections(overhang_regular, "overhang_regular1"); @@ -1363,7 +1365,7 @@ static void generate_initial_areas( for (coord_t extra_total_offset_acc = 0; ! remaining_overhang.empty() && extra_total_offset_acc + config.support_line_width / 8 < extra_outset; ) { const coord_t offset_current_step = std::min( extra_total_offset_acc + 2 * config.support_line_width > config.min_radius ? - config.support_line_width / 8 : + config.support_line_width / 8 : circle_length_to_half_linewidth_change, extra_outset - extra_total_offset_acc); extra_total_offset_acc += offset_current_step; @@ -1383,10 +1385,10 @@ static void generate_initial_areas( LineInformations overhang_lines; { //Vojtech: Generate support heads at support_tree_branch_distance spacing by producing a zig-zag infill at support_tree_branch_distance spacing, - // which is then resmapled - // support_line_width to form a line here as otherwise most will be unsupported. Technically this violates branch distance, - // mbut not only is this the only reasonable choice, but it ensures consistent behavior as some infill patterns generate - // each line segment as its own polyline part causing a similar line forming behavior. Also it is assumed that + // which is then resmapled + // support_line_width to form a line here as otherwise most will be unsupported. Technically this violates branch distance, + // mbut not only is this the only reasonable choice, but it ensures consistent behavior as some infill patterns generate + // each line segment as its own polyline part causing a similar line forming behavior. Also it is assumed that // the area that is valid a layer below is to small for support roof. Polylines polylines = ensure_maximum_distance_polyline( generate_support_infill_lines(remaining_overhang, support_params, false, layer_idx, mesh_group_settings.support_tree_branch_distance), @@ -1404,7 +1406,7 @@ static void generate_initial_areas( } for (size_t lag_ctr = 1; lag_ctr <= max_overhang_insert_lag && !overhang_lines.empty() && layer_idx - coord_t(lag_ctr) >= 1; lag_ctr++) { // get least restricted avoidance for layer_idx-lag_ctr - const Polygons &relevant_forbidden_below = config.support_rests_on_model ? + const Polygons &relevant_forbidden_below = config.support_rests_on_model ? volumes.getCollision(config.getRadius(0), layer_idx - lag_ctr, min_xy_dist) : volumes.getAvoidance(config.getRadius(0), layer_idx - lag_ctr, AvoidanceType::Fast, false, min_xy_dist); // it is not required to offset the forbidden area here as the points wont change: If points here are not inside the forbidden area neither will they be later when placing these points, as these are the same points. @@ -1442,8 +1444,9 @@ static void generate_initial_areas( // or roof is enabled and these are the thin overhangs at object slopes (not horizontal overhangs). if (mesh_group_settings.minimum_support_area > 0) remove_small(overhang_regular, mesh_group_settings.minimum_support_area); + for (ExPolygon &support_part : union_ex(overhang_regular)) { - sample_overhang_area(to_polygons(std::move(support_part)), + sample_overhang_area(to_polygons(std::move(support_part)), false, layer_idx, num_support_roof_layers, connect_length, mesh_group_settings, rich_interface_placer); throw_on_cancel(); @@ -1485,7 +1488,7 @@ static unsigned int move_inside(const Polygons &polygons, Point &from, int dista } int64_t dot_prod = ab.dot(ap); if (dot_prod <= 0) { // x is projected to before ab - if (projected_p_beyond_prev_segment) { + if (projected_p_beyond_prev_segment) { // case which looks like: > . projected_p_beyond_prev_segment = false; Point& x = p1; @@ -1520,7 +1523,7 @@ static unsigned int move_inside(const Polygons &polygons, Point &from, int dista p0 = p1; p1 = p2; continue; - } else { + } else { // x is projected to a point properly on the line segment (not onto a vertex). The case which looks like | . projected_p_beyond_prev_segment = false; Point x = a + (ab.cast() * (double(dot_prod) / double(ab_length2))).cast(); @@ -1594,7 +1597,7 @@ static Point move_inside_if_outside(const Polygons &polygons, Point from, int di Polygons &to_bp_data, Polygons &to_model_data, Polygons &increased, - const coord_t overspeed, + const coord_t overspeed, const bool mergelayer) { SupportElementState current_elem{ SupportElementState::propagate_down(parent.state) }; @@ -1607,18 +1610,18 @@ static Point move_inside_if_outside(const Polygons &polygons, Point from, int di if (settings.move) { increased = relevant_offset; if (overspeed > 0) { - const coord_t safe_movement_distance = - (current_elem.use_min_xy_dist ? config.xy_min_distance : config.xy_distance) + + const coord_t safe_movement_distance = + (current_elem.use_min_xy_dist ? config.xy_min_distance : config.xy_distance) + (std::min(config.z_distance_top_layers, config.z_distance_bottom_layers) > 0 ? config.min_feature_size : 0); // The difference to ensure that the result not only conforms to wall_restriction, but collision/avoidance is done later. // The higher last_safe_step_movement_distance comes exactly from the fact that the collision will be subtracted later. - increased = safe_offset_inc(increased, overspeed, volumes.getWallRestriction(support_element_collision_radius(config, parent.state), layer_idx, parent.state.use_min_xy_dist), + increased = safe_offset_inc(increased, overspeed, volumes.getWallRestriction(support_element_collision_radius(config, parent.state), layer_idx, parent.state.use_min_xy_dist), safe_movement_distance, safe_movement_distance + radius, 1); } if (settings.no_error && settings.move) // as ClipperLib::jtRound has to be used for offsets this simplify is VERY important for performance. polygons_simplify(increased, scaled(0.025), polygons_strictly_simple); - } else + } else // if no movement is done the areas keep parent area as no move == offset(0) increased = parent.influence_area; @@ -1627,7 +1630,7 @@ static Point move_inside_if_outside(const Polygons &polygons, Point from, int di if (! current_elem.to_buildplate && area(to_bp_data) > _tiny_area_threshold) { // mostly happening in the tip, but with merges one should check every time, just to be sure. current_elem.to_buildplate = true; // sometimes nodes that can reach the buildplate are marked as cant reach, tainting subtrees. This corrects it. - BOOST_LOG_TRIVIAL(debug) << "Corrected taint leading to a wrong to model value on layer " << layer_idx - 1 << " targeting " << + BOOST_LOG_TRIVIAL(debug) << "Corrected taint leading to a wrong to model value on layer " << layer_idx - 1 << " targeting " << current_elem.target_height << " with radius " << radius; } } @@ -1638,7 +1641,7 @@ static Point move_inside_if_outside(const Polygons &polygons, Point from, int di if (!current_elem.to_model_gracious) { if (mergelayer && area(to_model_data) >= _tiny_area_threshold) { current_elem.to_model_gracious = true; - BOOST_LOG_TRIVIAL(debug) << "Corrected taint leading to a wrong non gracious value on layer " << layer_idx - 1 << " targeting " << + BOOST_LOG_TRIVIAL(debug) << "Corrected taint leading to a wrong non gracious value on layer " << layer_idx - 1 << " targeting " << current_elem.target_height << " with radius " << radius; } else // Cannot route to gracious areas. Push the tree away from object and route it down anyways. @@ -1659,8 +1662,8 @@ static Point move_inside_if_outside(const Polygons &polygons, Point from, int di to_bp_data_2 = diff_clipped(increased, volumes.getAvoidance(next_radius, layer_idx - 1, settings.type, false, settings.use_min_distance)); Polygons to_model_data_2; if (config.support_rests_on_model && !current_elem.to_buildplate) - to_model_data_2 = diff_clipped(increased, - current_elem.to_model_gracious ? + to_model_data_2 = diff_clipped(increased, + current_elem.to_model_gracious ? volumes.getAvoidance(next_radius, layer_idx - 1, settings.type, true, settings.use_min_distance) : volumes.getCollision(next_radius, layer_idx - 1, settings.use_min_distance)); Polygons check_layer_data_2 = current_elem.to_buildplate ? to_bp_data_2 : to_model_data_2; @@ -1675,8 +1678,8 @@ static Point move_inside_if_outside(const Polygons &polygons, Point from, int di while (current_ceil_radius < target_radius && validWithRadius(volumes.getRadiusNextCeil(current_ceil_radius + 1, settings.use_min_distance))) current_ceil_radius = volumes.getRadiusNextCeil(current_ceil_radius + 1, settings.use_min_distance); size_t resulting_eff_dtt = current_elem.effective_radius_height; - while (resulting_eff_dtt + 1 < current_elem.distance_to_top && - config.getRadius(resulting_eff_dtt + 1, current_elem.elephant_foot_increases) <= current_ceil_radius && + while (resulting_eff_dtt + 1 < current_elem.distance_to_top && + config.getRadius(resulting_eff_dtt + 1, current_elem.elephant_foot_increases) <= current_ceil_radius && config.getRadius(resulting_eff_dtt + 1, current_elem.elephant_foot_increases) <= support_element_radius(config, current_elem)) ++ resulting_eff_dtt; current_elem.effective_radius_height = resulting_eff_dtt; @@ -1684,7 +1687,7 @@ static Point move_inside_if_outside(const Polygons &polygons, Point from, int di radius = support_element_collision_radius(config, current_elem); const coord_t foot_radius_increase = std::max(config.bp_radius_increase_per_layer - config.branch_radius_increase_per_layer, 0.0); - // Is nearly all of the time 1, but sometimes an increase of 1 could cause the radius to become bigger than recommendedMinRadius, + // Is nearly all of the time 1, but sometimes an increase of 1 could cause the radius to become bigger than recommendedMinRadius, // which could cause the radius to become bigger than precalculated. double planned_foot_increase = std::min(1.0, double(config.recommendedMinRadius(layer_idx - 1) - support_element_radius(config, current_elem)) / foot_radius_increase); //FIXME @@ -1701,14 +1704,14 @@ static Point move_inside_if_outside(const Polygons &polygons, Point from, int di if (current_elem.to_buildplate) to_bp_data = safe_union(diff_clipped(increased, volumes.getAvoidance(radius, layer_idx - 1, settings.type, false, settings.use_min_distance))); if (config.support_rests_on_model && (!current_elem.to_buildplate || mergelayer)) - to_model_data = safe_union(diff_clipped(increased, - current_elem.to_model_gracious ? + to_model_data = safe_union(diff_clipped(increased, + current_elem.to_model_gracious ? volumes.getAvoidance(radius, layer_idx - 1, settings.type, true, settings.use_min_distance) : volumes.getCollision(radius, layer_idx - 1, settings.use_min_distance) )); check_layer_data = current_elem.to_buildplate ? to_bp_data : to_model_data; if (area(check_layer_data) < _tiny_area_threshold) { - BOOST_LOG_TRIVIAL(error) << "Lost area by doing catch up from " << ceil_radius_before << " to radius " << + BOOST_LOG_TRIVIAL(error) << "Lost area by doing catch up from " << ceil_radius_before << " to radius " << volumes.ceilRadius(support_element_collision_radius(config, current_elem), settings.use_min_distance); tree_supports_show_error("Area lost catching up radius. May not cause visible malformation."sv, true); } @@ -1746,7 +1749,7 @@ struct SupportElementMerging { const Eigen::AlignedBox& bbox() const { return bbox_data;} const Point centroid() const { return (bbox_data.min() + bbox_data.max()) / 2; } - void set_bbox(const BoundingBox& abbox) + void set_bbox(const BoundingBox& abbox) { Point eps { coord_t(SCALED_EPSILON), coord_t(SCALED_EPSILON) }; bbox_data = { abbox.min - eps, abbox.max + eps }; } // Called by the AABBTree builder to get an index into the vector of source elements. @@ -1778,7 +1781,7 @@ static void increase_areas_one_layer( // New areas at the layer below layer_idx std::vector &merging_areas, // Layer above merging_areas. - const LayerIndex layer_idx, + const LayerIndex layer_idx, // Layer elements above merging_areas. SupportElements &layer_elements, // If false, the merging_areas will not be merged for performance reasons. @@ -1794,7 +1797,7 @@ static void increase_areas_one_layer( assert(merging_area.parents.size() == 1); SupportElement &parent = layer_elements[merging_area.parents.front()]; SupportElementState elem = SupportElementState::propagate_down(parent.state); - const Polygons &wall_restriction = + const Polygons &wall_restriction = // Abstract representation of the model outline. If an influence area would move through it, it could teleport through a wall. volumes.getWallRestriction(support_element_collision_radius(config, parent.state), layer_idx, parent.state.use_min_xy_dist); @@ -1825,10 +1828,10 @@ static void increase_areas_one_layer( * layer z-1:dddddxxxxxxxxxx * For more detailed visualisation see calculateWallRestrictions */ - const coord_t safe_movement_distance = - (elem.use_min_xy_dist ? config.xy_min_distance : config.xy_distance) + + const coord_t safe_movement_distance = + (elem.use_min_xy_dist ? config.xy_min_distance : config.xy_distance) + (std::min(config.z_distance_top_layers, config.z_distance_bottom_layers) > 0 ? config.min_feature_size : 0); - if (ceiled_parent_radius == volumes.ceilRadius(projected_radius_increased, parent.state.use_min_xy_dist) || + if (ceiled_parent_radius == volumes.ceilRadius(projected_radius_increased, parent.state.use_min_xy_dist) || projected_radius_increased < config.increase_radius_until_radius) // If it is guaranteed possible to increase the radius, the maximum movement speed can be increased, as it is assumed that the maximum movement speed is the one of the slower moving wall extra_speed += projected_radius_delta; @@ -1837,7 +1840,7 @@ static void increase_areas_one_layer( // Ensure that the slow movement distance can not become larger than the fast one. extra_slow_speed += std::min(projected_radius_delta, (config.maximum_move_distance + extra_speed) - (config.maximum_move_distance_slow + extra_slow_speed)); - if (config.layer_start_bp_radius > layer_idx && + if (config.layer_start_bp_radius > layer_idx && config.recommendedMinRadius(layer_idx - 1) < config.getRadius(elem.effective_radius_height + 1, elem.elephant_foot_increases)) { // can guarantee elephant foot radius increase if (ceiled_parent_radius == volumes.ceilRadius(config.getRadius(parent.state.effective_radius_height + 1, parent.state.elephant_foot_increases + 1), parent.state.use_min_xy_dist)) @@ -1872,7 +1875,7 @@ static void increase_areas_one_layer( if (elem.last_area_increase.move && elem.last_area_increase.no_error && elem.can_use_safe_radius && !mergelayer && !avoidance_speed_mismatch && (elem.distance_to_top >= config.tip_layers || parent_moved_slow)) { // assume that the avoidance type that was best for the parent is best for me. Makes this function about 7% faster. - insertSetting({ elem.last_area_increase.type, elem.last_area_increase.increase_speed < config.maximum_move_distance ? slow_speed : fast_speed, + insertSetting({ elem.last_area_increase.type, elem.last_area_increase.increase_speed < config.maximum_move_distance ? slow_speed : fast_speed, increase_radius, elem.last_area_increase.no_error, !use_min_radius, elem.last_area_increase.move }, true); insertSetting({ elem.last_area_increase.type, elem.last_area_increase.increase_speed < config.maximum_move_distance ? slow_speed : fast_speed, !increase_radius, elem.last_area_increase.no_error, !use_min_radius, elem.last_area_increase.move }, true); @@ -1892,7 +1895,7 @@ static void increase_areas_one_layer( insertSetting({ AvoidanceType::Fast, fast_speed, !increase_radius, no_error, !use_min_radius, move }, true); } else { insertSetting({ AvoidanceType::Slow, slow_speed, increase_radius, no_error, !use_min_radius, move }, true); - // while moving fast to be able to increase the radius (b) may seems preferable (over a) this can cause the a sudden skip in movement, + // while moving fast to be able to increase the radius (b) may seems preferable (over a) this can cause the a sudden skip in movement, // which looks similar to a layer shift and can reduce stability. // as such idx have chosen to only use the user setting for radius increases as a friendly recommendation. insertSetting({ AvoidanceType::Slow, slow_speed, !increase_radius, no_error, !use_min_radius, move }, true); // a @@ -1929,9 +1932,9 @@ static void increase_areas_one_layer( for (const AreaIncreaseSettings &settings : order) { if (settings.move) { if (offset_slow.empty() && (settings.increase_speed == slow_speed || ! offset_independant_faster)) { - // offsetting in 2 steps makes our offsetted area rounder preventing (rounding) errors created by to pointy areas. At this point one can see that the Polygons class + // offsetting in 2 steps makes our offsetted area rounder preventing (rounding) errors created by to pointy areas. At this point one can see that the Polygons class // was never made for precision in the single digit micron range. - offset_slow = safe_offset_inc(parent.influence_area, extra_speed + extra_slow_speed + config.maximum_move_distance_slow, + offset_slow = safe_offset_inc(parent.influence_area, extra_speed + extra_slow_speed + config.maximum_move_distance_slow, wall_restriction, safe_movement_distance, offset_independant_faster ? safe_movement_distance + radius : 0, 2); #ifdef TREESUPPORT_DEBUG_SVG SVG::export_expolygons(debug_out_path("treesupport-increase_areas_one_layer-slow-%d-%ld.svg", layer_idx, int(merging_area_idx)), @@ -1941,7 +1944,7 @@ static void increase_areas_one_layer( } if (offset_fast.empty() && settings.increase_speed != slow_speed) { if (offset_independant_faster) - offset_fast = safe_offset_inc(parent.influence_area, extra_speed + config.maximum_move_distance, + offset_fast = safe_offset_inc(parent.influence_area, extra_speed + config.maximum_move_distance, wall_restriction, safe_movement_distance, offset_independant_faster ? safe_movement_distance + radius : 0, 1); else { const coord_t delta_slow_fast = config.maximum_move_distance - (config.maximum_move_distance_slow + extra_slow_speed); @@ -1956,12 +1959,12 @@ static void increase_areas_one_layer( } std::optional result; inc_wo_collision.clear(); - if (!settings.no_error) { + if (!settings.no_error) { // ERROR CASE // if the area becomes for whatever reason something that clipper sees as a line, offset would stop working, so ensure that even if it would be a line wrongly, it still actually has an area that can be increased Polygons lines_offset = offset(to_polylines(parent.influence_area), scaled(0.005), jtMiter, 1.2); Polygons base_error_area = union_(parent.influence_area, lines_offset); - result = increase_single_area(volumes, config, settings, layer_idx, parent, + result = increase_single_area(volumes, config, settings, layer_idx, parent, base_error_area, to_bp_data, to_model_data, inc_wo_collision, (config.maximum_move_distance + extra_speed) * 1.5, mergelayer); #ifdef TREE_SUPPORT_SHOW_ERRORS BOOST_LOG_TRIVIAL(error) @@ -1970,7 +1973,7 @@ static void increase_areas_one_layer( #endif // TREE_SUPPORT_SHOW_ERRORS << "Influence area could not be increased! Data about the Influence area: " "Radius: " << radius << " at layer: " << layer_idx - 1 << " NextTarget: " << elem.layer_idx << " Distance to top: " << elem.distance_to_top << - " Elephant foot increases " << elem.elephant_foot_increases << " use_min_xy_dist " << elem.use_min_xy_dist << " to buildplate " << elem.to_buildplate << + " Elephant foot increases " << elem.elephant_foot_increases << " use_min_xy_dist " << elem.use_min_xy_dist << " to buildplate " << elem.to_buildplate << " gracious " << elem.to_model_gracious << " safe " << elem.can_use_safe_radius << " until move " << elem.dont_move_until << " \n " "Parent " << &parent << ": Radius: " << support_element_collision_radius(config, parent.state) << " at layer: " << layer_idx << " NextTarget: " << parent.state.layer_idx << " Distance to top: " << parent.state.distance_to_top << " Elephant foot increases " << parent.state.elephant_foot_increases << " use_min_xy_dist " << parent.state.use_min_xy_dist << @@ -2002,7 +2005,7 @@ static void increase_areas_one_layer( elem.use_min_xy_dist = false; if (!settings.no_error) #ifdef TREE_SUPPORT_SHOW_ERRORS - BOOST_LOG_TRIVIAL(error) + BOOST_LOG_TRIVIAL(error) #else // TREE_SUPPORT_SHOW_ERRORS BOOST_LOG_TRIVIAL(info) #endif // TREE_SUPPORT_SHOW_ERRORS @@ -2029,7 +2032,7 @@ static void increase_areas_one_layer( merging_area.areas.to_model_areas = std::move(to_model_data); } } else { - // If the bottom most point of a branch is set, later functions will assume that the position is valid, and ignore it. + // If the bottom most point of a branch is set, later functions will assume that the position is valid, and ignore it. // But as branches connecting with the model that are to small have to be culled, the bottom most point has to be not set. // A point can be set on the top most tip layer (maybe more if it should not move for a few layers). parent.state.result_on_layer_reset(); @@ -2073,7 +2076,7 @@ static void increase_areas_one_layer( out.elephant_foot_increases = 0; if (config.bp_radius_increase_per_layer > 0) { coord_t foot_increase_radius = std::abs(std::max(support_element_collision_radius(config, second), support_element_collision_radius(config, first)) - support_element_collision_radius(config, out)); - // elephant_foot_increases has to be recalculated, as when a smaller tree with a larger elephant_foot_increases merge with a larger branch + // elephant_foot_increases has to be recalculated, as when a smaller tree with a larger elephant_foot_increases merge with a larger branch // the elephant_foot_increases may have to be lower as otherwise the radius suddenly increases. This results often in a non integer value. out.elephant_foot_increases = foot_increase_radius / (config.bp_radius_increase_per_layer - config.branch_radius_increase_per_layer); } @@ -2096,8 +2099,8 @@ static bool merge_influence_areas_two_elements( { // Don't merge gracious with a non gracious area as bad placement could negatively impact reliability of the whole subtree. const bool merging_gracious_and_non_gracious = dst.state.to_model_gracious != src.state.to_model_gracious; - // Could cause some issues with the increase of one area, as it is assumed that if the smaller is increased - // by the delta to the larger it is engulfed by it already. But because a different collision + // Could cause some issues with the increase of one area, as it is assumed that if the smaller is increased + // by the delta to the larger it is engulfed by it already. But because a different collision // may be removed from the in draw_area() generated circles, this assumption could be wrong. const bool merging_min_and_regular_xy = dst.state.use_min_xy_dist != src.state.use_min_xy_dist; @@ -2141,10 +2144,10 @@ static bool merge_influence_areas_two_elements( if (increased_to_model_radius > config.max_to_model_radius_increase) return false; } - // if a merge could place a stable branch on unstable ground, would be increasing the radius further - // than allowed to when merging to model and to_bp trees or would merge to model before it is known + // if a merge could place a stable branch on unstable ground, would be increasing the radius further + // than allowed to when merging to model and to_bp trees or would merge to model before it is known // they will even been drawn the merge is skipped - if (! dst.state.supports_roof && ! src.state.supports_roof && + if (! dst.state.supports_roof && ! src.state.supports_roof && std::max(src.state.distance_to_top, dst.state.distance_to_top) < config.min_dtt_to_model) return false; } @@ -2155,7 +2158,7 @@ static bool merge_influence_areas_two_elements( return false; // the bigger radius is used to verify that the area is still valid after the increase with the delta. - // If there were a point where the big influence area could be valid with can_use_safe_radius + // If there were a point where the big influence area could be valid with can_use_safe_radius // the element would already be can_use_safe_radius. // the smaller radius, which gets increased by delta may reach into the area where use_min_xy_dist is no longer required. const bool use_min_radius = bigger_rad.state.use_min_xy_dist && smaller_rad.state.use_min_xy_dist; @@ -2186,7 +2189,7 @@ static bool merge_influence_areas_two_elements( const auto _tiny_area_threshold = tiny_area_threshold(); // dont use empty as a line is not empty, but for this use-case it very well may be (and would be one layer down as union does not keep lines) - // check if the overlap is large enough (Small ares tend to attract rounding errors in clipper). + // check if the overlap is large enough (Small ares tend to attract rounding errors in clipper). if (area(intersect) <= _tiny_area_threshold) return false; @@ -2208,7 +2211,7 @@ static bool merge_influence_areas_two_elements( Point new_pos = move_inside_if_outside(intersect, dst.state.next_position); SupportElementState new_state = merge_support_element_states(dst.state, src.state, new_pos, layer_idx - 1, config); - new_state.increased_to_model_radius = increased_to_model_radius == 0 ? + new_state.increased_to_model_radius = increased_to_model_radius == 0 ? // increased_to_model_radius was not set yet. Propagate maximum. std::max(dst.state.increased_to_model_radius, src.state.increased_to_model_radius) : increased_to_model_radius; @@ -2296,7 +2299,7 @@ static SupportElementMerging* merge_influence_areas_two_sets( SupportElementMerging * const dst_begin, SupportElementMerging * dst_end, SupportElementMerging * src_begin, SupportElementMerging * const src_end) { - // Merging src into dst. + // Merging src into dst. // Areas of src should not overlap with areas of another elements of src. // Areas of dst should not overlap with areas of another elements of dst. // The memory from dst_begin to src_end is reserved for the merging operation, @@ -2349,8 +2352,8 @@ static SupportElementMerging* merge_influence_areas_two_sets( * \param layer_idx[in] The current layer. */ static void merge_influence_areas( - const TreeModelVolumes &volumes, - const TreeSupportSettings &config, + const TreeModelVolumes &volumes, + const TreeSupportSettings &config, const LayerIndex layer_idx, std::vector &influence_areas, std::function throw_on_cancel) @@ -2538,7 +2541,7 @@ static void create_layer_pathing(const TreeModelVolumes &volumes, const TreeSupp throw_on_cancel(); } - BOOST_LOG_TRIVIAL(info) << "Time spent with creating influence areas' subtasks: Increasing areas " << dur_inc.count() / 1000000 << + BOOST_LOG_TRIVIAL(info) << "Time spent with creating influence areas' subtasks: Increasing areas " << dur_inc.count() / 1000000 << " ms merging areas: " << (dur_total - dur_inc).count() / 1000000 << " ms"; } @@ -2567,7 +2570,7 @@ static void set_points_on_areas(const SupportElement &elem, SupportElements *lay // if the value was set somewhere else it it kept. This happens when a branch tries not to move after being unable to create a roof. if (! next_elem.state.result_on_layer_is_set()) { // Move inside has edgecases (see tests) so DONT use Polygons.inside to confirm correct move, Error with distance 0 is <= 1 - // it is not required to check if how far this move moved a point as is can be larger than maximum_movement_distance. + // it is not required to check if how far this move moved a point as is can be larger than maximum_movement_distance. // While this seems like a problem it may for example occur after merges. next_elem.state.result_on_layer = move_inside_if_outside(next_elem.influence_area, elem.state.result_on_layer); // do not call recursive because then amount of layers would be restricted by the stack size @@ -2592,9 +2595,9 @@ static void set_to_model_contact_simple(SupportElement &elem) * \param layer_idx[in] The current layer. */ static void set_to_model_contact_to_model_gracious( - const TreeModelVolumes &volumes, - const TreeSupportSettings &config, - std::vector &move_bounds, + const TreeModelVolumes &volumes, + const TreeSupportSettings &config, + std::vector &move_bounds, SupportElement &first_elem, std::function throw_on_cancel) { @@ -2663,7 +2666,7 @@ static void remove_deleted_elements(std::vector &move_bounds) assert(i == layer.size() || i + 1 < layer.size()); if (i + 1 < int32_t(layer.size())) { element = std::move(layer.back()); - layer.pop_back(); + layer.pop_back(); // Mark the current element as deleted. map_current[i] = -1; // Mark the moved element as moved to index i. @@ -2692,7 +2695,7 @@ static void create_nodes_from_area( std::vector &move_bounds, std::function throw_on_cancel) { - // Initialize points on layer 0, with a "random" point in the influence area. + // Initialize points on layer 0, with a "random" point in the influence area. // Point is chosen based on an inaccurate estimate where the branches will split into two, but every point inside the influence area would produce a valid result. { SupportElements *layer_above = move_bounds.size() > 1 ? &move_bounds[1] : nullptr; @@ -2912,11 +2915,11 @@ static std::pair discretize_circle(const Vec3f ¢er, const Vec3f &n // Returns Z span of the generated mesh. static std::pair extrude_branch( - const std::vector &path, - const TreeSupportSettings &config, - const SlicingParameters &slicing_params, - const std::vector &move_bounds, - indexed_triangle_set &result) + const std::vector&path, + const TreeSupportSettings &config, + const SlicingParameters &slicing_params, + const std::vector &move_bounds, + indexed_triangle_set &result) { Vec3d p1, p2, p3; Vec3d v1, v2; @@ -2925,10 +2928,6 @@ static std::pair extrude_branch( assert(path.size() >= 2); static constexpr const float eps = 0.015f; std::pair prev_strip; - -// char fname[2048]; -// static int irun = 0; - float zmin = 0; float zmax = 0; @@ -3074,7 +3073,7 @@ static void organic_smooth_branches_avoid_collisions( Vec3f position; // Previous position, for Laplacian smoothing. Vec3f prev_position; - // + // Vec3f last_collision; double last_collision_depth; // Minimum Z for which the sphere collision will be evaluated. @@ -3174,7 +3173,7 @@ static void organic_smooth_branches_avoid_collisions( // Collision detected to be removed. // Nudge the circle center away from the collision. if (collision_sphere.last_collision_depth > EPSILON) - // a little bit of hysteresis to detect end of + // a little bit of hysteresis to detect end of ++ num_moved; // Shift by maximum 2mm. double nudge_dist = std::min(std::max(0., collision_sphere.last_collision_depth + collision_extra_gap), max_nudge_collision_avoidance); @@ -3379,7 +3378,7 @@ static void generate_support_areas(Print &print, TreeSupport* tree_support, cons // Generator for model collision, avoidance and internal guide volumes. TreeModelVolumes volumes{ print_object, build_volume, config.maximum_move_distance, config.maximum_move_distance_slow, processing.second.front(), #ifdef SLIC3R_TREESUPPORTS_PROGRESS - m_progress_multiplier, m_progress_offset, + m_progress_multiplier, m_progress_offset, #endif // SLIC3R_TREESUPPORTS_PROGRESS /* additional_excluded_areas */{} }; @@ -3396,8 +3395,7 @@ static void generate_support_areas(Print &print, TreeSupport* tree_support, cons for (size_t i = 0; i < print_object.layer_count(); i++) { for (ExPolygon& expoly : print_object.get_layer(i)->loverhangs) { Polygons polys = to_polygons(expoly); - if (tree_support->overhang_types[&expoly] == TreeSupport::SharpTail) { - polys = offset(to_polygons(expoly), scale_(0.2)); + if (tree_support->overhang_types[&expoly] == TreeSupport::SharpTail) { polys = offset(polys, scale_(0.2)); } append(overhangs[i + num_raft_layers], polys); } @@ -3492,6 +3490,8 @@ static void generate_support_areas(Print &print, TreeSupport* tree_support, cons bottom_contacts, top_contacts, interface_placer, intermediate_layers, layer_storage, throw_on_cancel); + //tree_support->move_bounds_to_contact_nodes(move_bounds, print_object, config); + remove_undefined_layers(); std::tie(interface_layers, base_interface_layers) = generate_interface_layers(print_object.config(), support_params, diff --git a/src/libslic3r/Support/TreeSupport3D.hpp b/src/libslic3r/Support/TreeSupport3D.hpp index 1e58743c25..2d50f73ac5 100644 --- a/src/libslic3r/Support/TreeSupport3D.hpp +++ b/src/libslic3r/Support/TreeSupport3D.hpp @@ -308,7 +308,7 @@ void organic_draw_branches( SupportGeneratorLayersPtr &intermediate_layers, SupportGeneratorLayerStorage &layer_storage, - std::function throw_on_cancel); + std::function throw_on_cancel); } // namespace TreeSupport3D From ae6fadda4da2722ecb8e9112a3791c4586fab57a Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 21 Mar 2024 16:43:45 +0800 Subject: [PATCH 046/129] ENH: add vertical support enforcer Previously painting support enforces on vertical faces doesn't work, as projecting the facets downwards will give empty polygons. Now we use a different mechanism to enable vertical paint-on enforces, by directly adding contact nodes. Note: this feature only works with tree support as only tree support has contact nodes. jira: none Change-Id: Id171b1665566d142a6427285baccb40c0aa00949 (cherry picked from commit 9c882f61eb37350a4486df58de48f0ae489f2d15) (cherry picked from commit 68625a6e601e2feef8e56693da1f58372b27b560) --- src/libslic3r/MultiMaterialSegmentation.cpp | 4 +-- src/libslic3r/Print.hpp | 2 +- src/libslic3r/PrintObject.cpp | 4 +-- src/libslic3r/Support/TreeSupport.cpp | 40 ++++++++++++++++++--- src/libslic3r/Support/TreeSupport.hpp | 9 ++--- src/libslic3r/Support/TreeSupport3D.cpp | 16 +++++++++ src/libslic3r/TriangleMeshSlicer.cpp | 11 ++++-- src/libslic3r/TriangleMeshSlicer.hpp | 1 + 8 files changed, 70 insertions(+), 17 deletions(-) diff --git a/src/libslic3r/MultiMaterialSegmentation.cpp b/src/libslic3r/MultiMaterialSegmentation.cpp index 4fe0d6b4b1..492e70b730 100644 --- a/src/libslic3r/MultiMaterialSegmentation.cpp +++ b/src/libslic3r/MultiMaterialSegmentation.cpp @@ -1363,7 +1363,7 @@ static inline std::vector> mmu_segmentation_top_and_bott if (!zs.empty() && is_volume_sinking(painted, volume_trafo)) { std::vector zs_sinking = {0.f}; Slic3r::append(zs_sinking, zs); - slice_mesh_slabs(painted, zs_sinking, volume_trafo, max_top_layers > 0 ? &top : nullptr, max_bottom_layers > 0 ? &bottom : nullptr, throw_on_cancel_callback); + slice_mesh_slabs(painted, zs_sinking, volume_trafo, max_top_layers > 0 ? &top : nullptr, max_bottom_layers > 0 ? &bottom : nullptr, nullptr, throw_on_cancel_callback); MeshSlicingParams slicing_params; slicing_params.trafo = volume_trafo; @@ -1374,7 +1374,7 @@ static inline std::vector> mmu_segmentation_top_and_bott bottom[0] = union_(bottom[0], bottom_slice); } else - slice_mesh_slabs(painted, zs, volume_trafo, max_top_layers > 0 ? &top : nullptr, max_bottom_layers > 0 ? &bottom : nullptr, throw_on_cancel_callback); + slice_mesh_slabs(painted, zs, volume_trafo, max_top_layers > 0 ? &top : nullptr, max_bottom_layers > 0 ? &bottom : nullptr, nullptr, throw_on_cancel_callback); auto merge = [](std::vector &&src, std::vector &dst) { auto it_src = find_if(src.begin(), src.end(), [](const Polygons &p){ return ! p.empty(); }); if (it_src != src.end()) { diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index 9618e69dfc..783987a021 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -427,7 +427,7 @@ public: std::vector slice_support_enforcers() const { return this->slice_support_volumes(ModelVolumeType::SUPPORT_ENFORCER); } // Helpers to project custom facets on slices - void project_and_append_custom_facets(bool seam, EnforcerBlockerType type, std::vector& expolys) const; + void project_and_append_custom_facets(bool seam, EnforcerBlockerType type, std::vector& expolys, std::vector>* vertical_points=nullptr) const; //BBS BoundingBox get_first_layer_bbox(float& area, float& layer_height, std::string& name); diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 7f3945042a..247552a079 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -3965,7 +3965,7 @@ static void project_triangles_to_slabs(ConstLayerPtrsAdaptor layers, const index } void PrintObject::project_and_append_custom_facets( - bool seam, EnforcerBlockerType type, std::vector& out) const + bool seam, EnforcerBlockerType type, std::vector& out, std::vector>* vertical_points) const { for (const ModelVolume* mv : this->model_object()->volumes) if (mv->is_model_part()) { @@ -3980,7 +3980,7 @@ void PrintObject::project_and_append_custom_facets( else { std::vector projected; // Support blockers or enforcers. Project downward facing painted areas upwards to their respective slicing plane. - slice_mesh_slabs(custom_facets, zs_from_layers(this->layers()), this->trafo_centered() * mv->get_matrix(), nullptr, &projected, [](){}); + slice_mesh_slabs(custom_facets, zs_from_layers(this->layers()), this->trafo_centered() * mv->get_matrix(), nullptr, &projected, vertical_points, [](){}); // Merge these projections with the output, layer by layer. assert(! projected.empty()); assert(out.empty() || out.size() == projected.size()); diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 7265945b3b..934b2922c4 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -962,7 +962,8 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) auto enforcers = m_object->slice_support_enforcers(); auto blockers = m_object->slice_support_blockers(); - m_object->project_and_append_custom_facets(false, EnforcerBlockerType::ENFORCER, enforcers); + m_vertical_enforcer_points.clear(); + m_object->project_and_append_custom_facets(false, EnforcerBlockerType::ENFORCER, enforcers, &m_vertical_enforcer_points); m_object->project_and_append_custom_facets(false, EnforcerBlockerType::BLOCKER, blockers); if (is_auto(stype) && config_remove_small_overhangs) { @@ -2819,12 +2820,17 @@ void TreeSupport::drop_nodes() movement = move_to_neighbor_center; // otherwise move to neighbor center first } - if (vsize2_with_unscale(movement) > get_max_move_dist(&node,2)) - movement = normal(movement, scale_(get_max_move_dist(&node))); + if (node.is_sharp_tail && node.dist_mm_to_top < 3) { + movement = normal(node.skin_direction, scale_(get_max_move_dist(&node))); + } + else if (dist2_to_outer > 0) + movement = normal(direction_to_outer, scale_(get_max_move_dist(&node))); + else + movement = normal(move_to_neighbor_center, scale_(get_max_move_dist(&node))); next_layer_vertex += movement; - if (group_index == 0) { + if (group_index == 0 && 0) { // Avoid collisions. const coordf_t max_move_between_samples = get_max_move_dist(&node, 1) + radius_sample_resolution + EPSILON; // 100 micron extra for rounding errors. bool is_outside = move_out_expolys(avoidance_next, next_layer_vertex, radius_sample_resolution + EPSILON, max_move_between_samples); @@ -3171,6 +3177,21 @@ void TreeSupport::generate_contact_points() tbb::spin_mutex mtx; + // add vertical enforcer points + std::vector zs = zs_from_layers(m_object->layers()); + std::vector>> vertical_enforcer_points_by_layers(m_object->layer_count()); + for (auto& pt_and_normal : m_vertical_enforcer_points) { + auto pt = pt_and_normal.first; + auto normal = pt_and_normal.second; // normal seems useless + auto iter = std::lower_bound(zs.begin(), zs.end(), pt.z()); + if (iter != zs.end()) { + size_t layer_nr = iter - zs.begin(); + if (layer_nr > 0 && layer_nr < contact_nodes.size()) { + vertical_enforcer_points_by_layers[layer_nr].push_back({ to_2d(pt).cast(),scaled(to_2d(normal)) }); + } + } + } + int nonempty_layers = 0; tbb::concurrent_vector all_nodes; tbb::parallel_for(tbb::blocked_range(1, m_object->layers().size()), [&](const tbb::blocked_range& range) { @@ -3179,7 +3200,6 @@ void TreeSupport::generate_contact_points() break; Layer* layer = m_object->get_layer(layer_nr); auto& curr_nodes = contact_nodes[layer_nr-1]; - if (layer->loverhangs.empty()) continue; std::unordered_set already_inserted; auto bottom_z = m_object->get_layer(layer_nr)->bottom_z(); @@ -3280,6 +3300,13 @@ void TreeSupport::generate_contact_points() } } } + for (auto& pt_and_normal : vertical_enforcer_points_by_layers[layer_nr]) { + is_sharp_tail = true;// fake it as sharp tail point so the contact distance will be 0 + auto vertical_enforcer_point= pt_and_normal.first; + auto node=insert_point(vertical_enforcer_point, ExPolygon(), false); + if (node) + node->skin_direction = pt_and_normal.second; + } if (!curr_nodes.empty()) nonempty_layers++; for (auto node : curr_nodes) { all_nodes.emplace_back(node->position(0), node->position(1), scale_(node->print_z)); } #ifdef SUPPORT_TREE_DEBUG_TO_SVG @@ -3288,6 +3315,9 @@ void TreeSupport::generate_contact_points() #endif }} ); // end tbb::parallel_for + + + int nNodes = all_nodes.size(); avg_node_per_layer = nodes_angle = 0; if (nNodes > 0) { diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index ff5b4f201a..c9908c01dd 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -260,7 +260,7 @@ private: coordf_t radius; size_t layer_nr; int recursions; - + }; struct RadiusLayerPairEquality { constexpr bool operator()(const RadiusLayerPair& _Left, const RadiusLayerPair& _Right) const { @@ -334,7 +334,7 @@ public: * generally considered OK as the functions are still logically const * (ie there is no difference in behaviour for the user betweeen * calculating the values each time vs caching the results). - * + * * coconut: previously stl::unordered_map is used which seems problematic with tbb::parallel_for. * So we change to tbb::concurrent_unordered_map */ @@ -413,6 +413,8 @@ public: enum OverhangType { Detected = 0, Enforced, SharpTail }; std::map overhang_types; + std::vector> m_vertical_enforcer_points; + private: /*! * \brief Generator for model collision, avoidance and internal guide volumes @@ -432,7 +434,6 @@ private: size_t m_highest_overhang_layer = 0; std::vector> m_spanning_trees; std::vector< std::unordered_map> m_mst_line_x_layer_contour_caches; - float DO_NOT_MOVER_UNDER_MM = 0.0; coordf_t base_radius = 0.0; const coordf_t MAX_BRANCH_RADIUS = 10.0; @@ -481,7 +482,7 @@ private: /*! BBS: MusangKing: maximum layer height * \brief Optimize the generation of tree support by pre-planning the layer_heights - * + * */ std::vector plan_layer_heights(); diff --git a/src/libslic3r/Support/TreeSupport3D.cpp b/src/libslic3r/Support/TreeSupport3D.cpp index f5b588bf72..f471fed021 100644 --- a/src/libslic3r/Support/TreeSupport3D.cpp +++ b/src/libslic3r/Support/TreeSupport3D.cpp @@ -3400,6 +3400,22 @@ static void generate_support_areas(Print &print, TreeSupport* tree_support, cons append(overhangs[i + num_raft_layers], polys); } } + // add vertical enforcer points + std::vector zs = zs_from_layers(print_object.layers()); + Polygon base_circle = make_circle(scale_(0.5), SUPPORT_TREE_CIRCLE_RESOLUTION); + for (auto &pt_and_normal :tree_support->m_vertical_enforcer_points) { + auto pt = pt_and_normal.first; + auto normal = pt_and_normal.second; // normal seems useless + auto iter = std::lower_bound(zs.begin(), zs.end(), pt.z()); + if (iter != zs.end()) { + size_t layer_nr = iter - zs.begin(); + if (layer_nr > 0 && layer_nr < print_object.layer_count()) { + Polygon circle = base_circle; + circle.translate(to_2d(pt).cast()); + overhangs[layer_nr + num_raft_layers].emplace_back(std::move(circle)); + } + } + } #else std::vector overhangs = generate_overhangs(config, *print.get_object(processing.second.front()), throw_on_cancel); #endif diff --git a/src/libslic3r/TriangleMeshSlicer.cpp b/src/libslic3r/TriangleMeshSlicer.cpp index 4e102887e3..c9a59e5b2f 100644 --- a/src/libslic3r/TriangleMeshSlicer.cpp +++ b/src/libslic3r/TriangleMeshSlicer.cpp @@ -957,7 +957,6 @@ inline std::pair slice_slabs_make_lines( } slice_facet_with_slabs(vertices, indices, face_idx, neighbors, edge_ids, num_edges, zs, lines_top, lines_mutex_top); } - // BBS: add vertical faces option if (bottom && (fo == FaceOrientation::Down || fo == FaceOrientation::Degenerate)) { Vec3i32 neighbors = face_neighbors[face_idx]; // Reset neighborship of this triangle in case the other triangle is oriented backwards from this one. @@ -2063,6 +2062,7 @@ void slice_mesh_slabs( const Transform3d &trafo, std::vector *out_top, std::vector *out_bottom, + std::vector> *vertical_points, std::function throw_on_cancel) { BOOST_LOG_TRIVIAL(debug) << "slice_mesh_slabs to polygons"; @@ -2133,6 +2133,11 @@ void slice_mesh_slabs( // Is the triangle vertical or degenerate? assert(d == 0); fo = fa == fb || fa == fc || fb == fc ? FaceOrientation::Degenerate : FaceOrientation::Vertical; + if(vertical_points && fo==FaceOrientation::Vertical) + { + Vec3f normal = (fb - fa).cross(fc - fa).normalized(); + vertical_points->push_back({ (fa + fb + fc) / 3,normal }); + } } face_orientation[&tri - mesh.indices.data()] = fo; } @@ -2297,7 +2302,7 @@ void project_mesh( { std::vector top, bottom; std::vector zs { -1e10, 1e10 }; - slice_mesh_slabs(mesh, zs, trafo, out_top ? &top : nullptr, out_bottom ? &bottom : nullptr, throw_on_cancel); + slice_mesh_slabs(mesh, zs, trafo, out_top ? &top : nullptr, out_bottom ? &bottom : nullptr, nullptr, throw_on_cancel); if (out_top) *out_top = std::move(top.front()); if (out_bottom) @@ -2311,7 +2316,7 @@ Polygons project_mesh( { std::vector top, bottom; std::vector zs { -1e10, 1e10 }; - slice_mesh_slabs(mesh, zs, trafo, &top, &bottom, throw_on_cancel); + slice_mesh_slabs(mesh, zs, trafo, &top, &bottom, nullptr, throw_on_cancel); return union_(top.front(), bottom.back()); } diff --git a/src/libslic3r/TriangleMeshSlicer.hpp b/src/libslic3r/TriangleMeshSlicer.hpp index ea6a7262cc..1f7bba9d27 100644 --- a/src/libslic3r/TriangleMeshSlicer.hpp +++ b/src/libslic3r/TriangleMeshSlicer.hpp @@ -107,6 +107,7 @@ void slice_mesh_slabs( const Transform3d &trafo, std::vector *out_top, std::vector *out_bottom, + std::vector> *vertical_points, std::function throw_on_cancel); // Project mesh upwards pointing surfaces / downwards pointing surfaces into 2D polygons. From f76683e90e3078fd1f33779ab0224b2b7a7b60d2 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 30 Aug 2024 15:13:29 +0800 Subject: [PATCH 047/129] FIX: support wall count doesn't work jira: STUDIO-7975 Change-Id: Ic580d298568fc6eab8b1a2c017fa182869b432bf (cherry picked from commit 82bcb099e139065cc00c133f507e955d9955b2f4) (cherry picked from commit 04756bf447f690a071eace1500b150f0b7b4ce02) --- src/libslic3r/PrintConfig.cpp | 5 +- src/libslic3r/Support/SupportCommon.cpp | 71 ++++++++++--------- src/libslic3r/Support/SupportCommon.hpp | 2 + src/libslic3r/Support/SupportParameters.hpp | 78 ++++++++++----------- src/libslic3r/Support/TreeSupport.cpp | 22 ++++-- src/libslic3r/Support/TreeSupport3D.cpp | 1 + 6 files changed, 95 insertions(+), 84 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 31ab6fcbff..aea3beb4e4 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -4955,10 +4955,11 @@ void PrintConfigDef::init_fff_params() def = this->add("tree_support_wall_count", coInt); def->label = L("Support wall loops"); def->category = L("Support"); - def->tooltip = L("This setting specify the count of walls around support"); + def->tooltip = L("This setting specifies the min count of support walls in the range of [0,2]. Actual wall count may be larger than the specified value."); def->min = 0; + def->max = 2; def->mode = comAdvanced; - def->set_default_value(new ConfigOptionInt(0)); + def->set_default_value(new ConfigOptionInt(1)); def = this->add("tree_support_with_infill", coBool); def->label = L("Tree support with infill"); diff --git a/src/libslic3r/Support/SupportCommon.cpp b/src/libslic3r/Support/SupportCommon.cpp index 6d6553b12f..7651b1c71b 100644 --- a/src/libslic3r/Support/SupportCommon.cpp +++ b/src/libslic3r/Support/SupportCommon.cpp @@ -36,7 +36,7 @@ namespace Slic3r { // how much we extend support around the actual contact area //FIXME this should be dependent on the nozzle diameter! -#define SUPPORT_MATERIAL_MARGIN 1.5 +#define SUPPORT_MATERIAL_MARGIN 1.5 //#define SUPPORT_SURFACES_OFFSET_PARAMETERS ClipperLib::jtMiter, 3. //#define SUPPORT_SURFACES_OFFSET_PARAMETERS ClipperLib::jtMiter, 1.5 @@ -144,6 +144,7 @@ std::pair generate_interfa const bool smooth_supports = support_params.support_style != smsGrid; SupportGeneratorLayersPtr &interface_layers = base_and_interface_layers.first; SupportGeneratorLayersPtr &base_interface_layers = base_and_interface_layers.second; + interface_layers.assign(intermediate_layers.size(), nullptr); if (support_params.has_base_interfaces()) base_interface_layers.assign(intermediate_layers.size(), nullptr); @@ -152,7 +153,7 @@ std::pair generate_interfa const auto closing_distance = smoothing_distance; // scaled(config.support_material_closing_radius.value); // Insert a new layer into base_interface_layers, if intersection with base exists. auto insert_layer = [&layer_storage, smooth_supports, closing_distance, smoothing_distance, minimum_island_radius]( - SupportGeneratorLayer &intermediate_layer, Polygons &bottom, Polygons &&top, SupportGeneratorLayer *top_interface_layer, + SupportGeneratorLayer &intermediate_layer, Polygons &bottom, Polygons &&top, SupportGeneratorLayer *top_interface_layer, const Polygons *subtract, SupporLayerType type) -> SupportGeneratorLayer* { bool has_top_interface = top_interface_layer && ! top_interface_layer->polygons.empty(); assert(! bottom.empty() || ! top.empty() || has_top_interface); @@ -194,7 +195,7 @@ std::pair generate_interfa }; tbb::parallel_for(tbb::blocked_range(0, int(intermediate_layers.size())), [&bottom_contacts, &top_contacts, &top_interface_layers, &top_base_interface_layers, &intermediate_layers, &insert_layer, &support_params, - snug_supports, &interface_layers, &base_interface_layers](const tbb::blocked_range& range) { + snug_supports, &interface_layers, &base_interface_layers](const tbb::blocked_range& range) { // Gather the top / bottom contact layers intersecting with num_interface_layers resp. num_interface_layers_only intermediate layers above / below // this intermediate layer. // Index of the first top contact layer intersecting the current intermediate layer. @@ -230,7 +231,7 @@ std::pair generate_interfa //FIXME maybe this adds one interface layer in excess? if (top_contact_layer.bottom_z - EPSILON > top_z) break; - polygons_append(top_contact_layer.bottom_z - EPSILON > top_inteface_z ? polygons_top_contact_projected_base : polygons_top_contact_projected_interface, + polygons_append(top_contact_layer.bottom_z - EPSILON > top_inteface_z ? polygons_top_contact_projected_base : polygons_top_contact_projected_interface, // For snug supports, project the overhang polygons covering the whole overhang, so that they will merge without a gap with support polygons of the other layers. // For grid supports, merging of support regions will be performed by the projection into grid. snug_supports ? *top_contact_layer.overhang_polygons : top_contact_layer.polygons); @@ -242,7 +243,7 @@ std::pair generate_interfa coordf_t bottom_interface_z = - std::numeric_limits::max(); if (support_params.num_bottom_base_interface_layers > 0) // Some bottom base interface layers will be generated. - bottom_interface_z = support_params.num_bottom_interface_layers_only() == 0 ? + bottom_interface_z = support_params.num_bottom_interface_layers_only() == 0 ? // Only base interface layers to generate. std::numeric_limits::max() : intermediate_layers[std::max(0, idx_intermediate_layer - int(support_params.num_bottom_interface_layers_only()))]->bottom_z; @@ -307,7 +308,7 @@ std::pair generate_interfa base_interface_layers = merge_remove_empty(base_interface_layers, top_base_interface_layers); BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::generate_interface_layers() in parallel - end"; } - + return base_and_interface_layers; } @@ -836,8 +837,8 @@ struct SupportGeneratorLayerExtruded return layer == nullptr || layer->polygons.empty(); } - void set_polygons_to_extrude(Polygons &&polygons) { - if (m_polygons_to_extrude == nullptr) + void set_polygons_to_extrude(Polygons &&polygons) { + if (m_polygons_to_extrude == nullptr) m_polygons_to_extrude = std::make_unique(std::move(polygons)); else *m_polygons_to_extrude = std::move(polygons); @@ -846,9 +847,9 @@ struct SupportGeneratorLayerExtruded const Polygons& polygons_to_extrude() const { return (m_polygons_to_extrude == nullptr) ? layer->polygons : *m_polygons_to_extrude; } bool could_merge(const SupportGeneratorLayerExtruded &other) const { - return ! this->empty() && ! other.empty() && + return ! this->empty() && ! other.empty() && std::abs(this->layer->height - other.layer->height) < EPSILON && - this->layer->bridging == other.layer->bridging; + this->layer->bridging == other.layer->bridging; } // Merge regions, perform boolean union over the merged polygons. @@ -954,7 +955,7 @@ void LoopInterfaceProcessor::generate(SupportGeneratorLayerExtruded &top_contact const Point* operator()(const Point &pt) const { return &pt; } }; typedef ClosestPointInRadiusLookup ClosestPointLookupType; - + Polygons loops0; { // find centerline of the external loop of the contours @@ -1051,7 +1052,7 @@ void LoopInterfaceProcessor::generate(SupportGeneratorLayerExtruded &top_contact for (int i = 1; i < n_contact_loops; ++ i) polygons_append(loop_polygons, opening( - loops0, + loops0, i * flow.scaled_spacing() + 0.5f * flow.scaled_spacing(), 0.5f * flow.scaled_spacing())); // Clip such loops to the side oriented towards the object. @@ -1111,7 +1112,7 @@ void LoopInterfaceProcessor::generate(SupportGeneratorLayerExtruded &top_contact // Remove empty lines. remove_degenerate(loop_lines); } - + // add the contact infill area to the interface area // note that growing loops by $circle_radius ensures no tiny // extrusions are left inside the circles; however it creates @@ -1183,7 +1184,7 @@ static void modulate_extrusion_by_overlapping_layers( // Split the extrusions by the overlapping layers, reduce their extrusion rate. // The last path_fragment is from this_layer. std::vector path_fragments( - n_overlapping_layers + 1, + n_overlapping_layers + 1, ExtrusionPathFragment(extrusion_path_template->mm3_per_mm, extrusion_path_template->width, extrusion_path_template->height)); // Don't use it, it will be released. extrusion_path_template = nullptr; @@ -1235,7 +1236,7 @@ static void modulate_extrusion_by_overlapping_layers( #endif /* SLIC3R_DEBUG */ // End points of the original paths. - std::vector> path_ends; + std::vector> path_ends; // Collect the paths of this_layer. { Polylines &polylines = path_fragments.back().polylines; @@ -1452,7 +1453,7 @@ SupportGeneratorLayersPtr generate_support_layers( height_min = std::min(height_min, layer.height); } if (! empty) { - // Here the upper_layer and lower_layer pointers are left to null at the support layers, + // Here the upper_layer and lower_layer pointers are left to null at the support layers, // as they are never used. These pointers are candidates for removal. bool this_layer_contacts_only = num_top_contacts > 0 && num_top_contacts == num_interfaces; size_t this_layer_id_interface = layer_id_interface; @@ -1627,12 +1628,12 @@ void generate_support_toolpaths( // Pointer to the 1st layer interface filler. auto filler_first_layer = filler_first_layer_ptr ? filler_first_layer_ptr.get() : filler_interface.get(); // Filler for the 1st layer interface, if different from filler_interface. - auto filler_raft_contact_ptr = std::unique_ptr(range.begin() == n_raft_layers && config.support_interface_top_layers.value == 0 ? + auto filler_raft_contact_ptr = std::unique_ptr(range.begin() == n_raft_layers && config.support_interface_top_layers.value == 0 ? Fill::new_from_type(support_params.raft_interface_fill_pattern) : nullptr); // Pointer to the 1st layer interface filler. auto filler_raft_contact = filler_raft_contact_ptr ? filler_raft_contact_ptr.get() : filler_interface.get(); // Filler for the base interface (to be used for soluble interface / non soluble base, to produce non soluble interface layer below soluble interface layer). - auto filler_base_interface = std::unique_ptr(base_interface_layers.empty() ? nullptr : + auto filler_base_interface = std::unique_ptr(base_interface_layers.empty() ? nullptr : Fill::new_from_type(support_params.interface_density > 0.95 || support_params.with_sheath ? ipRectilinear : ipSupportBase)); auto filler_support = std::unique_ptr(Fill::new_from_type(support_params.base_fill_pattern)); filler_interface->set_bounding_box(bbox_object); @@ -1695,7 +1696,7 @@ void generate_support_toolpaths( // to trim other layers. if (top_contact_layer.could_merge(interface_layer) && ! raft_layer) top_contact_layer.merge(std::move(interface_layer)); - } + } if ((config.support_interface_top_layers == 0 || config.support_interface_bottom_layers == 0) && support_params.can_merge_support_regions) { if (base_layer.could_merge(bottom_contact_layer)) base_layer.merge(std::move(bottom_contact_layer)); @@ -1729,14 +1730,14 @@ void generate_support_toolpaths( auto *filler = raft_contact ? filler_raft_contact : filler_interface.get(); auto interface_flow = layer_ex.layer->bridging ? Flow::bridging_flow(layer_ex.layer->height, support_params.support_material_bottom_interface_flow.nozzle_diameter()) : - (raft_contact ? &support_params.raft_interface_flow : + (raft_contact ? &support_params.raft_interface_flow : interface_as_base ? &support_params.support_material_flow : &support_params.support_material_interface_flow) ->with_height(float(layer_ex.layer->height)); filler->angle = interface_as_base ? // If zero interface layers are configured, use the same angle as for the base layers. angles[support_layer_id % angles.size()] : // Use interface angle for the interface layers. - raft_contact ? + raft_contact ? support_params.raft_interface_angle(support_layer.interface_id()) : support_interface_angle; double density = raft_contact ? support_params.raft_interface_density : interface_as_base ? support_params.support_density : support_params.interface_density; @@ -1745,7 +1746,7 @@ void generate_support_toolpaths( filler->link_max_length = coord_t(scale_(filler->spacing * link_max_length_factor / density)); fill_expolygons_generate_paths( // Destination - layer_ex.extrusions, + layer_ex.extrusions, // Regions to fill union_safety_offset_ex(layer_ex.polygons_to_extrude()), // Filler and its parameters @@ -1772,7 +1773,7 @@ void generate_support_toolpaths( filler->link_max_length = coord_t(scale_(filler->spacing * link_max_length_factor / support_params.interface_density)); fill_expolygons_generate_paths( // Destination - base_interface_layer.extrusions, + base_interface_layer.extrusions, //base_layer_interface.extrusions, // Regions to fill union_safety_offset_ex(base_interface_layer.polygons_to_extrude()), @@ -1927,7 +1928,7 @@ void PrintObjectSupportMaterial::clip_by_pillars( coord_t pillar_size = scale_(PILLAR_SIZE); coord_t pillar_spacing = scale_(PILLAR_SPACING); - + // A regular grid of pillars, filling the 2D bounding box. Polygons grid; { @@ -1937,7 +1938,7 @@ void PrintObjectSupportMaterial::clip_by_pillars( pillar.points.push_back(Point(pillar_size, 0)); pillar.points.push_back(Point(pillar_size, pillar_size)); pillar.points.push_back(Point(0, pillar_size)); - + // 2D bounding box of the projection of all contact polygons. BoundingBox bbox; for (LayersPtr::const_iterator it = top_contacts.begin(); it != top_contacts.end(); ++ it) @@ -1951,30 +1952,30 @@ void PrintObjectSupportMaterial::clip_by_pillars( } } } - + // add pillars to every layer for my $i (0..n_support_z) { $shape->[$i] = [ @$grid ]; } - + // build capitals for my $i (0..n_support_z) { my $z = $support_z->[$i]; - + my $capitals = intersection( $grid, $contact->{$z} // [], ); - + // work on one pillar at time (if any) to prevent the capitals from being merged - // but store the contact area supported by the capital because we need to make + // but store the contact area supported by the capital because we need to make // sure nothing is left my $contact_supported_by_capitals = []; foreach my $capital (@$capitals) { // enlarge capital tops $capital = offset([$capital], +($pillar_spacing - $pillar_size)/2); push @$contact_supported_by_capitals, @$capital; - + for (my $j = $i-1; $j >= 0; $j--) { my $jz = $support_z->[$j]; $capital = offset($capital, -$self->interface_flow->scaled_width/2); @@ -1982,7 +1983,7 @@ void PrintObjectSupportMaterial::clip_by_pillars( push @{ $shape->[$j] }, @$capital; } } - + // Capitals will not generally cover the whole contact area because there will be // remainders. For now we handle this situation by projecting such unsupported // areas to the ground, just like we would do with a normal support. @@ -2000,10 +2001,10 @@ void PrintObjectSupportMaterial::clip_by_pillars( sub clip_with_shape { my ($self, $support, $shape) = @_; - + foreach my $i (keys %$support) { - // don't clip bottom layer with shape so that we - // can generate a continuous base flange + // don't clip bottom layer with shape so that we + // can generate a continuous base flange // also don't clip raft layers next if $i == 0; next if $i < $self->object_config->raft_layers; diff --git a/src/libslic3r/Support/SupportCommon.hpp b/src/libslic3r/Support/SupportCommon.hpp index d292c9cd8f..6f5894fc1d 100644 --- a/src/libslic3r/Support/SupportCommon.hpp +++ b/src/libslic3r/Support/SupportCommon.hpp @@ -50,6 +50,8 @@ SupportGeneratorLayersPtr generate_raft_base( const SupportGeneratorLayersPtr &base_layers, SupportGeneratorLayerStorage &layer_storage); +void tree_supports_generate_paths(ExtrusionEntitiesPtr &dst, const Polygons &polygons, const Flow &flow, const SupportParameters &support_params); + void fill_expolygons_with_sheath_generate_paths( ExtrusionEntitiesPtr &dst, const Polygons &polygons, Fill *filler, float density, ExtrusionRole role, const Flow &flow, const SupportParameters& support_params, bool with_sheath, bool no_sort); diff --git a/src/libslic3r/Support/SupportParameters.hpp b/src/libslic3r/Support/SupportParameters.hpp index 1b1c11d953..2e3ec3a6da 100644 --- a/src/libslic3r/Support/SupportParameters.hpp +++ b/src/libslic3r/Support/SupportParameters.hpp @@ -6,45 +6,42 @@ namespace Slic3r { struct SupportParameters { - SupportParameters() = default; - SupportParameters(const PrintObject &object) + SupportParameters() = delete; + SupportParameters(const PrintObject& object) { - const PrintConfig &print_config = object.print()->config(); - const PrintObjectConfig &object_config = object.config(); - const SlicingParameters &slicing_params = object.slicing_parameters(); - - this->soluble_interface = slicing_params.soluble_interface; - this->soluble_interface_non_soluble_base = - // Zero z-gap between the overhangs and the support interface. - slicing_params.soluble_interface && - // Interface extruder soluble. - object_config.support_interface_filament.value > 0 && print_config.filament_soluble.get_at(object_config.support_interface_filament.value - 1) && - // Base extruder: Either "print with active extruder" not soluble. - (object_config.support_filament.value == 0 || ! print_config.filament_soluble.get_at(object_config.support_filament.value - 1)); - - { - int num_top_interface_layers = std::max(0, object_config.support_interface_top_layers.value); - int num_bottom_interface_layers = object_config.support_interface_bottom_layers < 0 ? - num_top_interface_layers : object_config.support_interface_bottom_layers; - this->has_top_contacts = num_top_interface_layers > 0; - this->has_bottom_contacts = num_bottom_interface_layers > 0; - this->num_top_interface_layers = this->has_top_contacts ? size_t(num_top_interface_layers - 1) : 0; - this->num_bottom_interface_layers = this->has_bottom_contacts ? size_t(num_bottom_interface_layers - 1) : 0; - if (this->soluble_interface_non_soluble_base) { - // Try to support soluble dense interfaces with non-soluble dense interfaces. - this->num_top_base_interface_layers = size_t(std::min(num_top_interface_layers / 2, 2)); - this->num_bottom_base_interface_layers = size_t(std::min(num_bottom_interface_layers / 2, 2)); - } else { - this->num_top_base_interface_layers = 0; - this->num_bottom_base_interface_layers = 0; - } - } - - this->first_layer_flow = Slic3r::support_material_1st_layer_flow(&object, float(slicing_params.first_print_layer_height)); - this->support_material_flow = Slic3r::support_material_flow(&object, float(slicing_params.layer_height)); - this->support_material_interface_flow = Slic3r::support_material_interface_flow(&object, float(slicing_params.layer_height)); - this->raft_interface_flow = support_material_interface_flow; - + const PrintConfig& print_config = object.print()->config(); + const PrintObjectConfig& object_config = object.config(); + const SlicingParameters& slicing_params = object.slicing_parameters(); + + this->soluble_interface = slicing_params.soluble_interface; + this->soluble_interface_non_soluble_base = + // Zero z-gap between the overhangs and the support interface. + slicing_params.soluble_interface && + // Interface extruder soluble. + object_config.support_interface_filament.value > 0 && print_config.filament_soluble.get_at(object_config.support_interface_filament.value - 1) && + // Base extruder: Either "print with active extruder" not soluble. + (object_config.support_filament.value == 0 || ! print_config.filament_soluble.get_at(object_config.support_filament.value - 1)); + + { + this->num_top_interface_layers = std::max(0, object_config.support_interface_top_layers.value); + this->num_bottom_interface_layers = object_config.support_interface_bottom_layers < 0 ? + num_top_interface_layers : object_config.support_interface_bottom_layers; + this->has_top_contacts = num_top_interface_layers > 0; + this->has_bottom_contacts = num_bottom_interface_layers > 0; + if (this->soluble_interface_non_soluble_base) { + // Try to support soluble dense interfaces with non-soluble dense interfaces. + this->num_top_base_interface_layers = size_t(std::min(int(num_top_interface_layers) / 2, 2)); + this->num_bottom_base_interface_layers = size_t(std::min(int(num_bottom_interface_layers) / 2, 2)); + } else { + this->num_top_base_interface_layers = 0; + this->num_bottom_base_interface_layers = 0; + } + } + this->first_layer_flow = Slic3r::support_material_1st_layer_flow(&object, float(slicing_params.first_print_layer_height)); + this->support_material_flow = Slic3r::support_material_flow(&object, float(slicing_params.layer_height)); + this->support_material_interface_flow = Slic3r::support_material_interface_flow(&object, float(slicing_params.layer_height)); + this->raft_interface_flow = support_material_interface_flow; + // Calculate a minimum support layer height as a minimum over all extruders, but not smaller than 10um. this->support_layer_height_min = scaled(0.01); for (auto lh : print_config.min_layer_height.values) @@ -155,7 +152,8 @@ struct SupportParameters { independent_layer_height = print_config.independent_support_layer_height; - tree_branch_diameter_double_wall_area_scaled = 0.25 * sqr(scaled(object_config.tree_support_branch_diameter_double_wall.value)) * M_PI; + // force double walls everywhere if wall count is larger than 1 + tree_branch_diameter_double_wall_area_scaled = object_config.tree_support_wall_count.value > 1 ? 0.1 : 0.25 * sqr(scaled(5.0)) * M_PI; support_style = object_config.support_style; if (support_style == smsDefault) { @@ -236,7 +234,7 @@ struct SupportParameters { // Shall the sparse (base) layers be printed with a single perimeter line (sheath) for robustness? bool with_sheath; // Branches of organic supports with area larger than this threshold will be extruded with double lines. - double tree_branch_diameter_double_wall_area_scaled = 0.25 * sqr(scaled(3.0)) * M_PI;; + double tree_branch_diameter_double_wall_area_scaled = 0.25 * sqr(scaled(5.0)) * M_PI;; float raft_angle_1st_layer; float raft_angle_base; diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 934b2922c4..87e50d66c1 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1541,12 +1541,16 @@ void TreeSupport::generate_toolpaths() } else { size_t walls = wall_count; - if (area_group.need_extra_wall && walls < 2) walls += 1; - for (size_t i = 1; i < walls; i++) { - Polygons contour_new = offset(poly.contour, -(i - 0.5f) * flow.scaled_spacing(), jtSquare); - loops.insert(loops.end(), contour_new.begin(), contour_new.end()); - } - fill_expolygons_with_sheath_generate_paths(ts_layer->support_fills.entities, loops, nullptr, 0, erSupportMaterial, flow, m_support_params, true, false); + //if (area_group.need_extra_wall && walls < 2) walls += 1; + //for (size_t i = 1; i < walls; i++) { + // Polygons contour_new = offset(poly.contour, -(i - 0.5f) * flow.scaled_spacing(), jtSquare); + // loops.insert(loops.end(), contour_new.begin(), contour_new.end()); + //} + //fill_expolygons_with_sheath_generate_paths(ts_layer->support_fills.entities, loops, nullptr, 0, erSupportMaterial, flow, true, false); + SupportParameters support_params = m_support_params; + if(walls>1) + support_params.tree_branch_diameter_double_wall_area_scaled=0.1; + tree_supports_generate_paths(ts_layer->support_fills.entities, loops, flow, support_params); } } } @@ -1606,8 +1610,12 @@ void TreeSupport::generate_toolpaths() } // sort extrusions to reduce travel, also make sure walls go before infills - if(ts_layer->support_fills.no_sort==false) + if (ts_layer->support_fills.no_sort == false) { + // chain_and_reorder_extrusion_entities crashes if there are empty elements in entities + auto &entities = ts_layer->support_fills.entities; + entities.erase(std::remove_if(entities.begin(), entities.end(), [](ExtrusionEntity* entity) { return static_cast(entity)->empty(); }), entities.end()); chain_and_reorder_extrusion_entities(ts_layer->support_fills.entities); + } } } ); diff --git a/src/libslic3r/Support/TreeSupport3D.cpp b/src/libslic3r/Support/TreeSupport3D.cpp index f471fed021..dad831076c 100644 --- a/src/libslic3r/Support/TreeSupport3D.cpp +++ b/src/libslic3r/Support/TreeSupport3D.cpp @@ -3434,6 +3434,7 @@ static void generate_support_areas(Print &print, TreeSupport* tree_support, cons // The trees will have the density zeroed in tree_supports_generate_paths() // support_params.support_density = 0; + SupportGeneratorLayerStorage layer_storage; SupportGeneratorLayersPtr top_contacts; SupportGeneratorLayersPtr bottom_contacts; From 59b756acb8aefc6270246cd4818175cc33e0b7a9 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 3 Sep 2024 17:25:36 +0800 Subject: [PATCH 048/129] FIX: chain_and_reorder_extrusion_entities crashes this function crashes if there are empty elements in entities. jira: STUDIO-7975 Change-Id: I0dbeb6b1151dd089be7617ebc3271691f64ac61e (cherry picked from commit df30728617a89891c68e36cce771fb6380355b82) (cherry picked from commit e42aabebb16253b0172fb80a58f58953aec8dda7) --- src/libslic3r/ShortestPath.cpp | 3 +++ src/libslic3r/Support/TreeSupport.cpp | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/ShortestPath.cpp b/src/libslic3r/ShortestPath.cpp index 3aa99e2b76..2b017b709b 100644 --- a/src/libslic3r/ShortestPath.cpp +++ b/src/libslic3r/ShortestPath.cpp @@ -1030,6 +1030,9 @@ void reorder_extrusion_entities(std::vector &entities, const s void chain_and_reorder_extrusion_entities(std::vector &entities, const Point *start_near) { + // this function crashes if there are empty elements in entities + entities.erase(std::remove_if(entities.begin(), entities.end(), [](ExtrusionEntity *entity) { return static_cast(entity)->empty(); }), + entities.end()); reorder_extrusion_entities(entities, chain_extrusion_entities(entities, start_near)); } diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 87e50d66c1..c9cb47a734 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1611,9 +1611,6 @@ void TreeSupport::generate_toolpaths() // sort extrusions to reduce travel, also make sure walls go before infills if (ts_layer->support_fills.no_sort == false) { - // chain_and_reorder_extrusion_entities crashes if there are empty elements in entities - auto &entities = ts_layer->support_fills.entities; - entities.erase(std::remove_if(entities.begin(), entities.end(), [](ExtrusionEntity* entity) { return static_cast(entity)->empty(); }), entities.end()); chain_and_reorder_extrusion_entities(ts_layer->support_fills.entities); } } From e78d50f733658069fe650a4583180449f6ef8bde Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 11 Sep 2024 17:13:03 +0800 Subject: [PATCH 049/129] ENH: improve hybrid tree support 1. keep all polygon nodes in drop_nodes 2. prevent generating too small polygon nodes jira: STUDIO-8107 Change-Id: I1311158ab15097eb10727a8d6884b0bcd8136ef1 (cherry picked from commit 038b92a536a56568b1c6f385ce19ff36331cd46a) --- src/libslic3r/Support/TreeSupport.cpp | 40 ++++++++++++--------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index c9cb47a734..2afb96ccf4 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -2690,21 +2690,12 @@ void TreeSupport::drop_nodes() const bool to_buildplate = true; // keep only the part that won't be removed by the next layer ExPolygons overhangs_next = diff_clipped({ node.overhang }, get_collision(0, obj_layer_nr_next)); - // find the biggest overhang if there are many - float area_biggest = -1; - int index_biggest = -1; - for (int i = 0; i < overhangs_next.size(); i++) { - float a=area(overhangs_next[i]); - if (a > area_biggest) { - area_biggest = a; - index_biggest = i; - } - } - if (index_biggest >= 0) { - SupportNode* next_node = m_ts_data->create_node(p_node->position, p_node->distance_to_top + 1, obj_layer_nr_next, p_node->support_roof_layers_below - 1, to_buildplate, - p_node, print_z_next, height_next); + for(auto& overhang:overhangs_next) { + Point next_pt = overhang.contour.centroid(); + SupportNode *next_node = m_ts_data->create_node(next_pt, p_node->distance_to_top + 1, obj_layer_nr_next, p_node->support_roof_layers_below - 1, + to_buildplate, p_node, print_z_next, height_next); next_node->max_move_dist = 0; - next_node->overhang = std::move(overhangs_next[index_biggest]); + next_node->overhang = std::move(overhang); m_ts_data->m_mutex.lock(); contact_nodes[layer_nr_next].emplace_back(next_node); m_ts_data->m_mutex.unlock(); @@ -3245,15 +3236,20 @@ void TreeSupport::generate_contact_points() ExPolygons overhangs_regular; if (m_support_params.support_style == smsTreeHybrid && overhang_part.area() > m_support_params.thresh_big_overhang && !is_sharp_tail) { overhangs_regular = offset_ex(intersection_ex({overhang_part}, m_ts_data->m_layer_outlines_below[layer_nr - 1]), radius_scaled); - overhangs_regular = diff_ex(overhangs_regular, relevant_forbidden); ExPolygons overhangs_normal = diff_ex({overhang_part}, overhangs_regular); - for(auto& overhang:overhangs_normal) { - BoundingBox overhang_bounds = get_extents(overhang); - double radius = unscale_(overhang_bounds.radius()); - Point candidate = overhang_bounds.center(); - SupportNode *contact_node = insert_point(candidate, overhang, radius, true, true); - contact_node->type = ePolygon; - curr_nodes.emplace_back(contact_node); + if (area(overhangs_normal) > m_support_params.thresh_big_overhang) { + // if the outside area is still big, we can need normal nodes + for (auto &overhang : overhangs_normal) { + BoundingBox overhang_bounds = get_extents(overhang); + double radius = unscale_(overhang_bounds.radius()); + Point candidate = overhang_bounds.center(); + SupportNode *contact_node = insert_point(candidate, overhang, radius, true, true); + contact_node->type = ePolygon; + curr_nodes.emplace_back(contact_node); + } + }else{ + // otherwise, all nodes should be circle nodes + overhangs_regular = ExPolygons{overhang_part}; } } else { overhangs_regular = ExPolygons{overhang_part}; From 3e7e4df7cea2f28f9d3875aeb43b7f8f4e085633 Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 12 Sep 2024 15:50:37 +0800 Subject: [PATCH 050/129] ENH: precise tree support wall count Change the behavior of "tree support wall count" option, let it control precisely. 0 means auto. jira: STUDIO-8068 github: 4780 Change-Id: I6d1a64cff9b121f5c0a3e910c5ddbfe6db198687 (cherry picked from commit a557bbe758cd352fa9bb48323995ed2c90737577) --- src/libslic3r/Preset.cpp | 2 +- src/libslic3r/PrintConfig.cpp | 16 ++-------------- src/libslic3r/PrintConfig.hpp | 1 - src/libslic3r/PrintObject.cpp | 1 - src/libslic3r/Support/SupportParameters.hpp | 4 +++- src/libslic3r/Support/TreeSupport.cpp | 12 +----------- src/slic3r/GUI/ConfigManipulation.cpp | 2 +- src/slic3r/GUI/Tab.cpp | 1 - 8 files changed, 8 insertions(+), 31 deletions(-) diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 3051d88fb0..e633d094f8 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -812,7 +812,7 @@ static std::vector s_Preset_print_options { "wipe_tower_no_sparse_layers", "compatible_printers", "compatible_printers_condition", "inherits", "flush_into_infill", "flush_into_objects", "flush_into_support", "tree_support_branch_angle", "tree_support_angle_slow", "tree_support_wall_count", "tree_support_top_rate", "tree_support_branch_distance", "tree_support_tip_diameter", - "tree_support_branch_diameter", "tree_support_branch_diameter_angle", "tree_support_branch_diameter_double_wall", + "tree_support_branch_diameter", "tree_support_branch_diameter_angle", "detect_narrow_internal_solid_infill", "gcode_add_line_number", "enable_arc_fitting", "precise_z_height", "infill_combination","infill_combination_max_layer_height", /*"adaptive_layer_height",*/ "support_bottom_interface_spacing", "enable_overhang_speed", "slowdown_for_curled_perimeters", "overhang_1_4_speed", "overhang_2_4_speed", "overhang_3_4_speed", "overhang_4_4_speed", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index aea3beb4e4..6d95d4e943 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -4940,26 +4940,14 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(5)); - def = this->add("tree_support_branch_diameter_double_wall", coFloat); - def->label = L("Branch Diameter with double walls"); - def->category = L("Support"); - // TRN PrintSettings: "Organic supports" > "Branch Diameter" - def->tooltip = L("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."); - def->sidetext = L("mm"); - def->min = 0; - def->max = 100.f; - def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloat(3.)); - def = this->add("tree_support_wall_count", coInt); def->label = L("Support wall loops"); def->category = L("Support"); - def->tooltip = L("This setting specifies the min count of support walls in the range of [0,2]. Actual wall count may be larger than the specified value."); + def->tooltip = L("This setting specifies the count of support walls in the range of [0,2]. 0 means auto."); def->min = 0; def->max = 2; def->mode = comAdvanced; - def->set_default_value(new ConfigOptionInt(1)); + def->set_default_value(new ConfigOptionInt(0)); def = this->add("tree_support_with_infill", coBool); def->label = L("Tree support with infill"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index b0c1d910fa..d7d4dd5087 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -843,7 +843,6 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloat, tree_support_tip_diameter)) ((ConfigOptionFloat, tree_support_branch_diameter)) ((ConfigOptionFloat, tree_support_branch_diameter_angle)) - ((ConfigOptionFloat, tree_support_branch_diameter_double_wall)) ((ConfigOptionFloat, tree_support_branch_angle)) ((ConfigOptionFloat, tree_support_angle_slow)) ((ConfigOptionInt, tree_support_wall_count)) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 247552a079..a2deed0924 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -1033,7 +1033,6 @@ bool PrintObject::invalidate_state_by_config_options( || opt_key == "tree_support_branch_diameter" || opt_key == "tree_support_branch_diameter_organic" || opt_key == "tree_support_branch_diameter_angle" - || opt_key == "tree_support_branch_diameter_double_wall" || opt_key == "tree_support_branch_angle" || opt_key == "tree_support_branch_angle_organic" || opt_key == "tree_support_angle_slow" diff --git a/src/libslic3r/Support/SupportParameters.hpp b/src/libslic3r/Support/SupportParameters.hpp index 2e3ec3a6da..82ced55094 100644 --- a/src/libslic3r/Support/SupportParameters.hpp +++ b/src/libslic3r/Support/SupportParameters.hpp @@ -153,7 +153,9 @@ struct SupportParameters { independent_layer_height = print_config.independent_support_layer_height; // force double walls everywhere if wall count is larger than 1 - tree_branch_diameter_double_wall_area_scaled = object_config.tree_support_wall_count.value > 1 ? 0.1 : 0.25 * sqr(scaled(5.0)) * M_PI; + tree_branch_diameter_double_wall_area_scaled = object_config.tree_support_wall_count.value > 1 ? 0.1 : + object_config.tree_support_wall_count.value == 0 ? 0.25 * sqr(scaled(5.0)) * M_PI : + std::numeric_limits::max(); support_style = object_config.support_style; if (support_style == smsDefault) { diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 2afb96ccf4..781e50de2b 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1540,17 +1540,7 @@ void TreeSupport::generate_toolpaths() erSupportMaterial, filler_support.get(), support_density); } else { - size_t walls = wall_count; - //if (area_group.need_extra_wall && walls < 2) walls += 1; - //for (size_t i = 1; i < walls; i++) { - // Polygons contour_new = offset(poly.contour, -(i - 0.5f) * flow.scaled_spacing(), jtSquare); - // loops.insert(loops.end(), contour_new.begin(), contour_new.end()); - //} - //fill_expolygons_with_sheath_generate_paths(ts_layer->support_fills.entities, loops, nullptr, 0, erSupportMaterial, flow, true, false); - SupportParameters support_params = m_support_params; - if(walls>1) - support_params.tree_branch_diameter_double_wall_area_scaled=0.1; - tree_supports_generate_paths(ts_layer->support_fills.entities, loops, flow, support_params); + tree_supports_generate_paths(ts_layer->support_fills.entities, loops, flow, m_support_params); } } } diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 4e13f7972c..a10f1399c9 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -614,7 +614,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co for (auto el : {"tree_support_auto_brim", "tree_support_brim_width", "tree_support_adaptive_layer_height"}) toggle_line(el, support_is_normal_tree); // settings specific to organic trees - for (auto el : {"tree_support_branch_angle_organic", "tree_support_branch_distance_organic", "tree_support_branch_diameter_organic","tree_support_angle_slow","tree_support_tip_diameter", "tree_support_top_rate", "tree_support_branch_diameter_angle", "tree_support_branch_diameter_double_wall"}) + for (auto el : {"tree_support_branch_angle_organic", "tree_support_branch_distance_organic", "tree_support_branch_diameter_organic","tree_support_angle_slow","tree_support_tip_diameter", "tree_support_top_rate", "tree_support_branch_diameter_angle"}) toggle_line(el, support_is_organic); toggle_field("tree_support_brim_width", support_is_tree && !config->opt_bool("tree_support_auto_brim")); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 4ae655c2cf..9e0b5eb8a5 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2242,7 +2242,6 @@ void TabPrint::build() optgroup->append_single_option_line("tree_support_branch_angle", "support#tree-support-only-options"); optgroup->append_single_option_line("tree_support_branch_angle_organic", "support#tree-support-only-options"); optgroup->append_single_option_line("tree_support_angle_slow"); - optgroup->append_single_option_line("tree_support_branch_diameter_double_wall"); optgroup->append_single_option_line("tree_support_adaptive_layer_height"); optgroup->append_single_option_line("tree_support_auto_brim"); optgroup->append_single_option_line("tree_support_brim_width"); From 724d8a12b651583eba6f5c621c2f9e5a0c622ce8 Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 19 Sep 2024 11:24:36 +0800 Subject: [PATCH 051/129] FIX: fix hybrid tree support may go outside plate 1. fix hybrid tree support may go outside plate github: #4769 2. fix false alarm of empty layer warning jira: STUDIO-8178 Change-Id: I7bcc3959b06184901cbec946e8840c7a94bc1cab (cherry picked from commit 647bd4213c363eff6258992f5f607c1f03cbc482) --- src/libslic3r/GCode.cpp | 17 +++++++++++++---- src/libslic3r/Support/TreeSupport.cpp | 5 +++++ src/libslic3r/Support/TreeSupport.hpp | 1 + 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index a1351cb6f5..c391d2be3a 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1202,14 +1202,23 @@ std::vector GCode::collect_layers_to_print(const PrintObjec // Allow empty support layers, as the support generator may produce no extrusions for non-empty support regions. || (layer_to_print.support_layer /* && layer_to_print.support_layer->has_extrusions() */)) { double top_cd = object.config().support_top_z_distance; - double bottom_cd = object.config().support_bottom_z_distance; - + double bottom_cd = object.config().support_bottom_z_distance == 0. ? top_cd : object.config().support_bottom_z_distance; + //if (!object.print()->config().independent_support_layer_height) + { // the actual support gap may be larger than the configured one due to rounding to layer height for organic support, regardless of independent support layer height + top_cd = std::ceil(top_cd / object.config().layer_height) * object.config().layer_height; + bottom_cd = std::ceil(bottom_cd / object.config().layer_height) * object.config().layer_height; + } double extra_gap = (layer_to_print.support_layer ? bottom_cd : top_cd); // raft contact distance should not trigger any warning - if(last_extrusion_layer && last_extrusion_layer->support_layer) + if (last_extrusion_layer && last_extrusion_layer->support_layer) { + double raft_gap = object.config().raft_contact_distance.value; + //if (!object.print()->config().independent_support_layer_height) + { + raft_gap = std::ceil(raft_gap / object.config().layer_height) * object.config().layer_height; + } extra_gap = std::max(extra_gap, object.config().raft_contact_distance.value); - + } double maximal_print_z = (last_extrusion_layer ? last_extrusion_layer->print_z() : 0.) + layer_to_print.layer()->height + std::max(0., extra_gap); diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 781e50de2b..8cd1926378 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1662,6 +1662,9 @@ void TreeSupport::generate() create_tree_support_layers(); m_ts_data = m_object->alloc_tree_support_preview_cache(); m_ts_data->is_slim = is_slim; + // // get the ring of outside plate + // auto tmp= diff_ex(offset_ex(m_machine_border, scale_(100)), m_machine_border); + // if (!tmp.empty()) m_ts_data->m_machine_border = tmp[0]; std::vector move_bounds(m_highest_overhang_layer + 1); profiler.stage_start(STAGE_GENERATE_CONTACT_NODES); @@ -2093,6 +2096,7 @@ void TreeSupport::draw_circles() // join roof segments roof_areas = diff_clipped(offset2_ex(roof_areas, line_width_scaled, -line_width_scaled), get_collision(false)); + roof_areas = intersection_ex(roof_areas, m_machine_border); roof_1st_layer = diff_clipped(offset2_ex(roof_1st_layer, line_width_scaled, -line_width_scaled), get_collision(false)); // roof_1st_layer and roof_areas may intersect, so need to subtract roof_areas from roof_1st_layer @@ -3460,6 +3464,7 @@ const ExPolygons& TreeSupportData::calculate_collision(const RadiusLayerPair& ke ExPolygons collision_areas = offset_ex(m_layer_outlines[key.layer_nr], scale_(key.radius+m_xy_distance)); collision_areas = expolygons_simplify(collision_areas, scale_(m_radius_sample_resolution)); + // collision_areas.emplace_back(m_machine_border); const auto ret = m_collision_cache.insert({ key, std::move(collision_areas) }); return ret.first->second; } diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index c9908c01dd..3c630629b4 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -251,6 +251,7 @@ public: std::vector layer_heights; std::vector contact_nodes; + // ExPolygon m_machine_border; private: /*! From e6880a468bcfc2950c1c05685a913f9d51e9da34 Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 26 Sep 2024 15:30:40 +0800 Subject: [PATCH 052/129] FIX: tree support crashes when it's too short jira: STUDIO-8277 Change-Id: I327d9fb7beb6cc2822131ca4954066217b1a5c9b (cherry picked from commit 00e5e84bbdfb680da74c4861a56ec8f5a867f58d) --- src/libslic3r/Support/TreeSupport.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 8cd1926378..b25a53d5ba 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -2136,7 +2136,7 @@ void TreeSupport::draw_circles() base_areas = std::move(diff_ex(base_areas, offset_ex(floor_areas, 10))); } } - if (bottom_gap_layers > 0 && layer_nr > bottom_gap_layers) { + if (bottom_gap_layers > 0 && m_ts_data->layer_heights[layer_nr].obj_layer_nr > bottom_gap_layers) { const Layer* below_layer = m_object->get_layer(m_ts_data->layer_heights[layer_nr].obj_layer_nr - bottom_gap_layers); ExPolygons bottom_gap_area = intersection_ex(floor_areas, below_layer->lslices); if (!bottom_gap_area.empty()) { From 36970dd9a23652daf3724e5a34d8d6633fe784f9 Mon Sep 17 00:00:00 2001 From: Arthur Date: Sun, 29 Sep 2024 19:22:21 +0800 Subject: [PATCH 053/129] FIX: hybrid tree support crash in some case jira: STUDIO-8313 Change-Id: Ide03d8f666232f457305f3dd298bf8151ba9c57b (cherry picked from commit 35bf682f7938ea6ddfa9525249c6a4cbb1f16071) --- src/libslic3r/Support/TreeSupport.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index b25a53d5ba..5dca8692f4 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -3474,7 +3474,10 @@ const ExPolygons& TreeSupportData::calculate_avoidance(const RadiusLayerPair& ke const auto &radius = key.radius; const auto &layer_nr = key.layer_nr; if (layer_nr == 0) { - m_avoidance_cache[key] = get_collision(radius, 0); + // avoid ExPolygons:~ExPolygons() in multi-threading case, as it's not thread-safe and may + // cause crash in some cases. See STUDIO-8313. + if (m_avoidance_cache.find(key) == m_avoidance_cache.end()) + m_avoidance_cache[key] = get_collision(radius, 0); return m_avoidance_cache[key]; } From 7a26dde977d55a68c1ae63fc24889817c05e099f Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 10 Oct 2024 12:05:20 +0800 Subject: [PATCH 054/129] ENH: improve shar tail detection of tree support The expansion was too large and may miss sharp tails near the object. jira: STUDIO-8400 Change-Id: Iee5bd15cc7c23f16d30365d5f1c9fbcc0a632c19 (cherry picked from commit 05174d07063d8296241de1d35f5b4196bc33a353) --- src/libslic3r/Support/TreeSupport.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 5dca8692f4..083e41c112 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -824,7 +824,7 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/) bool is_sharp_tail = false; // 1. nothing below // this is a sharp tail region if it's floating and non-ignorable - if (!overlaps(offset_ex(expoly, 0.5 * extrusion_width_scaled), lower_polys)) { + if (!overlaps(offset_ex(expoly, 0.1 * extrusion_width_scaled), lower_polys)) { is_sharp_tail = !offset_ex(expoly, -0.1 * extrusion_width_scaled).empty(); } From 07c7e2f9108cf24e57025049fec1f97868bb1f18 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 21 Oct 2024 17:13:24 +0800 Subject: [PATCH 055/129] FIX: solve tree support crash jira: STUDIO-8509 Change-Id: I8658538d7919136efbbf0d48cbf3d366e0621ded (cherry picked from commit d5b14e5c094fd68426f1be4d78734f7b86888eb2) --- src/libslic3r/Support/TreeSupport.cpp | 79 +++++++++++---------------- src/libslic3r/Support/TreeSupport.hpp | 3 +- 2 files changed, 34 insertions(+), 48 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 083e41c112..9f5457d2f8 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1947,7 +1947,7 @@ void TreeSupport::draw_circles() return; BOOST_LOG_TRIVIAL(info) << "draw_circles for object: " << m_object->model_object()->name; - tbb::parallel_for(tbb::blocked_range(0, contact_nodes.size()), + tbb::parallel_for(tbb::blocked_range(0, m_ts_data->layer_heights.size()), [&](const tbb::blocked_range& range) { for (size_t layer_nr = range.begin(); layer_nr < range.end(); layer_nr++) @@ -2597,7 +2597,8 @@ void TreeSupport::drop_nodes() // Remove all circle neighbours that are completely inside the polygon and merge them into this node. for (const Point &neighbour : neighbours) { SupportNode * neighbour_node = nodes_this_part[neighbour]; - if(neighbour_node->type==ePolygon) continue; + if (neighbour_node->valid == false) continue; + if (neighbour_node->type == ePolygon) continue; coord_t neighbour_radius = scale_(neighbour_node->radius); Point pt_north = neighbour + Point(0, neighbour_radius), pt_south = neighbour - Point(0, neighbour_radius), pt_west = neighbour - Point(neighbour_radius, 0), pt_east = neighbour + Point(neighbour_radius, 0); @@ -2871,8 +2872,6 @@ void TreeSupport::drop_nodes() for (; i_node != nullptr; i_node = i_node->parent) { size_t i_layer = i_node->obj_layer_nr; - std::vector::iterator to_erase = std::find(contact_nodes[i_layer].begin(), contact_nodes[i_layer].end(), i_node); - if (to_erase != contact_nodes[i_layer].end()) { // update the parent-child chain if (i_node->parent) { @@ -2887,18 +2886,23 @@ void TreeSupport::drop_nodes() i_node->child->parents.erase(std::find(i_node->child->parents.begin(), i_node->child->parents.end(), i_node)); append(i_node->child->parents, i_node->parents); } - contact_nodes[i_layer].erase(to_erase); - i_node->valid = false; + i_node->is_processed = true; // mark to be deleted later for (SupportNode* neighbour : i_node->merged_neighbours) { - unsupported_branch_leaves.push_front({ i_layer, neighbour }); + if (neighbour && !neighbour->is_processed) + unsupported_branch_leaves.push_front({ i_layer, neighbour }); } } } } + for (auto &layer_contact_nodes : contact_nodes) { + if (!layer_contact_nodes.empty()) + layer_contact_nodes.erase(std::remove_if(layer_contact_nodes.begin(), layer_contact_nodes.end(), [](SupportNode *node) { return node->is_processed; }), + layer_contact_nodes.end()); + } } - + BOOST_LOG_TRIVIAL(debug) << "after m_avoidance_cache.size()=" << m_ts_data->m_avoidance_cache.size(); } @@ -3419,32 +3423,20 @@ SupportNode* TreeSupportData::create_node(const Point position, const int distan { // this function may be called from multiple threads, need to lock m_mutex.lock(); - SupportNode* node = new SupportNode(position, distance_to_top, obj_layer_nr, support_roof_layers_below, to_buildplate, parent, print_z_, height_, dist_mm_to_top_, radius_); - contact_nodes.emplace_back(node); + std::unique_ptr node = std::make_unique(position, distance_to_top, obj_layer_nr, support_roof_layers_below, to_buildplate, parent, print_z_, height_, dist_mm_to_top_, radius_); + SupportNode* raw_ptr = node.get(); + contact_nodes.emplace_back(std::move(node)); m_mutex.unlock(); if (parent) - node->movement = position - parent->position; - return node; + raw_ptr->movement = position - parent->position; + return raw_ptr; } + void TreeSupportData::clear_nodes() { - for (auto node : contact_nodes) { - delete node; - } + tbb::spin_mutex::scoped_lock guard(m_mutex); contact_nodes.clear(); } -void TreeSupportData::remove_invalid_nodes() -{ - for (auto it = contact_nodes.begin(); it != contact_nodes.end();) { - if ((*it)->valid==false) { - delete (*it); - it = contact_nodes.erase(it); - } - else { - it++; - } - } -} coordf_t TreeSupportData::ceil_radius(coordf_t radius) const { @@ -3473,27 +3465,22 @@ const ExPolygons& TreeSupportData::calculate_avoidance(const RadiusLayerPair& ke { const auto &radius = key.radius; const auto &layer_nr = key.layer_nr; - if (layer_nr == 0) { - // avoid ExPolygons:~ExPolygons() in multi-threading case, as it's not thread-safe and may - // cause crash in some cases. See STUDIO-8313. - if (m_avoidance_cache.find(key) == m_avoidance_cache.end()) - m_avoidance_cache[key] = get_collision(radius, 0); - return m_avoidance_cache[key]; - } + ExPolygons avoidance_areas; + if (layer_nr > 0) { + // Avoidance for a given layer depends on all layers beneath it so could have very deep recursion depths if + // called at high layer heights. We can limit the reqursion depth to N by checking if the layer N + // below the current one exists and if not, forcing the calculation of that layer. This may cause another recursion + // if the layer at 2N below the current one but we won't exceed our limit unless there are N*N uncalculated layers + // below our current one. + constexpr auto max_recursion_depth = 100; + // Check if we would exceed the recursion limit by trying to process this layer + if (layer_nr >= max_recursion_depth && m_avoidance_cache.find({radius, layer_nr - max_recursion_depth}) == m_avoidance_cache.end()) { + // Force the calculation of the layer `max_recursion_depth` below our current one, ignoring the result. + get_avoidance(radius, layer_nr - max_recursion_depth); + } - // Avoidance for a given layer depends on all layers beneath it so could have very deep recursion depths if - // called at high layer heights. We can limit the reqursion depth to N by checking if the layer N - // below the current one exists and if not, forcing the calculation of that layer. This may cause another recursion - // if the layer at 2N below the current one but we won't exceed our limit unless there are N*N uncalculated layers - // below our current one. - constexpr auto max_recursion_depth = 100; - // Check if we would exceed the recursion limit by trying to process this layer - if (layer_nr >= max_recursion_depth && m_avoidance_cache.find({radius, layer_nr - max_recursion_depth}) == m_avoidance_cache.end()) { - // Force the calculation of the layer `max_recursion_depth` below our current one, ignoring the result. - get_avoidance(radius, layer_nr - max_recursion_depth); + avoidance_areas = offset_ex(get_avoidance(radius, layer_nr - 1), scale_(-m_max_move_distances[layer_nr-1])); } - - ExPolygons avoidance_areas = offset_ex(get_avoidance(radius, layer_nr - 1), scale_(-m_max_move_distances[layer_nr-1])); const ExPolygons &collision = get_collision(radius, layer_nr); avoidance_areas.insert(avoidance_areas.end(), collision.begin(), collision.end()); avoidance_areas = std::move(union_ex(avoidance_areas)); diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index 3c630629b4..86bd3a28df 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -247,10 +247,9 @@ public: SupportNode* create_node(const Point position, const int distance_to_top, const int obj_layer_nr, const int support_roof_layers_below, const bool to_buildplate, SupportNode* parent, coordf_t print_z_, coordf_t height_, coordf_t dist_mm_to_top_ = 0, coordf_t radius_ = 0); void clear_nodes(); - void remove_invalid_nodes(); std::vector layer_heights; - std::vector contact_nodes; + std::vector> contact_nodes; // ExPolygon m_machine_border; private: From 1c686b3c04bb13bf9c04efd05854e6b47733e73f Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 15 Oct 2024 14:48:31 +0800 Subject: [PATCH 056/129] ENH: improve tree supports 1. speedup organic tree support by using parallel for intersection of bed area jira: STUDIO-8451 2. add extra wall for hybrid tree support's tall branches 3. disable circle fitting for tree support. This feature produces inconsistent circles for tree supports. 4. expose the option tree_support_branch_diameter_angle. Tree supports' strength can be improved by increasing this value. Change-Id: If3688ca895df98a77f6ca538077daf8fe94e53f1 (cherry picked from commit 7697eb3dc8f87204d28e6be9adaf55dfcdadbc74) --- src/libslic3r/PrintConfig.cpp | 26 +++--- src/libslic3r/PrintConfig.hpp | 2 +- src/libslic3r/PrintObject.cpp | 89 +-------------------- src/libslic3r/Support/SupportCommon.cpp | 14 +++- src/libslic3r/Support/TreeSupport.cpp | 15 +++- src/libslic3r/Support/TreeSupport3D.cpp | 5 +- src/libslic3r/Support/TreeSupportCommon.hpp | 2 +- src/slic3r/GUI/GUI_Factories.cpp | 2 +- src/slic3r/GUI/Tab.cpp | 2 +- 9 files changed, 49 insertions(+), 108 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 6d95d4e943..bbaa7e6c97 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -4809,7 +4809,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionFloatOrPercent(50., true)); def = this->add("tree_support_branch_angle", coFloat); - def->label = L("Tree support branch angle"); + def->label = L("Branch angle"); def->category = L("Support"); def->tooltip = L("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."); @@ -4843,7 +4843,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionFloat(25)); def = this->add("tree_support_branch_distance", coFloat); - def->label = L("Tree support branch distance"); + def->label = L("Branch distance"); def->category = L("Support"); def->tooltip = L("This setting determines the distance between neighboring tree support nodes."); def->sidetext = L("mm"); @@ -4907,7 +4907,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionFloat(0.8)); def = this->add("tree_support_branch_diameter", coFloat); - def->label = L("Tree support branch diameter"); + def->label = L("Branch diameter"); def->category = L("Support"); def->tooltip = L("This setting determines the initial diameter of support nodes."); def->sidetext = L("mm"); @@ -4916,16 +4916,6 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(5.)); - def = this->add("tree_support_branch_diameter_organic", coFloat); - def->label = L("Tree support branch diameter"); - def->category = L("Support"); - def->tooltip = L("This setting determines the initial diameter of support nodes."); - def->sidetext = L("mm"); - def->min = 1.0; - def->max = 10; - def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloat(2.)); - def = this->add("tree_support_branch_diameter_angle", coFloat); // TRN PrintSettings: #lmFIXME def->label = L("Branch Diameter Angle"); @@ -4940,6 +4930,16 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(5)); + def = this->add("tree_support_branch_diameter_organic", coFloat); + def->label = L("Tree support branch diameter"); + def->category = L("Support"); + def->tooltip = L("This setting determines the initial diameter of support nodes."); + def->sidetext = L("mm"); + def->min = 1.0; + def->max = 10; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloat(2.)); + def = this->add("tree_support_wall_count", coInt); def->label = L("Support wall loops"); def->category = L("Support"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index d7d4dd5087..06778e1ad1 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -842,8 +842,8 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloat, tree_support_branch_distance)) ((ConfigOptionFloat, tree_support_tip_diameter)) ((ConfigOptionFloat, tree_support_branch_diameter)) - ((ConfigOptionFloat, tree_support_branch_diameter_angle)) ((ConfigOptionFloat, tree_support_branch_angle)) + ((ConfigOptionFloat, tree_support_branch_diameter_angle)) ((ConfigOptionFloat, tree_support_angle_slow)) ((ConfigOptionInt, tree_support_wall_count)) ((ConfigOptionBool, tree_support_adaptive_layer_height)) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index a2deed0924..9f1fbdc1e2 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -733,7 +733,8 @@ void PrintObject::simplify_extrusion_path() } if (this->set_started(posSimplifySupportPath)) { - //BBS: share same progress + //BBS: disable circle simplification for support as it causes separation of support walls + #if 0 m_print->set_status(75, L("Optimizing toolpath")); BOOST_LOG_TRIVIAL(debug) << "Simplify extrusion path of support in parallel - start"; tbb::parallel_for( @@ -747,6 +748,7 @@ void PrintObject::simplify_extrusion_path() ); m_print->throw_if_canceled(); BOOST_LOG_TRIVIAL(debug) << "Simplify extrusion path of support in parallel - end"; + #endif this->set_done(posSimplifySupportPath); } } @@ -3680,91 +3682,8 @@ template void PrintObject::remove_bridges_from_contacts( SupportNecessaryType PrintObject::is_support_necessary() { - static const double super_overhang_area_threshold = SQ(scale_(5.0)); const double cantilevel_dist_thresh = scale_(6); -#if 0 - double threshold_rad = (m_config.support_threshold_angle.value < EPSILON ? 30 : m_config.support_threshold_angle.value + 1) * M_PI / 180.; - int enforce_support_layers = m_config.enforce_support_layers; - // not fixing in extrusion width % PR b/c never called - const coordf_t extrusion_width = m_config.line_width.value; - const coordf_t extrusion_width_scaled = scale_(extrusion_width); - float max_bridge_length = scale_(m_config.max_bridge_length.value); - const bool bridge_no_support = max_bridge_length > 0;// config.bridge_no_support.value; - for (size_t layer_nr = enforce_support_layers + 1; layer_nr < this->layer_count(); layer_nr++) { - Layer* layer = m_layers[layer_nr]; - Layer* lower_layer = layer->lower_layer; - - coordf_t support_offset_scaled = extrusion_width_scaled * 0.9; - ExPolygons lower_layer_offseted = offset_ex(lower_layer->lslices, support_offset_scaled, SUPPORT_SURFACES_OFFSET_PARAMETERS); - - // 1. check sharp tail - for (const LayerRegion* layerm : layer->regions()) { - for (const ExPolygon& expoly : layerm->raw_slices) { - // detect sharp tail - if (intersection_ex({ expoly }, lower_layer_offseted).empty()) - return SharpTail; - } - } - - // 2. check overhang area - ExPolygons super_overhang_expolys = std::move(diff_ex(layer->lslices, lower_layer_offseted)); - super_overhang_expolys.erase(std::remove_if( - super_overhang_expolys.begin(), - super_overhang_expolys.end(), - [extrusion_width_scaled](ExPolygon& area) { - return offset_ex(area, -0.1 * extrusion_width_scaled).empty(); - }), - super_overhang_expolys.end()); - - // remove bridge - if (bridge_no_support) - remove_bridges_from_contacts(lower_layer, layer, extrusion_width_scaled, &super_overhang_expolys, max_bridge_length); - - Polygons super_overhang_polys = to_polygons(super_overhang_expolys); - - - super_overhang_polys.erase(std::remove_if( - super_overhang_polys.begin(), - super_overhang_polys.end(), - [extrusion_width_scaled](Polygon& area) { - return offset_ex(area, -0.1 * extrusion_width_scaled).empty(); - }), - super_overhang_polys.end()); - - double super_overhang_area = 0.0; - for (Polygon& poly : super_overhang_polys) { - bool is_ccw = poly.is_counter_clockwise(); - double area_ = poly.area(); - if (is_ccw) { - if (area_ > super_overhang_area_threshold) - return LargeOverhang; - super_overhang_area += area_; - } - else { - super_overhang_area -= area_; - } - } - - //if (super_overhang_area > super_overhang_area_threshold) - // return LargeOverhang; - - // 3. check overhang distance - const double distance_threshold_scaled = extrusion_width_scaled * 2; - ExPolygons lower_layer_offseted_2 = offset_ex(lower_layer->lslices, distance_threshold_scaled, SUPPORT_SURFACES_OFFSET_PARAMETERS); - ExPolygons exceed_overhang = std::move(diff_ex(super_overhang_polys, lower_layer_offseted_2)); - exceed_overhang.erase(std::remove_if( - exceed_overhang.begin(), - exceed_overhang.end(), - [extrusion_width_scaled](ExPolygon& area) { - // tolerance for 1 extrusion width offset - return offset_ex(area, -0.5 * extrusion_width_scaled).empty(); - }), - exceed_overhang.end()); - if (!exceed_overhang.empty()) - return LargeOverhang; - } -#else TreeSupport tree_support(*this, m_slicing_params); tree_support.support_type = SupportType::stTreeAuto; // need to set support type to fully utilize the power of feature detection tree_support.detect_overhangs(true); @@ -3773,7 +3692,7 @@ SupportNecessaryType PrintObject::is_support_necessary() return SharpTail; else if (tree_support.has_cantilever && tree_support.max_cantilever_dist > cantilevel_dist_thresh) return Cantilever; -#endif + return NoNeedSupp; } diff --git a/src/libslic3r/Support/SupportCommon.cpp b/src/libslic3r/Support/SupportCommon.cpp index 7651b1c71b..f4611a175f 100644 --- a/src/libslic3r/Support/SupportCommon.cpp +++ b/src/libslic3r/Support/SupportCommon.cpp @@ -1417,6 +1417,10 @@ SupportGeneratorLayersPtr generate_support_layers( append(layers_sorted, intermediate_layers); append(layers_sorted, interface_layers); append(layers_sorted, base_interface_layers); + // remove dupliated layers + std::sort(layers_sorted.begin(), layers_sorted.end()); + layers_sorted.erase(std::unique(layers_sorted.begin(), layers_sorted.end()), layers_sorted.end()); + // Sort the layers lexicographically by a raising print_z and a decreasing height. std::sort(layers_sorted.begin(), layers_sorted.end(), [](auto *l1, auto *l2) { return *l1 < *l2; }); int layer_id = 0; @@ -1648,7 +1652,7 @@ void generate_support_toolpaths( { SupportLayer &support_layer = *support_layers[support_layer_id]; LayerCache &layer_cache = layer_caches[support_layer_id]; - const float support_interface_angle = support_params.support_style == smsGrid ? + const float support_interface_angle = (support_params.support_style == smsGrid || config.support_interface_pattern == smipRectilinear) ? support_params.interface_angle : support_params.raft_interface_angle(support_layer.interface_id()); // Find polygons with the same print_z. @@ -1785,7 +1789,7 @@ void generate_support_toolpaths( // Base support or flange. if (! base_layer.empty() && ! base_layer.polygons_to_extrude().empty()) { - Fill *filler = filler_support.get(); + Fill *filler = filler_support.get(); filler->angle = angles[support_layer_id % angles.size()]; // We don't use $base_flow->spacing because we need a constant spacing // value that guarantees that all layers are correctly aligned. @@ -1811,7 +1815,11 @@ void generate_support_toolpaths( sheath = true; no_sort = true; } else if (support_params.support_style == SupportMaterialStyle::smsTreeOrganic) { - tree_supports_generate_paths(base_layer.extrusions, base_layer.polygons_to_extrude(), flow, support_params); + // if the tree supports are too tall, use double wall to make it stronger + SupportParameters support_params2 = support_params; + if (support_layer.print_z > 100.0) + support_params2.tree_branch_diameter_double_wall_area_scaled = 0.1; + tree_supports_generate_paths(base_layer.extrusions, base_layer.polygons_to_extrude(), flow, support_params2); done = true; } if (! done) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 9f5457d2f8..efbb3b8191 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1540,7 +1540,10 @@ void TreeSupport::generate_toolpaths() erSupportMaterial, filler_support.get(), support_density); } else { - tree_supports_generate_paths(ts_layer->support_fills.entities, loops, flow, m_support_params); + SupportParameters support_params = m_support_params; + if (area_group.need_extra_wall && object_config.tree_support_wall_count.value == 0) + support_params.tree_branch_diameter_double_wall_area_scaled = 0.1; + tree_supports_generate_paths(ts_layer->support_fills.entities, loops, flow, support_params); } } } @@ -2917,6 +2920,10 @@ void TreeSupport::smooth_nodes() } float max_move = scale_(m_object_config->support_line_width / 2); + // if the branch is very tall, the tip also needs extra wall + float thresh_tall_branch = 100; + float thresh_dist_to_top = 30; + for (int layer_nr = 0; layer_nr< contact_nodes.size(); layer_nr++) { std::vector &curr_layer_nodes = contact_nodes[layer_nr]; if (curr_layer_nodes.empty()) continue; @@ -2926,17 +2933,20 @@ void TreeSupport::smooth_nodes() std::vector radii; std::vector branch; SupportNode * p_node = node; + float total_height = 0; // add a fixed head if it's not a polygon node, see STUDIO-4403 // Polygon node can't be added because the move distance might be huge, making the nodes in between jump and dangling if (node->child && node->child->type!=ePolygon) { pts.push_back(p_node->child->position); radii.push_back(p_node->child->radius); branch.push_back(p_node->child); + total_height += p_node->child->height; } do { pts.push_back(p_node->position); radii.push_back(p_node->radius); branch.push_back(p_node); + total_height += p_node->height; p_node = p_node->parent; } while (p_node && !p_node->is_processed); if (pts.size() < 3) continue; @@ -2955,7 +2965,8 @@ void TreeSupport::smooth_nodes() branch[i]->radius = radii1[i]; branch[i]->movement = (pts[i + 1] - pts[i - 1]) / 2; branch[i]->is_processed = true; - if (branch[i]->parents.size()>1 || (branch[i]->movement.x() > max_move || branch[i]->movement.y() > max_move)) + if (branch[i]->parents.size() > 1 || (branch[i]->movement.x() > max_move || branch[i]->movement.y() > max_move) || + (total_height > thresh_tall_branch && branch[i]->dist_mm_to_top < thresh_dist_to_top)) branch[i]->need_extra_wall = true; BOOST_LOG_TRIVIAL(info) << "smooth_nodes: layer_nr=" << layer_nr << ", i=" << i << ", pt=" << pt << ", movement=" << branch[i]->movement << ", radius=" << branch[i]->radius; } diff --git a/src/libslic3r/Support/TreeSupport3D.cpp b/src/libslic3r/Support/TreeSupport3D.cpp index dad831076c..8b8acd7b57 100644 --- a/src/libslic3r/Support/TreeSupport3D.cpp +++ b/src/libslic3r/Support/TreeSupport3D.cpp @@ -36,6 +36,7 @@ #include #include +#include #if defined(TREE_SUPPORT_SHOW_ERRORS) && defined(_WIN32) #define TREE_SUPPORT_SHOW_ERRORS_WIN32 @@ -3551,7 +3552,9 @@ static void generate_support_areas(Print &print, TreeSupport* tree_support, cons print.set_status(69, _L("Generating support")); generate_support_toolpaths(print_object.support_layers(), print_object.config(), support_params, print_object.slicing_parameters(), raft_layers, bottom_contacts, top_contacts, intermediate_layers, interface_layers, base_interface_layers); - + + auto t_end = std::chrono::high_resolution_clock::now(); + BOOST_LOG_TRIVIAL(info) << "Total time of organic tree support: " << 0.001 * std::chrono::duration_cast(t_end - t_start).count() << " ms"; #if 0 //#ifdef SLIC3R_DEBUG { diff --git a/src/libslic3r/Support/TreeSupportCommon.hpp b/src/libslic3r/Support/TreeSupportCommon.hpp index 3122a43d2d..31e410838d 100644 --- a/src/libslic3r/Support/TreeSupportCommon.hpp +++ b/src/libslic3r/Support/TreeSupportCommon.hpp @@ -87,7 +87,7 @@ struct TreeSupportMeshGroupSettings { this->support_tree_angle = std::clamp(config.tree_support_branch_angle_organic * M_PI / 180., 0., 0.5 * M_PI - EPSILON); this->support_tree_angle_slow = std::clamp(config.tree_support_angle_slow * M_PI / 180., 0., this->support_tree_angle - EPSILON); this->support_tree_branch_diameter = scaled(config.tree_support_branch_diameter_organic.value); - this->support_tree_branch_diameter_angle = std::clamp(config.tree_support_branch_diameter_angle * M_PI / 180., 0., 0.5 * M_PI - EPSILON); + this->support_tree_branch_diameter_angle = std::clamp(config.tree_support_branch_diameter_angle * M_PI / 180., 0., 0.5 * M_PI - EPSILON); this->support_tree_top_rate = config.tree_support_top_rate.value; // percent // this->support_tree_tip_diameter = this->support_line_width; this->support_tree_tip_diameter = std::clamp(scaled(config.tree_support_tip_diameter.value), (coord_t)0, this->support_tree_branch_diameter); diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index 096a83a512..f3861c69aa 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -90,7 +90,7 @@ std::map> SettingsFactory::OBJECT_C { L("Support"), {{"brim_type", "",1},{"brim_width", "",2},{"brim_object_gap", "",3}, {"enable_support", "",4},{"support_type", "",5},{"support_threshold_angle", "",6}, {"support_threshold_overlap", "",6}, {"support_on_build_plate_only", "",7}, {"support_filament", "",8},{"support_interface_filament", "",9},{"support_expansion", "",24},{"support_style", "",25}, - {"tree_support_brim_width", "",26}, {"tree_support_branch_angle", "",10},{"tree_support_branch_angle_organic","",10}, {"tree_support_wall_count", "",11},//tree support + {"tree_support_brim_width", "",26}, {"tree_support_branch_angle", "",10},{"tree_support_branch_angle_organic","",10}, {"tree_support_wall_count", "",11},{"tree_support_branch_diameter_angle", "",11},//tree support {"support_top_z_distance", "",13},{"support_bottom_z_distance", "",12},{"support_base_pattern", "",14},{"support_base_pattern_spacing", "",15}, {"support_interface_top_layers", "",16},{"support_interface_bottom_layers", "",17},{"support_interface_spacing", "",18},{"support_bottom_interface_spacing", "",19}, {"support_object_xy_distance", "",20}, {"bridge_no_support", "",21},{"max_bridge_length", "",22},{"support_critical_regions_only", "",23},{"support_remove_small_overhang","",27}, diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 9e0b5eb8a5..9abcbfb2de 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2228,7 +2228,7 @@ void TabPrint::build() optgroup->append_single_option_line("support_object_xy_distance", "support"); optgroup->append_single_option_line("support_object_first_layer_gap", "support"); optgroup->append_single_option_line("bridge_no_support", "support#base-pattern"); - optgroup->append_single_option_line("max_bridge_length", "support#base-pattern"); + optgroup->append_single_option_line("max_bridge_length", "support#tree-support-only-options"); optgroup->append_single_option_line("independent_support_layer_height", "support"); optgroup = page->new_optgroup(L("Tree supports"), L"param_support_tree"); From c1df01fd8ec93ea54bee54b1eb4d148e4a6445de Mon Sep 17 00:00:00 2001 From: Arthur Date: Sun, 27 Oct 2024 13:26:03 +0800 Subject: [PATCH 057/129] FIX: hybrid tree support may crash due to empty extrusion entities jira: none Change-Id: I521e27e7a4d12189efc77768d10d264d0d6db111 (cherry picked from commit 64ab78298bc0c9a32ea5bcec5beddfc103074f53) --- src/libslic3r/Support/TreeSupport.cpp | 3 ++- src/libslic3r/Support/TreeSupport.hpp | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index efbb3b8191..dbf462c113 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -611,7 +611,7 @@ TreeSupport::TreeSupport(PrintObject& object, const SlicingParameters &slicing_p if(support_pattern == smpLightning) m_support_params.base_fill_pattern = ipLightning; - + diameter_angle_scale_factor = std::clamp(m_object_config->tree_support_branch_diameter_angle * M_PI / 180., 0., 0.5 * M_PI - EPSILON); is_slim = is_tree_slim(support_type, m_support_params.support_style); is_strong = is_tree(support_type) && m_support_params.support_style == smsTreeStrong; base_radius = std::max(MIN_BRANCH_RADIUS, m_object_config->tree_support_branch_diameter.value / 2); @@ -1293,6 +1293,7 @@ static void make_perimeter_and_infill(ExtrusionEntitiesPtr& dst, const ExPolygon dst = std::move(loops_entities); } } + dst.erase(std::remove_if(dst.begin(), dst.end(), [](ExtrusionEntity *entity) { return static_cast(entity)->empty(); }), dst.end()); if (infill_first) { // sort regions to reduce travel Points ordering_points; diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index 86bd3a28df..8afc241926 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -440,8 +440,7 @@ private: const coordf_t MIN_BRANCH_RADIUS = 0.4; const coordf_t MAX_BRANCH_RADIUS_FIRST_LAYER = 12.0; const coordf_t MIN_BRANCH_RADIUS_FIRST_LAYER = 2.0; - const double tree_support_branch_diameter_angle = 5.0; - const double diameter_angle_scale_factor = tan(tree_support_branch_diameter_angle*M_PI/180.0); + double diameter_angle_scale_factor = tan(5.0*M_PI/180.0); // minimum roof area (1 mm^2), area smaller than this value will not have interface const double minimum_roof_area{SQ(scaled(1.))}; float top_z_distance = 0.0; From d54d81e89d1fc0fa9000d9c6c44c6e0f3dd3c2d6 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 29 Oct 2024 19:23:49 +0800 Subject: [PATCH 058/129] FIX: 0 top z distance of hybrid tree support not working 1. fix the issue that setting top z distance=0 not working 2. remove too small extrusions of tree support jira: STUDIO-8578 Change-Id: I8c3face9d6a756698a6fab876fdb1acc0686647c (cherry picked from commit 4d219266a1f520445bec6ac5a0274dcfec4050e8) --- src/libslic3r/Slicing.cpp | 2 +- src/libslic3r/Support/TreeSupport.cpp | 30 ++++++++++++++++----------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/libslic3r/Slicing.cpp b/src/libslic3r/Slicing.cpp index 6655e3911d..f3499b7d36 100644 --- a/src/libslic3r/Slicing.cpp +++ b/src/libslic3r/Slicing.cpp @@ -114,7 +114,7 @@ SlicingParameters SlicingParameters::create_from_config( params.min_layer_height = std::min(params.min_layer_height, params.layer_height); params.max_layer_height = std::max(params.max_layer_height, params.layer_height); - if (! soluble_interface || is_tree_slim(object_config.support_type.value, object_config.support_style.value)) { + if (! soluble_interface) { params.gap_raft_object = object_config.raft_contact_distance.value; //BBS params.gap_object_support = object_config.support_bottom_z_distance.value; diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index dbf462c113..737334367c 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -2148,17 +2148,25 @@ void TreeSupport::draw_circles() } } auto &area_groups = ts_layer->area_groups; - for (auto& area : ts_layer->base_areas) { - area_groups.emplace_back(&area, SupportLayer::BaseType, max_layers_above_base); - area_groups.back().need_infill = overlaps({ area }, area_poly); - area_groups.back().need_extra_wall = need_extra_wall; + for (auto& expoly : ts_layer->base_areas) { + if (area(expoly) < SQ(scale_(1))) continue; + area_groups.emplace_back(&expoly, SupportLayer::BaseType, max_layers_above_base); + area_groups.back().need_infill = overlaps({ expoly }, area_poly); + area_groups.back().need_extra_wall = need_extra_wall && !area_groups.back().need_infill; } - for (auto& area : ts_layer->roof_areas) { - area_groups.emplace_back(&area, SupportLayer::RoofType, max_layers_above_roof); + for (auto& expoly : ts_layer->roof_areas) { + if (area(expoly) < SQ(scale_(1))) continue; + area_groups.emplace_back(&expoly, SupportLayer::RoofType, max_layers_above_roof); area_groups.back().interface_id = interface_id; } - for (auto &area : ts_layer->floor_areas) area_groups.emplace_back(&area, SupportLayer::FloorType, 10000); - for (auto &area : ts_layer->roof_1st_layer) area_groups.emplace_back(&area, SupportLayer::Roof1stLayer, max_layers_above_roof1); + for (auto &expoly : ts_layer->floor_areas) { + if (area(expoly) < SQ(scale_(1))) continue; + area_groups.emplace_back(&expoly, SupportLayer::FloorType, 10000); + } + for (auto &expoly : ts_layer->roof_1st_layer) { + if (area(expoly) < SQ(scale_(1))) continue; + area_groups.emplace_back(&expoly, SupportLayer::Roof1stLayer, max_layers_above_roof1); + } for (auto &area_group : area_groups) { auto& expoly = area_group.area; @@ -3075,7 +3083,7 @@ std::vector TreeSupport::plan_layer_heights() for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { if (contact_nodes[layer_nr].empty()) continue; SupportNode *node1 = contact_nodes[layer_nr].front(); - auto it = z_heights.lower_bound(node1->print_z - EPSILON); + auto it = z_heights.lower_bound(node1->print_z + EPSILON); if (it == z_heights.end()) it = std::prev(it); int layer_nr2 = std::distance(z_heights.begin(), it); contact_nodes2[layer_nr2].insert(contact_nodes2[layer_nr2].end(), contact_nodes[layer_nr].begin(), contact_nodes[layer_nr].end()); @@ -3091,6 +3099,7 @@ std::vector TreeSupport::plan_layer_heights() << ", object_layer_zs[" << layer_heights[layer_nr].obj_layer_nr << "]=" << m_object->get_layer(layer_heights[layer_nr].obj_layer_nr)->print_z; coordf_t new_height = layer_heights[layer_nr].height; if (std::abs(node1->height - new_height) < EPSILON) continue; + if (top_z_distance < EPSILON && node1->height < EPSILON) continue; // top_z_distance==0, this is soluable interface coordf_t accum_height = 0; int num_layers = 0; for (int i=layer_nr;i>=0;i--){ @@ -3164,9 +3173,6 @@ void TreeSupport::generate_contact_points() // } const int z_distance_top_layers = round_up_divide(scale_(z_distance_top), scale_(layer_height)) + 1; //Support must always be 1 layer below overhang. int gap_layers = z_distance_top == 0 ? 0 : 1; - // virtual layer with 0 height will be deleted - if (z_distance_top == 0) - z_distance_top = 0.001; size_t support_roof_layers = config.support_interface_top_layers.value; if (support_roof_layers > 0) From 9f4d9fb4636220c3cb24665d2bc1438dd17f9a63 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 6 Nov 2024 14:10:08 +0800 Subject: [PATCH 059/129] FIX: normal support missing base interface layers jira: STUDIO-8642 Change-Id: Ib104fdb195f8766d452138eb85d8b86cbac96981 (cherry picked from commit 4655ec449b9bc86747d4054bbfb20c60f784c8c9) --- src/libslic3r/Support/SupportParameters.hpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Support/SupportParameters.hpp b/src/libslic3r/Support/SupportParameters.hpp index 82ced55094..304f3a23af 100644 --- a/src/libslic3r/Support/SupportParameters.hpp +++ b/src/libslic3r/Support/SupportParameters.hpp @@ -33,8 +33,13 @@ struct SupportParameters { this->num_top_base_interface_layers = size_t(std::min(int(num_top_interface_layers) / 2, 2)); this->num_bottom_base_interface_layers = size_t(std::min(int(num_bottom_interface_layers) / 2, 2)); } else { - this->num_top_base_interface_layers = 0; - this->num_bottom_base_interface_layers = 0; + // BBS: if support interface and support base do not use the same filament, add a base layer to improve their adhesion + // Note: support materials (such as Supp.W) can't be used as support base now, so support interface and base are still using different filaments even if + // support_filament==0 + bool differnt_support_interface_filament = object_config.support_interface_filament != 0 && + object_config.support_interface_filament != object_config.support_filament; + this->num_top_base_interface_layers = differnt_support_interface_filament ? 1 : 0; + this->num_bottom_base_interface_layers = differnt_support_interface_filament ? 1 : 0; } } this->first_layer_flow = Slic3r::support_material_1st_layer_flow(&object, float(slicing_params.first_print_layer_height)); From 9e1b856e99d09e21cf31a1c9a9b65d67e89703eb Mon Sep 17 00:00:00 2001 From: "jiaxi.chen" Date: Mon, 18 Nov 2024 10:29:22 +0800 Subject: [PATCH 060/129] FIX: protect when support_style doesnt match type jira: STUDIO-8800 Change-Id: I7d42f95ba43b4b3a47a83ae59afaaf9bc94baa5d (cherry picked from commit d4bc450af6d2381bd5eb891c1395ebd50ca1c322) --- src/libslic3r/Support/SupportParameters.hpp | 6 ++++++ src/libslic3r/Support/TreeSupport.cpp | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/libslic3r/Support/SupportParameters.hpp b/src/libslic3r/Support/SupportParameters.hpp index 304f3a23af..da21895b34 100644 --- a/src/libslic3r/Support/SupportParameters.hpp +++ b/src/libslic3r/Support/SupportParameters.hpp @@ -163,6 +163,12 @@ struct SupportParameters { std::numeric_limits::max(); support_style = object_config.support_style; + if (support_style != smsDefault) { + if ((support_style == smsSnug || support_style == smsGrid) && is_tree(object_config.support_type)) support_style = smsDefault; + if ((support_style == smsTreeSlim || support_style == smsTreeStrong || support_style == smsTreeHybrid || support_style == smsTreeOrganic) && + !is_tree(object_config.support_type)) + support_style = smsDefault; + } if (support_style == smsDefault) { if (is_tree(object_config.support_type)) { // Orca: use organic as default diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 737334367c..7bb9364133 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1650,6 +1650,8 @@ void TreeSupport::move_bounds_to_contact_nodes(std::vectorsupport_type.value)) return; + if (m_support_params.support_style == smsTreeOrganic) { generate_tree_support_3D(*m_object, this, this->throw_on_cancel); return; From 35157c9421ed88d2f4bada08b3362341a57995f8 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 2 Dec 2024 15:56:10 +0800 Subject: [PATCH 061/129] FIX: apply xy_expansion after support blocker jira: STUDIO-9040 Change-Id: I30e09a67047f651a547082bff737524aba940f19 (cherry picked from commit 5e476a1385286246a312b76bdaa836f18715b523) --- src/libslic3r/Support/SupportMaterial.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/Support/SupportMaterial.cpp b/src/libslic3r/Support/SupportMaterial.cpp index 47c476564b..61be8d3912 100644 --- a/src/libslic3r/Support/SupportMaterial.cpp +++ b/src/libslic3r/Support/SupportMaterial.cpp @@ -1457,7 +1457,6 @@ static inline ExPolygons detect_overhangs( // This is done to increase size of the supporting columns below, as they are calculated by // propagating these contact surfaces downwards. diff_polygons = diff(intersection(expand(diff_polygons, lower_layer_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS), layerm_polygons), lower_layer_polygons); - if (xy_expansion != 0) { diff_polygons = expand(diff_polygons, xy_expansion, SUPPORT_SURFACES_OFFSET_PARAMETERS); } } //FIXME add user defined filtering here based on minimal area or minimum radius or whatever. @@ -1509,6 +1508,8 @@ static inline ExPolygons detect_overhangs( if (diff_polygons.empty() || offset(diff_polygons, -0.1 * fw).empty()) continue; + if (xy_expansion != 0) { diff_polygons = expand(diff_polygons, xy_expansion, SUPPORT_SURFACES_OFFSET_PARAMETERS); } + polygons_append(overhang_polygons, diff_polygons); } // for each layer.region } From d7cf4b227445a4bf68c967d51c75e3200ffb8f2b Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 3 Dec 2024 12:00:26 +0800 Subject: [PATCH 062/129] FIX: inconsistent infill in hybrid tree support jira: STUDIO-9058 Change-Id: I62f6225d33708e8a161600930c6e0dff229f5995 (cherry picked from commit f774fda6e67e25bedc89e8ef8b2dfb77436f95f2) --- src/libslic3r/Support/TreeSupport.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 7bb9364133..e847ed3054 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -2032,8 +2032,7 @@ void TreeSupport::draw_circles() area = offset_ex({ node.overhang }, scale_(m_ts_data->m_xy_distance)); } area = diff_clipped(area, get_collision(node.is_sharp_tail && node.distance_to_top <= 0)); - if (node.type == ePolygon) - area_poly = area; + if (node.type == ePolygon) append(area_poly, area); } else { Polygon circle(branch_circle); From ee1bd704efc39cf6d75e8cbe9ab944c41f4ebbf6 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 4 Dec 2024 17:14:07 +0800 Subject: [PATCH 063/129] FIX: merge support interfaces into a continuous large one jira: STUDIO-8611 github: #5132 Change-Id: I12ee4a9f88a78304a98f354bfaa92e2a05f19ec2 (cherry picked from commit b7c8c7e8feb199b01f52e1fbfbba4469657db3b7) (cherry picked from commit c331b61cabd521cacd42d010c2936f8280a2b9f3) --- src/libslic3r/Support/TreeSupport.cpp | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index e847ed3054..8df6055e4a 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1,6 +1,7 @@ +#include #include - +#include "format.hpp" #include "ClipperUtils.hpp" #include "Fill/FillBase.hpp" #include "I18N.hpp" @@ -223,6 +224,7 @@ static void draw_contours_and_nodes_to_svg // draw layer nodes svg.draw(layer_pts, "green", coord_t(scale_(0.1))); + for (SupportNode *node : layer_nodes) { svg.draw({node->overhang}, "green", 0.5); } // lower layer points layer_pts.clear(); @@ -231,13 +233,13 @@ static void draw_contours_and_nodes_to_svg } svg.draw(layer_pts, "black", coord_t(scale_(0.1))); - // higher layer points - layer_pts.clear(); - for (SupportNode* node : layer_nodes) { - if(node->parent) - layer_pts.push_back(node->parent->position); - } - svg.draw(layer_pts, "blue", coord_t(scale_(0.1))); + //// higher layer points + //layer_pts.clear(); + //for (SupportNode* node : layer_nodes) { + // if(node->parent) + // layer_pts.push_back(node->parent->position); + //} + //svg.draw(layer_pts, "blue", coord_t(scale_(0.1))); } static void draw_layer_mst @@ -2063,6 +2065,12 @@ void TreeSupport::draw_circles() if(!tmp.empty()) circle = tmp[0]; } + area = avoid_object_remove_extra_small_parts(ExPolygon(circle), get_collision(node.is_sharp_tail && node.distance_to_top <= 0)); + // area = diff_clipped({ ExPolygon(circle) }, get_collision(node.is_sharp_tail && node.distance_to_top <= 0)); + + if (!area.empty()) has_circle_node = true; + if (node.need_extra_wall) need_extra_wall = true; + // merge overhang to get a smoother interface surface // Do not merge when buildplate_only is on, because some underneath nodes may have been deleted. if (top_interface_layers > 0 && node.support_roof_layers_below > 0 && !on_buildplate_only && !node.is_sharp_tail) { @@ -3328,6 +3336,7 @@ void TreeSupport::generate_contact_points() if (!curr_nodes.empty()) nonempty_layers++; for (auto node : curr_nodes) { all_nodes.emplace_back(node->position(0), node->position(1), scale_(node->print_z)); } #ifdef SUPPORT_TREE_DEBUG_TO_SVG + if (!curr_nodes.empty()) draw_contours_and_nodes_to_svg(debug_out_path("init_contact_points_%.2f.svg", bottom_z), layer->loverhangs,layer->lslices_extrudable, m_ts_data->m_layer_outlines_below[layer_nr], contact_nodes[layer_nr], contact_nodes[layer_nr - 1], { "overhang","lslices","outlines_below"}); #endif From ed9ba7dcb77b7380477d68e1e9ee6b19746aed42 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 6 Dec 2024 20:36:04 +0800 Subject: [PATCH 064/129] FIX: sharp tail miss detection jira: STUDIO-7973 Change-Id: I76b0dc56fe6cf44bacad4c35874695efee29c2f9 (cherry picked from commit 3fe1728f40e2a09340b061681895e4691bd1a8f7) (cherry picked from commit 7665aeb69ce53d7f9e1c50857b49985cd6912534) --- src/libslic3r/Support/TreeSupport.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 8df6055e4a..3dfe29d7db 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -2853,7 +2853,7 @@ void TreeSupport::drop_nodes() } } auto next_collision = get_collision(0, obj_layer_nr_next); - const bool to_buildplate = !is_inside_ex(next_collision, next_layer_vertex); + const bool to_buildplate = !is_inside_ex(m_ts_data->m_layer_outlines[obj_layer_nr_next], next_layer_vertex); SupportNode * next_node = m_ts_data->create_node(next_layer_vertex, node.distance_to_top + 1, obj_layer_nr_next, node.support_roof_layers_below - 1, to_buildplate, p_node, print_z_next, height_next); // don't increase radius if next node will collide partially with the object (STUDIO-7883) From d41c0a812b7810bd2cef8cf891f0733d25c9b1f6 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 11 Dec 2024 16:39:36 +0800 Subject: [PATCH 065/129] FIX: top z distance disappears in some cases jira: STUDIO-8883 github: #5334 Change-Id: Ie70f6dada19cc17cd74fa6aa116d1ca4fb4a07d7 (cherry picked from commit 849d41576c64527c2b9c0bfffdec37f29ed9b68b) --- src/libslic3r/Support/TreeSupport.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 3dfe29d7db..933f5737bc 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -3092,9 +3092,11 @@ std::vector TreeSupport::plan_layer_heights() for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { if (contact_nodes[layer_nr].empty()) continue; SupportNode *node1 = contact_nodes[layer_nr].front(); - auto it = z_heights.lower_bound(node1->print_z + EPSILON); - if (it == z_heights.end()) it = std::prev(it); - int layer_nr2 = std::distance(z_heights.begin(), it); + auto it = std::min_element(layer_heights.begin(), layer_heights.end(), [node1](const LayerHeightData &l1, const LayerHeightData &l2) { + return std::abs(l1.print_z - node1->print_z) < std::abs(l2.print_z - node1->print_z); + }); + if (it == layer_heights.end()) it = std::prev(it); + int layer_nr2 = std::distance(layer_heights.begin(), it); contact_nodes2[layer_nr2].insert(contact_nodes2[layer_nr2].end(), contact_nodes[layer_nr].begin(), contact_nodes[layer_nr].end()); } contact_nodes = contact_nodes2; @@ -3118,7 +3120,7 @@ std::vector TreeSupport::plan_layer_heights() if (accum_height > node1->height - EPSILON) break; } } - BOOST_LOG_TRIVIAL(debug) << format("plan_layer_heights adjust node's height %d %.2f: (%.3f,%d)->(%.3f,%.3f,%d)", layer_nr, node1->print_z, + BOOST_LOG_TRIVIAL(debug) << format("plan_layer_heights adjust node's height print_z[%d]=%.2f: (%.3f,%d)->(%.3f,%.3f,%d)", layer_nr, node1->print_z, node1->height, node1->distance_to_top, new_height, accum_height, -num_layers); for (SupportNode *node : contact_nodes[layer_nr]) { node->height = new_height; From 393e2f4027953ab0978cb9d5dd6aba125a09d9a2 Mon Sep 17 00:00:00 2001 From: "jiaxi.chen" Date: Wed, 18 Dec 2024 16:51:21 +0800 Subject: [PATCH 066/129] FIX: fix the bug of missing layers in SlimTree and HybridTree jira: STUDIO-8756 Change-Id: I12c09ec2e3c1a2ee138472ff7c63675d0ee26ba0 (cherry picked from commit 36d80e7b24a4bdcce2d3957e0fd3ea61c8dc6bdc) (cherry picked from commit 0d1bdab97d7e400fc4dd91dde0b3e8d00d2ee7f7) --- src/libslic3r/Support/TreeSupport.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 933f5737bc..a1faf1d06d 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -2158,22 +2158,22 @@ void TreeSupport::draw_circles() } auto &area_groups = ts_layer->area_groups; for (auto& expoly : ts_layer->base_areas) { - if (area(expoly) < SQ(scale_(1))) continue; + //if (area(expoly) < SQ(scale_(1))) continue; area_groups.emplace_back(&expoly, SupportLayer::BaseType, max_layers_above_base); area_groups.back().need_infill = overlaps({ expoly }, area_poly); area_groups.back().need_extra_wall = need_extra_wall && !area_groups.back().need_infill; } for (auto& expoly : ts_layer->roof_areas) { - if (area(expoly) < SQ(scale_(1))) continue; + //if (area(expoly) < SQ(scale_(1))) continue; area_groups.emplace_back(&expoly, SupportLayer::RoofType, max_layers_above_roof); area_groups.back().interface_id = interface_id; } for (auto &expoly : ts_layer->floor_areas) { - if (area(expoly) < SQ(scale_(1))) continue; + //if (area(expoly) < SQ(scale_(1))) continue; area_groups.emplace_back(&expoly, SupportLayer::FloorType, 10000); } for (auto &expoly : ts_layer->roof_1st_layer) { - if (area(expoly) < SQ(scale_(1))) continue; + //if (area(expoly) < SQ(scale_(1))) continue; area_groups.emplace_back(&expoly, SupportLayer::Roof1stLayer, max_layers_above_roof1); } From dc3938e0ea8632df25816679f4e0f72e99ceccd6 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 20 Dec 2024 11:59:17 +0800 Subject: [PATCH 067/129] ENH: reduce organic tree support log level jira: none Change-Id: I17b876d88974e632c592bd36f3fea700a51f86be (cherry picked from commit 97de4e87cfbff84c04c247bdf525ac83119e177f) --- src/libslic3r/Support/TreeModelVolumes.cpp | 2 +- src/libslic3r/Support/TreeSupport3D.cpp | 21 +++++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/libslic3r/Support/TreeModelVolumes.cpp b/src/libslic3r/Support/TreeModelVolumes.cpp index 9c49c813a9..9cf8b3df37 100644 --- a/src/libslic3r/Support/TreeModelVolumes.cpp +++ b/src/libslic3r/Support/TreeModelVolumes.cpp @@ -33,7 +33,7 @@ using namespace std::literals; // or warning // had to use a define beacuse the macro processing inside macro BOOST_LOG_TRIVIAL() -#define error_level_not_in_cache error +#define error_level_not_in_cache debug //FIXME Machine border is currently ignored. static Polygons calculateMachineBorderCollision(Polygon machine_border) diff --git a/src/libslic3r/Support/TreeSupport3D.cpp b/src/libslic3r/Support/TreeSupport3D.cpp index 8b8acd7b57..8b364b85f0 100644 --- a/src/libslic3r/Support/TreeSupport3D.cpp +++ b/src/libslic3r/Support/TreeSupport3D.cpp @@ -813,7 +813,7 @@ static std::optional> polyline_sample_next_point_at_dis if (distance == 0) return do_final_difference ? diff(ret, collision_trimmed()) : union_(ret); if (safe_step_size < 0 || last_step_offset_without_check < 0) { - BOOST_LOG_TRIVIAL(error) << "Offset increase got invalid parameter!"; + BOOST_LOG_TRIVIAL(warning) << "Offset increase got invalid parameter!"; tree_supports_show_error("Negative offset distance... How did you manage this ?"sv, true); return do_final_difference ? diff(ret, collision_trimmed()) : union_(ret); } @@ -1711,8 +1711,8 @@ static Point move_inside_if_outside(const Polygons &polygons, Point from, int di volumes.getCollision(radius, layer_idx - 1, settings.use_min_distance) )); check_layer_data = current_elem.to_buildplate ? to_bp_data : to_model_data; - if (area(check_layer_data) < _tiny_area_threshold) { - BOOST_LOG_TRIVIAL(error) << "Lost area by doing catch up from " << ceil_radius_before << " to radius " << + if (area(check_layer_data) < tiny_area_threshold) { + BOOST_LOG_TRIVIAL(debug) << "Lost area by doing catch up from " << ceil_radius_before << " to radius " << volumes.ceilRadius(support_element_collision_radius(config, current_elem), settings.use_min_distance); tree_supports_show_error("Area lost catching up radius. May not cause visible malformation."sv, true); } @@ -2013,7 +2013,7 @@ static void increase_areas_one_layer( << "Trying to keep area by moving faster than intended: Success"; break; } else if (!settings.no_error) - BOOST_LOG_TRIVIAL(error) << "Trying to keep area by moving faster than intended: FAILURE! WRONG BRANCHES LIKLY!"; + BOOST_LOG_TRIVIAL(warning) << "Trying to keep area by moving faster than intended: FAILURE! WRONG BRANCHES LIKLY!"; } if (add) { @@ -2495,8 +2495,8 @@ static void create_layer_pathing(const TreeModelVolumes &volumes, const TreeSupp // This area was removed completely due to collisions. return true; if (elem.areas.to_bp_areas.empty() && elem.areas.to_model_areas.empty()) { - if (area(elem.areas.influence_areas) < _tiny_area_threshold) { - BOOST_LOG_TRIVIAL(error) << "Insert Error of Influence area bypass on layer " << layer_idx - 1; + if (area(elem.areas.influence_areas) < tiny_area_threshold) { + BOOST_LOG_TRIVIAL(warning) << "Insert Error of Influence area bypass on layer " << layer_idx - 1; tree_supports_show_error("Insert error of area after bypassing merge.\n"sv, true); } // Move the area to output. @@ -2528,8 +2528,8 @@ static void create_layer_pathing(const TreeModelVolumes &volumes, const TreeSupp for (SupportElementMerging &elem : influence_areas) if (! elem.areas.influence_areas.empty()) { Polygons new_area = safe_union(elem.areas.influence_areas); - if (area(new_area) < _tiny_area_threshold) { - BOOST_LOG_TRIVIAL(error) << "Insert Error of Influence area on layer " << layer_idx - 1 << ". Origin of " << elem.parents.size() << " areas. Was to bp " << elem.state.to_buildplate; + if (area(new_area) < tiny_area_threshold) { + BOOST_LOG_TRIVIAL(warning) << "Insert Error of Influence area on layer " << layer_idx - 1 << ". Origin of " << elem.parents.size() << " areas. Was to bp " << elem.state.to_buildplate; tree_supports_show_error("Insert error of area after merge.\n"sv, true); } this_layer.emplace_back(elem.state, std::move(elem.parents), std::move(new_area)); @@ -2558,7 +2558,7 @@ static void set_points_on_areas(const SupportElement &elem, SupportElements *lay // Based on the branch center point of the current layer, the point on the next (further up) layer is calculated. if (! elem.state.result_on_layer_is_set()) { - BOOST_LOG_TRIVIAL(error) << "Uninitialized support element"; + BOOST_LOG_TRIVIAL(warning) << "Uninitialized support element"; tree_supports_show_error("Uninitialized support element. A branch may be missing.\n"sv, true); return; } @@ -2726,7 +2726,8 @@ static void create_nodes_from_area( if (! elem.state.result_on_layer_is_set()) { if (elem.state.to_buildplate || (elem.state.distance_to_top < config.min_dtt_to_model && ! elem.state.supports_roof)) { if (elem.state.to_buildplate) { - BOOST_LOG_TRIVIAL(error) << "Uninitialized Influence area targeting " << elem.state.target_position.x() << "," << elem.state.target_position.y() << ") " + BOOST_LOG_TRIVIAL(warning) << "Uninitialized Influence area targeting " << elem.state.target_position.x() << "," << elem.state.target_position.y() + << ") " "at target_height: " << elem.state.target_height << " layer: " << layer_idx; tree_supports_show_error("Uninitialized support element! A branch could be missing or exist partially."sv, true); } From 98135299e86f80583383f1aa9794e5c373fa1315 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Mon, 27 Jan 2025 23:01:45 +0800 Subject: [PATCH 068/129] Fix compile error --- src/libslic3r/Support/TreeSupport3D.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport3D.cpp b/src/libslic3r/Support/TreeSupport3D.cpp index 8b364b85f0..e1971e9b4c 100644 --- a/src/libslic3r/Support/TreeSupport3D.cpp +++ b/src/libslic3r/Support/TreeSupport3D.cpp @@ -1711,7 +1711,7 @@ static Point move_inside_if_outside(const Polygons &polygons, Point from, int di volumes.getCollision(radius, layer_idx - 1, settings.use_min_distance) )); check_layer_data = current_elem.to_buildplate ? to_bp_data : to_model_data; - if (area(check_layer_data) < tiny_area_threshold) { + if (area(check_layer_data) < _tiny_area_threshold) { BOOST_LOG_TRIVIAL(debug) << "Lost area by doing catch up from " << ceil_radius_before << " to radius " << volumes.ceilRadius(support_element_collision_radius(config, current_elem), settings.use_min_distance); tree_supports_show_error("Area lost catching up radius. May not cause visible malformation."sv, true); @@ -2495,7 +2495,7 @@ static void create_layer_pathing(const TreeModelVolumes &volumes, const TreeSupp // This area was removed completely due to collisions. return true; if (elem.areas.to_bp_areas.empty() && elem.areas.to_model_areas.empty()) { - if (area(elem.areas.influence_areas) < tiny_area_threshold) { + if (area(elem.areas.influence_areas) < _tiny_area_threshold) { BOOST_LOG_TRIVIAL(warning) << "Insert Error of Influence area bypass on layer " << layer_idx - 1; tree_supports_show_error("Insert error of area after bypassing merge.\n"sv, true); } @@ -2528,7 +2528,7 @@ static void create_layer_pathing(const TreeModelVolumes &volumes, const TreeSupp for (SupportElementMerging &elem : influence_areas) if (! elem.areas.influence_areas.empty()) { Polygons new_area = safe_union(elem.areas.influence_areas); - if (area(new_area) < tiny_area_threshold) { + if (area(new_area) < _tiny_area_threshold) { BOOST_LOG_TRIVIAL(warning) << "Insert Error of Influence area on layer " << layer_idx - 1 << ". Origin of " << elem.parents.size() << " areas. Was to bp " << elem.state.to_buildplate; tree_supports_show_error("Insert error of area after merge.\n"sv, true); } From a3ac1fc4f4105cf230b44e852f3804bbe6b318e1 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Tue, 28 Jan 2025 00:50:08 +0800 Subject: [PATCH 069/129] Fix error "Coordinate outside allowed range" --- src/libslic3r/Support/TreeSupport.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index a1faf1d06d..3de1c5127c 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -65,6 +65,9 @@ inline Point turn90_ccw(const Point pt) inline Point normal(Point pt, double scale) { double length = scale_(sqrt(vsize2_with_unscale(pt))); + if (length < SCALED_EPSILON) { + return pt; + } return pt * (scale / length); } From 279b3ded14889e35e76739d26fd915c1a90f341f Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Mon, 28 Oct 2024 16:24:45 +0100 Subject: [PATCH 070/129] libslic3r: Fix BOOST_LOG_TRIVIAL declaration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit /run/build/BambuStudio/src/libslic3r/Support/SupportParameters.hpp: In constructor ‘Slic3r::SupportParameters::SupportParameters(const Slic3r::PrintObject&)’: /run/build/BambuStudio/src/libslic3r/Support/SupportParameters.hpp:172:39: error: ‘warning’ was not declared in this scope 172 | BOOST_LOG_TRIVIAL(warning) << "tree support default to organic support"; | ^~~~~~~ /run/build/BambuStudio/src/libslic3r/Support/SupportParameters.hpp:172:21: error: ‘BOOST_LOG_TRIVIAL’ was not declared in this scope 172 | BOOST_LOG_TRIVIAL(warning) << "tree support default to organic support"; | ^~~~~~~~~~~~~~~~~ /run/build/BambuStudio/src/libslic3r/Support/SupportParameters.hpp:175:39: error: ‘warning’ was not declared in this scope 175 | BOOST_LOG_TRIVIAL(warning) << "tree support default to hybrid tree due to adaptive layer height"; | ^~~~~~~ /run/build/BambuStudio/src/libslic3r/Support/SupportParameters.hpp:175:21: error: ‘BOOST_LOG_TRIVIAL’ was not declared in this scope 175 | BOOST_LOG_TRIVIAL(warning) << "tree support default to hybrid tree due to adaptive layer height"; | ^~~~~~~~~~~~~~~~~ (cherry picked from commit a63070bd4cbe012315b9532f5c199f6d2664333a) --- src/libslic3r/Support/SupportParameters.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libslic3r/Support/SupportParameters.hpp b/src/libslic3r/Support/SupportParameters.hpp index da21895b34..bcc85e2202 100644 --- a/src/libslic3r/Support/SupportParameters.hpp +++ b/src/libslic3r/Support/SupportParameters.hpp @@ -1,6 +1,7 @@ #ifndef slic3r_SupportParameters_hpp_ #define slic3r_SupportParameters_hpp_ +#include #include "../libslic3r.h" #include "../Flow.hpp" From 0187e1baf349bf60c3857d95a95bdc663943fde0 Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Wed, 27 Mar 2024 11:24:58 +0100 Subject: [PATCH 071/129] libslic3r: Fix missing BOOST_LOG_TRIVIAL declaration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FAILED: src/libslic3r/CMakeFiles/libslic3r.dir/Support/TreeSupport.cpp.o /usr/bin/c++ -DBOOST_ATOMIC_NO_LIB -DBOOST_CHRONO_NO_LIB -DBOOST_DATE_TIME_NO_LIB -DBOOST_FILESYSTEM_NO_LIB -DBOOST_IOSTREAMS_NO_LIB -DBOOST_LOCALE_NO_LIB -DBOOST_LOG_NO_LIB -DBOOST_REGEX_NO_LIB -DBOOST_SYSTEM_NO_LIB -DBOOST_THREAD_NO_LIB -DHAVE_FREETYPE -DHAVE_OPENGL_EXT -DHAVE_XLIB -DLIBNEST2D_GEOMETRIES_libslic3r -DLIBNEST2D_OPTIMIZER_nlopt -DLIBNEST2D_STATIC -DLIBNEST2D_THREADING_tbb -DOCC_CONVERT_SIGNALS -DOPENVDB_OPENEXR_STATICLIB -DOPENVDB_STATICLIB -DSLIC3R_GUI -DTBB_USE_CAPTURED_EXCEPTION=0 -DUNICODE -DUSE_TBB -DWXINTL_NO_GETTEXT_MACRO -D_UNICODE -DwxNO_UNSAFE_WXSTRING_CONV -DwxUSE_UNICODE -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/run/build/BambuStudio/src -I/run/build/BambuStudio/build/src/platform -I/run/build/BambuStudio/src/libslic3r -I/run/build/BambuStudio/build/src/libslic3r -I/run/build/BambuStudio/deps/build/destdir/usr/local/include/opencascade -I/run/build/BambuStudio/src/libnest2d/include -I/run/build/BambuStudio/src/miniz -I/run/build/BambuStudio/src/glu-libtess/include -I/run/build/BambuStudio/src/clipper2/Clipper2Lib/include -isystem /run/build/BambuStudio/src/eigen -isystem /run/build/BambuStudio/src/libigl -isystem /run/build/BambuStudio/deps/build/destdir/usr/local/include -isystem /run/build/BambuStudio/deps/build/destdir/usr/local/include/OpenEXR -std=gnu++20 -fext-numeric-literals -Wall -Wno-reorder -O3 -DNDEBUG -std=gnu++17 -fPIC -fsigned-char -Werror=return-type -Wno-ignored-attributes -Wno-unknown-pragmas -DOPENVDB_ABI_VERSION_NUMBER=8 -MD -MT src/libslic3r/CMakeFiles/libslic3r.dir/Support/TreeSupport.cpp.o -MF src/libslic3r/CMakeFiles/libslic3r.dir/Support/TreeSupport.cpp.o.d -o src/libslic3r/CMakeFiles/libslic3r.dir/Support/TreeSupport.cpp.o -c /run/build/BambuStudio/src/libslic3r/Support/TreeSupport.cpp /run/build/BambuStudio/src/libslic3r/Support/TreeSupport.cpp:832:39: error: ‘info’ was not declared in this scope; did you mean ‘tbb::v1::info’? 832 | BOOST_LOG_TRIVIAL(info) << "detect_overhangs takes more than 30 secs, skip cantilever and sharp tails detection: layer_nr=" << layer_nr << " duration=" << duration; | ^~~~ | tbb::v1::info In file included from /run/build/BambuStudio/deps/build/destdir/usr/local/include/oneapi/tbb/task_arena.h:31, from /run/build/BambuStudio/deps/build/destdir/usr/local/include/oneapi/tbb/partitioner.h:48, from /run/build/BambuStudio/deps/build/destdir/usr/local/include/oneapi/tbb/parallel_for.h:27, from /run/build/BambuStudio/deps/build/destdir/usr/local/include/tbb/parallel_for.h:17, from /run/build/BambuStudio/src/libslic3r/Support/TreeSupport.cpp:25: /run/build/BambuStudio/deps/build/destdir/usr/local/include/oneapi/tbb/info.h:125:11: note: ‘tbb::v1::info’ declared here 125 | namespace info { | ^~~~ /run/build/BambuStudio/src/libslic3r/Support/TreeSupport.cpp:832:21: error: ‘BOOST_LOG_TRIVIAL’ was not declared in this scope 832 | BOOST_LOG_TRIVIAL(info) << "detect_overhangs takes more than 30 secs, skip cantilever and sharp tails detection: layer_nr=" << layer_nr << " duration=" << duration; | ^~~~~~~~~~~~~~~~~ /run/build/BambuStudio/src/libslic3r/Support/TreeSupport.cpp:884:43: error: ‘debug’ was not declared in this scope 884 | BOOST_LOG_TRIVIAL(debug) << "found a cantilever cluster. layer_nr=" << layer_nr << dist_max; | ^~~~~ (cherry picked from commit c680128141416f1297a25824deb7443fc441892b) --- src/libslic3r/Support/TreeSupport.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 3de1c5127c..139ae42597 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -24,6 +24,8 @@ #include #include +#include + #ifndef M_PI #define M_PI 3.1415926535897932384626433832795 #endif From 32547c8c3bb3052bea25b2f429016438178d89c6 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sun, 9 Feb 2025 19:01:51 +0800 Subject: [PATCH 072/129] Update header file to match the impl --- src/libslic3r/Support/TreeSupport.hpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index 8afc241926..e0446ad5f1 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -197,12 +197,9 @@ public: * * \param xy_distance The required clearance between the model and the * tree branches. - * \param max_move The maximum allowable movement between nodes on - * adjacent layers * \param radius_sample_resolution Sample size used to round requested node radii. - * \param collision_resolution */ - TreeSupportData(const PrintObject& object, coordf_t radius_sample_resolution, coordf_t collision_resolution); + TreeSupportData(const PrintObject& object, coordf_t xy_distance, coordf_t radius_sample_resolution); ~TreeSupportData() { clear_nodes(); } From 2d92ea6320ffa25b7033744097c2ab893ed8103b Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Tue, 11 Feb 2025 10:56:00 +0800 Subject: [PATCH 073/129] Don't disable solid infill pattern option unless no infill & top/bottom surfaces (SoftFever/OrcaSlicer#8370) --- src/slic3r/GUI/ConfigManipulation.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index cd8417050d..1268363de0 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -527,19 +527,20 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co bool has_spiral_vase = config->opt_bool("spiral_mode"); toggle_line("spiral_mode_smooth", has_spiral_vase); toggle_line("spiral_mode_max_xy_smoothing", has_spiral_vase && config->opt_bool("spiral_mode_smooth")); - bool has_top_solid_infill = config->opt_int("top_shell_layers") > 0; - bool has_bottom_solid_infill = config->opt_int("bottom_shell_layers") > 0; - bool has_solid_infill = has_top_solid_infill || has_bottom_solid_infill; - // solid_infill_filament uses the same logic as in Print::extruders() - for (auto el : { "top_surface_pattern", "bottom_surface_pattern", "internal_solid_infill_pattern", "solid_infill_filament"}) - toggle_field(el, has_solid_infill); + bool has_top_shell = config->opt_int("top_shell_layers") > 0; + bool has_bottom_shell = config->opt_int("bottom_shell_layers") > 0; + bool has_solid_infill = has_top_shell || has_bottom_shell; + toggle_field("top_surface_pattern", has_top_shell); + toggle_field("bottom_surface_pattern", has_bottom_shell); for (auto el : { "infill_direction", "sparse_infill_line_width", - "sparse_infill_speed", "bridge_speed", "internal_bridge_speed", "bridge_angle","internal_bridge_angle","solid_infill_direction", "rotate_solid_infill_direction" }) + "sparse_infill_speed", "bridge_speed", "internal_bridge_speed", "bridge_angle","internal_bridge_angle", + "solid_infill_direction", "rotate_solid_infill_direction", "internal_solid_infill_pattern", "solid_infill_filament", + }) toggle_field(el, have_infill || has_solid_infill); - toggle_field("top_shell_thickness", ! has_spiral_vase && has_top_solid_infill); - toggle_field("bottom_shell_thickness", ! has_spiral_vase && has_bottom_solid_infill); + toggle_field("top_shell_thickness", ! has_spiral_vase && has_top_shell); + toggle_field("bottom_shell_thickness", ! has_spiral_vase && has_bottom_shell); toggle_field("wall_direction", !has_spiral_vase); @@ -547,7 +548,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co toggle_field("gap_infill_speed", have_perimeters); for (auto el : { "top_surface_line_width", "top_surface_speed" }) - toggle_field(el, has_top_solid_infill || (has_spiral_vase && has_bottom_solid_infill)); + toggle_field(el, has_top_shell || (has_spiral_vase && has_bottom_shell)); bool have_default_acceleration = config->opt_float("default_acceleration") > 0; From 43353a6036fe3ec2cb753204bfb5679f1d381832 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 17 Feb 2025 19:17:22 +0800 Subject: [PATCH 074/129] Fix a regression that total layer number is missign for BBL printers --- src/libslic3r/GCode/GCodeProcessor.cpp | 34 +++++++++++++++++--------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index b2ab4d2943..063785ce90 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -4415,33 +4415,43 @@ void GCodeProcessor::run_post_process() } } } - } - else if (line == reserved_tag(ETags::Estimated_Printing_Time_Placeholder)) { + } else if (line == reserved_tag(ETags::Estimated_Printing_Time_Placeholder)) { for (size_t i = 0; i < static_cast(PrintEstimatedStatistics::ETimeMode::Count); ++i) { - const TimeMachine& machine = m_time_processor.machines[i]; - PrintEstimatedStatistics::ETimeMode mode = static_cast(i); + const TimeMachine& machine = m_time_processor.machines[i]; + PrintEstimatedStatistics::ETimeMode mode = static_cast(i); if (mode == PrintEstimatedStatistics::ETimeMode::Normal || machine.enabled) { char buf[128]; - sprintf(buf, "; estimated printing time (%s mode) = %s\n", - (mode == PrintEstimatedStatistics::ETimeMode::Normal) ? "normal" : "silent", - get_time_dhms(machine.time).c_str()); + if (!s_IsBBLPrinter) + // Orca: compatibility with klipper_estimator + sprintf(buf, "; estimated printing time (%s mode) = %s\n", + (mode == PrintEstimatedStatistics::ETimeMode::Normal) ? "normal" : "silent", + get_time_dhms(machine.time).c_str()); + else { + sprintf(buf, "; model printing time: %s; total estimated time: %s\n", + get_time_dhms(machine.time - machine.prepare_time).c_str(), get_time_dhms(machine.time).c_str()); + } export_lines.append_line(buf); - processed = true; } } for (size_t i = 0; i < static_cast(PrintEstimatedStatistics::ETimeMode::Count); ++i) { - const TimeMachine& machine = m_time_processor.machines[i]; - PrintEstimatedStatistics::ETimeMode mode = static_cast(i); + const TimeMachine& machine = m_time_processor.machines[i]; + PrintEstimatedStatistics::ETimeMode mode = static_cast(i); if (mode == PrintEstimatedStatistics::ETimeMode::Normal || machine.enabled) { char buf[128]; sprintf(buf, "; estimated first layer printing time (%s mode) = %s\n", - (mode == PrintEstimatedStatistics::ETimeMode::Normal) ? "normal" : "silent", - get_time_dhms(machine.prepare_time).c_str()); + (mode == PrintEstimatedStatistics::ETimeMode::Normal) ? "normal" : "silent", + get_time_dhms(machine.prepare_time).c_str()); export_lines.append_line(buf); processed = true; } } } + // Orca: write total layer number, this is used by Bambu printers only as of now + else if (line == reserved_tag(ETags::Total_Layer_Number_Placeholder)) { + char buf[128]; + sprintf(buf, "; total layer number: %u\n", m_layer_id); + export_lines.append_line(buf); + } } return processed; From 328ea469cb10c2035002f02479e1e4c1d001b7de Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Wed, 9 Oct 2024 15:19:46 +0800 Subject: [PATCH 075/129] ENH: modify the start pos of wall for wipe tower and modify the overlap of wall and infill for wipe tower jira:none Change-Id: I0d1355c718e2bd1efea6d898f793f5869476ab12 (cherry picked from commit 4db196b11f052d6a7a7c7a8aafe0d2b34a7d2d80) --- src/libslic3r/GCode/WipeTower.cpp | 66 ++++++++++++++++++++----------- src/libslic3r/GCode/WipeTower.hpp | 2 +- 2 files changed, 44 insertions(+), 24 deletions(-) diff --git a/src/libslic3r/GCode/WipeTower.cpp b/src/libslic3r/GCode/WipeTower.cpp index 39c603a470..617b41a825 100644 --- a/src/libslic3r/GCode/WipeTower.cpp +++ b/src/libslic3r/GCode/WipeTower.cpp @@ -14,6 +14,7 @@ namespace Slic3r { +static const double wipe_tower_wall_infill_overlap = 0.0; inline float align_round(float value, float base) { @@ -118,7 +119,7 @@ public: WipeTowerWriter& set_initial_tool(size_t tool) { m_current_tool = tool; return *this; } - WipeTowerWriter& set_z(float z) + WipeTowerWriter& set_z(float z) { m_current_z = z; return *this; } WipeTowerWriter& set_extrusion_flow(float flow) @@ -237,7 +238,7 @@ public: WipeTowerWriter& travel(float x, float y, float f = 0.f) { return extrude_explicit(x, y, 0.f, f); } - WipeTowerWriter& travel(const Vec2f &dest, float f = 0.f) + WipeTowerWriter& travel(const Vec2f &dest, float f = 0.f) { return extrude_explicit(dest.x(), dest.y(), 0.f, f); } // Extrude a line from current position to x, y with the extrusion amount given by m_extrusion_flow. @@ -248,7 +249,7 @@ public: return extrude_explicit(x, y, std::sqrt(dx*dx+dy*dy) * m_extrusion_flow, f, true); } - WipeTowerWriter& extrude(const Vec2f &dest, const float f = 0.f) + WipeTowerWriter& extrude(const Vec2f &dest, const float f = 0.f) { return extrude(dest.x(), dest.y(), f); } WipeTowerWriter& rectangle(const Vec2f& ld,float width,float height,const float f = 0.f) @@ -299,7 +300,7 @@ public: do { ++i; if (i == 4) i = 0; - if (need_change_flow) { + if (need_change_flow) { if (i == 1) { // using bridge flow in bridge area, and add notes for gcode-check when flow changed set_extrusion_flow(wipe_tower->extrusion_flow(0.2)); @@ -358,7 +359,7 @@ public: // Elevate the extruder head above the current print_z position. WipeTowerWriter& z_hop(float hop, float f = 0.f) - { + { m_gcode += std::string("G1") + set_format_Z(m_current_z + hop); if (f != 0 && f != m_current_feedrate) m_gcode += set_format_F(f); @@ -367,7 +368,7 @@ public: } // Lower the extruder head back to the current print_z position. - WipeTowerWriter& z_hop_reset(float f = 0.f) + WipeTowerWriter& z_hop_reset(float f = 0.f) { return z_hop(0, f); } // Move to x1, +y_increment, @@ -455,14 +456,14 @@ public: } WipeTowerWriter& flush_planner_queue() - { - m_gcode += "G4 S0\n"; + { + m_gcode += "G4 S0\n"; return *this; } // Reset internal extruder counter. WipeTowerWriter& reset_extruder() - { + { m_gcode += "G92 E0\n"; return *this; } @@ -725,7 +726,7 @@ void WipeTower::set_extruder(size_t idx, const PrintConfig& config) // Returns gcode to prime the nozzles at the front edge of the print bed. std::vector WipeTower::prime( // print_z of the first layer. - float initial_layer_print_height, + float initial_layer_print_height, // Extruder indices, in the order to be primed. The last extruder will later print the wipe tower brim, print brim and the object. const std::vector &tools, // If true, the last priming are will be the same as the other priming areas, and the rest of the wipe will be performed inside the wipe tower. @@ -742,7 +743,7 @@ WipeTower::ToolChangeResult WipeTower::tool_change(size_t tool, bool extrude_per float wipe_depth = 0.f; float wipe_length = 0.f; float purge_volume = 0.f; - + // Finds this toolchange info if (tool != (unsigned int)(-1)) { @@ -802,12 +803,30 @@ WipeTower::ToolChangeResult WipeTower::tool_change(size_t tool, bool extrude_per box_coordinates wt_box(Vec2f(0.f, (m_current_shape == SHAPE_REVERSED) ? m_layer_info->toolchanges_depth() - m_layer_info->depth : 0.f), m_wipe_tower_width, m_layer_info->depth + m_perimeter_width); // align the perimeter + + Vec2f pos = initial_position; + switch (m_cur_layer_id % 4){ + case 0: + pos = wt_box.ld; + break; + case 1: + pos = wt_box.rd; + break; + case 2: + pos = wt_box.ru; + break; + case 3: + pos = wt_box.lu; + break; + default: break; + } + writer.set_initial_position(pos, m_wipe_tower_width, m_wipe_tower_depth, m_internal_rotation); + wt_box = align_perimeter(wt_box); writer.rectangle(wt_box); - writer.travel(initial_position); } - if (first_toolchange_to_nonsoluble) { + { writer.travel(Vec2f(0, 0)); writer.travel(initial_position); } @@ -849,7 +868,7 @@ void WipeTower::toolchange_Unload( #if 0 float xl = cleaning_box.ld.x() + 1.f * m_perimeter_width; float xr = cleaning_box.rd.x() - 1.f * m_perimeter_width; - + const float line_width = m_perimeter_width * m_filpar[m_current_tool].ramming_line_width_multiplicator; // desired ramming line thickness const float y_step = line_width * m_filpar[m_current_tool].ramming_step_multiplicator * m_extra_spacing; // spacing between lines in mm @@ -1108,9 +1127,9 @@ void WipeTower::toolchange_Wipe( } if (m_left_to_right) - writer.extrude(xr + 0.25f * m_perimeter_width, writer.y(), wipe_speed); + writer.extrude(xr + wipe_tower_wall_infill_overlap * m_perimeter_width, writer.y(), wipe_speed); else - writer.extrude(xl - 0.25f * m_perimeter_width, writer.y(), wipe_speed); + writer.extrude(xl - wipe_tower_wall_infill_overlap * m_perimeter_width, writer.y(), wipe_speed); // BBS: recover the flow in non-bridging area if (need_change_flow) { @@ -1139,7 +1158,7 @@ void WipeTower::toolchange_Wipe( //writer.add_wipe_point(writer.x(), writer.y()) // .add_wipe_point(writer.x(), writer.y() - dy) // .add_wipe_point(! m_left_to_right ? m_wipe_tower_width : 0.f, writer.y() - dy); - // BBS: modify the wipe_path after toolchange + // BBS: modify the wipe_path after toolchange writer.add_wipe_point(writer.x(), writer.y()) .add_wipe_point(! m_left_to_right ? m_wipe_tower_width : 0.f, writer.y()); @@ -1473,7 +1492,7 @@ void WipeTower::plan_tower() m_wipe_tower_depth = 0.f; for (auto& layer : m_plan) layer.depth = 0.f; - + float max_depth_for_all = 0; for (int layer_index = int(m_plan.size()) - 1; layer_index >= 0; --layer_index) { @@ -1482,7 +1501,7 @@ void WipeTower::plan_tower() this_layer_depth = min_wipe_tower_depth; m_plan[layer_index].depth = this_layer_depth; - + if (this_layer_depth > m_wipe_tower_depth - m_perimeter_width) m_wipe_tower_depth = this_layer_depth + m_perimeter_width; @@ -1492,7 +1511,7 @@ void WipeTower::plan_tower() m_plan[i].depth = this_layer_depth; } - if (m_enable_timelapse_print && layer_index == 0) + if (m_enable_timelapse_print && layer_index == 0) max_depth_for_all = m_plan[0].depth; } @@ -1600,10 +1619,11 @@ void WipeTower::generate(std::vector> & used = 0.f; m_old_temperature = -1; // reset last temperature written in the gcode - + int index = 0; std::vector layer_result; for (auto layer : m_plan) { + m_cur_layer_id = index++; set_layer(layer.z, layer.height, 0, false/*layer.z == m_plan.front().z*/, layer.z == m_plan.back().z); // BBS //m_internal_rotation += 180.f; @@ -1627,14 +1647,14 @@ void WipeTower::generate(std::vector> & // if there is no toolchange switching to non-soluble, finish layer // will be called at the very beginning. That's the last possibility // where a nonsoluble tool can be. - if (m_enable_timelapse_print) { + if (m_enable_timelapse_print) { timelapse_wall = only_generate_out_wall(); } finish_layer_tcr = finish_layer(m_enable_timelapse_print ? false : true, layer.extruder_fill); } for (int i=0; i Date: Tue, 18 Feb 2025 20:13:42 +0800 Subject: [PATCH 076/129] Fixed an issue that raimaining time is wrong when arc fitting is enabled. --- src/libslic3r/GCode/GCodeProcessor.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index ce8d0e6f07..661dd8a981 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -380,7 +380,7 @@ class Print; EMoveType move_type{ EMoveType::Noop }; ExtrusionRole role{ erNone }; unsigned int g1_line_id{ 0 }; - unsigned int remaining_internal_g1_lines; + unsigned int remaining_internal_g1_lines{ 0 }; unsigned int layer_id{ 0 }; float distance{ 0.0f }; // mm float acceleration{ 0.0f }; // mm/s^2 @@ -429,7 +429,7 @@ class Print; struct G1LinesCacheItem { unsigned int id; - unsigned int remaining_internal_g1_lines; + unsigned int remaining_internal_g1_lines{ 0 }; float elapsed_time; }; From 85cf995458bd1121907a56de237f3481153a1986 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Wed, 19 Feb 2025 10:21:16 +0800 Subject: [PATCH 077/129] Fix fov so off-plate objects can be rendered properly. Adopted from bambulab/BambuStudio@ba1951338045b04537159052a64e167bdac411ae and bambulab/BambuStudio@d0e91b5164afdb5b13e8b837aea6dfc884596546 Co-authored-by: zhou.xu --- src/slic3r/GUI/GLCanvas3D.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 26688a2383..8ad93ff07f 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1541,15 +1541,22 @@ void GLCanvas3D::refresh_camera_scene_box() BoundingBoxf3 GLCanvas3D::volumes_bounding_box(bool current_plate_only) const { BoundingBoxf3 bb; - PartPlate *plate = wxGetApp().plater()->get_partplate_list().get_curr_plate(); - + BoundingBoxf3 expand_part_plate_list_box; + bool is_limit = m_canvas_type != ECanvasType::CanvasAssembleView; + if (is_limit) { + auto plate_list_box = current_plate_only ? wxGetApp().plater()->get_partplate_list().get_curr_plate()->get_bounding_box() : + wxGetApp().plater()->get_partplate_list().get_bounding_box(); + auto horizontal_radius = 0.5 * sqrt(std::pow(plate_list_box.min[0] - plate_list_box.max[0], 2) + std::pow(plate_list_box.min[1] - plate_list_box.max[1], 2)); + const float scale = 2; + expand_part_plate_list_box.merge(plate_list_box.min - scale * Vec3d(horizontal_radius, horizontal_radius, 0)); + expand_part_plate_list_box.merge(plate_list_box.max + scale * Vec3d(horizontal_radius, horizontal_radius, 0)); + } for (const GLVolume *volume : m_volumes.volumes) { if (!m_apply_zoom_to_volumes_filter || ((volume != nullptr) && volume->zoom_to_volumes)) { - const auto plate_bb = plate->get_bounding_box(); - const auto v_bb = volume->transformed_bounding_box(); - if (!plate_bb.overlap(v_bb)) - continue; - bb.merge(v_bb); + const auto v_bb = volume->transformed_bounding_box(); + if (is_limit && !expand_part_plate_list_box.overlap(v_bb)) + continue; + bb.merge(v_bb); } } return bb; From 0ca5e944b74a7fc7f36bdb84b6a7de6ec3c37964 Mon Sep 17 00:00:00 2001 From: Heiko Liebscher Date: Wed, 19 Feb 2025 11:58:00 +0100 Subject: [PATCH 078/129] translate new features to german --- localization/i18n/de/OrcaSlicer_de.po | 306 +++++++++++++++++++++----- 1 file changed, 249 insertions(+), 57 deletions(-) diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 0d6b36d65d..473a5a8a69 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -1334,7 +1334,7 @@ msgstr "Bearbeiten auf Skala" msgctxt "Verb" msgid "Scale all" -msgstr "" +msgstr "Alle skalieren" msgid "None" msgstr "Keine" @@ -3074,7 +3074,7 @@ msgid "Print with the filament mounted on the back of chassis" msgstr "Druck mit dem Filament auf der Rückseite des Chassis" msgid "Current AMS humidity" -msgstr "" +msgstr "Aktuelle AMS-Feuchtigkeit" msgid "" "Please change the desiccant when it is too wet. The indicator may not " @@ -5225,7 +5225,7 @@ msgid "The printer has been logged out and cannot connect." msgstr "Der Drucker wurde abgemeldet und kann keine Verbindung herstellen." msgid "Video Stopped." -msgstr "" +msgstr "Video gestoppt." msgid "LAN Connection Failed (Failed to start liveview)" msgstr "LAN-Verbindung fehlgeschlagen (Liveview konnte nicht gestartet werden)" @@ -5336,6 +5336,9 @@ msgid "" "Please check if the SD card is inserted into the printer.\n" "If it still cannot be read, you can try formatting the SD card." msgstr "" +"Bitte überprüfen Sie, ob die MicroSD-Karte in den Drucker eingelegt ist.\n" +"Wenn sie immer noch nicht gelesen werden kann, können Sie versuchen, die " +"MicroSD-Karte zu formatieren." msgid "LAN Connection Failed (Failed to view sdcard)" msgstr "LAN-Verbindung fehlgeschlagen (SD-Karte konnte nicht angezeigt werden)" @@ -5791,23 +5794,27 @@ msgid "Not for now" msgstr "Nicht jetzt" msgid "Server Exception" -msgstr "" +msgstr "Server Ausnahme" msgid "" "The server is unable to respond. Please click the link below to check the " "server status." msgstr "" +"Der Server kann nicht antworten. Bitte klicken Sie auf den folgenden Link, " +"um den Serverstatus zu überprüfen." msgid "" "If the server is in a fault state, you can temporarily use offline printing " "or local network printing." msgstr "" +"Wenn der Server in einem fehlerhaften Zustand ist, können Sie vorübergehend " +"Offline-Druck oder lokalen Netzwerkdruck verwenden." msgid "How to use LAN only mode" -msgstr "" +msgstr "Wie verwende ich den LAN-Only-Modus" msgid "Don't show this dialog again" -msgstr "" +msgstr "Diesen Dialog nicht erneut anzeigen" msgid "3D Mouse disconnected." msgstr "3D-Maus nicht angeschlossen." @@ -6548,6 +6555,8 @@ msgstr "Nur Geometrie importieren" msgid "" "This option can be changed later in preferences, under 'Load Behaviour'." msgstr "" +"Diese Option kann später in den Einstellungen unter 'Ladeverhalten' geändert " +"werden." msgid "Only one G-code file can be opened at the same time." msgstr "Es kann immer nur eine G-Code-Datei gleichzeitig geöffnet werden." @@ -6996,22 +7005,22 @@ msgid "Associate URLs to OrcaSlicer" msgstr "URLs mit OrcaSlicer verknüpfen" msgid "Load All" -msgstr "" +msgstr "Alle laden" msgid "Ask When Relevant" -msgstr "" +msgstr "Fragen, wenn relevant" msgid "Always Ask" -msgstr "" +msgstr "Immer fragen" msgid "Load Geometry Only" -msgstr "" +msgstr "Nur Geometrie laden" msgid "Load Behaviour" -msgstr "" +msgstr "Ladeverhalten" msgid "Should printer/filament/process settings be loaded when opening a .3mf?" -msgstr "" +msgstr "sollen Drucker/Filament/Prozess Einstellungen geladen werden beim Öffnen einer .3mf?" msgid "Maximum recent projects" msgstr "Höchstanzahl an letzten Projekten" @@ -7596,7 +7605,7 @@ msgid "Bind with Pin Code" msgstr "Mit Pin-Code verbinden" msgid "Bind with Access Code" -msgstr "" +msgstr "Mit Zugangscode verbinden" msgid "Send to Printer SD card" msgstr "An MicroSD-Karte des Druckers senden" @@ -7938,6 +7947,8 @@ msgid "" "This action is not revertible.\n" "Do you want to proceed?" msgstr "" +"Diese Auswahl ist nicht rückgängig zu machen.\n" +"Möchten Sie fortfahren?" msgid "Detach preset" msgstr "Voreinstellung abkoppeln" @@ -9234,21 +9245,27 @@ msgid "Confirm and Update Nozzle" msgstr "Bestätigen und Düse aktualisieren" msgid "Connect the printer using IP and access code" -msgstr "" +msgstr "Verbinden Sie den Drucker mit IP und Zugangscode" msgid "" "Step 1. Please confirm Orca Slicer and your printer are in the same LAN." msgstr "" +"Schritt 1. Bitte bestätigen Sie, dass Orca Slicer und Ihr Drucker im " +"selben LAN sind." msgid "" "Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" +"Schritt 2. Wenn die unten angezeigte IP und der Zugangscode von den " +"tatsächlichen Werten auf Ihrem Drucker abweichen, korrigieren Sie diese." msgid "" "Step 3. Please obtain the device SN from the printer side; it is usually " "found in the device information on the printer screen." msgstr "" +"Schritt 3. Bitte holen Sie sich die Geräte-SN von der Druckerseite; sie " +"befindet sich normalerweise in den Geräteinformationen auf dem Druckerbildschirm." msgid "IP" msgstr "IP" @@ -9257,37 +9274,37 @@ msgid "Access Code" msgstr "Zugangscode" msgid "Printer model" -msgstr "" +msgstr "Druckermodell" msgid "Printer name" -msgstr "" +msgstr "Druckername" msgid "Where to find your printer's IP and Access Code?" msgstr "Wo finde ich die IP-Adresse und den Zugriffscode meines Druckers?" msgid "Connect" -msgstr "" +msgstr "Verbinden" msgid "Manual Setup" -msgstr "" +msgstr "Manuelle Einrichtung" msgid "connecting..." -msgstr "" +msgstr "Verbindung wird hergestellt..." msgid "Failed to connect to printer." -msgstr "" +msgstr "Verbindung zum Drucker fehlgeschlagen." msgid "Failed to publish login request." -msgstr "" +msgstr "Veröffentlichung des Anmeldeantrags fehlgeschlagen." msgid "The printer has already been bound." -msgstr "" +msgstr "Der Drucker wurde bereits gebunden." msgid "The printer mode is incorrect, please switch to LAN Only." -msgstr "" +msgstr "Der Druckermodus ist falsch, bitte wechseln Sie auf LAN Only." msgid "Connecting to printer... The dialog will close later" -msgstr "" +msgstr "Verbindung zum Drucker wird hergestellt... Der Dialog wird später geschlossen" msgid "Connection failed, please double check IP and Access Code" msgstr "Verbindung fehlgeschlagen, bitte überprüfen Sie IP und Zugriffscode" @@ -10333,7 +10350,7 @@ msgid "Nowhere" msgstr "Nirgendwo" msgid "Force cooling for overhangs and bridges" -msgstr "" +msgstr "Kühlung für Überhänge und Brücken erzwingen" msgid "" "Enable this option to allow adjustment of the part cooling fan speed for " @@ -10341,9 +10358,14 @@ msgid "" "speed specifically for these features can improve overall print quality and " "reduce warping." msgstr "" +"Diese Option aktivieren, um die Einstellung der Lüftergeschwindigkeit für " +"speziell für Überhänge, interne und externe Brücken zu ermöglichen. Die " +"Einstellung der Lüftergeschwindigkeit speziell für diese Funktionen kann die " +"allgemeine Druckqualität verbessern und das Verziehen reduzieren." + msgid "Overhangs and external bridges fan speed" -msgstr "" +msgstr "Überhänge und externe Brücken Lüftergeschwindigkeit" msgid "" "Use this part cooling fan speed when printing bridges or overhang walls with " @@ -10356,9 +10378,20 @@ msgid "" "speed threshold set above. It is also adjusted upwards up to the maximum fan " "speed threshold when the minimum layer time threshold is not met." msgstr "" +"Verwenden Sie diese Lüftergeschwindigkeit, wenn Brücken oder Überhänge mit " +"einem Überhangswert gedruckt werden, der den Wert im Parameter 'Überhänge " +"kühlen Schwellenwert' oben überschreitet. Die Kühlung speziell für Überhänge " +"und Brücken zu erhöhen, kann die allgemeine Druckqualität dieser Funktionen " +"verbessern.\n" +"\n" +"Bitte beachten Sie, dass diese Lüftergeschwindigkeit auf der unteren Seite " +"durch den oben festgelegten minimalen Lüftergeschwindigkeitsschwellenwert " +"begrenzt ist. Sie wird auch nach oben angepasst, bis zum maximalen " +"Lüftergeschwindigkeitsschwellenwert, wenn der Schwellenwert für die minimale " +"Schichtzeit nicht erreicht wird." msgid "Overhang cooling activation threshold" -msgstr "" +msgstr "Überhänge Kühlung Aktivierungsschwelle" #, c-format, boost-format msgid "" @@ -10368,9 +10401,16 @@ msgid "" "by the layer beneath it. Setting this value to 0% forces the cooling fan to " "run for all outer walls, regardless of the overhang degree." msgstr "" +"Wenn der Überhang diesen spezifizierten Schwellenwert überschreitet, wird der " +"Kühlventilator auf die unten eingestellte 'Überhänge Lüftergeschwindigkeit' " +"eingestellt. Dieser Schwellenwert wird als Prozentsatz ausgedrückt und gibt " +"den Anteil der Breite jeder Linie an, der nicht von der darunterliegenden " +"Schicht unterstützt wird. Wenn dieser Wert auf 0 % gesetzt wird, wird der " +"Kühlventilator für alle äußeren Wände eingeschaltet, unabhängig vom Winkel des " +"Überhangs." msgid "External bridge infill direction" -msgstr "" +msgstr "Externe Brücken Füllrichtung" msgid "" "Bridging angle override. If left to zero, the bridging angle will be " @@ -10382,7 +10422,7 @@ msgstr "" "externe Brücken verwendet. Verwenden Sie 180° für keinen Winkel." msgid "Internal bridge infill direction" -msgstr "" +msgstr "Interne Brücken Füllrichtung" msgid "" "Internal bridging angle override. If left to zero, the bridging angle will " @@ -10392,9 +10432,16 @@ msgid "" "It is recommended to leave it at 0 unless there is a specific model need not " "to." msgstr "" +"Interner Überbrückungswinkel überschreiben. 0 bedeutet, dass der " +"Überbrückungswinkel automatisch berechnet wird. Andernfalls wird der " +"angegebene Winkel für interne Brücken verwendet. Verwenden Sie 180° für " +"keinen Winkel.\n" +"\n" +"Es wird empfohlen, ihn auf 0 zu belassen, es sei denn, es gibt ein spezifisches " +"Modell, das dies nicht erfordert." msgid "External bridge density" -msgstr "" +msgstr "Externe Brücken Dichte" msgid "" "Controls the density (spacing) of external bridge lines. 100% means solid " @@ -10404,9 +10451,15 @@ msgid "" "space for air to circulate around the extruded bridge, improving its cooling " "speed." msgstr "" +"Steuerung der Dichte (Abstand) der externen Brückenlinien. 100 % bedeutet " +"solide Brücke. Standard ist 100 %.\n" +"\n" +"Niedrigere Dichte externe Brücken können die Zuverlässigkeit verbessern, da " +"mehr Platz für die Luftzirkulation um die extrudierte Brücke vorhanden ist, " +"was die Kühlgeschwindigkeit verbessert." msgid "Internal bridge density" -msgstr "" +msgstr "Interne Brücken Dichte" msgid "" "Controls the density (spacing) of internal bridge lines. 100% means solid " @@ -10420,6 +10473,17 @@ msgid "" "bridge over infill option, further improving internal bridging structure " "before solid infill is extruded." msgstr "" +"Steuerung der Dichte (Abstand) der internen Brückenlinien. 100 % bedeutet " +"solide Brücke. Standard ist 100 %.\n" +"\n" +"Niedrigere Dichte interne Brücken können das Pillowing der oberen Oberfläche " +"reduzieren und die Zuverlässigkeit interner Brücken verbessern, da mehr Platz " +"für die Luftzirkulation um die extrudierte Brücke vorhanden ist, was die " +"Kühlgeschwindigkeit verbessert. \n" +"\n" +"Diese Option funktioniert besonders gut in Kombination mit der Option für die " +"zweite interne Brücke über Füllung, die die interne Brückenstruktur weiter " +"verbessert, bevor die feste Füllung extrudiert wird." msgid "Bridge flow ratio" msgstr "Brücken Flussrate" @@ -10821,6 +10885,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" +"Eine boolesche Ausdruck, der die Konfigurationswerte eines aktiven " +"Druckerprofils verwendet. Wenn dieser Ausdruck wahr ist, wird dieses Profil " +"als kompatibel mit dem aktiven Druckerprofil betrachtet." msgid "Compatible process profiles" msgstr "Kompatible Prozessprofile" @@ -10833,6 +10900,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" +"Eine boolesche Ausdruck, der die Konfigurationswerte eines aktiven " +"Druckerprofils verwendet. Wenn dieser Ausdruck wahr ist, wird dieses Profil " +"als kompatibel mit dem aktiven Druckerprofil betrachtet." msgid "Print sequence, layer by layer or object by object" msgstr "Druckreihenfolge, Schicht für Schicht oder Objekt für Objekt" @@ -10934,7 +11004,7 @@ msgstr "" "wenn diese nicht sehr lang sind." msgid "Thick external bridges" -msgstr "" +msgstr "Dicke externe Brücken" msgid "" "If enabled, bridges are more reliable, can bridge longer distances, but may " @@ -10959,7 +11029,7 @@ msgstr "" "große Düsen verwenden, sollten Sie diese Funktion deaktivieren." msgid "Extra bridge layers (beta)" -msgstr "" +msgstr "Zusätzliche Brückenschichten (Beta)" msgid "" "This option enables the generation of an extra bridge layer over internal " @@ -10994,21 +11064,54 @@ msgid "" "4. Apply to all - generates second bridge layers for both internal and " "external-facing bridges\n" msgstr "" +"Diese Option aktiviert die Erzeugung einer zusätzlichen Brückenschicht über " +"internen und/oder externen Brücken.\n" +"\n" +"Zusätzliche Brückenschichten verbessern das Aussehen und die Zuverlässigkeit " +"von Brücken, da das feste Infill besser unterstützt wird. Dies ist besonders " +"nützlich bei schnellen Druckern, bei denen die Brücken- und Feststofffüllungs-" +"geschwindigkeiten stark variieren. Die zusätzliche Brückenschicht führt zu " +"einer Verringerung des Pillowing auf den oberen Oberflächen sowie zu einer " +"Verringerung der Ablösung der externen Brückenschicht von ihren umgebenden " +"Umfängen.\n" +"\n" +"Es wird im Allgemeinen empfohlen, dies zumindest auf 'Nur externe Brücke' zu " +"setzen, es sei denn, es werden spezifische Probleme mit dem geschnittenen " +"Modell gefunden.\n" +"\n" +"Optionen:\n" +"1. Deaktiviert - erzeugt keine zweiten Brückenschichten. Dies ist der " +"Standard und wird aus Kompatibilitätsgründen festgelegt.\n" +"2. Nur externe Brücke - erzeugt zweite Brückenschichten nur für nach außen " +"gerichtete Brücken. Bitte beachten Sie, dass kleine Brücken, die kürzer oder " +"schmaler sind als die festgelegte Anzahl von Umfängen, übersprungen werden, " +"da sie von einer zweiten Brückenschicht nicht profitieren würden. Wenn " +"erzeugt, wird die zweite Brückenschicht parallel zur ersten Brückenschicht " +"extrudiert, um die Brückenfestigkeit zu verstärken.\n" +"3. Nur interne Brücke - erzeugt zweite Brückenschichten nur für interne " +"Brücken über dünner Füllung. Bitte beachten Sie, dass die internen Brücken " +"zur Anzahl der oberen Schalenlagen Ihres Modells zählen. Die zweite interne " +"Brückenschicht wird so nahe wie möglich senkrecht zur ersten extrudiert. " +"Wenn mehrere Regionen in derselben Insel mit unterschiedlichen Brückenwinkeln " +"vorhanden sind, wird die letzte Region dieser Insel als Winkelreferenz " +"ausgewählt.\n" +"4. Auf alle anwenden - erzeugt zweite Brückenschichten für interne und " +"nach außen gerichtete Brücken\n" msgid "Disabled" msgstr "Deaktiviert" msgid "External bridge only" -msgstr "" +msgstr "Nur externe Brücke" msgid "Internal bridge only" -msgstr "" +msgstr "Nur interne Brücke" msgid "Apply to all" -msgstr "" +msgstr "Auf alle anwenden" msgid "Filter out small internal bridges" -msgstr "" +msgstr "Kleine interne Brücken filtern" msgid "" "This option can help reduce pillowing on top surfaces in heavily slanted or " @@ -11039,6 +11142,36 @@ msgid "" "overhang. This option is useful for heavily slanted top surface models; " "however, in most cases, it creates too many unnecessary bridges." msgstr "" +"Diese Option kann dazu beitragen, das Pillowing auf den oberen Oberflächen " +"in stark geneigten oder gekrümmten Modellen zu reduzieren.\n" +"\n" +"Standardmäßig werden kleine interne Brücken herausgefiltert und das interne " +"feste Infill wird direkt über dem dünnen Infill gedruckt. Dies funktioniert " +"in den meisten Fällen gut und beschleunigt den Druck, ohne die Qualität der " +"oberen Oberfläche zu sehr zu beeinträchtigen.\n" +"\n" +"In stark geneigten oder gekrümmten Modellen, insbesondere wenn eine zu " +"geringe Dichte des dünnen Infill verwendet wird, kann dies jedoch dazu " +"führen, dass das nicht unterstützte feste Infill kräuselt und Pillowing " +"verursacht.\n" +"\n" +"Das Aktivieren der begrenzten Filterung oder der Filterung deaktiviert die " +"Filterung und druckt die interne Brückenschicht über dem leicht nicht " +"unterstützten internen festen Infill. Die folgenden Optionen steuern die " +"Empfindlichkeit der Filterung, d. h. sie steuern, wo interne Brücken " +"erstellt werden.\n" +"\n" +"1. Filter - aktiviert diese Option. Dies ist das Standardverhalten und " +"funktioniert in den meisten Fällen gut.\n" +"\n" +"2. Begrenzte Filterung - erstellt interne Brücken auf stark geneigten " +"Oberflächen und vermeidet unnötige Brücken. Dies funktioniert für die " +"meisten schwierigen Modelle gut.\n" +"\n" +"3. Keine Filterung - erstellt interne Brücken an jedem potenziellen internen " +"Überhang. Diese Option ist für stark geneigte obere Oberflächenmodelle " +"nützlich; in den meisten Fällen erstellt sie jedoch zu viele unnötige " +"Brücken." msgid "Filter" msgstr "Filter" @@ -12042,7 +12175,7 @@ msgid "Grid" msgstr "Gitternetz" msgid "2D Lattice" -msgstr "" +msgstr "2D-Gitter" msgid "Line" msgstr "Linie" @@ -12075,23 +12208,27 @@ msgid "Cross Hatch" msgstr "Kreuzschraffur" msgid "Quarter Cubic" -msgstr "" +msgstr "Viertel kubisch" msgid "Lattice angle 1" -msgstr "" +msgstr "Gitterwinkel 1" msgid "" "The angle of the first set of 2D lattice elements in the Z direction. Zero " "is vertical." msgstr "" +"Der Winkel des ersten Satzes von 2D-Gitterelementen in der Z-Richtung. Null " +"ist vertikal." msgid "Lattice angle 2" -msgstr "" +msgstr "Gitterwinkel 2" msgid "" "The angle of the second set of 2D lattice elements in the Z direction. Zero " "is vertical." msgstr "" +"Der Winkel des zweiten Satzes von 2D-Gitterelementen in der Z-Richtung. Null " +"ist vertikal." msgid "Sparse infill anchor length" msgstr "Länge des Infill-Ankers" @@ -12329,9 +12466,15 @@ msgid "" "Set to -1 to disable it.\n" "This setting is overridden by disable_fan_first_layers." msgstr "" +"Diese Bauteillüftergeschwindigkeit wird beim Drucken von Stützstrukturen " +"angewendet. Wenn dieser Parameter auf eine höhere als die reguläre " +"Geschwindigkeit eingestellt ist, wird die Schichtbindungsfestigkeit zwischen " +"Stützen und dem gestützten Teil verringert, was das Trennen erleichtert.\n" +"Setzen Sie -1, um es zu deaktivieren.\n" +"Diese Einstellung wird durch disable_fan_first_layers außer Kraft gesetzt." msgid "Internal bridges fan speed" -msgstr "" +msgstr "Interne Brücken Lüftergeschwindigkeit" msgid "" "The part cooling fan speed used for all internal bridges. Set to -1 to use " @@ -12341,6 +12484,14 @@ msgid "" "can help reduce part warping due to excessive cooling applied over a large " "surface for a prolonged period of time." msgstr "" +"Die Bauteillüftergeschwindigkeit, die für alle internen Brücken verwendet " +"wird. Setzen Sie -1, um die Überhangslüftergeschwindigkeitseinstellungen " +"anstelle davon zu verwenden.\n" +"\n" +"Die Reduzierung der Lüftergeschwindigkeit für interne Brücken im Vergleich " +"zu Ihrer regulären Lüftergeschwindigkeit kann dazu beitragen, das Verziehen " +"von Teilen aufgrund übermäßiger Kühlung über eine große Oberfläche für eine " +"längere Zeit zu reduzieren." msgid "" "Randomly jitter while printing the wall, so that the surface has a rough " @@ -12386,7 +12537,7 @@ msgid "Whether to apply fuzzy skin on the first layer" msgstr "Ob Fuzzy Skin auf die erste Schicht angewendet werden soll" msgid "Fuzzy skin noise type" -msgstr "" +msgstr "Fuzzy Skin Rauschtyp" msgid "" "Noise type to use for fuzzy skin generation.\n" @@ -12398,45 +12549,61 @@ msgid "" "Voronoi: Divides the surface into voronoi cells, and displaces each one by a " "random amount. Creates a patchwork texture." msgstr "" +"Rauschtyp, der für die Erzeugung von Fuzzy Skin verwendet wird.\n" +"Klassisch: Klassischer gleichmäßiger Zufallsrausch.\n" +"Perlin: Perlin-Rauschen, das eine konsistentere Textur ergibt.\n" +"Billow: Ähnlich wie Perlin-Rauschen, aber klumpiger.\n" +"Ridged Multifractal: Rauschen mit scharfen, gezackten Merkmalen. Erzeugt " +"marmorähnliche Texturen.\n" +"Voronoi: Teilt die Oberfläche in Voronoi-Zellen auf und verschiebt jede um " +"einen zufälligen Wert. Erzeugt eine Patchwork-Textur." + msgid "Classic" msgstr "Klassisch" msgid "Perlin" -msgstr "" +msgstr "Perlin" msgid "Billow" -msgstr "" +msgstr "Billow" msgid "Ridged Multifractal" -msgstr "" +msgstr "Ridged Multifractal" msgid "Voronoi" -msgstr "" +msgstr "Voronoi" msgid "Fuzzy skin feature size" -msgstr "" +msgstr "Fuzzy Skin Merkmalsgröße" msgid "" "The base size of the coherent noise features, in mm. Higher values will " "result in larger features." msgstr "" +"Die Basisgröße der kohärenten Rauschmerkmale in mm. Höhere Werte führen zu " +"größeren Merkmalen." msgid "Fuzzy Skin Noise Octaves" -msgstr "" +msgstr "Fuzzy Skin Rauschoktaven" msgid "" "The number of octaves of coherent noise to use. Higher values increase the " "detail of the noise, but also increase computation time." msgstr "" +"Die Anzahl der Oktaven des kohärenten Rauschens, die verwendet werden. Höhere " +"Werte erhöhen das Detail des Rauschens, erhöhen aber auch die " +"Berechnungszeit." msgid "Fuzzy skin noise persistence" -msgstr "" +msgstr "Fuzzy Skin Rauschpersistenz" msgid "" "The decay rate for higher octaves of the coherent noise. Lower values will " "result in smoother noise." msgstr "" +"Die Abnahmerate für höhere Oktaven des kohärenten Rauschens. Niedrigere " +"Werte führen zu glatterem Rauschen." msgid "Filter out tiny gaps" msgstr "Filtert winzige Lücken aus" @@ -12938,12 +13105,14 @@ msgid "The distance between the lines of ironing" msgstr "Der Abstand zwischen den Linien beim Glätten" msgid "Ironing inset" -msgstr "" +msgstr "Glättabstand" msgid "" "The distance to keep from the edges. A value of 0 sets this to half of the " "nozzle diameter" msgstr "" +"Der Abstand zu den Kanten. Ein Wert von 0 setzt dies auf die Hälfte des " +"Düsen Durchmessers" msgid "Ironing speed" msgstr "Geschwindigkeit beim Glätten" @@ -13206,9 +13375,18 @@ msgid "" "\n" "Allowed values: 0.5-5" msgstr "" +"Ein niedrigerer Wert führt zu glatteren Extrusionsratenübergängen. Dies " +"führt jedoch zu einer deutlich größeren G-Code-Datei und mehr Anweisungen " +"für den Drucker, um zu verarbeiten. \n" +"\n" +"Der Standardwert von 3 funktioniert in den meisten Fällen gut. Wenn Ihr " +"Drucker stottert, erhöhen Sie diesen Wert, um die Anzahl der Anpassungen zu " +"reduzieren\n" +"\n" +"Zulässige Werte: 0,5-5" msgid "Apply only on external features" -msgstr "" +msgstr "Nur auf externe Funktionen anwenden" msgid "" "Applies extrusion rate smoothing only on external perimeters and overhangs. " @@ -13216,6 +13394,11 @@ msgid "" "visible overhangs without impacting the print speed of features that will " "not be visible to the user." msgstr "" +"Wendet die Extrusionsraten-Glättung nur auf externe Umfänge und Überhänge " +"an. Dies kann dazu beitragen, Artefakte aufgrund scharfer Geschwindigkeits-" +"übergänge an extern sichtbaren Überhängen zu reduzieren, ohne die Druck-" +"geschwindigkeit von Funktionen zu beeinträchtigen, die für den Benutzer nicht " +"sichtbar sind." msgid "Minimum speed for part cooling fan" msgstr "Mindestdrehzahl der Bauteilkühlung" @@ -13252,6 +13435,9 @@ msgid "" "minimum layer time defined above when the slowdown for better layer cooling " "is enabled." msgstr "" +"Das minimale Drucktempo, bei dem der Drucker verlangsamt wird, um die oben " +"definierte minimale Schichtzeit einzuhalten, wenn die Verlangsamung für eine " +"bessere Schichtkühlung aktiviert ist." msgid "Diameter of nozzle" msgstr "Düsendurchmesser" @@ -14333,18 +14519,21 @@ msgid "" "Normal (manual) or Tree (manual) is selected, only support enforcers are " "generated" msgstr "" +"Normal (auto) und Tree (auto) werden verwendet, um Stützstrukturen " +"automatisch zu generieren. Wenn Normal (manual) oder Tree (manual) ausgewählt " +"wird, werden nur Stützverstärker generiert." msgid "Normal (auto)" -msgstr "" +msgstr "Normal (automatisch)" msgid "Tree (auto)" -msgstr "" +msgstr "Baum (automatisch)" msgid "Normal (manual)" -msgstr "" +msgstr "Normal (manuell)" msgid "Tree (manual)" -msgstr "" +msgstr "Baum (manuell)" msgid "Support/object xy distance" msgstr "Stützen/Objekt XY-Abstand" @@ -14580,13 +14769,16 @@ msgstr "" "generiert." msgid "Threshold overlap" -msgstr "" +msgstr "Schwellwertüberlappung" msgid "" "If threshold angle is zero, support will be generated for overhangs whose " "overlap is below the threshold. The smaller this value is, the steeper the " "overhang that can be printed without support." msgstr "" +"Wenn der Schwellenwinkel null ist, werden Stützen für Überhänge generiert, " +"deren Überlappung unter dem Schwellenwert liegt. Je kleiner dieser Wert ist, " +"desto steiler kann der Überhang gedruckt werden, ohne Stützen zu benötigen." msgid "Tree support branch angle" msgstr "Baumstütze Astwinkel" From 992dbf825d96a21a146d73800fa76c6663a3b887 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 19 Feb 2025 19:45:00 +0800 Subject: [PATCH 079/129] update locale --- localization/i18n/OrcaSlicer.pot | 49 +- localization/i18n/ca/OrcaSlicer_ca.po | 49 +- localization/i18n/cs/OrcaSlicer_cs.po | 49 +- localization/i18n/de/OrcaSlicer_de.po | 161 +- localization/i18n/en/OrcaSlicer_en.po | 49 +- localization/i18n/es/OrcaSlicer_es.po | 49 +- localization/i18n/fr/OrcaSlicer_fr.po | 96 +- localization/i18n/hu/OrcaSlicer_hu.po | 49 +- localization/i18n/it/OrcaSlicer_it.po | 49 +- localization/i18n/ja/OrcaSlicer_ja.po | 49 +- localization/i18n/ko/OrcaSlicer_ko.po | 49 +- localization/i18n/nl/OrcaSlicer_nl.po | 49 +- localization/i18n/pl/OrcaSlicer_pl.po | 49 +- localization/i18n/pt_BR/OrcaSlicer_pt_BR.po | 7609 ++++++++++--------- localization/i18n/ru/OrcaSlicer_ru.po | 49 +- localization/i18n/sv/OrcaSlicer_sv.po | 49 +- localization/i18n/tr/OrcaSlicer_tr.po | 49 +- localization/i18n/uk/OrcaSlicer_uk.po | 49 +- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 49 +- localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 193 +- 20 files changed, 5051 insertions(+), 3792 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index 360f88de53..0f45fd9e7a 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: 2025-02-14 23:42+0800\n" +"POT-Creation-Date: 2025-02-19 19:44+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -7361,12 +7361,6 @@ msgstr "" msgid "Notes" msgstr "" -msgid "Dependencies" -msgstr "" - -msgid "Profile dependencies" -msgstr "" - msgid "Frequent" msgstr "" @@ -7524,6 +7518,12 @@ msgstr "" msgid "Toolchange parameters with multi extruder MM printers" msgstr "" +msgid "Dependencies" +msgstr "" + +msgid "Profile dependencies" +msgstr "" + msgid "Printable space" msgstr "" @@ -9587,6 +9587,9 @@ msgid "" "models. Auto means the brim width is analyzed and calculated automatically." msgstr "" +msgid "Painted" +msgstr "" + msgid "Brim-object gap" msgstr "" @@ -12238,6 +12241,21 @@ msgid "" "expressed as a %, it will be computed over nozzle diameter" msgstr "" +#, possible-c-format, possible-boost-format +msgid "" +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." +msgstr "" + +#, possible-c-format, possible-boost-format +msgid "" +"Sets the finishing flow ratio while ending the spiral. Normally the spiral " +"transition scales the flow ratio from 100% to 0% during the last loop which " +"can in some cases lead to under extrusion at the end of the spiral." +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 " @@ -14214,6 +14232,23 @@ msgstr "" msgid "Error uploading to print host" msgstr "" +msgid "" +"The selected bed type does not match the file. Please confirm before " +"starting the print." +msgstr "" + +msgid "Time-lapse" +msgstr "" + +msgid "Heated Bed Leveling" +msgstr "" + +msgid "Textured Build Plate (Side A)" +msgstr "" + +msgid "Smooth Build Plate (Side B)" +msgstr "" + msgid "Unable to perform boolean operation on selected parts" msgstr "" diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index 00863f88cf..c452d4a21f 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-14 23:42+0800\n" +"POT-Creation-Date: 2025-02-19 19:44+0800\n" "PO-Revision-Date: 2024-07-07 18:43+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -8004,12 +8004,6 @@ msgstr "Scripts de postprocessament" msgid "Notes" msgstr "Notes" -msgid "Dependencies" -msgstr "" - -msgid "Profile dependencies" -msgstr "" - msgid "Frequent" msgstr "Freqüent" @@ -8191,6 +8185,12 @@ msgstr "Configuració de Moldejat de punta( Ramming )" msgid "Toolchange parameters with multi extruder MM printers" msgstr "Paràmetres del canvi d'eina per a impressores multi-extrusor MM" +msgid "Dependencies" +msgstr "" + +msgid "Profile dependencies" +msgstr "" + msgid "Printable space" msgstr "Espai imprimible" @@ -10518,6 +10518,9 @@ msgstr "" "interior dels models. Auto significa que l'amplada de la Vora d'Adherència " "s'analitza i es calcula automàticament." +msgid "Painted" +msgstr "" + msgid "Brim-object gap" msgstr "Espai entre la Vora d'Adherència i l'objecte" @@ -13768,6 +13771,21 @@ msgstr "" "Distància màxima per moure punts en XY per intentar aconseguir una espiral " "suau. Si s'expressa en %, es calcularà sobre el diàmetre del broquet" +#, c-format, boost-format +msgid "" +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." +msgstr "" + +#, c-format, boost-format +msgid "" +"Sets the finishing flow ratio while ending the spiral. Normally the spiral " +"transition scales the flow ratio from 100% to 0% during the last loop which " +"can in some cases lead to under extrusion at the end of the spiral." +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 " @@ -16178,6 +16196,23 @@ msgstr "Cancel·lant" msgid "Error uploading to print host" msgstr "Error en pujar a la impressora" +msgid "" +"The selected bed type does not match the file. Please confirm before " +"starting the print." +msgstr "" + +msgid "Time-lapse" +msgstr "" + +msgid "Heated Bed Leveling" +msgstr "" + +msgid "Textured Build Plate (Side A)" +msgstr "" + +msgid "Smooth Build Plate (Side B)" +msgstr "" + msgid "Unable to perform boolean operation on selected parts" msgstr "No es pot realitzar una operació booleana amb les peces seleccionades" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index eff64c389a..e75dc864ff 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: 2025-02-14 23:42+0800\n" +"POT-Creation-Date: 2025-02-19 19:44+0800\n" "PO-Revision-Date: 2024-11-03 20:59+0100\n" "Last-Translator: René Mošner \n" "Language-Team: \n" @@ -7793,12 +7793,6 @@ msgstr "Post-processing Scripts" msgid "Notes" msgstr "Poznámky" -msgid "Dependencies" -msgstr "" - -msgid "Profile dependencies" -msgstr "" - msgid "Frequent" msgstr "Časté" @@ -7982,6 +7976,12 @@ msgstr "Nastavení rapidní extruze" msgid "Toolchange parameters with multi extruder MM printers" msgstr "Parametry při výměně (Multi Material s více extrudery)" +msgid "Dependencies" +msgstr "" + +msgid "Profile dependencies" +msgstr "" + msgid "Printable space" msgstr "Prostor pro tisk" @@ -10210,6 +10210,9 @@ msgstr "" "Toto ovládá generování límce na vnější a/nebo vnitřní straně modelů. Možnost " "Auto znamená, že šířka límce je automaticky analyzována a vypočítána." +msgid "Painted" +msgstr "" + msgid "Brim-object gap" msgstr "Mezera mezi Límcem a Objektem" @@ -13187,6 +13190,21 @@ msgid "" "expressed as a %, it will be computed over nozzle diameter" msgstr "" +#, c-format, boost-format +msgid "" +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." +msgstr "" + +#, c-format, boost-format +msgid "" +"Sets the finishing flow ratio while ending the spiral. Normally the spiral " +"transition scales the flow ratio from 100% to 0% during the last loop which " +"can in some cases lead to under extrusion at the end of the spiral." +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 " @@ -15439,6 +15457,23 @@ msgstr "Ruší se" msgid "Error uploading to print host" msgstr "Chyba při nahrávání do tiskového serveru" +msgid "" +"The selected bed type does not match the file. Please confirm before " +"starting the print." +msgstr "" + +msgid "Time-lapse" +msgstr "" + +msgid "Heated Bed Leveling" +msgstr "" + +msgid "Textured Build Plate (Side A)" +msgstr "" + +msgid "Smooth Build Plate (Side B)" +msgstr "" + msgid "Unable to perform boolean operation on selected parts" msgstr "Nelze provést booleovskou operaci na vybraných částech" diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 473a5a8a69..5e3da194e8 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-14 23:42+0800\n" +"POT-Creation-Date: 2025-02-19 19:44+0800\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -7020,7 +7020,9 @@ msgid "Load Behaviour" msgstr "Ladeverhalten" msgid "Should printer/filament/process settings be loaded when opening a .3mf?" -msgstr "sollen Drucker/Filament/Prozess Einstellungen geladen werden beim Öffnen einer .3mf?" +msgstr "" +"sollen Drucker/Filament/Prozess Einstellungen geladen werden beim Öffnen " +"einer .3mf?" msgid "Maximum recent projects" msgstr "Höchstanzahl an letzten Projekten" @@ -7971,8 +7973,8 @@ msgstr "Es kann nicht gelöscht oder geändert werden." msgid "" "Any modifications should be saved as a new preset inherited from this one." msgstr "" -"Alle Änderungen sollten als neue Voreinstellung gespeichert werden, die von dieser " -"abgeleitet ist." +"Alle Änderungen sollten als neue Voreinstellung gespeichert werden, die von " +"dieser abgeleitet ist." msgid "To do that please specify a new name for the preset." msgstr "Bitte geben Sie einen neuen Namen für die Voreinstellung an." @@ -8101,12 +8103,6 @@ msgstr "Post-Processing Scripts" msgid "Notes" msgstr "Notizen" -msgid "Dependencies" -msgstr "Abhängigkeiten" - -msgid "Profile dependencies" -msgstr "Profilabhängigkeiten" - msgid "Frequent" msgstr "Häufig" @@ -8295,6 +8291,12 @@ msgstr "Ramming-Einstellungen" msgid "Toolchange parameters with multi extruder MM printers" msgstr "Toolchange-Parameter bei Multi-Extruder-MM-Druckern" +msgid "Dependencies" +msgstr "Abhängigkeiten" + +msgid "Profile dependencies" +msgstr "Profilabhängigkeiten" + msgid "Printable space" msgstr "Druckbarer Raum" @@ -9250,8 +9252,8 @@ msgstr "Verbinden Sie den Drucker mit IP und Zugangscode" msgid "" "Step 1. Please confirm Orca Slicer and your printer are in the same LAN." msgstr "" -"Schritt 1. Bitte bestätigen Sie, dass Orca Slicer und Ihr Drucker im " -"selben LAN sind." +"Schritt 1. Bitte bestätigen Sie, dass Orca Slicer und Ihr Drucker im selben " +"LAN sind." msgid "" "Step 2. If the IP and Access Code below are different from the actual values " @@ -9265,7 +9267,8 @@ msgid "" "found in the device information on the printer screen." msgstr "" "Schritt 3. Bitte holen Sie sich die Geräte-SN von der Druckerseite; sie " -"befindet sich normalerweise in den Geräteinformationen auf dem Druckerbildschirm." +"befindet sich normalerweise in den Geräteinformationen auf dem " +"Druckerbildschirm." msgid "IP" msgstr "IP" @@ -9304,7 +9307,8 @@ msgid "The printer mode is incorrect, please switch to LAN Only." msgstr "Der Druckermodus ist falsch, bitte wechseln Sie auf LAN Only." msgid "Connecting to printer... The dialog will close later" -msgstr "Verbindung zum Drucker wird hergestellt... Der Dialog wird später geschlossen" +msgstr "" +"Verbindung zum Drucker wird hergestellt... Der Dialog wird später geschlossen" msgid "Connection failed, please double check IP and Access Code" msgstr "Verbindung fehlgeschlagen, bitte überprüfen Sie IP und Zugriffscode" @@ -10363,7 +10367,6 @@ msgstr "" "Einstellung der Lüftergeschwindigkeit speziell für diese Funktionen kann die " "allgemeine Druckqualität verbessern und das Verziehen reduzieren." - msgid "Overhangs and external bridges fan speed" msgstr "Überhänge und externe Brücken Lüftergeschwindigkeit" @@ -10401,13 +10404,13 @@ msgid "" "by the layer beneath it. Setting this value to 0% forces the cooling fan to " "run for all outer walls, regardless of the overhang degree." msgstr "" -"Wenn der Überhang diesen spezifizierten Schwellenwert überschreitet, wird der " -"Kühlventilator auf die unten eingestellte 'Überhänge Lüftergeschwindigkeit' " -"eingestellt. Dieser Schwellenwert wird als Prozentsatz ausgedrückt und gibt " -"den Anteil der Breite jeder Linie an, der nicht von der darunterliegenden " -"Schicht unterstützt wird. Wenn dieser Wert auf 0 % gesetzt wird, wird der " -"Kühlventilator für alle äußeren Wände eingeschaltet, unabhängig vom Winkel des " -"Überhangs." +"Wenn der Überhang diesen spezifizierten Schwellenwert überschreitet, wird " +"der Kühlventilator auf die unten eingestellte 'Überhänge " +"Lüftergeschwindigkeit' eingestellt. Dieser Schwellenwert wird als " +"Prozentsatz ausgedrückt und gibt den Anteil der Breite jeder Linie an, der " +"nicht von der darunterliegenden Schicht unterstützt wird. Wenn dieser Wert " +"auf 0 % gesetzt wird, wird der Kühlventilator für alle äußeren Wände " +"eingeschaltet, unabhängig vom Winkel des Überhangs." msgid "External bridge infill direction" msgstr "Externe Brücken Füllrichtung" @@ -10437,8 +10440,8 @@ msgstr "" "angegebene Winkel für interne Brücken verwendet. Verwenden Sie 180° für " "keinen Winkel.\n" "\n" -"Es wird empfohlen, ihn auf 0 zu belassen, es sei denn, es gibt ein spezifisches " -"Modell, das dies nicht erfordert." +"Es wird empfohlen, ihn auf 0 zu belassen, es sei denn, es gibt ein " +"spezifisches Modell, das dies nicht erfordert." msgid "External bridge density" msgstr "Externe Brücken Dichte" @@ -10477,13 +10480,13 @@ msgstr "" "solide Brücke. Standard ist 100 %.\n" "\n" "Niedrigere Dichte interne Brücken können das Pillowing der oberen Oberfläche " -"reduzieren und die Zuverlässigkeit interner Brücken verbessern, da mehr Platz " -"für die Luftzirkulation um die extrudierte Brücke vorhanden ist, was die " -"Kühlgeschwindigkeit verbessert. \n" +"reduzieren und die Zuverlässigkeit interner Brücken verbessern, da mehr " +"Platz für die Luftzirkulation um die extrudierte Brücke vorhanden ist, was " +"die Kühlgeschwindigkeit verbessert. \n" "\n" -"Diese Option funktioniert besonders gut in Kombination mit der Option für die " -"zweite interne Brücke über Füllung, die die interne Brückenstruktur weiter " -"verbessert, bevor die feste Füllung extrudiert wird." +"Diese Option funktioniert besonders gut in Kombination mit der Option für " +"die zweite interne Brücke über Füllung, die die interne Brückenstruktur " +"weiter verbessert, bevor die feste Füllung extrudiert wird." msgid "Bridge flow ratio" msgstr "Brücken Flussrate" @@ -10829,6 +10832,9 @@ msgstr "" "Seitevon Modellen. Auto bedeutet, dass die Breite des Brims automatisch " "analysiert und berechnet wird." +msgid "Painted" +msgstr "" + msgid "Brim-object gap" msgstr "Lücke zwischen Rand und Objekt" @@ -11069,11 +11075,11 @@ msgstr "" "\n" "Zusätzliche Brückenschichten verbessern das Aussehen und die Zuverlässigkeit " "von Brücken, da das feste Infill besser unterstützt wird. Dies ist besonders " -"nützlich bei schnellen Druckern, bei denen die Brücken- und Feststofffüllungs-" -"geschwindigkeiten stark variieren. Die zusätzliche Brückenschicht führt zu " -"einer Verringerung des Pillowing auf den oberen Oberflächen sowie zu einer " -"Verringerung der Ablösung der externen Brückenschicht von ihren umgebenden " -"Umfängen.\n" +"nützlich bei schnellen Druckern, bei denen die Brücken- und " +"Feststofffüllungs-geschwindigkeiten stark variieren. Die zusätzliche " +"Brückenschicht führt zu einer Verringerung des Pillowing auf den oberen " +"Oberflächen sowie zu einer Verringerung der Ablösung der externen " +"Brückenschicht von ihren umgebenden Umfängen.\n" "\n" "Es wird im Allgemeinen empfohlen, dies zumindest auf 'Nur externe Brücke' zu " "setzen, es sei denn, es werden spezifische Probleme mit dem geschnittenen " @@ -11092,11 +11098,11 @@ msgstr "" "Brücken über dünner Füllung. Bitte beachten Sie, dass die internen Brücken " "zur Anzahl der oberen Schalenlagen Ihres Modells zählen. Die zweite interne " "Brückenschicht wird so nahe wie möglich senkrecht zur ersten extrudiert. " -"Wenn mehrere Regionen in derselben Insel mit unterschiedlichen Brückenwinkeln " -"vorhanden sind, wird die letzte Region dieser Insel als Winkelreferenz " -"ausgewählt.\n" -"4. Auf alle anwenden - erzeugt zweite Brückenschichten für interne und " -"nach außen gerichtete Brücken\n" +"Wenn mehrere Regionen in derselben Insel mit unterschiedlichen " +"Brückenwinkeln vorhanden sind, wird die letzte Region dieser Insel als " +"Winkelreferenz ausgewählt.\n" +"4. Auf alle anwenden - erzeugt zweite Brückenschichten für interne und nach " +"außen gerichtete Brücken\n" msgid "Disabled" msgstr "Deaktiviert" @@ -12558,7 +12564,6 @@ msgstr "" "Voronoi: Teilt die Oberfläche in Voronoi-Zellen auf und verschiebt jede um " "einen zufälligen Wert. Erzeugt eine Patchwork-Textur." - msgid "Classic" msgstr "Klassisch" @@ -12591,8 +12596,8 @@ msgid "" "The number of octaves of coherent noise to use. Higher values increase the " "detail of the noise, but also increase computation time." msgstr "" -"Die Anzahl der Oktaven des kohärenten Rauschens, die verwendet werden. Höhere " -"Werte erhöhen das Detail des Rauschens, erhöhen aber auch die " +"Die Anzahl der Oktaven des kohärenten Rauschens, die verwendet werden. " +"Höhere Werte erhöhen das Detail des Rauschens, erhöhen aber auch die " "Berechnungszeit." msgid "Fuzzy skin noise persistence" @@ -13397,8 +13402,8 @@ msgstr "" "Wendet die Extrusionsraten-Glättung nur auf externe Umfänge und Überhänge " "an. Dies kann dazu beitragen, Artefakte aufgrund scharfer Geschwindigkeits-" "übergänge an extern sichtbaren Überhängen zu reduzieren, ohne die Druck-" -"geschwindigkeit von Funktionen zu beeinträchtigen, die für den Benutzer nicht " -"sichtbar sind." +"geschwindigkeit von Funktionen zu beeinträchtigen, die für den Benutzer " +"nicht sichtbar sind." msgid "Minimum speed for part cooling fan" msgstr "Mindestdrehzahl der Bauteilkühlung" @@ -14337,6 +14342,21 @@ msgstr "" "erreichen. Wenn als Prozentsatz angegeben, wird er in Bezug auf den " "Düsendurchmesser berechnet." +#, c-format, boost-format +msgid "" +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." +msgstr "" + +#, c-format, boost-format +msgid "" +"Sets the finishing flow ratio while ending the spiral. Normally the spiral " +"transition scales the flow ratio from 100% to 0% during the last loop which " +"can in some cases lead to under extrusion at the end of the spiral." +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 " @@ -14520,8 +14540,8 @@ msgid "" "generated" msgstr "" "Normal (auto) und Tree (auto) werden verwendet, um Stützstrukturen " -"automatisch zu generieren. Wenn Normal (manual) oder Tree (manual) ausgewählt " -"wird, werden nur Stützverstärker generiert." +"automatisch zu generieren. Wenn Normal (manual) oder Tree (manual) " +"ausgewählt wird, werden nur Stützverstärker generiert." msgid "Normal (auto)" msgstr "Normal (automatisch)" @@ -15838,8 +15858,8 @@ msgid "" "Names of the filament presets used for slicing. The variable is a vector " "containing one name for each extruder." msgstr "" -"Name der Filamentvoreinstellung, die zum Slicen verwendet wird. Die Variable ist " -"ein Vektor, der einen Namen für jeden Extruder enthält." +"Name der Filamentvoreinstellung, die zum Slicen verwendet wird. Die Variable " +"ist ein Vektor, der einen Namen für jeden Extruder enthält." msgid "Printer preset name" msgstr "Name der Druckervoreinstellungen" @@ -16115,8 +16135,7 @@ msgstr "" "Der Name darf nicht mit dem Namen der Systemvoreinstellung übereinstimmen." msgid "The name is the same as another existing preset name" -msgstr "" -"Der Name existiert bereits bei einer anderen Voreinstellung" +msgstr "Der Name existiert bereits bei einer anderen Voreinstellung" msgid "create new preset failed." msgstr "Erstellen einer neuen Voreinstellung ist fehlgeschlagen." @@ -16186,12 +16205,13 @@ msgid "Please select at least one filament for calibration" msgstr "Bitte wählen Sie mindestens ein Filament zur Kalibrierung aus" msgid "Flow rate calibration result has been saved to preset" -msgstr "Flussraten-Kalibrierungsergebnis wurde in einer Voreinstellung gespeichert" +msgstr "" +"Flussraten-Kalibrierungsergebnis wurde in einer Voreinstellung gespeichert" msgid "Max volumetric speed calibration result has been saved to preset" msgstr "" -"Maximale volumetrische Geschwindigkeitskalibrierungsergebnis wurde in " -"einer Voreinstellung gespeichert" +"Maximale volumetrische Geschwindigkeitskalibrierungsergebnis wurde in einer " +"Voreinstellung gespeichert" msgid "When do you need Flow Dynamics Calibration" msgstr "Wann benötigen Sie die Kalibrierung der Flussdynamik" @@ -16808,6 +16828,23 @@ msgstr "Wird abgebrochen" msgid "Error uploading to print host" msgstr "Fehler beim Hochladen zum Druck-Host" +msgid "" +"The selected bed type does not match the file. Please confirm before " +"starting the print." +msgstr "" + +msgid "Time-lapse" +msgstr "" + +msgid "Heated Bed Leveling" +msgstr "" + +msgid "Textured Build Plate (Side A)" +msgstr "" + +msgid "Smooth Build Plate (Side B)" +msgstr "" + msgid "Unable to perform boolean operation on selected parts" msgstr "" "Die boolesche Operation kann auf den ausgewählten Teilen nicht durchgeführt " @@ -17006,8 +17043,8 @@ msgid "" msgstr "" "Wir würden die Voreinstellungen als \"Hersteller Typ Seriennummer @Drucker, " "den Sie ausgewählt haben\" umbenennen. \n" -"Um weitere Voreinstellungen für weitere Drucker hinzuzufügen, gehen Sie bitte zur " -"Druckerauswahl" +"Um weitere Voreinstellungen für weitere Drucker hinzuzufügen, gehen Sie " +"bitte zur Druckerauswahl" msgid "Create Printer/Nozzle" msgstr "Drucker/Düse erstellen" @@ -17104,8 +17141,8 @@ 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" +"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 " @@ -17133,10 +17170,10 @@ msgstr "" "\tJa: Überschreiben Sie die Druckervoreinstellung mit dem gleichen Namen, " "Filament- und Prozessvoreinstellungen mit dem gleichen Voreinstellungs- " "Filament- und Prozessnamen werden neu erstellt \n" -"Filament- und Prozessvoreinstellungen ohne den gleichen " -"Voreinstellungsnamen bleiben erhalten.\n" -"\tAbbrechen: Es wird keine neue Voreinstellung erzeugt, zurück zur Einstellungs-" -"Seite wechseln." +"Filament- und Prozessvoreinstellungen ohne den gleichen Voreinstellungsnamen " +"bleiben erhalten.\n" +"\tAbbrechen: Es wird keine neue Voreinstellung erzeugt, zurück zur " +"Einstellungs-Seite wechseln." msgid "You need to select at least one filament preset." msgstr "Sie müssen mindestens eine Filament-Voreinstellung auswählen." diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 08b4c3db46..8502a64a6c 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-14 23:42+0800\n" +"POT-Creation-Date: 2025-02-19 19:44+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -7760,12 +7760,6 @@ msgstr "Post-processing Scripts" msgid "Notes" msgstr "Notes" -msgid "Dependencies" -msgstr "" - -msgid "Profile dependencies" -msgstr "" - msgid "Frequent" msgstr "Frequent" @@ -7944,6 +7938,12 @@ msgstr "" msgid "Toolchange parameters with multi extruder MM printers" msgstr "" +msgid "Dependencies" +msgstr "" + +msgid "Profile dependencies" +msgstr "" + msgid "Printable space" msgstr "Printable space" @@ -10142,6 +10142,9 @@ msgstr "" "This controls the generation of the brim at outer and/or inner side of " "models. Auto means the brim width is analyzed and calculated automatically." +msgid "Painted" +msgstr "" + msgid "Brim-object gap" msgstr "Brim-object gap" @@ -12977,6 +12980,21 @@ msgstr "" "Maximum distance to move points in XY to try to achieve a smooth spiral. If " "expressed as a %, it will be computed over nozzle diameter" +#, c-format, boost-format +msgid "" +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." +msgstr "" + +#, c-format, boost-format +msgid "" +"Sets the finishing flow ratio while ending the spiral. Normally the spiral " +"transition scales the flow ratio from 100% to 0% during the last loop which " +"can in some cases lead to under extrusion at the end of the spiral." +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 " @@ -15149,6 +15167,23 @@ msgstr "Cancelling" msgid "Error uploading to print host" msgstr "" +msgid "" +"The selected bed type does not match the file. Please confirm before " +"starting the print." +msgstr "" + +msgid "Time-lapse" +msgstr "" + +msgid "Heated Bed Leveling" +msgstr "" + +msgid "Textured Build Plate (Side A)" +msgstr "" + +msgid "Smooth Build Plate (Side B)" +msgstr "" + msgid "Unable to perform boolean operation on selected parts" msgstr "Unable to perform boolean operation on selected parts" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 8652ee37da..e46364fe38 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-14 23:42+0800\n" +"POT-Creation-Date: 2025-02-19 19:44+0800\n" "PO-Revision-Date: \n" "Last-Translator: Carlos Fco. Caruncho Serrano \n" "Language-Team: \n" @@ -8058,12 +8058,6 @@ msgstr "Script de Post-procesado" msgid "Notes" msgstr "Anotaciones" -msgid "Dependencies" -msgstr "" - -msgid "Profile dependencies" -msgstr "" - msgid "Frequent" msgstr "Frecuente" @@ -8255,6 +8249,12 @@ msgid "Toolchange parameters with multi extruder MM printers" msgstr "" "Parámetros de cambio de cabezal para impresoras de varios extrusores MM" +msgid "Dependencies" +msgstr "" + +msgid "Profile dependencies" +msgstr "" + msgid "Printable space" msgstr "Espacio imprimible" @@ -10714,6 +10714,9 @@ msgstr "" "interior de los modelos. Auto significa que el ancho de lborde de adherencia " "es analizado y calculado automáticamente." +msgid "Painted" +msgstr "" + msgid "Brim-object gap" msgstr "Espaciado borde de adherencia-objeto" @@ -14117,6 +14120,21 @@ msgstr "" "espiral suave. Si se expresa en %, se calculará en base al diámetro de la " "boquilla" +#, c-format, boost-format +msgid "" +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." +msgstr "" + +#, c-format, boost-format +msgid "" +"Sets the finishing flow ratio while ending the spiral. Normally the spiral " +"transition scales the flow ratio from 100% to 0% during the last loop which " +"can in some cases lead to under extrusion at the end of the spiral." +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 " @@ -16593,6 +16611,23 @@ msgstr "Cancelado" msgid "Error uploading to print host" msgstr "Error al subir al host de impresión" +msgid "" +"The selected bed type does not match the file. Please confirm before " +"starting the print." +msgstr "" + +msgid "Time-lapse" +msgstr "" + +msgid "Heated Bed Leveling" +msgstr "" + +msgid "Textured Build Plate (Side A)" +msgstr "" + +msgid "Smooth Build Plate (Side B)" +msgstr "" + msgid "Unable to perform boolean operation on selected parts" msgstr "No es posible realizar la operación buleana en las partes selecionadas" diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index b0118131b7..e660c8f457 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: 2025-02-14 23:42+0800\n" +"POT-Creation-Date: 2025-02-19 19:44+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -3732,9 +3732,9 @@ msgstr "" #, 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" +"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 "" "La température actuelle du caisson est supérieure à la température de " "sécurité du matériau, ce qui peut entraîner un ramollissement et un bouchage " @@ -7930,9 +7930,9 @@ msgid "" "complications.Please use with the latest printer firmware." msgstr "" "Fonction expérimentale : Rétracter et couper le filament à une plus grande " -"distance lors des changements de filament afin de minimiser l’affleurement." -"Bien que cela puisse réduire sensiblement l’affleurement, cela peut " -"également augmenter le risque d’obstruction des buses ou d’autres " +"distance lors des changements de filament afin de minimiser " +"l’affleurement.Bien que cela puisse réduire sensiblement l’affleurement, " +"cela peut également augmenter le risque d’obstruction des buses ou d’autres " "complications d’impression.Veuillez utiliser le dernier micrologiciel de " "l’imprimante." @@ -8121,12 +8121,6 @@ msgstr "Scripts de post-traitement" msgid "Notes" msgstr "Notes" -msgid "Dependencies" -msgstr "Dépendances" - -msgid "Profile dependencies" -msgstr "Dépendances du profil" - msgid "Frequent" msgstr "Fréquent" @@ -8321,6 +8315,12 @@ msgstr "" "Paramètres de changement d'outil pour les imprimantes MM à extrudeurs " "multiples" +msgid "Dependencies" +msgstr "Dépendances" + +msgid "Profile dependencies" +msgstr "Dépendances du profil" + msgid "Printable space" msgstr "Espace imprimable" @@ -10445,6 +10445,7 @@ msgstr "" msgid "Overhang cooling activation threshold" msgstr "Seuil d’activation du refroidissement en surplomb" +#, fuzzy, c-format, boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -10878,6 +10879,9 @@ msgstr "" "des modèles. Auto signifie que la largeur de bordure est analysée et " "calculée automatiquement." +msgid "Painted" +msgstr "" + msgid "Brim-object gap" msgstr "Écart bord-objet" @@ -12397,8 +12401,8 @@ msgid "mm/s² or %" msgstr "mm/s² or %" 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." +"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 "" "Accélération du remplissage interne. Si la valeur est exprimée en " "pourcentage (par exemple 100%), elle sera calculée en fonction de " @@ -14431,6 +14435,21 @@ msgstr "" "spirale lisse. Si elle est exprimée en %, elle sera calculée par rapport au " "diamètre de la buse." +#, c-format, boost-format +msgid "" +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." +msgstr "" + +#, c-format, boost-format +msgid "" +"Sets the finishing flow ratio while ending the spiral. Normally the spiral " +"transition scales the flow ratio from 100% to 0% during the last loop which " +"can in some cases lead to under extrusion at the end of the spiral." +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 " @@ -15358,9 +15377,9 @@ msgid "Idle temperature" msgstr "Température au repos" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool setups." -"This is only used when 'Ooze prevention' is active in Print Settings. Set to " -"0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool " +"setups.This is only used when 'Ooze prevention' is active in Print Settings. " +"Set to 0 to disable." msgstr "" "Température de la buse lorsque l’outil n’est pas utilisé dans les " "configurations multi-outils. Cette fonction n’est utilisée que lorsque la " @@ -16093,8 +16112,8 @@ msgstr "Support : propagation des branches à la couche %d" msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Format de fichier inconnu : le fichier d'entrée doit porter l'extension ." -"stl, .obj ou .amf (.xml)." +"Format de fichier inconnu : le fichier d'entrée doit porter " +"l'extension .stl, .obj ou .amf (.xml)." msgid "Loading of a model file failed." msgstr "Le chargement du fichier modèle a échoué." @@ -16104,8 +16123,8 @@ msgstr "Le fichier fourni n'a pas pu être lu car il est vide." msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Format de fichier inconnu : le fichier d'entrée doit porter " -"l'extension .3mf, .zip ou .amf." +"Format de fichier inconnu : le fichier d'entrée doit porter l'extension " +".3mf, .zip ou .amf." msgid "Canceled" msgstr "Annulé" @@ -16925,6 +16944,23 @@ msgstr "Annulation" msgid "Error uploading to print host" msgstr "Erreur lors de l’envoi vers l’hôte d’impression" +msgid "" +"The selected bed type does not match the file. Please confirm before " +"starting the print." +msgstr "" + +msgid "Time-lapse" +msgstr "" + +msgid "Heated Bed Leveling" +msgstr "" + +msgid "Textured Build Plate (Side A)" +msgstr "" + +msgid "Smooth Build Plate (Side B)" +msgstr "" + msgid "Unable to perform boolean operation on selected parts" msgstr "" "Impossible d’effectuer une opération booléenne sur les pièces sélectionnées" @@ -19914,10 +19950,10 @@ msgstr "" #~ "chargement des données de géométrie uniquement." #~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" option." -#~ "Some extruders work better with this option unchecked (absolute extrusion " -#~ "mode). Wipe tower is only compatible with relative mode. It is always " -#~ "enabled on BambuLab printers. Default is checked" +#~ "Relative extrusion is recommended when using \"label_objects\" " +#~ "option.Some extruders work better with this option unchecked (absolute " +#~ "extrusion mode). Wipe tower is only compatible with relative mode. It is " +#~ "always enabled on BambuLab printers. Default is checked" #~ msgstr "" #~ "L’extrusion relative est recommandée lors de l’utilisation de l’option " #~ "\"label_objects\". Certains extrudeurs fonctionnent mieux avec cette " @@ -20274,11 +20310,11 @@ msgstr "" #~ msgstr "Niveau de débogage" #~ msgid "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -#~ "trace\n" +#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +#~ "5:trace\n" #~ msgstr "" -#~ "Définit le niveau de journalisation du débogage. 0 :fatal, 1 :erreur, 2 :" -#~ "avertissement, 3 :info, 4 :débogage, 5 :trace\n" +#~ "Définit le niveau de journalisation du débogage. 0 :fatal, 1 :erreur, " +#~ "2 :avertissement, 3 :info, 4 :débogage, 5 :trace\n" #~ msgid "" #~ "3D Scene Operations\n" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index b127e975ce..c6e5c16ce4 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-14 23:42+0800\n" +"POT-Creation-Date: 2025-02-19 19:44+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -7831,12 +7831,6 @@ msgstr "Post-processing Scripts" msgid "Notes" msgstr "Notes" -msgid "Dependencies" -msgstr "" - -msgid "Profile dependencies" -msgstr "" - msgid "Frequent" msgstr "Gyakori" @@ -8020,6 +8014,12 @@ msgstr "Tömörítési beállítások" msgid "Toolchange parameters with multi extruder MM printers" msgstr "" +msgid "Dependencies" +msgstr "" + +msgid "Profile dependencies" +msgstr "" + msgid "Printable space" msgstr "Nyomtatási terület" @@ -10253,6 +10253,9 @@ msgstr "" "This controls the generation of the brim at outer and/or inner side of " "models. Auto means the brim width is analyzed and calculated automatically." +msgid "Painted" +msgstr "" + msgid "Brim-object gap" msgstr "Perem-tárgy közötti rés" @@ -13127,6 +13130,21 @@ msgstr "" "Maximum distance to move points in XY to try to achieve a smooth spiral. If " "expressed as a %, it will be computed over nozzle diameter" +#, c-format, boost-format +msgid "" +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." +msgstr "" + +#, c-format, boost-format +msgid "" +"Sets the finishing flow ratio while ending the spiral. Normally the spiral " +"transition scales the flow ratio from 100% to 0% during the last loop which " +"can in some cases lead to under extrusion at the end of the spiral." +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 " @@ -15330,6 +15348,23 @@ msgstr "Megszakítás" msgid "Error uploading to print host" msgstr "" +msgid "" +"The selected bed type does not match the file. Please confirm before " +"starting the print." +msgstr "" + +msgid "Time-lapse" +msgstr "" + +msgid "Heated Bed Leveling" +msgstr "" + +msgid "Textured Build Plate (Side A)" +msgstr "" + +msgid "Smooth Build Plate (Side B)" +msgstr "" + msgid "Unable to perform boolean operation on selected parts" msgstr "Nem lehet logikai műveletet végrehajtani a kiválasztott tárgyakon" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index f011f132d9..8f5880c0bb 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-14 23:42+0800\n" +"POT-Creation-Date: 2025-02-19 19:44+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -7983,12 +7983,6 @@ msgstr "Script post-elaborazione" msgid "Notes" msgstr "Note" -msgid "Dependencies" -msgstr "" - -msgid "Profile dependencies" -msgstr "" - msgid "Frequent" msgstr "Frequente" @@ -8170,6 +8164,12 @@ msgstr "Impostazioni del ramming" msgid "Toolchange parameters with multi extruder MM printers" msgstr "Parametri di cambio strumento con stampanti MM multiestrusore" +msgid "Dependencies" +msgstr "" + +msgid "Profile dependencies" +msgstr "" + msgid "Printable space" msgstr "Spazio di stampa" @@ -10501,6 +10501,9 @@ msgstr "" "Auto significa che la larghezza del brim viene analizzata e calcolata " "automaticamente." +msgid "Painted" +msgstr "" + msgid "Brim-object gap" msgstr "Distanza Brim-Oggetto " @@ -13699,6 +13702,21 @@ msgstr "" "Distanza massima per spostare i punti in XY per cercare di ottenere una " "spirale uniformeSe espressa come %, verrà calcolata sul diametro del nozzle" +#, c-format, boost-format +msgid "" +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." +msgstr "" + +#, c-format, boost-format +msgid "" +"Sets the finishing flow ratio while ending the spiral. Normally the spiral " +"transition scales the flow ratio from 100% to 0% during the last loop which " +"can in some cases lead to under extrusion at the end of the spiral." +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 " @@ -16071,6 +16089,23 @@ msgstr "Annullamento" msgid "Error uploading to print host" msgstr "Errore durante il caricamento dell'host di stampa" +msgid "" +"The selected bed type does not match the file. Please confirm before " +"starting the print." +msgstr "" + +msgid "Time-lapse" +msgstr "" + +msgid "Heated Bed Leveling" +msgstr "" + +msgid "Textured Build Plate (Side A)" +msgstr "" + +msgid "Smooth Build Plate (Side B)" +msgstr "" + msgid "Unable to perform boolean operation on selected parts" msgstr "Impossibile eseguire un'operazione booleana sulle parti selezionate" diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 7c97298a92..434f99de9e 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-14 23:42+0800\n" +"POT-Creation-Date: 2025-02-19 19:44+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -7702,12 +7702,6 @@ msgstr "Post-processing Scripts" msgid "Notes" msgstr "Notes" -msgid "Dependencies" -msgstr "" - -msgid "Profile dependencies" -msgstr "" - msgid "Frequent" msgstr "よく使う" @@ -7879,6 +7873,12 @@ msgstr "ラミング設定" msgid "Toolchange parameters with multi extruder MM printers" msgstr "マルチエクストルーダーMMプリンターのツールチェンジパラメータ" +msgid "Dependencies" +msgstr "" + +msgid "Profile dependencies" +msgstr "" + msgid "Printable space" msgstr "造形可能領域" @@ -10057,6 +10057,9 @@ msgstr "" "This controls the generation of the brim at outer and/or inner side of " "models. Auto means the brim width is analyzed and calculated automatically." +msgid "Painted" +msgstr "" + msgid "Brim-object gap" msgstr "ブリムとオブジェクトの間隔" @@ -12856,6 +12859,21 @@ msgstr "" "Maximum distance to move points in XY to try to achieve a smooth spiral. If " "expressed as a %, it will be computed over nozzle diameter" +#, c-format, boost-format +msgid "" +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." +msgstr "" + +#, c-format, boost-format +msgid "" +"Sets the finishing flow ratio while ending the spiral. Normally the spiral " +"transition scales the flow ratio from 100% to 0% during the last loop which " +"can in some cases lead to under extrusion at the end of the spiral." +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 " @@ -15048,6 +15066,23 @@ msgstr "Canceling" msgid "Error uploading to print host" msgstr "プリントホストへのアップロードに失敗" +msgid "" +"The selected bed type does not match the file. Please confirm before " +"starting the print." +msgstr "" + +msgid "Time-lapse" +msgstr "" + +msgid "Heated Bed Leveling" +msgstr "" + +msgid "Textured Build Plate (Side A)" +msgstr "" + +msgid "Smooth Build Plate (Side B)" +msgstr "" + msgid "Unable to perform boolean operation on selected parts" msgstr "Unable to perform boolean operation on selected parts" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index ded421decd..7d21316e89 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: 2025-02-14 23:42+0800\n" +"POT-Creation-Date: 2025-02-19 19:44+0800\n" "PO-Revision-Date: 2024-11-06 21:10+0900\n" "Last-Translator: ElectricalBoy " "<15651807+ElectricalBoy@users.noreply.github.com>\n" @@ -7760,12 +7760,6 @@ msgstr "후처리 스크립트" msgid "Notes" msgstr "메모" -msgid "Dependencies" -msgstr "" - -msgid "Profile dependencies" -msgstr "" - msgid "Frequent" msgstr "빈도" @@ -7939,6 +7933,12 @@ msgstr "래밍 설정" msgid "Toolchange parameters with multi extruder MM printers" msgstr "다중 재료 프린터의 다중 압출기 툴 체인지 매개변수" +msgid "Dependencies" +msgstr "" + +msgid "Profile dependencies" +msgstr "" + msgid "Printable space" msgstr "출력 가능 공간" @@ -10292,6 +10292,9 @@ msgstr "" "모델의 외부 그리고/또는 내부에서 브림의 생성을 제어합니다. 자동은 브림너비가 " "자동으로 분석 및 계산됨을 의미합니다." +msgid "Painted" +msgstr "" + msgid "Brim-object gap" msgstr "브림-개체 간격" @@ -13462,6 +13465,21 @@ msgstr "" "부드러운 나선형을 얻기 위해 점을 XY로 이동하는 최대 거리 %로 표시할 경우 노" "즐 직경에 대해 계산됩니다" +#, c-format, boost-format +msgid "" +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." +msgstr "" + +#, c-format, boost-format +msgid "" +"Sets the finishing flow ratio while ending the spiral. Normally the spiral " +"transition scales the flow ratio from 100% to 0% during the last loop which " +"can in some cases lead to under extrusion at the end of the spiral." +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 " @@ -15769,6 +15787,23 @@ msgstr "취소 중" msgid "Error uploading to print host" msgstr "출력 호스트에 업로드하는 중 오류가 발생했습니다" +msgid "" +"The selected bed type does not match the file. Please confirm before " +"starting the print." +msgstr "" + +msgid "Time-lapse" +msgstr "" + +msgid "Heated Bed Leveling" +msgstr "" + +msgid "Textured Build Plate (Side A)" +msgstr "" + +msgid "Smooth Build Plate (Side B)" +msgstr "" + msgid "Unable to perform boolean operation on selected parts" msgstr "선택한 부품에서 부울 연산을 수행할 수 없습니다" diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index f63540ec01..4aa402eb19 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-14 23:42+0800\n" +"POT-Creation-Date: 2025-02-19 19:44+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -7942,12 +7942,6 @@ msgstr "Post-processing Scripts" msgid "Notes" msgstr "Opmerkingen" -msgid "Dependencies" -msgstr "" - -msgid "Profile dependencies" -msgstr "" - msgid "Frequent" msgstr "Veelgebruikt" @@ -8131,6 +8125,12 @@ msgstr "Ramming-instellingen" msgid "Toolchange parameters with multi extruder MM printers" msgstr "" +msgid "Dependencies" +msgstr "" + +msgid "Profile dependencies" +msgstr "" + msgid "Printable space" msgstr "Ruimte waarbinnen geprint kan worden" @@ -10389,6 +10389,9 @@ msgstr "" "This controls the generation of the brim at outer and/or inner side of " "models. Auto means the brim width is analyzed and calculated automatically." +msgid "Painted" +msgstr "" + msgid "Brim-object gap" msgstr "Ruimte tussen rand en object" @@ -13285,6 +13288,21 @@ msgstr "" "spiraal te bereiken. Als het wordt uitgedrukt als een %, wordt het berekend " "over de diameter van het mondstuk" +#, c-format, boost-format +msgid "" +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." +msgstr "" + +#, c-format, boost-format +msgid "" +"Sets the finishing flow ratio while ending the spiral. Normally the spiral " +"transition scales the flow ratio from 100% to 0% during the last loop which " +"can in some cases lead to under extrusion at the end of the spiral." +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 " @@ -15519,6 +15537,23 @@ msgstr "Annuleren" msgid "Error uploading to print host" msgstr "Fout bij uploaden naar printhost" +msgid "" +"The selected bed type does not match the file. Please confirm before " +"starting the print." +msgstr "" + +msgid "Time-lapse" +msgstr "" + +msgid "Heated Bed Leveling" +msgstr "" + +msgid "Textured Build Plate (Side A)" +msgstr "" + +msgid "Smooth Build Plate (Side B)" +msgstr "" + msgid "Unable to perform boolean operation on selected parts" msgstr "Kan geen booleaanse bewerking uitvoeren op geselecteerde onderdelen" diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index a1145a6c17..60aed57d53 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer 2.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-14 23:42+0800\n" +"POT-Creation-Date: 2025-02-19 19:44+0800\n" "PO-Revision-Date: \n" "Last-Translator: Krzysztof Morga \n" "Language-Team: \n" @@ -7980,12 +7980,6 @@ msgstr "Skrypty post-processingu" msgid "Notes" msgstr "Notatki" -msgid "Dependencies" -msgstr "" - -msgid "Profile dependencies" -msgstr "" - msgid "Frequent" msgstr "Cz.używ." @@ -8172,6 +8166,12 @@ msgstr "Ustawienia wyciskania" msgid "Toolchange parameters with multi extruder MM printers" msgstr "Parametry zmiany narzędzia w drukarkach wieloekstruzyjnych MM" +msgid "Dependencies" +msgstr "" + +msgid "Profile dependencies" +msgstr "" + msgid "Printable space" msgstr "Przestrzeń do druku" @@ -10620,6 +10620,9 @@ msgstr "" "modeli. Auto oznacza, że szerokość Brimu jest analizowana i obliczana " "automatycznie." +msgid "Painted" +msgstr "" + msgid "Brim-object gap" msgstr "Odstęp Brimu od obiektu" @@ -13989,6 +13992,21 @@ msgstr "" "spróbować uzyskać gładką spiralę. Jeśli wyrażone jako %, będzie obliczane " "względem średnicy dyszy." +#, c-format, boost-format +msgid "" +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." +msgstr "" + +#, c-format, boost-format +msgid "" +"Sets the finishing flow ratio while ending the spiral. Normally the spiral " +"transition scales the flow ratio from 100% to 0% during the last loop which " +"can in some cases lead to under extrusion at the end of the spiral." +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 " @@ -16420,6 +16438,23 @@ msgstr "Anulowanie" msgid "Error uploading to print host" msgstr "Błąd podczas ładowania do hosta drukarki" +msgid "" +"The selected bed type does not match the file. Please confirm before " +"starting the print." +msgstr "" + +msgid "Time-lapse" +msgstr "" + +msgid "Heated Bed Leveling" +msgstr "" + +msgid "Textured Build Plate (Side A)" +msgstr "" + +msgid "Smooth Build Plate (Side B)" +msgstr "" + msgid "Unable to perform boolean operation on selected parts" msgstr "Nie można przeprowadzić operacji boolowskich na siatkach modelu" diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index 1eacac3d76..d5b7ebe75f 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-14 23:42+0800\n" +"POT-Creation-Date: 2025-02-19 19:44+0800\n" "PO-Revision-Date: 2025-02-16 12:19-0300\n" "Last-Translator: Alexandre Folle de Menezes \n" "Language-Team: Portuguese, Brazilian\n" @@ -117,11 +117,12 @@ msgstr "Apoiar face à superfície" #, boost-format msgid "" -"Filament count exceeds the maximum number that painting tool supports. only the " -"first %1% filaments will be available in painting tool." +"Filament count exceeds the maximum number that painting tool supports. only " +"the first %1% filaments will be available in painting tool." msgstr "" -"A contagem de filamentos excede o número máximo que a ferramenta de pintura suporta. " -"Apenas os primeiros %1% filamentos estarão disponíveis na ferramenta de pintura." +"A contagem de filamentos excede o número máximo que a ferramenta de pintura " +"suporta. Apenas os primeiros %1% filamentos estarão disponíveis na " +"ferramenta de pintura." msgid "Color Painting" msgstr "Pintura de cores" @@ -534,8 +535,8 @@ msgstr "Cortar por Plano" msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" -"as arestas abertas podem ser causadas pela ferramenta de corte, você quer corrigí-" -"las agora?" +"as arestas abertas podem ser causadas pela ferramenta de corte, você quer " +"corrigí-las agora?" msgid "Repairing model object" msgstr "Reparando objeto do modelo" @@ -557,11 +558,11 @@ msgstr "Taxa de decimação" #, boost-format msgid "" -"Processing model '%1%' with more than 1M triangles could be slow. It is highly " -"recommended to simplify the model." +"Processing model '%1%' with more than 1M triangles could be slow. It is " +"highly recommended to simplify the model." msgstr "" -"Processar modelo '%1%' com mais de 1M de triângulos pode ser lento. É altamente " -"recomendável simplificar o modelo." +"Processar modelo '%1%' com mais de 1M de triângulos pode ser lento. É " +"altamente recomendável simplificar o modelo." msgid "Simplify model" msgstr "Simplificar modelo" @@ -570,7 +571,8 @@ msgid "Simplify" msgstr "Simplificar" msgid "Simplification is currently only allowed when a single part is selected" -msgstr "A simplificação só é permitida quando uma única peça é selecionada no momento" +msgstr "" +"A simplificação só é permitida quando uma única peça é selecionada no momento" msgid "Error" msgstr "Erro" @@ -602,7 +604,8 @@ msgid "%1%" msgstr "%1%" msgid "Can't apply when process preview." -msgstr "Não é possível aplicar quando a visualização do processo está em andamento." +msgstr "" +"Não é possível aplicar quando a visualização do processo está em andamento." msgid "Operation already cancelling. Please wait few seconds." msgstr "Operação já sendo cancelada. Por favor, aguarde alguns segundos." @@ -730,18 +733,19 @@ msgid "Advanced" msgstr "Avançado" msgid "" -"The text cannot be written using the selected font. Please try choosing a different " -"font." +"The text cannot be written using the selected font. Please try choosing a " +"different font." msgstr "" -"O texto não pode ser escrito usando a fonte selecionada. Por favor, tente escolher " -"uma fonte diferente." +"O texto não pode ser escrito usando a fonte selecionada. Por favor, tente " +"escolher uma fonte diferente." msgid "Embossed text cannot contain only white spaces." msgstr "Texto em relevo não pode conter apenas espaços em branco." msgid "Text contains character glyph (represented by '?') unknown by font." msgstr "" -"O texto contém um glifo de caractere (representado por '?') desconhecido pela fonte." +"O texto contém um glifo de caractere (representado por '?') desconhecido " +"pela fonte." msgid "Text input doesn't show font skew." msgstr "A entrada de texto não mostra a inclinação da fonte." @@ -995,10 +999,12 @@ msgid "Rotate text Clock-wise." msgstr "Girar o texto no sentido horário." msgid "Unlock the text's rotation when moving text along the object's surface." -msgstr "Desbloquear a rotação do texto ao movê-lo ao longo da superfície do objeto." +msgstr "" +"Desbloquear a rotação do texto ao movê-lo ao longo da superfície do objeto." msgid "Lock the text's rotation when moving text along the object's surface." -msgstr "Bloquear a rotação do texto ao movê-lo ao longo da superfície do objeto." +msgstr "" +"Bloquear a rotação do texto ao movê-lo ao longo da superfície do objeto." msgid "Select from True Type Collection." msgstr "Selecionar da Coleção True Type." @@ -1011,12 +1017,12 @@ msgstr "Orientar o texto em direção à câmera." #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Application selected a similar one(\"%2%\"). " -"You have to specify font for enable edit text." +"Can't load exactly same font(\"%1%\"). Application selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." msgstr "" -"Não é possível carregar a mesma fonte exatamente (\"%1%\"). A aplicação selecionou " -"uma similar (\"%2%\"). Você deve especificar uma fonte para habilitar a edição de " -"texto." +"Não é possível carregar a mesma fonte exatamente (\"%1%\"). A aplicação " +"selecionou uma similar (\"%2%\"). Você deve especificar uma fonte para " +"habilitar a edição de texto." msgid "No symbol" msgstr "Sem símbolo" @@ -1131,8 +1137,12 @@ msgstr "Tipo de traço indefinido" msgid "Path can't be healed from self-intersection and multiple points." msgstr "O caminho não pode ser reparado de auto-interseção e pontos múltiplos." -msgid "Final shape contains self-intersection or multiple points with same coordinate." -msgstr "A forma final contém auto-interseção ou múltiplos pontos com mesma coordenada." +msgid "" +"Final shape contains self-intersection or multiple points with same " +"coordinate." +msgstr "" +"A forma final contém auto-interseção ou múltiplos pontos com mesma " +"coordenada." #, boost-format msgid "Shape is marked as invisible (%1%)." @@ -1253,7 +1263,8 @@ msgstr "O arquivo NÃO existe (%1%)." #, boost-format msgid "Filename has to end with \".svg\" but you selected %1%" -msgstr "O nome do arquivo precisa terminar com \".svg\", mas você selecionou %1%" +msgstr "" +"O nome do arquivo precisa terminar com \".svg\", mas você selecionou %1%" #, boost-format msgid "Nano SVG parser can't load from file (%1%)." @@ -1308,7 +1319,8 @@ msgstr "Cancelar um recurso até sair" msgid "Measure" msgstr "Medir" -msgid "Please confirm explosion ratio = 1,and please select at least one object" +msgid "" +"Please confirm explosion ratio = 1,and please select at least one object" msgstr "" msgid "Please select at least one object." @@ -1419,7 +1431,9 @@ msgid "%1% was replaced with %2%" msgstr "%1% foi substituído por %2%" msgid "The configuration may be generated by a newer version of OrcaSlicer." -msgstr "A configuração pode ter sido gerada por uma versão mais recente do OrcaSlicer." +msgstr "" +"A configuração pode ter sido gerada por uma versão mais recente do " +"OrcaSlicer." msgid "Some values have been replaced. Please check them:" msgstr "Alguns valores foram substituídos. Por favor, verifique-os:" @@ -1435,30 +1449,32 @@ msgstr "Máquina" msgid "Configuration package was loaded, but some values were not recognized." msgstr "" -"O pacote de configuração foi carregado, mas alguns valores não foram reconhecidos." - -#, boost-format -msgid "Configuration file \"%1%\" was loaded, but some values were not recognized." -msgstr "" -"O arquivo de configuração \"%1%\" foi carregado, mas alguns valores não foram " +"O pacote de configuração foi carregado, mas alguns valores não foram " "reconhecidos." +#, boost-format 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." +"Configuration file \"%1%\" was loaded, but some values were not recognized." msgstr "" -"OrcaSlicer será encerrado devido à falta de memória. Pode ser um bug. Agradecemos se " -"você relatar o problema para nossa equipe." +"O arquivo de configuração \"%1%\" foi carregado, mas alguns valores não " +"foram reconhecidos." + +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 será encerrado devido à falta de memória. Pode ser um bug. " +"Agradecemos se você relatar o problema para nossa equipe." msgid "Fatal error" msgstr "Erro fatal" msgid "" -"OrcaSlicer will terminate because of a localization error. It will be appreciated if " -"you report the specific scenario this issue happened." +"OrcaSlicer will terminate because of a localization error. It will be " +"appreciated if you report the specific scenario this issue happened." msgstr "" -"OrcaSlicer será encerrado devido a um erro de localização. Agradecemos se você " -"relatar o cenário específico em que esse problema ocorreu." +"OrcaSlicer será encerrado devido a um erro de localização. Agradecemos se " +"você relatar o cenário específico em que esse problema ocorreu." msgid "Critical error" msgstr "Erro crítico" @@ -1484,11 +1500,12 @@ msgid "Connect %s failed! [SN:%s, code=%s]" msgstr "Falha na conexão %s! [SN:%s, código=%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 requer o tempo de execução Microsoft WebView2 para operar determinados " -"recursos.\n" +"Orca Slicer requer o tempo de execução Microsoft WebView2 para operar " +"determinados recursos.\n" "Clique em Sim para instalá-lo agora." msgid "WebView2 Runtime" @@ -1524,14 +1541,14 @@ msgstr "Informações" 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." +"Please note, application settings will be lost, but printer profiles will " +"not be affected." msgstr "" "O arquivo de configuração do OrcaSlicer pode estar corrompido e não pode ser " "analisado.\n" "O OrcaSlicer tentou recriar o arquivo de configuração.\n" -"Por favor, note que as configurações do aplicativo serão perdidas, mas os perfis de " -"impressora não serão afetados." +"Por favor, note que as configurações do aplicativo serão perdidas, mas os " +"perfis de impressora não serão afetados." msgid "Rebuild" msgstr "Reconstruindo" @@ -1561,39 +1578,39 @@ msgid "Some presets are modified." msgstr "Alguns presets foram modificados." msgid "" -"You can keep the modified presets to the new project, discard or save changes as new " -"presets." +"You can keep the modified presets to the new project, discard or save " +"changes as new presets." msgstr "" -"Você pode manter os modelos modificados no novo projeto, descartar ou salvar as " -"alterações como novos modelos." +"Você pode manter os modelos modificados no novo projeto, descartar ou salvar " +"as alterações como novos modelos." msgid "User logged out" msgstr "Usuário desconectado" msgid "new or open project file is not allowed during the slicing process!" msgstr "" -"criar ou abrir um arquivo de projeto novo não é permitido durante o processo de " -"fatiamento!" +"criar ou abrir um arquivo de projeto novo não é permitido durante o processo " +"de fatiamento!" msgid "Open Project" msgstr "Abrir Projeto" msgid "" -"The version of Orca Slicer is too low and needs to be updated to the latest version " -"before it can be used normally" +"The version of Orca Slicer is too low and needs to be updated to the latest " +"version before it can be used normally" msgstr "" -"A versão do Orca Slicer é muito antiga e precisa ser atualizada para a versão mais " -"recente antes de poder ser usada normalmente" +"A versão do Orca Slicer é muito antiga e precisa ser atualizada para a " +"versão mais recente antes de poder ser usada normalmente" msgid "Privacy Policy Update" msgstr "Atualização da Política de Privacidade" msgid "" -"The number of user presets cached in the cloud has exceeded the upper limit, newly " -"created user presets can only be used locally." +"The number of user presets cached in the cloud has exceeded the upper limit, " +"newly created user presets can only be used locally." msgstr "" -"O número de presets de usuário em cache na nuvem excedeu o limite superior, os " -"presets de usuário recém-criados só podem ser usados localmente." +"O número de presets de usuário em cache na nuvem excedeu o limite superior, " +"os presets de usuário recém-criados só podem ser usados localmente." msgid "Sync user presets" msgstr "Sincronizar presets do usuário" @@ -1629,8 +1646,8 @@ msgid "" "Could not start URL download. Destination folder is not set. Please choose " "destination folder in Configuration Wizard." msgstr "" -"Não foi possível baixar da URL. A pasta de destino não está definida. Por favor, " -"escolha a pasta de destino no Assistente de Configuração." +"Não foi possível baixar da URL. A pasta de destino não está definida. Por " +"favor, escolha a pasta de destino no Assistente de Configuração." msgid "Import File" msgstr "Importar Arquivo" @@ -1790,14 +1807,15 @@ msgid "Orca String Hell" msgstr "Orca String Hell" msgid "" -"This model features text embossment on the top surface. For optimal results, it is " -"advisable to set the 'One Wall Threshold(min_width_top_surface)' to 0 for the 'Only " -"One Wall on Top Surfaces' to work best.\n" +"This model features text embossment on the top surface. For optimal results, " +"it is advisable to set the 'One Wall Threshold(min_width_top_surface)' to 0 " +"for the 'Only One Wall on Top Surfaces' to work best.\n" "Yes - Change these settings automatically\n" "No - Do not change these settings for me" msgstr "" -"Este modelo possui texto em alto relevo na superfície superior. Para obter os " -"melhores resultados, é aconselhável definir o 'Limiar de perímetro único'\n" +"Este modelo possui texto em alto relevo na superfície superior. Para obter " +"os melhores resultados, é aconselhável definir o 'Limiar de perímetro " +"único'\n" " (min_width_top_surface)' como 0 para que 'Apenas uma Parede nas Superfícies " "Superiores' funcione melhor.\n" "Sim - Alterar essas configurações automaticamente\n" @@ -1985,7 +2003,8 @@ msgid "Auto orientation" msgstr "Orientação Automática" msgid "Auto orient the object to improve print quality." -msgstr "Orientar automaticamente o objeto para melhorar a qualidade de impressão." +msgstr "" +"Orientar automaticamente o objeto para melhorar a qualidade de impressão." msgid "Select All" msgstr "Selecionar Tudo" @@ -2087,14 +2106,16 @@ msgid "Right click the icon to fix model object" msgstr "Clique com o botão direito no ícone para corrigir o objeto do modelo" msgid "Right button click the icon to drop the object settings" -msgstr "Clique com o botão direito no ícone para descartar as configurações do objeto" +msgstr "" +"Clique com o botão direito no ícone para descartar as configurações do objeto" msgid "Click the icon to reset all settings of the object" msgstr "Clique no ícone para redefinir todas as configurações do objeto" msgid "Right button click the icon to drop the object printable property" msgstr "" -"Clique com o botão direito no ícone para descartar a propriedade imprimível do objeto" +"Clique com o botão direito no ícone para descartar a propriedade imprimível " +"do objeto" msgid "Click the icon to toggle printable property of the object" msgstr "Clique no ícone para alternar a propriedade imprimível do objeto" @@ -2126,10 +2147,12 @@ msgstr "Adicionar Modificador" msgid "Switch to per-object setting mode to edit modifier settings." msgstr "Mude para o modo de configuração por objeto para editar modificadores." -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 "" -"Mude para o modo de configuração por objeto para editar processos dos objetos " -"selecionados." +"Mude para o modo de configuração por objeto para editar processos dos " +"objetos selecionados." msgid "Delete connector from object which is a part of cut" msgstr "Excluir conector do objeto que é parte do corte" @@ -2141,17 +2164,18 @@ msgid "Delete negative volume from object which is a part of cut" msgstr "Excluir volume negativo do objeto que é parte do corte" msgid "" -"To save cut correspondence you can delete all connectors from all related objects." +"To save cut correspondence you can delete all connectors from all related " +"objects." msgstr "" -"Para salvar a correspondência de corte, você pode excluir todos os conectores de " -"todos os objetos relacionados." +"Para salvar a correspondência de corte, você pode excluir todos os " +"conectores de todos os objetos relacionados." 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 " -"information first." +"To manipulate with solid parts or negative volumes you have to invalidate " +"cut information first." msgstr "" "Esta ação irá quebrar a correspondência de corte.\n" "Depois disso, a consistência do modelo não pode ser garantida.\n" @@ -2207,15 +2231,18 @@ msgstr "Camada" msgid "Selection conflicts" msgstr "Conflitos de seleção" -msgid "If first selected item is an object, the second one should also be object." +msgid "" +"If first selected item is an object, the second one should also be object." msgstr "" -"Se o primeiro item selecionado for um objeto, o segundo também deve ser um objeto." +"Se o primeiro item selecionado for um objeto, o segundo também deve ser um " +"objeto." msgid "" -"If first selected item is a part, the second one should be part in the same object." +"If first selected item is a part, the second one should be part in the same " +"object." msgstr "" -"Se o primeiro item selecionado for uma peça, o segundo deve ser uma peça no mesmo " -"objeto." +"Se o primeiro item selecionado for uma peça, o segundo deve ser uma peça no " +"mesmo objeto." msgid "The type of the last solid object part is not to be changed." msgstr "O tipo da última peça do objeto sólido não deve ser alterado." @@ -2273,7 +2300,8 @@ msgid "Invalid numeric." msgstr "Número inválido." msgid "one cell can only be copied to one or multiple cells in the same column" -msgstr "uma célula só pode ser copiada para uma ou várias células na mesma coluna" +msgstr "" +"uma célula só pode ser copiada para uma ou várias células na mesma coluna" msgid "multiple cells copy is not supported" msgstr "a cópia de múltiplas células não é suportada" @@ -2432,7 +2460,8 @@ msgid "Failed to connect to cloud service" msgstr "Falha ao conectar ao serviço de nuvem" msgid "Please click on the hyperlink above to view the cloud service status" -msgstr "Por favor, clique no link acima para visualizar o status do serviço de nuvem" +msgstr "" +"Por favor, clique no link acima para visualizar o status do serviço de nuvem" msgid "Failed to connect to the printer" msgstr "Falha ao conectar à impressora" @@ -2525,8 +2554,8 @@ msgid "Grab new filament" msgstr "Pegar novo filamento" msgid "" -"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically load or " -"unload filaments." +"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically " +"load or unload filaments." msgstr "" "Escolha um slot AMS e pressione o botão \"Carregar\" ou \"Descarregar\" para " "carregar ou descarregar automaticamente o filamento." @@ -2560,24 +2589,29 @@ msgstr "Organizando" msgid "Arranging canceled." msgstr "Organização cancelada." -msgid "Arranging is done but there are unpacked items. Reduce spacing and try again." +msgid "" +"Arranging is done but there are unpacked items. Reduce spacing and try again." msgstr "" -"A organização foi concluída, mas há itens desembalados. Reduza o espaçamento e tente " -"novamente." +"A organização foi concluída, mas há itens desembalados. Reduza o espaçamento " +"e tente novamente." msgid "Arranging done." msgstr "Organização concluída." -msgid "Arrange failed. Found some exceptions when processing object geometries." +msgid "" +"Arrange failed. Found some exceptions when processing object geometries." msgstr "" -"Organização falhou. Encontrou algumas exceções ao processar geometrias de objetos." +"Organização falhou. Encontrou algumas exceções ao processar geometrias de " +"objetos." #, 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 "" -"A organização ignorou os seguintes objetos que não podem caber em uma única mesa:\n" +"A organização ignorou os seguintes objetos que não podem caber em uma única " +"mesa:\n" "%s" msgid "" @@ -2638,7 +2672,8 @@ msgstr "Tarefa cancelada." msgid "Upload task timed out. Please check the network status and try again." msgstr "" -"O tempo para envio da tarefa expirou. Verifique o estado da rede e tente novamente." +"O tempo para envio da tarefa expirou. Verifique o estado da rede e tente " +"novamente." msgid "Cloud service connection failed. Please try again." msgstr "Falha na conexão com o serviço de nuvem. Por favor, tente novamente." @@ -2647,8 +2682,8 @@ msgid "Print file not found. please slice again." msgstr "Arquivo de impressão não encontrado. Por favor, fatie novamente." msgid "" -"The print file exceeds the maximum allowable size (1GB). Please simplify the model " -"and slice again." +"The print file exceeds the maximum allowable size (1GB). Please simplify the " +"model and slice again." msgstr "" "O arquivo de impressão excede o tamanho máximo permitido (1GB). Por favor, " "simplifique o modelo e fatie novamente." @@ -2659,25 +2694,28 @@ msgstr "Falha ao enviar o trabalho de impressão. Por favor, tente novamente." msgid "Failed to upload file to ftp. Please try again." msgstr "Falha ao enviar o arquivo via FTP. Por favor, tente novamente." -msgid "Check the current status of the bambu server by clicking on the link above." +msgid "" +"Check the current status of the bambu server by clicking on the link above." msgstr "Verifique o estado atual do servidor Bambu clicando no link acima." msgid "" -"The size of the print file is too large. Please adjust the file size and try again." +"The size of the print file is too large. Please adjust the file size and try " +"again." msgstr "" -"O tamanho do arquivo de impressão é muito grande. Por favor, ajuste o tamanho do " -"arquivo e tente novamente." +"O tamanho do arquivo de impressão é muito grande. Por favor, ajuste o " +"tamanho do arquivo e tente novamente." msgid "Print file not found, Please slice it again and send it for printing." msgstr "" -"Arquivo de impressão não encontrado. Por favor, fatie-o novamente e envie para " -"impressão." +"Arquivo de impressão não encontrado. Por favor, fatie-o novamente e envie " +"para impressão." msgid "" -"Failed to upload print file to FTP. Please check the network status and try again." +"Failed to upload print file to FTP. Please check the network status and try " +"again." msgstr "" -"Falha ao enviar o arquivo de impressão via FTP. Por favor, verifique o estado da " -"rede e tente novamente." +"Falha ao enviar o arquivo de impressão via FTP. Por favor, verifique o " +"estado da rede e tente novamente." msgid "Sending print job over LAN" msgstr "Enviando trabalho de impressão via LAN" @@ -2700,11 +2738,13 @@ msgstr "Enviando configuração de impressão" #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the device page in %ss" msgstr "" -"Enviado com sucesso. Irá saltar automaticamente para a página do dispositivo em %ss" +"Enviado com sucesso. Irá saltar automaticamente para a página do dispositivo " +"em %ss" #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the next page in %ss" -msgstr "Enviado com sucesso. Irá saltar automaticamente para a próxima página em %ss" +msgstr "" +"Enviado com sucesso. Irá saltar automaticamente para a próxima página em %ss" msgid "An SD card needs to be inserted before printing via LAN." msgstr "Um cartão SD precisa ser inserido antes de imprimir via LAN." @@ -2726,11 +2766,11 @@ msgid "Importing SLA archive" msgstr "Importando arquivo SLA" msgid "" -"The SLA archive doesn't contain any presets. Please activate some SLA printer preset " -"first before importing that SLA archive." +"The SLA archive doesn't contain any presets. Please activate some SLA " +"printer preset first before importing that SLA archive." msgstr "" -"O arquivo SLA não contém nenhum perfil. Por favor, ative alguns perfis de impressora " -"SLA antes de importar esse arquivo SLA." +"O arquivo SLA não contém nenhum perfil. Por favor, ative alguns perfis de " +"impressora SLA antes de importar esse arquivo SLA." msgid "Importing canceled." msgstr "Importação cancelada." @@ -2739,18 +2779,20 @@ msgid "Importing done." msgstr "Importação concluída." msgid "" -"The imported SLA archive did not contain any presets. The current SLA presets were " -"used as fallback." +"The imported SLA archive did not contain any presets. The current SLA " +"presets were used as fallback." msgstr "" -"O arquivo SLA importado não contém nenhum perfil. Os perfis SLA atuais foram usados " -"como alternativa." +"O arquivo SLA importado não contém nenhum perfil. Os perfis SLA atuais foram " +"usados como alternativa." msgid "You cannot load SLA project with a multi-part object on the bed" -msgstr "Você não pode carregar um projeto SLA com um objeto de várias peças na mesa" +msgstr "" +"Você não pode carregar um projeto SLA com um objeto de várias peças na mesa" msgid "Please check your object list before preset changing." msgstr "" -"Por favor, verifique sua lista de objetos antes de mudar a configuração predefinida." +"Por favor, verifique sua lista de objetos antes de mudar a configuração " +"predefinida." msgid "Attention!" msgstr "Atenção!" @@ -2795,11 +2837,11 @@ msgid "Libraries" msgstr "Bibliotecas" msgid "" -"This software uses open source components whose copyright and other proprietary " -"rights belong to their respective owners" +"This software uses open source components whose copyright and other " +"proprietary rights belong to their respective owners" msgstr "" -"Este software utiliza componentes open source cujos direitos autorais e outros " -"direitos de propriedade pertencem aos seus respectivos proprietários" +"Este software utiliza componentes open source cujos direitos autorais e " +"outros direitos de propriedade pertencem aos seus respectivos proprietários" #, c-format, boost-format msgid "About %s" @@ -2812,10 +2854,12 @@ msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." msgstr "BambuStudio é originalmente baseado no PrusaSlicer pela PrusaResearch." msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." -msgstr "PrusaSlicer é originalmente baseado no Slic3r por Alessandro Ranellucci." +msgstr "" +"PrusaSlicer é originalmente baseado no Slic3r por Alessandro Ranellucci." msgid "" -"Slic3r was created by Alessandro Ranellucci with the help of many other contributors." +"Slic3r was created by Alessandro Ranellucci with the help of many other " +"contributors." msgstr "" "Slic3r foi criado por Alessandro Ranellucci com a ajuda de muitos outros " "colaboradores." @@ -2868,11 +2912,14 @@ msgid "Factor N" msgstr "Fator N" msgid "Setting AMS slot information while printing is not supported" -msgstr "A configuração das informações do slot AMS durante a impressão não é suportada" +msgstr "" +"A configuração das informações do slot AMS durante a impressão não é " +"suportada" msgid "Setting Virtual slot information while printing is not supported" msgstr "" -"A configuração de informações do slot virtual durante a impressão não é suportada" +"A configuração de informações do slot virtual durante a impressão não é " +"suportada" msgid "Are you sure you want to clear the filament information?" msgstr "Tem certeza de que deseja limpar as informações do filamento?" @@ -2886,7 +2933,8 @@ msgstr "Por favor insira um valor válido (K entre %.1f~%.1f)" #, c-format, boost-format msgid "Please input a valid value (K in %.1f~%.1f, N in %.1f~%.1f)" -msgstr "Por favor insira um valor válido (K entre %.1f~%.1f, N entre %.1f~%.1f)" +msgstr "" +"Por favor insira um valor válido (K entre %.1f~%.1f, N entre %.1f~%.1f)" msgid "Other Color" msgstr "Outra Cor" @@ -2898,9 +2946,9 @@ msgid "Dynamic flow calibration" msgstr "Calibração dinâmica do fluxo" 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." +"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 "" "A temperatura do bico e a fluxo volumétrico máximo afetarão os resultados da " "calibração. Preencha os mesmos valores que a impressão atual. Eles podem ser " @@ -2937,13 +2985,13 @@ msgid "Next" msgstr "Próximo" 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." +"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 "" -"Calibração concluída. Por favor, encontre a linha de extrusão mais uniforme na sua " -"mesa aquecida como na imagem abaixo, e preencha o valor do seu lado esquerdo na " -"caixa de entrada do fator K." +"Calibração concluída. Por favor, encontre a linha de extrusão mais uniforme " +"na sua mesa aquecida como na imagem abaixo, e preencha o valor do seu lado " +"esquerdo na caixa de entrada do fator K." msgid "Save" msgstr "Salvar" @@ -2974,10 +3022,11 @@ msgstr "Passo" msgid "AMS Slots" msgstr "Espaços do AMS" -msgid "Note: Only the AMS slots loaded with the same material type can be selected." +msgid "" +"Note: Only the AMS slots loaded with the same material type can be selected." msgstr "" -"Nota: Apenas os espaços do AMS carregados com o mesmo tipo de material podem ser " -"selecionadas." +"Nota: Apenas os espaços do AMS carregados com o mesmo tipo de material podem " +"ser selecionadas." msgid "Enable AMS" msgstr "Ativar AMS" @@ -2995,20 +3044,21 @@ msgid "Current AMS humidity" msgstr "" msgid "" -"Please change the desiccant when it is too wet. The indicator may not represent " -"accurately in following cases : when the lid is open or the desiccant pack is " -"changed. it take hours to absorb the moisture, low temperatures also slow down the " -"process." +"Please change the desiccant when it is too wet. The indicator may not " +"represent accurately in following cases : when the lid is open or the " +"desiccant pack is changed. it take hours to absorb the moisture, low " +"temperatures also slow down the process." msgstr "" -"Por favor, mude o dessecante quando estiver muito molhado. O indicador pode não " -"representar com precisão nos casos a seguir: quando a tampa está aberta ou quando o " -"dessecante é trocado. Leva horas para absorver a umidade, baixas temperaturas também " -"atrasam o processo." +"Por favor, mude o dessecante quando estiver muito molhado. O indicador pode " +"não representar com precisão nos casos a seguir: quando a tampa está aberta " +"ou quando o dessecante é trocado. Leva horas para absorver a umidade, baixas " +"temperaturas também atrasam o processo." -msgid "Config which AMS slot should be used for a filament used in the print job" +msgid "" +"Config which AMS slot should be used for a filament used in the print job" msgstr "" -"Configure qual espaço do AMS deve ser usado para um filamento usado no trabalho de " -"impressão" +"Configure qual espaço do AMS deve ser usado para um filamento usado no " +"trabalho de impressão" msgid "Filament used in this print job" msgstr "Filamento usado neste trabalho de impressão" @@ -3035,7 +3085,8 @@ msgid "" "When the current material run out, the printer will continue to print in the " "following order." msgstr "" -"Quando o material atual acabar, a impressora continuará a imprimir na seguinte ordem." +"Quando o material atual acabar, a impressora continuará a imprimir na " +"seguinte ordem." msgid "Group" msgstr "Grupo" @@ -3043,20 +3094,22 @@ msgstr "Grupo" msgid "The printer does not currently support auto refill." msgstr "A impressora atualmente não suporta recarga automática." -msgid "AMS filament backup is not enabled, please enable it in the AMS settings." +msgid "" +"AMS filament backup is not enabled, please enable it in the AMS settings." msgstr "" -"O backup de filamento do AMS não está ativado, por favor ative-o nas configurações " -"do AMS." +"O backup de filamento do AMS não está ativado, por favor ative-o nas " +"configurações do AMS." 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)" +"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 "" -"Se houver dois filamentos idênticos no AMS, o backup de filamento do AMS será " -"ativado. \n" -"(Funciona atualmente com recarga automática de filamentos da mesma marca, tipo de " -"material e cor)" +"Se houver dois filamentos idênticos no AMS, o backup de filamento do AMS " +"será ativado. \n" +"(Funciona atualmente com recarga automática de filamentos da mesma marca, " +"tipo de material e cor)" msgid "DRY" msgstr "SECO" @@ -3071,54 +3124,58 @@ msgid "Insertion update" msgstr "Atualização de inserção" msgid "" -"The AMS will automatically read the filament information when inserting a new Bambu " -"Lab filament. This takes about 20 seconds." +"The AMS will automatically read the filament information when inserting a " +"new Bambu Lab filament. This takes about 20 seconds." msgstr "" "O AMS irá ler automaticamente as informações do filamento ao inserir um novo " "filamento da Bambu Lab. Isso leva cerca de 20 segundos." msgid "" -"Note: if a new filament is inserted during printing, the AMS will not automatically " -"read any information until printing is completed." +"Note: if a new filament is inserted during printing, the AMS will not " +"automatically read any information until printing is completed." msgstr "" -"Nota: se um novo filamento for inserido durante a impressão, o AMS não irá ler " -"automaticamente nenhuma informação até que a impressão seja concluída." +"Nota: se um novo filamento for inserido durante a impressão, o AMS não irá " +"ler automaticamente nenhuma informação até que a impressão seja concluída." msgid "" -"When inserting a new filament, the AMS will not automatically read its information, " -"leaving it blank for you to enter manually." +"When inserting a new filament, the AMS will not automatically read its " +"information, leaving it blank for you to enter manually." msgstr "" -"Ao inserir um novo filamento, o AMS não irá ler automaticamente suas informações, " -"deixando-o em branco para você inserir manualmente." +"Ao inserir um novo filamento, o AMS não irá ler automaticamente suas " +"informações, deixando-o em branco para você inserir manualmente." msgid "Power on update" msgstr "Atualização de inicialização" 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." +"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 "" -"O AMS irá ler automaticamente as informações do filamento inserido na inicialização. " -"Levará cerca de 1 minuto. O processo de leitura irá girar as bobinas de filamento." +"O AMS irá ler automaticamente as informações do filamento inserido na " +"inicialização. Levará cerca de 1 minuto. O processo de leitura irá girar as " +"bobinas de filamento." 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." +"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 "" -"O AMS não irá ler automaticamente informações do filamento inserido durante a " -"inicialização e continuará a usar as informações registradas antes do último " -"desligamento." +"O AMS não irá ler automaticamente informações do filamento inserido durante " +"a inicialização e continuará a usar as informações registradas antes do " +"último desligamento." msgid "Update remaining capacity" msgstr "Atualizar capacidade restante" msgid "" -"The AMS will estimate Bambu filament's remaining capacity after the filament info is " -"updated. During printing, remaining capacity will be updated automatically." +"The AMS will estimate Bambu filament's remaining capacity after the filament " +"info is updated. During printing, remaining capacity will be updated " +"automatically." msgstr "" -"O AMS irá estimar a capacidade restante do filamento Bambu após as informações do " -"filamento serem atualizadas. Durante a impressão, a capacidade restante será " -"atualizada automaticamente." +"O AMS irá estimar a capacidade restante do filamento Bambu após as " +"informações do filamento serem atualizadas. Durante a impressão, a " +"capacidade restante será atualizada automaticamente." msgid "AMS filament backup" msgstr "Backup de filamento do AMS" @@ -3134,11 +3191,11 @@ msgid "Air Printing Detection" msgstr "Detecção de Impressão Aérea" msgid "" -"Detects clogging and filament grinding, halting printing immediately to conserve " -"time and filament." +"Detects clogging and filament grinding, halting printing immediately to " +"conserve time and filament." msgstr "" -"Detecta o entupimento e erosão de filamento, parando a impressão imediatamente para " -"conservar tempo e filamento." +"Detecta o entupimento e erosão de filamento, parando a impressão " +"imediatamente para conservar tempo e filamento." msgid "File" msgstr "Arquivo" @@ -3150,15 +3207,15 @@ msgid "" "Failed to download the plug-in. Please check your firewall settings and vpn " "software, check and retry." msgstr "" -"Falha ao baixar o plug-in. Verifique as configurações do seu firewall e software " -"vpn, verifique e tente novamente." +"Falha ao baixar o plug-in. Verifique as configurações do seu firewall e " +"software vpn, verifique e tente novamente." msgid "" -"Failed to install the plug-in. Please check whether it is blocked or deleted by anti-" -"virus software." +"Failed to install the plug-in. Please check whether it is blocked or deleted " +"by anti-virus software." msgstr "" -"Falha ao instalar o plug-in. Verifique se ele está bloqueado ou excluído pelo " -"software antivírus." +"Falha ao instalar o plug-in. Verifique se ele está bloqueado ou excluído " +"pelo software antivírus." msgid "click here to see more info" msgstr "clique aqui para ver mais informações" @@ -3170,17 +3227,18 @@ msgid "" ") to locate the toolhead's position. This prevents device moving beyond the " "printable boundary and causing equipment wear." msgstr "" -") para localizar a posição da extrusora. Isso impede que o dispositivo se mova além " -"do limite imprimível e cause desgaste no equipamento." +") para localizar a posição da extrusora. Isso impede que o dispositivo se " +"mova além do limite imprimível e cause desgaste no equipamento." msgid "Go Home" msgstr "Ir para Ínicio" msgid "" -"A error occurred. Maybe memory of system is not enough or it's a bug of the program" +"A error occurred. Maybe memory of system is not enough or it's a bug of the " +"program" msgstr "" -"Ocorreu um erro. Talvez a memória do sistema não seja suficiente ou seja um bug do " -"programa" +"Ocorreu um erro. Talvez a memória do sistema não seja suficiente ou seja um " +"bug do programa" msgid "Please save project and restart the program. " msgstr "Por favor, salve o projeto e reinicie o programa. " @@ -3223,47 +3281,48 @@ msgstr "Ocorreu um erro desconhecido ao exportar G-code." #, boost-format msgid "" -"Copying of the temporary G-code to the output G-code failed. Maybe the SD card is " -"write locked?\n" +"Copying of the temporary G-code to the output G-code failed. Maybe the SD " +"card is write locked?\n" "Error message: %1%" msgstr "" -"A cópia do G-code temporário para o G-code de saída falhou. Talvez o cartão SD " -"esteja bloqueado?\n" +"A cópia do G-code temporário para o G-code de saída falhou. Talvez o cartão " +"SD esteja bloqueado?\n" "Mensagem de erro: %1%" #, boost-format msgid "" -"Copying of the temporary G-code to the output G-code failed. There might be problem " -"with target device, please try exporting again or using different device. The " -"corrupted output G-code is at %1%.tmp." +"Copying of the temporary G-code to the output G-code failed. There might be " +"problem with target device, please try exporting again or using different " +"device. The corrupted output G-code is at %1%.tmp." msgstr "" -"A cópia do G-code temporário para o G-code de saída falhou. Pode haver problema com " -"o dispositivo de destino, por favor tente exportar novamente ou usar outro " -"dispositivo. O G-code de saída corrompido está em %1%.tmp." +"A cópia do G-code temporário para o G-code de saída falhou. Pode haver " +"problema com o dispositivo de destino, por favor tente exportar novamente ou " +"usar outro dispositivo. O G-code de saída corrompido está em %1%.tmp." #, boost-format msgid "" -"Renaming of the G-code after copying to the selected destination folder has failed. " -"Current path is %1%.tmp. Please try exporting again." +"Renaming of the G-code after copying to the selected destination folder has " +"failed. Current path is %1%.tmp. Please try exporting again." msgstr "" -"Renomear o G-code após copiar para a pasta destino selecionada falhou. O caminho " -"atual é %1%.tmp. Por favor, tente exportar novamente." +"Renomear o G-code após copiar para a pasta destino selecionada falhou. O " +"caminho atual é %1%.tmp. Por favor, tente exportar novamente." #, boost-format msgid "" -"Copying of the temporary G-code has finished but the original code at %1% couldn't " -"be opened during copy check. The output G-code is at %2%.tmp." +"Copying of the temporary G-code has finished but the original code at %1% " +"couldn't be opened during copy check. The output G-code is at %2%.tmp." msgstr "" -"A cópia do G-code temporário foi concluída, mas o código original em %1% não pôde " -"ser aberto durante a verificação da cópia. O G-gode de saída está em %2%.tmp." +"A cópia do G-code temporário foi concluída, mas o código original em %1% não " +"pôde ser aberto durante a verificação da cópia. O G-gode de saída está em " +"%2%.tmp." #, boost-format msgid "" -"Copying of the temporary G-code has finished but the exported code couldn't be " -"opened during copy check. The output G-code is at %1%.tmp." +"Copying of the temporary G-code has finished but the exported code couldn't " +"be opened during copy check. The output G-code is at %1%.tmp." msgstr "" -"A cópia do G-code temporário foi concluída, mas o código exportado não pôde ser " -"aberto durante a verificação da cópia. O G-code de saída está em %1%.tmp." +"A cópia do G-code temporário foi concluída, mas o código exportado não pôde " +"ser aberto durante a verificação da cópia. O G-code de saída está em %1%.tmp." #, boost-format msgid "G-code file exported to %1%" @@ -3288,7 +3347,8 @@ msgstr "Cópia do G-Code temporário para o G-Code de saída falhou" #, boost-format msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" msgstr "" -"Agendando o envio para `%1%`. Veja Janela -> Fila de Envio do Anfitrião de Impressão" +"Agendando o envio para `%1%`. Veja Janela -> Fila de Envio do Anfitrião de " +"Impressão" msgid "Device" msgstr "Dispositivo" @@ -3340,10 +3400,11 @@ msgstr "Status do dispositivo" msgid "Actions" msgstr "Ações" -msgid "Please select the devices you would like to manage here (up to 6 devices)" +msgid "" +"Please select the devices you would like to manage here (up to 6 devices)" msgstr "" -"Por favor, selecione os dispositivos que você gostaria de gerenciar aqui (até 6 " -"dispositivos)" +"Por favor, selecione os dispositivos que você gostaria de gerenciar aqui " +"(até 6 dispositivos)" msgid "Add" msgstr "Adicionar" @@ -3472,18 +3533,20 @@ msgid "Send to" msgstr "Enviar para" msgid "" -"printers at the same time.(It depends on how many devices can undergo heating at the " -"same time.)" +"printers at the same time.(It depends on how many devices can undergo " +"heating at the same time.)" msgstr "" -"impressoras ao mesmo tempo. (Depende de quantos dispositivos podem ser submetidos ao " -"mesmo tempo.)" +"impressoras ao mesmo tempo. (Depende de quantos dispositivos podem ser " +"submetidos ao mesmo tempo.)" msgid "Wait" msgstr "Aguarde" -msgid "minute each batch.(It depends on how long it takes to complete the heating.)" +msgid "" +"minute each batch.(It depends on how long it takes to complete the heating.)" msgstr "" -"minuto por cada lote.(Depende de quanto tempo leva para completar o aquecimento.)" +"minuto por cada lote.(Depende de quanto tempo leva para completar o " +"aquecimento.)" msgid "Send" msgstr "Enviar" @@ -3516,14 +3579,17 @@ msgid "Size in X and Y of the rectangular plate." msgstr "Tamanho em X e Y da mesa retangular." msgid "" -"Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." -msgstr "Distância da coordenada do G-Code 0,0 do canto frontal esquerdo do retângulo." +"Distance of the 0,0 G-code coordinate from the front left corner of the " +"rectangle." +msgstr "" +"Distância da coordenada do G-Code 0,0 do canto frontal esquerdo do retângulo." msgid "" -"Diameter of the print bed. It is assumed that origin (0,0) is located in the center." +"Diameter of the print bed. It is assumed that origin (0,0) is located in the " +"center." msgstr "" -"Diâmetro da mesa de impressão. É assumido que a origem (0,0) está localizada no " -"centro." +"Diâmetro da mesa de impressão. É assumido que a origem (0,0) está localizada " +"no centro." msgid "Rectangular" msgstr "Retangular" @@ -3561,8 +3627,10 @@ msgstr "Erro! Modelo inválido" msgid "The selected file contains no geometry." msgstr "O arquivo selecionado não contém geometria." -msgid "The selected file contains several disjoint areas. This is not supported." -msgstr "O arquivo selecionado contém várias áreas disjuntas. Isso não é suportado." +msgid "" +"The selected file contains several disjoint areas. This is not supported." +msgstr "" +"O arquivo selecionado contém várias áreas disjuntas. Isso não é suportado." msgid "Choose a file to import bed texture from (PNG/SVG):" msgstr "Escolha um arquivo para importar a textura da mesa (PNG/SVG):" @@ -3574,15 +3642,15 @@ msgid "Bed Shape" msgstr "Forma da Mesa" msgid "" -"The recommended minimum temperature is less than 190 degree or the recommended " -"maximum temperature is greater than 300 degree.\n" +"The recommended minimum temperature is less than 190 degree or the " +"recommended maximum temperature is greater than 300 degree.\n" msgstr "" -"A temperatura mínima recomendada é inferior a 190 graus ou a temperatura máxima " -"recomendada é superior a 300 graus.\n" +"A temperatura mínima recomendada é inferior a 190 graus ou a temperatura " +"máxima recomendada é superior a 300 graus.\n" msgid "" -"The recommended minimum temperature cannot be higher than the recommended maximum " -"temperature.\n" +"The recommended minimum temperature cannot be higher than the recommended " +"maximum temperature.\n" msgstr "" "A temperatura mínima recomendada não pode ser superior à temperatura máxima " "recomendada.\n" @@ -3595,16 +3663,18 @@ msgid "" "Please make sure whether to use the temperature to print.\n" "\n" msgstr "" -"O bico pode ficar bloqueado quando a temperatura estiver fora da faixa recomendada.\n" +"O bico pode ficar bloqueado quando a temperatura estiver fora da faixa " +"recomendada.\n" "Por favor, certifique-se de usar a temperatura para imprimir.\n" "\n" #, c-format, boost-format msgid "" -"Recommended nozzle temperature of this filament type is [%d, %d] degree centigrade" +"Recommended nozzle temperature of this filament type is [%d, %d] degree " +"centigrade" msgstr "" -"A temperatura do bico recomendada para este tipo de filamento é [%d, %d] graus " -"centígrados" +"A temperatura do bico recomendada para este tipo de filamento é [%d, %d] " +"graus centígrados" msgid "" "Too small max volumetric speed.\n" @@ -3615,13 +3685,13 @@ msgstr "" #, 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" +"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 "" "A temperatura da câmara atual está mais alta do que a temperatura segura do " -"material, pode resultar em amolecimento e entupimento do material. A temperatura " -"máxima segura para o material é %d" +"material, pode resultar em amolecimento e entupimento do material. A " +"temperatura máxima segura para o material é %d" msgid "" "Too small layer height.\n" @@ -3647,17 +3717,19 @@ msgstr "" "A altura da primeira camada será redefinida para 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 "" -"Esta configuração é usada apenas para ajustar o tamanho do modelo com um valor " -"pequeno em alguns casos.\n" -"Por exemplo, quando o tamanho do modelo tem um pequeno erro e é difícil de ser " -"montado.\n" -"Para ajustes de tamanho grandes, por favor use a função de escala do modelo.\n" +"Esta configuração é usada apenas para ajustar o tamanho do modelo com um " +"valor pequeno em alguns casos.\n" +"Por exemplo, quando o tamanho do modelo tem um pequeno erro e é difícil de " +"ser montado.\n" +"Para ajustes de tamanho grandes, por favor use a função de escala do " +"modelo.\n" "\n" "O valor será redefinido para 0." @@ -3669,39 +3741,39 @@ msgid "" "The value will be reset to 0." msgstr "" "Uma compensação de pé de elefante muito grande é irrazoável.\n" -"Se realmente tiver um efeito sério de pé de elefante, por favor verifique outras " -"configurações.\n" +"Se realmente tiver um efeito sério de pé de elefante, por favor verifique " +"outras configurações.\n" "Por exemplo, se a temperatura da mesa estiver muito alta.\n" "\n" "O valor será redefinido para 0." msgid "" -"Alternate extra wall does't work well when ensure vertical shell thickness is set to " -"All. " +"Alternate extra wall does't work well when ensure vertical shell thickness " +"is set to All. " msgstr "" -"O perímetro extra alternado não funciona bem quando a espessura vertical da está " -"definida para Todos. " +"O perímetro extra alternado não funciona bem quando a espessura vertical da " +"está definida para Todos. " msgid "" "Change these settings automatically? \n" -"Yes - Change ensure vertical shell thickness to Moderate and enable alternate extra " -"wall\n" +"Yes - Change ensure vertical shell thickness to Moderate and enable " +"alternate extra wall\n" "No - Don't use alternate extra wall" msgstr "" "Alterar essas configurações automaticamente?\n" -"Sim - Alterar a espessura vertical do perímetro para Moderado e ativar o perímetro " -"extra alternado\n" +"Sim - Alterar a espessura vertical do perímetro para Moderado e ativar o " +"perímetro extra alternado\n" "Não - Não usar o perímetro extra alternado" 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 "" -"A Torre Prime não funciona quando a Altura de Camada Adaptativa ou a Altura de " -"Camada de Suporte Independente está ativada.\n" +"A Torre Prime não funciona quando a Altura de Camada Adaptativa ou a Altura " +"de Camada de Suporte Independente está ativada.\n" "Qual você deseja manter?\n" "SIM — Manter a Torre Prime\n" "NÃO — Manter a Altura de Camada Adaptativa e a Altura de Camada de Suporte " @@ -3724,8 +3796,8 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Independent Support Layer Height" msgstr "" -"A Torre Prime não funciona quando a Altura da Camada de Suporte Independente está " -"ativa.\n" +"A Torre Prime não funciona quando a Altura da Camada de Suporte Independente " +"está ativa.\n" "Qual você deseja manter?\n" "SIM — Manter a Torre Prime\n" "NÃO — Manter a Altura da Camada de Suporte Independente" @@ -3738,12 +3810,12 @@ msgstr "" "Redefinir para 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." +"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 "" "O modo espiral só funciona quando o perímetro é igual a 1, o suporte está " -"desativado, as camadas de topo são 0, a densidade de preenchimento esparso é 0 e o " -"tipo de timelapse é tradicional." +"desativado, as camadas de topo são 0, a densidade de preenchimento esparso é " +"0 e o tipo de timelapse é tradicional." msgid " But machines with I3 structure will not generate timelapse videos." msgstr " Mas máquinas com estrutura I3 não gerarão vídeos de timelapse." @@ -3836,7 +3908,8 @@ msgid "Paused due to AMS lost" msgstr "Pausado devido à perda do AMS" msgid "Paused due to low speed of the heat break fan" -msgstr "Pausado devido a baixa velocidade do ventilador do bloco de aquecimento" +msgstr "" +"Pausado devido a baixa velocidade do ventilador do bloco de aquecimento" msgid "Paused due to chamber temperature control error" msgstr "Pausado devido a erro no controle de temperatura da câmara" @@ -3887,34 +3960,37 @@ msgid "Update failed." msgstr "Atualização falhou." 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." +"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 "" -"A temperatura atual da câmara ou a temperatura da câmara alvo excede 45℃. Para " -"evitar obstrução do extrusor, não é permitido carregar filamento de baixa " -"temperatura (PLA/PETG/TPU)." +"A temperatura atual da câmara ou a temperatura da câmara alvo excede 45℃. " +"Para evitar obstrução do extrusor, não é permitido carregar filamento de " +"baixa temperatura (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℃." +"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 "" -"Filamento de baixa temperatura (PLA/PETG/TPU) está carregado na extrusora. Para " -"evitar obstrução do extrusor, não é permitido ajustar a temperatura da câmara acima " -"de 45℃." +"Filamento de baixa temperatura (PLA/PETG/TPU) está carregado na extrusora. " +"Para evitar obstrução do extrusor, não é permitido ajustar a temperatura da " +"câmara acima de 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℃." +"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 "" -"Quando você definir a temperatura da câmara abaixo de 40℃, o controle de temperatura " -"da câmara não será ativado. E a temperatura alvo da câmara será automaticamente " -"definida como 0℃." +"Quando você definir a temperatura da câmara abaixo de 40℃, o controle de " +"temperatura da câmara não será ativado. E a temperatura alvo da câmara será " +"automaticamente definida como 0℃." msgid "Failed to start printing job" msgstr "Falha ao iniciar o trabalho de impressão" -msgid "This calibration does not support the currently selected nozzle diameter" +msgid "" +"This calibration does not support the currently selected nozzle diameter" msgstr "Esta calibração não suporta o diâmetro do bico atualmente selecionado" msgid "Current flowrate cali param is invalid" @@ -3936,18 +4012,18 @@ msgid "Bambu PET-CF/PA6-CF is not supported by AMS." msgstr "Bambu PET-CF/PA6-CF não é suportado pelo AMS." msgid "" -"Damp PVA will become flexible and get stuck inside AMS,please take care to dry it " -"before use." +"Damp PVA will become flexible and get stuck inside AMS,please take care to " +"dry it before use." msgstr "" -"O PVA úmido se tornará flexível e ficará preso dentro do AMS, por favor tenha " -"cuidado para secá-lo antes de usar." +"O PVA úmido se tornará flexível e ficará preso dentro do AMS, por favor " +"tenha cuidado para secá-lo antes de usar." msgid "" -"CF/GF filaments are hard and brittle, It's easy to break or get stuck in AMS, please " -"use with caution." +"CF/GF filaments are hard and brittle, It's easy to break or get stuck in " +"AMS, please use with caution." msgstr "" -"Os filamentos CF/GF são duros e quebradiços, é fácil quebrar ou ficar preso no AMS, " -"por favor use com cautela." +"Os filamentos CF/GF são duros e quebradiços, é fácil quebrar ou ficar preso " +"no AMS, por favor use com cautela." msgid "default" msgstr "padrão" @@ -3958,8 +4034,8 @@ msgstr "Editar G-Code personalizado (%1%)" msgid "Built-in placeholders (Double click item to add to G-code)" msgstr "" -"Marcadores de posição incorporados (Clique duas vezes no item para adicionar ao G-" -"code)" +"Marcadores de posição incorporados (Clique duas vezes no item para adicionar " +"ao G-code)" msgid "Search gcode placeholders" msgstr "Procurar marcadores de posição do G-code" @@ -4049,9 +4125,11 @@ msgstr "" #, boost-format msgid "" -"Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" +"Invalid input format. Expected vector of dimensions in the following format: " +"\"%1%\"" msgstr "" -"Formato de entrada inválido. Vetor de dimensões esperado no seguinte formato: \"%1%\"" +"Formato de entrada inválido. Vetor de dimensões esperado no seguinte " +"formato: \"%1%\"" msgid "Input value is out of range" msgstr "Valor de entrada está fora do limite" @@ -4404,11 +4482,11 @@ msgstr "Tamanho:" #, boost-format msgid "" -"Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please separate " -"the conflicted objects farther (%s <-> %s)." +"Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " +"separate the conflicted objects farther (%s <-> %s)." msgstr "" -"Foram encontrados conflitos de caminhos de G-code na camada %d, z = %.2lf mm. Por " -"favor, separe mais os objetos em conflito (%s <-> %s)." +"Foram encontrados conflitos de caminhos de G-code na camada %d, z = %.2lf " +"mm. Por favor, separe mais os objetos em conflito (%s <-> %s)." msgid "An object is layed over the boundary of plate." msgstr "Um objeto está sobre a borda da mesa." @@ -4424,12 +4502,12 @@ msgstr "Apenas o objeto em edição está visível." 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 "" "Um objeto está sobre a borda da mesa ou ultrapassa o limite de altura.\n" -"Por favor, resolva o problema movendo-o totalmente para dentro ou para fora da mesa, " -"e confirmando que a altura está dentro do volume de impressão." +"Por favor, resolva o problema movendo-o totalmente para dentro ou para fora " +"da mesa, e confirmando que a altura está dentro do volume de impressão." msgid "Calibration step selection" msgstr "Seleção de etapa de calibração" @@ -4450,12 +4528,12 @@ msgid "Calibration program" msgstr "Programa de calibração" 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 "" -"O programa de calibração detecta automaticamente o estado do seu dispositivo para " -"minimizar desvios.\n" +"O programa de calibração detecta automaticamente o estado do seu dispositivo " +"para minimizar desvios.\n" "Mantém o dispositivo com desempenho ideal." msgid "Calibration Flow" @@ -4960,8 +5038,10 @@ msgstr "Escolha um diretório" #, c-format, boost-format msgid "There is %d config exported. (Only non-system configs)" msgid_plural "There are %d configs exported. (Only non-system configs)" -msgstr[0] "Foi exportada uma configuração (%d). (Apenas configurações não do sistema)" -msgstr[1] "Foram exportadas %d configurações. (Apenas configurações não do sistema)" +msgstr[0] "" +"Foi exportada uma configuração (%d). (Apenas configurações não do sistema)" +msgstr[1] "" +"Foram exportadas %d configurações. (Apenas configurações não do sistema)" msgid "Export result" msgstr "Resultado da exportação" @@ -4971,22 +5051,23 @@ msgstr "Selecione o perfil para carregar:" #, 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] "" -"Foi importada uma configuração (%d). (Apenas configurações compatíveis e não do " -"sistema)" +"Foi importada uma configuração (%d). (Apenas configurações compatíveis e não " +"do sistema)" msgstr[1] "" -"Foram importadas %d configurações. (Apenas configurações compatíveis e não do " -"sistema)" +"Foram importadas %d configurações. (Apenas configurações compatíveis e não " +"do sistema)" msgid "" "\n" -"Hint: Make sure you have added the corresponding printer before importing the " -"configs." +"Hint: Make sure you have added the corresponding printer before importing " +"the configs." msgstr "" "\n" -"Dica: Certifique-se de ter adicionado a impressora correspondente antes de importar " -"as configurações." +"Dica: Certifique-se de ter adicionado a impressora correspondente antes de " +"importar as configurações." msgid "Import result" msgstr "Resultado da importação" @@ -5018,33 +5099,41 @@ msgstr "Sincronização" msgid "The device cannot handle more conversations. Please retry later." msgstr "" -"O dispositivo não pode lidar com mais conversas. Por favor, tente novamente mais " -"tarde." +"O dispositivo não pode lidar com mais conversas. Por favor, tente novamente " +"mais tarde." msgid "Player is malfunctioning. Please reinstall the system player." -msgstr "O reprodutor está com problemas. Por favor, reinstale o reprodutor do sistema." +msgstr "" +"O reprodutor está com problemas. Por favor, reinstale o reprodutor do " +"sistema." msgid "The player is not loaded, please click \"play\" button to retry." msgstr "" -"O reprodutor não está carregado, por favor clique no botão \"Reproduzir\" para " -"tentar novamente." +"O reprodutor não está carregado, por favor clique no botão \"Reproduzir\" " +"para tentar novamente." msgid "Please confirm if the printer is connected." msgstr "Por favor, confirme se a impressora está conectada." -msgid "The printer is currently busy downloading. Please try again after it finishes." -msgstr "A impressora está sendo baixada no momento. Tente novamente após terminar." +msgid "" +"The printer is currently busy downloading. Please try again after it " +"finishes." +msgstr "" +"A impressora está sendo baixada no momento. Tente novamente após terminar." msgid "Printer camera is malfunctioning." msgstr "A câmera da impressora está com problemas." msgid "Problem occurred. Please update the printer firmware and try again." msgstr "" -"Ocorreu um problema. Por favor, atualize o firmware da impressora e tente novamente." +"Ocorreu um problema. Por favor, atualize o firmware da impressora e tente " +"novamente." -msgid "LAN Only Liveview is off. Please turn on the liveview on printer screen." +msgid "" +"LAN Only Liveview is off. Please turn on the liveview on printer screen." msgstr "" -"Liveview via LAN está desativado. Por favor, ative a liveview na tela da impressora." +"Liveview via LAN está desativado. Por favor, ative a liveview na tela da " +"impressora." msgid "Please enter the IP of printer to connect." msgstr "Por favor, digite o IP da impressora para conectar." @@ -5056,11 +5145,11 @@ msgid "Connection Failed. Please check the network and try again" msgstr "Falha na conexão. Por favor, verifique a rede e tente novamente" msgid "" -"Please check the network and try again, You can restart or update the printer if the " -"issue persists." +"Please check the network and try again, You can restart or update the " +"printer if the issue persists." msgstr "" -"Por favor, verifique a rede e tente novamente, você pode reiniciar ou atualizar a " -"impressora se o problema persistir." +"Por favor, verifique a rede e tente novamente, você pode reiniciar ou " +"atualizar a impressora se o problema persistir." msgid "The printer has been logged out and cannot connect." msgstr "A impressora foi desconectada e não pode se conectar." @@ -5167,11 +5256,11 @@ msgid "Load failed" msgstr "Falha ao carregar" msgid "" -"Browsing file in SD card is not supported in current firmware. Please update the " -"printer firmware." +"Browsing file in SD card is not supported in current firmware. Please update " +"the printer firmware." msgstr "" -"Procurar arquivo no cartão SD não é suportado no firmware atual. Por favor, atualize " -"o firmware da impressora." +"Procurar arquivo no cartão SD não é suportado no firmware atual. Por favor, " +"atualize o firmware da impressora." msgid "" "Please check if the SD card is inserted into the printer.\n" @@ -5186,13 +5275,14 @@ msgstr "Procurar arquivo no cartão SD não é suportado no Modo Somente LAN." #, 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?" +msgid_plural "" +"You are going to delete %u files from printer. Are you sure to continue?" msgstr[0] "" -"Você está prestes a excluir %u arquivo da impressora. Tem certeza de que deseja " -"continuar?" +"Você está prestes a excluir %u arquivo da impressora. Tem certeza de que " +"deseja continuar?" msgstr[1] "" -"Você está prestes a excluir %u arquivos da impressora. Tem certeza de que deseja " -"continuar?" +"Você está prestes a excluir %u arquivos da impressora. Tem certeza de que " +"deseja continuar?" msgid "Delete files" msgstr "Excluir arquivos" @@ -5214,11 +5304,11 @@ msgid "Failed to parse model information." msgstr "Falha ao analisar a informação do modelo." msgid "" -"The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer and " -"export a new .gcode.3mf file." +"The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer " +"and export a new .gcode.3mf file." msgstr "" -"O arquivo .gcode.3mf não contém dados de G-code. Por favor, fatie com Orca Slicer e " -"exporte um novo arquivo .gcode.3mf." +"O arquivo .gcode.3mf não contém dados de G-code. Por favor, fatie com Orca " +"Slicer e exporte um novo arquivo .gcode.3mf." #, c-format, boost-format msgid "File '%s' was lost! Please download it again." @@ -5249,11 +5339,11 @@ msgid "Downloading %d%%..." msgstr "Baixando %d%%..." msgid "" -"Reconnecting the printer, the operation cannot be completed immediately, please try " -"again later." +"Reconnecting the printer, the operation cannot be completed immediately, " +"please try again later." msgstr "" -"Reconectando a impressora, a operação não pôde ser concluída imediatamente, por " -"favor tente novamente mais tarde." +"Reconectando a impressora, a operação não pôde ser concluída imediatamente, " +"por favor tente novamente mais tarde." msgid "File does not exist." msgstr "O arquivo não existe." @@ -5333,8 +5423,10 @@ msgid "How do you like this printing file?" msgstr "O que você achou deste arquivo de impressão?" msgid "" -"(The model has already been rated. Your rating will overwrite the previous rating.)" -msgstr "(O modelo já foi avaliado. Sua avaliação substituirá a avaliação anterior.)" +"(The model has already been rated. Your rating will overwrite the previous " +"rating.)" +msgstr "" +"(O modelo já foi avaliado. Sua avaliação substituirá a avaliação anterior.)" msgid "Rate" msgstr "Avaliar" @@ -5409,9 +5501,11 @@ msgid "Layer: %d/%d" msgstr "Camada: %d/%d" msgid "" -"Please heat the nozzle to above 170 degree before loading or unloading filament." +"Please heat the nozzle to above 170 degree before loading or unloading " +"filament." msgstr "" -"Aqueça o bico a mais de 170 graus antes de carregar ou descarregar o filamento." +"Aqueça o bico a mais de 170 graus antes de carregar ou descarregar o " +"filamento." msgid "Still unload" msgstr "Ainda descarregando" @@ -5423,11 +5517,11 @@ msgid "Please select an AMS slot before calibration" msgstr "Selecione um slot AMS antes da calibração" msgid "" -"Cannot read filament info: the filament is loaded to the tool head,please unload the " -"filament and try again." +"Cannot read filament info: the filament is loaded to the tool head,please " +"unload the filament and try again." msgstr "" -"Não é possível ler as informações do filamento: o filamento está carregado na cabeça " -"da ferramenta, por favor descarregue o filamento e tente novamente." +"Não é possível ler as informações do filamento: o filamento está carregado " +"na cabeça da ferramenta, por favor descarregue o filamento e tente novamente." msgid "This only takes effect during printing" msgstr "Isso só tem efeito durante a impressão" @@ -5493,12 +5587,12 @@ msgid " can not be opened\n" msgstr " não pode ser aberto\n" msgid "" -"The following issues occurred during the process of uploading images. Do you want to " -"ignore them?\n" +"The following issues occurred during the process of uploading images. Do you " +"want to ignore them?\n" "\n" msgstr "" -"Os seguintes problemas ocorreram durante o processo de carregamento das imagens. " -"Você deseja ignorá-los?\n" +"Os seguintes problemas ocorreram durante o processo de carregamento das " +"imagens. Você deseja ignorá-los?\n" "\n" msgid "info" @@ -5506,8 +5600,8 @@ msgstr "informação" msgid "Synchronizing the printing results. Please retry a few seconds later." msgstr "" -"Sincronizando os resultados da impressão. Por favor, tente novamente alguns segundos " -"depois." +"Sincronizando os resultados da impressão. Por favor, tente novamente alguns " +"segundos depois." msgid "Upload failed\n" msgstr "Falha no envio\n" @@ -5520,8 +5614,8 @@ msgid "" "\n" " error code: " msgstr "" -"O resultado do seu comentário não pode ser enviado devido a alguns motivos. Como " -"segue:\n" +"O resultado do seu comentário não pode ser enviado devido a alguns motivos. " +"Como segue:\n" "\n" " código de erro: " @@ -5538,11 +5632,11 @@ msgstr "" "Gostaria de ser redirecionado para a página da web para avaliar?" msgid "" -"Some of your images failed to upload. Would you like to redirect to the webpage for " -"rating?" +"Some of your images failed to upload. Would you like to redirect to the " +"webpage for rating?" msgstr "" -"Algumas de suas imagens não puderam ser carregadas. Gostaria de ser redirecionado " -"para a página da web para avaliar?" +"Algumas de suas imagens não puderam ser carregadas. Gostaria de ser " +"redirecionado para a página da web para avaliar?" msgid "You can select up to 16 images." msgstr "Você pode selecionar até 16 imagens." @@ -5595,7 +5689,8 @@ msgid "Newer 3mf version" msgstr "Nova versão 3mf" msgid "" -"The 3mf file version is in Beta and it is newer than the current OrcaSlicer version." +"The 3mf file version is in Beta and it is newer than the current OrcaSlicer " +"version." msgstr "" "A versão 3mf do arquivo está em Beta e é mais nova do que a versão atual do " "OrcaSlicer." @@ -5607,11 +5702,13 @@ msgid "Download Beta Version" msgstr "Baixar versão beta" msgid "The 3mf file version is newer than the current Orca Slicer version." -msgstr "A versão do arquivo 3mf é mais recente que a versão atual do Orca Slicer." +msgstr "" +"A versão do arquivo 3mf é mais recente que a versão atual do Orca Slicer." msgid "Update your Orca Slicer could enable all functionality in the 3mf file." msgstr "" -"Atualizar seu Orca Slicer poderia permitir todas as funcionalidades do arquivo 3mf." +"Atualizar seu Orca Slicer poderia permitir todas as funcionalidades do " +"arquivo 3mf." msgid "Current Version: " msgstr "Versão Atual: " @@ -5626,13 +5723,13 @@ msgid "Server Exception" msgstr "Exceção de Servidor" msgid "" -"The server is unable to respond. Please click the link below to check the server " -"status." +"The server is unable to respond. Please click the link below to check the " +"server status." msgstr "" msgid "" -"If the server is in a fault state, you can temporarily use offline printing or local " -"network printing." +"If the server is in a fault state, you can temporarily use offline printing " +"or local network printing." msgstr "" msgid "How to use LAN only mode" @@ -5767,10 +5864,12 @@ msgstr "Camadas" msgid "Range" msgstr "Intervalo" -msgid "The application cannot run normally because OpenGL version is lower than 2.0.\n" +msgid "" +"The application cannot run normally because OpenGL version is lower than " +"2.0.\n" msgstr "" -"A aplicação não pode ser executada normalmente porque a versão do OpenGL é inferior " -"a 2.0.\n" +"A aplicação não pode ser executada normalmente porque a versão do OpenGL é " +"inferior a 2.0.\n" msgid "Please upgrade your graphics card driver." msgstr "Por favor, atualize o driver da sua placa de vídeo." @@ -5807,11 +5906,11 @@ msgid "Enable detection of build plate position" msgstr "Ativar detecção da posição da mesa" msgid "" -"The localization tag of build plate is detected, and printing is paused if the tag " -"is not in predefined range." +"The localization tag of build plate is detected, and printing is paused if " +"the tag is not in predefined range." msgstr "" -"A etiqueta de localização da mesa é detectada e a impressão é pausada se a etiqueta " -"não estiver na faixa predefinida." +"A etiqueta de localização da mesa é detectada e a impressão é pausada se a " +"etiqueta não estiver na faixa predefinida." msgid "First Layer Inspection" msgstr "Inspeção da Primeira Camada" @@ -5829,7 +5928,8 @@ msgid "Nozzle Clumping Detection" msgstr "Detecção de acúmulo no bico" msgid "Check if the nozzle is clumping by filament or other foreign objects." -msgstr "Verifica se o bico está com filamento acumulado ou outros objetos estranhos." +msgstr "" +"Verifica se o bico está com filamento acumulado ou outros objetos estranhos." msgid "Nozzle Type" msgstr "Tipo de bico" @@ -5944,22 +6044,25 @@ msgstr "Pesquisar mesa, objeto e peça." msgid "Pellets" msgstr "Pellets" -msgid "No AMS filaments. Please select a printer in 'Device' page to load AMS info." +msgid "" +"No AMS filaments. Please select a printer in 'Device' page to load AMS info." msgstr "" -"Sem filamentos AMS. Por favor, selecione uma impressora na página 'Dispositivo' para " -"carregar informações AMS." +"Sem filamentos AMS. Por favor, selecione uma impressora na página " +"'Dispositivo' para carregar informações AMS." msgid "Sync filaments with AMS" msgstr "Sincronizar filamentos com AMS" msgid "" -"Sync filaments with AMS will drop all current selected filament presets and colors. " -"Do you want to continue?" +"Sync filaments with AMS will drop all current selected filament presets and " +"colors. Do you want to continue?" msgstr "" -"Sincronizar filamentos com AMS eliminará todas os presets de filamento e cores " -"selecionadas atualmente. Deseja continuar?" +"Sincronizar filamentos com AMS eliminará todas os presets de filamento e " +"cores selecionadas atualmente. Deseja continuar?" -msgid "Already did a synchronization, do you want to sync only changes or resync all?" +msgid "" +"Already did a synchronization, do you want to sync only changes or resync " +"all?" msgstr "" "Já foi feita uma sincronização, deseja sincronizar apenas as alterações ou " "ressincronizar tudo?" @@ -5974,12 +6077,13 @@ msgid "There are no compatible filaments, and sync is not performed." msgstr "Não há filamentos compatíveis, e a sincronização não é realizada." 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." +"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 "" -"Alguns filamentos desconhecidos foram mapeados para preset genérico. Por favor, " -"atualize o Orca Slicer ou reinicie o Orca Slicer para verificar se há uma " -"atualização para presets do sistema." +"Alguns filamentos desconhecidos foram mapeados para preset genérico. Por " +"favor, atualize o Orca Slicer ou reinicie o Orca Slicer para verificar se há " +"uma atualização para presets do sistema." #, boost-format msgid "Do you want to save changes to \"%1%\"?" @@ -5990,8 +6094,8 @@ msgid "" "Successfully unmounted. The device %s(%s) can now be safely removed from the " "computer." msgstr "" -"Desmontado com sucesso. O dispositivo %s(%s) agora pode ser removido com segurança " -"do computador." +"Desmontado com sucesso. O dispositivo %s(%s) agora pode ser removido com " +"segurança do computador." #, c-format, boost-format msgid "Ejecting of device %s(%s) has failed." @@ -6004,29 +6108,29 @@ msgid "Restore" msgstr "Restaurar" 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." +"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 "" -"A temperatura atual da mesa aquecida está relativamente alta. A boquilha pode ficar " -"obstruída ao imprimir este filamento em um compartimento fechado. Por favor, abra a " -"porta frontal e/ou remova o vidro superior." +"A temperatura atual da mesa aquecida está relativamente alta. A boquilha " +"pode ficar obstruída ao imprimir este filamento em um compartimento fechado. " +"Por favor, abra a porta frontal e/ou remova o vidro superior." 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." +"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 "" -"A dureza do bico necessária pelo filamento é maior do que a dureza padrão do bico da " -"impressora. Por favor, substitua a boquilha endurecida ou o filamento, caso " -"contrário, a boquilha será desgastada ou danificada." +"A dureza do bico necessária pelo filamento é maior do que a dureza padrão do " +"bico da impressora. Por favor, substitua a boquilha endurecida ou o " +"filamento, caso contrário, a boquilha será desgastada ou danificada." msgid "" -"Enabling traditional timelapse photography may cause surface imperfections. It is " -"recommended to change to smooth mode." +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." msgstr "" -"A habilitação da fotografia tradicional em timelapse pode causar imperfeições na " -"superfície. É recomendado mudar para o modo suave." +"A habilitação da fotografia tradicional em timelapse pode causar " +"imperfeições na superfície. É recomendado mudar para o modo suave." msgid "Expand sidebar" msgstr "Expandir barra lateral" @@ -6039,7 +6143,8 @@ msgid "Loading file: %s" msgstr "Carregando arquivo: %s" msgid "The 3mf is not supported by OrcaSlicer, load geometry data only." -msgstr "O 3mf não é suportado pelo OrcaSlicer, carregar apenas dados de geometria." +msgstr "" +"O 3mf não é suportado pelo OrcaSlicer, carregar apenas dados de geometria." msgid "Load 3mf" msgstr "Carregar 3mf" @@ -6049,18 +6154,19 @@ msgid "" "The 3mf's version %s is newer than %s's version %s, Found following keys " "unrecognized:" msgstr "" -"A versão %s do 3mf é mais recente do que a versão %s do %s, encontradas as seguintes " -"chaves não reconhecidas:" +"A versão %s do 3mf é mais recente do que a versão %s do %s, encontradas as " +"seguintes chaves não reconhecidas:" msgid "You'd better upgrade your software.\n" msgstr "Será melhor atualizar o seu software.\n" #, c-format, boost-format msgid "" -"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your software." -msgstr "" -"A versão %s do 3mf é mais recente do que a versão %s do %s, sugerimos atualizar seu " +"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " "software." +msgstr "" +"A versão %s do 3mf é mais recente do que a versão %s do %s, sugerimos " +"atualizar seu software." msgid "Invalid values found in the 3mf:" msgstr "Valores inválidos encontrados no 3mf:" @@ -6070,33 +6176,36 @@ msgstr "Por favor, corrija-os nas guias de parâmetros" msgid "The 3mf has following modified G-codes in filament or printer presets:" msgstr "" -"O 3mf possui os seguintes G-codes modificados em presets de filamento ou impressora:" +"O 3mf possui os seguintes G-codes modificados em presets de filamento ou " +"impressora:" msgid "" -"Please confirm that these modified G-codes are safe to prevent any damage to the " -"machine!" +"Please confirm that these modified G-codes are safe to prevent any damage to " +"the machine!" msgstr "" -"Por favor, confirme se esses G-codes modificados são seguros para evitar qualquer " -"dano à máquina!" +"Por favor, confirme se esses G-codes modificados são seguros para evitar " +"qualquer dano à máquina!" msgid "Modified G-codes" msgstr "G-codes modificados" msgid "The 3mf has following customized filament or printer presets:" -msgstr "O 3mf possui os seguintes perfis de filamento ou impressora personalizados:" +msgstr "" +"O 3mf possui os seguintes perfis de filamento ou impressora personalizados:" msgid "" -"Please confirm that the G-codes within these presets are safe to prevent any damage " -"to the machine!" +"Please confirm that the G-codes within these presets are safe to prevent any " +"damage to the machine!" msgstr "" -"Por favor, confirme se os G-codes dentro desses presets são seguros para evitar " -"qualquer dano à máquina!" +"Por favor, confirme se os G-codes dentro desses presets são seguros para " +"evitar qualquer dano à máquina!" msgid "Customized Preset" msgstr "Perfil Personalizado" msgid "Name of components inside step file is not UTF8 format!" -msgstr "O nome dos componentes dentro do arquivo STEP não está no formato UTF-8!" +msgstr "" +"O nome dos componentes dentro do arquivo STEP não está no formato UTF-8!" msgid "The name may show garbage characters!" msgstr "O nome pode exibir caracteres inválidos!" @@ -6106,7 +6215,9 @@ msgstr "Lembrar minha escolha." #, boost-format msgid "Failed loading file \"%1%\". An invalid configuration was found." -msgstr "Falha ao carregar o arquivo \"%1%\". Foi encontrada uma configuração inválida." +msgstr "" +"Falha ao carregar o arquivo \"%1%\". Foi encontrada uma configuração " +"inválida." msgid "Objects with zero volume removed" msgstr "Objetos com volume zero removidos" @@ -6131,7 +6242,8 @@ msgid "" "the file be loaded as a single object having multiple parts?" msgstr "" "Este arquivo contém vários objetos posicionados em alturas múltiplas.\n" -"Em vez de considerá-los como múltiplos objetos, o arquivo deve ser carregado\n" +"Em vez de considerá-los como múltiplos objetos, o arquivo deve ser " +"carregado\n" "como um único objeto com múltiplas peças?" msgid "Multi-part object detected" @@ -6147,11 +6259,11 @@ msgid "The file does not contain any geometry data." msgstr "O arquivo não contém dados de geometria." msgid "" -"Your object appears to be too large, Do you want to scale it down to fit the heat " -"bed automatically?" +"Your object appears to be too large, Do you want to scale it down to fit the " +"heat bed automatically?" msgstr "" -"Seu objeto parece ser muito grande. Deseja dimensioná-lo para caber na mesa de " -"aquecimento automaticamente?" +"Seu objeto parece ser muito grande. Deseja dimensioná-lo para caber na mesa " +"de aquecimento automaticamente?" msgid "Object too large" msgstr "Objeto muito grande" @@ -6249,7 +6361,8 @@ msgstr "Fatiando Mesa %d" msgid "Please resolve the slicing errors and publish again." msgstr "Por favor, resolva os erros de fatiamento e publique novamente." -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 "" "O plug-in de rede não está detectado. Recursos relacionados à rede estão " "indisponíveis." @@ -6259,11 +6372,12 @@ msgid "" "The loaded file contains gcode only, Can not enter the Prepare page" msgstr "" "Modo somente de visualização:\n" -"O arquivo carregado contém apenas código G, não é possível acessar a página de " -"Preparação" +"O arquivo carregado contém apenas código G, não é possível acessar a página " +"de Preparação" msgid "You can keep the modified presets to the new project or discard them" -msgstr "Você pode manter os presets modificados no novo projeto ou descartá-los" +msgstr "" +"Você pode manter os presets modificados no novo projeto ou descartá-los" msgid "Creating a new project" msgstr "Criando um novo projeto" @@ -6273,12 +6387,12 @@ msgstr "Carregar Projeto" 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 "" "Falha ao salvar o projeto.\n" -"Por favor, verifique se a pasta existe online ou se outros programas estão com o " -"arquivo do projeto aberto." +"Por favor, verifique se a pasta existe online ou se outros programas estão " +"com o arquivo do projeto aberto." msgid "Save project" msgstr "Salvar Projeto" @@ -6303,7 +6417,8 @@ msgid "Project downloaded %d%%" msgstr "Projeto baixado %d%%" msgid "" -"Importing to Orca Slicer failed. Please download the file and manually import it." +"Importing to Orca Slicer failed. Please download the file and manually " +"import it." msgstr "" "A importação para a Orca Slicer falhou. Por favor, baixe o arquivo e importe " "manualmente." @@ -6333,7 +6448,8 @@ msgstr "Falha ao descompactar arquivo para %1%: %2%" #, boost-format msgid "Failed to find unzipped file at %1%. Unzipping of file has failed." msgstr "" -"Falha ao encontrar arquivo descompactado em %1%. Descompactação do arquivo falhou." +"Falha ao encontrar arquivo descompactado em %1%. Descompactação do arquivo " +"falhou." msgid "Drop project file" msgstr "Solte o arquivo do projeto" @@ -6347,7 +6463,8 @@ msgstr "Abrir como projeto" msgid "Import geometry only" msgstr "Importar apenas a geometria" -msgid "This option can be changed later in preferences, under 'Load Behaviour'." +msgid "" +"This option can be changed later in preferences, under 'Load Behaviour'." msgstr "" msgid "Only one G-code file can be opened at the same time." @@ -6384,25 +6501,27 @@ msgid "The provided file name is not valid." msgstr "O nome de arquivo fornecido não é válido." msgid "The following characters are not allowed by a FAT file system:" -msgstr "Os seguintes caracteres não são permitidos por um sistema de arquivos FAT:" +msgstr "" +"Os seguintes caracteres não são permitidos por um sistema de arquivos FAT:" msgid "Save Sliced file as:" msgstr "Salvar arquivo fatiado como:" #, c-format, boost-format msgid "" -"The file %s has been sent to the printer's storage space and can be viewed on the " -"printer." +"The file %s has been sent to the printer's storage space and can be viewed " +"on the printer." msgstr "" -"O arquivo %s foi enviado para o espaço de armazenamento da impressora e pode ser " -"visualizado na impressora." +"O arquivo %s foi enviado para o espaço de armazenamento da impressora e pode " +"ser visualizado na impressora." msgid "" -"Unable to perform boolean operation on model meshes. Only positive parts will be " -"kept. You may fix the meshes and try again." +"Unable to perform boolean operation on model meshes. Only positive parts " +"will be kept. You may fix the meshes and try again." msgstr "" -"Não é possível executar a operação booleana em malhas de modelo. Somente partes " -"positivas serão mantidas. Você pode consertar as malhas e tentar novamente." +"Não é possível executar a operação booleana em malhas de modelo. Somente " +"partes positivas serão mantidas. Você pode consertar as malhas e tentar " +"novamente." #, boost-format msgid "Reason: part \"%1%\" is empty." @@ -6421,24 +6540,25 @@ msgid "Reason: \"%1%\" and another part have no intersection." msgstr "Motivo: \"%1%\" e outra parte não tem intersecção." msgid "" -"Unable to perform boolean operation on model meshes. Only positive parts will be " -"exported." +"Unable to perform boolean operation on model meshes. Only positive parts " +"will be exported." msgstr "" msgid "" -"Are you sure you want to store original SVGs with their local paths into the 3MF " -"file?\n" +"Are you sure you want to store original SVGs with their local paths into the " +"3MF file?\n" "If you hit 'NO', all SVGs in the project will not be editable any more." msgstr "" -"Você tem certeza de que deseja armazenar os SVGs originais com seus caminhos locais " -"no arquivo 3MF?\n" +"Você tem certeza de que deseja armazenar os SVGs originais com seus caminhos " +"locais no arquivo 3MF?\n" "Se pressionar 'NÃO', todos os SVGs no projeto não serão mais editáveis." msgid "Private protection" msgstr "Proteção privada" msgid "Is the printer ready? Is the print sheet in place, empty and clean?" -msgstr "A impressora está pronta? O folha de impressão está no lugar, vazia e limpa?" +msgstr "" +"A impressora está pronta? O folha de impressão está no lugar, vazia e limpa?" msgid "Upload and Print" msgstr "Enviar e Imprimir" @@ -6458,7 +6578,8 @@ msgstr "Enviar para a impressora" msgid "Custom supports and color painting were removed before repairing." msgstr "" -"Os suportes personalizados e a pintura de cores foram removidos antes do reparo." +"Os suportes personalizados e a pintura de cores foram removidos antes do " +"reparo." msgid "Optimize Rotation" msgstr "Otimizar Rotação" @@ -6509,20 +6630,21 @@ msgid "Tips:" msgstr "Dicas:" msgid "" -"\"Fix Model\" feature is currently only on Windows. Please repair the model on Orca " -"Slicer(windows) or CAD softwares." +"\"Fix Model\" feature is currently only on Windows. Please repair the model " +"on Orca Slicer(windows) or CAD softwares." msgstr "" -"A função \"Corrigir Modelo\" está atualmente disponível apenas no Windows. Por " -"favor, repare o modelo no Orca Slicer (Windows) ou softwares CAD." +"A função \"Corrigir Modelo\" está atualmente disponível apenas no Windows. " +"Por favor, repare o modelo no Orca Slicer (Windows) ou softwares 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." +"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 "" -"Mesa %d: %s não é recomendada para ser usada para imprimir filamento %s(%s). Se você " -"ainda quiser fazer esta impressão, por favor defina a temperatura de mesa deste " -"filamento para diferente de zero." +"Mesa %d: %s não é recomendada para ser usada para imprimir filamento %s(%s). " +"Se você ainda quiser fazer esta impressão, por favor defina a temperatura de " +"mesa deste filamento para diferente de zero." msgid "Switching the language requires application restart.\n" msgstr "Mudar o idioma requer reiniciar o aplicativo.\n" @@ -6534,7 +6656,8 @@ msgid "Language selection" msgstr "Seleção de Idioma" msgid "Switching application language while some presets are modified." -msgstr "A mudança do idioma do aplicativo enquanto alguns presets estão modificados." +msgstr "" +"A mudança do idioma do aplicativo enquanto alguns presets estão modificados." msgid "Changing application language" msgstr "Alterando o idioma do aplicativo" @@ -6594,12 +6717,12 @@ msgid "Stealth Mode" msgstr "Modo Oculto" msgid "" -"This stops the transmission of data to Bambu's cloud services. Users who don't use " -"BBL machines or use LAN mode only can safely turn on this function." +"This stops the transmission of data to Bambu's cloud services. Users who " +"don't use BBL machines or use LAN mode only can safely turn on this function." msgstr "" -"Isso interrompe a transmissão de dados para os serviços de nuvem de Bambu. Os " -"usuários que não usam máquinas BBL ou usar modo LAN só podem ativar esta função com " -"segurança." +"Isso interrompe a transmissão de dados para os serviços de nuvem de Bambu. " +"Os usuários que não usam máquinas BBL ou usar modo LAN só podem ativar esta " +"função com segurança." msgid "Enable network plugin" msgstr "Ativar plugin de rede" @@ -6620,20 +6743,22 @@ msgid "Allow only one OrcaSlicer instance" msgstr "Permitir apenas uma instância OrcaSlicer" msgid "" -"On OSX there is always only one instance of app running by default. However it is " -"allowed to run multiple instances of same app from the command line. In such case " -"this settings will allow only one instance." +"On OSX there is always only one instance of app running by default. However " +"it is allowed to run multiple instances of same app from the command line. " +"In such case this settings will allow only one instance." msgstr "" "No OSX, sempre há uma instância do aplicativo sendo executado por padrão. No " -"entanto, é permitido executar várias instâncias do mesmo aplicativo a partir da " -"linha de comando. Neste caso, apenas uma instância será permitida." +"entanto, é permitido executar várias instâncias do mesmo aplicativo a partir " +"da linha de comando. Neste caso, apenas uma instância será permitida." msgid "" -"If this is enabled, when starting OrcaSlicer and another instance of the same " -"OrcaSlicer is already running, that instance will be reactivated instead." +"If this is enabled, when starting OrcaSlicer and another instance of the " +"same OrcaSlicer is already running, that instance will be reactivated " +"instead." msgstr "" -"Se esta opção estiver habilitada, ao iniciar o OrcaSlicer e outra instância do mesmo " -"OrcaSlicer já estiver em execução, essa instância será reativada em vez disso." +"Se esta opção estiver habilitada, ao iniciar o OrcaSlicer e outra instância " +"do mesmo OrcaSlicer já estiver em execução, essa instância será reativada em " +"vez disso." msgid "Home" msgstr "Início" @@ -6663,11 +6788,11 @@ msgid "Zoom to mouse position" msgstr "Zoom para a posição do mouse" msgid "" -"Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D " -"window center." +"Zoom in towards the mouse pointer's position in the 3D view, rather than the " +"2D window center." msgstr "" -"Dar zoom em direção à posição do ponteiro do mouse na visualização 3D, em vez do " -"centro da janela 2D." +"Dar zoom em direção à posição do ponteiro do mouse na visualização 3D, em " +"vez do centro da janela 2D." msgid "Use free camera" msgstr "Usar câmera livre" @@ -6699,7 +6824,8 @@ msgstr "Volumes de Purga: Auto-calcular toda vez que a cor mudar." msgid "If enabled, auto-calculate every time the color changed." msgstr "Se ativado, auto-calcular toda vez que a cor mudar." -msgid "Flushing volumes: Auto-calculate every time when the filament is changed." +msgid "" +"Flushing volumes: Auto-calculate every time when the filament is changed." msgstr "Volumes de Purga: Auto-calcular toda vez que a cor mudar." msgid "If enabled, auto-calculate every time when filament is changed" @@ -6709,21 +6835,22 @@ msgid "Remember printer configuration" msgstr "Lembrar configuração da impressora" msgid "" -"If enabled, Orca will remember and switch filament/process configuration for each " -"printer automatically." +"If enabled, Orca will remember and switch filament/process configuration for " +"each printer automatically." msgstr "" -"Se ativo, Orca vai lembrar e alternar a configuração de filamento/processo para cada " -"impressora automaticamente." +"Se ativo, Orca vai lembrar e alternar a configuração de filamento/processo " +"para cada impressora automaticamente." msgid "Multi-device Management(Take effect after restarting Orca)." -msgstr "Gerenciamento de multi-dispositivos(Entra em vigor após reiniciar o Orca)." +msgstr "" +"Gerenciamento de multi-dispositivos(Entra em vigor após reiniciar o Orca)." msgid "" -"With this option enabled, you can send a task to multiple devices at the same time " -"and manage multiple devices." +"With this option enabled, you can send a task to multiple devices at the " +"same time and manage multiple devices." msgstr "" -"Com esta opção habilitada, você pode enviar uma tarefa para vários dispositivos ao " -"mesmo tempo e gerenciar vários dispositivos." +"Com esta opção habilitada, você pode enviar uma tarefa para vários " +"dispositivos ao mesmo tempo e gerenciar vários dispositivos." msgid "Auto arrange plate after cloning" msgstr "" @@ -6735,7 +6862,8 @@ msgid "Network" msgstr "Rede" msgid "Auto sync user presets(Printer/Filament/Process)" -msgstr "Sincronização automática de presets do usuário(Impressora/Filamento/Processo)" +msgstr "" +"Sincronização automática de presets do usuário(Impressora/Filamento/Processo)" msgid "User Sync" msgstr "Sincronização do Usuário" @@ -6756,19 +6884,23 @@ msgid "Associate .3mf files to OrcaSlicer" msgstr "Associar arquivos .3mf ao OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .3mf files" -msgstr "Se ativado, define OrcaSlicer como aplicativo padrão para abrir arquivos .3mf" +msgstr "" +"Se ativado, define OrcaSlicer como aplicativo padrão para abrir arquivos .3mf" msgid "Associate .stl files to OrcaSlicer" msgstr "Associar arquivos .stl ao OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .stl files" -msgstr "Se ativado, define OrcaSlicer como aplicativo padrão para abrir arquivos .stl" +msgstr "" +"Se ativado, define OrcaSlicer como aplicativo padrão para abrir arquivos .stl" msgid "Associate .step/.stp files to OrcaSlicer" msgstr "Associar arquivos .step/.stp ao OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .step files" -msgstr "Se ativado, define OrcaSlicer como aplicativo padrão para abrir arquivos .step" +msgstr "" +"Se ativado, define OrcaSlicer como aplicativo padrão para abrir " +"arquivos .step" msgid "Associate web links to OrcaSlicer" msgstr "Associar links da web ao OrcaSlicer" @@ -6809,8 +6941,11 @@ msgstr "Sem avisos ao carregar 3MF com códigos G modificados" msgid "Auto-Backup" msgstr "Backup Automático" -msgid "Backup your project periodically for restoring from the occasional crash." -msgstr "Faça backup do seu projeto periodicamente para restaurar de falhas ocasionais." +msgid "" +"Backup your project periodically for restoring from the occasional crash." +msgstr "" +"Faça backup do seu projeto periodicamente para restaurar de falhas " +"ocasionais." msgid "every" msgstr "cada" @@ -7029,7 +7164,8 @@ msgid "Jump to model publish web page" msgstr "Ir para a página web de publicação de modelos" msgid "Note: The preparation may takes several minutes. Please be patient." -msgstr "Nota: A preparação pode levar vários minutos. Por favor, seja paciente." +msgstr "" +"Nota: A preparação pode levar vários minutos. Por favor, seja paciente." msgid "Publish" msgstr "Publicar" @@ -7180,84 +7316,89 @@ msgstr "Tempo limite de sincronização das informações do dispositivo" msgid "Cannot send the print job when the printer is updating firmware" msgstr "" -"Não é possível enviar o trabalho de impressão quando a impressora está atualizando o " -"firmware" +"Não é possível enviar o trabalho de impressão quando a impressora está " +"atualizando o firmware" -msgid "The printer is executing instructions. Please restart printing after it ends" +msgid "" +"The printer is executing instructions. Please restart printing after it ends" msgstr "" -"A impressora está executando instruções. Por favor, reinicie a impressão após " -"terminar" +"A impressora está executando instruções. Por favor, reinicie a impressão " +"após terminar" msgid "The printer is busy on other print job" msgstr "A impressora está ocupada com outro trabalho de impressão" #, c-format, boost-format msgid "" -"Filament %s exceeds the number of AMS slots. Please update the printer firmware to " -"support AMS slot assignment." +"Filament %s exceeds the number of AMS slots. Please update the printer " +"firmware to support AMS slot assignment." msgstr "" -"O filamento %s excede o número de slots AMS. Por favor, atualize o firmware da " -"impressora para suportar a atribuição de slots AMS." +"O filamento %s excede o número de slots AMS. Por favor, atualize o firmware " +"da impressora para suportar a atribuição de slots AMS." msgid "" -"Filament exceeds the number of AMS slots. Please update the printer firmware to " -"support AMS slot assignment." +"Filament exceeds the number of AMS slots. Please update the printer firmware " +"to support AMS slot assignment." msgstr "" "O filamento excede o número de slots AMS. Por favor, atualize o firmware da " "impressora para suportar a atribuição de slots AMS." msgid "" -"Filaments to AMS slots mappings have been established. You can click a filament " -"above to change its mapping AMS slot" +"Filaments to AMS slots mappings have been established. You can click a " +"filament above to change its mapping AMS slot" msgstr "" -"Foram estabelecidos mapeamentos de filamentos para slots AMS. Você pode clicar em um " -"filamento acima para mudar seu slot AMS mapeado" +"Foram estabelecidos mapeamentos de filamentos para slots AMS. Você pode " +"clicar em um filamento acima para mudar seu slot AMS mapeado" msgid "" -"Please click each filament above to specify its mapping AMS slot before sending the " -"print job" +"Please click each filament above to specify its mapping AMS slot before " +"sending the print job" msgstr "" -"Por favor, clique em cada filamento acima para especificar seu slot AMS mapeado " -"antes de enviar o trabalho de impressão" +"Por favor, clique em cada filamento acima para especificar seu slot AMS " +"mapeado antes de enviar o trabalho de impressão" #, c-format, boost-format msgid "" -"Filament %s does not match the filament in AMS slot %s. Please update the printer " +"Filament %s does not match the filament in AMS slot %s. Please update the " +"printer firmware to support AMS slot assignment." +msgstr "" +"O filamento %s não corresponde ao filamento no slot AMS %s. Por favor, " +"atualize o firmware da impressora para suportar a atribuição de slots AMS." + +msgid "" +"Filament does not match the filament in AMS slot. Please update the printer " "firmware to support AMS slot assignment." msgstr "" -"O filamento %s não corresponde ao filamento no slot AMS %s. Por favor, atualize o " +"O filamento não corresponde ao filamento no slot AMS. Por favor, atualize o " "firmware da impressora para suportar a atribuição de slots AMS." msgid "" -"Filament does not match the filament in AMS slot. Please update the printer firmware " -"to support AMS slot assignment." +"The printer firmware only supports sequential mapping of filament => AMS " +"slot." msgstr "" -"O filamento não corresponde ao filamento no slot AMS. Por favor, atualize o firmware " -"da impressora para suportar a atribuição de slots AMS." - -msgid "The printer firmware only supports sequential mapping of filament => AMS slot." -msgstr "" -"O firmware da impressora só suporta mapeamento sequencial de filamento => slot AMS." +"O firmware da impressora só suporta mapeamento sequencial de filamento => " +"slot AMS." msgid "An SD card needs to be inserted before printing." msgstr "Um cartão SD precisa ser inserido antes de imprimir." #, c-format, boost-format msgid "" -"The selected printer (%s) is incompatible with the chosen printer profile in the " -"slicer (%s)." +"The selected printer (%s) is incompatible with the chosen printer profile in " +"the slicer (%s)." msgstr "" -"A impressora selecionada (%s) é incompatível com o perfil escolhido de impressora no " -"fatiador (%s)." +"A impressora selecionada (%s) é incompatível com o perfil escolhido de " +"impressora no fatiador (%s)." msgid "An SD card needs to be inserted to record timelapse." msgstr "Um cartão SD precisa ser inserido para gravar o timelapse." msgid "" -"Cannot send the print job to a printer whose firmware is required to get updated." +"Cannot send the print job to a printer whose firmware is required to get " +"updated." msgstr "" -"Não é possível enviar o trabalho de impressão para uma impressora cujo firmware " -"precisa ser atualizado." +"Não é possível enviar o trabalho de impressão para uma impressora cujo " +"firmware precisa ser atualizado." msgid "Cannot send the print job for empty plate" msgstr "Não é possível enviar o trabalho de impressão para uma mesa vazia" @@ -7266,16 +7407,17 @@ msgid "This printer does not support printing all plates" msgstr "Esta impressora não suporta a impressão em todas as mesas" msgid "" -"When enable spiral vase mode, machines with I3 structure will not generate timelapse " -"videos." +"When enable spiral vase mode, machines with I3 structure will not generate " +"timelapse videos." msgstr "" -"Quando o modo vaso espiral está ativado, máquinas com estrutura I3 não irão gerar " -"vídeos timelapse." +"Quando o modo vaso espiral está ativado, máquinas com estrutura I3 não irão " +"gerar vídeos timelapse." -msgid "Timelapse is not supported because Print sequence is set to \"By object\"." +msgid "" +"Timelapse is not supported because Print sequence is set to \"By object\"." msgstr "" -"Timelapse não é suportado porque a sequência de impressão está configurada para " -"\"Por objeto\"." +"Timelapse não é suportado porque a sequência de impressão está configurada " +"para \"Por objeto\"." msgid "Errors" msgstr "Erros" @@ -7285,20 +7427,21 @@ msgstr "Por favor, verifique o seguinte:" 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." +"currently selected printer. It is recommended that you use the same printer " +"type for slicing." msgstr "" -"O tipo de impressora selecionado ao gerar o G-Code não está consistente com a " -"impressora atualmente selecionada. É recomendado que você use o mesmo tipo de " -"impressora para fatiar." +"O tipo de impressora selecionado ao gerar o G-Code não está consistente com " +"a impressora atualmente selecionada. É recomendado que você use o mesmo tipo " +"de impressora para fatiar." 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." +"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 "" -"Há alguns filamentos desconhecidos nos mapeamentos AMS. Por favor, verifique se eles " -"são os filamentos necessários. Se estiverem corretos, pressione \"Confirmar\" para " -"iniciar a impressão." +"Há alguns filamentos desconhecidos nos mapeamentos AMS. Por favor, verifique " +"se eles são os filamentos necessários. Se estiverem corretos, pressione " +"\"Confirmar\" para iniciar a impressão." #, c-format, boost-format msgid "nozzle in preset: %s %s" @@ -7309,37 +7452,45 @@ msgid "nozzle memorized: %.2f %s" msgstr "bico memorizado: %.2f %s" msgid "" -"Your nozzle diameter in sliced file is not consistent with memorized nozzle. If you " -"changed your nozzle lately, please go to Device > Printer Parts to change settings." +"Your nozzle diameter in sliced file is not consistent with memorized nozzle. " +"If you changed your nozzle lately, please go to Device > Printer Parts to " +"change settings." msgstr "" -"Seu diâmetro de bico no arquivo fatiado não é consistente com o bico memorizado. Se " -"você mudou seu bico recentemente, vá para Dispositivo > Partes da impressora para " -"alterar as configurações." +"Seu diâmetro de bico no arquivo fatiado não é consistente com o bico " +"memorizado. Se você mudou seu bico recentemente, vá para Dispositivo > " +"Partes da impressora para alterar as configurações." #, c-format, boost-format -msgid "Printing high temperature material(%s material) with %s may cause nozzle damage" +msgid "" +"Printing high temperature material(%s material) with %s may cause nozzle " +"damage" msgstr "" -"Imprimir material de temperatura alta (material %s) com %s poderá causar danos ao " -"bico" +"Imprimir material de temperatura alta (material %s) com %s poderá causar " +"danos ao bico" msgid "Please fix the error above, otherwise printing cannot continue." msgstr "" -"Por favor, corrija o erro acima, caso contrário a impressão não poderá continuar." - -msgid "Please click the confirm button if you still want to proceed with printing." -msgstr "" -"Por favor, clique no botão de confirmação se ainda deseja prosseguir com a impressão." - -msgid "Connecting to the printer. Unable to cancel during the connection process." -msgstr "" -"Conectando à impressora. Não é possível cancelar durante o processo de conexão." +"Por favor, corrija o erro acima, caso contrário a impressão não poderá " +"continuar." msgid "" -"Caution to use! Flow calibration on Textured PEI Plate may fail due to the scattered " -"surface." +"Please click the confirm button if you still want to proceed with printing." msgstr "" -"Cuidado ao usar! A calibração de fluxo no PEI Texturizado pode falhar devido à " -"superfície irregular." +"Por favor, clique no botão de confirmação se ainda deseja prosseguir com a " +"impressão." + +msgid "" +"Connecting to the printer. Unable to cancel during the connection process." +msgstr "" +"Conectando à impressora. Não é possível cancelar durante o processo de " +"conexão." + +msgid "" +"Caution to use! Flow calibration on Textured PEI Plate may fail due to the " +"scattered surface." +msgstr "" +"Cuidado ao usar! A calibração de fluxo no PEI Texturizado pode falhar devido " +"à superfície irregular." msgid "Automatic flow calibration using Micro Lidar" msgstr "Calibração automática de fluxo usando Micro Lidar" @@ -7358,15 +7509,18 @@ msgstr "Enviar para o cartão SD da impressora" msgid "Cannot send the print task when the upgrade is in progress" msgstr "" -"Não é possível enviar a tarefa de impressão quando a atualização está em progresso" +"Não é possível enviar a tarefa de impressão quando a atualização está em " +"progresso" msgid "The selected printer is incompatible with the chosen printer presets." msgstr "" -"A impressora selecionada é incompatível com os perfis de impressora escolhidos." +"A impressora selecionada é incompatível com os perfis de impressora " +"escolhidos." msgid "An SD card needs to be inserted before send to printer SD card." msgstr "" -"Um cartão SD precisa ser inserido antes de enviar para o cartão SD da impressora." +"Um cartão SD precisa ser inserido antes de enviar para o cartão SD da " +"impressora." msgid "The printer is required to be in the same LAN as Orca Slicer." msgstr "A impressora deve estar na mesma LAN do Orca Slicer." @@ -7445,17 +7599,18 @@ msgid "Terms and Conditions" msgstr "Termos e Condições" msgid "" -"Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab device, " -"please read the terms and conditions.By clicking to agree to use your Bambu Lab " -"device, you agree to abide by the Privacy Policy and 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." +"Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab " +"device, please read the terms and conditions.By clicking to agree to use " +"your Bambu Lab device, you agree to abide by the Privacy Policy and 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 "" -"Obrigado por adquirir um dispositivo Bambu Lab. Antes de usar seu dispositivo Bambu " -"Lab, leia os termos e condições. Ao clicar para concordar em usar seu dispositivo " -"Bambu Lab, você concorda em cumprir a Política de Privacidade e os Termos de Uso " -"(coletivamente, os \"Termos\"). Se você não concordar ou não cumprir com a Política " -"de Privacidade da Bambu Lab, não use os equipamentos e serviços da Bambu Lab." +"Obrigado por adquirir um dispositivo Bambu Lab. Antes de usar seu " +"dispositivo Bambu Lab, leia os termos e condições. Ao clicar para concordar " +"em usar seu dispositivo Bambu Lab, você concorda em cumprir a Política de " +"Privacidade e os Termos de Uso (coletivamente, os \"Termos\"). Se você não " +"concordar ou não cumprir com a Política de Privacidade da Bambu Lab, não use " +"os equipamentos e serviços da Bambu Lab." msgid "and" msgstr "e" @@ -7471,28 +7626,31 @@ msgstr "Declaração sobre o Programa de Melhoria da Experiência do Usuário" #, 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 "" -"Na comunidade de Impressão 3D, aprendemos com os sucessos e falhas uns dos outros " -"para ajustar nossos próprios parâmetros de fatiamento e configurações. %s segue o " -"mesmo princípio e utiliza aprendizado de máquina para melhorar seu desempenho a " -"partir dos sucessos e falhas do grande número de impressões feitas por nossos " -"usuários. Estamos treinando %s para ser mais inteligente alimentando-os com dados do " -"mundo real. Se você concordar, este serviço acessará informações de seus registros " -"de erros e registros de uso, que podem incluir informações descritas na Política de " -"Privacidade. Não coletaremos quaisquer Dados Pessoais pelos quais um indivíduo possa " -"ser identificado diretamente ou indiretamente, incluindo, sem limitação, nomes, " -"endereços, informações de pagamento ou números de telefone. Ao ativar este serviço, " -"você concorda com estes termos e com a declaração sobre a Política de Privacidade." +"Na comunidade de Impressão 3D, aprendemos com os sucessos e falhas uns dos " +"outros para ajustar nossos próprios parâmetros de fatiamento e " +"configurações. %s segue o mesmo princípio e utiliza aprendizado de máquina " +"para melhorar seu desempenho a partir dos sucessos e falhas do grande número " +"de impressões feitas por nossos usuários. Estamos treinando %s para ser mais " +"inteligente alimentando-os com dados do mundo real. Se você concordar, este " +"serviço acessará informações de seus registros de erros e registros de uso, " +"que podem incluir informações descritas na Política de Privacidade. Não " +"coletaremos quaisquer Dados Pessoais pelos quais um indivíduo possa ser " +"identificado diretamente ou indiretamente, incluindo, sem limitação, nomes, " +"endereços, informações de pagamento ou números de telefone. Ao ativar este " +"serviço, você concorda com estes termos e com a declaração sobre a Política " +"de Privacidade." msgid "Statement on User Experience Improvement Plan" msgstr "Declaração sobre o Plano de Melhoria da Experiência do Usuário" @@ -7510,7 +7668,8 @@ msgid "Please log in first." msgstr "Por favor, faça login primeiro." msgid "There was a problem connecting to the printer. Please try again." -msgstr "Houve um problema ao conectar-se à impressora. Por favor, tente novamente." +msgstr "" +"Houve um problema ao conectar-se à impressora. Por favor, tente novamente." msgid "Failed to log out." msgstr "Falha ao desconectar." @@ -7527,33 +7686,35 @@ msgid "Search in preset" msgstr "Pesquisar nos presets" msgid "Click to reset all settings to the last saved preset." -msgstr "Clique para redefinir todas as configurações para o último preset salvo." +msgstr "" +"Clique para redefinir todas as configurações para o último preset salvo." msgid "" -"Prime tower is required for smooth timelapse. There may be flaws on the model " -"without prime tower. Are you sure you want to disable prime tower?" +"Prime tower is required for smooth timelapse. There may be flaws on the " +"model without prime tower. Are you sure you want to disable prime tower?" msgstr "" -"A Torre Prime é necessária para um timelapse suave. Pode haver falhas no modelo sem " -"a torre prime. Tem certeza de que deseja desativar a torre prime?" +"A Torre Prime é necessária para um timelapse suave. Pode haver falhas no " +"modelo sem a torre prime. Tem certeza de que deseja desativar a torre prime?" 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?" +"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 "" -"A Torre Prime é necessária para um timelapse suave. Pode haver falhas no modelo sem " -"a torre prime. Deseja ativar a torre prime?" +"A Torre Prime é necessária para um timelapse suave. Pode haver falhas no " +"modelo sem a torre prime. Deseja ativar a torre prime?" msgid "Still print by object?" msgstr "Ainda imprimir por objeto?" msgid "" -"We have added an experimental style \"Tree Slim\" that features smaller support " -"volume but weaker strength.\n" +"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 "" -"Adicionamos um estilo experimental \"Tree Slim\" que apresenta um volume de suporte " -"menor, mas uma resistência mais fraca.\n" -"Recomendamos usar com: 0 camadas de interface, 0 distância superior, 2 paredes." +"Adicionamos um estilo experimental \"Tree Slim\" que apresenta um volume de " +"suporte menor, mas uma resistência mais fraca.\n" +"Recomendamos usar com: 0 camadas de interface, 0 distância superior, 2 " +"paredes." msgid "" "Change these settings automatically? \n" @@ -7565,33 +7726,34 @@ msgstr "" "Não - Não alterar essas configurações para mim" 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." +"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 "" "Para os estilos \"Tree Strong\" e \"Tree Hybrid\", recomendamos as seguintes " -"configurações: pelo menos 2 camadas de interface, pelo menos 0.1mm de distância " -"superior em z ou uso de materiais de suporte na interface." +"configurações: pelo menos 2 camadas de interface, pelo menos 0.1mm de " +"distância superior em z ou uso de materiais de suporte na interface." 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 "" -"Ao usar material de suporte para a interface de suporte, recomendamos as seguintes " -"configurações:\n" -"distância z superior 0, espaçamento de interface 0, padrão concêntrico e desabilitar " -"altura de camada de suporte independente" +"Ao usar material de suporte para a interface de suporte, recomendamos as " +"seguintes configurações:\n" +"distância z superior 0, espaçamento de interface 0, padrão concêntrico e " +"desabilitar altura de camada de suporte independente" msgid "" -"Enabling this option will modify the model's shape. If your print requires precise " -"dimensions or is part of an assembly, it's important to double-check whether this " -"change in geometry impacts the functionality of your print." +"Enabling this option will modify the model's shape. If your print requires " +"precise dimensions or is part of an assembly, it's important to double-check " +"whether this change in geometry impacts the functionality of your print." msgstr "" -"Habilitar esta opção modificará a forma do modelo. Se sua impressão exigir dimensões " -"precisas ou fizer parte de uma montagem, é importante verificar duplamente se essa " -"mudança na geometria afeta a funcionalidade da sua impressão." +"Habilitar esta opção modificará a forma do modelo. Se sua impressão exigir " +"dimensões precisas ou fizer parte de uma montagem, é importante verificar " +"duplamente se essa mudança na geometria afeta a funcionalidade da sua " +"impressão." msgid "Are you sure you want to enable this option?" msgstr "Tem certeza de que deseja habilitar esta opção?" @@ -7606,11 +7768,12 @@ msgstr "" "Ela será definida como altura mínima da camada\n" msgid "" -"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height " -"limits ,this may cause printing quality issues." +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." msgstr "" -"A altura da camada excede o limite em Configurações da Impressora -> Extrusora -> " -"Limites de altura da camada, isso pode causar problemas de qualidade de impressão." +"A altura da camada excede o limite em Configurações da Impressora -> " +"Extrusora -> Limites de altura da camada, isso pode causar problemas de " +"qualidade de impressão." msgid "Adjust to the set range automatically? \n" msgstr "Ajustar automaticamente à faixa definida? \n" @@ -7622,46 +7785,48 @@ msgid "Ignore" msgstr "Ignorar" msgid "" -"Experimental feature: Retracting and cutting off the filament at a greater distance " -"during filament changes to minimize flush.Although it can notably reduce flush, it " -"may also elevate the risk of nozzle clogs or other printing complications." +"Experimental feature: Retracting and cutting off the filament at a greater " +"distance during filament changes to minimize flush.Although it can notably " +"reduce flush, it may also elevate the risk of nozzle clogs or other " +"printing complications." msgstr "" -"Recurso experimental: Retrair e cortar o filamento a uma distância maior durante " -"mudanças de filamento para minimizar a purga. Embora possa reduzir notavelmente a " -"purga, ele também pode elevar o risco de bolhas no bico ou outras complicações de " -"impressão." +"Recurso experimental: Retrair e cortar o filamento a uma distância maior " +"durante mudanças de filamento para minimizar a purga. Embora possa reduzir " +"notavelmente a purga, ele também pode elevar o risco de bolhas no bico ou " +"outras complicações de impressão." msgid "" -"Experimental feature: Retracting and cutting off the filament at a greater distance " -"during filament changes to minimize flush.Although it can notably reduce flush, it " -"may also elevate the risk of nozzle clogs or other printing complications.Please use " -"with the latest printer firmware." +"Experimental feature: Retracting and cutting off the filament at a greater " +"distance during filament changes to minimize flush.Although it can notably " +"reduce flush, it may also elevate the risk of nozzle clogs or other printing " +"complications.Please use with the latest printer firmware." msgstr "" -"Recurso experimental: Retrair e cortar o filamento a uma distância maior durante as " -"trocas de filamento para minimizar a purga. Embora isso possa reduzir " -"consideravelmente a purga, também pode aumentar o risco de obstruções no bico ou " -"outras complicações de impressão. Por favor, use com o firmware mais recente da " -"impressora." +"Recurso experimental: Retrair e cortar o filamento a uma distância maior " +"durante as trocas de filamento para minimizar a purga. Embora isso possa " +"reduzir consideravelmente a purga, também pode aumentar o risco de " +"obstruções no bico ou outras complicações de impressão. Por favor, use com o " +"firmware mais recente da impressora." 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\"." +"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 "" -"Ao gravar um timelapse sem o hotend aparecer, é recomendável adicionar uma \"Torre " -"Prime para Timelapse\" \n" +"Ao gravar um timelapse sem o hotend aparecer, é recomendável adicionar uma " +"\"Torre Prime para Timelapse\" \n" "clique com o botão direito na posição vazia da mesa e escolha \"Adicionar " "Primitivo\"->\"Torre Prime para Timelapse\"." msgid "" -"A copy of the current system preset will be created, which will be detached from the " -"system preset." +"A copy of the current system preset will be created, which will be detached " +"from the system preset." msgstr "" -"Uma cópia do perfil de sistema atual será criada, que será desanexada da perfil de " -"sistema." +"Uma cópia do perfil de sistema atual será criada, que será desanexada da " +"perfil de sistema." -msgid "The current custom preset will be detached from the parent system preset." +msgid "" +"The current custom preset will be detached from the parent system preset." msgstr "O perfil customizado atual será desanexado do perfil de sistema pai." msgid "Modifications to the current profile will be saved." @@ -7692,7 +7857,8 @@ msgstr "Perfil atual é herdado de" msgid "It can't be deleted or modified." msgstr "Não pode ser excluído ou modificado." -msgid "Any modifications should be saved as a new preset inherited from this one." +msgid "" +"Any modifications should be saved as a new preset inherited from this one." msgstr "Qualquer modificação deve ser salva como um novo perfil herdade deste." msgid "To do that please specify a new name for the preset." @@ -7762,13 +7928,14 @@ msgid "Overhang speed" msgstr "Velocidade em overhangs" 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" +"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 "" -"Esta é a velocidade para vários graus de avanço. Os graus de avanço são expressos " -"como uma porcentagem da largura da linha. A velocidade 0 significa que não há " -"desaceleração para o intervalo de graus de avanço e a velocidade do perímetro é usada" +"Esta é a velocidade para vários graus de avanço. Os graus de avanço são " +"expressos como uma porcentagem da largura da linha. A velocidade 0 significa " +"que não há desaceleração para o intervalo de graus de avanço e a velocidade " +"do perímetro é usada" msgid "Bridge" msgstr "Ponte" @@ -7821,30 +7988,26 @@ msgstr "Scripts de pós-processamento" msgid "Notes" msgstr "Notas" -msgid "Dependencies" -msgstr "Dependências" - -msgid "Profile dependencies" -msgstr "Dependências de perfil" - msgid "Frequent" msgstr "Frequente" #, 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] "" "A linha %s seguinte contém palavras-chave reservadas.\n" -"Por favor, remova-a, ou afetará a visualização do código G e a estimativa de tempo " -"de impressão." +"Por favor, remova-a, ou afetará a visualização do código G e a estimativa de " +"tempo de impressão." msgstr[1] "" "As linhas %s seguintes contêm palavras-chave reservadas.\n" -"Por favor, remova-as, ou afetará a visualização do código G e a estimativa de tempo " -"de impressão." +"Por favor, remova-as, ou afetará a visualização do código G e a estimativa " +"de tempo de impressão." msgid "Reserved keywords found" msgstr "Palavras-chave reservadas encontradas" @@ -7862,7 +8025,8 @@ msgid "Recommended nozzle temperature" msgstr "Temperatura recomendada do bico" msgid "Recommended nozzle temperature range of this filament. 0 means no set" -msgstr "Faixa de temperatura recomendada para esta boquilha. 0 significa não definido" +msgstr "" +"Faixa de temperatura recomendada para esta boquilha. 0 significa não definido" msgid "Flow ratio and Pressure Advance" msgstr "" @@ -7883,16 +8047,16 @@ msgid "Cool Plate (SuperTack)" msgstr "" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament does not " -"support to print on the Cool Plate SuperTack" +"Bed temperature when cool plate is installed. Value 0 means the filament " +"does not support to print on the Cool Plate SuperTack" msgstr "" msgid "Cool Plate" msgstr "Mesa Fria" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament does not " -"support to print on the Cool Plate" +"Bed temperature when cool plate is installed. Value 0 means the filament " +"does not support to print on the Cool Plate" msgstr "" "Temperatura da mesa quando a cool plate (mesa fria) está instalada. Valor 0 " "significa que o filamento não suporta impressão na cool plate" @@ -7901,37 +8065,38 @@ msgid "Textured Cool plate" msgstr "" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament does not " -"support to print on the Textured Cool Plate" +"Bed temperature when cool plate is installed. Value 0 means the filament " +"does not support to print on the Textured Cool Plate" msgstr "" msgid "Engineering plate" msgstr "Mesa de engenharia" msgid "" -"Bed temperature when engineering plate is installed. Value 0 means the filament does " -"not support to print on the Engineering Plate" +"Bed temperature when engineering plate is installed. Value 0 means the " +"filament does not support to print on the Engineering Plate" msgstr "" -"Temperatura da mesa quando a mesa de engenharia está instalada. Valor 0 significa " -"que o filamento não suporta impressão na Mesa de Engenharia" +"Temperatura da mesa quando a mesa de engenharia está instalada. Valor 0 " +"significa que o filamento não suporta impressão na Mesa de Engenharia" msgid "Smooth PEI Plate / High Temp Plate" msgstr "Mesa PEI lisa / Mesa de alta temperatura" 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" +"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 "" -"Temperatura da mesa quando a mesa PEI lisa/ de alta temperatura está instalada. O " -"valor 0 significa que o filamento não suporta a impressão na Mesa PEI lisa/Mesa de " -"Alta Temperatura" +"Temperatura da mesa quando a mesa PEI lisa/ de alta temperatura está " +"instalada. O valor 0 significa que o filamento não suporta a impressão na " +"Mesa PEI lisa/Mesa de Alta Temperatura" msgid "Textured PEI Plate" msgstr "Mesa PEI Texturizada" msgid "" -"Bed temperature when Textured PEI Plate is installed. Value 0 means the filament " -"does not support to print on the Textured PEI Plate" +"Bed temperature when Textured PEI Plate is installed. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" msgstr "" "Temperatura da mesa quando a mesa PEI texturizada está instalada. O valor 0 " "significa que o filamento não suporta impressão na mesa PEI texturizada" @@ -7952,26 +8117,26 @@ msgid "Min fan speed threshold" msgstr "Limiar de velocidade mínima do ventilador" 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" +"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 "" "A velocidade do ventilador de resfriamento da peça começará a funcionar na " -"velocidade mínima quando o tempo estimado da camada não for mais longo do que o " -"tempo da camada ajustado. Quando o tempo da camada for menor que o limite, a " -"velocidade do ventilador é interpolada entre a velocidade mínima e máxima de acordo " -"com o tempo de impressão da camada" +"velocidade mínima quando o tempo estimado da camada não for mais longo do " +"que o tempo da camada ajustado. Quando o tempo da camada for menor que o " +"limite, a velocidade do ventilador é interpolada entre a velocidade mínima e " +"máxima de acordo com o tempo de impressão da camada" msgid "Max fan speed threshold" msgstr "Limiar de velocidade máxima do ventilador" msgid "" -"Part cooling fan speed will be max when the estimated layer time is shorter than the " -"setting value" +"Part cooling fan speed will be max when the estimated layer time is shorter " +"than the setting value" msgstr "" -"A velocidade do ventilador de resfriamento da peça será máxima quando o tempo " -"estimado da camada for menor que o valor ajustado" +"A velocidade do ventilador de resfriamento da peça será máxima quando o " +"tempo estimado da camada for menor que o valor ajustado" msgid "Auxiliary part cooling fan" msgstr "Ventilador auxiliar de resfriamento da peça" @@ -7995,13 +8160,21 @@ msgid "Wipe tower parameters" msgstr "Parâmetros da Torre Prime" msgid "Toolchange parameters with single extruder MM printers" -msgstr "Parâmetros de troca de ferramentas com impressoras MM de extrusora única" +msgstr "" +"Parâmetros de troca de ferramentas com impressoras MM de extrusora única" msgid "Ramming settings" msgstr "Configurações de moldeamento" msgid "Toolchange parameters with multi extruder MM printers" -msgstr "Parâmetros de troca de ferramentas com impressoras MM de múltiplas extrusoras" +msgstr "" +"Parâmetros de troca de ferramentas com impressoras MM de múltiplas extrusoras" + +msgid "Dependencies" +msgstr "Dependências" + +msgid "Profile dependencies" +msgstr "Dependências de perfil" msgid "Printable space" msgstr "Espaço de impressão" @@ -8086,8 +8259,8 @@ msgstr "" msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" -"Do you want to change the diameter for all extruders to first extruder nozzle " -"diameter value?" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" msgstr "" msgid "Nozzle diameter" @@ -8100,8 +8273,8 @@ msgid "Single extruder multi-material parameters" msgstr "Parâmetros de múltiplos materiais com um único extrusor" msgid "" -"This is a single extruder multi-material printer, diameters of all extruders will be " -"set to the new value. Do you want to proceed?" +"This is a single extruder multi-material printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" msgstr "" msgid "Layer height limits" @@ -8118,7 +8291,8 @@ msgid "" "\n" "Shall I disable it in order to enable Firmware Retraction?" msgstr "" -"A opção de Limpeza não está disponível ao usar o modo de Retração de Firmware.\n" +"A opção de Limpeza não está disponível ao usar o modo de Retração de " +"Firmware.\n" "\n" "Deseja desativá-lo para habilitar a Retração de Firmware?" @@ -8130,11 +8304,11 @@ msgstr "Desanexado" #, 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." +"%d Filament Preset and %d Process Preset is attached to this printer. Those " +"presets would be deleted if the printer is deleted." msgstr "" -"%d Preset de Filamento e %d Preset de Processo estão vinculados a esta impressora. " -"Esses presets serão excluídos se a impressora for deletada." +"%d Preset de Filamento e %d Preset de Processo estão vinculados a esta " +"impressora. Esses presets serão excluídos se a impressora for deletada." msgid "Presets inherited by other presets can not be deleted!" msgstr "Os perfis herdados por outros perfis não podem ser excluídos!" @@ -8156,12 +8330,12 @@ msgstr[1] "Os seguintes perfis também serão excluídos." 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." +"If the preset corresponds to a filament currently in use on your printer, " +"please reset the filament information for that slot." msgstr "" "Tem certeza de que deseja excluir o perfil selecionado? \n" -"Se o perfil corresponde a um filamento atualmente em uso em sua impressora, redefina " -"as informações do filamento para esse slot." +"Se o perfil corresponde a um filamento atualmente em uso em sua impressora, " +"redefina as informações do filamento para esse slot." #, boost-format msgid "Are you sure to %1% the selected preset?" @@ -8177,7 +8351,8 @@ msgid "Click to reset current value and attach to the global value." msgstr "Clique para redefinir o valor atual e anexá-lo ao valor global." msgid "Click to drop current modify and reset to saved value." -msgstr "Clique para descartar a modificação atual e redefinir para o valor salvo." +msgstr "" +"Clique para descartar a modificação atual e redefinir para o valor salvo." msgid "Process Settings" msgstr "Configurações do Processo" @@ -8246,16 +8421,16 @@ msgstr "O perfil \"%1%\" contém as seguintes alterações não salvas:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new printer profile and it contains the " -"following unsaved changes:" +"Preset \"%1%\" is not compatible with the new printer profile and it " +"contains the following unsaved changes:" msgstr "" -"O perfil \"%1%\" não é compatível com o novo perfil da impressora e contém as " -"seguintes alterações não salvas:" +"O perfil \"%1%\" não é compatível com o novo perfil da impressora e contém " +"as seguintes alterações não salvas:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new process profile and it contains the " -"following unsaved changes:" +"Preset \"%1%\" is not compatible with the new process profile and it " +"contains the following unsaved changes:" msgstr "" "O perfil \"%1%\" não é compatível com o novo perfil de processo e contém as " "seguintes alterações não salvas:" @@ -8273,8 +8448,8 @@ msgstr "" msgid "" "\n" -"You can save or discard the preset values you have modified, or choose to transfer " -"the values you have modified to the new preset." +"You can save or discard the preset values you have modified, or choose to " +"transfer the values you have modified to the new preset." msgstr "" "\n" "Você pode salvar ou descartar os valores predefinidos que você modificou, ou " @@ -8285,8 +8460,8 @@ msgstr "Você modificou suas configurações anteriormente." msgid "" "\n" -"You can discard the preset values you have modified, or choose to transfer the " -"modified values to the new project" +"You can discard the preset values you have modified, or choose to transfer " +"the modified values to the new project" msgstr "" "\n" "Você pode descartar os valores predefinidos que você modificou, ou escolher " @@ -8307,26 +8482,29 @@ msgstr "Mostrar todos os perfis (incluindo os incompatíveis)" msgid "Select presets to compare" msgstr "Selecione os perfis para comparar" -msgid "You can only transfer to current active profile because it has been modified." -msgstr "Só é possível transferir para o perfil ativo atual porque ele foi modificado." +msgid "" +"You can only transfer to current active profile because it has been modified." +msgstr "" +"Só é possível transferir para o perfil ativo atual porque ele foi modificado." msgid "" "Transfer the selected options from left preset to the right.\n" -"Note: New modified presets will be selected in settings tabs after close this dialog." +"Note: New modified presets will be selected in settings tabs after close " +"this dialog." msgstr "" "Transfira as opções selecionadas do perfil à esquerda para o da direita.\n" -"Nota: Novos perfis modificados serão selecionados nas guias de configurações após " -"fechar este diálogo." +"Nota: Novos perfis modificados serão selecionados nas guias de configurações " +"após fechar este diálogo." msgid "Transfer values from left to right" msgstr "Transferir valores da esquerda para a direita" msgid "" -"If enabled, this dialog can be used for transfer selected values from left to right " -"preset." +"If enabled, this dialog can be used for transfer selected values from left " +"to right preset." msgstr "" -"Se ativo, este diálogo pode ser usado para transferir valores selecionados do perfil " -"à esquerda para o da direita." +"Se ativo, este diálogo pode ser usado para transferir valores selecionados " +"do perfil à esquerda para o da direita." msgid "Add File" msgstr "Adicionar arquivo" @@ -8387,7 +8565,8 @@ msgid "" "%s will update the configuration package, Otherwise it won't be able to start" msgstr "" "O pacote de configuração é incompatível com a aplicação atual.\n" -"%s atualizará o pacote de configuração, caso contrário, não será possível iniciar" +"%s atualizará o pacote de configuração, caso contrário, não será possível " +"iniciar" #, c-format, boost-format msgid "Exit %s" @@ -8459,25 +8638,27 @@ msgid "Ramming customization" msgstr "Customização de moldeamento" 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" +"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." +"This is an expert-level setting, incorrect adjustment will likely lead to " +"jams, extruder wheel grinding into filament etc." msgstr "" -"O moldeamento denota a extrusão rápida logo antes de uma troca de ferramentas em uma " -"impressora MM de extrusão única. Seu propósito é dar forma adequadamente à ponta do " -"filamento descarregado para que não impeça a inserção do novo filamento e possa ser " -"reinserido posteriormente. Essa fase é importante e diferentes materiais podem " -"exigir velocidades de extrusão diferentes para obter uma boa forma. Por esse motivo, " -"as taxas de extrusão durante o moldeamento são ajustáveis.\n" +"O moldeamento denota a extrusão rápida logo antes de uma troca de " +"ferramentas em uma impressora MM de extrusão única. Seu propósito é dar " +"forma adequadamente à ponta do filamento descarregado para que não impeça a " +"inserção do novo filamento e possa ser reinserido posteriormente. Essa fase " +"é importante e diferentes materiais podem exigir velocidades de extrusão " +"diferentes para obter uma boa forma. Por esse motivo, as taxas de extrusão " +"durante o moldeamento são ajustáveis.\n" "\n" -"Esta é uma configuração de nível especialista, ajustes incorretos provavelmente " -"resultarão em travamentos, moagem da roda de extrusão no filamento, etc." +"Esta é uma configuração de nível especialista, ajustes incorretos " +"provavelmente resultarão em travamentos, moagem da roda de extrusão no " +"filamento, etc." msgid "Total ramming time" msgstr "Tempo total de moldeamento" @@ -8507,8 +8688,9 @@ msgid "" "Orca would re-calculate your flushing volumes every time the filaments color " "changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" -"O Orca recalculará seus volumes de purga toda vez que a cor dos filamentos for " -"alterada. Você pode desativar o cálculo automático em Orca Slicer > Preferências" +"O Orca recalculará seus volumes de purga toda vez que a cor dos filamentos " +"for alterada. Você pode desativar o cálculo automático em Orca Slicer > " +"Preferências" msgid "Flushing volume (mm³) for each filament pair." msgstr "Volume de purga (mm³) para cada par de filamentos." @@ -8540,29 +8722,29 @@ msgid "To" msgstr "Para" msgid "" -"Windows Media Player is required for this task! Do you want to enable 'Windows Media " -"Player' for your operation system?" +"Windows Media Player is required for this task! Do you want to enable " +"'Windows Media Player' for your operation system?" msgstr "" msgid "" -"BambuSource has not correctly been registered for media playing! Press Yes to re-" -"register it. You will be promoted twice" +"BambuSource has not correctly been registered for media playing! Press Yes " +"to re-register it. You will be promoted twice" msgstr "" msgid "" -"Missing BambuSource component registered for media playing! Please re-install " -"BambuStudio or seek after-sales help." +"Missing BambuSource component registered for media playing! Please re-" +"install BambuStudio or seek after-sales help." msgstr "" msgid "" -"Using a BambuSource from a different install, video play may not work correctly! " -"Press Yes to fix it." +"Using a BambuSource from a different install, video play may not work " +"correctly! Press Yes to fix it." msgstr "" msgid "" -"Your system is missing H.264 codecs for GStreamer, which are required to play " -"video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, " -"then restart Orca Slicer?)" +"Your system is missing H.264 codecs for GStreamer, which are required to " +"play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-" +"libav packages, then restart Orca Slicer?)" msgstr "" msgid "Bambu Network plug-in not detected." @@ -8629,13 +8811,13 @@ 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." +"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 "" -"Orienta automaticamente os objetos selecionados ou todos os objetos. Se houver " -"objetos selecionados, ele apenas orientará os selecionados. Caso contrário, " -"orientará todos os objetos no disco atual." +"Orienta automaticamente os objetos selecionados ou todos os objetos. Se " +"houver objetos selecionados, ele apenas orientará os selecionados. Caso " +"contrário, orientará todos os objetos no disco atual." msgid "Shift+Tab" msgstr "Shift+Tab" @@ -8851,10 +9033,11 @@ msgstr "informações de atualização da versão %s:" msgid "Network plug-in update" msgstr "Atualização do plug-in de rede" -msgid "Click OK to update the Network plug-in when Orca Slicer launches next time." +msgid "" +"Click OK to update the Network plug-in when Orca Slicer launches next time." msgstr "" -"Clique em OK para atualizar o plug-in de rede quando o Orca Slicer for iniciado " -"novamente." +"Clique em OK para atualizar o plug-in de rede quando o Orca Slicer for " +"iniciado novamente." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" @@ -8911,17 +9094,18 @@ msgstr "Confirmar e Atualizar Bico" msgid "Connect the printer using IP and access code" msgstr "" -msgid "Step 1. Please confirm Orca Slicer and your printer are in the same LAN." +msgid "" +"Step 1. Please confirm Orca Slicer and your printer are in the same LAN." msgstr "" msgid "" -"Step 2. If the IP and Access Code below are different from the actual values on your " -"printer, please correct them." +"Step 2. If the IP and Access Code below are different from the actual values " +"on your printer, please correct them." msgstr "" msgid "" -"Step 3. Please obtain the device SN from the printer side; it is usually found in " -"the device information on the printer screen." +"Step 3. Please obtain the device SN from the printer side; it is usually " +"found in the device information on the printer screen." msgstr "" msgid "IP" @@ -9001,28 +9185,29 @@ msgid "Updating successful" msgstr "Atualização bem-sucedida" 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." +"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 "" -"Tem certeza de que deseja atualizar? Isso levará cerca de 10 minutos. Não desligue a " -"energia enquanto a impressora estiver atualizando." +"Tem certeza de que deseja atualizar? Isso levará cerca de 10 minutos. Não " +"desligue a energia enquanto a impressora estiver atualizando." 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'." +"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 "" "Uma atualização importante foi detectada e precisa ser executada antes que a " -"impressão possa continuar. Deseja atualizar agora? Você também pode atualizar " -"posteriormente em 'Atualizar firmware'." +"impressão possa continuar. Deseja atualizar agora? Você também pode " +"atualizar posteriormente em 'Atualizar firmware'." 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 Orca." +"printing. Do you want to update now? You can also update later on printer or " +"update next time starting Orca." msgstr "" "A versão do firmware está anormal. Reparar e atualizar é necessário antes de " -"imprimir. Você deseja atualizar agora? Você também pode atualizar mais tarde na " -"impressora ou atualizar da próxima vez que iniciar o Orca." +"imprimir. Você deseja atualizar agora? Você também pode atualizar mais tarde " +"na impressora ou atualizar da próxima vez que iniciar o Orca." msgid "Extension Board" msgstr "Mesa de Extensão" @@ -9094,31 +9279,34 @@ msgid "Open G-code file:" msgstr "Abrir arquivo G-code:" msgid "" -"One object has empty initial layer and can't be printed. Please Cut the bottom or " -"enable supports." +"One object has empty initial layer and can't be printed. Please Cut the " +"bottom or enable supports." msgstr "" -"Um objeto tem uma primeira camada vazia e não pode ser impresso. Por favor, corte a " -"base ou habilite os suportes." +"Um objeto tem uma primeira camada vazia e não pode ser impresso. Por favor, " +"corte a base ou habilite os suportes." #, boost-format msgid "Object can't be printed for empty layer between %1% and %2%." -msgstr "O objeto não pode ser impresso devido a uma camada vazia entre %1% e %2%." +msgstr "" +"O objeto não pode ser impresso devido a uma camada vazia entre %1% e %2%." #, boost-format msgid "Object: %1%" msgstr "Objeto: %1%" msgid "" -"Maybe parts of the object at these height are too thin, or the object has faulty mesh" +"Maybe parts of the object at these height are too thin, or the object has " +"faulty mesh" msgstr "" -"Talvez partes do objeto nessa altura sejam muito finas, ou o objeto tenha uma malha " -"com falhas" +"Talvez partes do objeto nessa altura sejam muito finas, ou o objeto tenha " +"uma malha com falhas" msgid "No object can be printed. Maybe too small" msgstr "Nenhum objeto pode ser impresso. Talvez seja muito pequeno" msgid "" -"Your print is very close to the priming regions. Make sure there is no collision." +"Your print is very close to the priming regions. Make sure there is no " +"collision." msgstr "" msgid "" @@ -9174,15 +9362,15 @@ msgstr "Múltiplo" #, boost-format msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "" -"Falha ao calcular a largura da linha de %1%. Não é possível obter o valor de \"%2%" -"\". " +"Falha ao calcular a largura da linha de %1%. Não é possível obter o valor de " +"\"%2%\". " msgid "" -"Invalid spacing supplied to Flow::with_spacing(), check your layer height and " -"extrusion width" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" msgstr "" -"Espaçamento inválido fornecido para Flow::with_spacing(), verifique a altura da " -"camada e a largura da extrusão." +"Espaçamento inválido fornecido para Flow::with_spacing(), verifique a altura " +"da camada e a largura da extrusão." msgid "undefined error" msgstr "erro indefinido" @@ -9278,9 +9466,11 @@ msgid "write callback failed" msgstr "falha na chamada de escrita" #, boost-format -msgid "%1% is too close to exclusion area, there may be collisions when printing." +msgid "" +"%1% is too close to exclusion area, there may be collisions when printing." msgstr "" -"%1% está muito perto da área de exclusão, pode haver colisões durante a impressão." +"%1% está muito perto da área de exclusão, pode haver colisões durante a " +"impressão." #, boost-format msgid "%1% is too close to others, and collisions may be caused." @@ -9295,7 +9485,8 @@ msgstr " está muito perto de outros, pode haver colisões durante a impressão. msgid " is too close to exclusion area, there may be collisions when printing." msgstr "" -" está muito perto da área de exclusão, pode haver colisões durante a impressão." +" está muito perto da área de exclusão, pode haver colisões durante a " +"impressão." msgid "Prime Tower" msgstr "Torre Prime" @@ -9308,38 +9499,41 @@ msgstr " está muito perto da área de exclusão, e ocorrerão colisões.\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" +"together. Otherwise, the extruder and nozzle may be blocked or damaged " +"during printing" msgstr "" -"Não é possível imprimir vários filamentos que têm grande diferença de temperatura " -"juntos. Caso contrário, o extrusor e a bocal podem ficar bloqueados ou danificados " -"durante a impressão" +"Não é possível imprimir vários filamentos que têm grande diferença de " +"temperatura juntos. Caso contrário, o extrusor e a bocal podem ficar " +"bloqueados ou danificados durante a impressão" msgid "No extrusions under current settings." msgstr "Nenhuma extrusão com as configurações atuais." msgid "" -"Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." +"Smooth mode of timelapse is not supported when \"by object\" sequence is " +"enabled." msgstr "" -"O modo suave do timelapse não é suportado quando a sequência \"por objeto\" está " -"ativada." +"O modo suave do timelapse não é suportado quando a sequência \"por objeto\" " +"está ativada." msgid "" -"Please select \"By object\" print sequence to print multiple objects in spiral vase " -"mode." +"Please select \"By object\" print sequence to print multiple objects in " +"spiral vase mode." msgstr "" -"Por favor, selecione a sequência de impressão \"Por objeto\" para imprimir vários " -"objetos no modo vaso espiral." +"Por favor, selecione a sequência de impressão \"Por objeto\" para imprimir " +"vários objetos no modo vaso espiral." msgid "" -"The spiral vase mode does not work when an object contains more than one materials." +"The spiral vase mode does not work when an object contains more than one " +"materials." msgstr "" -"O modo de vaso espiral não funciona quando um objeto contém mais de um material." +"O modo de vaso espiral não funciona quando um objeto contém mais de um " +"material." #, boost-format msgid "" -"While the object %1% itself fits the build volume, it exceeds the maximum build " -"volume height because of material shrinkage compensation." +"While the object %1% itself fits the build volume, it exceeds the maximum " +"build volume height because of material shrinkage compensation." msgstr "" #, boost-format @@ -9348,33 +9542,34 @@ msgstr "O objeto %1% excede a altura máxima do volume de impressão." #, boost-format msgid "" -"While the object %1% itself fits the build volume, its last layer exceeds the " -"maximum build volume height." +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." msgstr "" -"Embora o objeto %1% em si se ajuste ao volume de impressão, sua última camada excede " -"a altura máxima do volume de impressão." +"Embora o objeto %1% em si se ajuste ao volume de impressão, sua última " +"camada excede a altura máxima do volume de impressão." msgid "" -"You might want to reduce the size of your model or change current print settings and " -"retry." +"You might want to reduce the size of your model or change current print " +"settings and retry." msgstr "" -"Você pode querer reduzir o tamanho do seu modelo ou alterar as configurações de " -"impressão atuais e tentar novamente." +"Você pode querer reduzir o tamanho do seu modelo ou alterar as configurações " +"de impressão atuais e tentar novamente." msgid "Variable layer height is not supported with Organic supports." msgstr "A altura de camada variável não é suportada com suportes orgânicos." msgid "" -"Different nozzle diameters and different filament diameters may not work well when " -"the prime tower is enabled. It's very experimental, so please proceed with caution." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" msgid "" -"The Wipe Tower is currently only supported with the relative extruder addressing " -"(use_relative_e_distances=1)." +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." msgstr "" -"A Torre Prime atualmente só é suportada com o endereçamento relativo da extrusora " -"(use_relative_e_distances=1)." +"A Torre Prime atualmente só é suportada com o endereçamento relativo da " +"extrusora (use_relative_e_distances=1)." msgid "" "Ooze prevention is only supported with the wipe tower when " @@ -9385,44 +9580,48 @@ msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " "RepRapFirmware and Repetier G-code flavors." msgstr "" -"A Torre Prime atualmente só é suportada para os G-code do tipo Marlin, RepRap/" -"Sprinter, RepRapFirmware e Repetier." +"A Torre Prime atualmente só é suportada para os G-code do tipo Marlin, " +"RepRap/Sprinter, RepRapFirmware e Repetier." msgid "The prime tower is not supported in \"By object\" print." msgstr "A Torre Prime não é suportada na impressão \"Por objeto\"." msgid "" -"The prime tower is not supported when adaptive layer height is on. It requires that " -"all objects have the same layer height." +"The prime tower is not supported when adaptive layer height is on. It " +"requires that all objects have the same layer height." msgstr "" -"A Torre Prime não é suportada quando a altura de camada adaptativa está ativa. Isso " -"requer que todos os objetos tenham a mesma altura de camada." +"A Torre Prime não é suportada quando a altura de camada adaptativa está " +"ativa. Isso requer que todos os objetos tenham a mesma altura de camada." msgid "The prime tower requires \"support gap\" to be multiple of layer height" msgstr "" -"A Torre Prime requer que o \"lacuna de suporte\" seja múltiplo da altura da camada" +"A Torre Prime requer que o \"lacuna de suporte\" seja múltiplo da altura da " +"camada" msgid "The prime tower requires that all objects have the same layer heights" -msgstr "A Torre Prime requer que todos os objetos tenham as mesmas alturas de camada" +msgstr "" +"A Torre Prime requer que todos os objetos tenham as mesmas alturas de camada" msgid "" -"The prime tower requires that all objects are printed over the same number of raft " -"layers" +"The prime tower requires that all objects are printed over the same number " +"of raft layers" msgstr "" -"A Torre Prime requer que todos os objetos sejam impressos sobre o mesmo número de " -"camadas da Jangada" +"A Torre Prime requer que todos os objetos sejam impressos sobre o mesmo " +"número de camadas da Jangada" msgid "" -"The prime tower requires that all objects are sliced with the same layer heights." +"The prime tower requires that all objects are sliced with the same layer " +"heights." msgstr "" -"A Torre Prime requer que todos os objetos sejam fatiados com as mesmas alturas de " -"camada." +"A Torre Prime requer que todos os objetos sejam fatiados com as mesmas " +"alturas de camada." msgid "" -"The prime tower is only supported if all objects have the same variable layer height" +"The prime tower is only supported if all objects have the same variable " +"layer height" msgstr "" -"A Torre Prime só é suportada se todos os objetos tiverem a mesma altura de camada " -"variável" +"A Torre Prime só é suportada se todos os objetos tiverem a mesma altura de " +"camada variável" msgid "Too small line width" msgstr "Largura de linha muito pequena" @@ -9430,111 +9629,118 @@ msgstr "Largura de linha muito pequena" msgid "Too large line width" msgstr "Largura de linha muito grande" -msgid "The prime tower requires that support has the same layer height with object." -msgstr "A Torre Prime requer que o suporte tenha a mesma altura de camada do objeto." +msgid "" +"The prime tower requires that support has the same layer height with object." +msgstr "" +"A Torre Prime requer que o suporte tenha a mesma altura de camada do objeto." msgid "" "Organic support tree tip diameter must not be smaller than support material " "extrusion width." msgstr "" -"O diâmetro da ponta da árvore de suporte orgânico não deve ser menor do que a " -"largura de extrusão do material de suporte." +"O diâmetro da ponta da árvore de suporte orgânico não deve ser menor do que " +"a largura de extrusão do material de suporte." msgid "" "Organic support branch diameter must not be smaller than 2x support material " "extrusion width." msgstr "" -"O diâmetro do ramo de suporte orgânico não deve ser menor do que 2x a largura de " -"extrusão do material de suporte." +"O diâmetro do ramo de suporte orgânico não deve ser menor do que 2x a " +"largura de extrusão do material de suporte." msgid "" -"Organic support branch diameter must not be smaller than support tree tip diameter." +"Organic support branch diameter must not be smaller than support tree tip " +"diameter." msgstr "" -"O diâmetro do ramo de suporte orgânico não deve ser menor do que o diâmetro da ponta " -"da árvore de suporte." +"O diâmetro do ramo de suporte orgânico não deve ser menor do que o diâmetro " +"da ponta da árvore de suporte." -msgid "Support enforcers are used but support is not enabled. Please enable support." +msgid "" +"Support enforcers are used but support is not enabled. Please enable support." msgstr "" -"Os reforços de suporte são usados, mas o suporte não está habilitado. Por favor, " -"habilite o suporte." +"Os reforços de suporte são usados, mas o suporte não está habilitado. Por " +"favor, habilite o suporte." msgid "Layer height cannot exceed nozzle diameter" msgstr "A altura da camada não pode exceder o diâmetro da bocal" 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." +"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 "" -"O endereçamento relativo do extrusor requer a reinicialização da posição do extrusor " -"em cada camada para evitar perda de precisão de ponto flutuante. Adicione \"G92 E0\" " -"ao código de camada." +"O endereçamento relativo do extrusor requer a reinicialização da posição do " +"extrusor em cada camada para evitar perda de precisão de ponto flutuante. " +"Adicione \"G92 E0\" ao código de camada." msgid "" -"\"G92 E0\" was found in before_layer_gcode, which is incompatible with absolute " -"extruder addressing." +"\"G92 E0\" was found in before_layer_gcode, which is incompatible with " +"absolute extruder addressing." msgstr "" "\"G92 E0\" foi encontrado em before_layer_gcode, o que é incompatível com o " "endereçamento absoluto do extrusor." msgid "" -"\"G92 E0\" was found in layer_gcode, which is incompatible with absolute extruder " -"addressing." +"\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " +"extruder addressing." msgstr "" -"\"G92 E0\" foi encontrado em layer_gcode, o que é incompatível com o endereçamento " -"absoluto do extrusor." +"\"G92 E0\" foi encontrado em layer_gcode, o que é incompatível com o " +"endereçamento absoluto do extrusor." #, c-format, boost-format msgid "Plate %d: %s does not support filament %s" msgstr "Mesa %d: %s não suporta filamento %s" -msgid "Setting the jerk speed too low could lead to artifacts on curved surfaces" +msgid "" +"Setting the jerk speed too low could lead to artifacts on curved surfaces" msgstr "" -"Definir a velocidade de jerk muito baixa pode levar a artefatos em superfícies curvas" +"Definir a velocidade de jerk muito baixa pode levar a artefatos em " +"superfícies curvas" msgid "" "The jerk setting exceeds the printer's maximum jerk (machine_max_jerk_x/" "machine_max_jerk_y).\n" "Orca will automatically cap the jerk speed to ensure it doesn't surpass the " "printer's capabilities.\n" -"You can adjust the maximum jerk setting in your printer's configuration to get " -"higher speeds." +"You can adjust the maximum jerk setting in your printer's configuration to " +"get higher speeds." msgstr "" -"A configuração de jerk excede o jerk máximo da impressora (machine_max_jerk_x/" -"machine_max_jerk_y).\n" -"Orca automaticamente limitará a velocidade do jerk para garantir que não ultrapasse " -"as capacidades da impressora.\n" -"Você pode ajustar a configuração de jerk máximo na configuração da sua impressora " -"para obter velocidades mais altas." +"A configuração de jerk excede o jerk máximo da impressora " +"(machine_max_jerk_x/machine_max_jerk_y).\n" +"Orca automaticamente limitará a velocidade do jerk para garantir que não " +"ultrapasse as capacidades da impressora.\n" +"Você pode ajustar a configuração de jerk máximo na configuração da sua " +"impressora para obter velocidades mais altas." msgid "" "The acceleration setting exceeds the printer's maximum acceleration " "(machine_max_acceleration_extruding).\n" -"Orca will automatically cap the acceleration speed to ensure it doesn't surpass the " -"printer's capabilities.\n" -"You can adjust the machine_max_acceleration_extruding value in your printer's " -"configuration to get higher speeds." +"Orca will automatically cap the acceleration speed to ensure it doesn't " +"surpass the printer's capabilities.\n" +"You can adjust the machine_max_acceleration_extruding value in your " +"printer's configuration to get higher speeds." msgstr "" "A configuração de aceleração excede a aceleração máxima da impressora " "(machine_max_acceleration_extruding).\n" -"Orca automaticamente limitará a velocidade de aceleração para garantir que não " -"ultrapasse as capacidades da impressora.\n" -"Você pode ajustar o valor de machine_max_acceleration_extruding na configuração da " -"sua impressora para obter velocidades mais altas." +"Orca automaticamente limitará a velocidade de aceleração para garantir que " +"não ultrapasse as capacidades da impressora.\n" +"Você pode ajustar o valor de machine_max_acceleration_extruding na " +"configuração da sua impressora para obter velocidades mais altas." msgid "" -"The travel acceleration setting exceeds the printer's maximum travel acceleration " -"(machine_max_acceleration_travel).\n" -"Orca will automatically cap the travel acceleration speed to ensure it doesn't " -"surpass the printer's capabilities.\n" +"The travel acceleration setting exceeds the printer's maximum travel " +"acceleration (machine_max_acceleration_travel).\n" +"Orca will automatically cap the travel acceleration speed to ensure it " +"doesn't surpass the printer's capabilities.\n" "You can adjust the machine_max_acceleration_travel value in your printer's " "configuration to get higher speeds." msgstr "" "A configuração de aceleração de deslocamento excede a aceleração máxima de " "deslocamento da impressora (machine_max_acceleration_travel).\n" -"O Orca irá automaticamente limitar a velocidade de aceleração de deslocamento para " -"garantir que não ultrapasse as capacidades da impressora.\n" -"Você pode ajustar o valor de machine_max_acceleration_travel na configuração da sua " -"impressora para obter velocidades mais altas." +"O Orca irá automaticamente limitar a velocidade de aceleração de " +"deslocamento para garantir que não ultrapasse as capacidades da impressora.\n" +"Você pode ajustar o valor de machine_max_acceleration_travel na configuração " +"da sua impressora para obter velocidades mais altas." msgid "" "Filament shrinkage will not be used because filament shrinkage for the used " @@ -9560,13 +9766,14 @@ msgid "Bed exclude area" msgstr "Área de exclusão da mesa" 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, ...\"" +"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 "" -"Área não imprimível no plano XY. Por exemplo, impressoras da série X1 usam o canto " -"esquerdo frontal para cortar o filamento durante a troca de filamento. A área é " -"expressa como um polígono por pontos no seguinte formato: \"XxY, XxY, ...\"" +"Área não imprimível no plano XY. Por exemplo, impressoras da série X1 usam o " +"canto esquerdo frontal para cortar o filamento durante a troca de filamento. " +"A área é expressa como um polígono por pontos no seguinte formato: \"XxY, " +"XxY, ...\"" msgid "Bed custom texture" msgstr "Textura personalizada da mesa" @@ -9577,27 +9784,32 @@ msgstr "Modelo personalizado da mesa" msgid "Elephant foot compensation" msgstr "Compensação de pé de elefante" -msgid "Shrink the initial layer on build plate to compensate for elephant foot effect" -msgstr "Reduza a primeira camada na mesa para compensar o efeito de pé de elefante" +msgid "" +"Shrink the initial layer on build plate to compensate for elephant foot " +"effect" +msgstr "" +"Reduza a primeira camada na mesa para compensar o efeito de pé de elefante" msgid "Elephant foot compensation layers" msgstr "Camadas de compensação de pé de elefante" 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." +"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 "" -"O número de camadas em que a compensação de pé de elefante estará ativa. A primeira " -"camada será reduzida pelo valor de compensação de pé de elefante, e então as " -"próximas camadas serão reduzidas linearmente, até a camada indicada por este valor." +"O número de camadas em que a compensação de pé de elefante estará ativa. A " +"primeira camada será reduzida pelo valor de compensação de pé de elefante, e " +"então as próximas camadas serão reduzidas linearmente, até a camada indicada " +"por este valor." msgid "layers" msgstr "camadas" msgid "" -"Slicing height for each layer. Smaller layer height means more accurate and more " -"printing time" +"Slicing height for each layer. Smaller layer height means more accurate and " +"more printing time" msgstr "" "Altura de fatiamento para cada camada. Altura de camada menor significa mais " "precisão e mais tempo de impressão" @@ -9613,7 +9825,8 @@ msgstr "Orientação preferida" msgid "Automatically orient stls on the Z-axis upon initial import" msgstr "" -"Orientar automaticamente os arquivos STL no eixo Z durante a importação inicial" +"Orientar automaticamente os arquivos STL no eixo Z durante a importação " +"inicial" msgid "Printer preset names" msgstr "Nomes de presets da impressora" @@ -9630,34 +9843,36 @@ msgid "Hostname, IP or URL" msgstr "Nome do host, IP ou URL" msgid "" -"Orca Slicer 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/" +"Orca Slicer 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 "" -"O Orca Slicer pode enviar arquivos G-code para um host de impressora. Este campo " -"deve conter o nome do host, o endereço IP ou a URL da instância do host de " -"impressora. O host de impressão atrás do HAProxy com autenticação básica ativada " -"pode ser acessado colocando o nome de usuário e senha na URL no seguinte formato: " -"https://username:password@your-octopi-address/" +"O Orca Slicer pode enviar arquivos G-code para um host de impressora. Este " +"campo deve conter o nome do host, o endereço IP ou a URL da instância do " +"host de impressora. O host de impressão atrás do HAProxy com autenticação " +"básica ativada pode ser acessado colocando o nome de usuário e senha na URL " +"no seguinte formato: https://username:password@your-octopi-address/" msgid "Device UI" msgstr "Interface do dispositivo" -msgid "Specify the URL of your device user interface if it's not same as print_host" +msgid "" +"Specify the URL of your device user interface if it's not same as print_host" msgstr "" -"Especifique a URL da interface do usuário do seu dispositivo se não for a mesma do " -"print_host" +"Especifique a URL da interface do usuário do seu dispositivo se não for a " +"mesma do print_host" msgid "API Key / Password" msgstr "Chave da API / Senha" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain the " -"API Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the API Key or the password required for authentication." msgstr "" -"O Orca Slicer pode enviar arquivos G-code para um host de impressora. Este campo " -"deve conter a Chave da API ou a senha necessária para autenticação." +"O Orca Slicer pode enviar arquivos G-code para um host de impressora. Este " +"campo deve conter a Chave da API ou a senha necessária para autenticação." msgid "Name of the printer" msgstr "Nome da impressora" @@ -9666,12 +9881,13 @@ msgid "HTTPS CA File" msgstr "Arquivo CA 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." +"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 "" -"O arquivo de certificado CA personalizado pode ser especificado para conexões HTTPS " -"OctoPrint, no formato crt/pem. Se deixado em branco, o repositório de certificados " -"CA padrão do sistema operacional é usado." +"O arquivo de certificado CA personalizado pode ser especificado para " +"conexões HTTPS OctoPrint, no formato crt/pem. Se deixado em branco, o " +"repositório de certificados CA padrão do sistema operacional é usado." msgid "User" msgstr "Usuário" @@ -9684,8 +9900,8 @@ msgstr "Ignorar verificações de revogação de certificado 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." +"distribution points. One may want to enable this option for self signed " +"certificates if connection fails." msgstr "" "Ignorar verificações de revogação de certificado HTTPS em caso de pontos de " "distribuição ausentes ou offline. Pode-se querer habilitar esta opção para " @@ -9715,15 +9931,15 @@ msgid "Avoid crossing wall - Max detour length" msgstr "Evitar perímetros - Distância máximo do desvio" 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" +"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 "" -"Distância máxima de desvio para evitar atravessar o perímetro. Não desviar se a " -"distância de desvio for maior que esse valor. A distancia do desvio pode ser " -"especificada como um valor absoluto ou como porcentagem (por exemplo, 50%) de um " -"caminho de deslocamento direto. Zero para desativar" +"Distância máxima de desvio para evitar atravessar o perímetro. Não desviar " +"se a distância de desvio for maior que esse valor. A distancia do desvio " +"pode ser especificada como um valor absoluto ou como porcentagem (por " +"exemplo, 50%) de um caminho de deslocamento direto. Zero para desativar" msgid "mm or %" msgstr "mm ou %" @@ -9732,8 +9948,8 @@ msgid "Other layers" msgstr "Outras camadas" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament does " -"not support to print on the Cool Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Cool Plate" msgstr "" "Temperatura da mesa para camadas exceto a inicial. O valor 0 significa que o " "filamento não suporta a impressão na Cool Plate (Mesa Fria)" @@ -9742,27 +9958,27 @@ 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 Textured Cool Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured Cool Plate" msgstr "" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament does " -"not support to print on the Engineering Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Engineering Plate" msgstr "" "Temperatura da mesa para camadas exceto a inicial. O valor 0 significa que o " "filamento não suporta a impressão no Engenharia Plate" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament does " -"not support to print on the High Temp Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the High Temp Plate" msgstr "" "Temperatura da mesa para camadas exceto a inicial. O valor 0 significa que o " "filamento não suporta a impressão no Plate de Alta Temperatura" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament does " -"not support to print on the Textured PEI Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" msgstr "" "Temperatura da mesa para camadas exceto a inicial. O valor 0 significa que o " "filamento não suporta a impressão no Plate de PEI Texturizado" @@ -9774,42 +9990,42 @@ msgid "Initial layer bed temperature" msgstr "Temperatura da mesa da primeira camada" msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not support to " -"print on the Cool Plate SuperTack" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Cool Plate SuperTack" msgstr "" msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not support to " -"print on the Cool Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Cool Plate" msgstr "" -"Temperatura da mesa na primeira camada. O valor 0 significa que o filamento não " -"suporta a impressão na Cool Plate (Mesa Fria)" +"Temperatura da mesa na primeira camada. O valor 0 significa que o filamento " +"não suporta a impressão na Cool Plate (Mesa Fria)" msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not support to " -"print on the Textured Cool Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Textured Cool Plate" msgstr "" msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not support to " -"print on the Engineering Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Engineering Plate" msgstr "" -"Temperatura da mesa na primeira camada. O valor 0 significa que o filamento não " -"suporta a impressão no Engenharia Plate" +"Temperatura da mesa na primeira camada. O valor 0 significa que o filamento " +"não suporta a impressão no Engenharia Plate" msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not support to " -"print on the High Temp Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the High Temp Plate" msgstr "" -"Temperatura da mesa na primeira camada. O valor 0 significa que o filamento não " -"suporta a impressão no Plate de Alta Temperatura" +"Temperatura da mesa na primeira camada. O valor 0 significa que o filamento " +"não suporta a impressão no Plate de Alta Temperatura" msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not support to " -"print on the Textured PEI Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Textured PEI Plate" msgstr "" -"Temperatura da mesa na primeira camada. O valor 0 significa que o filamento não " -"suporta a impressão no Plate de PEI Texturizado" +"Temperatura da mesa na primeira camada. O valor 0 significa que o filamento " +"não suporta a impressão no Plate de PEI Texturizado" msgid "Bed types supported by the printer" msgstr "Tipos de mesa suportadas pela impressora" @@ -9845,56 +10061,59 @@ msgid "Bottom shell layers" msgstr "Camadas de base" 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" +"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 "" -"Este é o número de camadas sólidas da base, incluindo a primeira camada. Quando a " -"espessura calculada por este valor for mais fina do que a espessura da base, o " -"número das camadas da base serão aumentadas" +"Este é o número de camadas sólidas da base, incluindo a primeira camada. " +"Quando a espessura calculada por este valor for mais fina do que a espessura " +"da base, o número das camadas da base serão aumentadas" msgid "Bottom shell thickness" msgstr "Espessura da base" 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 determined by bottom shell layers" +"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 determined by bottom " +"shell layers" msgstr "" -"O número de camadas sólidas da base é aumentado ao fatiar se a espessura calculada " -"pelas camadas da base for mais fina do que este valor. Isso pode evitar que a base " -"seja muito fina quando a altura da camada é pequena. 0 significa que esta " -"configuração está desativada e a espessura da base é absolutamente determinada pelas " -"camadas da base" +"O número de camadas sólidas da base é aumentado ao fatiar se a espessura " +"calculada pelas camadas da base for mais fina do que este valor. Isso pode " +"evitar que a base seja muito fina quando a altura da camada é pequena. 0 " +"significa que esta configuração está desativada e a espessura da base é " +"absolutamente determinada pelas camadas da base" msgid "Apply gap fill" msgstr "Preenchimento de vão" msgid "" -"Enables gap fill for the selected solid surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces for " -"maximum strength\n" -"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces only, " -"balancing print speed, reducing potential over extrusion in the solid infill and " -"making sure the top and bottom surfaces have no pin hole gaps\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" +"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" "3. Nowhere: Disables gap fill for all solid infill areas. \n" "\n" -"Note that if using the classic perimeter generator, gap fill may also be generated " -"between perimeters, if a full width line cannot fit between them. That perimeter gap " -"fill is not controlled by this setting. \n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" "\n" -"If you would like all gap fill, including the classic perimeter generated one, " -"removed, set the filter out tiny gaps value to a large number, like 999999. \n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" "\n" -"However this is not advised, as gap fill between perimeters is contributing to the " -"model's strength. For models where excessive gap fill is generated between " -"perimeters, a better option would be to switch to the arachne wall generator and use " -"this option to control whether the cosmetic top and bottom surface gap fill is " -"generated" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" msgstr "" msgid "Everywhere" @@ -9911,22 +10130,24 @@ msgstr "" msgid "" "Enable this option to allow adjustment of the part cooling fan speed for " -"specifically for overhangs, internal and external bridges. Setting the fan speed " -"specifically for these features can improve overall print quality and reduce warping." +"specifically for overhangs, internal and external bridges. Setting the fan " +"speed specifically for these features can improve overall print quality and " +"reduce warping." msgstr "" msgid "Overhangs and external bridges fan speed" msgstr "" msgid "" -"Use this part cooling fan speed when printing bridges or overhang walls with an " -"overhang threshold that exceeds the value set in the 'Overhangs cooling threshold' " -"parameter above. Increasing the cooling specifically for overhangs and bridges can " -"improve the overall print quality of these features.\n" +"Use this part cooling fan speed when printing bridges or overhang walls with " +"an overhang threshold that exceeds the value set in the 'Overhangs cooling " +"threshold' parameter above. Increasing the cooling specifically for " +"overhangs and bridges can improve the overall print quality of these " +"features.\n" "\n" -"Please note, this fan speed is clamped on the lower end by the minimum fan speed " -"threshold set above. It is also adjusted upwards up to the maximum fan speed " -"threshold when the minimum layer time threshold is not met." +"Please note, this fan speed is clamped on the lower end by the minimum fan " +"speed threshold set above. It is also adjusted upwards up to the maximum fan " +"speed threshold when the minimum layer time threshold is not met." msgstr "" msgid "Overhang cooling activation threshold" @@ -9934,69 +10155,71 @@ msgstr "" #, c-format, boost-format msgid "" -"When the overhang exceeds this specified threshold, force the cooling fan to run at " -"the 'Overhang Fan Speed' set below. This threshold is expressed as a percentage, " -"indicating the portion of each line's width that is unsupported by the layer beneath " -"it. Setting this value to 0% forces the cooling fan to run for all outer walls, " -"regardless of the overhang degree." +"When the overhang exceeds this specified threshold, force the cooling fan to " +"run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " +"percentage, indicating the portion of each line's width that is unsupported " +"by the layer beneath it. Setting this value to 0% forces the cooling fan to " +"run for all outer walls, regardless of the overhang degree." msgstr "" msgid "External 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." +"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 "" "Substituição de ângulo de ponte. Se deixado em zero, o ângulo de ponte será " -"calculado automaticamente. Caso contrário, o ângulo fornecido será usado para pontes " -"externas. Use 180° para ângulo zero." +"calculado automaticamente. Caso contrário, o ângulo fornecido será usado " +"para pontes externas. Use 180° para ângulo zero." msgid "Internal bridge infill direction" msgstr "" msgid "" -"Internal bridging angle override. If left to zero, the bridging angle will be " -"calculated automatically. Otherwise the provided angle will be used for internal " -"bridges. Use 180°for zero angle.\n" +"Internal bridging angle override. If left to zero, the bridging angle will " +"be calculated automatically. Otherwise the provided angle will be used for " +"internal bridges. Use 180°for zero angle.\n" "\n" -"It is recommended to leave it at 0 unless there is a specific model need not to." +"It is recommended to leave it at 0 unless there is a specific model need not " +"to." msgstr "" msgid "External bridge density" msgstr "" msgid "" -"Controls the density (spacing) of external bridge lines. 100% means solid bridge. " -"Default is 100%.\n" +"Controls the density (spacing) of external bridge lines. 100% means solid " +"bridge. Default is 100%.\n" "\n" -"Lower density external bridges can help improve reliability as there is more space " -"for air to circulate around the extruded bridge, improving its cooling speed." +"Lower density external bridges can help improve reliability as there is more " +"space for air to circulate around the extruded bridge, improving its cooling " +"speed." msgstr "" msgid "Internal bridge density" msgstr "" msgid "" -"Controls the density (spacing) of internal bridge lines. 100% means solid bridge. " -"Default is 100%.\n" +"Controls the density (spacing) of internal bridge lines. 100% means solid " +"bridge. Default is 100%.\n" "\n" -" Lower density internal bridges can help reduce top surface pillowing and improve " -"internal bridge reliability as there is more space for air to circulate around the " -"extruded bridge, improving its cooling speed. \n" +" Lower density internal bridges can help reduce top surface pillowing and " +"improve internal bridge reliability as there is more space for air to " +"circulate around the extruded bridge, improving its cooling speed. \n" "\n" -"This option works particularly well when combined with the second internal bridge " -"over infill option, further improving internal bridging structure before solid " -"infill is extruded." +"This option works particularly well when combined with the second internal " +"bridge over infill option, further improving internal bridging structure " +"before solid infill is extruded." msgstr "" msgid "Bridge flow ratio" msgstr "Fluxo em ponte" msgid "" -"Decrease this value slightly(for example 0.9) to reduce the amount of material for " -"bridge, to improve sag. \n" +"Decrease this value slightly(for example 0.9) to reduce the amount of " +"material for bridge, to improve sag. \n" "\n" "The actual bridge flow used is calculated by multiplying this value with the " "filament flow ratio, and if set, the object's flow ratio." @@ -10006,23 +10229,24 @@ msgid "Internal bridge flow ratio" msgstr "Fluxo em ponte interna" 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.\n" +"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.\n" "\n" -"The actual internal bridge flow used is calculated by multiplying this value with " -"the bridge flow ratio, the filament flow ratio, and if set, the object's flow ratio." +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" msgid "Top surface flow ratio" msgstr "Fluxo em superfície superior" msgid "" -"This factor affects the amount of material for top solid infill. You can decrease it " -"slightly to have smooth surface finish. \n" +"This factor affects the amount of material for top solid infill. You can " +"decrease it slightly to have smooth surface finish. \n" "\n" -"The actual top surface flow used is calculated by multiplying this value with the " -"filament flow ratio, and if set, the object's flow ratio." +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." msgstr "" msgid "Bottom surface flow ratio" @@ -10031,67 +10255,71 @@ msgstr "Fluxo em superfície inferior" msgid "" "This factor affects the amount of material for bottom solid infill. \n" "\n" -"The actual bottom solid infill flow used is calculated by multiplying this value " -"with the filament flow ratio, and if set, the object's flow ratio." +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" msgid "Precise wall" msgstr "Parede precisa" msgid "" -"Improve shell precision by adjusting outer wall spacing. This also improves layer " -"consistency." +"Improve shell precision by adjusting outer wall spacing. This also improves " +"layer consistency." msgstr "" msgid "Only one wall on top surfaces" msgstr "Perímetro único em superfícies superiores" msgid "" -"Use only one wall on flat top surface, to give more space to the top infill pattern" +"Use only one wall on flat top surface, to give more space to the top infill " +"pattern" msgstr "" -"Use apenas um perímetro em superfície superior, para dar mais espaço ao padrão de " -"preenchimento superior" +"Use apenas um perímetro em superfície superior, para dar mais espaço ao " +"padrão de preenchimento superior" msgid "One wall threshold" msgstr "Limite de perímetro único" #, no-c-format, no-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 if 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 if you have some thin features " +"on the next layer, like letters. Set this setting to 0 to remove these " +"artifacts." msgstr "" -"Se uma superfície superior tiver que ser impressa e estiver parcialmente coberta por " -"outra camada, ela não será considerada em uma camada superior onde sua largura " -"estiver abaixo deste valor. Isso pode ser útil para não permitir que o 'um perímetro " -"no topo' seja ativado em uma superfície que deve ser coberta apenas por perímetros. " -"Este valor pode ser em mm ou % da largura de extrusão do perímetro.\n" +"Se uma superfície superior tiver que ser impressa e estiver parcialmente " +"coberta por outra camada, ela não será considerada em uma camada superior " +"onde sua largura estiver abaixo deste valor. Isso pode ser útil para não " +"permitir que o 'um perímetro no topo' seja ativado em uma superfície que " +"deve ser coberta apenas por perímetros. Este valor pode ser em mm ou % da " +"largura de extrusão do perímetro.\n" "Aviso: Se habilitado, artefatos podem ser criados se você tiver algumas " -"características finas na próxima camada, como letras. Defina esta configuração para " -"0 para remover esses artefatos." +"características finas na próxima camada, como letras. Defina esta " +"configuração para 0 para remover esses artefatos." msgid "Only one wall on first layer" msgstr "Perímetro único na primeira camada" msgid "" -"Use only one wall on first layer, to give more space to the bottom infill pattern" +"Use only one wall on first layer, to give more space to the bottom infill " +"pattern" msgstr "" -"Use apenas um perímetro na primeira camada, para dar mais espaço ao padrão de " -"preenchimento inferior" +"Use apenas um perímetro na primeira camada, para dar mais espaço ao padrão " +"de preenchimento inferior" msgid "Extra perimeters on overhangs" msgstr "Perímetros extras em overhangs" msgid "" -"Create additional perimeter paths over steep overhangs and areas where bridges " -"cannot be anchored. " +"Create additional perimeter paths over steep overhangs and areas where " +"bridges cannot be anchored. " msgstr "" -"Crie caminhos de perímetro adicionais em overhangs íngremes e áreas onde pontes não " -"podem ser ancoradas. " +"Crie caminhos de perímetro adicionais em overhangs íngremes e áreas onde " +"pontes não podem ser ancoradas. " msgid "Reverse on even" msgstr "" @@ -10100,11 +10328,12 @@ msgid "Overhang reversal" msgstr "Reversão de suspensão" msgid "" -"Extrude perimeters that have a part over an overhang in the reverse direction on " -"even layers. This alternating pattern can drastically improve steep overhangs.\n" +"Extrude perimeters that have a part over an overhang in the reverse " +"direction on even 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." +"This setting can also help reduce part warping due to the reduction of " +"stresses in the part walls." msgstr "" msgid "Reverse only internal perimeters" @@ -10114,30 +10343,32 @@ 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" +"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 recommended to set the Reverse " -"Threshold to 0 so that all internal walls print in alternating directions on even " -"layers irrespective of their overhang degree." +"For this setting to be the most effective, it is recommended to set the " +"Reverse Threshold to 0 so that all internal walls print in alternating " +"directions on even layers irrespective of their overhang degree." msgstr "" msgid "Bridge counterbore holes" msgstr "Pontes para furos rebaixados" msgid "" -"This option creates bridges for counterbore holes, allowing them to be printed " -"without support. Available modes include:\n" +"This option creates bridges for counterbore holes, allowing them to be " +"printed without support. Available modes include:\n" "1. None: No bridge is created.\n" "2. Partially Bridged: Only a part of the unsupported area will be bridged.\n" "3. Sacrificial Layer: A full sacrificial bridge layer is created." msgstr "" -"Esta opção cria pontes para furos rebaixados, permitindo que sejam impressos sem " -"suporte. Os modos disponíveis incluem:\n" +"Esta opção cria pontes para furos rebaixados, permitindo que sejam impressos " +"sem suporte. Os modos disponíveis incluem:\n" "1. Nenhum: Nenhuma ponte é criada.\n" -"2. Parcialmente Ponteada: Apenas uma parte da área não suportada será ponteada.\n" +"2. Parcialmente Ponteada: Apenas uma parte da área não suportada será " +"ponteada.\n" "3. Camada Sacrificial: Uma camada completa de ponte sacrificial é criada." msgid "Partially bridged" @@ -10154,11 +10385,11 @@ msgstr "Limiar de inversão de overhang" #, no-c-format, no-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" +"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 even layers regardless.\n" -"When Detect overhang wall is not enabled, this option is ignored and reversal " -"happens on every even layers regardless." +"When Detect overhang wall is not enabled, this option is ignored and " +"reversal happens on every even layers regardless." msgstr "" msgid "Classic mode" @@ -10172,29 +10403,31 @@ msgstr "Reduzir velocidade em overhangs" msgid "Enable this option to slow printing down for different overhang degree" msgstr "" -"Ative esta opção para diminuir a velocidade de impressão em diferentes graus de " -"inclinação" +"Ative esta opção para diminuir a velocidade de impressão em diferentes graus " +"de inclinação" msgid "Slow down for curled perimeters" msgstr "Reduzir vel. para perímetros encurvados" #, no-c-format, no-boost-format msgid "" -"Enable this option to slow down printing in areas where perimeters may have curled " -"upwards.For example, additional slowdown will be applied when printing overhangs on " -"sharp corners like the front of the Benchy hull, reducing curling which compounds " -"over multiple layers.\n" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" "\n" -" It is generally recommended to have this option switched on unless your printer " -"cooling is powerful enough or the print speed slow enough that perimeter curling " -"does not happen. If printing with a high external perimeter speed, this parameter " -"may introduce slight artifacts when slowing down due to the large variance in print " -"speeds. If you notice artifacts, ensure your pressure advance is tuned correctly.\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" "\n" -"Note: When this option is enabled, overhang perimeters are treated like overhangs, " -"meaning the overhang speed is applied even if the overhanging perimeter is part of a " -"bridge. For example, when the perimeters are 100% overhanging, with no wall " -"supporting them from underneath, the 100% overhang speed will be applied." +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are 100% " +"overhanging, with no wall supporting them from underneath, the 100% overhang " +"speed will be applied." msgstr "" msgid "mm/s or %" @@ -10206,9 +10439,10 @@ msgstr "Externo" msgid "" "Speed of the externally visible bridge extrusions. \n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode " -"is enabled, it will be the print speed of overhang walls that are supported by less " -"than 13%, whether they are part of a bridge or an overhang." +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." msgstr "" msgid "mm/s" @@ -10218,8 +10452,8 @@ msgid "Internal" msgstr "Interno" msgid "" -"Speed of internal bridges. If the value is expressed as a percentage, it will be " -"calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" msgid "Brim width" @@ -10232,20 +10466,25 @@ msgid "Brim type" msgstr "Tipo de borda" msgid "" -"This controls the generation of the brim at outer and/or inner side of models. Auto " -"means the brim width is analyzed and calculated automatically." +"This controls the generation of the brim at outer and/or inner side of " +"models. Auto means the brim width is analyzed and calculated automatically." msgstr "" "Isso controla a geração da borda no lado externo e/ou interno dos modelos. " -"Automático significa que a largura da borda é analisada e calculada automaticamente." +"Automático significa que a largura da borda é analisada e calculada " +"automaticamente." + +msgid "Painted" +msgstr "" msgid "Brim-object gap" msgstr "Espaço entre a borda e objeto" msgid "" -"A gap between innermost brim line and object can make brim be removed more easily" +"A gap between innermost brim line and object can make brim be removed more " +"easily" msgstr "" -"Um espaço entre a linha da borda mais interna e o objeto pode facilitar a remoção da " -"borda" +"Um espaço entre a linha da borda mais interna e o objeto pode facilitar a " +"remoção da borda" msgid "Brim ears" msgstr "Orelhas da borda" @@ -10273,8 +10512,8 @@ msgid "" "indicates the minimum length of the deviation for the decimation.\n" "0 to deactivate" msgstr "" -"A geometria será decimada antes de detectar ângulos agudos. Este parâmetro indica o " -"comprimento mínimo da divergência para a decimação.\n" +"A geometria será decimada antes de detectar ângulos agudos. Este parâmetro " +"indica o comprimento mínimo da divergência para a decimação.\n" "0 para desativar" msgid "Compatible machine" @@ -10287,9 +10526,9 @@ msgid "Compatible machine condition" msgstr "Condição de máquina compatível" msgid "" -"A boolean expression using the configuration values of an active printer profile. If " -"this expression evaluates to true, this profile is considered compatible with the " -"active printer profile." +"A boolean expression using the configuration values of an active printer " +"profile. If this expression evaluates to true, this profile is considered " +"compatible with the active printer profile." msgstr "" msgid "Compatible process profiles" @@ -10299,9 +10538,9 @@ msgid "Compatible process profiles condition" msgstr "Condição de perfis de processo compatíveis" msgid "" -"A boolean expression using the configuration values of an active print profile. If " -"this expression evaluates to true, this profile is considered compatible with the " -"active print profile." +"A boolean expression using the configuration values of an active print " +"profile. If this expression evaluates to true, this profile is considered " +"compatible with the active print profile." msgstr "" msgid "Print sequence, layer by layer or object by object" @@ -10326,24 +10565,26 @@ msgid "Slow printing down for better layer cooling" msgstr "Diminuir a velocidade de impressão para melhor resfriamento de camada" 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" +"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 "" -"Ative esta opção para diminuir a velocidade de impressão para que o tempo da camada " -"final não seja menor do que o limite de tempo da camada em \"Limiar de velocidade " -"máxima do ventilador\", para que a camada possa ser resfriada por mais tempo. Isso " -"pode melhorar a qualidade de resfriamento para detalhes pequenos" +"Ative esta opção para diminuir a velocidade de impressão para que o tempo da " +"camada final não seja menor do que o limite de tempo da camada em \"Limiar " +"de velocidade máxima do ventilador\", para que a camada possa ser resfriada " +"por mais tempo. Isso pode melhorar a qualidade de resfriamento para detalhes " +"pequenos" msgid "Normal printing" msgstr "Impressão normal" msgid "" -"The default acceleration of both normal printing and travel except initial layer" +"The default acceleration of both normal printing and travel except initial " +"layer" msgstr "" -"A aceleração padrão tanto para a impressão normal quanto para o movimento, exceto na " -"primeira camada" +"A aceleração padrão tanto para a impressão normal quanto para o movimento, " +"exceto na primeira camada" msgid "mm/s²" msgstr "mm/s²" @@ -10364,14 +10605,15 @@ msgid "Activate air filtration" msgstr "Ativar filtragem de ar" msgid "Activate for better air filtration. G-code command: M106 P3 S(0-255)" -msgstr "Ative para uma melhor filtragem de ar. Comando G-code: M106 P3 S(0-255)" +msgstr "" +"Ative para uma melhor filtragem de ar. Comando G-code: M106 P3 S(0-255)" msgid "Fan speed" msgstr "Velocidade do ventilador" msgid "" -"Speed of exhaust fan during printing.This speed will overwrite the speed in filament " -"custom gcode" +"Speed of exhaust fan during printing.This speed will overwrite the speed in " +"filament custom gcode" msgstr "" "Velocidade do ventilador de exaustão durante a impressão. Esta velocidade " "substituirá a velocidade no gcode personalizado do filamento" @@ -10383,78 +10625,83 @@ msgid "No cooling for the first" msgstr "Sem resfriamento para as primeiras" 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" +"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 "" -"Feche todos os ventiladores de resfriamento para as primeiras camadas. O ventilador " -"de resfriamento da primeira camada costuma ser desligado para obter uma melhor " -"adesão à mesa" +"Feche todos os ventiladores de resfriamento para as primeiras camadas. O " +"ventilador de resfriamento da primeira camada costuma ser desligado para " +"obter uma melhor adesão à mesa" msgid "Don't support bridges" msgstr "Não suportar pontes" 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" +"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 "" -"Não suportar toda a área da ponte que faz com que o suporte seja muito grande. Ponte " -"geralmente pode ser impressa diretamente sem suporte se não for muito longa" +"Não suportar toda a área da ponte que faz com que o suporte seja muito " +"grande. Ponte geralmente pode ser impressa diretamente sem suporte se não " +"for muito longa" msgid "Thick external 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." +"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 "" -"Se ativado, as pontes são mais confiáveis, podem cobrir distâncias maiores, mas " -"podem parecer piores. Se desativado, as pontes ficam melhores, mas são confiáveis " -"apenas para distâncias de ponte mais curtas." +"Se ativado, as pontes são mais confiáveis, podem cobrir distâncias maiores, " +"mas podem parecer piores. Se desativado, as pontes ficam melhores, mas são " +"confiáveis apenas para distâncias de ponte mais curtas." msgid "Thick internal bridges" msgstr "Ponte interna grossa" 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." +"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 "" -"Se ativado, serão usadas pontes internas grossas. Geralmente é recomendado ter este " -"recurso ativado. No entanto, considere desativá-lo se estiver usando bocais grandes." +"Se ativado, serão usadas pontes internas grossas. Geralmente é recomendado " +"ter este recurso ativado. No entanto, considere desativá-lo se estiver " +"usando bocais grandes." msgid "Extra bridge layers (beta)" msgstr "Camadas extra de ponte (beta)" msgid "" -"This option enables the generation of an extra bridge layer over internal and/or " -"external bridges.\n" +"This option enables the generation of an extra bridge layer over internal " +"and/or external bridges.\n" "\n" -"Extra bridge layers help improve bridge appearance and reliability, as the solid " -"infill is better supported. This is especially useful in fast printers, where the " -"bridge and solid infill speeds vary greatly. The extra bridge layer results in " -"reduced pillowing on top surfaces, as well as reduced separation of the external " -"bridge layer from its surrounding perimeters.\n" +"Extra bridge layers help improve bridge appearance and reliability, as the " +"solid infill is better supported. This is especially useful in fast " +"printers, where the bridge and solid infill speeds vary greatly. The extra " +"bridge layer results in reduced pillowing on top surfaces, as well as " +"reduced separation of the external bridge layer from its surrounding " +"perimeters.\n" "\n" -"It is generally recommended to set this to at least 'External bridge only', unless " -"specific issues with the sliced model are found.\n" +"It is generally recommended to set this to at least 'External bridge only', " +"unless specific issues with the sliced model are found.\n" "\n" "Options:\n" -"1. Disabled - does not generate second bridge layers. This is the default and is set " -"for compatibility purposes.\n" -"2. External bridge only - generates second bridge layers for external-facing bridges " -"only. Please note that small bridges that are shorter or narrower than the set " -"number of perimeters will be skipped as they would not benefit from a second bridge " -"layer. If generated, the second bridge layer will be extruded parallel to the first " -"bridge layer to reinforce the bridge strength.\n" -"3. Internal bridge only - generates second bridge layers for internal bridges over " -"sparse infill only. Please note that the internal bridges count towards the top " -"shell layer count of your model. The second internal bridge layer will be extruded " -"as close to perpendicular to the first as possible. If multiple regions in the same " -"island, with varying bridge angles are present, the last region of that island will " -"be selected as the angle reference.\n" -"4. Apply to all - generates second bridge layers for both internal and external-" -"facing bridges\n" +"1. Disabled - does not generate second bridge layers. This is the default " +"and is set for compatibility purposes.\n" +"2. External bridge only - generates second bridge layers for external-facing " +"bridges only. Please note that small bridges that are shorter or narrower " +"than the set number of perimeters will be skipped as they would not benefit " +"from a second bridge layer. If generated, the second bridge layer will be " +"extruded parallel to the first bridge layer to reinforce the bridge " +"strength.\n" +"3. Internal bridge only - generates second bridge layers for internal " +"bridges over sparse infill only. Please note that the internal bridges count " +"towards the top shell layer count of your model. The second internal bridge " +"layer will be extruded as close to perpendicular to the first as possible. " +"If multiple regions in the same island, with varying bridge angles are " +"present, the last region of that island will be selected as the angle " +"reference.\n" +"4. Apply to all - generates second bridge layers for both internal and " +"external-facing bridges\n" msgstr "" msgid "Disabled" @@ -10473,30 +10720,33 @@ msgid "Filter out small internal bridges" msgstr "Filtrar pontes internas pequenas" msgid "" -"This option can help reduce pillowing on top surfaces in heavily slanted or curved " +"This option can help reduce pillowing on top surfaces in heavily slanted or " +"curved models.\n" +"\n" +"By default, small internal bridges are filtered out and the internal solid " +"infill is printed directly over the sparse infill. This works well in most " +"cases, speeding up printing without too much compromise on top surface " +"quality. \n" +"\n" +"However, in heavily slanted or curved models, especially where too low a " +"sparse infill density is used, this may result in curling of the unsupported " +"solid infill, causing pillowing.\n" +"\n" +"Enabling limited filtering or no filtering will print internal bridge layer " +"over slightly unsupported internal solid infill. The options below control " +"the sensitivity of the filtering, i.e. they control where internal bridges " +"are created.\n" +"\n" +"1. Filter - enables this option. This is the default behavior and works well " +"in most cases.\n" +"\n" +"2. Limited filtering - creates internal bridges on heavily slanted surfaces " +"while avoiding unnecessary bridges. This works well for most difficult " "models.\n" "\n" -"By default, small internal bridges are filtered out and the internal solid infill is " -"printed directly over the sparse infill. This works well in most cases, speeding up " -"printing without too much compromise on top surface quality. \n" -"\n" -"However, in heavily slanted or curved models, especially where too low a sparse " -"infill density is used, this may result in curling of the unsupported solid infill, " -"causing pillowing.\n" -"\n" -"Enabling limited filtering or no filtering will print internal bridge layer over " -"slightly unsupported internal solid infill. The options below control the " -"sensitivity of the filtering, i.e. they control where internal bridges are created.\n" -"\n" -"1. Filter - enables this option. This is the default behavior and works well in most " -"cases.\n" -"\n" -"2. Limited filtering - creates internal bridges on heavily slanted surfaces while " -"avoiding unnecessary bridges. This works well for most difficult models.\n" -"\n" -"3. No filtering - creates internal bridges on every potential internal overhang. " -"This option is useful for heavily slanted top surface models; however, in most " -"cases, it creates too many unnecessary bridges." +"3. No filtering - creates internal bridges on every potential internal " +"overhang. This option is useful for heavily slanted top surface models; " +"however, in most cases, it creates too many unnecessary bridges." msgstr "" msgid "Filter" @@ -10512,13 +10762,13 @@ msgid "Max bridge length" msgstr "Distância de ponte máxima" 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." +"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 "" -"Comprimento máximo de pontes que não precisam de suporte. Defina-o como 0 se desejar " -"que todas as pontes tenham suporte, e defina-o como um valor muito grande se não " -"desejar que nenhuma ponte tenha suporte." +"Comprimento máximo de pontes que não precisam de suporte. Defina-o como 0 se " +"desejar que todas as pontes tenham suporte, e defina-o como um valor muito " +"grande se não desejar que nenhuma ponte tenha suporte." msgid "End G-code" msgstr "G-code de finalização" @@ -10530,11 +10780,11 @@ msgid "Between Object Gcode" msgstr "G-code entre objetos" msgid "" -"Insert Gcode between objects. This parameter will only come into effect when you " -"print your models object by object" +"Insert Gcode between objects. This parameter will only come into effect when " +"you print your models object by object" msgstr "" -"Insira o G-code entre objetos. Este parâmetro só terá efeito quando você imprimir " -"seus modelos objeto por objeto" +"Insira o G-code entre objetos. Este parâmetro só terá efeito quando você " +"imprimir seus modelos objeto por objeto" msgid "End G-code when finish the printing of this filament" msgstr "G-code de finalização ao terminar a impressão deste filamento" @@ -10543,23 +10793,25 @@ msgid "Ensure vertical shell thickness" msgstr "Garantir a espessura vertical do perímetro" msgid "" -"Add solid infill near sloping surfaces to guarantee the vertical shell thickness " -"(top+bottom solid layers)\n" -"None: No solid infill will be added anywhere. Caution: Use this option carefully if " -"your model has sloped surfaces\n" +"Add solid infill near sloping surfaces to guarantee the vertical shell " +"thickness (top+bottom solid layers)\n" +"None: No solid infill will be added anywhere. Caution: Use this option " +"carefully if your model has sloped surfaces\n" "Critical Only: Avoid adding solid infill for walls\n" "Moderate: Add solid infill for heavily sloping surfaces only\n" "All: Add solid infill for all suitable sloping surfaces\n" "Default value is All." msgstr "" -"Adicione preenchimento sólido próximo a superfícies inclinadas para garantir a " -"espessura vertical (camadas de topo+base)\n" -"Nenhum: Nenhum preenchimento sólido será adicionado em nenhum lugar. Cuidado: Use " -"esta opção com cuidado se o seu modelo tiver superfícies inclinadas\n" +"Adicione preenchimento sólido próximo a superfícies inclinadas para garantir " +"a espessura vertical (camadas de topo+base)\n" +"Nenhum: Nenhum preenchimento sólido será adicionado em nenhum lugar. " +"Cuidado: Use esta opção com cuidado se o seu modelo tiver superfícies " +"inclinadas\n" "Apenas crítico: Evite adicionar preenchimento sólido para paredes\n" "Moderado: Adicione preenchimento sólido apenas para superfícies fortemente " "inclinadas\n" -"Todos: Adicione preenchimento sólido para todas as superfícies inclinadas adequadas\n" +"Todos: Adicione preenchimento sólido para todas as superfícies inclinadas " +"adequadas\n" "O valor padrão é Todos." msgid "Critical Only" @@ -10603,54 +10855,56 @@ msgstr "Padrão de superfície inferior" msgid "Line pattern of bottom surface infill, not bridge infill" msgstr "" -"Padrão de linha do preenchimento da superfície inferior, não do preenchimento da " -"ponte" +"Padrão de linha do preenchimento da superfície inferior, não do " +"preenchimento da ponte" msgid "Internal solid infill pattern" msgstr "Padrão de preenchimento sólido interno" msgid "" -"Line pattern of internal solid infill. if the detect narrow internal solid infill be " -"enabled, the concentric pattern will be used for the small area." +"Line pattern of internal solid infill. if the detect narrow internal solid " +"infill be enabled, the concentric pattern will be used for the small area." msgstr "" -"Padrão de linha do preenchimento sólido interno. Se a detecção de preenchimento " -"sólido interno estreito estiver ativada, o padrão concêntrico será usado para a área " -"pequena." +"Padrão de linha do preenchimento sólido interno. Se a detecção de " +"preenchimento sólido interno estreito estiver ativada, o padrão concêntrico " +"será usado para a área pequena." msgid "" -"Line width of outer wall. If expressed as a %, it will be computed over the nozzle " -"diameter." +"Line width of outer wall. If expressed as a %, it will be computed over the " +"nozzle diameter." msgstr "" -"Largura da linha do perímetro externo. Se expresso como porcentagem, será calculado " -"sobre o diâmetro do bico." +"Largura da linha do perímetro externo. Se expresso como porcentagem, será " +"calculado sobre o diâmetro do bico." msgid "" -"Speed of outer wall which is outermost and visible. It's used to be slower than " -"inner wall speed to get better quality." +"Speed of outer wall which is outermost and visible. It's used to be slower " +"than inner wall speed to get better quality." msgstr "" -"Velocidade do perímetro externo que é o mais externo e visível. Geralmente é mais " -"lenta que a velocidade do perímetro interno para obter melhor qualidade." +"Velocidade do perímetro externo que é o mais externo e visível. Geralmente é " +"mais lenta que a velocidade do perímetro interno para obter melhor qualidade." msgid "Small perimeters" msgstr "Pequenos perímetros" 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." +"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 "" "Essa configuração separada afetará a velocidade dos perímetros com raio <= " -"small_perimeter_threshold (geralmente buracos). Se expresso como porcentagem (por " -"exemplo: 80%), será calculado com base na configuração de velocidade do perímetro " -"externo acima. Defina como zero para automático." +"small_perimeter_threshold (geralmente buracos). Se expresso como porcentagem " +"(por exemplo: 80%), será calculado com base na configuração de velocidade do " +"perímetro externo acima. Defina como zero para automático." msgid "Small perimeters threshold" msgstr "Limiar de pequenos perímetros" -msgid "This sets the threshold for small perimeter length. Default threshold is 0mm" +msgid "" +"This sets the threshold for small perimeter length. Default threshold is 0mm" msgstr "" -"Isso define o limite para o comprimento do perímetro pequeno. O limite padrão é 0mm" +"Isso define o limite para o comprimento do perímetro pequeno. O limite " +"padrão é 0mm" msgid "Walls printing order" msgstr "Ordem de impressão dos perímetros" @@ -10658,45 +10912,49 @@ msgstr "Ordem de impressão dos perímetros" msgid "" "Print sequence of the internal (inner) and external (outer) walls. \n" "\n" -"Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere " -"to a neighbouring perimeter while printing. However, this option results in slightly " -"reduced surface quality as the external perimeter is deformed by being squashed to " -"the internal perimeter.\n" +"Use Inner/Outer for best overhangs. This is because the overhanging walls " +"can adhere to a neighbouring perimeter while printing. However, this option " +"results in slightly reduced surface quality as the external perimeter is " +"deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy " -"as the external wall is printed undisturbed from an internal perimeter. However, " -"overhang performance will reduce as there is no internal perimeter to print the " -"external wall against. This option requires a minimum of 3 walls to be effective as " -"it prints the internal walls from the 3rd perimeter onwards first, then the external " -"perimeter and, finally, the first internal perimeter. This option is recommended " -"against the Outer/Inner option in most cases. \n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional " +"accuracy as the external wall is printed undisturbed from an internal " +"perimeter. However, overhang performance will reduce as there is no internal " +"perimeter to print the external wall against. This option requires a minimum " +"of 3 walls to be effective as it prints the internal walls from the 3rd " +"perimeter onwards first, then the external perimeter and, finally, the first " +"internal perimeter. This option is recommended against the Outer/Inner " +"option in most cases. \n" "\n" -"Use Outer/Inner for the same external wall quality and dimensional accuracy benefits " -"of Inner/Outer/Inner option. However, the z seams will appear less consistent as the " -"first extrusion of a new layer starts on a visible surface.\n" +"Use Outer/Inner for the same external wall quality and dimensional accuracy " +"benefits of Inner/Outer/Inner option. However, the z seams will appear less " +"consistent as the first extrusion of a new layer starts on a visible " +"surface.\n" "\n" " " msgstr "" "Sequência de impressão dos perímetros internos e externos. \n" "\n" -"Use Interior/Exterior para melhores overhangs. Isso ocorre porque os perímetros " -"salientes podem aderir a um perímetro vizinho durante a impressão. No entanto, esta " -"opção resulta em uma qualidade superficial ligeiramente reduzida, pois o perímetro " -"externo é deformado ao ser esmagado pelo perímetro interno.\n" +"Use Interior/Exterior para melhores overhangs. Isso ocorre porque os " +"perímetros salientes podem aderir a um perímetro vizinho durante a " +"impressão. No entanto, esta opção resulta em uma qualidade superficial " +"ligeiramente reduzida, pois o perímetro externo é deformado ao ser esmagado " +"pelo perímetro interno.\n" "\n" -"Use Interior/Exterior/Interior para o melhor acabamento superficial externo e " -"precisão dimensional, pois o perímetro externo é impresso sem interrupções a partir " -"de um perímetro interno. No entanto, o desempenho da inclinaçãoserá reduzido, pois " -"não há perímetro interno para imprimir o perímetro externo. Esta opção requer um " -"mínimo de 3 perímetros para ser eficaz, pois imprime os perímetros internos a partir " -"do terceiro perímetro em diante primeiro, depois o perímetro externo e, por fim, o " -"primeiro perímetro interno. Esta opção é recomendada em relação à opção Exterior/" -"Interior na maioria dos casos. \n" +"Use Interior/Exterior/Interior para o melhor acabamento superficial externo " +"e precisão dimensional, pois o perímetro externo é impresso sem interrupções " +"a partir de um perímetro interno. No entanto, o desempenho da inclinaçãoserá " +"reduzido, pois não há perímetro interno para imprimir o perímetro externo. " +"Esta opção requer um mínimo de 3 perímetros para ser eficaz, pois imprime os " +"perímetros internos a partir do terceiro perímetro em diante primeiro, " +"depois o perímetro externo e, por fim, o primeiro perímetro interno. Esta " +"opção é recomendada em relação à opção Exterior/Interior na maioria dos " +"casos. \n" "\n" -"Use Exterior/Interior para obter os mesmos benefícios de qualidade de parede externa " -"e precisão dimensional da opção Interior/Exterior/Interior. No entanto, as costuras " -"z aparecerão menos consistentes, pois a primeira extrusão de uma nova camada começa " -"em uma superfície visível.\n" +"Use Exterior/Interior para obter os mesmos benefícios de qualidade de parede " +"externa e precisão dimensional da opção Interior/Exterior/Interior. No " +"entanto, as costuras z aparecerão menos consistentes, pois a primeira " +"extrusão de uma nova camada começa em uma superfície visível.\n" "\n" " " @@ -10713,33 +10971,35 @@ msgid "Print infill first" msgstr "Preenchimento primeiro" msgid "" -"Order of wall/infill. When the tickbox is unchecked the walls are printed first, " -"which works best in most cases.\n" +"Order of wall/infill. When the tickbox is unchecked the walls are printed " +"first, which works best in most cases.\n" "\n" "Printing infill first may help with extreme overhangs as the walls have the " -"neighbouring infill to adhere to. However, the infill will slightly push out the " -"printed walls where it is attached to them, resulting in a worse external surface " -"finish. It can also cause the infill to shine through the external surfaces of the " -"part." +"neighbouring infill to adhere to. However, the infill will slightly push out " +"the printed walls where it is attached to them, resulting in a worse " +"external surface finish. It can also cause the infill to shine through the " +"external surfaces of the part." msgstr "" -"Ordem de perímetro/preenchimento. Quando a caixa de seleção não desmarcada, as " -"paredes são impressas primeiro, o que funciona melhor na maioria dos casos.\n" +"Ordem de perímetro/preenchimento. Quando a caixa de seleção não desmarcada, " +"as paredes são impressas primeiro, o que funciona melhor na maioria dos " +"casos.\n" "\n" -"Imprimir as paredes primeiro pode ajudar com overhangs extremos, pois as paredes têm " -"o preenchimento vizinho para aderir. No entanto, o preenchimento empurrará levemente " -"as paredes impressas onde está conectado a elas, resultando em um acabamento de " -"superfície externa pior. Também pode fazer com que o preenchimento apareça através " -"das superfícies externas da peça." +"Imprimir as paredes primeiro pode ajudar com overhangs extremos, pois as " +"paredes têm o preenchimento vizinho para aderir. No entanto, o preenchimento " +"empurrará levemente as paredes impressas onde está conectado a elas, " +"resultando em um acabamento de superfície externa pior. Também pode fazer " +"com que o preenchimento apareça através das superfícies externas da peça." msgid "Wall loop direction" msgstr "Direção da volta do perímetro" msgid "" -"The direction which the wall loops are extruded when looking down from the top.\n" +"The direction which the wall loops are extruded when looking down from the " +"top.\n" "\n" -"By default all walls are extruded in counter-clockwise, unless Reverse on even is " -"enabled. Set this to any option other than Auto will force the wall direction " -"regardless of the Reverse on even.\n" +"By default all walls are extruded in counter-clockwise, unless Reverse on " +"even is enabled. Set this to any option other than Auto will force the wall " +"direction regardless of the Reverse on even.\n" "\n" "This option will be disabled if spiral vase mode is enabled." msgstr "" @@ -10754,27 +11014,28 @@ msgid "Height to rod" msgstr "Altura até a haste" msgid "" -"Distance of the nozzle tip to the lower rod. Used for collision avoidance in by-" -"object printing." +"Distance of the nozzle tip to the lower rod. Used for collision avoidance in " +"by-object printing." msgstr "" -"Distância da ponta do bico ao tubo inferior. Usado para evitar colisões na impressão " -"por objeto." +"Distância da ponta do bico ao tubo inferior. Usado para evitar colisões na " +"impressão por objeto." msgid "Height to lid" msgstr "Altura até a tampa" msgid "" -"Distance of the nozzle tip to the lid. Used for collision avoidance in by-object " -"printing." +"Distance of the nozzle tip to the lid. Used for collision avoidance in by-" +"object printing." msgstr "" -"Distância da ponta do bico à tampa. Usado para evitar colisões na impressão por " -"objeto." +"Distância da ponta do bico à tampa. Usado para evitar colisões na impressão " +"por objeto." msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object printing." +"Clearance radius around extruder. Used for collision avoidance in by-object " +"printing." msgstr "" -"Raio de folga ao redor do extrusor. Usado para evitar colisões na impressão por " -"objeto." +"Raio de folga ao redor do extrusor. Usado para evitar colisões na impressão " +"por objeto." msgid "Nozzle height" msgstr "Altura do bico" @@ -10786,65 +11047,68 @@ msgid "Bed mesh min" msgstr "Mínimo do bed mesh" msgid "" -"This option sets the min point for the allowed bed mesh area. Due to the probe's XY " -"offset, most printers are unable to probe the entire bed. To ensure the probe point " -"does not go outside the bed area, the minimum and maximum points of the bed mesh " -"should be set appropriately. OrcaSlicer ensures that adaptive_bed_mesh_min/" -"adaptive_bed_mesh_max values do not exceed these min/max points. This information " -"can usually be obtained from your printer manufacturer. The default setting is " -"(-99999, -99999), which means there are no limits, thus allowing probing across the " -"entire bed." +"This option sets the min point for the allowed bed mesh area. Due to the " +"probe's XY offset, most printers are unable to probe the entire bed. To " +"ensure the probe point does not go outside the bed area, the minimum and " +"maximum points of the bed mesh should be set appropriately. OrcaSlicer " +"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " +"exceed these min/max points. This information can usually be obtained from " +"your printer manufacturer. The default setting is (-99999, -99999), which " +"means there are no limits, thus allowing probing across the entire bed." msgstr "" -"Esta opção define o ponto mínimo para a área permitida do bed mesh. Devido ao " -"deslocamento XY da sonda, a maioria das impressoras não consegue sondar toda a mesa. " -"Para garantir que o ponto da sonda não saia da área da mesa, os pontos mínimo e " -"máximo do bed mesh devem ser configurados adequadamente. O OrcaSlicer garante que os " -"valores adaptive_bed_mesh_min/adaptive_bed_mesh_max não excedam esses pontos mínimo/" -"máximo. Essas informações geralmente podem ser obtidas com o fabricante da sua " -"impressora. A configuração padrão é (-99999, -99999), o que significa que não há " +"Esta opção define o ponto mínimo para a área permitida do bed mesh. Devido " +"ao deslocamento XY da sonda, a maioria das impressoras não consegue sondar " +"toda a mesa. Para garantir que o ponto da sonda não saia da área da mesa, os " +"pontos mínimo e máximo do bed mesh devem ser configurados adequadamente. O " +"OrcaSlicer garante que os valores adaptive_bed_mesh_min/" +"adaptive_bed_mesh_max não excedam esses pontos mínimo/máximo. Essas " +"informações geralmente podem ser obtidas com o fabricante da sua impressora. " +"A configuração padrão é (-99999, -99999), o que significa que não há " "limites, permitindo a sondagem em toda a mesa." msgid "Bed mesh max" msgstr "Máximo do bed mesh" msgid "" -"This option sets the max point for the allowed bed mesh area. Due to the probe's XY " -"offset, most printers are unable to probe the entire bed. To ensure the probe point " -"does not go outside the bed area, the minimum and maximum points of the bed mesh " -"should be set appropriately. OrcaSlicer ensures that adaptive_bed_mesh_min/" -"adaptive_bed_mesh_max values do not exceed these min/max points. This information " -"can usually be obtained from your printer manufacturer. The default setting is " -"(99999, 99999), which means there are no limits, thus allowing probing across the " -"entire bed." +"This option sets the max point for the allowed bed mesh area. Due to the " +"probe's XY offset, most printers are unable to probe the entire bed. To " +"ensure the probe point does not go outside the bed area, the minimum and " +"maximum points of the bed mesh should be set appropriately. OrcaSlicer " +"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " +"exceed these min/max points. This information can usually be obtained from " +"your printer manufacturer. The default setting is (99999, 99999), which " +"means there are no limits, thus allowing probing across the entire bed." msgstr "" -"Esta opção define o ponto máximo para a área permitida do bed mesh. Devido ao " -"deslocamento XY da sonda, a maioria das impressoras não consegue sondar toda a mesa. " -"Para garantir que o ponto da sonda não saia da área da mesa, os pontos mínimo e " -"máximo do bed mesh devem ser configurados adequadamente. O OrcaSlicer garante que os " -"valores adaptive_bed_mesh_min/adaptive_bed_mesh_max não excedam esses pontos mínimo/" -"máximo. Essas informações geralmente podem ser obtidas com o fabricante da sua " -"impressora. A configuração padrão é (99999, 99999), o que significa que não há " -"limites, permitindo a sondagem em toda a mesa." +"Esta opção define o ponto máximo para a área permitida do bed mesh. Devido " +"ao deslocamento XY da sonda, a maioria das impressoras não consegue sondar " +"toda a mesa. Para garantir que o ponto da sonda não saia da área da mesa, os " +"pontos mínimo e máximo do bed mesh devem ser configurados adequadamente. O " +"OrcaSlicer garante que os valores adaptive_bed_mesh_min/" +"adaptive_bed_mesh_max não excedam esses pontos mínimo/máximo. Essas " +"informações geralmente podem ser obtidas com o fabricante da sua impressora. " +"A configuração padrão é (99999, 99999), o que significa que não há limites, " +"permitindo a sondagem em toda a mesa." msgid "Probe point distance" msgstr "Distância entre pontos de sonda" msgid "" -"This option sets the preferred distance between probe points (grid size) for the X " -"and Y directions, with the default being 50mm for both X and Y." +"This option sets the preferred distance between probe points (grid size) for " +"the X and Y directions, with the default being 50mm for both X and Y." msgstr "" -"Esta opção define a distância preferencial entre pontos de sonda (tamanho da grade) " -"para as direções X e Y, sendo o padrão 50mm para ambas as direções X e Y." +"Esta opção define a distância preferencial entre pontos de sonda (tamanho da " +"grade) para as direções X e Y, sendo o padrão 50mm para ambas as direções X " +"e Y." msgid "Mesh margin" msgstr "Margem da malha" msgid "" -"This option determines the additional distance by which the adaptive bed mesh area " -"should be expanded in the XY directions." +"This option determines the additional distance by which the adaptive bed " +"mesh area should be expanded in the XY directions." msgstr "" -"Esta opção determina a distância adicional pela qual a área do bed mesh adaptável " -"deve ser expandida nas direções XY." +"Esta opção determina a distância adicional pela qual a área do bed mesh " +"adaptável deve ser expandida nas direções XY." msgid "Extruder Color" msgstr "Cor do extrusor" @@ -10859,59 +11123,65 @@ msgid "Flow ratio" msgstr "Fluxo" 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" +"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 "" -"O material pode ter mudança volumétrica após a troca entre o estado fundido e o " -"estado cristalino. Esta configuração altera todo o fluxo de extrusão deste filamento " -"no gcode proporcionalmente. A faixa de valores recomendada está entre 0.95 e 1.05. " -"Talvez você possa ajustar esse valor para obter uma superfície plana agradável " -"quando houver um leve transbordamento ou subfluxo" +"O material pode ter mudança volumétrica após a troca entre o estado fundido " +"e o estado cristalino. Esta configuração altera todo o fluxo de extrusão " +"deste filamento no gcode proporcionalmente. A faixa de valores recomendada " +"está entre 0.95 e 1.05. Talvez você possa ajustar esse valor para obter uma " +"superfície plana agradável quando houver um leve transbordamento ou subfluxo" 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. \n" +"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. \n" "\n" -"The final object flow ratio is this value multiplied by the filament flow ratio." +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." msgstr "" msgid "Enable pressure advance" msgstr "Habilitar Pressure advance" msgid "" -"Enable pressure advance, auto calibration result will be overwritten once enabled." +"Enable pressure advance, auto calibration result will be overwritten once " +"enabled." msgstr "" -"Habilitar Pressure advance, o resultado da calibração automática será sobrescrito " -"uma vez habilitado." +"Habilitar Pressure advance, o resultado da calibração automática será " +"sobrescrito uma vez habilitado." msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" -msgstr "Pressure advance(Klipper) também conhecido como Linear advance factor(Marlin)" +msgstr "" +"Pressure advance(Klipper) também conhecido como Linear advance factor(Marlin)" msgid "Enable adaptive pressure advance (beta)" msgstr "" #, no-c-format, no-boost-format msgid "" -"With increasing print speeds (and hence increasing volumetric flow through the " -"nozzle) and increasing accelerations, it has been observed that the effective PA " -"value typically decreases. This means that a single PA value is not always 100% " -"optimal for all features and a compromise value is usually used that does not cause " -"too much bulging on features with lower flow speed and accelerations while also not " -"causing gaps on faster features.\n" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" "\n" -"This feature aims to address this limitation by modeling the response of your " -"printer's extrusion system depending on the volumetric flow speed and acceleration " -"it is printing at. Internally, it generates a fitted model that can extrapolate the " -"needed pressure advance for any given volumetric flow speed and acceleration, which " -"is then emitted to the printer depending on the current print conditions.\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emitted to the printer depending on " +"the current print conditions.\n" "\n" -"When enabled, the pressure advance value above is overridden. However, a reasonable " -"default value above is strongly recommended to act as a fallback and for when tool " -"changing.\n" +"When enabled, the pressure advance value above is overridden. However, a " +"reasonable default value above is strongly recommended to act as a fallback " +"and for when tool changing.\n" "\n" msgstr "" @@ -10921,29 +11191,31 @@ msgstr "" #, no-c-format, no-boost-format msgid "" "Add sets of pressure advance (PA) values, the volumetric flow speeds and " -"accelerations they were measured at, separated by a comma. One set of values per " -"line. For example\n" +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" "0.04,3.96,3000\n" "0.033,3.96,10000\n" "0.029,7.91,3000\n" "0.026,7.91,10000\n" "\n" "How to calibrate:\n" -"1. Run the pressure advance test for at least 3 speeds per acceleration value. It is " -"recommended that the test is run for at least the speed of the external perimeters, " -"the speed of the internal perimeters and the fastest feature print speed in your " -"profile (usually its the sparse or solid infill). Then run them for the same speeds " -"for the slowest and fastest print accelerations,and no faster than the recommended " -"maximum acceleration as given by the Klipper input shaper.\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the Klipper input shaper.\n" "2. Take note of the optimal PA value for each volumetric flow speed and " -"acceleration. You can find the flow number by selecting flow from the color scheme " -"drop down and move the horizontal slider over the PA pattern lines. The number " -"should be visible at the bottom of the page. The ideal PA value should be decreasing " -"the higher the volumetric flow is. If it is not, confirm that your extruder is " -"functioning correctly.The slower and with less acceleration you print, the larger " -"the range of acceptable PA values. If no difference is visible, use the PA value " -"from the faster test.3. Enter the triplets of PA values, Flow and Accelerations in " -"the text box here and save your filament profile\n" +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" "\n" msgstr "" @@ -10951,10 +11223,10 @@ msgid "Enable adaptive pressure advance for overhangs (beta)" msgstr "" msgid "" -"Enable adaptive PA for overhangs as well as when flow changes within the same " -"feature. This is an experimental option, as if the PA profile is not set accurately, " -"it will cause uniformity issues on the external surfaces before and after " -"overhangs.\n" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" msgstr "" msgid "Pressure advance for bridges" @@ -10963,41 +11235,43 @@ msgstr "" msgid "" "Pressure advance value for bridges. Set to 0 to disable. \n" "\n" -" A lower PA value when printing bridges helps reduce the appearance of slight under " -"extrusion immediately after bridges. This is caused by the pressure drop in the " -"nozzle when printing in the air and a lower PA helps counteract this." +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." 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." +"Default line width if other line widths are set to 0. If expressed as a %, " +"it will be computed over the nozzle diameter." msgstr "" -"Largura de linha padrão se outras larguras de linha estiverem definidas como 0. Se " -"expresso como %, será calculado sobre o diâmetro do bico." +"Largura de linha padrão se outras larguras de linha estiverem definidas como " +"0. Se expresso como %, será calculado sobre o diâmetro do bico." msgid "Keep fan always on" msgstr "Manter o ventilador sempre ligado" msgid "" -"If enable this setting, part cooling fan will never be stopped and will run at least " -"at minimum speed to reduce the frequency of starting and stopping" +"If enable this setting, part cooling fan will never be stopped and will run " +"at least at minimum speed to reduce the frequency of starting and stopping" msgstr "" -"Se habilitar esta configuração, o ventilador de resfriamento da peça nunca será " -"desligado e funcionará pelo menos na velocidade mínima para reduzir a frequência de " -"início e parada" +"Se habilitar esta configuração, o ventilador de resfriamento da peça nunca " +"será desligado e funcionará pelo menos na velocidade mínima para reduzir a " +"frequência de início e parada" msgid "Don't slow down outer walls" msgstr "" msgid "" -"If enabled, this setting will ensure external perimeters are not slowed down to meet " -"the minimum layer time. This is particularly helpful in the below scenarios:\n" +"If enabled, this setting will ensure external perimeters are not slowed down " +"to meet the minimum layer time. This is particularly helpful in the below " +"scenarios:\n" "\n" " 1. To avoid changes in shine when printing glossy filaments \n" -"2. To avoid changes in external wall speed which may create slight wall artifacts " -"that appear like z banding \n" -"3. To avoid printing at speeds which cause VFAs (fine artifacts) on the external " -"walls\n" +"2. To avoid changes in external wall speed which may create slight wall " +"artifacts that appear like z banding \n" +"3. To avoid printing at speeds which cause VFAs (fine artifacts) on the " +"external walls\n" "\n" msgstr "" @@ -11005,14 +11279,14 @@ msgid "Layer time" msgstr "Tempo da camada" 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" +"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 "" -"O ventilador de resfriamento da peça será ativado para camadas cujo tempo estimado " -"seja menor que esse valor. A velocidade do ventilador é interpolada entre as " -"velocidades mínima e máxima do ventilador de acordo com o tempo de impressão da " -"camada" +"O ventilador de resfriamento da peça será ativado para camadas cujo tempo " +"estimado seja menor que esse valor. A velocidade do ventilador é interpolada " +"entre as velocidades mínima e máxima do ventilador de acordo com o tempo de " +"impressão da camada" msgid "Default color" msgstr "Cor padrão" @@ -11030,21 +11304,21 @@ msgid "Required nozzle HRC" msgstr "HRC do bico requerido" msgid "" -"Minimum HRC of nozzle required to print the filament. Zero means no checking of " -"nozzle's HRC." +"Minimum HRC of nozzle required to print the filament. Zero means no checking " +"of nozzle's HRC." msgstr "" -"HRC mínimo do bico necessário para imprimir o filamento. Zero significa que não há " -"verificação do HRC do bico." +"HRC mínimo do bico necessário para imprimir o filamento. Zero significa que " +"não há verificação do HRC do bico." 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" +"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 "" "Essa configuração representa quanto volume de filamento pode ser derretido e " -"extrudado por segundo. A velocidade de impressão é limitada pela fluxo volumétrico " -"máximo, no caso de configurações de velocidade muito altas e irrazoáveis. Não pode " -"ser zero" +"extrudado por segundo. A velocidade de impressão é limitada pela fluxo " +"volumétrico máximo, no caso de configurações de velocidade muito altas e " +"irrazoáveis. Não pode ser zero" msgid "mm³/s" msgstr "mm³/s" @@ -11053,45 +11327,45 @@ msgid "Filament load time" msgstr "Tempo de carga do filamento" msgid "" -"Time to load new filament when switch filament. It's usually applicable for single-" -"extruder multi-material machines. For tool changers or multi-tool machines, it's " -"typically 0. For statistics only" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" msgstr "" msgid "Filament unload time" msgstr "Tempo de descarga do filamento" msgid "" -"Time to unload old filament when switch filament. It's usually applicable for single-" -"extruder multi-material machines. For tool changers or multi-tool machines, it's " -"typically 0. For statistics only" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" msgstr "" msgid "Tool change time" msgstr "" msgid "" -"Time taken to switch tools. It's usually applicable for tool changers or multi-tool " -"machines. For single-extruder multi-material machines, it's typically 0. For " -"statistics only" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" msgstr "" msgid "" -"Filament diameter is used to calculate extrusion in gcode, so it's important and " -"should be accurate" +"Filament diameter is used to calculate extrusion in gcode, so it's important " +"and should be accurate" msgstr "" -"O diâmetro do filamento é usado para calcular a extrusão no gcode, portanto, é " -"importante e deve ser preciso" +"O diâmetro do filamento é usado para calcular a extrusão no gcode, portanto, " +"é importante e deve ser preciso" msgid "Pellet flow coefficient" msgstr "" msgid "" -"Pellet flow coefficient is empirically derived and allows for volume calculation for " -"pellet printers.\n" +"Pellet flow coefficient is empirically derived and allows for volume " +"calculation for pellet printers.\n" "\n" -"Internally it is converted to filament_diameter. All other volume calculations " -"remain the same.\n" +"Internally it is converted to filament_diameter. All other volume " +"calculations remain the same.\n" "\n" "filament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )" msgstr "" @@ -11101,25 +11375,27 @@ msgstr "Encolhimento (XY)" #, no-c-format, no-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 "" -"Informe a porcentagem de retração que o filamento terá após o resfriamento (94% se " -"você medir 94mm em vez de 100mm). A peça será escalada em xy para compensar. Apenas " -"o filamento usado para o perímetro é levado em consideração.\n" -"Certifique-se de permitir espaço suficiente entre objetos, pois essa compensação é " -"feita após as verificações." +"Informe a porcentagem de retração que o filamento terá após o resfriamento " +"(94% se você medir 94mm em vez de 100mm). A peça será escalada em xy para " +"compensar. Apenas o filamento usado para o perímetro é levado em " +"consideração.\n" +"Certifique-se de permitir espaço suficiente entre objetos, pois essa " +"compensação é feita após as verificações." msgid "Shrinkage (Z)" msgstr "Encolhimento (Z)" #, no-c-format, no-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 Z to compensate." +"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 Z to " +"compensate." msgstr "" msgid "Loading speed" @@ -11138,16 +11414,17 @@ msgid "Unloading speed" msgstr "Velocidade de descarregamento" msgid "" -"Speed used for unloading the filament on the wipe tower (does not affect initial " -"part of unloading just after ramming)." +"Speed used for unloading the filament on the wipe tower (does not affect " +"initial part of unloading just after ramming)." msgstr "" -"Velocidade usada para descarregar o filamento na Torre Prime (não afeta a parte " -"inicial do descarregamento logo após o moldeamento)." +"Velocidade usada para descarregar o filamento na Torre Prime (não afeta a " +"parte inicial do descarregamento logo após o moldeamento)." msgid "Unloading speed at the start" msgstr "Velocidade de descarregamento no início" -msgid "Speed used for unloading the tip of the filament immediately after ramming." +msgid "" +"Speed used for unloading the tip of the filament immediately after ramming." msgstr "" "Velocidade usada para descarregar a ponta do filamento imediatamente após o " "moldeamento." @@ -11156,19 +11433,20 @@ msgid "Delay after unloading" msgstr "Atraso após o descarregamento" 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." +"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 "" -"Tempo de espera após o filamento ser descarregado. Pode ajudar a obter trocas de " -"ferramentas confiáveis com materiais flexíveis que podem precisar de mais tempo para " -"encolher para as dimensões originais." +"Tempo de espera após o filamento ser descarregado. Pode ajudar a obter " +"trocas de ferramentas confiáveis com materiais flexíveis que podem precisar " +"de mais tempo para encolher para as dimensões originais." msgid "Number of cooling moves" msgstr "Número de movimentos de resfriamento" msgid "" -"Filament is cooled by being moved back and forth in the cooling tubes. Specify " -"desired number of these moves." +"Filament is cooled by being moved back and forth in the cooling tubes. " +"Specify desired number of these moves." msgstr "" "O filamento é resfriado movendo-se para frente e para trás nos tubos de " "resfriamento. Especifique o número desejado desses movimentos." @@ -11183,9 +11461,9 @@ msgid "Stamping distance measured from the center of the cooling tube" msgstr "" msgid "" -"If set to nonzero value, filament is moved toward the nozzle between the individual " -"cooling moves (\"stamping\"). This option configures how long this movement should " -"be before the filament is retracted again." +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." msgstr "" msgid "Speed of the first cooling move" @@ -11200,32 +11478,33 @@ msgid "Minimal purge on wipe tower" msgstr "Purga mínima na Torre Prime" 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, Orca Slicer will " -"always prime this amount of material into the wipe tower to produce successive " -"infill or sacrificial object extrusions reliably." +"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, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" -"Após uma troca de filamento, a posição exata do filamento recém-carregado dentro do " -"bico pode não ser conhecida, e a pressão do filamento provavelmente ainda não está " -"estável. Antes de purgar a cabeça de impressão em um preenchimento ou em um objeto " -"de sacrifício, o Orca Slicer sempre preparará essa quantidade de material na Torre " -"Prime para produzir extrusões sucessivas de preenchimento ou de objeto de sacrifício " -"de forma confiável." +"Após uma troca de filamento, a posição exata do filamento recém-carregado " +"dentro do bico pode não ser conhecida, e a pressão do filamento " +"provavelmente ainda não está estável. Antes de purgar a cabeça de impressão " +"em um preenchimento ou em um objeto de sacrifício, o Orca Slicer sempre " +"preparará essa quantidade de material na Torre Prime para produzir extrusões " +"sucessivas de preenchimento ou de objeto de sacrifício de forma confiável." msgid "Speed of the last cooling move" msgstr "Velocidade do último movimento de resfriamento" msgid "Cooling moves are gradually accelerating towards this speed." msgstr "" -"Os movimentos de resfriamento estão gradualmente acelerando em direção a esta " -"velocidade." +"Os movimentos de resfriamento estão gradualmente acelerando em direção a " +"esta velocidade." msgid "Ramming parameters" msgstr "Parâmetros de moldeamento" msgid "" -"This string is edited by RammingDialog and contains ramming specific parameters." +"This string is edited by RammingDialog and contains ramming specific " +"parameters." msgstr "" "Esta frase é editada pelo RammingDialog e contém parâmetros específicos de " "moldeamento." @@ -11234,16 +11513,16 @@ msgid "Enable ramming for multi-tool setups" msgstr "Habilitar moldeamento para configurações de multi-extrusora" msgid "" -"Perform ramming when using multi-tool 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." +"Perform ramming when using multi-tool 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 "" -"Realizar moldeamentoao usando impressora multi-extrusora(ou seja, quando a opção " -"'Único Extrusor Multimaterial' em Configurações de Impressora está desmarcada). " -"Quando ativo, uma pequena quantidade de filamento é rapidamente extrudado na Torre " -"Prime logo antes da troca de extrusora. Esta opção é usada apenas quando a Torre " -"Prime está habilitada." +"Realizar moldeamentoao usando impressora multi-extrusora(ou seja, quando a " +"opção 'Único Extrusor Multimaterial' em Configurações de Impressora está " +"desmarcada). Quando ativo, uma pequena quantidade de filamento é rapidamente " +"extrudado na Torre Prime logo antes da troca de extrusora. Esta opção é " +"usada apenas quando a Torre Prime está habilitada." msgid "Multi-tool ramming volume" msgstr "Volume de moldeamento multi-extrusora" @@ -11272,28 +11551,32 @@ msgstr "O tipo de material do filamento" msgid "Soluble material" msgstr "Material solúvel" -msgid "Soluble material is commonly used to print support and support interface" +msgid "" +"Soluble material is commonly used to print support and support interface" msgstr "" -"O material solúvel é comumente usado para imprimir suporte e interface de suporte" +"O material solúvel é comumente usado para imprimir suporte e interface de " +"suporte" msgid "Support material" msgstr "Material de suporte" -msgid "Support material is commonly used to print support and support interface" +msgid "" +"Support material is commonly used to print support and support interface" msgstr "" -"O material de suporte é comumente usado para imprimir suporte e interface de suporte" +"O material de suporte é comumente usado para imprimir suporte e interface de " +"suporte" msgid "Softening temperature" msgstr "Temperatura de amolecimento" 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 clogging." +"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 clogging." msgstr "" -"O material amolece a esta temperatura, portanto, quando a temperatura da mesa for " -"igual ou maior que ela, é altamente recomendável abrir a porta da frente e/ou " -"remover o vidro superior para evitar entupimentos." +"O material amolece a esta temperatura, portanto, quando a temperatura da " +"mesa for igual ou maior que ela, é altamente recomendável abrir a porta da " +"frente e/ou remover o vidro superior para evitar entupimentos." msgid "Price" msgstr "Preço" @@ -11317,19 +11600,21 @@ msgid "Sparse infill direction" msgstr "Direção do preenchimento esparso" msgid "" -"Angle for sparse infill pattern, which controls the start or main direction of line" +"Angle for sparse infill pattern, which controls the start or main direction " +"of line" msgstr "" -"Ângulo para o padrão de preenchimento esparso, que controla o início ou a direção " -"principal da linha" +"Ângulo para o padrão de preenchimento esparso, que controla o início ou a " +"direção principal da linha" msgid "Solid infill direction" msgstr "Direção do preenchimento sólido" msgid "" -"Angle for solid infill pattern, which controls the start or main direction of line" +"Angle for solid infill pattern, which controls the start or main direction " +"of line" msgstr "" -"Ângulo para padrão de preenchimento sólido, que controla a direção inicial ou " -"principal da linha" +"Ângulo para padrão de preenchimento sólido, que controla a direção inicial " +"ou principal da linha" msgid "Rotate solid infill direction" msgstr "Rotaciona a direção do preenchimento sólido" @@ -11342,11 +11627,12 @@ msgstr "Densidade do preenchimento esparso" #, no-c-format, no-boost-format msgid "" -"Density of internal sparse infill, 100% turns all sparse infill into solid infill " -"and internal solid infill pattern will be used" +"Density of internal sparse infill, 100% turns all sparse infill into solid " +"infill and internal solid infill pattern will be used" msgstr "" -"Densidade do preenchimento esparso interno, 100% transforma todo o preenchimento " -"esparso em preenchimento sólido e será usado o padrão de preenchimento sólido interno" +"Densidade do preenchimento esparso interno, 100% transforma todo o " +"preenchimento esparso em preenchimento sólido e será usado o padrão de " +"preenchimento sólido interno" msgid "Sparse infill pattern" msgstr "Padrão de preenchimento esparso" @@ -11397,16 +11683,16 @@ msgid "Lattice angle 1" msgstr "" msgid "" -"The angle of the first set of 2D lattice elements in the Z direction. Zero is " -"vertical." +"The angle of the first set of 2D lattice elements in the Z direction. Zero " +"is vertical." msgstr "" msgid "Lattice angle 2" msgstr "" msgid "" -"The angle of the second set of 2D lattice elements in the Z direction. Zero is " -"vertical." +"The angle of the second set of 2D lattice elements in the Z direction. Zero " +"is vertical." msgstr "" msgid "Sparse infill anchor length" @@ -11414,23 +11700,25 @@ msgstr "Comprimento da âncora de preenchimento esparso" 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. Orca Slicer 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." +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Orca Slicer 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 "" -"Conecte uma linha de preenchimento a um perímetro interno com um segmento curto de " -"um perímetro adicional. Se expresso como porcentagem (exemplo: 15%), é calculado " -"sobre a largura de extrusão do preenchimento. O Orca Slicer tenta conectar duas " -"linhas de preenchimento próximas a um segmento curto de perímetro. Se nenhum " -"segmento de perímetro mais curto que infill_anchor_max for encontrado, a linha de " -"preenchimento é conectada a um segmento de perímetro em apenas um lado e o " -"comprimento do segmento de perímetro tomado é limitado a este parâmetro, mas não " -"mais do que anchor_length_max. \n" +"Conecte uma linha de preenchimento a um perímetro interno com um segmento " +"curto de um perímetro adicional. Se expresso como porcentagem (exemplo: " +"15%), é calculado sobre a largura de extrusão do preenchimento. O Orca " +"Slicer tenta conectar duas linhas de preenchimento próximas a um segmento " +"curto de perímetro. Se nenhum segmento de perímetro mais curto que " +"infill_anchor_max for encontrado, a linha de preenchimento é conectada a um " +"segmento de perímetro em apenas um lado e o comprimento do segmento de " +"perímetro tomado é limitado a este parâmetro, mas não mais do que " +"anchor_length_max. \n" "Defina este parâmetro como zero para desabilitar os perímetros de ancoragem " "conectados a uma única linha de preenchimento." @@ -11445,25 +11733,26 @@ msgstr "Comprimento máximo da âncora de preenchimento" 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. Orca Slicer 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." +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Orca Slicer 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 "" -"Conecte uma linha de preenchimento a um perímetro interno com um segmento curto de " -"um perímetro adicional. Se expresso como porcentagem (exemplo: 15%), é calculado " -"sobre a largura de extrusão do preenchimento. O Orca Slicer tenta conectar duas " -"linhas de preenchimento próximas a um segmento curto de perímetro. Se nenhum " -"segmento de perímetro mais curto que este parâmetro for encontrado, a linha de " -"preenchimento é conectada a um segmento de perímetro em apenas um lado e o " -"comprimento do segmento de perímetro tomado é limitado a infill_anchor, mas não mais " -"do que este parâmetro. \n" -"Se definido como 0, o antigo algoritmo de conexão de preenchimento será usado, ele " -"deve criar o mesmo resultado que com 1000 e 0." +"Conecte uma linha de preenchimento a um perímetro interno com um segmento " +"curto de um perímetro adicional. Se expresso como porcentagem (exemplo: " +"15%), é calculado sobre a largura de extrusão do preenchimento. O Orca " +"Slicer tenta conectar duas linhas de preenchimento próximas a um segmento " +"curto de perímetro. Se nenhum segmento de perímetro mais curto que este " +"parâmetro for encontrado, a linha de preenchimento é conectada a um segmento " +"de perímetro em apenas um lado e o comprimento do segmento de perímetro " +"tomado é limitado a infill_anchor, mas não mais do que este parâmetro. \n" +"Se definido como 0, o antigo algoritmo de conexão de preenchimento será " +"usado, ele deve criar o mesmo resultado que com 1000 e 0." msgid "0 (Simple connect)" msgstr "0 (Conexão simples)" @@ -11478,43 +11767,50 @@ msgid "Acceleration of travel moves" msgstr "Aceleração dos movimentos de deslocamento" msgid "" -"Acceleration of top surface infill. Using a lower value may improve top surface " -"quality" +"Acceleration of top surface infill. Using a lower value may improve top " +"surface quality" msgstr "" "Aceleração do preenchimento da superfície superior. Usar um valor menor pode " "melhorar a qualidade da superfície superior" msgid "Acceleration of outer wall. Using a lower value can improve quality" -msgstr "Aceleração do perímetro externo. Usar um valor menor pode melhorar a qualidade" +msgstr "" +"Aceleração do perímetro externo. Usar um valor menor pode melhorar a " +"qualidade" 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." +"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 "" -"Aceleração das pontes. Se o valor for expresso como uma porcentagem (por exemplo, " -"50%), será calculado com base na aceleração do perímetro externo." +"Aceleração das pontes. Se o valor for expresso como uma porcentagem (por " +"exemplo, 50%), será calculado com base na aceleração do perímetro externo." msgid "mm/s² or %" msgstr "mm/s² ou %" 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." +"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 "" -"Aceleração do preenchimento esparso. Se o valor for expresso como uma porcentagem " -"(por exemplo, 100%), será calculado com base na aceleração padrão." +"Aceleração do preenchimento esparso. Se o valor for expresso como uma " +"porcentagem (por exemplo, 100%), será calculado com base na aceleração " +"padrão." 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." +"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 "" "Aceleração do preenchimento sólido interno. Se o valor for expresso como uma " -"porcentagem (por exemplo, 100%), será calculado com base na aceleração padrão." +"porcentagem (por exemplo, 100%), será calculado com base na aceleração " +"padrão." msgid "" -"Acceleration of initial layer. Using a lower value can improve build plate adhesive" +"Acceleration of initial layer. Using a lower value can improve build plate " +"adhesive" msgstr "" -"Aceleração da primeira camada. Usar um valor menor pode melhorar a adesão à mesa" +"Aceleração da primeira camada. Usar um valor menor pode melhorar a adesão à " +"mesa" msgid "Enable accel_to_decel" msgstr "Habilitar accel_to_decel" @@ -11526,8 +11822,10 @@ msgid "accel_to_decel" msgstr "accel_to_decel" #, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" -msgstr "O max_accel_to_decel do Klipper será ajustado para esse %% de aceleração" +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "" +"O max_accel_to_decel do Klipper será ajustado para esse %% de aceleração" msgid "Jerk of outer walls" msgstr "Jerk nas paredes externas" @@ -11548,21 +11846,21 @@ msgid "Jerk for travel" msgstr "Jerk no deslocamento" msgid "" -"Line width of initial layer. If expressed as a %, it will be computed over the " -"nozzle diameter." +"Line width of initial layer. If expressed as a %, it will be computed over " +"the nozzle diameter." msgstr "" -"Largura da linha da primeira camada. Se expresso como uma %, será calculado sobre o " -"diâmetro do bico." +"Largura da linha da primeira camada. Se expresso como uma %, será calculado " +"sobre o diâmetro do bico." msgid "Initial layer height" msgstr "Altura da primeira camada" msgid "" -"Height of initial layer. Making initial layer height to be thick slightly can " -"improve build plate adhesion" +"Height of initial layer. Making initial layer height to be thick slightly " +"can improve build plate adhesion" msgstr "" -"Altura da primeira camada. Tornar a altura da primeira camada ligeiramente espessa " -"pode melhorar a adesão à mesa" +"Altura da primeira camada. Tornar a altura da primeira camada ligeiramente " +"espessa pode melhorar a adesão à mesa" msgid "Speed of initial layer except the solid infill part" msgstr "Velocidade da primeira camada, exceto a parte de preenchimento sólido" @@ -11586,30 +11884,33 @@ 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 "" -"As primeiras camadas são impressas mais lentamente do que o normal. A velocidade é " -"aumentada gradualmente de forma linear sobre o número especificado de camadas." +"As primeiras camadas são impressas mais lentamente do que o normal. A " +"velocidade é aumentada gradualmente de forma linear sobre o número " +"especificado de camadas." msgid "Initial layer nozzle temperature" msgstr "Temperatura do bico da primeira camada" msgid "Nozzle temperature to print initial layer when using this filament" -msgstr "Temperatura do bico para imprimir a primeira camada ao usar este filamento" +msgstr "" +"Temperatura do bico para imprimir a primeira camada ao usar este filamento" msgid "Full fan speed at layer" msgstr "Velocidade total do ventilador na camada" 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 "" "A velocidade do ventilador aumentará linearmente de zero na camada " -"\"close_fan_the_first_x_layers\" para o máximo na camada \"full_fan_speed_layer\". " -"\"full_fan_speed_layer\" será ignorado se for menor que " -"\"close_fan_the_first_x_layers\", caso em que o ventilador funcionará na velocidade " -"máxima permitida na camada \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" para o máximo na camada " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" será ignorado se for " +"menor que \"close_fan_the_first_x_layers\", caso em que o ventilador " +"funcionará na velocidade máxima permitida na camada " +"\"close_fan_the_first_x_layers\" + 1." msgid "layer" msgstr "camada" @@ -11618,9 +11919,10 @@ msgid "Support interface fan speed" msgstr "Velocidade do ventilador de interface de suporte" msgid "" -"This part cooling fan speed is applied when printing support interfaces. Setting " -"this parameter to a higher than regular speed reduces the layer binding strength " -"between supports and the supported part, making them easier to separate.\n" +"This part cooling fan speed is applied when printing support interfaces. " +"Setting this parameter to a higher than regular speed reduces the layer " +"binding strength between supports and the supported part, making them easier " +"to separate.\n" "Set to -1 to disable it.\n" "This setting is overridden by disable_fan_first_layers." msgstr "" @@ -11629,20 +11931,21 @@ msgid "Internal bridges fan speed" msgstr "" msgid "" -"The part cooling fan speed used for all internal bridges. Set to -1 to use the " -"overhang fan speed settings instead.\n" +"The part cooling fan speed used for all internal bridges. Set to -1 to use " +"the overhang fan speed settings instead.\n" "\n" -"Reducing the internal bridges fan speed, compared to your regular fan speed, can " -"help reduce part warping due to excessive cooling applied over a large surface for a " -"prolonged period of time." +"Reducing the internal bridges fan speed, compared to your regular fan speed, " +"can help reduce part warping due to excessive cooling applied over a large " +"surface for a prolonged period of time." msgstr "" msgid "" -"Randomly jitter while printing the wall, so that the surface has a rough look. This " -"setting controls the fuzzy position" +"Randomly jitter while printing the wall, so that the surface has a rough " +"look. This setting controls the fuzzy position" msgstr "" -"Movimento aleatório durante a impressão do perímetro, de modo que a superfície tenha " -"uma aparência áspera. Essa configuração controla a textura fuzzy" +"Movimento aleatório durante a impressão do perímetro, de modo que a " +"superfície tenha uma aparência áspera. Essa configuração controla a textura " +"fuzzy" msgid "Contour" msgstr "Contorno" @@ -11657,17 +11960,21 @@ msgid "Fuzzy skin thickness" msgstr "Espessura da textura fuzzy" msgid "" -"The width within which to jitter. It's advised to be below outer wall line width" +"The width within which to jitter. It's advised to be below outer wall line " +"width" msgstr "" -"A largura dentro da qual tremer. É desaconselhável que seja menor do que a largura " -"da linha do perímetro externo" +"A largura dentro da qual tremer. É desaconselhável que seja menor do que a " +"largura da linha do perímetro externo" msgid "Fuzzy skin point distance" msgstr "Distância do ponto da textura fuzzy" -msgid "The average distance between the random points introduced on each line segment" +msgid "" +"The average distance between the random points introduced on each line " +"segment" msgstr "" -"A distância média entre os pontos aleatórios introduzidos em cada segmento de linha" +"A distância média entre os pontos aleatórios introduzidos em cada segmento " +"de linha" msgid "Apply fuzzy skin to first layer" msgstr "Aplicar texture fuzzy à primeira camada" @@ -11683,10 +11990,10 @@ msgid "" "Classic: Classic uniform random noise.\n" "Perlin: Perlin noise, which gives a more consistent texture.\n" "Billow: Similar to perlin noise, but clumpier.\n" -"Ridged Multifractal: Ridged noise with sharp, jagged features. Creates marble-like " -"textures.\n" -"Voronoi: Divides the surface into voronoi cells, and displaces each one by a random " -"amount. Creates a patchwork texture." +"Ridged Multifractal: Ridged noise with sharp, jagged features. Creates " +"marble-like textures.\n" +"Voronoi: Divides the surface into voronoi cells, and displaces each one by a " +"random amount. Creates a patchwork texture." msgstr "" msgid "Classic" @@ -11708,24 +12015,24 @@ msgid "Fuzzy skin feature size" msgstr "" msgid "" -"The base size of the coherent noise features, in mm. Higher values will result in " -"larger features." +"The base size of the coherent noise features, in mm. Higher values will " +"result in larger features." msgstr "" msgid "Fuzzy Skin Noise Octaves" msgstr "" msgid "" -"The number of octaves of coherent noise to use. Higher values increase the detail of " -"the noise, but also increase computation time." +"The number of octaves of coherent noise to use. Higher values increase the " +"detail of the noise, but also increase computation time." msgstr "" msgid "Fuzzy skin noise persistence" msgstr "" msgid "" -"The decay rate for higher octaves of the coherent noise. Lower values will result in " -"smoother noise." +"The decay rate for higher octaves of the coherent noise. Lower values will " +"result in smoother noise." msgstr "" msgid "Filter out tiny gaps" @@ -11735,76 +12042,80 @@ msgid "Layers and Perimeters" msgstr "Camadas e Perímetros" msgid "" -"Don't print gap fill with a length is smaller than the threshold specified (in mm). " -"This setting applies to top, bottom and solid infill and, if using the classic " -"perimeter generator, to wall gap fill. " +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " msgstr "" msgid "" -"Speed of gap infill. Gap usually has irregular line width and should be printed more " -"slowly" +"Speed of gap infill. Gap usually has irregular line width and should be " +"printed more slowly" msgstr "" -"Velocidade de preenchimento de vão. Vazios geralmente têm largura de linha irregular " -"e devem ser impressas mais lentamente" +"Velocidade de preenchimento de vão. Vazios geralmente têm largura de linha " +"irregular e devem ser impressas mais lentamente" msgid "Precise Z height" msgstr "Altura Z precisa" msgid "" -"Enable this to get precise z height of object after slicing. It will get the precise " -"object height by fine-tuning the layer heights of the last few layers. Note that " -"this is an experimental parameter." +"Enable this to get precise z height of object after slicing. It will get the " +"precise object height by fine-tuning the layer heights of the last few " +"layers. Note that this is an experimental parameter." msgstr "" -"Ative isto para obter altura Z precisa do objeto após fatiar. Ele obterá a altura do " -"objeto exata ajustando as alturas da camada das últimas camadas. Observe que este é " -"um parâmetro experimental." +"Ative isto para obter altura Z precisa do objeto após fatiar. Ele obterá a " +"altura do objeto exata ajustando as alturas da camada das últimas camadas. " +"Observe que este é um parâmetro experimental." msgid "Arc fitting" msgstr "Ajuste de arco (Arc fitting)" msgid "" -"Enable this to get a G-code file which has G2 and G3 moves. The fitting tolerance is " -"same as the resolution. \n" +"Enable this to get a G-code file which has G2 and G3 moves. The fitting " +"tolerance is same as the resolution. \n" "\n" -"Note: For Klipper machines, this option is recommended to be disabled. Klipper does " -"not benefit from arc commands as these are split again into line segments by the " -"firmware. This results in a reduction in surface quality as line segments are " -"converted to arcs by the slicer and then back to line segments by the firmware." +"Note: For Klipper machines, this option is recommended to be disabled. " +"Klipper does not benefit from arc commands as these are split again into " +"line segments by the firmware. This results in a reduction in surface " +"quality as line segments are converted to arcs by the slicer and then back " +"to line segments by the firmware." msgstr "" -"Habilite isso para obter um arquivo de código G, que tenha movimentos G2 e G3. A " -"tolerância adequada é a mesma que a resolução. \n" +"Habilite isso para obter um arquivo de código G, que tenha movimentos G2 e " +"G3. A tolerância adequada é a mesma que a resolução. \n" "\n" -"Nota: Para máquinas klipper, esta opção é recomendada estar desativada. Klipper não " -"beneficia de comandos de arco pois eles são divididos novamente em segmentos de " -"linha pelo firmware. Isso resulta em uma redução da qualidade de superfície à medida " -"que os segmentos de linha são convertidos em arcos pelo fatiador e depois revertem " -"para segmentos de linha pelo firmware." +"Nota: Para máquinas klipper, esta opção é recomendada estar desativada. " +"Klipper não beneficia de comandos de arco pois eles são divididos novamente " +"em segmentos de linha pelo firmware. Isso resulta em uma redução da " +"qualidade de superfície à medida que os segmentos de linha são convertidos " +"em arcos pelo fatiador e depois revertem para segmentos de linha pelo " +"firmware." msgid "Add line number" msgstr "Adicionar número da linha" msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" msgstr "" -"Habilitar isso para adicionar o número da linha (Nx) no início de cada linha do G-" -"Code" +"Habilitar isso para adicionar o número da linha (Nx) no início de cada linha " +"do G-Code" msgid "Scan first layer" msgstr "Escanear primeira camada" -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 "" -"Habilitar isso para ativar a câmera na impressora para verificar a qualidade da " -"primeira camada" +"Habilitar isso para ativar a câmera na impressora para verificar a qualidade " +"da primeira camada" msgid "Nozzle type" msgstr "Tipo de bico" msgid "" -"The metallic material of nozzle. This determines the abrasive resistance of nozzle, " -"and what kind of filament can be printed" +"The metallic material of nozzle. This determines the abrasive resistance of " +"nozzle, and what kind of filament can be printed" msgstr "" -"O material metálico do bico. Isso determina a resistência ao desgaste do bico e que " -"tipo de filamento pode ser impresso" +"O material metálico do bico. Isso determina a resistência ao desgaste do " +"bico e que tipo de filamento pode ser impresso" msgid "Undefine" msgstr "Não definido" @@ -11822,10 +12133,11 @@ msgid "Nozzle HRC" msgstr "Bico HRC" msgid "" -"The nozzle's hardness. Zero means no checking for nozzle's hardness during slicing." +"The nozzle's hardness. Zero means no checking for nozzle's hardness during " +"slicing." msgstr "" -"A dureza do bico. Zero significa que não há verificação da dureza do bico durante a " -"fatiamento." +"A dureza do bico. Zero significa que não há verificação da dureza do bico " +"durante a fatiamento." msgid "HRC" msgstr "RH" @@ -11853,32 +12165,35 @@ msgstr "Melhor posição do objeto" msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." msgstr "" -"Melhor posição de arranjo automático na faixa [0,1] em relação ao formato da mesa." +"Melhor posição de arranjo automático na faixa [0,1] em relação ao formato da " +"mesa." msgid "" -"Enable this option if machine has auxiliary part cooling fan. G-code command: M106 " -"P2 S(0-255)." +"Enable this option if machine has auxiliary part cooling fan. G-code " +"command: M106 P2 S(0-255)." msgstr "" -"Habilitar esta opção se a máquina tiver ventilador auxiliar de resfriamento da peça. " -"Comando G-code: M106 P2 S(0-255)." +"Habilitar esta opção se a máquina tiver ventilador auxiliar de resfriamento " +"da peça. Comando G-code: 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 commands from custom gcodes (they act as a sort of 'barrier').\n" -"It won't move fan commands into the start gcode if the 'only custom start gcode' is " -"activated.\n" +"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 commands from custom gcodes (they act as a sort of " +"'barrier').\n" +"It won't move fan commands into the start gcode if the 'only custom start " +"gcode' is activated.\n" "Use 0 to deactivate." msgstr "" -"Comece o ventilador este número de segundos antes do tempo de início do alvo (você " -"pode usar segundos fracionários). Ele assume aceleração infinita para esta " -"estimativa de tempo e só levará em conta os movimentos G1 e G0 (o ajuste de arco não " -"é suportado).\n" -"Não moverá comandos do ventilador de gcodes personalizados (eles funcionam como uma " -"espécie de 'barreira').\n" -"Não moverá comandos do ventilador para o início do gcode se o 'apenas gcode de " -"início personalizado' estiver ativado.\n" +"Comece o ventilador este número de segundos antes do tempo de início do alvo " +"(você pode usar segundos fracionários). Ele assume aceleração infinita para " +"esta estimativa de tempo e só levará em conta os movimentos G1 e G0 (o " +"ajuste de arco não é suportado).\n" +"Não moverá comandos do ventilador de gcodes personalizados (eles funcionam " +"como uma espécie de 'barreira').\n" +"Não moverá comandos do ventilador para o início do gcode se o 'apenas gcode " +"de início personalizado' estiver ativado.\n" "Use 0 para desativar." msgid "Only overhangs" @@ -11891,17 +12206,18 @@ msgid "Fan kick-start time" msgstr "Tempo de inicialização do ventilador" 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 "" -"Emita um comando de velocidade máxima do ventilador por esta quantidade de segundos " -"antes de reduzir para a velocidade alvo para iniciar o ventilador de resfriamento.\n" -"Isto é útil para ventiladores onde um baixo PWM/potência pode ser insuficiente para " -"fazer o ventilador começar a girar a partir de uma parada, ou para fazer o " -"ventilador alcançar a velocidade mais rapidamente.\n" +"Emita um comando de velocidade máxima do ventilador por esta quantidade de " +"segundos antes de reduzir para a velocidade alvo para iniciar o ventilador " +"de resfriamento.\n" +"Isto é útil para ventiladores onde um baixo PWM/potência pode ser " +"insuficiente para fazer o ventilador começar a girar a partir de uma parada, " +"ou para fazer o ventilador alcançar a velocidade mais rapidamente.\n" "Defina como 0 para desativar." msgid "Time cost" @@ -11920,8 +12236,8 @@ msgid "" "This option is enabled if machine support controlling chamber temperature\n" "G-code command: M141 S(0-255)" msgstr "" -"Esta opção está habilitada se a máquina suportar o controle da temperatura da " -"câmara.\n" +"Esta opção está habilitada se a máquina suportar o controle da temperatura " +"da câmara.\n" "Comando G-code: M141 S(0-255)" msgid "Support air filtration" @@ -11931,8 +12247,8 @@ msgid "" "Enable this if printer support air filtration\n" "G-code command: M106 P3 S(0-255)" msgstr "" -"Esta opção está habilitada se a máquina suportar o controle da temperatura da " -"câmara.\n" +"Esta opção está habilitada se a máquina suportar o controle da temperatura " +"da câmara.\n" "Comando G-code: M141 S(0-255)" msgid "G-code flavor" @@ -11960,15 +12276,16 @@ msgid "Label objects" msgstr "Etiquetar objetos" 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." +"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 "" -"Ative isso para adicionar comentários no G-Code etiquetando movimentos de impressão " -"com a qual objeto eles pertencem, o que é útil para o plugin CancelObject do " -"Octoprint. Esta configuração NÃO é compatível com a configuração de Material " -"Múltiplo de Extrusora Única e Limpeza no Objeto / Limpeza no Preenchimento." +"Ative isso para adicionar comentários no G-Code etiquetando movimentos de " +"impressão com a qual objeto eles pertencem, o que é útil para o plugin " +"CancelObject do Octoprint. Esta configuração NÃO é compatível com a " +"configuração de Material Múltiplo de Extrusora Única e Limpeza no Objeto / " +"Limpeza no Preenchimento." msgid "Exclude objects" msgstr "Excluir objetos" @@ -11981,23 +12298,23 @@ msgstr "G-code detalhado" 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." +"descriptive text. If you print from SD card, the additional weight of the " +"file could make your firmware slow down." msgstr "" -"Ative isso para obter um arquivo G-code comentado, com cada linha explicada por um " -"texto descritivo. Se você imprimir do cartão SD, o peso adicional do arquivo pode " -"fazer com que o firmware fique mais lento." +"Ative isso para obter um arquivo G-code comentado, com cada linha explicada " +"por um texto descritivo. Se você imprimir do cartão SD, o peso adicional do " +"arquivo pode fazer com que o firmware fique mais lento." msgid "Infill combination" msgstr "Combinar preenchimento" msgid "" -"Automatically Combine sparse infill of several layers to print together to reduce " -"time. Wall is still printed with original layer height." +"Automatically Combine sparse infill of several layers to print together to " +"reduce time. Wall is still printed with original layer height." msgstr "" -"Combina automaticamente o preenchimento esparso de várias camadas para imprimir " -"juntas e reduzir o tempo. O perímetro ainda é impresso com a altura original da " -"camada." +"Combina automaticamente o preenchimento esparso de várias camadas para " +"imprimir juntas e reduzir o tempo. O perímetro ainda é impresso com a altura " +"original da camada." msgid "Infill combination - Max layer height" msgstr "" @@ -12005,22 +12322,22 @@ msgstr "" msgid "" "Maximum layer height for the combined sparse infill. \n" "\n" -"Set it to 0 or 100% to use the nozzle diameter (for maximum reduction in print time) " -"or a value of ~80% to maximize sparse infill strength.\n" +"Set it to 0 or 100% to use the nozzle diameter (for maximum reduction in " +"print time) or a value of ~80% to maximize sparse infill strength.\n" "\n" -"The number of layers over which infill is combined is derived by dividing this value " -"with the layer height and rounded down to the nearest decimal.\n" +"The number of layers over which infill is combined is derived by dividing " +"this value with the layer height and rounded down to the nearest decimal.\n" "\n" -"Use either absolute mm values (eg. 0.32mm for a 0.4mm nozzle) or % values (eg 80%). " -"This value must not be larger than the nozzle diameter." +"Use either absolute mm values (eg. 0.32mm for a 0.4mm nozzle) or % values " +"(eg 80%). This value must not be larger than the nozzle diameter." msgstr "" msgid "Filament to print internal sparse infill." msgstr "Filamento para imprimir preenchimento esparso interno." msgid "" -"Line width of internal sparse infill. If expressed as a %, it will be computed over " -"the nozzle diameter." +"Line width of internal sparse infill. If expressed as a %, it will be " +"computed over the nozzle diameter." msgstr "" "Largura da linha do preenchimento esparso interno. Se expresso como %, será " "calculado sobre o diâmetro do bico." @@ -12030,31 +12347,33 @@ msgstr "Sobreposição de preenchimento/perímetro" #, no-c-format, no-boost-format msgid "" -"Infill area is enlarged slightly to overlap with wall for better bonding. The " -"percentage value is relative to line width of sparse infill. Set this value to " -"~10-15% to minimize potential over extrusion and accumulation of material resulting " -"in rough top surfaces." +"Infill area is enlarged slightly to overlap with wall for better bonding. " +"The percentage value is relative to line width of sparse infill. Set this " +"value to ~10-15% to minimize potential over extrusion and accumulation of " +"material resulting in rough top surfaces." msgstr "" -"A área de preenchimento é aumentada ligeiramente para se sobrepor à parede para uma " -"melhor ligação. O valor percentual é relativo à largura da linha do preencimento " -"esparso. Defina este valor como ~10-15% para minimizar uma potencial sobre extrusão " -"e acumulo de material resultando em superfícies superiores ásperas." +"A área de preenchimento é aumentada ligeiramente para se sobrepor à parede " +"para uma melhor ligação. O valor percentual é relativo à largura da linha do " +"preencimento esparso. Defina este valor como ~10-15% para minimizar uma " +"potencial sobre extrusão e acumulo de material resultando em superfícies " +"superiores ásperas." msgid "Top/Bottom solid infill/wall overlap" msgstr "Sobreposição Superior/Inferior de preenchimento sólido/parede" #, no-c-format, no-boost-format msgid "" -"Top solid infill area is enlarged slightly to overlap with wall for better bonding " -"and to minimize the appearance of pinholes where the top infill meets the walls. A " -"value of 25-30% is a good starting point, minimizing the appearance of pinholes. The " -"percentage value is relative to line width of sparse infill" +"Top solid infill area is enlarged slightly to overlap with wall for better " +"bonding and to minimize the appearance of pinholes where the top infill " +"meets the walls. A value of 25-30% is a good starting point, minimizing the " +"appearance of pinholes. The percentage value is relative to line width of " +"sparse infill" msgstr "" -"A área de preenchimento sólido é ligeiramente alargada para se sobrepor à parede " -"para melhor ligação e para minimizar a aparência de buracos onde o preenchimento " -"encontra as paredes. Um valor de 25-30% é um bom ponto de partida, minimizando a " -"aparência dos buracos. O valor percentual é relativo à largura da linha do " -"preenchimento esparso" +"A área de preenchimento sólido é ligeiramente alargada para se sobrepor à " +"parede para melhor ligação e para minimizar a aparência de buracos onde o " +"preenchimento encontra as paredes. Um valor de 25-30% é um bom ponto de " +"partida, minimizando a aparência dos buracos. O valor percentual é relativo " +"à largura da linha do preenchimento esparso" msgid "Speed of internal sparse infill" msgstr "Velocidade do preenchimento esparso interno" @@ -12063,18 +12382,20 @@ msgid "Interface shells" msgstr "Paredes de interface" msgid "" -"Force the generation of solid shells between adjacent materials/volumes. Useful for " -"multi-extruder prints with translucent materials or manual soluble support material" +"Force the generation of solid shells between adjacent materials/volumes. " +"Useful for multi-extruder prints with translucent materials or manual " +"soluble support material" msgstr "" -"Força a geração de perímetros sólidos entre materiais/volumes adjacentes. Útil para " -"impressões com múltiplos extrusores com materiais translúcidos ou suporte solúvel " -"manual" +"Força a geração de perímetros sólidos entre materiais/volumes adjacentes. " +"Útil para impressões com múltiplos extrusores com materiais translúcidos ou " +"suporte solúvel manual" msgid "Maximum width of a segmented region" msgstr "Largura máxima de uma região segmentada" msgid "Maximum width of a segmented region. Zero disables this feature." -msgstr "Largura máxima de uma região segmentada. Zero desativa essa funcionalidade." +msgstr "" +"Largura máxima de uma região segmentada. Zero desativa essa funcionalidade." msgid "Interlocking depth of a segmented region" msgstr "Profundidade de entrelaçamento de uma região segmentada" @@ -12090,9 +12411,9 @@ msgid "Use beam interlocking" msgstr "" msgid "" -"Generate interlocking beam structure at the locations where different filaments " -"touch. This improves the adhesion between filaments, especially models printed in " -"different materials." +"Generate interlocking beam structure at the locations where different " +"filaments touch. This improves the adhesion between filaments, especially " +"models printed in different materials." msgstr "" msgid "Interlocking beam width" @@ -12111,36 +12432,36 @@ msgid "Interlocking beam layers" msgstr "" msgid "" -"The height of the beams of the interlocking structure, measured in number of layers. " -"Less layers is stronger, but more prone to defects." +"The height of the beams of the interlocking structure, measured in number of " +"layers. Less layers is stronger, but more prone to defects." msgstr "" msgid "Interlocking depth" msgstr "" msgid "" -"The distance from the boundary between filaments to generate interlocking structure, " -"measured in cells. Too few cells will result in poor adhesion." +"The distance from the boundary between filaments to generate interlocking " +"structure, measured in cells. Too few cells will result in poor adhesion." msgstr "" msgid "Interlocking boundary avoidance" msgstr "" msgid "" -"The distance from the outside of a model where interlocking structures will not be " -"generated, measured in cells." +"The distance from the outside of a model where interlocking structures will " +"not be generated, measured in cells." msgstr "" msgid "Ironing Type" msgstr "Tipo do passar ferro" 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" +"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 "" -"Passar a ferro utiliza um pequeno fluxo para imprimir na mesma altura da superfície " -"novamente para deixá-la mais lisa. Esta configuração controla qual camada está sendo " -"passada a ferro" +"Passar a ferro utiliza um pequeno fluxo para imprimir na mesma altura da " +"superfície novamente para deixá-la mais lisa. Esta configuração controla " +"qual camada está sendo passada a ferro" msgid "No ironing" msgstr "Desativado" @@ -12164,11 +12485,12 @@ msgid "Ironing flow" msgstr "Fluxo do passar ferro" 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" +"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 "" -"A quantidade de material a extrudar durante o passar a ferro. Relativo ao fluxo da " -"altura normal da camada. Um valor muito alto resulta em superextrusão na superfície" +"A quantidade de material a extrudar durante o passar a ferro. Relativo ao " +"fluxo da altura normal da camada. Um valor muito alto resulta em " +"superextrusão na superfície" msgid "Ironing line spacing" msgstr "Espaçamento de linha do passar ferro" @@ -12180,8 +12502,8 @@ msgid "Ironing inset" msgstr "" msgid "" -"The distance to keep from the edges. A value of 0 sets this to half of the nozzle " -"diameter" +"The distance to keep from the edges. A value of 0 sets this to half of the " +"nozzle diameter" msgstr "" msgid "Ironing speed" @@ -12194,24 +12516,25 @@ msgid "Ironing angle" msgstr "Ângulo do passar ferro" msgid "" -"The angle ironing is done at. A negative number disables this function and uses the " -"default method." +"The angle ironing is done at. A negative number disables this function and " +"uses the default method." msgstr "" -"O ângulo em que o passar a ferro é feito. Um número negativo desativa essa função e " -"usa o método padrão." +"O ângulo em que o passar a ferro é feito. Um número negativo desativa essa " +"função e usa o método padrão." msgid "This gcode part is inserted at every layer change after lift z" -msgstr "Esta parte do gcode é inserida em cada mudança de camada após levantar z" +msgstr "" +"Esta parte do gcode é inserida em cada mudança de camada após levantar z" msgid "Supports silent mode" msgstr "Suporta modo silencioso" msgid "" -"Whether the machine supports silent mode in which machine use lower acceleration to " -"print" +"Whether the machine supports silent mode in which machine use lower " +"acceleration to print" msgstr "" -"Se a máquina suporta o modo silencioso, no qual a máquina usa uma aceleração mais " -"baixa para imprimir" +"Se a máquina suporta o modo silencioso, no qual a máquina usa uma aceleração " +"mais baixa para imprimir" msgid "Emit limits to G-code" msgstr "Emitir limites para o G-code" @@ -12227,11 +12550,11 @@ msgstr "" "Esta opção será ignorada se o tipo do G-code estiver definido para Klipper." msgid "" -"This G-code will be used as a code for the pause print. User can insert pause G-code " -"in gcode viewer" +"This G-code will be used as a code for the pause print. User can insert " +"pause G-code in gcode viewer" msgstr "" -"Este G-code será usado como um código para pausar a impressão. O usuário pode " -"inserir o G-code de pausa no visualizador de G-code" +"Este G-code será usado como um código para pausar a impressão. O usuário " +"pode inserir o G-code de pausa no visualizador de G-code" msgid "This G-code will be used as a custom code" msgstr "Este G-code será usado como um código personalizado" @@ -12246,14 +12569,15 @@ msgid "Flow Compensation Model" msgstr "Modelo de Compensação de Fluxo" msgid "" -"Flow Compensation Model, used to adjust the flow for small infill areas. The model " -"is expressed as a comma separated pair of values for extrusion length and flow " -"correction factors, one per line, in the following format: \"1.234,5.678\"" +"Flow Compensation Model, used to adjust the flow for small infill areas. The " +"model is expressed as a comma separated pair of values for extrusion length " +"and flow correction factors, one per line, in the following format: " +"\"1.234,5.678\"" msgstr "" "Modelo de Compensação de Fluxo, usado para ajustar o fluxo para áreas de " -"preenchimento pequenas. O modelo é expresso como um par de valores separados por " -"vírgula para o comprimento de extrusão e os fatores de correção de fluxo, um por " -"linha, no seguinte formato: \"1.234,5.678\"" +"preenchimento pequenas. O modelo é expresso como um par de valores separados " +"por vírgula para o comprimento de extrusão e os fatores de correção de " +"fluxo, um por linha, no seguinte formato: \"1.234,5.678\"" msgid "Maximum speed X" msgstr "Velocidade máxima X" @@ -12355,77 +12679,82 @@ msgid "Maximum acceleration for travel" msgstr "Aceleração máxima para deslocamento" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" -msgstr "Aceleração máxima para deslocamento (M204 T), aplica-se apenas ao Marlin 2" +msgstr "" +"Aceleração máxima para deslocamento (M204 T), aplica-se apenas ao Marlin 2" msgid "" -"Part cooling fan speed may be increased when auto cooling is enabled. This is the " -"maximum speed limitation of part cooling fan" +"Part cooling fan speed may be increased when auto cooling is enabled. This " +"is the maximum speed limitation of part cooling fan" msgstr "" -"A velocidade do ventilador de resfriamento da peça pode ser aumentada quando o " -"resfriamento automático está habilitado. Este é o limite máximo de velocidade do " -"ventilador de resfriamento da peça" +"A velocidade do ventilador de resfriamento da peça pode ser aumentada quando " +"o resfriamento automático está habilitado. Este é o limite máximo de " +"velocidade do ventilador de resfriamento da peça" msgid "Max" msgstr "Máx" msgid "" -"The largest printable layer height for extruder. Used tp limits the maximum layer " -"hight when enable adaptive layer height" +"The largest printable layer height for extruder. Used tp limits the maximum " +"layer hight when enable adaptive layer height" msgstr "" -"A maior altura de camada imprimível para o extrusor. Usado para limitar a altura " -"máxima da camada quando a altura da camada adaptativa está ativada" +"A maior altura de camada imprimível para o extrusor. Usado para limitar a " +"altura máxima da camada quando a altura da camada adaptativa está ativada" msgid "Extrusion rate smoothing" msgstr "Suavização da extrusão" 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" +"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" +"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" +"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" +"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 "" -"Este parâmetro suaviza as mudanças súbitas na taxa de extrusão que ocorrem quando a " -"impressora faz a transição de uma extrusão de alto fluxo (alta velocidade/maior " -"largura) para uma extrusão de baixo fluxo (baixa velocidade/menor largura) e vice-" -"versa.\n" +"Este parâmetro suaviza as mudanças súbitas na taxa de extrusão que ocorrem " +"quando a impressora faz a transição de uma extrusão de alto fluxo (alta " +"velocidade/maior largura) para uma extrusão de baixo fluxo (baixa velocidade/" +"menor largura) e vice-versa.\n" "\n" -"Define a taxa máxima pela qual o fluxo volumétrico extrudado em mm3/seg pode mudar " -"ao longo do tempo. Valores mais altos significam que mudanças de taxa de extrusão " -"mais altas são permitidas, resultando em transições de velocidade mais rápidas.\n" +"Define a taxa máxima pela qual o fluxo volumétrico extrudado em mm3/seg pode " +"mudar ao longo do tempo. Valores mais altos significam que mudanças de taxa " +"de extrusão mais altas são permitidas, resultando em transições de " +"velocidade mais rápidas.\n" "\n" "Um valor de 0 desativa o recurso.\n" "\n" -"Para uma impressora de acionamento direto de alta velocidade e alto fluxo (como a " -"Bambu lab ou Voron), esse valor geralmente não é necessário. No entanto, pode " -"fornecer alguns benefícios marginais em certos casos em que as velocidades das " -"características variam muito. Por exemplo, quando há desacelerações agressivas " -"devido a overhangs. Nesses casos, um valor alto de cerca de 300-350mm3/s2 é " -"recomendado, pois isso permite apenas suavização suficiente para ajudar o Pressure " -"advance a alcançar uma transição de fluxo mais suave.\n" +"Para uma impressora de acionamento direto de alta velocidade e alto fluxo " +"(como a Bambu lab ou Voron), esse valor geralmente não é necessário. No " +"entanto, pode fornecer alguns benefícios marginais em certos casos em que as " +"velocidades das características variam muito. Por exemplo, quando há " +"desacelerações agressivas devido a overhangs. Nesses casos, um valor alto de " +"cerca de 300-350mm3/s2 é recomendado, pois isso permite apenas suavização " +"suficiente para ajudar o Pressure advance a alcançar uma transição de fluxo " +"mais suave.\n" "\n" -"Para impressoras mais lentas sem Pressure advance, o valor deve ser definido muito " -"mais baixo. Um valor de 10-15mm3/s2 é um bom ponto de partida para extrusoras de " -"acionamento direto e 5-10mm3/s2 para estilo Bowden.\n" +"Para impressoras mais lentas sem Pressure advance, o valor deve ser definido " +"muito mais baixo. Um valor de 10-15mm3/s2 é um bom ponto de partida para " +"extrusoras de acionamento direto e 5-10mm3/s2 para estilo Bowden.\n" "\n" "Este recurso é conhecido como Equalizador de Pressão no slicer Prusa.\n" "\n" @@ -12438,9 +12767,9 @@ msgid "Smoothing segment length" msgstr "Distancia do segmento de suavização" 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" +"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" @@ -12452,43 +12781,46 @@ msgid "Apply only on external features" msgstr "" msgid "" -"Applies extrusion rate smoothing only on external perimeters and overhangs. This can " -"help reduce artefacts due to sharp speed transitions on externally visible overhangs " -"without impacting the print speed of features that will not be visible to the user." +"Applies extrusion rate smoothing only on external perimeters and overhangs. " +"This can help reduce artefacts due to sharp speed transitions on externally " +"visible overhangs without impacting the print speed of features that will " +"not be visible to the user." msgstr "" msgid "Minimum speed for part cooling fan" msgstr "Velocidade mínima para o ventilador de resfriamento da peça" 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)" +"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 "" -"Velocidade do ventilador auxiliar de resfriamento de peças. O ventilador auxiliar " -"funcionará nesta velocidade durante a impressão, exceto nas primeiras camadas, que " -"são definidas por camadas sem resfriamento.\n" +"Velocidade do ventilador auxiliar de resfriamento de peças. O ventilador " +"auxiliar funcionará nesta velocidade durante a impressão, exceto nas " +"primeiras camadas, que são definidas por camadas sem resfriamento.\n" "\n" -"Por favor, habilite o ventilador auxiliar nas configurações da impressora para usar " -"esta função. Comando G-code: M106 P2 S(0-255)" +"Por favor, habilite o ventilador auxiliar nas configurações da impressora " +"para usar esta função. Comando G-code: M106 P2 S(0-255)" msgid "Min" msgstr "Mín" msgid "" -"The lowest printable layer height for extruder. Used tp limits the minimum layer " -"hight when enable adaptive layer height" +"The lowest printable layer height for extruder. Used tp limits the minimum " +"layer hight when enable adaptive layer height" msgstr "" -"A menor altura de camada imprimível para o extrusor. Usado para limitar a altura " -"mínima da camada ao habilitar a altura de camada adaptativa" +"A menor altura de camada imprimível para o extrusor. Usado para limitar a " +"altura mínima da camada ao habilitar a altura de camada adaptativa" msgid "Min print speed" msgstr "Velocidade de impressão mínima" msgid "" -"The minimum print speed to which the printer slows down to maintain the minimum " -"layer time defined above when the slowdown for better layer cooling is enabled." +"The minimum print speed to which the printer slows down to maintain the " +"minimum layer time defined above when the slowdown for better layer cooling " +"is enabled." msgstr "" msgid "Diameter of nozzle" @@ -12498,8 +12830,8 @@ msgid "Configuration notes" msgstr "Notas de configuração" msgid "" -"You can put here your personal notes. This text will be added to the G-code header " -"comments." +"You can put here your personal notes. This text will be added to the G-code " +"header comments." msgstr "" "Você pode colocar aqui suas notas pessoais. Este texto será adicionado aos " "comentários do cabeçalho do G-code." @@ -12508,11 +12840,11 @@ msgid "Host Type" msgstr "Tipo de Host" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must contain the " -"kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgstr "" -"O Orca Slicer pode carregar arquivos de código G para um hospedeiro de impressora. " -"Este campo deve conter o tipo de hospedeiro." +"O Orca Slicer pode carregar arquivos de código G para um hospedeiro de " +"impressora. Este campo deve conter o tipo de hospedeiro." msgid "Nozzle volume" msgstr "Volume do bico" @@ -12524,7 +12856,8 @@ msgid "Cooling tube position" msgstr "Posição do tubo de resfriamento" msgid "Distance of the center-point of the cooling tube from the extruder tip." -msgstr "Distância do ponto central do tubo de resfriamento da ponta do extrusor." +msgstr "" +"Distância do ponto central do tubo de resfriamento da ponta do extrusor." msgid "Cooling tube length" msgstr "Comprimento do tubo de resfriamento" @@ -12538,58 +12871,63 @@ msgid "High extruder current on filament swap" msgstr "Corrente da extrusora alta na troca de filamento" 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." +"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 "" -"Pode ser benéfico aumentar a corrente do motor da extrusora durante a sequência de " -"troca de filamento para permitir taxas de moldeamento rápidas e para superar a " -"resistência ao carregar um filamento com uma ponta com forma irregular." +"Pode ser benéfico aumentar a corrente do motor da extrusora durante a " +"sequência de troca de filamento para permitir taxas de moldeamento rápidas e " +"para superar a resistência ao carregar um filamento com uma ponta com forma " +"irregular." msgid "Filament parking position" msgstr "Posição de estacionamento do filamento" msgid "" -"Distance of the extruder tip from the position where the filament is parked when " -"unloaded. This should match the value in printer firmware." +"Distance of the extruder tip from the position where the filament is parked " +"when unloaded. This should match the value in printer firmware." msgstr "" -"Distância da ponta do extrusor da posição onde o filamento é estacionado quando " -"descarregado. Isso deve corresponder ao valor no firmware da impressora." +"Distância da ponta do extrusor da posição onde o filamento é estacionado " +"quando descarregado. Isso deve corresponder ao valor no firmware da " +"impressora." msgid "Extra loading distance" msgstr "Distância de carregamento extra" 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." +"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 "" -"Quando definido como zero, a distância que o filamento é movido da posição de " -"estacionamento durante o carregamento é exatamente a mesma que foi movida durante o " -"descarregamento. Quando positivo, é carregado mais longe, se negativo, o movimento " -"de carregamento é mais curto do que o descarregamento." +"Quando definido como zero, a distância que o filamento é movido da posição " +"de estacionamento durante o carregamento é exatamente a mesma que foi movida " +"durante o descarregamento. Quando positivo, é carregado mais longe, se " +"negativo, o movimento de carregamento é mais curto do que o descarregamento." msgid "Start end points" msgstr "Pontos de início e fim" msgid "The start and end points which is from cutter area to garbage can." -msgstr "Os pontos de início e fim que vão da área do cortador até a lata de lixo." +msgstr "" +"Os pontos de início e fim que vão da área do cortador até a lata de lixo." msgid "Reduce infill retraction" msgstr "Reduzir retração durante o preenchimento" 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" +"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 "" -"Não retrair quando o movimento está na área de preenchimento completamente. Isso " -"significa que o vazamento não pode ser visto. Isso pode reduzir o número de " -"retratações para modelos complexos e economizar tempo de impressão, mas torna a " -"geração de fatiamento e G-code mais lenta" +"Não retrair quando o movimento está na área de preenchimento completamente. " +"Isso significa que o vazamento não pode ser visto. Isso pode reduzir o " +"número de retratações para modelos complexos e economizar tempo de " +"impressão, mas torna a geração de fatiamento e G-code mais lenta" msgid "" -"This option will drop the temperature of the inactive extruders to prevent oozing." +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." msgstr "" msgid "Filename format" @@ -12608,23 +12946,23 @@ msgid "Make overhangs printable - Maximum angle" msgstr "Overhangs imprimíveis - ângulo máx" 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." +"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 "" "Ângulo máximo do overhang permitido antes de fazer ângulos mais íngremes " -"imprimíveis. 90° não vai fazer nenhuma mudança no modelo e vai permitir qualquer " -"overhang. 0 vai substituir todos overhangs por uma forma cônica." +"imprimíveis. 90° não vai fazer nenhuma mudança no modelo e vai permitir " +"qualquer overhang. 0 vai substituir todos overhangs por uma forma cônica." msgid "Make overhangs printable - Hole area" msgstr "Overhangs imprimíveis - área do furo" 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." +"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 "" -"Área maxima de um furo na base do modelo antes que ele seja preenchido por uma forma " -"cônica. Um valor 0 irá preencher todos os furos do modelo." +"Área maxima de um furo na base do modelo antes que ele seja preenchido por " +"uma forma cônica. Um valor 0 irá preencher todos os furos do modelo." msgid "mm²" msgstr "mm2" @@ -12634,22 +12972,22 @@ msgstr "Detectar overhangs" #, 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." +"Detect the overhang percentage relative to line width and use different " +"speed to print. For 100%% overhang, bridge speed is used." msgstr "" -"Detecta a porcentagem relativa de overhang em relação a largura do perímetro e usa " -"uma velocidade diferente de impressão. Para overhangs 100%%, a velocidade de ponte é " -"usada." +"Detecta a porcentagem relativa de overhang em relação a largura do perímetro " +"e usa uma velocidade diferente de impressão. Para overhangs 100%%, a " +"velocidade de ponte é usada." msgid "Filament to print walls" msgstr "" msgid "" -"Line width of inner wall. If expressed as a %, it will be computed over the nozzle " -"diameter." +"Line width of inner wall. If expressed as a %, it will be computed over the " +"nozzle diameter." msgstr "" -"Largura do perímetro interno. Se expressado como %, será computado de acordo com o " -"diâmetro do bico." +"Largura do perímetro interno. Se expressado como %, será computado de acordo " +"com o diâmetro do bico." msgid "Speed of inner wall" msgstr "Velocidade do perímetro interno" @@ -12661,36 +12999,37 @@ msgid "Alternate extra wall" msgstr "Parede extra alternada" msgid "" -"This setting adds an extra wall to every other layer. This way the infill gets " -"wedged vertically between the walls, resulting in stronger prints. \n" +"This setting adds an extra wall to every other layer. This way the infill " +"gets wedged vertically between the walls, resulting in stronger prints. \n" "\n" -"When this option is enabled, the ensure vertical shell thickness option needs to be " -"disabled. \n" +"When this option is enabled, the ensure vertical shell thickness option " +"needs to be disabled. \n" "\n" -"Using lightning infill together with this option is not recommended as there is " -"limited infill to anchor the extra perimeters to." +"Using lightning infill together with this option is not recommended as there " +"is limited infill to anchor the extra perimeters to." msgstr "" -"Esta configuração adiciona um perímetro extra a cada duas camadas. Dessa forma, o " -"preenchimento fica encaixado verticalmente entre as paredes, resultando em " -"impressões mais resistentes. \n" +"Esta configuração adiciona um perímetro extra a cada duas camadas. Dessa " +"forma, o preenchimento fica encaixado verticalmente entre as paredes, " +"resultando em impressões mais resistentes. \n" "\n" "Quando esta opção está ativada, a opção de garantir a espessura vertical do " "perímetro precisa ser desativada. \n" "\n" -"Não é recomendado usar o preenchimento rápido juntamente com esta opção, pois há " -"preenchimento limitado para ancorar os perímetros extras." +"Não é recomendado usar o preenchimento rápido juntamente com esta opção, " +"pois há preenchimento limitado para ancorar os perímetros extras." 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 Orca Slicer config settings by reading environment variables." +"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 Orca Slicer config settings by reading " +"environment variables." msgstr "" -"Se você deseja processar o G-code de saída por meio de scripts personalizados, basta " -"listar seus caminhos absolutos aqui. Separe vários scripts com um ponto e vírgula. " -"Os scripts receberão o caminho absoluto para o arquivo G-code como primeiro " -"argumento, e eles podem acessar as configurações do Orca Slicer lendo variáveis de " -"ambiente." +"Se você deseja processar o G-code de saída por meio de scripts " +"personalizados, basta listar seus caminhos absolutos aqui. Separe vários " +"scripts com um ponto e vírgula. Os scripts receberão o caminho absoluto para " +"o arquivo G-code como primeiro argumento, e eles podem acessar as " +"configurações do Orca Slicer lendo variáveis de ambiente." msgid "Printer type" msgstr "Tipo de impressora" @@ -12730,43 +13069,46 @@ msgstr "Expansão da primeira camada" msgid "Expand the first raft or support layer to improve bed plate adhesion" msgstr "" -"Expanda a primeira camada da Jangada ou Suporte para melhorar a adesão à mesa de " -"impressão" +"Expanda a primeira camada da Jangada ou Suporte para melhorar a adesão à " +"mesa de impressão" msgid "Raft layers" msgstr "Camadas da Jangada" msgid "" -"Object will be raised by this number of support layers. Use this function to avoid " -"wrapping when print ABS" +"Object will be raised by this number of support layers. Use this function to " +"avoid wrapping when print ABS" msgstr "" -"O objeto será elevado por este número de camadas de suporte. Use esta função para " -"evitar o enrugamento ao imprimir ABS" +"O objeto será elevado por este número de camadas de suporte. Use esta função " +"para evitar o enrugamento ao imprimir ABS" msgid "" -"G-code path is generated after simplifying 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" +"G-code path is generated after simplifying 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 "" -"O caminho do G-code é gerado após simplificar o contorno do modelo para evitar " -"muitos pontos e linhas de código G no arquivo de código G. Um valor menor significa " -"maior resolução e mais tempo para fatiar" +"O caminho do G-code é gerado após simplificar o contorno do modelo para " +"evitar muitos pontos e linhas de código G no arquivo de código G. Um valor " +"menor significa maior resolução e mais tempo para fatiar" msgid "Travel distance threshold" msgstr "Limiar de distância de deslocamento" -msgid "Only trigger retraction when the travel distance is longer than this threshold" +msgid "" +"Only trigger retraction when the travel distance is longer than this " +"threshold" msgstr "" -"Disparar a retração somente quando a distância da deslocamento for maior que este " -"limite" +"Disparar a retração somente quando a distância da deslocamento for maior que " +"este limite" msgid "Retract amount before wipe" msgstr "Quantidade de retração antes da limpeza" -msgid "The length of fast retraction before wipe, relative to retraction length" +msgid "" +"The length of fast retraction before wipe, relative to retraction length" msgstr "" -"O comprimento da retração rápida antes da limpeza, em relação ao comprimento da " -"retração" +"O comprimento da retração rápida antes da limpeza, em relação ao comprimento " +"da retração" msgid "Retract when change layer" msgstr "Retrair ao mudar de camada" @@ -12778,52 +13120,55 @@ msgid "Retract on top layer" msgstr "" msgid "" -"Force a retraction on top layer. Disabling could prevent clog on very slow patterns " -"with small movements, like Hilbert curve" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" msgstr "" msgid "Retraction Length" msgstr "Distância de retração" msgid "" -"Some amount of material in extruder is pulled back to avoid ooze during long travel. " -"Set zero to disable retraction" +"Some amount of material in extruder is pulled back to avoid ooze during long " +"travel. Set zero to disable retraction" msgstr "" -"Alguma quantidade de material no extrusor é puxada para trás para evitar oozing " -"durante viagens longas. Defina zero para desativar a retração" +"Alguma quantidade de material no extrusor é puxada para trás para evitar " +"oozing durante viagens longas. Defina zero para desativar a retração" msgid "Long retraction when cut(experimental)" msgstr "Retração longa quando cortado(experimental)" msgid "" -"Experimental feature.Retracting and cutting off the filament at a longer distance " -"during changes to minimize purge.While this reduces flush significantly, it may also " -"raise the risk of nozzle clogs or other printing problems." +"Experimental feature.Retracting and cutting off the filament at a longer " +"distance during changes to minimize purge.While this reduces flush " +"significantly, it may also raise the risk of nozzle clogs or other printing " +"problems." msgstr "" -"Recurso experimental. Retrair e cortar o filamento a uma distância mais longa " -"durante mudanças para minimizar a purga. Isto reduz significativamente a purga, pode " -"também aumentar o risco de bolhas no bico ou de outros problemas de impressão." +"Recurso experimental. Retrair e cortar o filamento a uma distância mais " +"longa durante mudanças para minimizar a purga. Isto reduz significativamente " +"a purga, pode também aumentar o risco de bolhas no bico ou de outros " +"problemas de impressão." msgid "Retraction distance when cut" msgstr "Distância de retração ao cortar" msgid "" -"Experimental feature.Retraction length before cutting off during filament change" +"Experimental feature.Retraction length before cutting off during filament " +"change" msgstr "" -"Funcionalidade experimental. Comprimento de retração antes de cortar durante a " -"mudança de filamento" +"Funcionalidade experimental. Comprimento de retração antes de cortar durante " +"a mudança de filamento" msgid "Z-hop height" msgstr "Altura de Z-hop" 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" +"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 "" -"Sempre que a retração é feita, o bico é levantado um pouco para criar folga entre o " -"bico e a impressão. Isso evita que o bico atinja a impressão ao se mover. Usar linha " -"espiral para levantar z pode evitar stringing" +"Sempre que a retração é feita, o bico é levantado um pouco para criar folga " +"entre o bico e a impressão. Isso evita que o bico atinja a impressão ao se " +"mover. Usar linha espiral para levantar z pode evitar stringing" msgid "Z hop lower boundary" msgstr "Limite inferior do Z hop" @@ -12839,11 +13184,11 @@ msgid "Z hop upper boundary" msgstr "Limite superior do Z hop" 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" +"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 "" -"Se este valor for positivo, o Z hop só entrará em vigor quando Z estiver acima do " -"parâmetro: \"Limite inferior do Z hop\" e abaixo deste valor" +"Se este valor for positivo, o Z hop só entrará em vigor quando Z estiver " +"acima do parâmetro: \"Limite inferior do Z hop\" e abaixo deste valor" msgid "Z-hop type" msgstr "Tipo de Z-hop" @@ -12861,39 +13206,39 @@ msgid "Traveling angle" msgstr "" msgid "" -"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results in Normal " -"Lift" +"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results " +"in Normal Lift" msgstr "" msgid "Only lift Z above" msgstr "Elevar Z apenas acima de" msgid "" -"If you set this to a positive value, Z lift will only take place above the specified " -"absolute Z." +"If you set this to a positive value, Z lift will only take place above the " +"specified absolute Z." msgstr "" -"Se você definir isso como um valor positivo, a elevação de Z só ocorrerá acima do Z " -"absoluto especificado." +"Se você definir isso como um valor positivo, a elevação de Z só ocorrerá " +"acima do Z absoluto especificado." msgid "Only lift Z below" msgstr "Elevar Z apenas abaixo de" msgid "" -"If you set this to a positive value, Z lift will only take place below the specified " -"absolute Z." +"If you set this to a positive value, Z lift will only take place below the " +"specified absolute Z." msgstr "" -"Se você definir isso como um valor positivo, a elevação de Z só ocorrerá abaixo do Z " -"absoluto especificado." +"Se você definir isso como um valor positivo, a elevação de Z só ocorrerá " +"abaixo do Z absoluto especificado." msgid "On surfaces" msgstr "Nas superfícies" msgid "" -"Enforce Z Hop behavior. This setting is impacted by the above settings (Only lift Z " -"above/below)." +"Enforce Z Hop behavior. This setting is impacted by the above settings (Only " +"lift Z above/below)." msgstr "" -"Forçar Z Hop. Essa configuração é impactada pelas configurações acima (Somente " -"elevar Z acima/abaixo)" +"Forçar Z Hop. Essa configuração é impactada pelas configurações acima " +"(Somente elevar Z acima/abaixo)" msgid "All Surfaces" msgstr "Todas as superfícies" @@ -12911,19 +13256,19 @@ msgid "Extra length on restart" msgstr "Comprimento extra na retração" msgid "" -"When the retraction is compensated after the travel move, the extruder will push " -"this additional amount of filament. This setting is rarely needed." +"When the retraction is compensated after the travel move, the extruder will " +"push this additional amount of filament. This setting is rarely needed." msgstr "" "Quando a retração é compensada após o movimento de deslocamento, o extrusor " -"empurrará essa quantidade adicional de filamento. Esta configuração é raramente " -"necessária." +"empurrará essa quantidade adicional de filamento. Esta configuração é " +"raramente necessária." msgid "" -"When the retraction is compensated after changing tool, the extruder will push this " -"additional amount of filament." +"When the retraction is compensated after changing tool, the extruder will " +"push this additional amount of filament." msgstr "" -"Quando a retração é compensada após a troca de ferramenta, o extrusor empurrará essa " -"quantidade adicional de filamento." +"Quando a retração é compensada após a troca de ferramenta, o extrusor " +"empurrará essa quantidade adicional de filamento." msgid "Retraction Speed" msgstr "Velocidade de retração" @@ -12935,20 +13280,22 @@ msgid "De-retraction Speed" msgstr "Velocidade de desretração" msgid "" -"Speed for reloading filament into extruder. Zero means same speed with retraction" +"Speed for reloading filament into extruder. Zero means same speed with " +"retraction" msgstr "" -"Velocidade para recarregar o filamento no extrusor. Zero significa mesma velocidade " -"de retração" +"Velocidade para recarregar o filamento no extrusor. Zero significa mesma " +"velocidade de retração" msgid "Use firmware retraction" msgstr "Usar retração de firmware" msgid "" -"This experimental setting uses G10 and G11 commands to have the firmware handle the " -"retraction. This is only supported in recent Marlin." +"This experimental setting uses G10 and G11 commands to have the firmware " +"handle the retraction. This is only supported in recent Marlin." msgstr "" -"Esta configuração experimental usa os comandos G10 e G11 para fazer com que o " -"firmware gerencie a retração. Isso é suportado apenas no Marlin mais recente." +"Esta configuração experimental usa os comandos G10 e G11 para fazer com que " +"o firmware gerencie a retração. Isso é suportado apenas no Marlin mais " +"recente." msgid "Show auto-calibration marks" msgstr "Mostrar marcas de autocalibração automática" @@ -12956,9 +13303,11 @@ msgstr "Mostrar marcas de autocalibração automática" msgid "Disable set remaining print time" msgstr "Desabilitar definir tempo de impressão restante" -msgid "Disable generating of the M73: Set remaining print time in the final gcode" +msgid "" +"Disable generating of the M73: Set remaining print time in the final gcode" msgstr "" -"Desativar a geração do M73: Definir tempo restante de impressão no código final" +"Desativar a geração do M73: Definir tempo restante de impressão no código " +"final" msgid "Seam position" msgstr "Posição da costura" @@ -12982,25 +13331,25 @@ msgid "Staggered inner seams" msgstr "Costuras internas escalonadas" msgid "" -"This option causes the inner seams to be shifted backwards based on their depth, " -"forming a zigzag pattern." +"This option causes the inner seams to be shifted backwards based on their " +"depth, forming a zigzag pattern." msgstr "" -"Esta opção faz com que as costuras internas sejam deslocadas para trás com base em " -"sua profundidade, formando um padrão de zigue-zague." +"Esta opção faz com que as costuras internas sejam deslocadas para trás com " +"base em sua profundidade, formando um padrão de zigue-zague." msgid "Seam gap" msgstr "Espaço entre costuras" 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 "" -"Para reduzir a visibilidade da costura em uma extrusão de loop fechado, o loop é " -"interrompido e encurtado por uma quantidade especificada.\n" -"Esta quantidade pode ser especificada em milímetros ou como uma porcentagem do " -"diâmetro atual do extrusor. O valor padrão para este parâmetro é 10%." +"Para reduzir a visibilidade da costura em uma extrusão de loop fechado, o " +"loop é interrompido e encurtado por uma quantidade especificada.\n" +"Esta quantidade pode ser especificada em milímetros ou como uma porcentagem " +"do diâmetro atual do extrusor. O valor padrão para este parâmetro é 10%." msgid "Scarf joint seam (beta)" msgstr "Costura Scarf (beta)" @@ -13014,62 +13363,67 @@ msgid "Conditional scarf joint" msgstr "Costura Scarf condicional" msgid "" -"Apply scarf joints only to smooth perimeters where traditional seams do not conceal " -"the seams at sharp corners effectively." +"Apply scarf joints only to smooth perimeters where traditional seams do not " +"conceal the seams at sharp corners effectively." msgstr "" -"Aplique a Costura Scarf apenas em perímetros suaves onde costuras tradicionais não " -"escondem as costuras em cantos agudos de forma eficaz." +"Aplique a Costura Scarf apenas em perímetros suaves onde costuras " +"tradicionais não escondem as costuras em cantos agudos de forma eficaz." msgid "Conditional angle threshold" msgstr "Ângulo condicional" msgid "" -"This option sets the threshold angle for applying a conditional scarf joint seam.\n" -"If the maximum angle within the perimeter loop exceeds this value (indicating the " -"absence of sharp corners), a scarf joint seam will be used. The default value is " -"155°." +"This option sets the threshold angle for applying a conditional scarf joint " +"seam.\n" +"If the maximum angle within the perimeter loop exceeds this value " +"(indicating the absence of sharp corners), a scarf joint seam will be used. " +"The default value is 155°." msgstr "" -"Esta opção define o ângulo limite para aplicar uma costura scarf condicional.\n" -"Se o ângulo máximo dentro do loop do perímetro exceder esse valor (indicando a " -"ausência de cantos afiados), será usada uma costura scarf. O valor padrão é 155°." +"Esta opção define o ângulo limite para aplicar uma costura scarf " +"condicional.\n" +"Se o ângulo máximo dentro do loop do perímetro exceder esse valor (indicando " +"a ausência de cantos afiados), será usada uma costura scarf. O valor padrão " +"é 155°." msgid "Conditional overhang threshold" msgstr "Overhang condicional" #, no-c-format, no-boost-format msgid "" -"This option determines the overhang threshold for the application of scarf joint " -"seams. If the unsupported portion of the perimeter is less than this threshold, " -"scarf joint seams will be applied. The default threshold is set at 40% of the " -"external wall's width. Due to performance considerations, the degree of overhang is " -"estimated." +"This option determines the overhang threshold for the application of scarf " +"joint seams. If the unsupported portion of the perimeter is less than this " +"threshold, scarf joint seams will be applied. The default threshold is set " +"at 40% of the external wall's width. Due to performance considerations, the " +"degree of overhang is estimated." msgstr "" -"Esta opção determina o limiar de inclinação para a aplicação de costuras Scarf. Se a " -"parte sem suporte do perímetro for inferior a esse limite, as costuras Scarf serão " -"aplicadas. O limite padrão é definido em 40% da largura do perímetro externo. Devido " -"a considerações de desempenho, o grau de inclinação é estimado." +"Esta opção determina o limiar de inclinação para a aplicação de costuras " +"Scarf. Se a parte sem suporte do perímetro for inferior a esse limite, as " +"costuras Scarf serão aplicadas. O limite padrão é definido em 40% da largura " +"do perímetro externo. Devido a considerações de desempenho, o grau de " +"inclinação é estimado." msgid "Scarf joint speed" msgstr "Velocidade da Costura Scarf" msgid "" -"This option sets the printing speed for scarf joints. It is recommended to print " -"scarf joints at a slow speed (less than 100 mm/s). It's also advisable to enable " -"'Extrusion rate smoothing' if the set speed varies significantly from the speed of " -"the outer or inner walls. If the speed specified here is higher than the speed of " -"the outer or inner walls, the printer will default to the slower of the two speeds. " -"When specified as a percentage (e.g., 80%), the speed is calculated based on the " -"respective outer or inner wall speed. The default value is set to 100%." +"This option sets the printing speed for scarf joints. It is recommended to " +"print scarf joints at a slow speed (less than 100 mm/s). It's also " +"advisable to enable 'Extrusion rate smoothing' if the set speed varies " +"significantly from the speed of the outer or inner walls. If the speed " +"specified here is higher than the speed of the outer or inner walls, the " +"printer will default to the slower of the two speeds. When specified as a " +"percentage (e.g., 80%), the speed is calculated based on the respective " +"outer or inner wall speed. The default value is set to 100%." msgstr "" -"Esta opção define a velocidade de impressão para as costuras Scarf. É recomendável " -"imprimir as costuras Scarf em uma velocidade baixa (menor que 100 mm/s). Também é " -"aconselhável habilitar 'Suavização da taxa de extrusão' se a velocidade definida " -"variar significativamente da velocidade das paredes externas ou internas. Se a " -"velocidade especificada aqui for maior que a velocidade das paredes externas ou " -"internas, a impressora utilizará a mais lenta das duas velocidades. Quando " -"especificado como uma porcentagem (por exemplo, 80%), a velocidade é calculada com " -"base na velocidade do perímetro externo ou interna respectiva. O valor padrão é " -"definido como 100%." +"Esta opção define a velocidade de impressão para as costuras Scarf. É " +"recomendável imprimir as costuras Scarf em uma velocidade baixa (menor que " +"100 mm/s). Também é aconselhável habilitar 'Suavização da taxa de extrusão' " +"se a velocidade definida variar significativamente da velocidade das paredes " +"externas ou internas. Se a velocidade especificada aqui for maior que a " +"velocidade das paredes externas ou internas, a impressora utilizará a mais " +"lenta das duas velocidades. Quando especificado como uma porcentagem (por " +"exemplo, 80%), a velocidade é calculada com base na velocidade do perímetro " +"externo ou interna respectiva. O valor padrão é definido como 100%." msgid "Scarf joint flow ratio" msgstr "Fluxo da Costura Scarf" @@ -13082,12 +13436,12 @@ msgstr "Altura inicial da junta Scarf" msgid "" "Start height of the scarf.\n" -"This amount can be specified in millimeters or as a percentage of the current layer " -"height. The default value for this parameter is 0." +"This amount can be specified in millimeters or as a percentage of the " +"current layer height. The default value for this parameter is 0." msgstr "" "Altura inicial da costura Scarf.\n" -"Esta quantidade pode ser especificada em milímetros ou como uma porcentagem da " -"altura atual da camada. O valor padrão para este parâmetro é 0." +"Esta quantidade pode ser especificada em milímetros ou como uma porcentagem " +"da altura atual da camada. O valor padrão para este parâmetro é 0." msgid "Scarf around entire wall" msgstr "Costura Scarf em torno do perímetro" @@ -13099,10 +13453,11 @@ msgid "Scarf length" msgstr "Comprimento da Costura Scarf" msgid "" -"Length of the scarf. Setting this parameter to zero effectively disables the scarf." +"Length of the scarf. Setting this parameter to zero effectively disables the " +"scarf." msgstr "" -"Comprimento da costura Scarf. Definir este parâmetro como zero desabilita a costura " -"Scarf." +"Comprimento da costura Scarf. Definir este parâmetro como zero desabilita a " +"costura Scarf." msgid "Scarf steps" msgstr "Passos da junta Scarf" @@ -13120,21 +13475,21 @@ msgid "Role base wipe speed" msgstr "Velocidade base de limpeza da função" 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." +"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 "" -"A velocidade de limpeza é determinada pela velocidade do tipo de extrusão atual. Por " -"exemplo, se uma ação de limpeza for executada imediatamente após uma extrusão de " -"perímetro externo, a velocidade da extrusão do perímetro externo será utilizada para " -"a ação de limpeza." +"A velocidade de limpeza é determinada pela velocidade do tipo de extrusão " +"atual. Por exemplo, se uma ação de limpeza for executada imediatamente após " +"uma extrusão de perímetro externo, a velocidade da extrusão do perímetro " +"externo será utilizada para a ação de limpeza." msgid "Wipe on loops" msgstr "Limpeza em loops" 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." +"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 "" "Para minimizar a visibilidade da costura em uma extrusão de loop fechado, é " "executado um pequeno movimento para dentro antes que o extrusor saia do loop." @@ -13143,38 +13498,40 @@ msgid "Wipe before external loop" msgstr "Limpeza antes do loop externo" msgid "" -"To minimize visibility of potential overextrusion at the start of an external " -"perimeter when printing with Outer/Inner or Inner/Outer/Inner wall print order, the " -"de-retraction is performed slightly on the inside from the start of the external " -"perimeter. That way any potential over extrusion is hidden from the outside " -"surface. \n" +"To minimize visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the de-retraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" "\n" -"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall print order " -"as in these modes it is more likely an external perimeter is printed immediately " -"after a de-retraction move." +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a de-retraction move." msgstr "" -"Para minimizar a visibilidade de sobreextrusão potencial no início de um perímetro " -"externo ao imprimir com a ordem de impressão de perímetro Externo/Interno ou Interno/" -"Externo/Interno, a desretração é executada ligeiramente no interior a partir do " -"início do perímetro externo. Dessa forma, qualquer sobreextrusão potencial é " -"ocultada da superfície externa. \n" +"Para minimizar a visibilidade de sobreextrusão potencial no início de um " +"perímetro externo ao imprimir com a ordem de impressão de perímetro Externo/" +"Interno ou Interno/Externo/Interno, a desretração é executada ligeiramente " +"no interior a partir do início do perímetro externo. Dessa forma, qualquer " +"sobreextrusão potencial é ocultada da superfície externa. \n" "\n" -"Isso é útil ao imprimir com a ordem de impressão de perímetro Externa/Interna ou " -"Interna/Externa/Interna, pois nesses modos é mais provável que um perímetro externo " -"seja impresso imediatamente após um movimento de desretração." +"Isso é útil ao imprimir com a ordem de impressão de perímetro Externa/" +"Interna ou Interna/Externa/Interna, pois nesses modos é mais provável que um " +"perímetro externo seja impresso imediatamente após um movimento de " +"desretração." msgid "Wipe speed" msgstr "Velocidade de limpeza" 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%" +"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 "" "A velocidade de limpeza é determinada pela velocidade especificada nesta " -"configuração. Se o valor for expresso como uma porcentagem (por exemplo, 80%), será " -"calculado com base na configuração de velocidade de deslocamento acima. O valor " -"padrão para este parâmetro é 80%" +"configuração. Se o valor for expresso como uma porcentagem (por exemplo, " +"80%), será calculado com base na configuração de velocidade de deslocamento " +"acima. O valor padrão para este parâmetro é 80%" msgid "Skirt distance" msgstr "Distância da saia" @@ -13186,8 +13543,8 @@ msgid "Skirt start point" msgstr "" msgid "" -"Angle from the object center to skirt start point. Zero is the most right position, " -"counter clockwise is positive angle." +"Angle from the object center to skirt start point. Zero is the most right " +"position, counter clockwise is positive angle." msgstr "" msgid "Skirt height" @@ -13200,15 +13557,15 @@ msgid "Draft shield" msgstr "Escudo" msgid "" -"A draft shield is useful to protect an ABS or ASA print from warping and detaching " -"from print bed due to wind draft. It is usually needed only with open frame " -"printers, i.e. without an enclosure. \n" +"A draft shield is useful to protect an ABS or ASA print from warping and " +"detaching from print bed due to wind draft. It is usually needed only with " +"open frame printers, i.e. without an enclosure. \n" "\n" -"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' " -"is used.\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from " -"the object. Therefore, if brims are active it may intersect with them. To avoid " -"this, increase the skirt distance value.\n" +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt " +"height' is used.\n" +"Note: With the draft shield active, the skirt will be printed at skirt " +"distance from the object. Therefore, if brims are active it may intersect " +"with them. To avoid this, increase the skirt distance value.\n" msgstr "" msgid "Enabled" @@ -13217,10 +13574,12 @@ msgstr "Ativado" msgid "Skirt type" msgstr "Tipo de saia" -msgid "Combined - single skirt for all objects, Per object - individual object skirt." +msgid "" +"Combined - single skirt for all objects, Per object - individual object " +"skirt." msgstr "" -"Combinado - saia única para todos os objetos, Por objeto - saias individuais por " -"objeto" +"Combinado - saia única para todos os objetos, Por objeto - saias individuais " +"por objeto" msgid "Combined" msgstr "Combinado" @@ -13239,39 +13598,39 @@ msgstr "Velocidade da saia" msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." msgstr "" -"Velocidade da saia, em mm/s. Zero significa usar a velocidade padrão de extrusão da " -"camada." +"Velocidade da saia, em mm/s. Zero significa usar a velocidade padrão de " +"extrusão da camada." msgid "Skirt minimum extrusion length" msgstr "Comprimento mínimo de extrusão da saia" msgid "" -"Minimum filament extrusion length in mm when printing the skirt. Zero means this " -"feature is disabled.\n" +"Minimum filament extrusion length in mm when printing the skirt. Zero means " +"this feature is disabled.\n" "\n" -"Using a non zero value is useful if the printer is set up to print without a prime " -"line.\n" -"Final number of loops is not taling into account whli arranging or validating " -"objects distance. Increase loop number in such case. " +"Using a non zero value is useful if the printer is set up to print without a " +"prime line.\n" +"Final number of loops is not taling into account whli arranging or " +"validating objects distance. Increase loop number in such case. " msgstr "" 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" +"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 "" -"A velocidade de impressão no gcode exportado será reduzida quando o tempo estimado " -"da camada for menor que esse valor, para obter uma melhor resfriamento para essas " -"camadas" +"A velocidade de impressão no gcode exportado será reduzida quando o tempo " +"estimado da camada for menor que esse valor, para obter uma melhor " +"resfriamento para essas camadas" msgid "Minimum sparse infill threshold" msgstr "Limiar mínimo de preenchimento esparso" msgid "" -"Sparse infill area which is smaller than threshold value is replaced by internal " -"solid infill" +"Sparse infill area which is smaller than threshold value is replaced by " +"internal solid infill" msgstr "" -"A área de preenchimento esparso que é menor que o valor de limiar é substituída por " -"preenchimento sólido interno" +"A área de preenchimento esparso que é menor que o valor de limiar é " +"substituída por preenchimento sólido interno" msgid "Solid infill" msgstr "" @@ -13280,60 +13639,79 @@ msgid "Filament to print solid infill" msgstr "" msgid "" -"Line width of internal solid infill. If expressed as a %, it will be computed over " -"the nozzle diameter." +"Line width of internal solid infill. If expressed as a %, it will be " +"computed over the nozzle diameter." msgstr "" -"Largura da linha de preenchimento sólido interno. Se expresso como uma %, será " -"calculado sobre o diâmetro do bico." +"Largura da linha de preenchimento sólido interno. Se expresso como uma %, " +"será calculado sobre o diâmetro do bico." msgid "Speed of internal solid infill, not the top and bottom surface" msgstr "" -"Velocidade de preenchimento sólido interno, não a superfície superior e inferior" +"Velocidade de preenchimento sólido interno, não a superfície superior e " +"inferior" 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" +"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 "" -"A espiralização suaviza os movimentos z do contorno externo. E transforma um modelo " -"sólido em uma impressão de perímetro único com camadas inferiores sólidas. O modelo " -"final gerado não tem costura" +"A espiralização suaviza os movimentos z do contorno externo. E transforma um " +"modelo sólido em uma impressão de perímetro único com camadas inferiores " +"sólidas. O modelo final gerado não tem costura" msgid "Smooth Spiral" msgstr "Espiral Suave" msgid "" -"Smooth Spiral smooths out X and Y moves as well, resulting in no visible seam at " -"all, even in the XY directions on walls that are not vertical" +"Smooth Spiral smooths out X and Y moves as well, resulting in no visible " +"seam at all, even in the XY directions on walls that are not vertical" msgstr "" -"A Espiral Suave suaviza os movimentos X e Y, resultando em nenhuma costura visível, " -"mesmo nas direções XY em paredes que não são verticais" +"A Espiral Suave suaviza os movimentos X e Y, resultando em nenhuma costura " +"visível, mesmo nas direções XY em paredes que não são verticais" msgid "Max XY Smoothing" msgstr "Suavização Máxima XY" msgid "" -"Maximum distance to move points in XY to try to achieve a smooth spiralIf expressed " -"as a %, it will be computed over nozzle diameter" +"Maximum distance to move points in XY to try to achieve a smooth spiralIf " +"expressed as a %, it will be computed over nozzle diameter" +msgstr "" +"Distância máxima para mover pontos em XY para tentar obter uma espiral " +"suave. Se expresso como uma %, será calculado sobre o diâmetro do bico" + +#, c-format, boost-format +msgid "" +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." +msgstr "" + +#, c-format, boost-format +msgid "" +"Sets the finishing flow ratio while ending the spiral. Normally the spiral " +"transition scales the flow ratio from 100% to 0% during the last loop which " +"can in some cases lead to under extrusion at the end of the spiral." msgstr "" -"Distância máxima para mover pontos em XY para tentar obter uma espiral suave. Se " -"expresso como uma %, será calculado sobre o diâmetro do bico" 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 "" -"Se o modo suave ou tradicional for selecionado, um vídeo em time-lapse será gerado " -"para cada impressão. Após cada camada ser impressa, uma captura de tela é feita com " -"a câmera da câmara. Todas essas capturas de tela são compostas em um vídeo em time-" -"lapse quando a impressão é concluída. Se o modo suave for selecionado, a extrusora " -"se moverá para fora após cada camada ser impressa e então tirará uma captura de " -"tela. Como o filamento derretido pode vazar do bico durante o processo de tirar uma " -"captura de tela, é necessário uma Torre Prime para o modo suave para limpar o bico." +"Se o modo suave ou tradicional for selecionado, um vídeo em time-lapse será " +"gerado para cada impressão. Após cada camada ser impressa, uma captura de " +"tela é feita com a câmera da câmara. Todas essas capturas de tela são " +"compostas em um vídeo em time-lapse quando a impressão é concluída. Se o " +"modo suave for selecionado, a extrusora se moverá para fora após cada camada " +"ser impressa e então tirará uma captura de tela. Como o filamento derretido " +"pode vazar do bico durante o processo de tirar uma captura de tela, é " +"necessário uma Torre Prime para o modo suave para limpar o bico." msgid "Traditional" msgstr "Tradicional" @@ -13343,26 +13721,27 @@ msgstr "Variação de temperatura" #. TRN PrintSettings : "Ooze prevention" > "Temperature variation" msgid "" -"Temperature difference to be applied when an extruder is not active. The value is " -"not used when 'idle_temperature' in filament settings is set to non zero value." +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." msgstr "" msgid "Preheat time" msgstr "" msgid "" -"To reduce the waiting time after tool change, Orca can preheat the next tool while " -"the current tool is still in use. This setting specifies the time in seconds to " -"preheat the next tool. Orca will insert a M104 command to preheat the tool in " -"advance." +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." msgstr "" msgid "Preheat steps" msgstr "" msgid "" -"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For other " -"printers, please set it to 1." +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." msgstr "" msgid "Start G-code" @@ -13384,15 +13763,17 @@ msgid "Manual Filament Change" msgstr "Troca Manual de Filamento" 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." +"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 "" -"Ative esta opção para omitir o código G de troca de filamento personalizado apenas " -"no início da impressão. O comando de troca de ferramenta (por exemplo, T0) será " -"ignorado durante toda a impressão. Isso é útil para impressão manual de vários " -"materiais, onde usamos M600/PAUSE para acionar a ação de troca manual de filamento." +"Ative esta opção para omitir o código G de troca de filamento personalizado " +"apenas no início da impressão. O comando de troca de ferramenta (por " +"exemplo, T0) será ignorado durante toda a impressão. Isso é útil para " +"impressão manual de vários materiais, onde usamos M600/PAUSE para acionar a " +"ação de troca manual de filamento." msgid "Purge in prime tower" msgstr "Purgar na Torre Prime" @@ -13407,46 +13788,48 @@ msgid "No sparse layers (beta)" msgstr "Sem camadas esparsas (beta)" 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." +"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 "" -"Se ativado, a Torre Prime não será impressa em camadas sem troca de ferramenta. Em " -"camadas com uma troca de ferramenta, a extrusora viajará para baixo para imprimir a " -"Torre Prime. O usuário é responsável por garantir que não haja colisão com a " -"impressão." +"Se ativado, a Torre Prime não será impressa em camadas sem troca de " +"ferramenta. Em camadas com uma troca de ferramenta, a extrusora viajará para " +"baixo para imprimir a Torre Prime. O usuário é responsável por garantir que " +"não haja colisão com a impressão." msgid "Prime all printing extruders" msgstr "Primer todos os extrusores de impressão" msgid "" -"If enabled, all printing extruders will be primed at the front edge of the print bed " -"at the start of the print." +"If enabled, all printing extruders will be primed at the front edge of the " +"print bed at the start of the print." msgstr "" -"Se ativado, todos os extrusores de impressão serão iniciados na borda frontal da " -"mesa de impressão no início da impressão." +"Se ativado, todos os extrusores de impressão serão iniciados na borda " +"frontal da mesa de impressão no início da impressão." msgid "Slice gap closing radius" msgstr "Tolerância do fatiamento" 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." +"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 "" -"Espaços menores que 2x a tolerância de fatiamentoo serão preenchidas durante o " -"fatiamento da malha. Aumentar a tolerância de fatiamento pode reduzir a resolução " -"final da impressão, portanto, é aconselhável manter o valor razoavelmente baixo." +"Espaços menores que 2x a tolerância de fatiamentoo serão preenchidas durante " +"o fatiamento da malha. Aumentar a tolerância de fatiamento pode reduzir a " +"resolução final da impressão, portanto, é aconselhável manter o valor " +"razoavelmente baixo." msgid "Slicing Mode" msgstr "Modo de Fatiamento" msgid "" -"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all " -"holes in the model." +"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " +"close all holes in the model." msgstr "" -"Use \"Par-impar\" para modelos de avião 3DLabPrint. Use \"Fechar buracos\" para " -"fechar todos os buracos no modelo." +"Use \"Par-impar\" para modelos de avião 3DLabPrint. Use \"Fechar buracos\" " +"para fechar todos os buracos no modelo." msgid "Regular" msgstr "Padrão" @@ -13461,15 +13844,15 @@ msgid "Z offset" msgstr "Deslocamento 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)." +"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 "" -"Este valor será adicionado (ou subtraído) de todas as coordenadas Z no G-code de " -"saída. É usado para compensar a má posição do fim de curso Z: por exemplo, se o zero " -"do seu fim de curso na verdade deixa o bico 0,3 mm longe da mesa de impressão, " -"ajuste isso para -0,3 (ou corrija o seu fim de curso)." +"Este valor será adicionado (ou subtraído) de todas as coordenadas Z no G-" +"code de saída. É usado para compensar a má posição do fim de curso Z: por " +"exemplo, se o zero do seu fim de curso na verdade deixa o bico 0,3 mm longe " +"da mesa de impressão, ajuste isso para -0,3 (ou corrija o seu fim de curso)." msgid "Enable support" msgstr "Ativar suporte" @@ -13478,8 +13861,9 @@ msgid "Enable support generation." msgstr "Ativar a geração de suporte." 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" +"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)" @@ -13504,7 +13888,8 @@ msgid "Pattern angle" msgstr "Ângulo de padrão" msgid "Use this setting to rotate the support pattern on the horizontal plane." -msgstr "Use esta configuração para girar o padrão de suporte no plano horizontal." +msgstr "" +"Use esta configuração para girar o padrão de suporte no plano horizontal." msgid "On build plate only" msgstr "Somente na mesa" @@ -13515,9 +13900,12 @@ msgstr "Não criar suporte na superfície do modelo, apenas na mesa" msgid "Support critical regions only" msgstr "Suportar apenas regiões críticas" -msgid "Only create support for critical regions including sharp tail, cantilever, etc." +msgid "" +"Only create support for critical regions including sharp tail, cantilever, " +"etc." msgstr "" -"Crie suporte apenas para regiões críticas, incluindo cauda afiada, balanço, etc." +"Crie suporte apenas para regiões críticas, incluindo cauda afiada, balanço, " +"etc." msgid "Remove small overhangs" msgstr "Remover pequenos overhangs" @@ -13541,39 +13929,43 @@ msgid "Support/raft base" msgstr "Suporte/Jangada" msgid "" -"Filament to print support base and raft. \"Default\" means no specific filament for " -"support and current filament is used" +"Filament to print support base and raft. \"Default\" means no specific " +"filament for support and current filament is used" msgstr "" -"Filamento para imprimir Jangada e Suporte. \"Padrão\" significa nenhum filamento " -"específico para Suporte e o filamento atual será usado" +"Filamento para imprimir Jangada e Suporte. \"Padrão\" significa nenhum " +"filamento específico para Suporte e o filamento atual será usado" msgid "Avoid interface filament for base" msgstr "Evitar o filamento da interface para a base" -msgid "Avoid using support interface filament to print support base if possible." +msgid "" +"Avoid using support interface filament to print support base if possible." msgstr "" -"Evite usar o filamento da interface de suporte para imprimir a base, se possível." +"Evite usar o filamento da interface de suporte para imprimir a base, se " +"possível." msgid "" -"Line width of support. If expressed as a %, it will be computed over the nozzle " -"diameter." +"Line width of support. If expressed as a %, it will be computed over the " +"nozzle diameter." msgstr "" -"Largura da linha de suporte. Se expresso como %, será calculado sobre o diâmetro do " -"bico." +"Largura da linha de suporte. Se expresso como %, será calculado sobre o " +"diâmetro do bico." msgid "Interface use loop pattern" msgstr "Interface usa padrão de loop" -msgid "Cover the top contact layer of the supports with loops. Disabled by default." +msgid "" +"Cover the top contact layer of the supports with loops. Disabled by default." msgstr "" -"Cubra a camada de contato superior dos suportes com loops. Desativado por padrão." +"Cubra a camada de contato superior dos suportes com loops. Desativado por " +"padrão." msgid "Support/raft interface" msgstr "Interface de Suporte/Jangada" msgid "" -"Filament to print support interface. \"Default\" means no specific filament for " -"support interface and current filament is used" +"Filament to print support interface. \"Default\" means no specific filament " +"for support interface and current filament is used" msgstr "" "Filamento para imprimir a interface de suporte. \"Padrão\" significa nenhum " "filamento específico para a interface de suporte e o filamento atual é usado" @@ -13603,7 +13995,8 @@ msgid "Bottom interface spacing" msgstr "Espaçamento da interface inferior" msgid "Spacing of bottom interface lines. Zero means solid interface" -msgstr "Espaçamento das linhas de interface inferior. Zero significa interface sólida" +msgstr "" +"Espaçamento das linhas de interface inferior. Zero significa interface sólida" msgid "Speed of support interface" msgstr "Velocidade da interface de suporte" @@ -13624,12 +14017,13 @@ msgid "Interface pattern" msgstr "Padrão de interface" msgid "" -"Line pattern of support interface. Default pattern for non-soluble support interface " -"is Rectilinear, while default pattern for soluble support interface is Concentric" +"Line pattern of support interface. Default pattern for non-soluble support " +"interface is Rectilinear, while default pattern for soluble support " +"interface is Concentric" msgstr "" -"Padrão de linha de interface de suporte. O padrão padrão para interface de suporte " -"não solúvel é reticulado, enquanto o padrão padrão para interface de suporte solúvel " -"é concêntrico" +"Padrão de linha de interface de suporte. O padrão padrão para interface de " +"suporte não solúvel é reticulado, enquanto o padrão padrão para interface de " +"suporte solúvel é concêntrico" msgid "Rectilinear Interlaced" msgstr "Reticulado Interligado" @@ -13650,19 +14044,22 @@ msgid "Speed of support" msgstr "Velocidade do suporte" 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." +"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 "" -"Estilo e forma do suporte. Para suporte normal, projetar os suportes em uma grade " -"regular criará suportes mais estáveis (padrão), enquanto torres de suporte ajustadas " -"economizarão material e reduzirão a cicatrização do objeto.\n" -"Para suporte de árvore, estilo fino e orgânico mesclarão os galhos de forma mais " -"agressiva e economizarão muito material (orgânico padrão), enquanto o estilo híbrido " -"criará uma estrutura semelhante ao suporte normal em grandes overhangs planas." +"Estilo e forma do suporte. Para suporte normal, projetar os suportes em uma " +"grade regular criará suportes mais estáveis (padrão), enquanto torres de " +"suporte ajustadas economizarão material e reduzirão a cicatrização do " +"objeto.\n" +"Para suporte de árvore, estilo fino e orgânico mesclarão os galhos de forma " +"mais agressiva e economizarão muito material (orgânico padrão), enquanto o " +"estilo híbrido criará uma estrutura semelhante ao suporte normal em grandes " +"overhangs planas." msgid "Default (Grid/Organic" msgstr "" @@ -13686,89 +14083,95 @@ msgid "Independent support layer height" msgstr "Altura independente da camada de suporte" 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." +"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 "" -"A camada de suporte usa uma altura de camada independente da camada do objeto. Isso " -"é para suportar a personalização do z-gap e economizar tempo de impressão. Esta " -"opção será inválida quando a Torre Prime estiver ativa." +"A camada de suporte usa uma altura de camada independente da camada do " +"objeto. Isso é para suportar a personalização do z-gap e economizar tempo de " +"impressão. Esta opção será inválida quando a Torre Prime estiver ativa." msgid "Threshold angle" msgstr "Ângulo de limite" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold." +"Support will be generated for overhangs whose slope angle is below the " +"threshold." msgstr "" -"O suporte será gerado para overhangs cujo ângulo de inclinação estiver abaixo do " -"limite." +"O suporte será gerado para overhangs cujo ângulo de inclinação estiver " +"abaixo do limite." msgid "Threshold overlap" msgstr "" msgid "" -"If threshold angle is zero, support will be generated for overhangs whose overlap is " -"below the threshold. The smaller this value is, the steeper the overhang that can be " -"printed without support." +"If threshold angle is zero, support will be generated for overhangs whose " +"overlap is below the threshold. The smaller this value is, the steeper the " +"overhang that can be printed without support." msgstr "" msgid "Tree support branch angle" msgstr "Ângulo da ramificação" 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." +"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 "" -"Esta configuração determina o ângulo máximo de inclinação que as ramificações de " -"suporte de árvore podem fazer. Se o ângulo for aumentado, as ramificações podem ser " -"impressas de forma mais horizontal, permitindo que alcancem mais longe." +"Esta configuração determina o ângulo máximo de inclinação que as " +"ramificações de suporte de árvore podem fazer. Se o ângulo for aumentado, as " +"ramificações podem ser impressas de forma mais horizontal, permitindo que " +"alcancem mais longe." msgid "Preferred Branch Angle" msgstr "Ângulo preferido da ramificação" #. 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." +"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 "" -"O ângulo preferido das ramificações, quando eles não precisam evitar o modelo. Use " -"um ângulo mais baixo para torná-los mais verticais e mais estáveis. Use um ângulo " -"mais alto para que as ramificações se fundam mais rápido." +"O ângulo preferido das ramificações, quando eles não precisam evitar o " +"modelo. Use um ângulo mais baixo para torná-los mais verticais e mais " +"estáveis. Use um ângulo mais alto para que as ramificações se fundam mais " +"rápido." msgid "Tree support branch distance" msgstr "Distância entre ramificações" -msgid "This setting determines the distance between neighboring tree support nodes." +msgid "" +"This setting determines the distance between neighboring tree support nodes." msgstr "" -"Essa configuração determina a distância entre os nós de suporte de árvore vizinhos." +"Essa configuração determina a distância entre os nós de suporte de árvore " +"vizinhos." msgid "Branch Density" msgstr "Densidade da ramificação" #. 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." +"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 "" "Ajusta a densidade da estrutura de suporte usada para gerar as pontas das " -"ramificações. Um valor mais alto resulta em overhangs melhores, mas os suportes são " -"mais difíceis de remover, portanto, é recomendável ativar as interfaces superiores " -"de suporte em vez de um valor de densidade de ramo alto se forem necessárias " -"interfaces densas." +"ramificações. Um valor mais alto resulta em overhangs melhores, mas os " +"suportes são mais difíceis de remover, portanto, é recomendável ativar as " +"interfaces superiores de suporte em vez de um valor de densidade de ramo " +"alto se forem necessárias interfaces densas." msgid "Adaptive layer height" msgstr "Altura de camada adaptativa" msgid "" -"Enabling this option means the height of tree support layer except the first will " -"be automatically calculated " +"Enabling this option means the height of tree support layer except the " +"first will be automatically calculated " msgstr "" -"Ao ativar essa opção, a altura da camada de suporte de árvore, exceto a primeira, " -"será calculada automaticamente " +"Ao ativar essa opção, a altura da camada de suporte de árvore, exceto a " +"primeira, será calculada automaticamente " msgid "Auto brim width" msgstr "Largura de borda automática" @@ -13777,8 +14180,8 @@ msgid "" "Enabling this option means the width of the brim for tree support will be " "automatically calculated" msgstr "" -"Ao ativar essa opção, a largura da borda para suporte de árvore será calculada " -"automaticamente" +"Ao ativar essa opção, a largura da borda para suporte de árvore será " +"calculada automaticamente" msgid "Tree support brim width" msgstr "Largura da borda de suporte de árvore" @@ -13805,26 +14208,28 @@ msgstr "Ângulo do diâmetro da ramificação" #. 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." +"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 "" -"O ângulo das ramificações à medida que elas gradualmente se tornam mais espessos em " -"direção à base. Um ângulo de 0 fará com que as ramificações tenham espessura " -"uniforme ao longo de seu comprimento. Um pequeno ângulo pode aumentar a estabilidade " -"do suporte orgânico." +"O ângulo das ramificações à medida que elas gradualmente se tornam mais " +"espessos em direção à base. Um ângulo de 0 fará com que as ramificações " +"tenham espessura uniforme ao longo de seu comprimento. Um pequeno ângulo " +"pode aumentar a estabilidade do suporte orgânico." msgid "Branch Diameter with double walls" msgstr "Diâmetro da ramificação com perí. duplo" #. 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." +"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 "" -"Ramificações com área maior do que a área de um círculo com este diâmetro serão " -"impressas com paredes duplas para estabilidade. Defina este valor como zero para não " -"ter paredes duplas." +"Ramificações com área maior do que a área de um círculo com este diâmetro " +"serão impressas com paredes duplas para estabilidade. Defina este valor como " +"zero para não ter paredes duplas." msgid "Support wall loops" msgstr "Perímetros de suporte" @@ -13836,23 +14241,26 @@ msgid "Tree support with infill" msgstr "Suporte de árvore com preenchimento" msgid "" -"This setting specifies whether to add infill inside large hollows of tree support" +"This setting specifies whether to add infill inside large hollows of tree " +"support" msgstr "" -"Essa configuração especifica se deve adicionar preenchimento dentro de grandes " -"cavidades do suporte de árvore" +"Essa configuração especifica se deve adicionar preenchimento dentro de " +"grandes cavidades do suporte de árvore" msgid "Activate temperature control" msgstr "Ativar controle de temperatura" msgid "" -"Enable this option for automated chamber temperature control. This option activates " -"the emitting of an M191 command before the \"machine_start_gcode\"\n" -" which sets the chamber temperature and waits until it is reached. In addition, it " -"emits an M141 command at the end of the print to turn off the chamber heater, if " -"present. \n" +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" "\n" -"This option relies on the firmware supporting the M191 and M141 commands either via " -"macros or natively and is usually used when an active chamber heater is installed." +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." msgstr "" msgid "Chamber temperature" @@ -13860,20 +14268,22 @@ msgstr "Temperatura da câmara" msgid "" "For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " -"temperature can help suppress or reduce warping and potentially lead to higher " -"interlayer bonding strength. However, at the same time, a higher chamber temperature " -"will reduce the efficiency of air filtration for ABS and ASA. \n" +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" "\n" -"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option should be " -"disabled (set to 0) as the chamber temperature should be low to avoid extruder " -"clogging caused by material softening at the heat break.\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" "\n" -"If enabled, this parameter also sets a gcode variable named chamber_temperature, " -"which can be used to pass the desired chamber temperature to your print start macro, " -"or a heat soak macro like this: PRINT_START (other variables) " -"CHAMBER_TEMP=[chamber_temperature]. This may be useful if your printer does not " -"support M141/M191 commands, or if you desire to handle heat soaking in the print " -"start macro if no active chamber heater is installed." +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" msgid "Nozzle temperature for layers after the initial one" @@ -13883,28 +14293,29 @@ msgid "Detect thin wall" msgstr "Detectar perímetro fino" 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" +"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 "" -"Detecta paredes finas que não podem conter duas larguras de linha. E usa uma linha " -"única para imprimir. Talvez seja impresso não muito bem, porque não é um loop fechado" +"Detecta paredes finas que não podem conter duas larguras de linha. E usa uma " +"linha única para imprimir. Talvez seja impresso não muito bem, porque não é " +"um loop fechado" msgid "" -"This gcode is inserted when change filament, including T command to trigger tool " -"change" +"This gcode is inserted when change filament, including T command to trigger " +"tool change" msgstr "" -"Este gcode é inserido ao trocar o filamento, incluindo o comando T para acionar a " -"troca de ferramenta" +"Este gcode é inserido ao trocar o filamento, incluindo o comando T para " +"acionar a troca de ferramenta" msgid "This gcode is inserted when the extrusion role is changed" msgstr "Esse gcode é inserido quando o tipo de extrusão muda" msgid "" -"Line width for top surfaces. If expressed as a %, it will be computed over the " -"nozzle diameter." +"Line width for top surfaces. If expressed as a %, it will be computed over " +"the nozzle diameter." msgstr "" -"Largura da linha para superfícies superiores. Se expressa em %, será calculada sobre " -"o diâmetro do bico." +"Largura da linha para superfícies superiores. Se expressa em %, será " +"calculada sobre o diâmetro do bico." msgid "Speed of top surface infill which is solid" msgstr "Velocidade de preenchimento da superfície superior, que é sólida" @@ -13913,13 +14324,14 @@ msgid "Top shell layers" msgstr "Camadas de topo" 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" +"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 "" -"Este é o número de camadas sólidas do perímetro superior, incluindo a camada da " -"superfície superior. Quando a espessura calculada por este valor for menor do que a " -"espessura do perímetro superior, as camadas do perímetro superior serão aumentadas" +"Este é o número de camadas sólidas do perímetro superior, incluindo a camada " +"da superfície superior. Quando a espessura calculada por este valor for " +"menor do que a espessura do perímetro superior, as camadas do perímetro " +"superior serão aumentadas" msgid "Top solid layers" msgstr "Camadas sólidas superiores" @@ -13928,16 +14340,17 @@ msgid "Top shell thickness" msgstr "Espessura da parede de topo" 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 determined by top shell layers" +"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 determined by top shell " +"layers" msgstr "" "O número de camadas sólidas superiores é aumentado ao fatiar se a espessura " -"calculada pelas camadas da parede superior for menor do que este valor. Isso pode " -"evitar que a parede seja muito fina quando a altura da camada é pequena. 0 significa " -"que esta configuração está desativada e a espessura da parede superior é determinada " -"exclusivamente pelas camadas da parede superior" +"calculada pelas camadas da parede superior for menor do que este valor. Isso " +"pode evitar que a parede seja muito fina quando a altura da camada é " +"pequena. 0 significa que esta configuração está desativada e a espessura da " +"parede superior é determinada exclusivamente pelas camadas da parede superior" msgid "Speed of travel which is faster and without extrusion" msgstr "Velocidade de deslocamento mais rápida e sem extrusão" @@ -13946,43 +14359,46 @@ msgid "Wipe while retracting" msgstr "Limpar enquanto retrai" 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" +"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 "" -"Movimentar o bico ao longo do último caminho de extrusão ao retrair para limpar o " -"material vazado no bico. Isso pode minimizar a formação de blob quando imprimir uma " -"nova peça após o deslocamento" +"Movimentar o bico ao longo do último caminho de extrusão ao retrair para " +"limpar o material vazado no bico. Isso pode minimizar a formação de blob " +"quando imprimir uma nova peça após o deslocamento" msgid "Wipe Distance" msgstr "Distância de limpeza" msgid "" -"Describe how long the nozzle will move along the last path when retracting. \n" +"Describe how long the nozzle will move along the last path when " +"retracting. \n" "\n" -"Depending on how long the wipe operation lasts, how fast and long the extruder/" -"filament retraction settings are, a retraction move may be needed to retract the " -"remaining filament. \n" +"Depending on how long the wipe operation lasts, how fast and long the " +"extruder/filament retraction settings are, a retraction move may be needed " +"to retract the remaining filament. \n" "\n" -"Setting a value in the retract amount before wipe setting below will perform any " -"excess retraction before the wipe, else it will be performed after." +"Setting a value in the retract amount before wipe setting below will perform " +"any excess retraction before the wipe, else it will be performed after." msgstr "" -"Descreva por quanto tempo o bico se moverá ao longo do último caminho ao retrair. \n" +"Descreva por quanto tempo o bico se moverá ao longo do último caminho ao " +"retrair. \n" "\n" -"Dependendo de quanto tempo dura a operação de limpeza, quão rápidas e longas são as " -"configurações de retração do extrusor/filamento, pode ser necessário um movimento de " -"retração para recolher o filamento restante. \n" +"Dependendo de quanto tempo dura a operação de limpeza, quão rápidas e longas " +"são as configurações de retração do extrusor/filamento, pode ser necessário " +"um movimento de retração para recolher o filamento restante. \n" "\n" -"Definir um valor na configuração de quantidade de retração antes da limpeza abaixo " -"executará qualquer retração em excesso antes da limpeza, caso contrário, será " -"realizada após." +"Definir um valor na configuração de quantidade de retração antes da limpeza " +"abaixo executará qualquer retração em excesso antes da limpeza, caso " +"contrário, será realizada após." 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." +"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 "" -"A Torre Prime pode ser usada para limpar o resíduo no bico e estabilizar a pressão " -"na câmara dentro do bico, a fim de evitar defeitos de aparência ao imprimir objetos." +"A Torre Prime pode ser usada para limpar o resíduo no bico e estabilizar a " +"pressão na câmara dentro do bico, a fim de evitar defeitos de aparência ao " +"imprimir objetos." msgid "Purging volumes" msgstr "Volumes de purga" @@ -13991,11 +14407,11 @@ msgid "Flush multiplier" msgstr "Multiplicador de purga" msgid "" -"The actual flushing volumes is equal to the flush multiplier multiplied by the " -"flushing volumes in the table." +"The actual flushing volumes is equal to the flush multiplier multiplied by " +"the flushing volumes in the table." msgstr "" -"Os volumes de purga reais são iguais ao multiplicador de purga multiplicado pelos " -"volumes de purga na tabela." +"Os volumes de purga reais são iguais ao multiplicador de purga multiplicado " +"pelos volumes de purga na tabela." msgid "Prime volume" msgstr "Volume de material" @@ -14016,102 +14432,105 @@ msgid "Stabilization cone apex angle" msgstr "Ângulo do ápice do cone de estabilização" msgid "" -"Angle at the apex of the cone that is used to stabilize the wipe tower. Larger angle " -"means wider base." +"Angle at the apex of the cone that is used to stabilize the wipe tower. " +"Larger angle means wider base." msgstr "" -"Ângulo no ápice do cone usado para estabilizar a Torre Prime. Um ângulo maior " -"significa uma base mais larga." +"Ângulo no ápice do cone usado para estabilizar a Torre Prime. Um ângulo " +"maior significa uma base mais larga." msgid "Maximum wipe tower print speed" msgstr "Velocidade máxima de impressão da Torre Prime" msgid "" -"The maximum print speed when purging in the wipe tower and printing the wipe tower " -"sparse layers. When purging, if the sparse infill speed or calculated speed from the " -"filament max volumetric speed is lower, the lowest will be used instead.\n" +"The maximum print speed when purging in the wipe tower and printing the wipe " +"tower sparse layers. When purging, if the sparse infill speed or calculated " +"speed from the filament max volumetric speed is lower, the lowest will be " +"used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed " -"from the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the internal perimeter speed or " +"calculated speed from the filament max volumetric speed is lower, the lowest " +"will be used instead.\n" "\n" -"Increasing this speed may affect the tower's stability as well as increase the force " -"with which the nozzle collides with any blobs that may have formed on the wipe " -"tower.\n" +"Increasing this speed may affect the tower's stability as well as increase " +"the force with which the nozzle collides with any blobs that may have formed " +"on the wipe tower.\n" "\n" -"Before increasing this parameter beyond the default of 90mm/sec, make sure your " -"printer can reliably bridge at the increased speeds and that ooze when tool changing " -"is well controlled.\n" +"Before increasing this parameter beyond the default of 90mm/sec, make sure " +"your printer can reliably bridge at the increased speeds and that ooze when " +"tool changing is well controlled.\n" "\n" "For the wipe tower external perimeters the internal perimeter speed is used " "regardless of this setting." msgstr "" -"A velocidade máxima de impressão ao purgar na Torre Prime e ao imprimir as camadas " -"esparsas da Torre Prime. Ao purgar, se a velocidade do preenchimento esparso ou a " -"velocidade calculada a partir da velocidade volumétrica máxima do filamento for " -"menor, a menor será utilizada.\n" +"A velocidade máxima de impressão ao purgar na Torre Prime e ao imprimir as " +"camadas esparsas da Torre Prime. Ao purgar, se a velocidade do preenchimento " +"esparso ou a velocidade calculada a partir da velocidade volumétrica máxima " +"do filamento for menor, a menor será utilizada.\n" "\n" "Ao imprimir as camadas esparsas, se a velocidade do perímetro interno ou a " -"velocidade calculada a partir da velocidade volumétrica máxima do filamento for " -"menor, a menor será utilizada.\n" +"velocidade calculada a partir da velocidade volumétrica máxima do filamento " +"for menor, a menor será utilizada.\n" "\n" -"Aumentar essa velocidade pode afetar a estabilidade da torre, bem como aumentar a " -"força com que o bico colide com quaisquer bolhas que possam ter se formado na Torre " -"Prime.\n" +"Aumentar essa velocidade pode afetar a estabilidade da torre, bem como " +"aumentar a força com que o bico colide com quaisquer bolhas que possam ter " +"se formado na Torre Prime.\n" "\n" -"Antes de aumentar esse parâmetro além do padrão de 90mm/s, certifique-se de que sua " -"impressora pode realizar pontes de forma confiável nas velocidades aumentadas e que " -"a extrusão ao trocar a ferramenta está bem controlada.\n" +"Antes de aumentar esse parâmetro além do padrão de 90mm/s, certifique-se de " +"que sua impressora pode realizar pontes de forma confiável nas velocidades " +"aumentadas e que a extrusão ao trocar a ferramenta está bem controlada.\n" "\n" -"Para os perímetros externos da Torre Prime, a velocidade do perímetro interno é " -"utilizada independentemente dessa configuração." +"Para os perímetros externos da Torre Prime, a velocidade do perímetro " +"interno é utilizada independentemente dessa configuração." 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)." +"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 "" -"Extrusor a ser usada ao imprimir o perímetro da Torre Prime. Defina como 0 para usar " -"a disponível (não solúvel é preferido)." +"Extrusor a ser usada ao imprimir o perímetro da Torre Prime. Defina como 0 " +"para usar a disponível (não solúvel é preferido)." msgid "Purging volumes - load/unload volumes" msgstr "Volumes de purga - volumes de carga/descarga" 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." +"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 "" -"Este vetor salva os volumes necessários para mudar de/para cada ferramenta usada na " -"Torre Prime. Esses valores são usados para simplificar a criação dos volumes de " -"purga completos abaixo." +"Este vetor salva os volumes necessários para mudar de/para cada ferramenta " +"usada na Torre Prime. Esses valores são usados para simplificar a criação " +"dos volumes de purga completos abaixo." 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." +"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 "" -"A purga após a troca de filamento será feita dentro do preenchimento dos objetos. " -"Isso pode reduzir a quantidade de resíduos e diminuir o tempo de impressão. Se as " -"paredes forem impressas com filamento transparente, o preenchimento de cor mista " -"será visível do lado de fora. Isso não terá efeito, a menos que a Torre Prime esteja " -"ativa." - -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 "" -"A purga após a troca de filamento será feita dentro do suporte dos objetos. Isso " -"pode reduzir a quantidade de resíduos e diminuir o tempo de impressão. Isso não terá " +"A purga após a troca de filamento será feita dentro do preenchimento dos " +"objetos. Isso pode reduzir a quantidade de resíduos e diminuir o tempo de " +"impressão. Se as paredes forem impressas com filamento transparente, o " +"preenchimento de cor mista será visível do lado de fora. Isso não terá " "efeito, a menos que a Torre Prime esteja ativa." +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 "" +"A purga após a troca de filamento será feita dentro do suporte dos objetos. " +"Isso pode reduzir a quantidade de resíduos e diminuir o tempo de impressão. " +"Isso não terá efeito, a menos que a Torre Prime esteja ativa." + 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." +"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 "" "Este objeto será usado para purgar o bico após uma troca de filamento para " -"economizar filamento e diminuir o tempo de impressão. As cores dos objetos serão " -"misturadas como resultado. Isso não terá efeito, a menos que a Torre Prime esteja " -"ativa." +"economizar filamento e diminuir o tempo de impressão. As cores dos objetos " +"serão misturadas como resultado. Isso não terá efeito, a menos que a Torre " +"Prime esteja ativa." msgid "Maximal bridging distance" msgstr "Distância máxima de ponte" @@ -14129,17 +14548,18 @@ msgid "Extra flow for purging" msgstr "" msgid "" -"Extra flow used for the purging lines on the wipe tower. This makes the purging " -"lines thicker or narrower than they normally would be. The spacing is adjusted " -"automatically." +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." msgstr "" msgid "Idle temperature" msgstr "" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool setups.This is " -"only used when 'Ooze prevention' is active in Print Settings. Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool " +"setups.This is only used when 'Ooze prevention' is active in Print Settings. " +"Set to 0 to disable." msgstr "" msgid "X-Y hole compensation" @@ -14147,37 +14567,40 @@ msgstr "Compensação XY de furos" 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" +"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 "" -"Os furos do objeto serão aumentados ou reduzidos no plano XY pelo valor configurado. " -"Valor positivo aumenta os furos. Valor negativo reduz os furos. Essa função é usada " -"para ajustar ligeiramente o tamanho quando o objeto tem problema de montagem" +"Os furos do objeto serão aumentados ou reduzidos no plano XY pelo valor " +"configurado. Valor positivo aumenta os furos. Valor negativo reduz os furos. " +"Essa função é usada para ajustar ligeiramente o tamanho quando o objeto tem " +"problema de montagem" msgid "X-Y contour compensation" msgstr "Compensação XY de contornos" 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" +"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 "" -"O contorno do objeto será expandido ou reduzido no plano XY pelo valor configurado. " -"Valor positivo aumenta o contorno. Valor negativo diminui o contorno. Essa função é " -"usada para ajustar ligeiramente o tamanho quando o objeto tem problemas de montagem" +"O contorno do objeto será expandido ou reduzido no plano XY pelo valor " +"configurado. Valor positivo aumenta o contorno. Valor negativo diminui o " +"contorno. Essa função é usada para ajustar ligeiramente o tamanho quando o " +"objeto tem problemas de montagem" msgid "Convert holes to polyholes" msgstr "Converter furos em polifuros" 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" +"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 "" -"Procura por furos quase circulares que abrangem mais de uma camada e converta a " -"geometria em polifuros. Usa o tamanho do bico e o diâmetro (maior) para calcular o " -"polifuro.\n" +"Procura por furos quase circulares que abrangem mais de uma camada e " +"converta a geometria em polifuros. Usa o tamanho do bico e o diâmetro " +"(maior) para calcular o polifuro.\n" "Consulte http://hydraraptor.blogspot.com/2011/02/polyholes.html" msgid "Polyhole detection margin" @@ -14186,15 +14609,15 @@ msgstr "Margem de detecção de polifuros" #, no-c-format, no-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 leeway to broaden the " -"detection.\n" +"As cylinders are often exported as triangles of varying size, points may not " +"be on the circle circumference. This setting allows you some leeway to " +"broaden the detection.\n" "In mm or in % of the radius." msgstr "" "Máxima deflexão de um ponto para o raio estimado do círculo.\n" -"Como os cilindros frequentemente são exportados como triângulos de tamanho variável, " -"os pontos podem não estar na circunferência do círculo. Esta configuração permite-" -"lhe alguma margem para alargar a detecção.\n" +"Como os cilindros frequentemente são exportados como triângulos de tamanho " +"variável, os pontos podem não estar na circunferência do círculo. Esta " +"configuração permite-lhe alguma margem para alargar a detecção.\n" "Em milímetros ou em % do raio." msgid "Polyhole twist" @@ -14207,43 +14630,44 @@ msgid "G-code thumbnails" msgstr "Miniaturas de G-code" msgid "" -"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the following " -"format: \"XxY, XxY, ...\"" +"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the " +"following format: \"XxY, XxY, ...\"" msgstr "" -"Tamanhos das imagens a serem armazenados em arquivos .gcode e .sl1 / .sl1s, no " -"seguinte formato: \"XxY, XxY, ...\"" +"Tamanhos das imagens a serem armazenados em arquivos .gcode e .sl1 / .sl1s, " +"no seguinte formato: \"XxY, XxY, ...\"" msgid "Format of G-code thumbnails" msgstr "Formato das miniaturas de G-code" msgid "" -"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, QOI for " -"low memory firmware" +"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, " +"QOI for low memory firmware" msgstr "" -"Formato das miniaturas de G-code: PNG para melhor qualidade, JPG para menor tamanho, " -"QOI para firmware de baixa memória" +"Formato das miniaturas de G-code: PNG para melhor qualidade, JPG para menor " +"tamanho, QOI para firmware de baixa memória" msgid "Use relative E distances" msgstr "Usar distâncias E relativas" msgid "" -"Relative extrusion is recommended when using \"label_objects\" option.Some extruders " -"work better with this option unchecked (absolute extrusion mode). Wipe tower is only " -"compatible with relative mode. It is recommended on most printers. Default is checked" +"Relative extrusion is recommended when using \"label_objects\" option.Some " +"extruders work better with this option unchecked (absolute extrusion mode). " +"Wipe tower is only compatible with relative mode. It is recommended on most " +"printers. Default is checked" msgstr "" "A extrusão relativa é recomendada ao usar a opção \"label_objects\". Algumas " -"extrusoras funcionam melhor com esta opção desmarcada (modo de extrusão absoluta). A " -"Torre Prime é compatível apenas com o modo relativo. É recomendado na maioria das " -"impressoras. O padrão é ativado" +"extrusoras funcionam melhor com esta opção desmarcada (modo de extrusão " +"absoluta). A Torre Prime é compatível apenas com o modo relativo. É " +"recomendado na maioria das impressoras. O padrão é ativado" 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" +"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 "" -"O gerador de perímetro clássico produz paredes com largura de extrusão constante e " -"para áreas muito finas é usado preenchimento de vão. O motor Arachne produz " -"perímetros com largura de extrusão variável" +"O gerador de perímetro clássico produz paredes com largura de extrusão " +"constante e para áreas muito finas é usado preenchimento de vão. O motor " +"Arachne produz perímetros com largura de extrusão variável" msgid "Arachne" msgstr "Arachne" @@ -14252,133 +14676,139 @@ msgid "Wall transition length" msgstr "Comprimento da transição de perímetro" 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" +"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 "" -"Ao fazer a transição entre diferentes números de paredes à medida que a peça fica " -"mais fina, uma certa quantidade de espaço é designada para dividir ou unir os " -"segmentos do perímetro. É expresso como uma porcentagem sobre o diâmetro do bico" +"Ao fazer a transição entre diferentes números de paredes à medida que a peça " +"fica mais fina, uma certa quantidade de espaço é designada para dividir ou " +"unir os segmentos do perímetro. É expresso como uma porcentagem sobre o " +"diâmetro do bico" msgid "Wall transitioning filter margin" msgstr "Margem de filtro de transição de perímetro" 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 "" -"Evita a transição de ida e volta entre um perímetro extra e um a menos. Esta margem " -"amplia o intervalo de larguras de extrusão que seguem para [Largura mínima da " -"perímetro - margem, 2 * Largura mínima da perímetro + margem]. Aumentar esta margem " -"reduz o número de transições, o que reduz o número de inícios / paradas de extrusão " -"e o tempo de deslocamento. No entanto, uma grande variação na largura de extrusão " -"pode levar a problemas de subextrusão ou superextrusão. É expresso como uma " -"porcentagem sobre o diâmetro do bico" +"Evita a transição de ida e volta entre um perímetro extra e um a menos. Esta " +"margem amplia o intervalo de larguras de extrusão que seguem para [Largura " +"mínima da perímetro - margem, 2 * Largura mínima da perímetro + margem]. " +"Aumentar esta margem reduz o número de transições, o que reduz o número de " +"inícios / paradas de extrusão e o tempo de deslocamento. No entanto, uma " +"grande variação na largura de extrusão pode levar a problemas de subextrusão " +"ou superextrusão. É expresso como uma porcentagem sobre o diâmetro do bico" msgid "Wall transitioning threshold angle" msgstr "Ângulo de limite de transição de perímetro" 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" +"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 "" -"Quando criar transições entre números pares e ímpares de paredes. Uma forma de cunha " -"com um ângulo maior do que esta configuração não terá transições e nenhumo perímetro " -"será impresso no centro para preencher o espaço restante. Reduzir esta configuração " -"reduz o número e o comprimento dessas paredes centrais, mas pode deixar vazios ou " -"extrusão excessiva" +"Quando criar transições entre números pares e ímpares de paredes. Uma forma " +"de cunha com um ângulo maior do que esta configuração não terá transições e " +"nenhumo perímetro será impresso no centro para preencher o espaço restante. " +"Reduzir esta configuração reduz o número e o comprimento dessas paredes " +"centrais, mas pode deixar vazios ou extrusão excessiva" msgid "Wall distribution count" msgstr "Contagem de distribuição de perímetro" 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" +"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 "" -"O número de paredes, contadas a partir do centro, sobre as quais a variação precisa " -"ser espalhada. Valores menores significam que as paredes externas não mudam de " -"largura" +"O número de paredes, contadas a partir do centro, sobre as quais a variação " +"precisa ser espalhada. Valores menores significam que as paredes externas " +"não mudam de largura" msgid "Minimum feature size" msgstr "Tamanho mínimo do elemento" 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" +"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 "" -"Espessura mínima de elementos finos. Elementos do modelo que são mais finos do que " -"este valor não serão impressos, enquanto elementos mais espessos que o tamanho " -"mínimo do elemento serão alargados até a largura mínima do perímetro. É expresso " -"como uma porcentagem sobre o diâmetro do bico" +"Espessura mínima de elementos finos. Elementos do modelo que são mais finos " +"do que este valor não serão impressos, enquanto elementos mais espessos que " +"o tamanho mínimo do elemento serão alargados até a largura mínima do " +"perímetro. É expresso como uma porcentagem sobre o diâmetro do bico" msgid "Minimum wall length" msgstr "Comprimento mínimo do perímetro" msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could " -"increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which " +"could increase print time. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual " -"gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced " -"settings below to adjust the sensitivity of what is considered a top-surface. 'One " -"wall threshold' is only visible if this setting is set above the default value of " -"0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent " +"visual gaps on the outside of the model. Adjust 'One wall threshold' in the " +"Advanced settings below to adjust the sensitivity of what is considered a " +"top-surface. 'One wall threshold' is only visible if this setting is set " +"above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Ajuste este valor para evitar que perímetros curtos e não fechados sejam impressos, " -"o que poderia aumentar o tempo de impressão. Valores mais altos removem perímetros " -"mais longos.\n" +"Ajuste este valor para evitar que perímetros curtos e não fechados sejam " +"impressos, o que poderia aumentar o tempo de impressão. Valores mais altos " +"removem perímetros mais longos.\n" "\n" -"NOTA: As superfícies inferior e superior não serão afetadas por este valor para " -"evitar lacunas visuais no exterior do modelo. Ajuste o 'Limiar de um perímetro' nas " -"configurações avançadas abaixo para ajustar a sensibilidade do que é considerado uma " -"superfície superior. 'Limiar de um perímetro' só é visível se esta configuração " -"estiver acima do valor padrão de 0,5, ou se superfícies superiores de uma única " -"parede estiverem habilitadas." +"NOTA: As superfícies inferior e superior não serão afetadas por este valor " +"para evitar lacunas visuais no exterior do modelo. Ajuste o 'Limiar de um " +"perímetro' nas configurações avançadas abaixo para ajustar a sensibilidade " +"do que é considerado uma superfície superior. 'Limiar de um perímetro' só é " +"visível se esta configuração estiver acima do valor padrão de 0,5, ou se " +"superfícies superiores de uma única parede estiverem habilitadas." msgid "First layer minimum wall width" msgstr "Largura mínima do perímetro da primeira camada" 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." +"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 "" "A largura mínima do perímetro que deve ser usada para a primeira camada é " -"recomendada para ser definida com o mesmo tamanho do bico. Este ajuste é esperado " -"para melhorar a aderência." +"recomendada para ser definida com o mesmo tamanho do bico. Este ajuste é " +"esperado para melhorar a aderência." msgid "Minimum wall width" msgstr "Largura mínima do perímetro" 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" +"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 "" -"Largura do perímetro que substituirá elementos finos (de acordo com o tamanho mínimo " -"do elemento) do modelo. Se a Largura mínima do perímetro for mais fina do que a " -"espessura do elemento, o perímetro será tão espesso quanto o próprio elemento. É " -"expresso como uma porcentagem sobre o diâmetro do bico" +"Largura do perímetro que substituirá elementos finos (de acordo com o " +"tamanho mínimo do elemento) do modelo. Se a Largura mínima do perímetro for " +"mais fina do que a espessura do elemento, o perímetro será tão espesso " +"quanto o próprio elemento. É expresso como uma porcentagem sobre o diâmetro " +"do bico" msgid "Detect narrow internal solid infill" msgstr "Detectar preenchimento sólido interno estreito" 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 by default." +"concentric pattern will be used for the area to speed printing up. " +"Otherwise, rectilinear pattern is used by default." msgstr "" -"Esta opção irá detectar automaticamente áreas de preenchimento sólido interno " -"estreito. Se ativada, o padrão concêntrico será usado para a área para acelerar a " -"impressão. Caso contrário, o padrão reticulado é usado por padrão." +"Esta opção irá detectar automaticamente áreas de preenchimento sólido " +"interno estreito. Se ativada, o padrão concêntrico será usado para a área " +"para acelerar a impressão. Caso contrário, o padrão reticulado é usado por " +"padrão." msgid "invalid value " msgstr "valor inválido " @@ -14403,16 +14833,17 @@ msgstr "Sem verificação" msgid "Do not run any validity checks, such as gcode path conflicts check." msgstr "" -"Não execute nenhuma verificação de validade, como a verificação de conflitos de " -"caminho do gcode." +"Não execute nenhuma verificação de validade, como a verificação de conflitos " +"de caminho do gcode." msgid "Ensure on bed" msgstr "Garantir na mesa" -msgid "Lift the object above the bed when it is partially below. Disabled by default" +msgid "" +"Lift the object above the bed when it is partially below. Disabled by default" msgstr "" -"Eleve o objeto acima da mesa quando estiver parcialmente abaixo. Desativado por " -"padrão" +"Eleve o objeto acima da mesa quando estiver parcialmente abaixo. Desativado " +"por padrão" msgid "Orient Options" msgstr "Opções de Orientação" @@ -14433,11 +14864,13 @@ msgid "Data directory" msgstr "Diretório de dados" msgid "" -"Load and store settings at the given directory. This is useful for maintaining " -"different profiles or including configurations from a network storage." +"Load and store settings at the given directory. This is useful for " +"maintaining different profiles or including configurations from a network " +"storage." msgstr "" -"Carregar e armazenar configurações no diretório fornecido. Isso é útil para manter " -"diferentes perfis ou incluir configurações de um armazenamento em rede." +"Carregar e armazenar configurações no diretório fornecido. Isso é útil para " +"manter diferentes perfis ou incluir configurações de um armazenamento em " +"rede." msgid "Load custom gcode" msgstr "Carregar gcode personalizado" @@ -14452,22 +14885,22 @@ msgid "Contains z-hop present at the beginning of the custom G-code block." msgstr "Contém o z-hop presente no início do bloco de G-code personalizado." msgid "" -"Position of the extruder at the beginning of the custom G-code block. If the custom " -"G-code travels somewhere else, it should write to this variable so OrcaSlicer knows " -"where it travels from when it gets control back." +"Position of the extruder at the beginning of the custom G-code block. If the " +"custom G-code travels somewhere else, it should write to this variable so " +"OrcaSlicer knows where it travels from when it gets control back." msgstr "" "Posição do extrusor no início do bloco de G-code personalizado. Se o G-code " -"personalizado se deslocar para outro lugar, ele deve escrever nesta variável para " -"que o PrusaSlicer saiba de onde se desloca quando recupera o controle." +"personalizado se deslocar para outro lugar, ele deve escrever nesta variável " +"para que o PrusaSlicer saiba de onde se desloca quando recupera o controle." msgid "" -"Retraction state at the beginning of the custom G-code block. If the custom G-code " -"moves the extruder axis, it should write to this variable so OrcaSlicer de-retracts " -"correctly when it gets control back." +"Retraction state at the beginning of the custom G-code block. If the custom " +"G-code moves the extruder axis, it should write to this variable so " +"OrcaSlicer de-retracts correctly when it gets control back." msgstr "" "Estado de retração no início do bloco de G-code personalizado. Se o G-code " -"personalizado mover o eixo do extrusor, ele deve escrever nesta variável para que o " -"PrusaSlicer desretraia corretamente quando recupera o controle." +"personalizado mover o eixo do extrusor, ele deve escrever nesta variável " +"para que o PrusaSlicer desretraia corretamente quando recupera o controle." msgid "Extra de-retraction" msgstr "Desretração extra" @@ -14479,7 +14912,8 @@ msgid "Absolute E position" msgstr "" msgid "" -"Current position of the extruder axis. Only used with absolute extruder addressing." +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." msgstr "" msgid "Current extruder" @@ -14491,9 +14925,12 @@ msgstr "Índice base zero da extrusora atualmente utilizada." msgid "Current object index" msgstr "Índice do objeto atual" -msgid "Specific for sequential printing. Zero-based index of currently printed object." +msgid "" +"Specific for sequential printing. Zero-based index of currently printed " +"object." msgstr "" -"Específico para impressão sequencial. Índice base zero do objeto atualmente impresso." +"Específico para impressão sequencial. Índice base zero do objeto atualmente " +"impresso." msgid "Has wipe tower" msgstr "Tem Torre Prime" @@ -14504,7 +14941,9 @@ msgstr "Se a Torre Prime está sendo gerada ou não na impressão." msgid "Initial extruder" msgstr "Extrusora inicial" -msgid "Zero-based index of the first extruder used in the print. Same as initial_tool." +msgid "" +"Zero-based index of the first extruder used in the print. Same as " +"initial_tool." msgstr "" "Índice base zero da primeira extrusora utilizada na impressão. Mesmo que " "ferramenta_inicial." @@ -14513,7 +14952,8 @@ msgid "Initial tool" msgstr "Ferramenta inicial" msgid "" -"Zero-based index of the first extruder used in the print. Same as initial_extruder." +"Zero-based index of the first extruder used in the print. Same as " +"initial_extruder." msgstr "" "Índice base zero da primeira extrusora utilizada na impressão. Mesmo que " "extrusora_inicial." @@ -14521,8 +14961,10 @@ msgstr "" msgid "Is extruder used?" msgstr "Extrusora utilizada?" -msgid "Vector of booleans stating whether a given extruder is used in the print." -msgstr "Vetor de booleanos indicando se uma dada extrusora é utilizada na impressão." +msgid "" +"Vector of booleans stating whether a given extruder is used in the print." +msgstr "" +"Vetor de booleanos indicando se uma dada extrusora é utilizada na impressão." msgid "Has single extruder MM priming" msgstr "" @@ -14534,7 +14976,8 @@ msgid "Volume per extruder" msgstr "Volume por extrusora" msgid "Total filament volume extruded per extruder during the entire print." -msgstr "Volume total de filamento extrudado por extrusora durante toda a impressão." +msgstr "" +"Volume total de filamento extrudado por extrusora durante toda a impressão." msgid "Total toolchanges" msgstr "Total de trocas de ferramenta" @@ -14555,18 +14998,18 @@ msgid "" "Weight per extruder extruded during the entire print. Calculated from " "filament_density value in Filament Settings." msgstr "" -"Peso por extrusora extrudido durante toda a impressão. Calculado a partir do valor " -"de densidade do filamento nas configurações de filamento." +"Peso por extrusora extrudido durante toda a impressão. Calculado a partir do " +"valor de densidade do filamento nas configurações de filamento." msgid "Total weight" msgstr "Peso total" msgid "" -"Total weight of the print. Calculated from filament_density value in Filament " -"Settings." +"Total weight of the print. Calculated from filament_density value in " +"Filament Settings." msgstr "" -"Peso total da impressão. Calculado a partir do valor de densidade do filamento nas " -"configurações de filamento." +"Peso total da impressão. Calculado a partir do valor de densidade do " +"filamento nas configurações de filamento." msgid "Total layer count" msgstr "Total de camadas" @@ -14585,20 +15028,21 @@ msgstr "Número de instâncias" msgid "Total number of object instances in the print, summed over all objects." msgstr "" -"Número total de instâncias de objeto na impressão, somadas sobre todos os objetos." +"Número total de instâncias de objeto na impressão, somadas sobre todos os " +"objetos." msgid "Scale per object" msgstr "Escala por objeto" msgid "" "Contains a string with the information about what scaling was applied to the " -"individual objects. Indexing of the objects is zero-based (first object has index " -"0).\n" +"individual objects. Indexing of the objects is zero-based (first object has " +"index 0).\n" "Example: 'x:100% y:50% z:100'." msgstr "" "Contém uma frase com informações sobre qual escala foi aplicada aos objetos " -"individuais. A indexação dos objetos é baseada em zero (o primeiro objeto tem índice " -"0).\n" +"individuais. A indexação dos objetos é baseada em zero (o primeiro objeto " +"tem índice 0).\n" "Exemplo: 'x:100% y:50% z:100'." msgid "Input filename without extension" @@ -14607,20 +15051,24 @@ msgstr "Nome do arquivo de entrada sem extensão" msgid "Source filename of the first object, without extension." msgstr "Nome do arquivo de origem do primeiro objeto, sem extensão." -msgid "The vector has two elements: x and y coordinate of the point. Values in mm." -msgstr "O vetor possui dois elementos: coordenada x e y do ponto. Valores em mm." +msgid "" +"The vector has two elements: x and y coordinate of the point. Values in mm." +msgstr "" +"O vetor possui dois elementos: coordenada x e y do ponto. Valores em mm." msgid "" -"The vector has two elements: x and y dimension of the bounding box. Values in mm." +"The vector has two elements: x and y dimension of the bounding box. Values " +"in mm." msgstr "" -"O vetor tem dois elementos: dimensão x e y da caixa delimitadora. Valores em mm." +"O vetor tem dois elementos: dimensão x e y da caixa delimitadora. Valores em " +"mm." msgid "First layer convex hull" msgstr "Parede convexa da primeira camada" msgid "" -"Vector of points of the first layer convex hull. Each element has the following " -"format:'[x, y]' (x and y are floating-point numbers in mm)." +"Vector of points of the first layer convex hull. Each element has the " +"following format:'[x, y]' (x and y are floating-point numbers in mm)." msgstr "" "Vetor de pontos do perímetro convexo da primeira camada. Cada elemento tem o " "seguinte formato: '[x, y]' (x e y são números em ponto flutuante em mm)." @@ -14668,11 +15116,11 @@ msgid "Filament preset name" msgstr "Nome do perfil de filamento" msgid "" -"Names of the filament presets used for slicing. The variable is a vector containing " -"one name for each extruder." +"Names of the filament presets used for slicing. The variable is a vector " +"containing one name for each extruder." msgstr "" -"Nomes dos perfis de filamento usados para fatiar. A variável é um vetor contendo um " -"nome para cada extrusora." +"Nomes dos perfis de filamento usados para fatiar. A variável é um vetor " +"contendo um nome para cada extrusora." msgid "Printer preset name" msgstr "Nome do perfil de impressora" @@ -14690,7 +15138,8 @@ msgid "Number of extruders" msgstr "" msgid "" -"Total number of extruders, regardless of whether they are used in the current print." +"Total number of extruders, regardless of whether they are used in the " +"current print." msgstr "" msgid "Layer number" @@ -14698,15 +15147,18 @@ msgstr "Número da camada" msgid "Index of the current layer. One-based (i.e. first layer is number 1)." msgstr "" -"Índice da camada atual. Baseado em um (ou seja, a primeira camada é o número 1)." +"Índice da camada atual. Baseado em um (ou seja, a primeira camada é o número " +"1)." msgid "Layer z" msgstr "Camada z" msgid "" -"Height of the current layer above the print bed, measured to the top of the layer." +"Height of the current layer above the print bed, measured to the top of the " +"layer." msgstr "" -"Altura da camada atual acima da mesa de impressão, medida até o topo da camada." +"Altura da camada atual acima da mesa de impressão, medida até o topo da " +"camada." msgid "Maximal layer z" msgstr "Altura máxima da camada z" @@ -14752,10 +15204,11 @@ msgstr "overhangs grandes" #, c-format, boost-format msgid "" -"It seems object %s has %s. Please re-orient the object or enable support generation." +"It seems object %s has %s. Please re-orient the object or enable support " +"generation." msgstr "" -"Parece que o objeto %s tem %s. Por favor, reoriente o objeto ou habilite a geração " -"de suporte." +"Parece que o objeto %s tem %s. Por favor, reoriente o objeto ou habilite a " +"geração de suporte." msgid "Optimizing toolpath" msgstr "Otimizando caminho da ferramenta" @@ -14764,18 +15217,19 @@ msgid "Slicing mesh" msgstr "Fatiando malha" msgid "" -"No layers were detected. You might want to repair your STL file(s) or check their " -"size or thickness and retry.\n" +"No layers were detected. You might want to repair your STL file(s) or check " +"their size or thickness and retry.\n" msgstr "" -"Nenhuma camada foi detectada. Você pode querer reparar seu(s) arquivo(s) STL ou " -"verificar seu tamanho ou espessura e tentar novamente.\n" +"Nenhuma camada foi detectada. Você pode querer reparar seu(s) arquivo(s) STL " +"ou verificar seu tamanho ou espessura e tentar novamente.\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 "" -"A compensação de tamanho XY de um objeto não será usada porque ele também está " -"pintado com cor.\n" +"A compensação de tamanho XY de um objeto não será usada porque ele também " +"está pintado com cor.\n" "A compensação de tamanho XY não pode ser combinada com pintura colorida." #, c-format, boost-format @@ -14809,10 +15263,11 @@ msgstr "Suporte: corrigir buracos na camada %d" msgid "Support: propagate branches at layer %d" msgstr "Suporte: propagar ramificações na camada %d" -msgid "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgid "" +"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Formato de arquivo desconhecido. O arquivo de entrada deve ter extensão .stl, .obj, ." -"amf(.xml)." +"Formato de arquivo desconhecido. O arquivo de entrada deve ter " +"extensão .stl, .obj, .amf(.xml)." msgid "Loading of a model file failed." msgstr "Falha ao carregar um arquivo de modelo." @@ -14822,8 +15277,8 @@ msgstr "O arquivo fornecido não pôde ser lido porque está vazio" msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Formato de arquivo desconhecido. O arquivo de entrada deve ter extensão .3mf ou .zip." -"amf." +"Formato de arquivo desconhecido. O arquivo de entrada deve ter extensão .3mf " +"ou .zip.amf." msgid "Canceled" msgstr "Cancelado" @@ -14882,9 +15337,11 @@ msgstr "Terminar" msgid "How to use calibration result?" msgstr "Como usar o resultado da calibração?" -msgid "You could change the Flow Dynamics Calibration Factor in material editing" +msgid "" +"You could change the Flow Dynamics Calibration Factor in material editing" msgstr "" -"Você pode alterar o Fator de Calibração de Dinâmica de Fluxo na edição de materiais" +"Você pode alterar o Fator de Calibração de Dinâmica de Fluxo na edição de " +"materiais" msgid "" "The current firmware version of the printer does not support calibration.\n" @@ -14941,9 +15398,11 @@ msgstr "O nome é o mesmo que outro nome de preset existente" msgid "create new preset failed." msgstr "falha ao criar novo preset." -msgid "Are you sure to cancel the current calibration and return to the home page?" +msgid "" +"Are you sure to cancel the current calibration and return to the home page?" msgstr "" -"Tem certeza de que deseja cancelar a calibração atual e retornar à página inicial?" +"Tem certeza de que deseja cancelar a calibração atual e retornar à página " +"inicial?" msgid "No Printer Connected!" msgstr "Nenhuma impressora conectada!" @@ -14958,14 +15417,15 @@ msgid "The input value size must be 3." msgstr "O tamanho do valor de entrada deve ser 3." msgid "" -"This machine type can only hold 16 history results per nozzle. You can delete the " -"existing historical results and then start calibration. Or you can continue the " -"calibration, but you cannot create new calibration historical results. \n" +"This machine type can only hold 16 history results per nozzle. You can " +"delete the existing historical results and then start calibration. Or you " +"can continue the calibration, but you cannot create new calibration " +"historical results. \n" "Do you still want to continue the calibration?" msgstr "" -"Esse tipo de máquina só pode manter 16 resultados por bico no histórico. Você pode " -"deletar resultados existentes e então começar a calibração. Ou você pode continuar, " -"mas não poderá criar novos resultados. \n" +"Esse tipo de máquina só pode manter 16 resultados por bico no histórico. " +"Você pode deletar resultados existentes e então começar a calibração. Ou " +"você pode continuar, mas não poderá criar novos resultados. \n" "Você ainda quer continuar com a calibração?" msgid "Connecting to printer..." @@ -14979,21 +15439,21 @@ msgstr "O resultado da Calibração de Dinâmica de Fluxo foi salvo na impressor #, 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 override the " -"historical result?" +"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 override the historical result?" msgstr "" -"Já existe um resultado de calibração histórico com o mesmo nome: %s. Apenas um dos " -"resultados com o mesmo nome é salvo. Tem certeza que deseja sobrescrever o resultado " -"histórico?" +"Já existe um resultado de calibração histórico com o mesmo nome: %s. Apenas " +"um dos resultados com o mesmo nome é salvo. Tem certeza que deseja " +"sobrescrever o resultado histórico?" #, c-format, boost-format msgid "" -"This machine type can only hold %d history results per nozzle. This result will not " -"be saved." +"This machine type can only hold %d history results per nozzle. This result " +"will not be saved." msgstr "" -"Este tipo de máquina só pode salvar %d resultados por bico. Este resultado não será " -"salvo." +"Este tipo de máquina só pode salvar %d resultados por bico. Este resultado " +"não será salvo." msgid "Internal Error" msgstr "Erro Interno" @@ -15005,29 +15465,30 @@ msgid "Flow rate calibration result has been saved to preset" msgstr "O resultado da calibração de fluxo foi salvo no preset" msgid "Max volumetric speed calibration result has been saved to preset" -msgstr "O resultado da calibração de fluxo volumétrico máximo foi salvo no preset" +msgstr "" +"O resultado da calibração de fluxo volumétrico máximo foi salvo no preset" msgid "When do you need Flow Dynamics Calibration" msgstr "Quando você precisa da Calibração de Dinâmica de Fluxo" 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 "" -"Adicionamos agora a auto-calibração para diferentes filamentos, que é totalmente " -"automatizada e o resultado será salvo na impressora para uso futuro. Você só precisa " -"fazer a calibração nos seguintes casos limitados:\n" +"Adicionamos agora a auto-calibração para diferentes filamentos, que é " +"totalmente automatizada e o resultado será salvo na impressora para uso " +"futuro. Você só precisa fazer a calibração nos seguintes casos limitados:\n" "1. Se você introduzir um novo filamento de marcas/modelos diferentes ou se o " "filamento estiver úmido;\n" "2. se o bico estiver desgastado ou substituído por um novo;\n" -"3. Se o fluxo volumétrico máximo ou a temperatura de impressão forem alteradas na " -"configuração do filamento." +"3. Se o fluxo volumétrico máximo ou a temperatura de impressão forem " +"alteradas na configuração do filamento." msgid "About this calibration" msgstr "Sobre esta calibração" @@ -15035,103 +15496,108 @@ msgstr "Sobre esta calibração" 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 that there are a few cases that can make the calibration results " -"unreliable, such as insufficient adhesion on the build plate. Improving adhesion can " -"be achieved by washing the build plate or applying glue. For more information on " -"this topic, please refer to our Wiki.\n" +"unreliable, such as insufficient adhesion on the build plate. Improving " +"adhesion can be achieved by washing the build plate or applying glue. For " +"more information on this topic, please refer to 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 "" msgid "When to use Flow Rate Calibration" msgstr "Quando usar a Calibração de Fluxo" 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 "" -"Depois de usar a Calibração de Dinâmica de Fluxo, ainda pode haver alguns problemas " -"de extrusão, como:\n" +"Depois de usar a Calibração de Dinâmica de Fluxo, ainda pode haver alguns " +"problemas de extrusão, como:\n" "1. Superextrusão: excesso de material no objeto impresso, formando grumos ou " -"espinhas, ou as camadas parecem mais espessas do que o esperado e não uniformes.\n" -"2. Subextrusão: camadas muito finas, resistência fraca do preenchimento ou vazios na " -"camada superior do modelo, mesmo ao imprimir lentamente.\n" -"3. Baixa Qualidade de Superfície: a superfície de suas impressões parece áspera ou " -"irregular.\n" -"4. Integridade Estrutural Fraca: as impressões quebram facilmente ou não parecem tão " -"robustas quanto deveriam." +"espinhas, ou as camadas parecem mais espessas do que o esperado e não " +"uniformes.\n" +"2. Subextrusão: camadas muito finas, resistência fraca do preenchimento ou " +"vazios na camada superior do modelo, mesmo ao imprimir lentamente.\n" +"3. Baixa Qualidade de Superfície: a superfície de suas impressões parece " +"áspera ou irregular.\n" +"4. Integridade Estrutural Fraca: as impressões quebram facilmente ou não " +"parecem tão robustas quanto deveriam." 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." +"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 "" -"Além disso, a Calibração de Fluxo é crucial para materiais espumantes como LW-PLA " -"usados em aviões RC. Esses materiais se expandem muito quando aquecidos, e a " -"calibração fornece uma taxa de fluxo de referência útil." +"Além disso, a Calibração de Fluxo é crucial para materiais espumantes como " +"LW-PLA usados em aviões RC. Esses materiais se expandem muito quando " +"aquecidos, e a calibração fornece uma taxa de fluxo de referência útil." 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." +"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 "" -"A Calibração de Fluxo mede a relação entre os volumes de extrusão esperados e reais. " -"A configuração padrão funciona bem em impressoras Bambu Lab e filamentos oficiais, " -"pois foram pré-calibrados e ajustados. Para um filamento regular, geralmente você " -"não precisará realizar uma Calibração da Taxa de Fluxo a menos que ainda veja os " -"defeitos listados após ter feito outras calibrações. Para mais detalhes, consulte o " -"artigo na wiki." +"A Calibração de Fluxo mede a relação entre os volumes de extrusão esperados " +"e reais. A configuração padrão funciona bem em impressoras Bambu Lab e " +"filamentos oficiais, pois foram pré-calibrados e ajustados. Para um " +"filamento regular, geralmente você não precisará realizar uma Calibração da " +"Taxa de Fluxo a menos que ainda veja os defeitos listados após ter feito " +"outras calibrações. Para mais detalhes, consulte o artigo na wiki." 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" +"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" +"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." +"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 "" -"A Calibração Automática de Fluxo utiliza a tecnologia Micro-Lidar da Bambu Lab, " -"medindo diretamente os padrões de calibração. No entanto, esteja ciente de que a " -"eficácia e precisão deste método podem ser comprometidas com tipos específicos de " -"materiais. Especialmente, filamentos que são transparentes ou semi-transparentes, " -"com partículas brilhantes ou com acabamento altamente reflexivo podem não ser " -"adequados para esta calibração e podem produzir resultados abaixo do desejado.\n" +"A Calibração Automática de Fluxo utiliza a tecnologia Micro-Lidar da Bambu " +"Lab, medindo diretamente os padrões de calibração. No entanto, esteja ciente " +"de que a eficácia e precisão deste método podem ser comprometidas com tipos " +"específicos de materiais. Especialmente, filamentos que são transparentes ou " +"semi-transparentes, com partículas brilhantes ou com acabamento altamente " +"reflexivo podem não ser adequados para esta calibração e podem produzir " +"resultados abaixo do desejado.\n" "\n" -"Os resultados da calibração podem variar entre cada calibração ou filamento. Ainda " -"estamos melhorando a precisão e compatibilidade desta calibração por meio de " -"atualizações de firmware ao longo do tempo.\n" +"Os resultados da calibração podem variar entre cada calibração ou filamento. " +"Ainda estamos melhorando a precisão e compatibilidade desta calibração por " +"meio de atualizações de firmware ao longo do tempo.\n" "\n" -"Atenção: A Calibração da Taxa de Fluxo é um processo avançado, para ser tentado " -"apenas por aqueles que entendem completamente seu propósito e implicações. O uso " -"incorreto pode resultar em impressões de baixa qualidade ou danos à impressora. " -"Certifique-se de ler e entender cuidadosamente o processo antes de fazê-lo." +"Atenção: A Calibração da Taxa de Fluxo é um processo avançado, para ser " +"tentado apenas por aqueles que entendem completamente seu propósito e " +"implicações. O uso incorreto pode resultar em impressões de baixa qualidade " +"ou danos à impressora. Certifique-se de ler e entender cuidadosamente o " +"processo antes de fazê-lo." msgid "When you need Max Volumetric Speed Calibration" msgstr "Quando você precisa da Calibração de Velocidade Volumétrica Máxima" @@ -15141,7 +15607,8 @@ msgstr "Sobre-extrusão ou sub-extrusão" msgid "Max Volumetric Speed calibration is recommended when you print with:" msgstr "" -"A calibração de Velocidade Volumétrica Máxima é recomendada quando você imprime com:" +"A calibração de Velocidade Volumétrica Máxima é recomendada quando você " +"imprime com:" msgid "material with significant thermal shrinkage/expansion, such as..." msgstr "material com significativa contração/expansão térmica, como..." @@ -15153,17 +15620,18 @@ msgid "We found the best Flow Dynamics Calibration Factor" msgstr "Encontramos o melhor Fator de Calibração de Dinâmica de Fluxo" msgid "" -"Part of the calibration failed! You may clean the plate and retry. The failed test " -"result would be dropped." +"Part of the calibration failed! You may clean the plate and retry. The " +"failed test result would be dropped." msgstr "" -"Parte da calibração falhou! Você pode limpar a mesa e tentar novamente. O resultado " -"do teste falho será descartado." +"Parte da calibração falhou! Você pode limpar a mesa e tentar novamente. O " +"resultado do teste falho será descartado." msgid "" -"*We recommend you to add brand, materia, type, and even humidity level in the Name" +"*We recommend you to add brand, materia, type, and even humidity level in " +"the Name" msgstr "" -"*Recomendamos que você adicione marca, material, tipo e até mesmo nível de umidade " -"no nome" +"*Recomendamos que você adicione marca, material, tipo e até mesmo nível de " +"umidade no nome" msgid "Failed" msgstr "Falhou" @@ -15175,8 +15643,8 @@ msgid "The name cannot exceed 40 characters." msgstr "O nome não pode ter mais de 40 caracteres." msgid "" -"Only one of the results with the same name will be saved. Are you sure you want to " -"override the other results?" +"Only one of the results with the same name will be saved. Are you sure you " +"want to override the other results?" msgstr "" msgid "Please find the best line on your plate" @@ -15235,7 +15703,8 @@ msgid "Please choose a block with smoothest top surface." msgstr "Por favor, escolha um bloco com a superfície superior mais lisa." msgid "Please input a valid value (0 <= Max Volumetric Speed <= 60)" -msgstr "Por favor, insira um valor válido (0 <= Velocidade Volumétrica Máxima <= 60)" +msgstr "" +"Por favor, insira um valor válido (0 <= Velocidade Volumétrica Máxima <= 60)" msgid "Calibration Type" msgstr "Tipo de Calibração" @@ -15250,11 +15719,11 @@ msgid "Title" msgstr "Título" msgid "" -"A test model will be printed. Please clear the build plate and place it back to the " -"hot bed before calibration." +"A test model will be printed. Please clear the build plate and place it back " +"to the hot bed before calibration." msgstr "" -"Um modelo de teste será impresso. Por favor, limpe a mesa e a coloque de volta na " -"mesa aquecida antes da calibração." +"Um modelo de teste será impresso. Por favor, limpe a mesa e a coloque de " +"volta na mesa aquecida antes da calibração." msgid "Printing Parameters" msgstr "Parâmetros de Impressão" @@ -15278,7 +15747,8 @@ msgid "" msgstr "" "Dicas para material de calibração:\n" "- Materiais que podem compartilhar a mesma temperatura de mesa aquecida\n" -"- Diferentes marcas e famílias de filamentos (Marca = Bambu, Família = Básico, Fosco)" +"- Diferentes marcas e famílias de filamentos (Marca = Bambu, Família = " +"Básico, Fosco)" msgid "Pattern" msgstr "Padrão" @@ -15530,7 +16000,8 @@ msgid "Upload to Printer Host with the following filename:" msgstr "Enviar para o Host da Impressora com o seguinte nome de arquivo:" msgid "Use forward slashes ( / ) as a directory separator if needed." -msgstr "Use barras inclinadas ( / ) como separador de diretórios, se necessário." +msgstr "" +"Use barras inclinadas ( / ) como separador de diretórios, se necessário." msgid "Upload to storage" msgstr "Enviar para armazenamento" @@ -15582,6 +16053,23 @@ msgstr "Cancelando" msgid "Error uploading to print host" msgstr "Erro ao enviar para o host de impressão" +msgid "" +"The selected bed type does not match the file. Please confirm before " +"starting the print." +msgstr "" + +msgid "Time-lapse" +msgstr "" + +msgid "Heated Bed Leveling" +msgstr "" + +msgid "Textured Build Plate (Side A)" +msgstr "" + +msgid "Smooth Build Plate (Side B)" +msgstr "" + msgid "Unable to perform boolean operation on selected parts" msgstr "Não é possível realizar operação booleana nas peças selecionadas" @@ -15713,46 +16201,49 @@ msgstr "" "O fornecedor personalizado não foi inserido, por favor insira o fornecedor " "personalizado." -msgid "\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgid "" +"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." msgstr "" -"\"Bambu\" ou \"Genérico\" não podem ser usados como fornecedor para filamentos " -"personalizados." +"\"Bambu\" ou \"Genérico\" não podem ser usados como fornecedor para " +"filamentos personalizados." msgid "Filament type is not selected, please reselect type." -msgstr "O tipo de filamento não está selecionado, por favor reselecione o tipo." +msgstr "" +"O tipo de filamento não está selecionado, por favor reselecione o tipo." msgid "Filament serial is not entered, please enter serial." msgstr "O serial do filamento não foi inserido, por favor insira o serial." msgid "" -"There may be escape characters in the vendor or serial input of filament. Please " -"delete and re-enter." +"There may be escape characters in the vendor or serial input of filament. " +"Please delete and re-enter." msgstr "" -"Pode haver caracteres de escape na entrada de fornecedor ou serial do filamento. Por " -"favor, exclua e insira novamente." +"Pode haver caracteres de escape na entrada de fornecedor ou serial do " +"filamento. Por favor, exclua e insira novamente." msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." msgstr "" -"Todas as entradas no fornecedor personalizado ou serial são espaços. Por favor, " -"insira novamente." +"Todas as entradas no fornecedor personalizado ou serial são espaços. Por " +"favor, insira novamente." msgid "The vendor can not be a number. Please re-enter." msgstr "O fornecedor não pode ser um número. Por favor, insira novamente." -msgid "You have not selected a printer or preset yet. Please select at least one." +msgid "" +"You have not selected a printer or preset yet. Please select at least one." msgstr "" -"Você ainda não selecionou uma impressora ou preset. Por favor, selecione pelo menos " -"um." +"Você ainda não selecionou uma impressora ou preset. Por favor, selecione " +"pelo menos um." #, c-format, boost-format msgid "" "The Filament name %s you created already exists. \n" -"If you continue creating, the preset created will be displayed with its full name. " -"Do you want to continue?" +"If you continue creating, the preset created will be displayed with its full " +"name. Do you want to continue?" msgstr "" "O nome do Filamento %s que você criou já existe. \n" -"Se você continuar a criar, a preset criado será exibido com o seu nome completo. " -"Você quer continuar?" +"Se você continuar a criar, a preset criado será exibido com o seu nome " +"completo. Você quer continuar?" msgid "Some existing presets have failed to be created, as follows:\n" msgstr "Alguns presets existentes falharam ao serem criados, como segue:\n" @@ -15765,7 +16256,8 @@ msgstr "" "Você deseja reescrevê-lo?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Renomearíamos os presets como \"Fornecedor Tipo Serial @ impressora que você " @@ -15838,7 +16330,8 @@ msgid "Exception in obtaining file size, please import again." msgstr "Exceção ao obter o tamanho do arquivo, por favor importe novamente." msgid "Preset path is not find, please reselect vendor." -msgstr "O caminho do preset não é encontrado, por favor reselecione o fornecedor." +msgstr "" +"O caminho do preset não é encontrado, por favor reselecione o fornecedor." msgid "The printer model was not found, please reselect." msgstr "O modelo da impressora não foi encontrado, por favor reselecione." @@ -15865,35 +16358,37 @@ msgid "Back Page 1" msgstr "Voltar à Página 1" msgid "" -"You have not yet chosen which printer preset to create based on. Please choose the " -"vendor and model of the printer" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" msgstr "" -"Você ainda não escolheu em qual preset de impressora basear-se. Por favor, escolha o " -"fornecedor e modelo da impressora" +"Você ainda não escolheu em qual preset de impressora basear-se. Por favor, " +"escolha o fornecedor e modelo da impressora" msgid "" -"You have entered an illegal input in the printable area section on the first page. " -"Please check before creating it." +"You have entered an illegal input in the printable area section on the first " +"page. Please check before creating it." msgstr "" -"Você inseriu uma entrada ilegal na seção de área imprimível na primeira página. Por " -"favor, verifique antes de criar." +"Você inseriu uma entrada ilegal na seção de área imprimível na primeira " +"página. Por favor, verifique antes de criar." msgid "The custom printer or model is not entered, please enter it." msgstr "A impressora ou modelo personalizado não foi colocado." 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" +"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 "" -"O modelo de impressora que você criou já possui um modelo com o mesmo nome. Deseja " -"substituí-lo?\n" +"O modelo de impressora que você criou já possui um modelo com o mesmo nome. " +"Deseja substituí-lo?\n" " \tSim: Substituir o modelo de impressora com o mesmo nome, e os modelos de " "filamento e processo com o mesmo nome do modelo serão recriados, \n" -" e os modelos de filamento e processo sem o mesmo nome do modelo serão preservados.\n" +" e os modelos de filamento e processo sem o mesmo nome do modelo serão " +"preservados.\n" " \tCancelar: Não criar um modelo, retornar para a interface de criação." msgid "You need to select at least one filament preset." @@ -15915,29 +16410,33 @@ msgid "Current vendor has no models, please reselect." msgstr "O fornecedor atual não possui modelos, por favor selecione novamente." msgid "" -"You have not selected the vendor and model or entered the custom vendor and model." +"You have not selected the vendor and model or entered the custom vendor and " +"model." msgstr "" "Você não selecionou um fornecedor e modelo nem colocou fornecer e modelo " "personalizado." msgid "" -"There may be escape characters in the custom printer vendor or model. Please delete " -"and re-enter." +"There may be escape characters in the custom printer vendor or model. Please " +"delete and re-enter." msgstr "" -"Pode haver caracteres de escape no fornecedor ou modelo personalizado da impressora. " -"Por favor, exclua e insira novamente." +"Pode haver caracteres de escape no fornecedor ou modelo personalizado da " +"impressora. Por favor, exclua e insira novamente." -msgid "All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgid "" +"All inputs in the custom printer vendor or model are spaces. Please re-enter." msgstr "" -"Todas as entradas no fornecedor ou modelo personalizado da impressora são espaços. " -"Por favor, insira novamente." +"Todas as entradas no fornecedor ou modelo personalizado da impressora são " +"espaços. Por favor, insira novamente." msgid "Please check bed printable shape and origin input." msgstr "Por favor, verifique a forma imprimível da mesa e a entrada de origem." -msgid "You have not yet selected the printer to replace the nozzle, please choose." +msgid "" +"You have not yet selected the printer to replace the nozzle, please choose." msgstr "" -"Você ainda não selecionou a impressora para substituir o bico, por favor escolha." +"Você ainda não selecionou a impressora para substituir o bico, por favor " +"escolha." msgid "Create Printer Successful" msgstr "Impressora criada com sucesso" @@ -15949,34 +16448,37 @@ msgid "Printer Created" msgstr "Impressora criada" msgid "Please go to printer settings to edit your presets" -msgstr "Por favor vá parar configurações de impressora para editar os seus presets" +msgstr "" +"Por favor vá parar configurações de impressora para editar os seus presets" msgid "Filament Created" msgstr "Filamento criado" 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 has a significant impact on printing quality. Please set them carefully." +"Please note that nozzle temperature, hot bed temperature, and maximum " +"volumetric speed has a significant impact on printing quality. Please set " +"them carefully." msgstr "" -"Por favor, vá para as configurações do filamento para editar seus presets, se " -"necessário. \n" -"Por favor, note que a temperatura do bico, temperatura da mesa aquecida e velocidade " -"volumétrica máxima têm um impacto significativo na qualidade de impressão. Por " -"favor, ajuste-os com cuidado." +"Por favor, vá para as configurações do filamento para editar seus presets, " +"se necessário. \n" +"Por favor, note que a temperatura do bico, temperatura da mesa aquecida e " +"velocidade volumétrica máxima têm um impacto significativo na qualidade de " +"impressão. Por favor, ajuste-os com cuidado." msgid "" "\n" "\n" -"Orca has detected that your user presets synchronization function is not enabled, " -"which may result in unsuccessful Filament settings on the Device page. \n" +"Orca has detected that your user presets synchronization function is not " +"enabled, which may result in unsuccessful Filament settings on the Device " +"page. \n" "Click \"Sync user presets\" to enable the synchronization function." msgstr "" "\n" "\n" -"Orca detectou que a função de sincronização das suas predefinições de usuário não " -"está habilitada, o que pode resultar em falhas nas configurações de Filamento na " -"página do Dispositivo. \n" +"Orca detectou que a função de sincronização das suas predefinições de " +"usuário não está habilitada, o que pode resultar em falhas nas configurações " +"de Filamento na página do Dispositivo. \n" "Clique em \"Sincronizar presets do usuário\" para habilitar a função de " "sincronização." @@ -16018,13 +16520,14 @@ msgstr "Exportação bem-sucedida" #, 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." +"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 "" "A pasta '%s' já existe no diretório atual. Deseja limpá-la e reconstruí-la?\n" -"Se não, um sufixo de tempo será adicionado, e você poderá modificar o nome após a " -"criação." +"Se não, um sufixo de tempo será adicionado, e você poderá modificar o nome " +"após a criação." msgid "" "Printer and all the filament&&process presets that belongs to the printer. \n" @@ -16042,38 +16545,43 @@ msgstr "" "Pode ser compartilhado com outros." msgid "" -"Only display printer names with changes to printer, filament, and process presets." +"Only display printer names with changes to printer, filament, and process " +"presets." msgstr "" -"Só exibir nomes de impressoras com alterações nos presets de impressora, filamento e " -"processo." +"Só exibir nomes de impressoras com alterações nos presets de impressora, " +"filamento e processo." msgid "Only display the filament names with changes to filament presets." -msgstr "Apenas exibir os nomes dos filamentos com alterações nos presets de filamento." +msgstr "" +"Apenas exibir os nomes dos filamentos com alterações nos presets de " +"filamento." msgid "" -"Only printer names with user printer presets will be displayed, and each preset you " -"choose will be exported as a zip." +"Only printer names with user printer presets will be displayed, and each " +"preset you choose will be exported as a zip." msgstr "" -"Apenas os nomes das impressoras com presets de impressora do usuário serão exibidos, " -"e cada preset escolhido será exportado como um arquivo zip." +"Apenas os nomes das impressoras com presets de impressora do usuário serão " +"exibidos, e cada preset escolhido será exportado como um arquivo zip." 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." +"and all user filament presets in each filament name you select will be " +"exported as a zip." msgstr "" -"Apenas os nomes dos filamentos com presets de filamento do usuário serão exibidos, \n" -"e todas as presets de filamento do usuário em cada nome de filamento selecionado " -"serão exportadas como um arquivo zip." +"Apenas os nomes dos filamentos com presets de filamento do usuário serão " +"exibidos, \n" +"e todas as presets de filamento do usuário em cada nome de filamento " +"selecionado serão exportadas como um arquivo zip." 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." +"and all user process presets in each printer name you select will be " +"exported as a zip." msgstr "" -"Apenas os nomes das impressoras com presets de processo alterados serão exibidos, \n" -"e todos os presets de processo do usuário em cada nome de impressora selecionado " -"serão exportados como um arquivo zip." +"Apenas os nomes das impressoras com presets de processo alterados serão " +"exibidos, \n" +"e todos os presets de processo do usuário em cada nome de impressora " +"selecionado serão exportados como um arquivo zip." msgid "Please select at least one printer or filament." msgstr "Por favor, selecione pelo menos uma impressora ou filamento." @@ -16083,8 +16591,8 @@ msgstr "Por favor, selecione um tipo que deseja exportar" msgid "Failed to create temporary folder, please try Export Configs again." msgstr "" -"Falha ao criar uma pasta temporária, por favor tente exportar as configurações " -"novamente." +"Falha ao criar uma pasta temporária, por favor tente exportar as " +"configurações novamente." msgid "Edit Filament" msgstr "Editar Filamento" @@ -16093,11 +16601,11 @@ msgid "Filament presets under this filament" msgstr "Presets de filamento sob este filamento" msgid "" -"Note: If the only preset under this filament is deleted, the filament will be " -"deleted after exiting the dialog." +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." msgstr "" -"Nota: Se o único preset sob este filamento for excluído, o filamento será excluído " -"após sair da janela." +"Nota: Se o único preset sob este filamento for excluído, o filamento será " +"excluído após sair da janela." msgid "Presets inherited by other presets can not be deleted" msgstr "Presets herdados por outros presets não podem ser excluídos" @@ -16127,9 +16635,10 @@ msgid "" "If you are using this filament on your printer, please reset the filament " "information for that slot." msgstr "" -"Todos os presets de filamento pertencentes a este filamento seriam excluídas. \n" -"Se você estiver usando este filamento em sua impressora, redefina as informações do " -"filamento para esse slot." +"Todos os presets de filamento pertencentes a este filamento seriam " +"excluídas. \n" +"Se você estiver usando este filamento em sua impressora, redefina as " +"informações do filamento para esse slot." msgid "Delete filament" msgstr "Excluir filamento" @@ -16145,8 +16654,8 @@ msgstr "Copiar preset do filamento" msgid "The filament choice not find filament preset, please reselect it" msgstr "" -"O filamento selecionado não encontra preset de filamento, por favor selecione " -"novamente" +"O filamento selecionado não encontra preset de filamento, por favor " +"selecione novamente" msgid "[Delete Required]" msgstr "[Excluir Necessário]" @@ -16168,8 +16677,8 @@ msgid "nozzle memorized: %.1f %s" msgstr "bico memorizado: %.1f %s" msgid "" -"Your nozzle diameter in preset is not consistent with memorized nozzle diameter. Did " -"you change your nozzle lately?" +"Your nozzle diameter in preset is not consistent with memorized nozzle " +"diameter. Did you change your nozzle lately?" msgstr "" "O diâmetro do bico no seu perfil não está consistente com o diâmetro do bico " "memorizado. Você mudou seu bico recentemente?" @@ -16185,11 +16694,11 @@ msgid "The start, end or step is not valid value." msgstr "O início, fim ou passo não é um valor válido." msgid "" -"Unable to calibrate: maybe because the set calibration value range is too large, or " -"the step is too small" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" msgstr "" -"Incapaz de calibrar: talvez porque a faixa de valor de calibração definida seja " -"muito grande ou o passo seja muito pequeno" +"Incapaz de calibrar: talvez porque a faixa de valor de calibração definida " +"seja muito grande ou o passo seja muito pequeno" msgid "Physical Printer" msgstr "Impressora Física" @@ -16219,25 +16728,26 @@ msgid "Replace the BambuLab's device tab with print host webui" msgstr "" msgid "" -"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed " -"certificate." +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." msgstr "" "O arquivo CA HTTPS é opcional. É necessário apenas se você usar HTTPS com um " "certificado autoassinado." msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -msgstr "Arquivos de certificado (*.crt, *.pem)|*.crt;*.pem|Todos os arquivos|*.*" +msgstr "" +"Arquivos de certificado (*.crt, *.pem)|*.crt;*.pem|Todos os arquivos|*.*" msgid "Open CA certificate file" msgstr "Abrir arquivo de certificado CA" #, c-format, boost-format msgid "" -"On this system, %s uses HTTPS certificates from the system Certificate Store or " -"Keychain." +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." msgstr "" -"Neste sistema, %s usa certificados HTTPS da loja de certificados do sistema ou do " -"Keychain." +"Neste sistema, %s usa certificados HTTPS da loja de certificados do sistema " +"ou do Keychain." msgid "" "To use a custom CA file, please import your CA file into Certificate Store / " @@ -16250,7 +16760,8 @@ msgid "Login/Test" msgstr "Login/Teste" msgid "Connection to printers connected via the print host failed." -msgstr "A conexão às impressoras conectadas através do host de impressão falhou." +msgstr "" +"A conexão às impressoras conectadas através do host de impressão falhou." #, c-format, boost-format msgid "Mismatched type of print host: %s" @@ -16284,17 +16795,18 @@ msgid "Upload not enabled on FlashAir card." msgstr "Upload não ativado no cartão FlashAir." msgid "Connection to FlashAir works correctly and upload is enabled." -msgstr "A conexão com o FlashAir funciona corretamente e o upload está ativado." +msgstr "" +"A conexão com o FlashAir funciona corretamente e o upload está ativado." msgid "Could not connect to FlashAir" msgstr "Não foi possível conectar-se ao FlashAir" msgid "" -"Note: FlashAir with firmware 2.00.02 or newer and activated upload function is " -"required." +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." msgstr "" -"Nota: FlashAir com firmware 2.00.02 ou mais recente e função de upload ativada são " -"necessárias." +"Nota: FlashAir com firmware 2.00.02 ou mais recente e função de upload " +"ativada são necessárias." msgid "Connection to MKS works correctly." msgstr "A conexão com o MKS funciona corretamente." @@ -16385,256 +16897,265 @@ msgstr "" "Error: \"%2%\"" msgid "" -"It has a small layer height, and results in almost negligible layer lines and high " -"printing quality. It is suitable for most general printing cases." +"It has a small layer height, and results in almost negligible layer lines " +"and high printing quality. It is suitable for most general printing cases." msgstr "" "Possui uma pequena altura de camada, resultando em linhas de camada quase " -"imperceptíveis e alta qualidade de impressão. É adequado para a maioria dos casos " -"gerais de impressão." +"imperceptíveis e alta qualidade de impressão. É adequado para a maioria dos " +"casos gerais de impressão." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds and " -"acceleration, and the sparse infill pattern is Gyroid. So, it results in much higher " -"printing quality, but a much longer printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds " +"and acceleration, and the sparse infill pattern is Gyroid. So, it results in " +"much higher printing quality, but a much longer printing time." msgstr "" -"Comparado com o perfil padrão de um bico de 0,2 mm, ele tem velocidades e aceleração " -"mais baixas, e o padrão de preenchimento esparso é Giroide. Isso resulta em uma " -"qualidade de impressão muito superior, mas um tempo de impressão muito mais longo." +"Comparado com o perfil padrão de um bico de 0,2 mm, ele tem velocidades e " +"aceleração mais baixas, e o padrão de preenchimento esparso é Giroide. Isso " +"resulta em uma qualidade de impressão muito superior, mas um tempo de " +"impressão muito mais longo." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a slightly bigger layer " -"height, and results in almost negligible layer lines, and slightly shorter printing " +"Compared with the default profile of a 0.2 mm nozzle, it has a slightly " +"bigger layer height, and results in almost negligible layer lines, and " +"slightly shorter printing time." +msgstr "" +"Comparado com o perfil padrão de um bico de 0,2 mm, tem uma altura de camada " +"um pouco maior, resultando em linhas de camada quase insignificantes e um " +"tempo de impressão ligeiramente menor." + +msgid "" +"Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer " +"height, and results in slightly visible layer lines, but shorter printing " "time." msgstr "" -"Comparado com o perfil padrão de um bico de 0,2 mm, tem uma altura de camada um " -"pouco maior, resultando em linhas de camada quase insignificantes e um tempo de " -"impressão ligeiramente menor." - -msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer height, " -"and results in slightly visible layer lines, but shorter printing time." -msgstr "" -"Comparado com o perfil padrão de um bico de 0,2 mm, tem uma altura de camada maior, " -"o que resulta em linhas de camada ligeiramente visíveis, mas um tempo de impressão " -"menor." - -msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer height, " -"and results in almost invisible layer lines and higher printing quality, but shorter " -"printing time." -msgstr "" -"Comparado com o perfil padrão de um bico de 0,2 mm, tem uma altura de camada menor, " -"resultando em linhas de camada quase invisíveis e maior qualidade de impressão, mas " -"um tempo de impressão menor." - -msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer lines, " -"lower speeds and acceleration, and the sparse infill pattern is Gyroid. So, it " -"results in almost invisible layer lines and much higher printing quality, but much " -"longer printing time." -msgstr "" -"Comparado com o perfil padrão de um bico de 0,2 mm, tem linhas de camada menores, " -"velocidades e aceleração mais baixas, e o padrão de preenchimento esparso é Giroide. " -"Isso resulta em linhas de camada quase invisíveis e uma qualidade de impressão muito " -"superior, mas um tempo de impressão muito maior." - -msgid "" -"Compared with the default profile of 0.2 mm nozzle, it has a smaller layer height, " -"and results in minimal layer lines and higher printing quality, but shorter printing " -"time." -msgstr "" -"Comparado com o perfil padrão de um bico de 0,2 mm, tem uma altura de camada menor, " -"resultando em linhas de camada mínimas e maior qualidade de impressão, mas um tempo " +"Comparado com o perfil padrão de um bico de 0,2 mm, tem uma altura de camada " +"maior, o que resulta em linhas de camada ligeiramente visíveis, mas um tempo " "de impressão menor." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer lines, " -"lower speeds and acceleration, and the sparse infill pattern is Gyroid. So, it " -"results in minimal layer lines and much higher printing quality, but much longer " -"printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " +"height, and results in almost invisible layer lines and higher printing " +"quality, but shorter printing time." msgstr "" -"Comparado com o perfil padrão de um bico de 0,2 mm, tem linhas de camada menores, " -"velocidades e aceleração mais baixas, e o padrão de preenchimento esparso é Giroide. " -"Isso resulta em linhas de camada mínimas e uma qualidade de impressão muito " -"superior, mas um tempo de impressão muito maior." +"Comparado com o perfil padrão de um bico de 0,2 mm, tem uma altura de camada " +"menor, resultando em linhas de camada quase invisíveis e maior qualidade de " +"impressão, mas um tempo de impressão menor." msgid "" -"It has a general layer height, and results in general layer lines and printing " -"quality. It is suitable for most general printing cases." +"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " +"lines, lower speeds and acceleration, and the sparse infill pattern is " +"Gyroid. So, it results in almost invisible layer lines and much higher " +"printing quality, but much longer printing time." +msgstr "" +"Comparado com o perfil padrão de um bico de 0,2 mm, tem linhas de camada " +"menores, velocidades e aceleração mais baixas, e o padrão de preenchimento " +"esparso é Giroide. Isso resulta em linhas de camada quase invisíveis e uma " +"qualidade de impressão muito superior, mas um tempo de impressão muito maior." + +msgid "" +"Compared with the default profile of 0.2 mm nozzle, it has a smaller layer " +"height, and results in minimal layer lines and higher printing quality, but " +"shorter printing time." +msgstr "" +"Comparado com o perfil padrão de um bico de 0,2 mm, tem uma altura de camada " +"menor, resultando em linhas de camada mínimas e maior qualidade de " +"impressão, mas um tempo de impressão menor." + +msgid "" +"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " +"lines, lower speeds and acceleration, and the sparse infill pattern is " +"Gyroid. So, it results in minimal layer lines and much higher printing " +"quality, but much longer printing time." +msgstr "" +"Comparado com o perfil padrão de um bico de 0,2 mm, tem linhas de camada " +"menores, velocidades e aceleração mais baixas, e o padrão de preenchimento " +"esparso é Giroide. Isso resulta em linhas de camada mínimas e uma qualidade " +"de impressão muito superior, mas um tempo de impressão muito maior." + +msgid "" +"It has a general layer height, and results in general layer lines and " +"printing quality. It is suitable for most general printing cases." msgstr "" "Tem uma altura de camada padrão e resulta em linhas de camada e qualidade de " "impressão padrão. É adequado para a maioria dos casos de impressão." msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has more wall loops and a " -"higher sparse infill density. So, it results in higher strength of the prints, but " -"more filament consumption and longer printing time." +"Compared with the default profile of a 0.4 mm nozzle, it has more wall loops " +"and a higher sparse infill density. So, it results in higher strength of the " +"prints, but more filament consumption and longer printing time." msgstr "" "Comparado com o perfil padrão de uma bico de 0,4 mm, tem mais paredes e uma " "densidade de preenchimento esparso mais alta. Portanto, resulta em maior " -"resistência, mas com consumo maior de filamento e tempo de impressão mais longo." +"resistência, mas com consumo maior de filamento e tempo de impressão mais " +"longo." msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer height, " -"and results in more apparent layer lines and lower printing quality, but slightly " -"shorter printing time." +"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer " +"height, and results in more apparent layer lines and lower printing quality, " +"but slightly shorter printing time." msgstr "" -"Comparado com o perfil padrão de uma bico de 0,4 mm, tem uma altura de camada maior, " -"resultando em linhas de camada mais aparentes e qualidade mais baixa, mas com um " -"tempo de impressão um pouco menor." +"Comparado com o perfil padrão de uma bico de 0,4 mm, tem uma altura de " +"camada maior, resultando em linhas de camada mais aparentes e qualidade mais " +"baixa, mas com um tempo de impressão um pouco menor." msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer height, " -"and results in more apparent layer lines and lower printing quality, but shorter " -"printing time." +"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer " +"height, and results in more apparent layer lines and lower printing quality, " +"but shorter printing time." msgstr "" -"Comparado com o perfil padrão de uma bico de 0,4 mm, tem uma altura de camada maior, " -"resultando em linhas de camada mais aparentes e qualidade mais baixa, mas com um " -"tempo de impressão menor." +"Comparado com o perfil padrão de uma bico de 0,4 mm, tem uma altura de " +"camada maior, resultando em linhas de camada mais aparentes e qualidade mais " +"baixa, mas com um tempo de impressão menor." msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, " -"and results in less apparent layer lines and higher printing quality, but longer " -"printing time." +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " +"height, and results in less apparent layer lines and higher printing " +"quality, but longer printing time." msgstr "" -"Comparado com o perfil padrão de um bico de 0,4 mm, tem uma altura de camada menor, " -"resultando em linhas de camada menos aparentes e maior qualidade de impressão, mas " -"com um tempo de impressão maior." +"Comparado com o perfil padrão de um bico de 0,4 mm, tem uma altura de camada " +"menor, resultando em linhas de camada menos aparentes e maior qualidade de " +"impressão, mas com um tempo de impressão maior." msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, " -"lower speeds and acceleration, and the sparse infill pattern is Gyroid. So, it " -"results in less apparent layer lines and much higher printing quality, but much " -"longer printing time." +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " +"height, lower speeds and acceleration, and the sparse infill pattern is " +"Gyroid. So, it results in less apparent layer lines and much higher printing " +"quality, but much longer printing time." msgstr "" -"Comparado com o perfil padrão de um bico de 0,4 mm, tem uma altura de camada menor, " -"velocidades e aceleração mais baixas, e o padrão de preenchimento esparso é Giroide. " -"Portanto, resulta em linhas de camada menos aparentes e qualidade de impressão " -"maior, mas com um tempo de impressão muito maior." +"Comparado com o perfil padrão de um bico de 0,4 mm, tem uma altura de camada " +"menor, velocidades e aceleração mais baixas, e o padrão de preenchimento " +"esparso é Giroide. Portanto, resulta em linhas de camada menos aparentes e " +"qualidade de impressão maior, mas com um tempo de impressão muito maior." msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, " -"and results in almost negligible layer lines and higher printing quality, but longer " -"printing time." +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " +"height, and results in almost negligible layer lines and higher printing " +"quality, but longer printing time." msgstr "" -"Comparado com o perfil padrão de um bico de 0,4 mm, tem uma altura de camada menor, " -"resultando em linhas de camada quase insignificantes e maior qualidade de impressão, " -"mas com um maior tempo de impressão." +"Comparado com o perfil padrão de um bico de 0,4 mm, tem uma altura de camada " +"menor, resultando em linhas de camada quase insignificantes e maior " +"qualidade de impressão, mas com um maior tempo de impressão." msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, " -"lower speeds and acceleration, and the sparse infill pattern is Gyroid. So, it " -"results in almost negligible layer lines and much higher printing quality, but much " -"longer printing time." +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " +"height, lower speeds and acceleration, and the sparse infill pattern is " +"Gyroid. So, it results in almost negligible layer lines and much higher " +"printing quality, but much longer printing time." msgstr "" -"Comparado com o perfil padrão de um bico de 0,4 mm, tem uma altura de camada menor, " -"velocidades e aceleração mais baixas, e o padrão de preenchimento esparso é Giroide. " -"Portanto, resulta em linhas de camada quase insignificantes e qualidade de impressão " -"muito maior, mas com um tempo de impressão muito maior." +"Comparado com o perfil padrão de um bico de 0,4 mm, tem uma altura de camada " +"menor, velocidades e aceleração mais baixas, e o padrão de preenchimento " +"esparso é Giroide. Portanto, resulta em linhas de camada quase " +"insignificantes e qualidade de impressão muito maior, mas com um tempo de " +"impressão muito maior." msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, " -"and results in almost negligible layer lines and longer printing time." +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " +"height, and results in almost negligible layer lines and longer printing " +"time." msgstr "" -"Comparado com o perfil padrão de um bico de 0,4 mm, tem uma altura de camada menor, " -"resultando em linhas de camada quase insignificantes, mas com um tempo de impressão " -"maior." +"Comparado com o perfil padrão de um bico de 0,4 mm, tem uma altura de camada " +"menor, resultando em linhas de camada quase insignificantes, mas com um " +"tempo de impressão maior." msgid "" -"It has a big layer height, and results in apparent layer lines and ordinary printing " -"quality and printing time." +"It has a big layer height, and results in apparent layer lines and ordinary " +"printing quality and printing time." msgstr "" -"Tem uma altura de camada grande, resultando em linhas de camada aparentes com " -"qualidade e tempo de impressão normais." +"Tem uma altura de camada grande, resultando em linhas de camada aparentes " +"com qualidade e tempo de impressão normais." msgid "" -"Compared with the default profile of a 0.6 mm nozzle, it has more wall loops and a " -"higher sparse infill density. So, it results in higher strength of the prints, but " -"more filament consumption and longer printing time." +"Compared with the default profile of a 0.6 mm nozzle, it has more wall loops " +"and a higher sparse infill density. So, it results in higher strength of the " +"prints, but more filament consumption and longer printing time." msgstr "" -"Comparado com o perfil padrão de um bico de 0,6 mm, tem mais paredes e uma densidade " -"de preenchimento esparso mais alta. Portanto, resulta em uma resistência maior, mas " -"com um consumo de filamento maior e um tempo de impressão mais longo." +"Comparado com o perfil padrão de um bico de 0,6 mm, tem mais paredes e uma " +"densidade de preenchimento esparso mais alta. Portanto, resulta em uma " +"resistência maior, mas com um consumo de filamento maior e um tempo de " +"impressão mais longo." msgid "" -"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, " -"and results in more apparent layer lines and lower printing quality, but shorter " -"printing time in some printing cases." +"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " +"height, and results in more apparent layer lines and lower printing quality, " +"but shorter printing time in some printing cases." msgstr "" -"Comparado com o perfil padrão de um bico de 0,6 mm, tem uma altura de camada maior, " -"resultando em linhas de camada mais aparentes e qualidade mais baixa, mas com um " -"tempo de impressão menor em alguns casos de impressão." - -msgid "" -"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, " -"and results in much more apparent layer lines and much lower printing quality, but " -"shorter printing time in some printing cases." -msgstr "" -"Comparado com o perfil padrão de um bico de 0,6 mm, tem uma altura de camada maior, " -"resultando em linhas de camada muito mais aparentes e qualidade muito mais baixa, " +"Comparado com o perfil padrão de um bico de 0,6 mm, tem uma altura de camada " +"maior, resultando em linhas de camada mais aparentes e qualidade mais baixa, " "mas com um tempo de impressão menor em alguns casos de impressão." msgid "" -"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, " -"and results in less apparent layer lines and slight higher printing quality, but " -"longer printing time." +"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " +"height, and results in much more apparent layer lines and much lower " +"printing quality, but shorter printing time in some printing cases." msgstr "" -"Comparado com o perfil padrão de um bico de 0,6 mm, tem uma altura de camada menor, " -"resultando em linhas de camada menos aparentes e qualidade ligeiramente maior, mas " -"com um tempo de impressão maior." +"Comparado com o perfil padrão de um bico de 0,6 mm, tem uma altura de camada " +"maior, resultando em linhas de camada muito mais aparentes e qualidade muito " +"mais baixa, mas com um tempo de impressão menor em alguns casos de impressão." msgid "" -"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, " -"and results in less apparent layer lines and higher printing quality, but longer " -"printing time." +"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " +"height, and results in less apparent layer lines and slight higher printing " +"quality, but longer printing time." msgstr "" -"Comparado com o perfil padrão de um bico de 0,6 mm, tem uma altura de camada menor, " -"resultando em linhas de camada menos aparentes e maior qualidade de impressão, mas " -"com um tempo de impressão maior." +"Comparado com o perfil padrão de um bico de 0,6 mm, tem uma altura de camada " +"menor, resultando em linhas de camada menos aparentes e qualidade " +"ligeiramente maior, mas com um tempo de impressão maior." msgid "" -"It has a very big layer height, and results in very apparent layer lines, low " -"printing quality and general printing time." +"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " +"height, and results in less apparent layer lines and higher printing " +"quality, but longer printing time." +msgstr "" +"Comparado com o perfil padrão de um bico de 0,6 mm, tem uma altura de camada " +"menor, resultando em linhas de camada menos aparentes e maior qualidade de " +"impressão, mas com um tempo de impressão maior." + +msgid "" +"It has a very big layer height, and results in very apparent layer lines, " +"low printing quality and general printing time." msgstr "" "Tem uma altura de camada muito grande, resultando em linhas de camada muito " "aparentes, com qualidade e tempo de impressão baixo." msgid "" -"Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer height, " -"and results in very apparent layer lines and much lower printing quality, but " -"shorter printing time in some printing cases." -msgstr "" -"Comparado com o perfil padrão de um bico de 0,8 mm, tem uma altura de camada maior, " -"resultando em linhas de camada muito aparentes e qualidade muito mais baixa, mas com " -"um tempo de impressão menor em alguns casos de impressão." - -msgid "" -"Compared with the default profile of a 0.8 mm nozzle, it has a much bigger layer " -"height, and results in extremely apparent layer lines and much lower printing " -"quality, but much shorter printing time in some printing cases." -msgstr "" -"Comparado com o perfil padrão de um bico de 0,8 mm, tem uma altura de camada muito " -"maior, resultando em linhas de camada extremamente aparentes e qualidade muito mais " -"baixa, mas com um tempo de impressão muito menor em alguns casos de impressão." - -msgid "" -"Compared with the default profile of a 0.8 mm nozzle, it has a slightly smaller " -"layer height, and results in slightly less but still apparent layer lines and " -"slightly higher printing quality, but longer printing time in some printing cases." +"Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer " +"height, and results in very apparent layer lines and much lower printing " +"quality, but shorter printing time in some printing cases." msgstr "" "Comparado com o perfil padrão de um bico de 0,8 mm, tem uma altura de camada " -"ligeiramente menor, resultando em linhas de camada menos aparentes, mas ainda " -"visíveis, e qualidade ligeiramente maior, mas com um tempo de impressão maior em " +"maior, resultando em linhas de camada muito aparentes e qualidade muito mais " +"baixa, mas com um tempo de impressão menor em alguns casos de impressão." + +msgid "" +"Compared with the default profile of a 0.8 mm nozzle, it has a much bigger " +"layer height, and results in extremely apparent layer lines and much lower " +"printing quality, but much shorter printing time in some printing cases." +msgstr "" +"Comparado com o perfil padrão de um bico de 0,8 mm, tem uma altura de camada " +"muito maior, resultando em linhas de camada extremamente aparentes e " +"qualidade muito mais baixa, mas com um tempo de impressão muito menor em " "alguns casos de impressão." msgid "" -"Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer height, " -"and results in less but still apparent layer lines and slightly higher printing " -"quality, but longer printing time in some printing cases." +"Compared with the default profile of a 0.8 mm nozzle, it has a slightly " +"smaller layer height, and results in slightly less but still apparent layer " +"lines and slightly higher printing quality, but longer printing time in some " +"printing cases." msgstr "" -"Comparado com o perfil padrão de um bico de 0,8 mm, tem uma altura de camada menor, " -"resultando em linhas de camada menos aparentes, mas ainda visíveis, e qualidade " -"ligeiramente maior, mas com um tempo de impressão maior em alguns casos de impressão." +"Comparado com o perfil padrão de um bico de 0,8 mm, tem uma altura de camada " +"ligeiramente menor, resultando em linhas de camada menos aparentes, mas " +"ainda visíveis, e qualidade ligeiramente maior, mas com um tempo de " +"impressão maior em alguns casos de impressão." + +msgid "" +"Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer " +"height, and results in less but still apparent layer lines and slightly " +"higher printing quality, but longer printing time in some printing cases." +msgstr "" +"Comparado com o perfil padrão de um bico de 0,8 mm, tem uma altura de camada " +"menor, resultando em linhas de camada menos aparentes, mas ainda visíveis, e " +"qualidade ligeiramente maior, mas com um tempo de impressão maior em alguns " +"casos de impressão." msgid "Connected to Obico successfully!" msgstr "Conectado ao Obico com sucesso!" @@ -16656,7 +17177,8 @@ msgstr "Erro desconhecido" msgid "SimplyPrint account not linked. Go to Connect options to set it up." msgstr "" -"Conta SimplyPrint não vinculada. Vá para as opções de conexão para configurá-la." +"Conta SimplyPrint não vinculada. Vá para as opções de conexão para configurá-" +"la." msgid "Connection to Flashforge works correctly." msgstr "A conexão com a Flashforge está funcionando corretamente." @@ -16668,10 +17190,12 @@ msgid "The provided state is not correct." msgstr "O estado fornecido não está correto." msgid "Please give the required permissions when authorizing this application." -msgstr "Por favor, forneça as permissões necessárias ao autorizar este aplicativo." +msgstr "" +"Por favor, forneça as permissões necessárias ao autorizar este aplicativo." msgid "Something unexpected happened when trying to log in, please try again." -msgstr "Algo inesperado aconteceu ao tentar conectar, por favor tente novamente." +msgstr "" +"Algo inesperado aconteceu ao tentar conectar, por favor tente novamente." msgid "User cancelled." msgstr "O usuário cancelou." @@ -16683,19 +17207,20 @@ msgid "" "consistency?" msgstr "" "Parede precisa\n" -"Você sabia que ativar o Perímetro Preciso pode melhorar a precisão e a consistência " -"da camada?" +"Você sabia que ativar o Perímetro Preciso pode melhorar a precisão e a " +"consistência da camada?" #: resources/data/hints.ini: [hint:Sandwich mode] msgid "" "Sandwich mode\n" -"Did you know that you can use sandwich mode (inner-outer-inner) to improve precision " -"and layer consistency if your model doesn't have very steep overhangs?" +"Did you know that you can use sandwich mode (inner-outer-inner) to improve " +"precision and layer consistency if your model doesn't have very steep " +"overhangs?" msgstr "" "Modo sanduíche\n" -"Você sabia que pode usar o modo sanduíche (interno-externo-interno) para melhorar a " -"precisão e a consistência da camada se o seu modelo não tiver overhangs muito " -"íngremes?" +"Você sabia que pode usar o modo sanduíche (interno-externo-interno) para " +"melhorar a precisão e a consistência da camada se o seu modelo não tiver " +"overhangs muito íngremes?" #: resources/data/hints.ini: [hint:Chamber temperature] msgid "" @@ -16708,12 +17233,12 @@ msgstr "" #: resources/data/hints.ini: [hint:Calibration] msgid "" "Calibration\n" -"Did you know that calibrating your printer can do wonders? Check out our beloved " -"calibration solution in OrcaSlicer." +"Did you know that calibrating your printer can do wonders? Check out our " +"beloved calibration solution in OrcaSlicer." msgstr "" "Calibração\n" -"Você sabia que calibrar sua impressora pode fazer maravilhas? Confira nossa amada " -"solução de calibração no OrcaSlicer." +"Você sabia que calibrar sua impressora pode fazer maravilhas? Confira nossa " +"amada solução de calibração no OrcaSlicer." #: resources/data/hints.ini: [hint:Auxiliary fan] msgid "" @@ -16721,7 +17246,8 @@ msgid "" "Did you know that OrcaSlicer supports Auxiliary part cooling fan?" msgstr "" "Ventilador auxiliar\n" -"Você sabia que o OrcaSlicer suporta ventilador auxiliar de resfriamento de peças?" +"Você sabia que o OrcaSlicer suporta ventilador auxiliar de resfriamento de " +"peças?" #: resources/data/hints.ini: [hint:Air filtration] msgid "" @@ -16742,18 +17268,18 @@ msgstr "" #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can switch between Prepare and Preview workspaces by pressing the " -"Tab key." +"You can switch between Prepare and Preview workspaces by " +"pressing the Tab key." msgstr "" "Alternar espaços de trabalho\n" -"Você pode alternar entre os espaços de trabalho Preparar e Visualizar " -"pressionando a tecla Tab." +"Você pode alternar entre os espaços de trabalho Preparar e " +"Visualizar pressionando a tecla Tab." #: 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." +"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and " +"3D scene operations." msgstr "" "Como usar atalhos de teclado\n" "Você sabia que o Orca Slicer oferece uma ampla gama de atalhos de teclado e " @@ -16762,22 +17288,22 @@ msgstr "" #: resources/data/hints.ini: [hint:Reverse on odd] msgid "" "Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve the " -"surface quality of your overhangs?" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" msgstr "" "Inverter em ímpar\n" -"Você sabia que a função Inverter em ímpar pode melhorar significativamente a " -"qualidade da superfície dos overhangs?" +"Você sabia que a função Inverter em ímpar pode melhorar " +"significativamente a qualidade da superfície dos overhangs?" #: 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 "" "Ferramenta de corte\n" -"Você sabia que pode cortar um modelo em qualquer ângulo e posição com a ferramenta " -"de corte?" +"Você sabia que pode cortar um modelo em qualquer ângulo e posição com a " +"ferramenta de corte?" #: resources/data/hints.ini: [hint:Fix Model] msgid "" @@ -16786,8 +17312,8 @@ msgid "" "problems on the Windows system?" msgstr "" "Corrigir Modelo\n" -"Você sabia que pode corrigir um modelo 3D corrompido para evitar muitos problemas de " -"fatiamento no sistema Windows?" +"Você sabia que pode corrigir um modelo 3D corrompido para evitar muitos " +"problemas de fatiamento no sistema Windows?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -16808,43 +17334,44 @@ 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 "" "Auto-orientar\n" -"Você sabia que pode girar objetos para uma orientação ideal para impressão com um " -"simples clique?" +"Você sabia que pode girar objetos para uma orientação ideal para impressão " +"com um simples clique?" #: 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 "" "Apoiar face à superfície\n" -"Você sabia que pode rapidamente orientar um modelo para que uma de suas faces fique " -"sobre a base de impressão? Selecione a função \"Apoiar na face\" ou pressione a " -"tecla F." +"Você sabia que pode rapidamente orientar um modelo para que uma de suas " +"faces fique sobre a base de impressão? Selecione a função \"Apoiar na face\" " +"ou pressione a tecla 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 "" "Lista de Objetos\n" -"Você sabia que pode visualizar todos os objetos/peças em uma lista e alterar as " -"configurações para cada objeto/peça?" +"Você sabia que pode visualizar todos os objetos/peças em uma lista e alterar " +"as configurações para cada objeto/peça?" #: 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?" +"Did you know that you use the Search tool to quickly find a specific Orca " +"Slicer setting?" msgstr "" "Funcionalidade de Busca\n" -"Você sabia que pode usar a ferramenta de busca para encontrar rapidamente uma " -"configuração específica do Orca Slicer?" +"Você sabia que pode usar a ferramenta de busca para encontrar rapidamente " +"uma configuração específica do Orca Slicer?" #: resources/data/hints.ini: [hint:Simplify Model] msgid "" @@ -16853,36 +17380,36 @@ msgid "" "Simplify mesh feature? Right-click the model and select Simplify model." msgstr "" "Simplificar Modelo\n" -"Você sabia que pode reduzir o número de triângulos em uma malha usando a função " -"Simplificar malha? Clique com o botão direito no modelo e selecione Simplificar " -"modelo." +"Você sabia que pode reduzir o número de triângulos em uma malha usando a " +"função Simplificar malha? Clique com o botão direito no modelo e selecione " +"Simplificar modelo." #: 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 "" "Tabela de Parâmetros de Fatiamento\n" -"Você sabia que pode visualizar todos os objetos/peças em uma tabela e alterar as " -"configurações para cada objeto/peça?" +"Você sabia que pode visualizar todos os objetos/peças em uma tabela e " +"alterar as configurações para cada objeto/peça?" #: 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 "" "Dividir em Objetos/Peças\n" -"Você sabia que pode dividir um objeto grande em peças menores para facilitar a " -"colorização ou a impressão?" +"Você sabia que pode dividir um objeto grande em peças menores para facilitar " +"a colorização ou a impressão?" #: 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." +"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." msgstr "" "Subtrair uma Peça\n" "Você sabia que pode subtrair uma malha da outra usando o modificador de peça " @@ -16892,114 +17419,115 @@ msgstr "" #: 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" -"Você sabia que pode melhorar a qualidade da impressão fatiando um arquivo STEP ao " -"invés de um STL?\n" -"Orca Slicer é compatível com arquivos STEP, gerando resultados mais suaves do que um " -"STL em baixa resolução. Tente!" +"Você sabia que pode melhorar a qualidade da impressão fatiando um arquivo " +"STEP ao invés de um STL?\n" +"Orca Slicer é compatível com arquivos STEP, gerando resultados mais suaves " +"do que um STL em baixa resolução. Tente!" #: 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 "" "Local da costura\n" -"Você sabia que pode customizar a posição da costura, e até mesmo pintá-la na sua " -"peça, para tê-la em um lugar menos visível? Isso vai aumentar a qualidade geral do " -"seu modelo. Tente!" +"Você sabia que pode customizar a posição da costura, e até mesmo pintá-la na " +"sua peça, para tê-la em um lugar menos visível? Isso vai aumentar a " +"qualidade geral do seu modelo. Tente!" #: 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 "" "Ajuste fino do fluxo\n" -"Você sabia que o fluxo pode ser ajustado para impressões ainda melhores? Dependendo " -"do material, você pode melhorar o acabamento final da sua peça fazendo alguns " -"ajustes." +"Você sabia que o fluxo pode ser ajustado para impressões ainda melhores? " +"Dependendo do material, você pode melhorar o acabamento final da sua peça " +"fazendo alguns ajustes." #: 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 "" "Divida suas impressões em mesas\n" -"Você sabia que pode dividir um modelo que tem diversas peças individuais em mesas " -"distintas prontas para imprimir? Isso vai simplificar o processo e o avanço das " -"impressões." +"Você sabia que pode dividir um modelo que tem diversas peças individuais em " +"mesas distintas prontas para imprimir? Isso vai simplificar o processo e o " +"avanço das impressões." -#: 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 "" "Agilize sua impressão com a Altura de Camada Adaptativa\n" -"Você sabia que pode imprimir um modelo ainda mais rápido, usando a opção de Altura " -"de Camada Adaptativa? Tente!" +"Você sabia que pode imprimir um modelo ainda mais rápido, usando a opção de " +"Altura de Camada Adaptativa? Tente!" #: 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 "" "Pintura de suporte\n" -"Você sabia que pode pintar a localização dos seus suportes? Essa funcionalidade " -"facilita colocar o material de suporte apenas nas seções do modelo que realmente " -"precisam." +"Você sabia que pode pintar a localização dos seus suportes? Essa " +"funcionalidade facilita colocar o material de suporte apenas nas seções do " +"modelo que realmente precisam." #: 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 "" "Diferentes tipos de suportes\n" -"Você sabia que pode escolher entre vários tipos de suportes? Os suportes de árvore " -"funcionam muito bem para modelos orgânicos, enquanto economizam filamento e melhoram " -"a velocidade de impressão. Confira-os!" +"Você sabia que pode escolher entre vários tipos de suportes? Os suportes de " +"árvore funcionam muito bem para modelos orgânicos, enquanto economizam " +"filamento e melhoram a velocidade de impressão. Confira-os!" #: 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." +"successfully? Higher temperature and lower speed are always recommended for " +"the best results." msgstr "" "Impressão de Filamento de Seda\n" -"Você sabia que o filamento de seda precisa de considerações especiais para ser " -"impresso com sucesso? Uma temperatura mais alta e uma velocidade mais baixa são " -"sempre recomendadas para obter os melhores resultados." +"Você sabia que o filamento de seda precisa de considerações especiais para " +"ser impresso com sucesso? Uma temperatura mais alta e uma velocidade mais " +"baixa são sempre recomendadas para obter os melhores resultados." #: 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 "" "Borda para melhor adesão\n" -"Você sabia que, ao imprimir modelos com uma pequena interface de contato com a " -"superfície de impressão, é recomendável usar uma borda?" +"Você sabia que, ao imprimir modelos com uma pequena interface de contato com " +"a superfície de impressão, é recomendável usar uma borda?" #: 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 "" "Definir parâmetros para vários objetos\n" "Você sabia que pode definir parâmetros de fatiamento para todos os objetos " @@ -17016,47 +17544,48 @@ msgstr "" #: 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 "" "Purga no suporte/objetos/preenchimento\n" -"Você sabia que pode economizar o filamento desperdiçado ao purgar nos suportes/" -"objetos/preenchimento durante a troca de filamento?" +"Você sabia que pode economizar o filamento desperdiçado ao purgar nos " +"suportes/objetos/preenchimento durante a troca de filamento?" #: 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 "" "Melhorar a resistência\n" -"Você sabia que pode usar mais loops de perímetro e densidade de preenchimento " -"esparso mais alta para melhorar a resistência do modelo?" +"Você sabia que pode usar mais loops de perímetro e densidade de " +"preenchimento esparso mais alta para melhorar a resistência do modelo?" -#: 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" -"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." +"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 "" "Quando é necessário imprimir com a porta da impressora aberta\n" "Você sabia que abrir a porta da impressora pode reduzir a probabilidade de " -"entupimento do extrusor/bico aquecido ao imprimir filamento de temperatura mais " -"baixa com uma temperatura de invólucro mais alta. Mais informações sobre isso na " -"Wiki." +"entupimento do extrusor/bico aquecido ao imprimir filamento de temperatura " +"mais baixa com uma temperatura de invólucro mais alta. Mais informações " +"sobre isso na Wiki." #: 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." +"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 "" "Evitar empenamento\n" -"Você sabia que ao imprimir materiais propensos ao empenamento, como ABS, aumentar " -"adequadamente a temperatura da mesa aquecida pode reduzir a probabilidade de " -"empenamento?" +"Você sabia que ao imprimir materiais propensos ao empenamento, como ABS, " +"aumentar adequadamente a temperatura da mesa aquecida pode reduzir a " +"probabilidade de empenamento?" #~ msgid "Current Cabin humidity" #~ msgstr "Umidade da cabine atual" @@ -17081,20 +17610,23 @@ msgstr "" #~ msgid "LAN Connection Failed (Sending print file)" #~ msgstr "Falha na conexão LAN (enviando arquivo de impressão)" -#~ msgid "Step 1, please confirm Orca Slicer and your printer are in the same LAN." +#~ msgid "" +#~ "Step 1, please confirm Orca Slicer and your printer are in the same LAN." #~ msgstr "" -#~ "Passo 1, por favor confirme se o Orca Slicer e sua impressora estão na mesma LAN." +#~ "Passo 1, por favor confirme se o Orca Slicer e sua impressora estão na " +#~ "mesma LAN." #~ msgid "" -#~ "Step 2, if the IP and Access Code below are different from the actual values on " -#~ "your printer, please correct them." +#~ "Step 2, if the IP and Access Code below are different from the actual " +#~ "values on your printer, please correct them." #~ msgstr "" -#~ "Passo 2, se o IP e o Código de Acesso abaixo forem diferentes dos valores reais " -#~ "na sua impressora, corrija-os." +#~ "Passo 2, se o IP e o Código de Acesso abaixo forem diferentes dos valores " +#~ "reais na sua impressora, corrija-os." #~ msgid "Step 3: Ping the IP address to check for packet loss and latency." #~ msgstr "" -#~ "Passo 3: Pingue o endereço IP para verificar a perda de pacotes e a latência." +#~ "Passo 3: Pingue o endereço IP para verificar a perda de pacotes e a " +#~ "latência." #~ msgid "IP and Access Code Verified! You may close the window" #~ msgstr "IP e Código de Acesso Verificados! Você pode fechar a janela" @@ -17103,39 +17635,40 @@ msgstr "" #~ msgstr "Forçar resfriamento para overhangs e pontes" #~ msgid "" -#~ "Enable this option to optimize part cooling fan speed for overhang and bridge to " -#~ "get better cooling" +#~ "Enable this option to optimize part cooling fan speed for overhang and " +#~ "bridge to get better cooling" #~ msgstr "" -#~ "Ative esta opção para otimizar a velocidade do ventilador de resfriamento de " -#~ "peças para overhangs e ponte para obter melhor resfriamento" +#~ "Ative esta opção para otimizar a velocidade do ventilador de resfriamento " +#~ "de peças para overhangs e ponte para obter melhor resfriamento" #~ msgid "Fan speed for overhang" #~ msgstr "Velocidade do ventilador para overhangs" #~ msgid "" -#~ "Force part cooling fan to be this speed when printing bridge or overhang wall " -#~ "which has large overhang degree. Forcing cooling for overhang and bridge can get " -#~ "better quality for these part" +#~ "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 "" -#~ "Forçar o ventilador de resfriamento da peça a ser nesta velocidade ao imprimir " -#~ "ponte ou overhang que tenha um grande grau de inclinação. Forçar o resfriamento " -#~ "para overhang e ponte pode obter melhor qualidade para estas partes" +#~ "Forçar o ventilador de resfriamento da peça a ser nesta velocidade ao " +#~ "imprimir ponte ou overhang que tenha um grande grau de inclinação. Forçar " +#~ "o resfriamento para overhang e ponte pode obter melhor qualidade para " +#~ "estas partes" #~ msgid "Cooling overhang threshold" #~ msgstr "Overhang limiar de resfriamento" #, c-format #~ msgid "" -#~ "Force cooling fan to be specific speed when overhang degree of printed part " -#~ "exceeds this value. Expressed as percentage which indicates 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" +#~ "Force cooling fan to be specific speed when overhang degree of printed " +#~ "part exceeds this value. Expressed as percentage which indicates 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 "" -#~ "Forçar o ventilador de resfriamento a ser uma velocidade específica quando o grau " -#~ "de inclinação da peça impressa excede este valor. Expresso como porcentagem, que " -#~ "indica quanto da largura da linha sem suporte da camada inferior.Zero significa " -#~ "forçar o resfriamento para toda o perímetro externo, não importa quanto seja o " -#~ "grau de inclinação" +#~ "Forçar o ventilador de resfriamento a ser uma velocidade específica " +#~ "quando o grau de inclinação da peça impressa excede este valor. Expresso " +#~ "como porcentagem, que indica quanto da largura da linha sem suporte da " +#~ "camada inferior.Zero significa forçar o resfriamento para toda o " +#~ "perímetro externo, não importa quanto seja o grau de inclinação" #~ msgid "Bridge infill direction" #~ msgstr "Direção de preenchimento de ponte" @@ -17143,68 +17676,75 @@ msgstr "" #~ msgid "Bridge density" #~ msgstr "Densidade de ponte" -#~ msgid "Density of external bridges. 100% means solid bridge. Default is 100%." -#~ msgstr "Densidade de pontes externas. 100% significa ponte sólida. O padrão é 100%." +#~ msgid "" +#~ "Density of external bridges. 100% means solid bridge. Default is 100%." +#~ msgstr "" +#~ "Densidade de pontes externas. 100% significa ponte sólida. O padrão é " +#~ "100%." #~ msgid "" -#~ "Improve shell precision by adjusting outer wall spacing. This also improves layer " -#~ "consistency.\n" -#~ "Note: This setting will only take effect if the wall sequence is configured to " -#~ "Inner-Outer" +#~ "Improve shell precision by adjusting outer wall spacing. This also " +#~ "improves layer consistency.\n" +#~ "Note: This setting will only take effect if the wall sequence is " +#~ "configured to Inner-Outer" #~ msgstr "" -#~ "Melhore a precisão da parede ajustando o espaçamento do perímetro externo. Isso " -#~ "também melhora a consistência da camada.\n" -#~ "Nota: Esta configuração só terá efeito se a sequência do perímetro estiver " -#~ "configurada para Interior-Exterior" +#~ "Melhore a precisão da parede ajustando o espaçamento do perímetro " +#~ "externo. Isso também melhora a consistência da camada.\n" +#~ "Nota: Esta configuração só terá efeito se a sequência do perímetro " +#~ "estiver configurada para Interior-Exterior" #~ msgid "Thick bridges" #~ msgstr "Ponte grossa" #~ 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 overridden by disable_fan_first_layers." #~ msgstr "" -#~ "Esta velocidade do ventilador é aplicada durante todas as interfaces de suporte, " -#~ "para enfraquecer sua ligação com uma alta velocidade do ventilador.\n" +#~ "Esta velocidade do ventilador é aplicada durante todas as interfaces de " +#~ "suporte, para enfraquecer sua ligação com uma alta velocidade do " +#~ "ventilador.\n" #~ "Defina como -1 para desativar esta substituição.\n" #~ "Só pode ser substituído por disable_fan_first_layers." #~ 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" +#~ "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" +#~ "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 "" -#~ "Um valor menor resulta em transições de extrusão mais suaves. No entanto, isso " -#~ "resulta em um arquivo Gcode significativamente maior e mais instruções para a " -#~ "impressora processar.\n" +#~ "Um valor menor resulta em transições de extrusão mais suaves. No entanto, " +#~ "isso resulta em um arquivo Gcode significativamente maior e mais " +#~ "instruções para a impressora processar.\n" #~ "\n" -#~ "O valor padrão de 3 funciona bem para a maioria dos casos. Se sua impressora " -#~ "estiver engasgando, aumente este valor para reduzir o número de ajustes feitos.\n" +#~ "O valor padrão de 3 funciona bem para a maioria dos casos. Se sua " +#~ "impressora estiver engasgando, aumente este valor para reduzir o número " +#~ "de ajustes feitos.\n" #~ "\n" #~ "Valores permitidos: 1-5" #~ msgid "" -#~ "The minimum printing speed that the printer will slow down to to attempt to " -#~ "maintain the minimum layer time above, when slow down for better layer cooling is " -#~ "enabled." +#~ "The minimum printing speed that the printer will slow down to to attempt " +#~ "to maintain the minimum layer time above, when slow down for better layer " +#~ "cooling is enabled." #~ msgstr "" -#~ "A velocidade de impressão mínima para a qual a impressora diminuirá a velocidade " -#~ "para tentar manter o tempo mínimo de camada acima, quando a desaceleração para um " -#~ "melhor resfriamento da camada estiver habilitada." +#~ "A velocidade de impressão mínima para a qual a impressora diminuirá a " +#~ "velocidade para tentar manter o tempo mínimo de camada acima, quando a " +#~ "desaceleração para um melhor resfriamento da camada estiver habilitada." #~ 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" +#~ "normal(manual) or tree(manual) is selected, only support enforcers are " +#~ "generated" #~ msgstr "" -#~ "normal(auto) e tree(auto) são usados para gerar suporte automaticamente. Se " -#~ "normal(manual) ou tree(manual) for selecionado, apenas os suportes são gerados" +#~ "normal(auto) e tree(auto) são usados para gerar suporte automaticamente. " +#~ "Se normal(manual) ou tree(manual) for selecionado, apenas os suportes são " +#~ "gerados" #~ msgid "normal(auto)" #~ msgstr "normal(automático)" @@ -17244,70 +17784,75 @@ msgstr "" #~ msgstr "Inverter em ímpares" #~ 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" +#~ "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." +#~ "This setting can also help reduce part warping due to the reduction of " +#~ "stresses in the part walls." #~ msgstr "" -#~ "Extruir perímetros, que tenham uma parte sobre um overhang, na direção reversa em " -#~ "camadas ímpares. Este padrão alternado pode melhorar drasticamente perímetros " -#~ "íngremes.\n" +#~ "Extruir perímetros, que tenham uma parte sobre um overhang, na direção " +#~ "reversa em camadas ímpares. Este padrão alternado pode melhorar " +#~ "drasticamente perímetros íngremes.\n" #~ "\n" -#~ "Este ajuste também pode ajudar a reduzir a deformação da peça devido à redução " -#~ "das tensões nas paredes da peça." +#~ "Este ajuste também pode ajudar a reduzir a deformação da peça devido à " +#~ "redução das tensões nas paredes da peça." #~ 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" +#~ "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 recommended to set the Reverse " -#~ "Threshold to 0 so that all internal walls print in alternating directions on odd " -#~ "layers irrespective of their overhang degree." +#~ "For this setting to be the most effective, it is recommended 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 "" #~ "Aplicar a lógica de perímetros reversos apenas em perímetros internos.\n" #~ "\n" -#~ "Este ajuste reduz muito as tensões na peça, já que agora são distribuídas em " -#~ "direções alternadas. Isso deve reduzir a deformação da peça, mantendo a qualidade " -#~ "do perímetro externo. Este recurso pode ser muito útil para materiais propensos a " -#~ "deformações, como ABS/ASA, e também para filamentos elásticos, como TPU e Silk " -#~ "PLA. Também pode ajudar a reduzir a deformação em regiões flutuantes sobre " -#~ "suportes.\n" +#~ "Este ajuste reduz muito as tensões na peça, já que agora são distribuídas " +#~ "em direções alternadas. Isso deve reduzir a deformação da peça, mantendo " +#~ "a qualidade do perímetro externo. Este recurso pode ser muito útil para " +#~ "materiais propensos a deformações, como ABS/ASA, e também para filamentos " +#~ "elásticos, como TPU e Silk PLA. Também pode ajudar a reduzir a deformação " +#~ "em regiões flutuantes sobre suportes.\n" #~ "\n" -#~ "Para que este ajuste seja mais eficaz, recomenda-se definir o Limiar Reverso como " -#~ "0 para que todos os perímetros internos sejam impressos em direções alternadas em " -#~ "camadas ímpares, independentemente de seu grau de ." +#~ "Para que este ajuste seja mais eficaz, recomenda-se definir o Limiar " +#~ "Reverso como 0 para que todos os perímetros internos sejam impressos em " +#~ "direções alternadas em camadas ímpares, independentemente de seu grau de ." #, no-c-format, no-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" +#~ "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úmero de milímetros que o precisa ter para que a reversão seja considerada útil. " -#~ "Pode ser um % da largura do perímetro.\n" -#~ "O valor 0 permite a reversão em todas as camadas ímpares independentemente." +#~ "Número de milímetros que o precisa ter para que a reversão seja " +#~ "considerada útil. Pode ser um % da largura do perímetro.\n" +#~ "O valor 0 permite a reversão em todas as camadas ímpares " +#~ "independentemente." #~ msgid "" -#~ "The direction which the wall loops are extruded when looking down from the top.\n" +#~ "The direction which the wall loops are extruded when looking down from " +#~ "the top.\n" #~ "\n" -#~ "By default all walls are extruded in counter-clockwise, unless Reverse on odd is " -#~ "enabled. Set this to any option other than Auto will force the wall direction " -#~ "regardless of the Reverse on odd.\n" +#~ "By default all walls are extruded in counter-clockwise, unless Reverse on " +#~ "odd is enabled. Set this to any option other than Auto will force the " +#~ "wall direction regardless of the Reverse on odd.\n" #~ "\n" #~ "This option will be disabled if spiral vase mode is enabled." #~ msgstr "" -#~ "A direção na qual os loops da perímetro são extrudados quando vistos de cima.\n" +#~ "A direção na qual os loops da perímetro são extrudados quando vistos de " +#~ "cima.\n" #~ "\n" -#~ "Por padrão, todas as paredes são extrudadas no sentido anti-horário, a menos que " -#~ "o Reverso em ímpar esteja ativado. Definir isso como qualquer opção que não seja " -#~ "Automático forçará a direção do perímetro, independentemente do Reverso em " -#~ "ímpar.\n" +#~ "Por padrão, todas as paredes são extrudadas no sentido anti-horário, a " +#~ "menos que o Reverso em ímpar esteja ativado. Definir isso como qualquer " +#~ "opção que não seja Automático forçará a direção do perímetro, " +#~ "independentemente do Reverso em ímpar.\n" #~ "\n" #~ "Esta opção será desativada se o modo de vaso espiral estiver ativado." @@ -17319,168 +17864,181 @@ msgstr "" #~ "Portanto, redefina a camada da saia para 1 para evitar isso." #~ 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 "" -#~ "A geometria será decimada antes de detectar ângulos agudos. Este parâmetro indica " -#~ "o comprimento mínimo da divergência para a decimação.\n" +#~ "A geometria será decimada antes de detectar ângulos agudos. Este " +#~ "parâmetro indica o comprimento mínimo da divergência para a decimação.\n" #~ "0 para desativar" #~ 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 commands 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" +#~ "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 commands 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 "" -#~ "Comece o ventilador este número de segundos antes do tempo de início do alvo " -#~ "(você pode usar segundos fracionários). Ele assume aceleração infinita para esta " -#~ "estimativa de tempo e só levará em conta os movimentos G1 e G0 (o ajuste de arco " -#~ "não é suportado).\n" -#~ "Não moverá comandos do ventilador de gcodes personalizados (eles funcionam como " -#~ "uma espécie de 'barreira').\n" -#~ "Não moverá comandos do ventilador para o início do gcode se o 'apenas gcode de " -#~ "início personalizado' estiver ativado.\n" +#~ "Comece o ventilador este número de segundos antes do tempo de início do " +#~ "alvo (você pode usar segundos fracionários). Ele assume aceleração " +#~ "infinita para esta estimativa de tempo e só levará em conta os movimentos " +#~ "G1 e G0 (o ajuste de arco não é suportado).\n" +#~ "Não moverá comandos do ventilador de gcodes personalizados (eles " +#~ "funcionam como uma espécie de 'barreira').\n" +#~ "Não moverá comandos do ventilador para o início do gcode se o 'apenas " +#~ "gcode de início personalizado' estiver ativado.\n" #~ "Use 0 para desativar." #~ msgid "" #~ "A draft shield is useful to protect an ABS or ASA print from warping and " -#~ "detaching from print bed due to wind draft. It is usually needed only with open " -#~ "frame printers, i.e. without an enclosure. \n" +#~ "detaching from print bed due to wind draft. It is usually needed only " +#~ "with open frame printers, i.e. without an enclosure. \n" #~ "\n" #~ "Options:\n" #~ "Enabled = skirt is as tall as the highest printed object.\n" #~ "Limited = skirt is as tall as specified by skirt height.\n" #~ "\n" -#~ "Note: With the draft shield active, the skirt will be printed at skirt distance " -#~ "from the object. Therefore, if brims are active it may intersect with them. To " -#~ "avoid this, increase the skirt distance value.\n" +#~ "Note: With the draft shield active, the skirt will be printed at skirt " +#~ "distance from the object. Therefore, if brims are active it may intersect " +#~ "with them. To avoid this, increase the skirt distance value.\n" #~ msgstr "" -#~ "Um escudo é útil para proteger uma impressão ABS ou ASA de empenamento e de se " -#~ "descolar da mesa de impressão devido à corrrentes de ar. Normalmente, só é " -#~ "necessária com impressoras abertas, ou seja, sem câmara fechada. \n" +#~ "Um escudo é útil para proteger uma impressão ABS ou ASA de empenamento e " +#~ "de se descolar da mesa de impressão devido à corrrentes de ar. " +#~ "Normalmente, só é necessária com impressoras abertas, ou seja, sem câmara " +#~ "fechada. \n" #~ "\n" #~ "Opções:\n" #~ "Ativado = saia tem a mesma altura que o maior objeto a ser impresso.\n" #~ "Limitado = saia tem altura especificada pela altura de saia.\n" #~ "\n" -#~ "Nota: Com o escudo ativo, a saia será impressa na distância de saia do objeto. " -#~ "Portanto, se bordas estiverem ativas, pode se interceptar com eles. Para evitar " -#~ "isso, aumente o valor da distância da saia.\n" +#~ "Nota: Com o escudo ativo, a saia será impressa na distância de saia do " +#~ "objeto. Portanto, se bordas estiverem ativas, pode se interceptar com " +#~ "eles. Para evitar isso, aumente o valor da distância da saia.\n" #~ msgid "Limited" #~ msgstr "Limitada" #~ msgid "" -#~ "Minimum filament extrusion length in mm when printing the skirt. Zero means this " -#~ "feature is disabled.\n" +#~ "Minimum filament extrusion length in mm when printing the skirt. Zero " +#~ "means this feature is disabled.\n" #~ "\n" -#~ "Using a non zero value is useful if the printer is set up to print without a " -#~ "prime line." +#~ "Using a non zero value is useful if the printer is set up to print " +#~ "without a prime line." #~ msgstr "" -#~ "Comprimento mínimo de extrusão de filamento em mm ao imprimir a saia. Zero " -#~ "significa que esta característica está desabilitada.\n" +#~ "Comprimento mínimo de extrusão de filamento em mm ao imprimir a saia. " +#~ "Zero significa que esta característica está desabilitada.\n" #~ "\n" -#~ "Usar um valor não zero é útil se a impressora estiver configurada para imprimir " -#~ "sem uma linha de limpeza." +#~ "Usar um valor não zero é útil se a impressora estiver configurada para " +#~ "imprimir sem uma linha de limpeza." #~ msgid "" -#~ "Adjust this value to prevent short, unclosed walls from being printed, which " -#~ "could increase print time. Higher values remove more and longer walls.\n" +#~ "Adjust this value to prevent short, unclosed walls from being printed, " +#~ "which could increase print time. Higher values remove more and longer " +#~ "walls.\n" #~ "\n" -#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent " -#~ "visual gaps on the ouside of the model. Adjust 'One wall threshold' in the " -#~ "Advanced settings below to adjust the sensitivity of what is considered a top-" -#~ "surface. 'One wall threshold' is only visible if this setting is set above the " -#~ "default value of 0.5, or if single-wall top surfaces is enabled." +#~ "NOTE: Bottom and top surfaces will not be affected by this value to " +#~ "prevent visual gaps on the ouside of the model. Adjust 'One wall " +#~ "threshold' in the Advanced settings below to adjust the sensitivity of " +#~ "what is considered a top-surface. 'One wall threshold' is only visible if " +#~ "this setting is set above the default value of 0.5, or if single-wall top " +#~ "surfaces is enabled." #~ msgstr "" #~ "Ajuste este valor para evitar que perímetros curtos e não fechados sejam " -#~ "impressos, o que poderia aumentar o tempo de impressão. Valores mais altos " -#~ "removem perímetros mais longos.\n" +#~ "impressos, o que poderia aumentar o tempo de impressão. Valores mais " +#~ "altos removem perímetros mais longos.\n" #~ "\n" -#~ "NOTA: As superfícies inferior e superior não serão afetadas por este valor para " -#~ "evitar lacunas visuais no exterior do modelo. Ajuste o 'Limiar de um perímetro' " -#~ "nas configurações avançadas abaixo para ajustar a sensibilidade do que é " -#~ "considerado uma superfície superior. 'Limiar de um perímetro' só é visível se " -#~ "esta configuração estiver acima do valor padrão de 0,5, ou se superfícies " -#~ "superiores de uma única parede estiverem habilitadas." +#~ "NOTA: As superfícies inferior e superior não serão afetadas por este " +#~ "valor para evitar lacunas visuais no exterior do modelo. Ajuste o 'Limiar " +#~ "de um perímetro' nas configurações avançadas abaixo para ajustar a " +#~ "sensibilidade do que é considerado uma superfície superior. 'Limiar de um " +#~ "perímetro' só é visível se esta configuração estiver acima do valor " +#~ "padrão de 0,5, ou se superfícies superiores de uma única parede estiverem " +#~ "habilitadas." #~ msgid "Don't filter out small internal bridges (beta)" #~ msgstr "Não filtrar pequenas pontes internas (beta)" #~ msgid "" -#~ "This option can help reducing pillowing on top surfaces in heavily slanted or " -#~ "curved models.\n" +#~ "This option can help reducing pillowing on top surfaces in heavily " +#~ "slanted or curved models.\n" #~ "\n" -#~ "By default, small internal bridges are filtered out and the internal solid infill " -#~ "is printed directly over the sparse infill. This works well in most cases, " -#~ "speeding up printing without too much compromise on top surface quality. \n" +#~ "By default, small internal bridges are filtered out and the internal " +#~ "solid infill is printed directly over the sparse infill. This works well " +#~ "in most cases, speeding up printing without too much compromise on top " +#~ "surface quality. \n" #~ "\n" -#~ "However, in heavily slanted or curved models especially where too low sparse " -#~ "infill density is used, this may result in curling of the unsupported solid " -#~ "infill, causing pillowing.\n" +#~ "However, in heavily slanted or curved models especially where too low " +#~ "sparse infill density is used, this may result in curling of the " +#~ "unsupported solid infill, causing pillowing.\n" #~ "\n" -#~ "Enabling this option will print internal bridge layer over slightly unsupported " -#~ "internal solid infill. The options below control the amount of filtering, i.e. " -#~ "the amount of internal bridges created.\n" +#~ "Enabling this option will print internal bridge layer over slightly " +#~ "unsupported internal solid infill. The options below control the amount " +#~ "of filtering, i.e. the amount of internal bridges created.\n" #~ "\n" -#~ "Disabled - Disables this option. This is the default behavior and works well in " -#~ "most cases.\n" +#~ "Disabled - Disables this option. This is the default behavior and works " +#~ "well in most cases.\n" #~ "\n" -#~ "Limited filtering - Creates internal bridges on heavily slanted surfaces, while " -#~ "avoiding creating unnecessary internal bridges. This works well for most " -#~ "difficult models.\n" +#~ "Limited filtering - Creates internal bridges on heavily slanted surfaces, " +#~ "while avoiding creating unnecessary internal bridges. This works well for " +#~ "most difficult models.\n" #~ "\n" -#~ "No filtering - Creates internal bridges on every potential internal overhang. " -#~ "This option is useful for heavily slanted top surface models. However, in most " -#~ "cases it creates too many unnecessary bridges." +#~ "No filtering - Creates internal bridges on every potential internal " +#~ "overhang. This option is useful for heavily slanted top surface models. " +#~ "However, in most cases it creates too many unnecessary bridges." #~ msgstr "" -#~ "Esta opção pode ajudar a reduzir o pillowing nas superfícies superiores em " -#~ "modelos fortemente inclinados ou curvos.\n" +#~ "Esta opção pode ajudar a reduzir o pillowing nas superfícies superiores " +#~ "em modelos fortemente inclinados ou curvos.\n" #~ "\n" -#~ "Por padrão, pequenas pontes internas são filtradas e o preenchimento sólido " -#~ "interno é impresso diretamente sobre o preenchimento esparso. Isso funciona bem " -#~ "na maioria dos casos, acelerando a impressão sem comprometer muito a qualidade da " -#~ "superfície superior. \n" +#~ "Por padrão, pequenas pontes internas são filtradas e o preenchimento " +#~ "sólido interno é impresso diretamente sobre o preenchimento esparso. Isso " +#~ "funciona bem na maioria dos casos, acelerando a impressão sem comprometer " +#~ "muito a qualidade da superfície superior. \n" #~ "\n" -#~ "No entanto, em modelos fortemente inclinados ou curvos, especialmente quando a " -#~ "densidade de preenchimento esparso é muito baixa, isso pode resultar em " -#~ "enrolamento do preenchimento sólido não suportado, causando pillowing.\n" +#~ "No entanto, em modelos fortemente inclinados ou curvos, especialmente " +#~ "quando a densidade de preenchimento esparso é muito baixa, isso pode " +#~ "resultar em enrolamento do preenchimento sólido não suportado, causando " +#~ "pillowing.\n" #~ "\n" -#~ "Ativar esta opção imprimirá uma camada de ponte interna sobre o preenchimento " -#~ "sólido interno ligeiramente não suportado. As opções abaixo controlam a " -#~ "quantidade de filtragem, ou seja, a quantidade de pontes internas criadas.\n" +#~ "Ativar esta opção imprimirá uma camada de ponte interna sobre o " +#~ "preenchimento sólido interno ligeiramente não suportado. As opções abaixo " +#~ "controlam a quantidade de filtragem, ou seja, a quantidade de pontes " +#~ "internas criadas.\n" #~ "\n" -#~ "Desativado - Desativa esta opção. Este é o comportamento padrão e funciona bem na " -#~ "maioria dos casos.\n" +#~ "Desativado - Desativa esta opção. Este é o comportamento padrão e " +#~ "funciona bem na maioria dos casos.\n" #~ "\n" -#~ "Filtragem limitada - Cria pontes internas em superfícies fortemente inclinadas, " -#~ "evitando a criação de pontes internas desnecessárias. Isso funciona bem para a " -#~ "maioria dos modelos difíceis.\n" +#~ "Filtragem limitada - Cria pontes internas em superfícies fortemente " +#~ "inclinadas, evitando a criação de pontes internas desnecessárias. Isso " +#~ "funciona bem para a maioria dos modelos difíceis.\n" #~ "\n" -#~ "Sem filtragem - Cria pontes internas em cada inclinação interna potencial. Esta " -#~ "opção é útil para modelos com superfície superior fortemente inclinada. No " -#~ "entanto, na maioria dos casos, cria pontes desnecessárias demais." +#~ "Sem filtragem - Cria pontes internas em cada inclinação interna " +#~ "potencial. Esta opção é útil para modelos com superfície superior " +#~ "fortemente inclinada. No entanto, na maioria dos casos, cria pontes " +#~ "desnecessárias demais." #~ msgid "Shrinkage" #~ msgstr "Retração" #~ msgid "" -#~ "Enables gap fill for the selected surfaces. The minimum gap length that will be " -#~ "filled can be controlled from the filter out tiny gaps option below.\n" +#~ "Enables gap fill for the selected surfaces. The minimum gap length that " +#~ "will be filled can be controlled from the filter out tiny gaps option " +#~ "below.\n" #~ "\n" #~ "Options:\n" -#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" -#~ "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces only\n" +#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid " +#~ "surfaces\n" +#~ "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " +#~ "only\n" #~ "3. Nowhere: Disables gap fill\n" #~ msgstr "" -#~ "Ativa o preenchimento de vão para as superfícies selecionadas. O comprimento " -#~ "mínimo do vão que será preenchida pode ser controlado a partir da opção de " -#~ "filtrar pequenas s abaixo.\n" +#~ "Ativa o preenchimento de vão para as superfícies selecionadas. O " +#~ "comprimento mínimo do vão que será preenchida pode ser controlado a " +#~ "partir da opção de filtrar pequenas s abaixo.\n" #~ "\n" #~ "Opções:\n" #~ "1. Em todos os lugares: Aplica preenchimento de s às superfícies sólidas " @@ -17490,122 +18048,130 @@ msgstr "" #~ "3. Em nenhum lugar: Desativa o preenchimento de s\n" #~ msgid "" -#~ "Decrease this value slightly(for example 0.9) to reduce the amount of material " -#~ "for bridge, to improve sag" +#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " +#~ "material for bridge, to improve sag" #~ msgstr "" -#~ "Diminua ligeiramente este valor (por exemplo, 0.9) para reduzir a quantidade de " -#~ "material para ponte, para melhorar a flacidez" +#~ "Diminua ligeiramente este valor (por exemplo, 0.9) para reduzir a " +#~ "quantidade de material para ponte, para melhorar a flacidez" #~ 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." +#~ "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 "" -#~ "Este valor governa a espessura da camada interna da ponte. Esta é a primeira " -#~ "camada sobre o preenchimento esparso . Diminua ligeiramente este valor (por " -#~ "exemplo, 0.9) para melhorar a qualidade da superfície sobre o preenchimento " -#~ "esparso." +#~ "Este valor governa a espessura da camada interna da ponte. Esta é a " +#~ "primeira camada sobre o preenchimento esparso . Diminua ligeiramente este " +#~ "valor (por exemplo, 0.9) para melhorar a qualidade da superfície sobre o " +#~ "preenchimento esparso." #~ msgid "" -#~ "This factor affects the amount of material for top solid infill. You can decrease " -#~ "it slightly to have smooth surface finish" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" #~ msgstr "" -#~ "Este fator afeta a quantidade de material para o preenchimento sólido superior. " -#~ "Você pode diminuí-lo ligeiramente para ter um acabamento de superfície suave" +#~ "Este fator afeta a quantidade de material para o preenchimento sólido " +#~ "superior. Você pode diminuí-lo ligeiramente para ter um acabamento de " +#~ "superfície suave" #~ msgid "This factor affects the amount of material for bottom solid infill" #~ msgstr "" -#~ "Este fator afeta a quantidade de material para o preenchimento sólido inferior" +#~ "Este fator afeta a quantidade de material para o preenchimento sólido " +#~ "inferior" #~ msgid "" #~ "Enable this option to slow printing down in areas where potential curled " #~ "perimeters may exist" #~ msgstr "" -#~ "Ative esta opção para diminuir a velocidade de impressão em áreas onde podem " -#~ "existir potenciais perímetros curvados (warping)" +#~ "Ative esta opção para diminuir a velocidade de impressão em áreas onde " +#~ "podem existir potenciais perímetros curvados (warping)" #~ msgid "Speed of bridge and completely overhang wall" #~ msgstr "Velocidade de ponte e paredes compostas completamente de overhangs" #~ 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%." +#~ "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 "" -#~ "Velocidade da ponte interna. Se o valor for expresso como porcentagem, será " -#~ "calculado com base na velocidade da ponte. O valor padrão é 150%." +#~ "Velocidade da ponte interna. Se o valor for expresso como porcentagem, " +#~ "será calculado com base na velocidade da ponte. O valor padrão é 150%." #~ msgid "Time to load new filament when switch filament. For statistics only" #~ msgstr "" #~ "Tempo para carregar novo filamento ao trocar de filamento. Apenas para " #~ "estatísticas" -#~ msgid "Time to unload old filament when switch filament. For statistics only" +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" #~ msgstr "" -#~ "Tempo para descarregar o filamento antigo ao trocar de filamento. Apenas para " -#~ "estatísticas" +#~ "Tempo para descarregar o filamento antigo ao trocar de filamento. Apenas " +#~ "para estatísticas" #~ 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 "" -#~ "Tempo para o firmware da impressora (ou a Unidade de Material Multi 2.0) carregar " -#~ "um novo filamento durante uma troca de ferramenta (ao executar o código T). Este " -#~ "tempo é adicionado ao tempo total de impressão pelo estimador de tempo do G-code." - -#~ 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." +#~ "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 "" #~ "Tempo para o firmware da impressora (ou a Unidade de Material Multi 2.0) " -#~ "descarregar um filamento durante uma troca de ferramenta (ao executar o código " -#~ "T). Este tempo é adicionado ao tempo total de impressão pelo estimador de tempo " -#~ "do G-code." +#~ "carregar um novo filamento durante uma troca de ferramenta (ao executar o " +#~ "código T). Este tempo é adicionado ao tempo total de impressão pelo " +#~ "estimador de tempo do G-code." + +#~ 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 "" +#~ "Tempo para o firmware da impressora (ou a Unidade de Material Multi 2.0) " +#~ "descarregar um filamento durante uma troca de ferramenta (ao executar o " +#~ "código T). Este tempo é adicionado ao tempo total de impressão pelo " +#~ "estimador de tempo do G-code." #~ msgid "Filter out gaps smaller than the threshold specified" #~ msgstr "Filtrar vazios menores que o limite especificado" #~ msgid "" -#~ "Enable this option for chamber temperature control. An M191 command will be added " -#~ "before \"machine_start_gcode\"\n" +#~ "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 "" -#~ "Ative esta opção para controle de temperatura da câmara. Um comando M191 será " -#~ "adicionado antes de \"machine_start_gcode\"\n" +#~ "Ative esta opção para controle de temperatura da câmara. Um comando M191 " +#~ "será adicionado antes de \"machine_start_gcode\"\n" #~ "Comandos G-code: 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" +#~ "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 "" #~ "Uma temperatura mais alta na câmara pode ajudar a suprimir ou reduzir o " -#~ "empenamento e potencialmente levar a uma maior resistência de ligação entre " -#~ "camadas para materiais de alta temperatura como ABS, ASA, PC, PA e assim por " -#~ "diante. Ao mesmo tempo, a filtragem de ar de ABS e ASA ficará pior. Para PLA, " -#~ "PETG, TPU, PVA e outros materiais de baixa temperatura, a temperatura real da " -#~ "câmara não deve ser alta para evitar obstruções, portanto, é altamente " -#~ "recomendável usar 0, que significa desligado" +#~ "empenamento e potencialmente levar a uma maior resistência de ligação " +#~ "entre camadas para materiais de alta temperatura como ABS, ASA, PC, PA e " +#~ "assim por diante. Ao mesmo tempo, a filtragem de ar de ABS e ASA ficará " +#~ "pior. Para PLA, PETG, TPU, PVA e outros materiais de baixa temperatura, a " +#~ "temperatura real da câmara não deve ser alta para evitar obstruções, " +#~ "portanto, é altamente recomendável usar 0, que significa desligado" #~ msgid "" -#~ "Different nozzle diameters and different filament diameters is not allowed when " -#~ "prime tower is enabled." +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." #~ msgstr "" #~ "Diâmetros de bico diferentes e diâmetros de filamento diferentes não são " #~ "permitidos quando a Torre Prime está ativa." -#~ msgid "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." #~ msgstr "" -#~ "A prevenção de vazamento atualmente não é suportada com a Torre Prime ativa." +#~ "A prevenção de vazamento atualmente não é suportada com a Torre Prime " +#~ "ativa." -#~ msgid "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." #~ msgstr "" -#~ "Profundidade de entrelaçamento de uma região segmentada. Zero desativa essa " -#~ "funcionalidade." +#~ "Profundidade de entrelaçamento de uma região segmentada. Zero desativa " +#~ "essa funcionalidade." #~ msgid "Wipe tower extruder" #~ msgstr "Extrusora da Torre Prime" @@ -17620,21 +18186,21 @@ msgstr "" #~ msgstr "Não associado a nenhum aplicativo" #~ msgid "" -#~ "Associate OrcaSlicer with prusaslicer:// links so that Orca can open models from " -#~ "Printable.com" +#~ "Associate OrcaSlicer with prusaslicer:// links so that Orca can open " +#~ "models from Printable.com" #~ msgstr "" -#~ "Associar OrcaSlicer com links prusaslicer:// para que o Orca possa abrir modelos " -#~ "do Printable.com" +#~ "Associar OrcaSlicer com links prusaslicer:// para que o Orca possa abrir " +#~ "modelos do Printable.com" #~ msgid "Associate bambustudio://" #~ msgstr "Associar bambustudio://" #~ msgid "" -#~ "Associate OrcaSlicer with bambustudio:// links so that Orca can open models from " -#~ "makerworld.com" +#~ "Associate OrcaSlicer with bambustudio:// links so that Orca can open " +#~ "models from makerworld.com" #~ msgstr "" -#~ "Associar OrcaSlicer com bambustudio:// para que o Orca possa abrir modelos de " -#~ "makerworld.com" +#~ "Associar OrcaSlicer com bambustudio:// para que o Orca possa abrir " +#~ "modelos de makerworld.com" #~ msgid "Associate cura://" #~ msgstr "Associar cura://" @@ -17643,15 +18209,15 @@ msgstr "" #~ "Associate OrcaSlicer with cura:// links so that Orca can open models from " #~ "thingiverse.com" #~ msgstr "" -#~ "Associar OrcaSlicer com links cura:// para que o Orca possa abrir modelos do " -#~ "thingiverse.com" +#~ "Associar OrcaSlicer com links cura:// para que o Orca possa abrir modelos " +#~ "do thingiverse.com" #~ msgid "" -#~ "File size exceeds the 100MB upload limit. Please upload your file through the " -#~ "panel." +#~ "File size exceeds the 100MB upload limit. Please upload your file through " +#~ "the panel." #~ msgstr "" -#~ "O tamanho do arquivo excede o limite de envio de 100MB. Por favor, envie seu " -#~ "arquivo através do painel." +#~ "O tamanho do arquivo excede o limite de envio de 100MB. Por favor, envie " +#~ "seu arquivo através do painel." #~ msgid "Please input a valid value (K in 0~0.3)" #~ msgstr "Por favor, insira um valor válido (K entre 0~0.3)" @@ -17675,58 +18241,59 @@ 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 "" #~ "Encontre os detalhes da Calibração de Dinâmica de Fluxo na nossa wiki.\n" #~ "\n" -#~ "Normalmente, a calibração não é necessária. Quando você inicia uma impressão de " -#~ "cor/material única, com a opção \"calibração de dinâmica de fluxo\" ativada no " -#~ "menu de início da impressão, a impressora seguirá o método antigo, calibrando o " -#~ "filamento antes da impressão; Quando você inicia uma impressão de cor/material " -#~ "múltipla, a impressora usará o parâmetro de compensação padrão para o filamento " -#~ "durante cada troca de filamento, o que resultará em um bom resultado na maioria " -#~ "dos casos.\n" +#~ "Normalmente, a calibração não é necessária. Quando você inicia uma " +#~ "impressão de cor/material única, com a opção \"calibração de dinâmica de " +#~ "fluxo\" ativada no menu de início da impressão, a impressora seguirá o " +#~ "método antigo, calibrando o filamento antes da impressão; Quando você " +#~ "inicia uma impressão de cor/material múltipla, a impressora usará o " +#~ "parâmetro de compensação padrão para o filamento durante cada troca de " +#~ "filamento, o que resultará em um bom resultado na maioria dos casos.\n" #~ "\n" #~ "Por favor, note que existem alguns casos que podem tornar o resultado da " -#~ "calibração não confiável: usar uma mesa texturizada para fazer a calibração; a " -#~ "mesa não tem boa adesão (por favor lave a mesa ou aplique cola!) ... Você pode " -#~ "encontrar mais informações em nossa wiki.\n" +#~ "calibração não confiável: usar uma mesa texturizada para fazer a " +#~ "calibração; a mesa não tem boa adesão (por favor lave a mesa ou aplique " +#~ "cola!) ... Você pode encontrar mais informações em nossa wiki.\n" #~ "\n" -#~ "Os resultados da calibração têm cerca de 10 por cento de oscilação em nossos " -#~ "testes, o que pode fazer com que o resultado não seja exatamente o mesmo em cada " -#~ "calibração. Ainda estamos investigando a causa raiz para fazer melhorias com " -#~ "novas atualizações." +#~ "Os resultados da calibração têm cerca de 10 por cento de oscilação em " +#~ "nossos testes, o que pode fazer com que o resultado não seja exatamente o " +#~ "mesmo em cada calibração. Ainda estamos investigando a causa raiz para " +#~ "fazer melhorias com novas atualizações." #~ msgid "" -#~ "Only one of the results with the same name will be saved. Are you sure you want " -#~ "to overrides the other results?" +#~ "Only one of the results with the same name will be saved. Are you sure " +#~ "you want to overrides the other results?" #~ msgstr "" -#~ "Apenas um dos resultados com o mesmo nome será salvo. Você tem certeza de que " -#~ "deseja substituir os outros resultados?" +#~ "Apenas um dos resultados com o mesmo nome será salvo. Você tem certeza de " +#~ "que deseja substituir os outros resultados?" #, 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?" +#~ "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 "" -#~ "Já existe um resultado de calibração histórico com o mesmo nome: %s. Apenas um " -#~ "dos resultados com o mesmo nome é salvo. Você tem certeza de que deseja " -#~ "substituir o resultado histórico?" +#~ "Já existe um resultado de calibração histórico com o mesmo nome: %s. " +#~ "Apenas um dos resultados com o mesmo nome é salvo. Você tem certeza de " +#~ "que deseja substituir o resultado histórico?" #~ msgid "Please find the cornor with perfect degree of extrusion" #~ msgstr "Por favor, encontre o canto com o grau perfeito de extrusão" diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index 2f26e9bd11..dd89d18fea 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 V2.2.0 Official Release\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-14 23:42+0800\n" +"POT-Creation-Date: 2025-02-19 19:44+0800\n" "PO-Revision-Date: 2024-09-25 22:36+0700\n" "Last-Translator: \n" "Language-Team: Andylg \n" @@ -8074,12 +8074,6 @@ msgstr "Скрипты постобработки" msgid "Notes" msgstr "Заметки" -msgid "Dependencies" -msgstr "" - -msgid "Profile dependencies" -msgstr "" - msgid "Frequent" msgstr "Частые" @@ -8275,6 +8269,12 @@ msgid "Toolchange parameters with multi extruder MM printers" msgstr "" "Параметры смены инструмента в многоэкструдерных мультиматериальных принтерах" +msgid "Dependencies" +msgstr "" + +msgid "Profile dependencies" +msgstr "" + msgid "Printable space" msgstr "Область печати" @@ -10749,6 +10749,9 @@ msgstr "" "моделей. Авто означает, что ширина каймы анализируется и рассчитывается " "автоматически." +msgid "Painted" +msgstr "" + msgid "Brim-object gap" msgstr "Смещение каймы" @@ -14158,6 +14161,21 @@ msgstr "" "спирали. Если задано в процентах, то значение вычисляться относительно " "диаметра сопла." +#, c-format, boost-format +msgid "" +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." +msgstr "" + +#, c-format, boost-format +msgid "" +"Sets the finishing flow ratio while ending the spiral. Normally the spiral " +"transition scales the flow ratio from 100% to 0% during the last loop which " +"can in some cases lead to under extrusion at the end of the spiral." +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 " @@ -16648,6 +16666,23 @@ msgstr "Отмена" msgid "Error uploading to print host" msgstr "Ошибка при отправке на хост печати" +msgid "" +"The selected bed type does not match the file. Please confirm before " +"starting the print." +msgstr "" + +msgid "Time-lapse" +msgstr "" + +msgid "Heated Bed Leveling" +msgstr "" + +msgid "Textured Build Plate (Side A)" +msgstr "" + +msgid "Smooth Build Plate (Side B)" +msgstr "" + msgid "Unable to perform boolean operation on selected parts" msgstr "Невозможно выполнить булевую операцию над выбранными элементами." diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index 624e2fc822..b177c20183 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-14 23:42+0800\n" +"POT-Creation-Date: 2025-02-19 19:44+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -7782,12 +7782,6 @@ msgstr "Skript för efterbehandling" msgid "Notes" msgstr "Notes" -msgid "Dependencies" -msgstr "" - -msgid "Profile dependencies" -msgstr "" - msgid "Frequent" msgstr "Återkommande" @@ -7969,6 +7963,12 @@ msgstr "" msgid "Toolchange parameters with multi extruder MM printers" msgstr "" +msgid "Dependencies" +msgstr "" + +msgid "Profile dependencies" +msgstr "" + msgid "Printable space" msgstr "Utskriftsbar yta" @@ -10162,6 +10162,9 @@ msgstr "" "Detta styr genereringen av brim på modellens yttre och/eller inre sida. Auto " "innebär att brim bredd analyseras och beräknas automatiskt." +msgid "Painted" +msgstr "" + msgid "Brim-object gap" msgstr "Avstånd mellan brim och modell" @@ -12990,6 +12993,21 @@ msgstr "" "Maximum distance to move points in XY to try to achieve a smooth spiral. If " "expressed as a %, it will be computed over nozzle diameter" +#, c-format, boost-format +msgid "" +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." +msgstr "" + +#, c-format, boost-format +msgid "" +"Sets the finishing flow ratio while ending the spiral. Normally the spiral " +"transition scales the flow ratio from 100% to 0% during the last loop which " +"can in some cases lead to under extrusion at the end of the spiral." +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 " @@ -15174,6 +15192,23 @@ msgstr "Avbryter" msgid "Error uploading to print host" msgstr "" +msgid "" +"The selected bed type does not match the file. Please confirm before " +"starting the print." +msgstr "" + +msgid "Time-lapse" +msgstr "" + +msgid "Heated Bed Leveling" +msgstr "" + +msgid "Textured Build Plate (Side A)" +msgstr "" + +msgid "Smooth Build Plate (Side B)" +msgstr "" + msgid "Unable to perform boolean operation on selected parts" msgstr "Kan inte utföra boolean operationer på valda delar" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index e81964ad4e..063db956e1 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-14 23:42+0800\n" +"POT-Creation-Date: 2025-02-19 19:44+0800\n" "PO-Revision-Date: 2025-02-03 13:32+0300\n" "Last-Translator: GlauTech\n" "Language-Team: \n" @@ -7928,12 +7928,6 @@ msgstr "İşlem Sonrası Komut Dosyaları" msgid "Notes" msgstr "Notlar" -msgid "Dependencies" -msgstr "Bağımlılıklar" - -msgid "Profile dependencies" -msgstr "Profil bağımlılıkları" - msgid "Frequent" msgstr "Sıklıkla" @@ -8117,6 +8111,12 @@ msgstr "Sıkıştırma ayarları" msgid "Toolchange parameters with multi extruder MM printers" msgstr "Çoklu Ekstruder MM Yazıcılarda Araç Değiştirme Parametreleri" +msgid "Dependencies" +msgstr "Bağımlılıklar" + +msgid "Profile dependencies" +msgstr "Profil bağımlılıkları" + msgid "Printable space" msgstr "Plaka Ayarı" @@ -10539,6 +10539,9 @@ msgstr "" "Otomatik, kenar genişliğinin otomatik olarak analiz edilip hesaplandığı " "anlamına gelir." +msgid "Painted" +msgstr "" + msgid "Brim-object gap" msgstr "Kenar-nesne boşluğu" @@ -13851,6 +13854,21 @@ msgstr "" "Düzgün bir spiral elde etmek için XY'deki noktaları hareket ettirmek için " "maksimum mesafe % olarak ifade edilirse nozül çapı üzerinden hesaplanacaktır." +#, c-format, boost-format +msgid "" +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." +msgstr "" + +#, c-format, boost-format +msgid "" +"Sets the finishing flow ratio while ending the spiral. Normally the spiral " +"transition scales the flow ratio from 100% to 0% during the last loop which " +"can in some cases lead to under extrusion at the end of the spiral." +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 " @@ -16266,6 +16284,23 @@ msgstr "İptal Ediliyor" msgid "Error uploading to print host" msgstr "Yazdırma ana bilgisayarına yükleme hatası" +msgid "" +"The selected bed type does not match the file. Please confirm before " +"starting the print." +msgstr "" + +msgid "Time-lapse" +msgstr "" + +msgid "Heated Bed Leveling" +msgstr "" + +msgid "Textured Build Plate (Side A)" +msgstr "" + +msgid "Smooth Build Plate (Side B)" +msgstr "" + msgid "Unable to perform boolean operation on selected parts" msgstr "Seçilen parçalarda bölme işlemi gerçekleştirilemiyor" diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 90dd14a03e..940a275f0e 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-14 23:42+0800\n" +"POT-Creation-Date: 2025-02-19 19:44+0800\n" "PO-Revision-Date: 2024-12-23 20:09+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -7971,12 +7971,6 @@ msgstr "Сценарії постобробки" msgid "Notes" msgstr "Примітки" -msgid "Dependencies" -msgstr "" - -msgid "Profile dependencies" -msgstr "" - msgid "Frequent" msgstr "Частий" @@ -8160,6 +8154,12 @@ msgstr "Налаштування раммінгу" msgid "Toolchange parameters with multi extruder MM printers" msgstr "Параметри заміни інструменту в багатоекструдерних MM-принтерах" +msgid "Dependencies" +msgstr "" + +msgid "Profile dependencies" +msgstr "" + msgid "Printable space" msgstr "Місце для друку" @@ -10464,6 +10464,9 @@ msgstr "" "Це керує формуванням поля на зовнішній та/або внутрішній сторонімоделей. " "Auto означає, що ширина поля аналізується та обчислюється автоматично." +msgid "Painted" +msgstr "" + msgid "Brim-object gap" msgstr "Зазор між каймою та об'єктом" @@ -13629,6 +13632,21 @@ msgstr "" "спіралі. Якщо виражено у відсотках, вона буде обчислена відносно діаметра " "сопла" +#, c-format, boost-format +msgid "" +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." +msgstr "" + +#, c-format, boost-format +msgid "" +"Sets the finishing flow ratio while ending the spiral. Normally the spiral " +"transition scales the flow ratio from 100% to 0% during the last loop which " +"can in some cases lead to under extrusion at the end of the spiral." +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 " @@ -15974,6 +15992,23 @@ msgstr "Скасування" msgid "Error uploading to print host" msgstr "Помилка завантаження на хост друку" +msgid "" +"The selected bed type does not match the file. Please confirm before " +"starting the print." +msgstr "" + +msgid "Time-lapse" +msgstr "" + +msgid "Heated Bed Leveling" +msgstr "" + +msgid "Textured Build Plate (Side A)" +msgstr "" + +msgid "Smooth Build Plate (Side B)" +msgstr "" + msgid "Unable to perform boolean operation on selected parts" msgstr "Не вдається виконати булеву операцію на вибраних частинах" diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 6e4b9db119..c0936aae36 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: 2025-02-14 23:42+0800\n" +"POT-Creation-Date: 2025-02-19 19:44+0800\n" "PO-Revision-Date: 2024-07-28 07:12+0000\n" "Last-Translator: Handle \n" "Language-Team: \n" @@ -7578,12 +7578,6 @@ msgstr "后处理脚本" msgid "Notes" msgstr "注释" -msgid "Dependencies" -msgstr "" - -msgid "Profile dependencies" -msgstr "" - msgid "Frequent" msgstr "常用" @@ -7747,6 +7741,12 @@ msgstr "尖端成型设置" msgid "Toolchange parameters with multi extruder MM printers" msgstr "多挤出机多材料打印机的换色参数" +msgid "Dependencies" +msgstr "" + +msgid "Profile dependencies" +msgstr "" + msgid "Printable space" msgstr "可打印区域" @@ -9912,6 +9912,9 @@ msgid "" msgstr "" "该参数控制在模型的外侧和/或内侧生成brim。自动是指自动分析和计算边框的宽度。" +msgid "Painted" +msgstr "" + msgid "Brim-object gap" msgstr "Brim与模型的间隙" @@ -12792,6 +12795,21 @@ msgstr "" "在XY平面上移动点的最大距离,以尝试实现平滑的螺旋。如果以%表示,它将基于喷嘴直" "径来计算。" +#, c-format, boost-format +msgid "" +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." +msgstr "" + +#, c-format, boost-format +msgid "" +"Sets the finishing flow ratio while ending the spiral. Normally the spiral " +"transition scales the flow ratio from 100% to 0% during the last loop which " +"can in some cases lead to under extrusion at the end of the spiral." +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 " @@ -14960,6 +14978,23 @@ msgstr "取消中" msgid "Error uploading to print host" msgstr "上传到打印机时错误" +msgid "" +"The selected bed type does not match the file. Please confirm before " +"starting the print." +msgstr "" + +msgid "Time-lapse" +msgstr "" + +msgid "Heated Bed Leveling" +msgstr "" + +msgid "Textured Build Plate (Side A)" +msgstr "" + +msgid "Smooth Build Plate (Side B)" +msgstr "" + msgid "Unable to perform boolean operation on selected parts" msgstr "无法对所选部件执行布尔运算" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 12cde969b1..52b2868a3b 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-14 23:42+0800\n" +"POT-Creation-Date: 2025-02-19 19:44+0800\n" "PO-Revision-Date: 2025-01-11 10:54+0800\n" "Last-Translator: Shuwn Hsu\n" "Language-Team: \n" @@ -5066,7 +5066,7 @@ msgstr "LAN 連線失敗(無法查看 SD 卡)。" msgid "Browsing file in SD card is not supported in LAN Only Mode." msgstr "在僅 LAN 模式下不支援瀏覽 SD 卡中的檔案。" -#, possible-c-format, possible-boost-format +#, 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?" @@ -5075,7 +5075,7 @@ msgstr[0] "將從列印設備中刪除 %u 個檔案。確定要繼續嗎?" msgid "Delete files" msgstr "刪除檔案" -#, possible-c-format, possible-boost-format +#, c-format, boost-format msgid "Do you want to delete the file '%s' from printer?" msgstr "確定要從列印設備中刪除檔案 '%s' 嗎?" @@ -7612,12 +7612,6 @@ msgstr "後處理腳本" msgid "Notes" msgstr "備註" -msgid "Dependencies" -msgstr "相依項目" - -msgid "Profile dependencies" -msgstr "設定檔相依項目" - msgid "Frequent" msgstr "常用" @@ -7784,6 +7778,12 @@ msgstr "尖端成型設定" msgid "Toolchange parameters with multi extruder MM printers" msgstr "適用於多擠出機多材料打印機的工具切換參數" +msgid "Dependencies" +msgstr "相依項目" + +msgid "Profile dependencies" +msgstr "設定檔相依項目" + msgid "Printable space" msgstr "可列印區域" @@ -8702,7 +8702,9 @@ msgstr "步驟 2. 若下方的 IP 和存取碼與印表機上的實際數值不 msgid "" "Step 3. Please obtain the device SN from the printer side; it is usually " "found in the device information on the printer screen." -msgstr "步驟 3. 請從列印設備上取得設備序號(SN),通常可在列印設備螢幕的設備資訊中查看。" +msgstr "" +"步驟 3. 請從列印設備上取得設備序號(SN),通常可在列印設備螢幕的設備資訊中查" +"看。" msgid "IP" msgstr "IP" @@ -9232,7 +9234,7 @@ msgid "" "extruder addressing." msgstr "在 layer_gcode 中發現 \"G92 E0\",它與絕對擠出機尋址不相容。" -#, possible-c-format, possible-boost-format +#, c-format, boost-format msgid "Plate %d: %s does not support filament %s" msgstr "平台 %d:%s 不支援線材 %s。" @@ -9646,8 +9648,8 @@ msgid "" "speed specifically for these features can improve overall print quality and " "reduce warping." msgstr "" -"啟用此選項後,可調整零件冷卻風扇的速度,專門針對懸垂結構、內部和外部橋接區域。" -"適當調整風扇速度能提升列印品質並減少變形問題。" +"啟用此選項後,可調整零件冷卻風扇的速度,專門針對懸垂結構、內部和外部橋接區" +"域。適當調整風扇速度能提升列印品質並減少變形問題。" msgid "Overhangs and external bridges fan speed" msgstr "懸垂與外部橋接區域的冷卻風扇速度" @@ -9663,11 +9665,13 @@ msgid "" "speed threshold set above. It is also adjusted upwards up to the maximum fan " "speed threshold when the minimum layer time threshold is not met." msgstr "" -"當列印橋接結構或懸垂牆,且其懸垂角度超過「懸垂冷卻閾值」所設定的標準時,將適用此零件冷卻風扇轉速。" -"針對懸垂與橋接部分提高冷卻強度,有助於提升列印品質並減少變形。\n" +"當列印橋接結構或懸垂牆,且其懸垂角度超過「懸垂冷卻閾值」所設定的標準時,將適" +"用此零件冷卻風扇轉速。針對懸垂與橋接部分提高冷卻強度,有助於提升列印品質並減" +"少變形。\n" "\n" -"請注意,此風扇轉速的最低值受限於「最小風扇轉速」設定。此外,當層列印時間未達「最小層列印時間」閾值時," -"風扇轉速將自動增加,最高可達「最大風扇轉速」設定值。" +"請注意,此風扇轉速的最低值受限於「最小風扇轉速」設定。此外,當層列印時間未達" +"「最小層列印時間」閾值時,風扇轉速將自動增加,最高可達「最大風扇轉速」設定" +"值。" msgid "Overhang cooling activation threshold" msgstr "懸垂冷卻觸發閾值" @@ -9677,11 +9681,9 @@ msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " "percentage, indicating the portion of each line's width that is unsupported " -"by the layer beneath it. Setting this value to 0%% forces the cooling fan to " +"by the layer beneath it. Setting this value to 0% forces the cooling fan to " "run for all outer walls, regardless of the overhang degree." msgstr "" -"當懸垂超過此設定的閾值時,冷卻風扇將強制以「懸垂風扇轉速」運行。該閾值以百分比表示," -"代表每條列印線寬中未受下層支撐的比例。若將此值設為 0%%,則冷卻風扇將對所有外牆啟動,不論懸垂角度大小。" msgid "External bridge infill direction" msgstr "外部橋接結構的填充方向" @@ -9705,8 +9707,8 @@ msgid "" "It is recommended to leave it at 0 unless there is a specific model need not " "to." msgstr "" -"內部橋接角度覆蓋設定。若設定為 0,系統將自動計算橋接角度;若輸入特定角度,則內部橋接將依此角度列印。" -"設定 180° 可視為零角度。\n" +"內部橋接角度覆蓋設定。若設定為 0,系統將自動計算橋接角度;若輸入特定角度,則" +"內部橋接將依此角度列印。設定 180° 可視為零角度。\n" "\n" "建議將此值保持為 0,除非模型有特殊需求需手動調整。" @@ -9721,9 +9723,9 @@ msgid "" "space for air to circulate around the extruded bridge, improving its cooling " "speed." msgstr "" -"調整外部橋接線的密度(間距)。100% 代表實心橋接,預設值為 100%。" -"\n" -"降低外部橋接的密度可提升列印穩定性,因為較大的間距讓空氣更容易流通,加速冷卻效果。" +"調整外部橋接線的密度(間距)。100% 代表實心橋接,預設值為 100%。\n" +"降低外部橋接的密度可提升列印穩定性,因為較大的間距讓空氣更容易流通,加速冷卻" +"效果。" msgid "Internal bridge density" msgstr "內部橋接密度" @@ -9742,10 +9744,11 @@ msgid "" msgstr "" "調整內部橋接線的密度(間距)。100% 代表實心橋接,預設值為 100%。\n" "\n" -"降低內部橋接的密度有助於減少頂部表面的鼓起問題,並提升內部橋接的穩定性,因為較大的間距讓空氣更容易流通," -"加速冷卻效果。\n" +"降低內部橋接的密度有助於減少頂部表面的鼓起問題,並提升內部橋接的穩定性,因為" +"較大的間距讓空氣更容易流通,加速冷卻效果。\n" "\n" -"此選項特別適用於「內部橋接覆蓋填充」功能,可進一步優化內部橋接結構,在擠出實心填充前提供更穩固的支撐。" +"此選項特別適用於「內部橋接覆蓋填充」功能,可進一步優化內部橋接結構,在擠出實" +"心填充前提供更穩固的支撐。" msgid "Bridge flow ratio" msgstr "橋接流量" @@ -10040,6 +10043,9 @@ msgid "" msgstr "" "該參數控制在模型的外側和/或內側產生 Brim 。自動是指自動分析和計算邊框的寬度。" +msgid "Painted" +msgstr "" + msgid "Brim-object gap" msgstr "Brim 與模型的間隙" @@ -10091,8 +10097,8 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" -"使用啟用的列印設備設定值來進行布林運算的表達式。如果此表達式的結果為 true," -"則該設定檔將被視為與當前啟用的印表機設定檔相容。" +"使用啟用的列印設備設定值來進行布林運算的表達式。如果此表達式的結果為 true,則" +"該設定檔將被視為與當前啟用的印表機設定檔相容。" msgid "Compatible process profiles" msgstr "相容的切片設定" @@ -10105,8 +10111,8 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" -"使用啟用的列印設定檔值來進行布林運算的表達式。如果此表達式的結果為 true," -"則該設定檔將被視為與當前啟用的列印設定檔相容。" +"使用啟用的列印設定檔值來進行布林運算的表達式。如果此表達式的結果為 true,則該" +"設定檔將被視為與當前啟用的列印設定檔相容。" msgid "Print sequence, layer by layer or object by object" msgstr "列印順序,逐層列印或者逐件列印" @@ -10257,20 +10263,20 @@ msgid "" msgstr "" "此選項可在內部和/或外部橋接結構上額外生成一層橋接填充。\n" "\n" -"額外的橋接層能改善橋接區域的外觀與穩定性,提供更佳的實心填充支撐。" -"這對於高速列印機特別有幫助,因為橋接與實心填充的列印速度可能有顯著差異。" -"額外的橋接層還能減少頂部表面的起皺現象,並降低外部橋接層與周圍輪廓分離的風險。\n" -"\n" -"一般建議將此選項設定為「僅外部橋接」,除非特定的切片模型需要其他調整。" +"額外的橋接層能改善橋接區域的外觀與穩定性,提供更佳的實心填充支撐。這對於高速" +"列印機特別有幫助,因為橋接與實心填充的列印速度可能有顯著差異。額外的橋接層還" +"能減少頂部表面的起皺現象,並降低外部橋接層與周圍輪廓分離的風險。\n" "\n" +"一般建議將此選項設定為「僅外部橋接」,除非特定的切片模型需要其他調整。\n" "選項說明:\n" "1. 停用 - 不啟用第二層橋接層(預設值,確保與其他設定相容)。\n" -"2. 僅外部橋接 - 僅對外部橋接區域添加第二層橋接層。請注意,若橋接結構過短或寬度小於設定的輪廓數量," -"則不會生成額外橋接層,因為這樣的結構不會受益於第二層橋接。如果啟用,第二層橋接層將與第一層平行擠出," -"以提升橋接的強度。\n" -"3. 僅內部橋接 - 僅為內部橋接區域(例如稀疏填充上的橋接部分)添加第二層橋接層。請注意," -"內部橋接層會計入模型的頂部外殼層數。第二層內部橋接層的擠出方向會盡可能接近垂直於第一層," -"若同一區域內存在多個橋接角度,則該區域的最後一個部分將作為角度參考。\n" +"2.\t僅外部橋接 - 僅對外部橋接區域添加第二層橋接層。請注意,若橋接結構過短或寬" +"度小於設定的輪廓數量,則不會生成額外橋接層,因為這樣的結構不會受益於第二層橋" +"接。如果啟用,第二層橋接層將與第一層平行擠出,以提升橋接的強度。\n" +"3. 僅內部橋接 - 僅為內部橋接區域(例如稀疏填充上的橋接部分)添加第二層橋接" +"層。請注意,內部橋接層會計入模型的頂部外殼層數。第二層內部橋接層的擠出方向會" +"盡可能接近垂直於第一層,若同一區域內存在多個橋接角度,則該區域的最後一個部分" +"將作為角度參考。\n" "4. 應用於所有橋接區域 - 為內部與外部橋接區域都添加第二層橋接層。\n" msgid "Disabled" @@ -10319,20 +10325,23 @@ msgid "" msgstr "" "此選項可幫助降低在高度傾斜或曲面模型上的頂部表面起皺問題。\n" "\n" -"預設情況下,小型內部橋接會被過濾掉,內部實心填充會直接列印在稀疏填充上。這種方式適用於大多數情況," -"能提升列印速度,同時維持合理的頂部表面品質。\n" +"預設情況下,小型內部橋接會被過濾掉,內部實心填充會直接列印在稀疏填充上。這種" +"方式適用於大多數情況,能提升列印速度,同時維持合理的頂部表面品質。\n" "\n" -"然而,在高度傾斜或曲面的模型上,特別是當稀疏填充密度過低時,未受支撐的實心填充可能會翹曲,導致表面起皺。\n" +"然而,在高度傾斜或曲面的模型上,特別是當稀疏填充密度過低時,未受支撐的實心填" +"充可能會翹曲,導致表面起皺。\n" "\n" -"啟用「有限過濾」或「不過濾」模式,將允許在部分未完全支撐的內部實心填充區域上列印內部橋接層。" -"下列選項可調整過濾的敏感度,決定哪些區域需要生成內部橋接。\n" +"啟用「有限過濾」或「不過濾」模式,將允許在部分未完全支撐的內部實心填充區域上" +"列印內部橋接層。下列選項可調整過濾的敏感度,決定哪些區域需要生成內部橋接。\n" "\n" "選項說明:\n" -"1. 過濾 - 預設選項,能有效過濾小型內部橋接,在大多數情況下效果良好。\n" +"1.\t過濾 - 預設選項,能有效過濾小型內部橋接,在大多數情況下效果良好。\n" "\n" -"2. 有限過濾 - 僅在高度傾斜的表面上建立內部橋接,同時避免生成過多無用的橋接結構,適合處理較複雜的模型。\n" +"2. 有限過濾 - 僅在高度傾斜的表面上建立內部橋接,同時避免生成過多無用的橋接結" +"構,適合處理較複雜的模型。\n" "\n" -"3. 不過濾 - 在所有可能的內部懸垂區域上建立內部橋接,適用於高度傾斜的頂部表面模型,但通常會產生過多不必要的橋接結構。" +"3.\t不過濾 - 在所有可能的內部懸垂區域上建立內部橋接,適用於高度傾斜的頂部表面" +"模型,但通常會產生過多不必要的橋接結構。" msgid "Filter" msgstr "篩選" @@ -11454,12 +11463,11 @@ msgid "" "Set to -1 to disable it.\n" "This setting is overridden by disable_fan_first_layers." msgstr "" -"此冷卻風扇速度適用於列印支撐介面時。" -"將此值設為高於正常速度,可減少支撐結構與受支撐零件之間的黏結強度,使拆除支撐更容易。\n" +"此冷卻風扇速度適用於列印支撐介面時。將此值設為高於正常速度,可減少支撐結構與" +"受支撐零件之間的黏結強度,使拆除支撐更容易。\n" "若設為 -1,則禁用此功能。\n" "此設定會被 disable_fan_first_layers 覆寫。" - msgid "Internal bridges fan speed" msgstr "內部橋接風扇轉速" @@ -11473,7 +11481,8 @@ msgid "" msgstr "" "此風扇轉速適用於所有內部橋接。若設為 -1,則改用懸垂風扇速度設定。\n" "\n" -"適當降低內部橋接的風扇轉速(相較於一般風扇速度),可減少因長時間對大面積區域過度冷卻而導致的零件翹曲。" +"適當降低內部橋接的風扇轉速(相較於一般風扇速度),可減少因長時間對大面積區域" +"過度冷卻而導致的零件翹曲。" msgid "" "Randomly jitter while printing the wall, so that the surface has a rough " @@ -11528,7 +11537,8 @@ msgstr "" "經典(Classic):標準的均勻隨機噪聲。\n" "柏林(Perlin):提供更平滑且一致的紋理效果。\n" "波狀(Billow):類似柏林噪聲,但紋理較為團塊狀。\n" -"脊狀多重分形(Ridged Multifractal):帶有尖銳、鋸齒狀特徵的紋理,可產生類似大理石的效果。\n" +"脊狀多重分形(Ridged Multifractal):帶有尖銳、鋸齒狀特徵的紋理,可產生類似大" +"理石的效果。\n" "沃羅諾伊(Voronoi):將表面分割成多個區塊,並隨機位移,形成拼貼風格的紋理。" msgid "Classic" @@ -11552,7 +11562,8 @@ msgstr "模糊表面紋理尺寸" msgid "" "The base size of the coherent noise features, in mm. Higher values will " "result in larger features." -msgstr "控制模糊紋理的基礎尺寸(單位:毫米)。數值越大,紋理特徵越明顯、範圍越大。" +msgstr "" +"控制模糊紋理的基礎尺寸(單位:毫米)。數值越大,紋理特徵越明顯、範圍越大。" msgid "Fuzzy Skin Noise Octaves" msgstr "模糊表面紋理噪聲層級" @@ -11560,7 +11571,8 @@ msgstr "模糊表面紋理噪聲層級" msgid "" "The number of octaves of coherent noise to use. Higher values increase the " "detail of the noise, but also increase computation time." -msgstr "設定模糊紋理的噪聲層級數量。較高的值可提升紋理細節,但也會增加運算時間。" +msgstr "" +"設定模糊紋理的噪聲層級數量。較高的值可提升紋理細節,但也會增加運算時間。" msgid "Fuzzy skin noise persistence" msgstr "模糊表面紋理噪聲強度衰減係數" @@ -12256,9 +12268,11 @@ msgid "" "\n" "Allowed values: 0.5-5" msgstr "" -"較低的設定值能讓擠出速率變化更平滑,但會導致 G-code 檔案變大,並增加印表機的運算負擔。\n" +"較低的設定值能讓擠出速率變化更平滑,但會導致 G-code 檔案變大,並增加印表機的" +"運算負擔。\n" "\n" -"預設值為 3,適用於大多數情況。如果您的印表機在列印時出現停頓或卡頓,請提高此數值,以減少擠出速率的頻繁調整。\n" +"預設值為 3,適用於大多數情況。如果您的印表機在列印時出現停頓或卡頓,請提高此" +"數值,以減少擠出速率的頻繁調整。\n" "\n" "可設定範圍:0.5-5" @@ -12271,8 +12285,8 @@ msgid "" "visible overhangs without impacting the print speed of features that will " "not be visible to the user." msgstr "" -"僅在外部輪廓與懸垂部分應用擠出速率平滑處理。" -"這可減少外部可見區域因速度變化過快而產生的瑕疵,而不影響內部結構的列印速度。" +"僅在外部輪廓與懸垂部分應用擠出速率平滑處理。這可減少外部可見區域因速度變化過" +"快而產生的瑕疵,而不影響內部結構的列印速度。" msgid "Minimum speed for part cooling fan" msgstr "物件冷卻風扇的最小轉速" @@ -13077,6 +13091,21 @@ msgstr "" "在 XY 平面中為實現平滑螺旋所允許移動點的最大距離。若以百分比表示,將根據噴嘴" "直徑計算" +#, c-format, boost-format +msgid "" +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." +msgstr "" + +#, c-format, boost-format +msgid "" +"Sets the finishing flow ratio while ending the spiral. Normally the spiral " +"transition scales the flow ratio from 100% to 0% during the last loop which " +"can in some cases lead to under extrusion at the end of the spiral." +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 " @@ -13242,8 +13271,8 @@ msgid "" "Normal (manual) or Tree (manual) is selected, only support enforcers are " "generated" msgstr "" -"選擇「普通 (自動)」或「樹狀 (自動)」時,系統將自動產生支撐結構。若選擇「普通 (自動)」或「樹狀 (自動)」," -"則僅會生成手動設定的支撐區域。" +"選擇「普通 (自動)」或「樹狀 (自動)」時,系統將自動產生支撐結構。若選擇「普通 " +"(自動)」或「樹狀 (自動)」,則僅會生成手動設定的支撐區域。" msgid "Normal (auto)" msgstr "普通 (自動)" @@ -13469,8 +13498,9 @@ msgid "" "If threshold angle is zero, support will be generated for overhangs whose " "overlap is below the threshold. The smaller this value is, the steeper the " "overhang that can be printed without support." -msgstr "當閾值角度設為 0 時,系統將為重疊比例低於該閾值的懸垂部分生成支撐。" -"數值越小,代表可以在不使用支撐的情況下列印更陡峭的懸垂結構。" +msgstr "" +"當閾值角度設為 0 時,系統將為重疊比例低於該閾值的懸垂部分生成支撐。數值越小," +"代表可以在不使用支撐的情況下列印更陡峭的懸垂結構。" msgid "Tree support branch angle" msgstr "樹狀支撐分支角度" @@ -15288,6 +15318,23 @@ msgstr "取消中" msgid "Error uploading to print host" msgstr "上傳到列印設備時發生錯誤" +msgid "" +"The selected bed type does not match the file. Please confirm before " +"starting the print." +msgstr "" + +msgid "Time-lapse" +msgstr "" + +msgid "Heated Bed Leveling" +msgstr "" + +msgid "Textured Build Plate (Side A)" +msgstr "" + +msgid "Smooth Build Plate (Side B)" +msgstr "" + msgid "Unable to perform boolean operation on selected parts" msgstr "無法對所選零件執行布林運算" @@ -16026,7 +16073,7 @@ msgstr "" "HTTP 狀態:%1%\n" "訊息內容:\"%2%\"" -#, possible-boost-format +#, boost-format msgid "" "Parsing of host response failed.\n" "Message body: \"%1%\"\n" @@ -16674,6 +16721,18 @@ msgstr "" "你知道嗎?當列印容易翹曲的材料(如 ABS)時,適當提高熱床溫度\n" "可以降低翹曲的機率。" +#, c-format, boost-format +#~ msgid "" +#~ "When the overhang exceeds this specified threshold, force the cooling fan " +#~ "to run at the 'Overhang Fan Speed' set below. This threshold is expressed " +#~ "as a percentage, indicating the portion of each line's width that is " +#~ "unsupported by the layer beneath it. Setting this value to 0%% forces the " +#~ "cooling fan to run for all outer walls, regardless of the overhang degree." +#~ msgstr "" +#~ "當懸垂超過此設定的閾值時,冷卻風扇將強制以「懸垂風扇轉速」運行。該閾值以百" +#~ "分比表示,代表每條列印線寬中未受下層支撐的比例。若將此值設為 0%%,則冷卻風" +#~ "扇將對所有外牆啟動,不論懸垂角度大小。" + #~ msgid "Orca Slicer" #~ msgstr "Orca Slicer" From ae5d7ea996cabae0d48fa1ddfa3a825b65789de5 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 19 Feb 2025 19:45:33 +0800 Subject: [PATCH 080/129] bump version to 2.3.0-beta --- version.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.inc b/version.inc index a7f65e3ffe..bca3c93b26 100644 --- a/version.inc +++ b/version.inc @@ -10,7 +10,7 @@ endif() if(NOT DEFINED BBL_INTERNAL_TESTING) set(BBL_INTERNAL_TESTING "0") endif() -set(SoftFever_VERSION "2.3.0-dev") +set(SoftFever_VERSION "2.3.0-beta") string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)" SoftFever_VERSION_MATCH ${SoftFever_VERSION}) set(ORCA_VERSION_MAJOR ${CMAKE_MATCH_1}) From fcc3da5800d4c17dda016e9bd3512cf041be6060 Mon Sep 17 00:00:00 2001 From: RikshaDriver Date: Wed, 19 Feb 2025 23:42:14 +1100 Subject: [PATCH 081/129] Merged Orca-Flashforge 1.3 branch + fixes & optimizations Added AD5X & G4P Consolidated/Revised AD3, AD5M & G2S profiles Commenced filament Filament ID & Setting ID corrections --- resources/profiles/Flashforge.json | 638 +++++++++++++++++- .../Flashforge/Flashforge AD5X_cover.png | Bin 0 -> 738612 bytes .../FlashForge PC @FF G4P 0.6 HF nozzle.json | 95 +++ .../FlashForge PC @FF G4P 0.6 nozzle.json | 95 +++ .../FlashForge PC @FF G4P 0.8 HF nozzle.json | 95 +++ .../FlashForge PPS @FF G4P 0.6 nozzle.json | 116 ++++ .../FlashForge PPS @FF G4P 0.8 HF nozzle.json | 116 ++++ .../FlashForge PPS-CF @FF G4P 0.6 nozzle.json | 110 +++ ...e ABS.json => Flashforge ABS @FF AD3.json} | 7 +- ...hforge ABS Basic @FF AD5M 0.25 nozzle.json | 12 + ...hforge ABS Basic @FF AD5X 0.25 nozzle.json | 64 ++ ...shforge ABS Basic @FF AD5X 0.6 nozzle.json | 42 ++ ...shforge ABS Basic @FF AD5X 0.8 nozzle.json | 48 ++ .../Flashforge ABS Basic @FF AD5X.json | 51 ++ ...shforge ABS Basic @FF G4P 0.25 nozzle.json | 44 ++ ...forge ABS Basic @FF G4P 0.6 HF nozzle.json | 104 +++ ...ashforge ABS Basic @FF G4P 0.6 nozzle.json | 108 +++ ...forge ABS Basic @FF G4P 0.8 HF nozzle.json | 107 +++ .../Flashforge ABS Basic @FF G4P HF.json | 77 +++ .../Flashforge ABS Basic @FF G4P.json | 35 + .../filament/Flashforge ABS Basic @G3U.json | 13 + .../filament/Flashforge ABS Basic.json | 13 + .../Flashforge ABS-CF @FF G4P 0.6 nozzle.json | 107 +++ .../filament/Flashforge ABS-CF @FF G4P.json | 59 ++ ...hforge ASA Basic @FF AD5M 0.25 nozzle.json | 12 + ...hforge ASA Basic @FF AD5X 0.25 nozzle.json | 67 ++ ...shforge ASA Basic @FF AD5X 0.6 nozzle.json | 42 ++ ...shforge ASA Basic @FF AD5X 0.8 nozzle.json | 42 ++ .../Flashforge ASA Basic @FF AD5X.json | 51 ++ ...shforge ASA Basic @FF G4P 0.25 nozzle.json | 50 ++ ...forge ASA Basic @FF G4P 0.6 HF nozzle.json | 107 +++ ...ashforge ASA Basic @FF G4P 0.6 nozzle.json | 110 +++ ...forge ASA Basic @FF G4P 0.8 HF nozzle.json | 110 +++ .../Flashforge ASA Basic @FF G4P HF.json | 80 +++ .../Flashforge ASA Basic @FF G4P.json | 41 ++ .../filament/Flashforge ASA Basic @G3U.json | 13 + .../filament/Flashforge ASA Basic.json | 13 + .../filament/Flashforge ASA-CF.json | 52 ++ ...rge Generic ABS @FF AD5M 0.25 Nozzle.json} | 8 +- .../filament/Flashforge Generic ABS @G3U.json | 4 +- .../filament/Flashforge Generic ABS.json | 9 +- ...rge Generic ASA @FF AD5M 0.25 Nozzle.json} | 8 +- .../filament/Flashforge Generic ASA @G3U.json | 2 + .../filament/Flashforge Generic ASA.json | 7 +- .../filament/Flashforge Generic HIPS.json | 4 +- ... Generic HS PLA @FF AD5M 0.25 Nozzle.json} | 8 +- .../filament/Flashforge Generic HS PLA.json | 5 +- ...ge Generic PETG @FF AD5M 0.25 Nozzle.json} | 8 +- .../Flashforge Generic PETG @G3U.json | 2 + .../Flashforge Generic PETG-CF @G3U.json | 2 + .../filament/Flashforge Generic PETG.json | 14 +- ...rge Generic PLA @FF AD5M 0.25 Nozzle.json} | 10 +- ...lashforge Generic PLA @G3U 0.6 Nozzle.json | 5 +- ...lashforge Generic PLA @G3U 0.8 Nozzle.json | 5 +- .../filament/Flashforge Generic PLA @G3U.json | 9 +- .../Flashforge Generic PLA-CF @G3U.json | 2 + ...eneric PLA-SILK @FF AD5M 0.25 Nozzle.json} | 5 +- .../filament/Flashforge Generic PLA-Silk.json | 5 +- .../filament/Flashforge Generic PLA.json | 9 +- .../filament/Flashforge Generic PVA.json | 2 + .../Flashforge HIPS @FF G4P 0.6 nozzle.json | 107 +++ ...Flashforge HIPS @FF G4P 0.8 HF nozzle.json | 107 +++ .../filament/Flashforge HIPS @FF G4P HF.json | 53 ++ .../filament/Flashforge HIPS @FF G4P.json | 92 +++ .../filament/Flashforge HIPS @G3U.json | 13 + ...ashforge HS PETG @FF AD5M 0.25 nozzle.json | 12 + ...ashforge HS PETG @FF AD5X 0.25 nozzle.json | 64 ++ ...lashforge HS PETG @FF AD5X 0.6 nozzle.json | 54 ++ ...lashforge HS PETG @FF AD5X 0.8 nozzle.json | 54 ++ .../filament/Flashforge HS PETG @FF AD5X.json | 55 ++ ...lashforge HS PETG @FF G4P 0.25 nozzle.json | 62 ++ ...shforge HS PETG @FF G4P 0.6 HF nozzle.json | 74 ++ ...Flashforge HS PETG @FF G4P 0.6 nozzle.json | 89 +++ ...shforge HS PETG @FF G4P 0.8 HF nozzle.json | 89 +++ .../Flashforge HS PETG @FF G4P HF.json | 95 +++ .../filament/Flashforge HS PETG @FF G4P.json | 50 ++ .../filament/Flashforge HS PETG @G3U.json | 13 + .../filament/Flashforge HS PETG.json | 12 + ...lashforge HS PLA @FF AD5X 0.25 nozzle.json | 61 ++ ...Flashforge HS PLA @FF AD5X 0.6 nozzle.json | 45 ++ ...Flashforge HS PLA @FF AD5X 0.8 nozzle.json | 45 ++ .../filament/Flashforge HS PLA @FF AD5X.json | 46 ++ ...Flashforge HS PLA @FF G4P 0.25 nozzle.json | 59 ++ ...ashforge HS PLA @FF G4P 0.6 HF nozzle.json | 74 ++ .../Flashforge HS PLA @FF G4P 0.6 nozzle.json | 74 ++ ...ashforge HS PLA @FF G4P 0.8 HF nozzle.json | 74 ++ .../Flashforge HS PLA @FF G4P HF.json | 104 +++ .../filament/Flashforge HS PLA @FF G4P.json | 53 ++ .../filament/Flashforge HS PLA @G3U.json | 13 + ...HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json | 77 +++ ...Flashforge HS PLA Burnt Ti @FF G4P HF.json | 104 +++ ...rge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json | 74 ++ ... HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json | 74 ++ .../filament/Flashforge HS PLA.json | 12 + .../Flashforge PA @FF G4P 0.6 HF nozzle.json | 119 ++++ .../filament/Flashforge PA @FF G4P HF.json | 89 +++ .../filament/Flashforge PA @FF G4P.json | 71 ++ .../filament/Flashforge PA-CF @FF G4P.json | 89 +++ .../filament/Flashforge PA12-CF.json | 55 ++ .../filament/Flashforge PA6-CF.json | 52 ++ .../filament/Flashforge PA66-CF.json | 52 ++ .../filament/Flashforge PAHT-CF @FF G4P.json | 89 +++ .../filament/Flashforge PET @FF G4P.json | 83 +++ .../filament/Flashforge PET-CF @FF G4P.json | 83 +++ .../filament/Flashforge PET-CF.json | 46 ++ ...PETG.json => Flashforge PETG @FF AD3.json} | 7 +- ...forge PETG Basic @FF AD5M 0.25 nozzle.json | 12 + .../filament/Flashforge PETG Basic @G3U.json | 13 + .../filament/Flashforge PETG Basic.json | 31 + ...shforge PETG Pro @FF AD5M 0.25 nozzle.json | 12 + ...shforge PETG Pro @FF AD5X 0.25 nozzle.json | 61 ++ ...ashforge PETG Pro @FF AD5X 0.6 nozzle.json | 48 ++ ...ashforge PETG Pro @FF AD5X 0.8 nozzle.json | 48 ++ .../Flashforge PETG Pro @FF AD5X.json | 52 ++ ...ashforge PETG Pro @FF G4P 0.25 nozzle.json | 56 ++ ...hforge PETG Pro @FF G4P 0.6 HF nozzle.json | 56 ++ ...lashforge PETG Pro @FF G4P 0.6 nozzle.json | 89 +++ ...hforge PETG Pro @FF G4P 0.8 HF nozzle.json | 89 +++ .../Flashforge PETG Pro @FF G4P HF.json | 98 +++ .../filament/Flashforge PETG Pro @FF G4P.json | 44 ++ .../filament/Flashforge PETG Pro @G3U.json | 13 + .../filament/Flashforge PETG Pro.json | 31 + ...PETG Transparent @FF AD5M 0.25 nozzle.json | 12 + ...PETG Transparent @FF AD5X 0.25 nozzle.json | 61 ++ ... PETG Transparent @FF AD5X 0.6 nozzle.json | 48 ++ ... PETG Transparent @FF AD5X 0.8 nozzle.json | 48 ++ .../Flashforge PETG Transparent @FF AD5X.json | 52 ++ ... PETG Transparent @FF G4P 0.25 nozzle.json | 56 ++ ...ETG Transparent @FF G4P 0.6 HF nozzle.json | 56 ++ ...e PETG Transparent @FF G4P 0.6 nozzle.json | 89 +++ ...ETG Transparent @FF G4P 0.8 HF nozzle.json | 89 +++ ...lashforge PETG Transparent @FF G4P HF.json | 98 +++ .../Flashforge PETG Transparent @FF G4P.json | 44 ++ .../Flashforge PETG Transparent @G3U.json | 13 + .../filament/Flashforge PETG Transparent.json | 31 + ...lashforge PETG-CF @FF AD5X 0.6 nozzle.json | 42 ++ ...lashforge PETG-CF @FF AD5X 0.8 nozzle.json | 42 ++ .../filament/Flashforge PETG-CF @FF AD5X.json | 46 ++ ...Flashforge PETG-CF @FF G4P 0.6 nozzle.json | 89 +++ .../filament/Flashforge PETG-CF @FF G4P.json | 56 ++ .../filament/Flashforge PETG-CF @G3U.json | 13 + .../filament/Flashforge PETG-CF.json | 12 + ...e PLA.json => Flashforge PLA @FF AD3.json} | 7 +- ...hforge PLA Basic @FF AD5M 0.25 nozzle.json | 12 + ...hforge PLA Basic @FF AD5X 0.25 nozzle.json | 61 ++ ...shforge PLA Basic @FF AD5X 0.6 nozzle.json | 51 ++ ...shforge PLA Basic @FF AD5X 0.8 nozzle.json | 51 ++ .../Flashforge PLA Basic @FF AD5X.json | 46 ++ ...shforge PLA Basic @FF G4P 0.25 nozzle.json | 59 ++ ...forge PLA Basic @FF G4P 0.6 HF nozzle.json | 77 +++ ...ashforge PLA Basic @FF G4P 0.6 nozzle.json | 74 ++ ...forge PLA Basic @FF G4P 0.8 HF nozzle.json | 74 ++ .../Flashforge PLA Basic @FF G4P HF.json | 101 +++ .../Flashforge PLA Basic @FF G4P.json | 56 ++ .../filament/Flashforge PLA Basic @G3U.json | 14 + .../filament/Flashforge PLA Basic.json | 16 + ...forge PLA Buint Ti @FF G4P 0.6 nozzle.json | 80 +++ ...forge PLA Buint Ti @FF G4P 0.8 nozzle.json | 80 +++ ...PLA Color Change @FF AD5M 0.25 nozzle.json | 12 + ...PLA Color Change @FF AD5X 0.25 nozzle.json | 61 ++ ... PLA Color Change @FF AD5X 0.6 nozzle.json | 51 ++ ... PLA Color Change @FF AD5X 0.8 nozzle.json | 51 ++ .../Flashforge PLA Color Change @FF AD5X.json | 46 ++ ... PLA Color Change @FF G4P 0.25 nozzle.json | 59 ++ ...LA Color Change @FF G4P 0.6 HF nozzle.json | 77 +++ ...lashforge PLA Color Change @FF G4P HF.json | 101 +++ .../Flashforge PLA Color Change @FF G4P.json | 56 ++ .../Flashforge PLA Color Change @G3U.json | 13 + .../filament/Flashforge PLA Color Change.json | 12 + ...forge PLA Galaxy @FF AD5M 0.25 nozzle.json | 12 + ...forge PLA Galaxy @FF AD5X 0.25 nozzle.json | 61 ++ ...hforge PLA Galaxy @FF AD5X 0.6 nozzle.json | 51 ++ ...hforge PLA Galaxy @FF AD5X 0.8 nozzle.json | 51 ++ .../Flashforge PLA Galaxy @FF AD5X.json | 46 ++ ...hforge PLA Galaxy @FF G4P 0.25 nozzle.json | 59 ++ ...orge PLA Galaxy @FF G4P 0.6 HF nozzle.json | 77 +++ ...shforge PLA Galaxy @FF G4P 0.6 nozzle.json | 80 +++ ...orge PLA Galaxy @FF G4P 0.8 HF nozzle.json | 80 +++ .../Flashforge PLA Galaxy @FF G4P HF.json | 101 +++ .../Flashforge PLA Galaxy @FF G4P.json | 56 ++ .../filament/Flashforge PLA Galaxy @G3U.json | 13 + .../filament/Flashforge PLA Galaxy.json | 12 + ...rge PLA Luminous @FF AD5M 0.25 nozzle.json | 12 + ...rge PLA Luminous @FF AD5X 0.25 nozzle.json | 61 ++ ...orge PLA Luminous @FF AD5X 0.6 nozzle.json | 51 ++ ...orge PLA Luminous @FF AD5X 0.8 nozzle.json | 51 ++ .../Flashforge PLA Luminous @FF AD5X.json | 46 ++ ...orge PLA Luminous @FF G4P 0.25 nozzle.json | 59 ++ ...ge PLA Luminous @FF G4P 0.6 HF nozzle.json | 77 +++ .../Flashforge PLA Luminous @FF G4P HF.json | 101 +++ .../Flashforge PLA Luminous @FF G4P.json | 56 ++ .../Flashforge PLA Luminous @G3U.json | 13 + .../filament/Flashforge PLA Luminous.json | 12 + ...hforge PLA Matte @FF AD5M 0.25 nozzle.json | 12 + ...hforge PLA Matte @FF AD5X 0.25 nozzle.json | 61 ++ ...shforge PLA Matte @FF AD5X 0.6 nozzle.json | 51 ++ ...shforge PLA Matte @FF AD5X 0.8 nozzle.json | 51 ++ .../Flashforge PLA Matte @FF AD5X.json | 46 ++ ...shforge PLA Matte @FF G4P 0.25 nozzle.json | 59 ++ ...forge PLA Matte @FF G4P 0.6 HF nozzle.json | 77 +++ ...ashforge PLA Matte @FF G4P 0.6 nozzle.json | 80 +++ ...forge PLA Matte @FF G4P 0.8 HF nozzle.json | 80 +++ .../Flashforge PLA Matte @FF G4P HF.json | 101 +++ .../Flashforge PLA Matte @FF G4P.json | 56 ++ .../filament/Flashforge PLA Matte @G3U.json | 13 + .../filament/Flashforge PLA Matte.json | 15 + ...hforge PLA Metal @FF AD5M 0.25 nozzle.json | 12 + ...hforge PLA Metal @FF AD5X 0.25 nozzle.json | 61 ++ ...shforge PLA Metal @FF AD5X 0.6 nozzle.json | 51 ++ ...shforge PLA Metal @FF AD5X 0.8 nozzle.json | 51 ++ .../Flashforge PLA Metal @FF AD5X.json | 46 ++ ...shforge PLA Metal @FF G4P 0.25 nozzle.json | 59 ++ ...forge PLA Metal @FF G4P 0.6 HF nozzle.json | 77 +++ ...ashforge PLA Metal @FF G4P 0.6 nozzle.json | 80 +++ ...forge PLA Metal @FF G4P 0.8 HF nozzle.json | 80 +++ .../Flashforge PLA Metal @FF G4P HF.json | 101 +++ .../Flashforge PLA Metal @FF G4P.json | 56 ++ .../filament/Flashforge PLA Metal @G3U.json | 13 + .../filament/Flashforge PLA Metal.json | 12 + ...ashforge PLA Pro @FF AD5M 0.25 nozzle.json | 12 + ...ashforge PLA Pro @FF AD5X 0.25 nozzle.json | 61 ++ ...lashforge PLA Pro @FF AD5X 0.6 nozzle.json | 51 ++ ...lashforge PLA Pro @FF AD5X 0.8 nozzle.json | 51 ++ .../filament/Flashforge PLA Pro @FF AD5X.json | 46 ++ ...lashforge PLA Pro @FF G4P 0.25 nozzle.json | 59 ++ ...shforge PLA Pro @FF G4P 0.6 HF nozzle.json | 77 +++ ...Flashforge PLA Pro @FF G4P 0.6 nozzle.json | 80 +++ ...shforge PLA Pro @FF G4P 0.8 HF nozzle.json | 80 +++ .../Flashforge PLA Pro @FF G4P HF.json | 101 +++ .../filament/Flashforge PLA Pro @FF G4P.json | 56 ++ .../filament/Flashforge PLA Pro @G3U.json | 13 + .../filament/Flashforge PLA Pro.json | 12 + .../filament/Flashforge PLA Silk @G3U.json | 13 + ...shforge PLA Silk @FF AD5M 0.25 nozzle.json | 12 + ...shforge PLA Silk @FF AD5X 0.25 nozzle.json | 64 ++ ...ashforge PLA Silk @FF AD5X 0.6 nozzle.json | 51 ++ ...ashforge PLA Silk @FF AD5X 0.8 nozzle.json | 51 ++ .../Flashforge PLA Silk @FF AD5X.json | 52 ++ ...ashforge PLA Silk @FF G4P 0.25 nozzle.json | 59 ++ ...hforge PLA Silk @FF G4P 0.6 HF nozzle.json | 71 ++ ...lashforge PLA Silk @FF G4P 0.6 nozzle.json | 77 +++ ...hforge PLA Silk @FF G4P 0.8 HF nozzle.json | 77 +++ .../Flashforge PLA Silk @FF G4P HF.json | 101 +++ .../filament/Flashforge PLA Silk @FF G4P.json | 53 ++ .../filament/Flashforge PLA Silk.json | 12 + ...orge PLA Sparkle @FF AD5M 0.25 nozzle.json | 12 + ...orge PLA Sparkle @FF AD5X 0.25 nozzle.json | 61 ++ ...forge PLA Sparkle @FF AD5X 0.6 nozzle.json | 51 ++ ...forge PLA Sparkle @FF AD5X 0.8 nozzle.json | 51 ++ .../Flashforge PLA Sparkle @FF AD5X.json | 46 ++ ...forge PLA Sparkle @FF G4P 0.25 nozzle.json | 59 ++ ...rge PLA Sparkle @FF G4P 0.6 HF nozzle.json | 77 +++ .../Flashforge PLA Sparkle @FF G4P HF.json | 101 +++ .../Flashforge PLA Sparkle @FF G4P.json | 56 ++ .../filament/Flashforge PLA Sparkle @G3U.json | 13 + .../filament/Flashforge PLA Sparkle.json | 12 + ...Flashforge PLA-CF @FF AD5X 0.6 nozzle.json | 30 + ...Flashforge PLA-CF @FF AD5X 0.8 nozzle.json | 30 + .../filament/Flashforge PLA-CF @FF AD5X.json | 31 + .../Flashforge PLA-CF @FF G4P 0.6 nozzle.json | 83 +++ .../filament/Flashforge PLA-CF @FF G4P.json | 53 ++ .../filament/Flashforge PLA-CF @G3U.json | 13 + .../filament/Flashforge PLA-CF.json | 12 + .../filament/Flashforge PPA-CF.json | 52 ++ .../filament/Flashforge PPA-GF.json | 58 ++ .../filament/Flashforge PPS @FF G4P.json | 95 +++ .../filament/Flashforge PPS-CF @FF G4P.json | 95 +++ .../filament/Flashforge PPS-CF.json | 52 ++ .../filament/Flashforge PVA @G3U.json | 13 + ...lashforge TPU 64D @FF AD5X 0.6 nozzle.json | 41 ++ ...lashforge TPU 64D @FF AD5X 0.8 nozzle.json | 41 ++ .../filament/Flashforge TPU 64D @FF AD5X.json | 47 ++ ...lashforge TPU 95A @FF AD5X 0.6 nozzle.json | 48 ++ ...lashforge TPU 95A @FF AD5X 0.8 nozzle.json | 48 ++ .../filament/Flashforge TPU 95A @FF AD5X.json | 52 ++ ...shforge TPU 95A @FF G4P 0.6 HF nozzle.json | 110 +++ ...Flashforge TPU 95A @FF G4P 0.6 nozzle.json | 77 +++ ...shforge TPU 95A @FF G4P 0.8 HF nozzle.json | 77 +++ .../filament/Flashforge TPU 95A @FF G4P.json | 50 ++ .../filament/Flashforge TPU 95A.json | 12 + .../filament/FusRock Generic PAHT-CF.json | 6 +- .../filament/FusRock Generic PET-CF.json | 2 + .../FusRock PAHT @FF G4P 0.6 nozzle.json | 44 ++ .../FusRock PAHT @FF G4P 0.8 HF nozzle.json | 44 ++ .../FusRock PAHT-CF @FF G4P 0.6 nozzle.json | 50 ++ .../FusRock PET @FF G4P 0.6 HF nozzle.json | 53 ++ .../FusRock PET @FF G4P 0.6 nozzle.json | 53 ++ .../FusRock PET @FF G4P 0.8 HF nozzle.json | 53 ++ .../FusRock PET-CF @FF G4P 0.6 nozzle.json | 41 ++ .../Polymaker CoPA @FF G4P 0.6 HF nozzle.json | 89 +++ .../Polymaker CoPA @FF G4P 0.6 nozzle.json | 71 ++ .../Polymaker CoPA @FF G4P 0.8 HF nozzle.json | 71 ++ .../filament/fdm_filament_common.json | 4 +- .../flashforge_ad5x_buildplate_texture.png | Bin 0 -> 75637 bytes .../flashforge_g4pro_buildplate_model.stl | Bin 0 -> 1360084 bytes .../flashforge_g4pro_buildplate_texture.png | Bin 0 -> 89099 bytes .../machine/FlashForge AD5X 0.25 nozzle.json | 233 +++++++ .../machine/Flashforge AD5X 0.4 nozzle.json | 233 +++++++ .../machine/Flashforge AD5X 0.6 nozzle.json | 233 +++++++ .../machine/Flashforge AD5X 0.8 nozzle.json | 233 +++++++ .../Flashforge/machine/Flashforge AD5X.json | 14 + .../Flashforge Adventurer 3 Series.json | 1 + .../machine/Flashforge Adventurer 5M Pro.json | 3 +- .../machine/Flashforge Adventurer 5M.json | 1 + .../Flashforge Guider 3 Ultra 0.4 Nozzle.json | 2 +- .../Flashforge Guider4 Pro 0.25 nozzle.json | 226 +++++++ .../Flashforge Guider4 Pro 0.4 HF nozzle.json | 226 +++++++ .../Flashforge Guider4 Pro 0.4 nozzle.json | 226 +++++++ .../Flashforge Guider4 Pro 0.6 HF nozzle.json | 226 +++++++ .../Flashforge Guider4 Pro 0.6 nozzle.json | 226 +++++++ .../Flashforge Guider4 Pro 0.8 HF nozzle.json | 226 +++++++ .../machine/Flashforge Guider4 Pro.json | 12 + .../machine/fdm_adventurer5m_common.json | 1 + .../machine/fdm_guider3_common.json | 1 + .../0.10mm Standard @FF AD5X 0.25 nozzle.json | 25 + .../0.10mm Standard @FF G4P 0.25 nozzle.json | 29 + ...12mm Fine @Flashforge AD5M 0.4 Nozzle.json | 3 +- ... Fine @Flashforge AD5M Pro 0.4 Nozzle.json | 3 +- ....12mm Fine @Flashforge G3U 0.4 Nozzle.json | 5 +- .../0.12mm Standard @FF AD5X 0.25 nozzle.json | 24 + .../0.12mm Standard @FF G4P 0.25 nozzle.json | 28 + ...Standard @Flashforge AD5M 0.25 Nozzle.json | 88 +-- ...dard @Flashforge AD5M Pro 0.25 Nozzle.json | 88 +-- .../0.14mm Standard @FF AD5X 0.25 nozzle.json | 24 + .../0.14mm Standard @FF G4P 0.25 nozzle.json | 29 + .../process/0.16mm Standard @FF AD5X.json | 30 + .../process/0.16mm Standard @FF G4P HF.json | 43 ++ .../process/0.16mm Standard @FF G4P.json | 35 + .../0.18mm Fine @FF AD5X 0.6 nozzle.json | 25 + ...18mm Fine @Flashforge AD5M 0.6 Nozzle.json | 3 +- ... Fine @Flashforge AD5M Pro 0.6 Nozzle.json | 3 +- .../process/0.20mm Standard @FF AD5X.json | 28 + .../process/0.20mm Standard @FF G4P HF.json | 39 ++ .../0.20mm Standard @FF G4P PLA600.json | 42 ++ .../process/0.20mm Standard @FF G4P.json | 31 + ... Standard @Flashforge AD5M 0.4 Nozzle.json | 12 +- ...ndard @Flashforge AD5M Pro 0.4 Nozzle.json | 11 +- ...m Standard @Flashforge G3U 0.4 Nozzle.json | 11 +- ...ng plastic @Flashforge G3U 0.4 Nozzle.json | 40 ++ .../process/0.24mm Draft @FF AD5X.json | 30 + ...4mm Draft @Flashforge AD5M 0.4 Nozzle.json | 5 +- ...Draft @Flashforge AD5M Pro 0.4 Nozzle.json | 5 +- ...24mm Draft @Flashforge G3U 0.4 Nozzle.json | 3 +- .../0.24mm Fine @FF AD5X 0.8 nozzle.json | 26 + .../process/0.24mm Standard @FF G4P HF.json | 43 ++ .../process/0.24mm Standard @FF G4P.json | 35 + ...0.25mm Standard @FF G4P 0.6 HF nozzle.json | 74 ++ .../0.25mm Standard @FF G4P 0.6 nozzle.json | 68 ++ .../0.30mm Standard @FF AD5X 0.6 nozzle.json | 25 + .../0.30mm Standard @FF G4P 0.6 nozzle.json | 63 ++ ... Standard @Flashforge AD5M 0.6 Nozzle.json | 10 +- ...ndard @Flashforge AD5M Pro 0.6 Nozzle.json | 10 +- ...0.32mm Standard @FF G4P 0.8 HF nozzle.json | 65 ++ ...0.36mm Standard @FF G4P 0.6 HF nozzle.json | 72 ++ .../0.36mm Standard @FF G4P 0.6 nozzle.json | 64 ++ .../0.3mm Standard @FF G4P 0.6 HF nozzle.json | 72 ++ .../0.40mm Standard @FF AD5X 0.8 nozzle.json | 27 + ...0.40mm Standard @FF G4P 0.8 HF nozzle.json | 64 ++ ... Standard @Flashforge AD5M 0.8 Nozzle.json | 70 +- ...ndard @Flashforge AD5M Pro 0.8 Nozzle.json | 70 +- .../0.42mm Draft @FF AD5X 0.6 nozzle.json | 25 + ...2mm Draft @Flashforge AD5M 0.6 Nozzle.json | 3 +- ...Draft @Flashforge AD5M Pro 0.6 Nozzle.json | 3 +- ...0.42mm Standard @FF G4P 0.6 HF nozzle.json | 72 ++ .../0.42mm Standard @FF G4P 0.6 nozzle.json | 64 ++ ...0.48mm Standard @FF G4P 0.8 HF nozzle.json | 64 ++ .../0.56mm Draft @FF AD5X 0.8 nozzle.json | 29 + 367 files changed, 19450 insertions(+), 250 deletions(-) create mode 100644 resources/profiles/Flashforge/Flashforge AD5X_cover.png create mode 100644 resources/profiles/Flashforge/filament/FlashForge PC @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/FlashForge PC @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/FlashForge PC @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/FlashForge PPS @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/FlashForge PPS @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/FlashForge PPS-CF @FF G4P 0.6 nozzle.json rename resources/profiles/Flashforge/filament/{Flashforge ABS.json => Flashforge ABS @FF AD3.json} (91%) create mode 100644 resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ABS Basic @G3U.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ABS Basic.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ASA Basic @G3U.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ASA Basic.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ASA-CF.json rename resources/profiles/Flashforge/filament/{Flashforge ABS @FF AD5M 0.25 Nozzle.json => Flashforge Generic ABS @FF AD5M 0.25 Nozzle.json} (68%) rename resources/profiles/Flashforge/filament/{Flashforge ASA @FF AD5M 0.25 Nozzle.json => Flashforge Generic ASA @FF AD5M 0.25 Nozzle.json} (72%) rename resources/profiles/Flashforge/filament/{Flashforge HS PLA @FF AD5M 0.25 Nozzle.json => Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle.json} (78%) rename resources/profiles/Flashforge/filament/{Flashforge PETG @FF AD5M 0.25 Nozzle.json => Flashforge Generic PETG @FF AD5M 0.25 Nozzle.json} (66%) rename resources/profiles/Flashforge/filament/{Flashforge PLA @FF AD5M 0.25 Nozzle.json => Flashforge Generic PLA @FF AD5M 0.25 Nozzle.json} (74%) rename resources/profiles/Flashforge/filament/{Flashforge PLA-SILK @FF AD5M 0.25 Nozzle.json => Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle.json} (85%) create mode 100644 resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HIPS @G3U.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5M 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PETG @G3U.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PETG.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PLA @G3U.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PLA.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PA @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PA @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PA @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PA-CF @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PA12-CF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PA6-CF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PA66-CF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PAHT-CF @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PET @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PET-CF @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PET-CF.json rename resources/profiles/Flashforge/filament/{Flashforge PETG.json => Flashforge PETG @FF AD3.json} (93%) create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Basic @G3U.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Basic.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Pro @G3U.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Pro.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Transparent @G3U.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG Transparent.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG-CF @G3U.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG-CF.json rename resources/profiles/Flashforge/filament/{Flashforge PLA.json => Flashforge PLA @FF AD3.json} (91%) create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Basic @G3U.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Basic.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Buint Ti @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Buint Ti @FF G4P 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Color Change @G3U.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Color Change.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @G3U.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Galaxy.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Luminous @G3U.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Luminous.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Matte @G3U.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Matte.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Metal @G3U.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Metal.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Pro @G3U.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Pro.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Silk @G3U.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Silk.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @G3U.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA Sparkle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA-CF @G3U.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA-CF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PPA-CF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PPA-GF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PPS @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PPS-CF.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PVA @G3U.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge TPU 64D @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge TPU 64D @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge TPU 64D @FF AD5X.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge TPU 95A.json create mode 100644 resources/profiles/Flashforge/filament/FusRock PAHT @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/FusRock PAHT @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/FusRock PET @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/FusRock PET @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/FusRock PET @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/FusRock PET-CF @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/flashforge_ad5x_buildplate_texture.png create mode 100644 resources/profiles/Flashforge/flashforge_g4pro_buildplate_model.stl create mode 100644 resources/profiles/Flashforge/flashforge_g4pro_buildplate_texture.png create mode 100644 resources/profiles/Flashforge/machine/FlashForge AD5X 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/machine/Flashforge AD5X 0.4 nozzle.json create mode 100644 resources/profiles/Flashforge/machine/Flashforge AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/machine/Flashforge AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/machine/Flashforge AD5X.json create mode 100644 resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 HF nozzle.json create mode 100644 resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 nozzle.json create mode 100644 resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/machine/Flashforge Guider4 Pro.json create mode 100644 resources/profiles/Flashforge/process/0.10mm Standard @FF AD5X 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.10mm Standard @FF G4P 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.12mm Standard @FF AD5X 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.12mm Standard @FF G4P 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.14mm Standard @FF AD5X 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.14mm Standard @FF G4P 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.16mm Standard @FF AD5X.json create mode 100644 resources/profiles/Flashforge/process/0.16mm Standard @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/process/0.16mm Standard @FF G4P.json create mode 100644 resources/profiles/Flashforge/process/0.18mm Fine @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.20mm Standard @FF AD5X.json create mode 100644 resources/profiles/Flashforge/process/0.20mm Standard @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/process/0.20mm Standard @FF G4P PLA600.json create mode 100644 resources/profiles/Flashforge/process/0.20mm Standard @FF G4P.json create mode 100644 resources/profiles/Flashforge/process/0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.24mm Draft @FF AD5X.json create mode 100644 resources/profiles/Flashforge/process/0.24mm Fine @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.24mm Standard @FF G4P HF.json create mode 100644 resources/profiles/Flashforge/process/0.24mm Standard @FF G4P.json create mode 100644 resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.30mm Standard @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.30mm Standard @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.32mm Standard @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.3mm Standard @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.40mm Standard @FF AD5X 0.8 nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.40mm Standard @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.42mm Draft @FF AD5X 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 HF nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.48mm Standard @FF G4P 0.8 HF nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.56mm Draft @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge.json b/resources/profiles/Flashforge.json index 44854d0a5d..24a53d97c6 100644 --- a/resources/profiles/Flashforge.json +++ b/resources/profiles/Flashforge.json @@ -12,6 +12,10 @@ { "name": "Flashforge Adventurer 5M Pro", "sub_path": "machine/Flashforge Adventurer 5M Pro.json" + }, + { + "name": "Flashforge AD5X", + "sub_path":"machine/Flashforge AD5X.json" }, { "name": "Flashforge Adventurer 3 Series", @@ -214,6 +218,58 @@ { "name": "0.12mm Detail @Flashforge Guider 2s 0.4 nozzle", "sub_path": "process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle", + "sub_path":"process/0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle.json" + }, + { + "name": "0.16mm Standard @FF AD5X", + "sub_path":"process/0.16mm Standard @FF AD5X.json" + }, + { + "name": "0.20mm Standard @FF AD5X", + "sub_path":"process/0.20mm Standard @FF AD5X.json" + }, + { + "name": "0.24mm Draft @FF AD5X", + "sub_path":"process/0.24mm Draft @FF AD5X.json" + }, + { + "name": "0.10mm Standard @FF AD5X 0.25 nozzle", + "sub_path":"process/0.10mm Standard @FF AD5X 0.25 nozzle.json" + }, + { + "name": "0.12mm Standard @FF AD5X 0.25 nozzle", + "sub_path":"process/0.12mm Standard @FF AD5X 0.25 nozzle.json" + }, + { + "name": "0.14mm Standard @FF AD5X 0.25 nozzle", + "sub_path":"process/0.14mm Standard @FF AD5X 0.25 nozzle.json" + }, + { + "name": "0.18mm Fine @FF AD5X 0.6 nozzle", + "sub_path":"process/0.18mm Fine @FF AD5X 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @FF AD5X 0.6 nozzle", + "sub_path":"process/0.30mm Standard @FF AD5X 0.6 nozzle.json" + }, + { + "name": "0.42mm Draft @FF AD5X 0.6 nozzle", + "sub_path":"process/0.42mm Draft @FF AD5X 0.6 nozzle.json" + }, + { + "name": "0.24mm Fine @FF AD5X 0.8 nozzle", + "sub_path":"process/0.24mm Fine @FF AD5X 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @FF AD5X 0.8 nozzle", + "sub_path":"process/0.40mm Standard @FF AD5X 0.8 nozzle.json" + }, + { + "name": "0.56mm Draft @FF AD5X 0.8 nozzle", + "sub_path":"process/0.56mm Draft @FF AD5X 0.8 nozzle.json" } ], "filament_list": [ @@ -246,24 +302,24 @@ "sub_path": "filament/Flashforge Generic ABS.json" }, { - "name": "Flashforge ABS @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge ABS @FF AD5M 0.25 Nozzle.json" + "name": "Flashforge Generic ABS @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Flashforge Generic ABS @FF AD5M 0.25 Nozzle.json" }, { "name": "Flashforge Generic PETG", "sub_path": "filament/Flashforge Generic PETG.json" }, { - "name": "Flashforge PETG @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge PETG @FF AD5M 0.25 Nozzle.json" + "name": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Flashforge Generic PETG @FF AD5M 0.25 Nozzle.json" }, { "name": "Flashforge Generic PLA", "sub_path": "filament/Flashforge Generic PLA.json" }, { - "name": "Flashforge PLA @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge PLA @FF AD5M 0.25 Nozzle.json" + "name": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Flashforge Generic PLA @FF AD5M 0.25 Nozzle.json" }, { "name": "Flashforge Generic PLA-CF10", @@ -274,24 +330,24 @@ "sub_path": "filament/Flashforge Generic PLA-Silk.json" }, { - "name": "Flashforge PLA-SILK @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge PLA-SILK @FF AD5M 0.25 Nozzle.json" + "name": "Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle.json" }, { "name": "Flashforge Generic HS PLA", "sub_path": "filament/Flashforge Generic HS PLA.json" }, { - "name": "Flashforge HS PLA @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge HS PLA @FF AD5M 0.25 Nozzle.json" + "name": "Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle.json" }, { "name": "Flashforge Generic ASA", "sub_path": "filament/Flashforge Generic ASA.json" }, { - "name": "Flashforge ASA @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge ASA @FF AD5M 0.25 Nozzle.json" + "name": "Flashforge Generic ASA @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Flashforge Generic ASA @FF AD5M 0.25 Nozzle.json" }, { "name": "Flashforge Generic PETG-CF10", @@ -303,15 +359,15 @@ }, { "name": "Flashforge ABS", - "sub_path": "filament/Flashforge ABS.json" + "sub_path": "filament/Flashforge ABS @FF AD3.json" }, { "name": "Flashforge PETG", - "sub_path": "filament/Flashforge PETG.json" + "sub_path": "filament/Flashforge PETG @FF AD3.json" }, { "name": "Flashforge PLA", - "sub_path": "filament/Flashforge PLA.json" + "sub_path": "filament/Flashforge PLA @FF AD3.json" }, { "name": "Polymaker Generic S1", @@ -440,6 +496,542 @@ { "name": "Flashforge Generic PVA", "sub_path": "filament/Flashforge Generic PVA.json" + }, + { + "name": "Flashforge HS PETG", + "sub_path":"filament/Flashforge HS PETG.json" + }, + { + "name": "Flashforge HS PLA", + "sub_path":"filament/Flashforge HS PLA.json" + }, + { + "name": "Flashforge PETG Basic", + "sub_path":"filament/Flashforge PETG Basic.json" + }, + { + "name": "Flashforge PETG Pro", + "sub_path":"filament/Flashforge PETG Pro.json" + }, + { + "name": "Flashforge PETG Transparent", + "sub_path":"filament/Flashforge PETG Transparent.json" + }, + { + "name": "Flashforge PETG-CF", + "sub_path":"filament/Flashforge PETG-CF.json" + }, + { + "name": "Flashforge PLA Basic", + "sub_path":"filament/Flashforge PLA Basic.json" + }, + { + "name": "Flashforge PLA Color Change", + "sub_path":"filament/Flashforge PLA Color Change.json" + }, + { + "name": "Flashforge PLA Galaxy", + "sub_path":"filament/Flashforge PLA Galaxy.json" + }, + { + "name": "Flashforge PLA Luminous", + "sub_path":"filament/Flashforge PLA Luminous.json" + }, + { + "name": "Flashforge PLA Matte", + "sub_path":"filament/Flashforge PLA Matte.json" + }, + { + "name": "Flashforge PLA Metal", + "sub_path":"filament/Flashforge PLA Metal.json" + }, + { + "name": "Flashforge PLA Pro", + "sub_path":"filament/Flashforge PLA Pro.json" + }, + { + "name": "Flashforge PLA Silk", + "sub_path":"filament/Flashforge PLA Silk.json" + }, + { + "name": "Flashforge PLA Sparkle", + "sub_path":"filament/Flashforge PLA Sparkle.json" + }, + { + "name": "Flashforge PLA-CF", + "sub_path":"filament/Flashforge PLA-CF.json" + }, + { + "name": "Flashforge TPU 95A", + "sub_path":"filament/Flashforge TPU 95A.json" + }, + { + "name": "Flashforge ABS Basic @FF AD5M 0.25 nozzle", + "sub_path":"filament/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge ABS Basic", + "sub_path":"filament/Flashforge ABS Basic.json" + }, + { + "name": "Flashforge ASA Basic @FF AD5M 0.25 nozzle", + "sub_path":"filament/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge ASA Basic", + "sub_path":"filament/Flashforge ASA Basic.json" + }, + { + "name": "Flashforge HS PETG @FF AD5M 0.25 nozzle", + "sub_path":"filament/Flashforge HS PETG @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge PETG Basic @FF AD5M 0.25 nozzle", + "sub_path":"filament/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge PETG Pro @FF AD5M 0.25 nozzle", + "sub_path":"filament/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge PETG Transparent @FF AD5M 0.25 nozzle", + "sub_path":"filament/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Basic @FF AD5M 0.25 nozzle", + "sub_path":"filament/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Color Change @FF AD5M 0.25 nozzle", + "sub_path":"filament/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Galaxy @FF AD5M 0.25 nozzle", + "sub_path":"filament/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Luminous @FF AD5M 0.25 nozzle", + "sub_path":"filament/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Matte @FF AD5M 0.25 nozzle", + "sub_path":"filament/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Metal @FF AD5M 0.25 nozzle", + "sub_path":"filament/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Pro @FF AD5M 0.25 nozzle", + "sub_path":"filament/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Silk @FF AD5M 0.25 nozzle", + "sub_path":"filament/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Sparkle @FF AD5M 0.25 nozzle", + "sub_path":"filament/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge ASA-CF", + "sub_path":"filament/Flashforge ASA-CF.json" + }, + { + "name": "Flashforge PA6-CF", + "sub_path":"filament/Flashforge PA6-CF.json" + }, + { + "name": "Flashforge PA12-CF", + "sub_path":"filament/Flashforge PA12-CF.json" + }, + { + "name": "Flashforge PA66-CF", + "sub_path":"filament/Flashforge PA66-CF.json" + }, + { + "name": "Flashforge PET-CF", + "sub_path":"filament/Flashforge PET-CF.json" + }, + { + "name": "Flashforge PPA-CF", + "sub_path":"filament/Flashforge PPA-CF.json" + }, + { + "name": "Flashforge PPA-GF", + "sub_path":"filament/Flashforge PPA-GF.json" + }, + { + "name": "Flashforge PPS-CF", + "sub_path":"filament/Flashforge PPS-CF.json" + }, + { + "name": "Flashforge ABS Basic @G3U", + "sub_path":"filament/Flashforge ABS Basic @G3U.json" + }, + { + "name": "Flashforge ASA Basic @G3U", + "sub_path":"filament/Flashforge ASA Basic @G3U.json" + }, + { + "name": "Flashforge HIPS @G3U", + "sub_path":"filament/Flashforge HIPS @G3U.json" + }, + { + "name": "Flashforge HS PETG @G3U", + "sub_path":"filament/Flashforge HS PETG @G3U.json" + }, + { + "name": "Flashforge HS PLA @G3U", + "sub_path":"filament/Flashforge HS PLA @G3U.json" + }, + { + "name": "Flashforge PETG Basic @G3U", + "sub_path":"filament/Flashforge PETG Basic @G3U.json" + }, + { + "name": "Flashforge PETG Pro @G3U", + "sub_path":"filament/Flashforge PETG Pro @G3U.json" + }, + { + "name": "Flashforge PETG Transparent @G3U", + "sub_path":"filament/Flashforge PETG Transparent @G3U.json" + }, + { + "name": "Flashforge PETG-CF @G3U", + "sub_path":"filament/Flashforge PETG-CF @G3U.json" + }, + { + "name": "Flashforge PLA Basic @G3U", + "sub_path":"filament/Flashforge PLA Basic @G3U.json" + }, + { + "name": "Flashforge PLA Color Change @G3U", + "sub_path":"filament/Flashforge PLA Color Change @G3U.json" + }, + { + "name": "Flashforge PLA Galaxy @G3U", + "sub_path":"filament/Flashforge PLA Galaxy @G3U.json" + }, + { + "name": "Flashforge PLA Luminous @G3U", + "sub_path":"filament/Flashforge PLA Luminous @G3U.json" + }, + { + "name": "Flashforge PLA Matte @G3U", + "sub_path":"filament/Flashforge PLA Matte @G3U.json" + }, + { + "name": "Flashforge PLA Metal @G3U", + "sub_path":"filament/Flashforge PLA Metal @G3U.json" + }, + { + "name": "Flashforge PLA Pro @G3U", + "sub_path":"filament/Flashforge PLA Pro @G3U.json" + }, + { + "name": "Flashforge PLA Silk @G3U", + "sub_path":"filament/Flashforge PLA Silk @G3U.json" + }, + { + "name": "Flashforge PLA Sparkle @G3U", + "sub_path":"filament/Flashforge PLA Sparkle @G3U.json" + }, + { + "name": "Flashforge PLA-CF @G3U", + "sub_path":"filament/Flashforge PLA-CF @G3U.json" + }, + { + "name": "Flashforge PVA @G3U", + "sub_path":"filament/Flashforge PVA @G3U.json" + }, + { + "name": "Flashforge ABS Basic @FF AD5X", + "sub_path":"filament/Flashforge ABS Basic @FF AD5X.json" + }, + { + "name": "Flashforge ASA Basic @FF AD5X", + "sub_path":"filament/Flashforge ASA Basic @FF AD5X.json" + }, + { + "name": "Flashforge HS PETG @FF AD5X", + "sub_path":"filament/Flashforge HS PETG @FF AD5X.json" + }, + { + "name": "Flashforge HS PLA @FF AD5X", + "sub_path":"filament/Flashforge HS PLA @FF AD5X.json" + }, + { + "name": "Flashforge PETG Pro @FF AD5X", + "sub_path":"filament/Flashforge PETG Pro @FF AD5X.json" + }, + { + "name": "Flashforge PETG Transparent @FF AD5X", + "sub_path":"filament/Flashforge PETG Transparent @FF AD5X.json" + }, + { + "name": "Flashforge PETG-CF @FF AD5X", + "sub_path":"filament/Flashforge PETG-CF @FF AD5X.json" + }, + { + "name": "Flashforge PLA Basic @FF AD5X", + "sub_path":"filament/Flashforge PLA Basic @FF AD5X.json" + }, + { + "name": "Flashforge PLA Color Change @FF AD5X", + "sub_path":"filament/Flashforge PLA Color Change @FF AD5X.json" + }, + { + "name": "Flashforge PLA Galaxy @FF AD5X", + "sub_path":"filament/Flashforge PLA Galaxy @FF AD5X.json" + }, + { + "name": "Flashforge PLA Luminous @FF AD5X", + "sub_path":"filament/Flashforge PLA Luminous @FF AD5X.json" + }, + { + "name": "Flashforge PLA Matte @FF AD5X", + "sub_path":"filament/Flashforge PLA Matte @FF AD5X.json" + }, + { + "name": "Flashforge PLA Metal @FF AD5X", + "sub_path":"filament/Flashforge PLA Metal @FF AD5X.json" + }, + { + "name": "Flashforge PLA Pro @FF AD5X", + "sub_path":"filament/Flashforge PLA Pro @FF AD5X.json" + }, + { + "name": "Flashforge PLA Silk @FF AD5X", + "sub_path":"filament/Flashforge PLA Silk @FF AD5X.json" + }, + { + "name": "Flashforge PLA Sparkle @FF AD5X", + "sub_path":"filament/Flashforge PLA Sparkle @FF AD5X.json" + }, + { + "name": "Flashforge PLA-CF @FF AD5X", + "sub_path":"filament/Flashforge PLA-CF @FF AD5X.json" + }, + { + "name": "Flashforge TPU 95A @FF AD5X", + "sub_path":"filament/Flashforge TPU 95A @FF AD5X.json" + }, + { + "name": "Flashforge ABS Basic @FF AD5X 0.25 nozzle", + "sub_path":"filament/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge ASA Basic @FF AD5X 0.25 nozzle", + "sub_path":"filament/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge HS PETG @FF AD5X 0.25 nozzle", + "sub_path":"filament/Flashforge HS PETG @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge HS PLA @FF AD5X 0.25 nozzle", + "sub_path":"filament/Flashforge HS PLA @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PETG Pro @FF AD5X 0.25 nozzle", + "sub_path":"filament/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PETG Transparent @FF AD5X 0.25 nozzle", + "sub_path":"filament/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Basic @FF AD5X 0.25 nozzle", + "sub_path":"filament/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Color Change @FF AD5X 0.25 nozzle", + "sub_path":"filament/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Galaxy @FF AD5X 0.25 nozzle", + "sub_path":"filament/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Luminous @FF AD5X 0.25 nozzle", + "sub_path":"filament/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Matte @FF AD5X 0.25 nozzle", + "sub_path":"filament/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Metal @FF AD5X 0.25 nozzle", + "sub_path":"filament/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Pro @FF AD5X 0.25 nozzle", + "sub_path":"filament/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Silk @FF AD5X 0.25 nozzle", + "sub_path":"filament/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Sparkle @FF AD5X 0.25 nozzle", + "sub_path":"filament/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge ABS Basic @FF AD5X 0.6 nozzle", + "sub_path":"filament/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge ASA Basic @FF AD5X 0.6 nozzle", + "sub_path":"filament/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge HS PETG @FF AD5X 0.6 nozzle", + "sub_path":"filament/Flashforge HS PETG @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge HS PLA @FF AD5X 0.6 nozzle", + "sub_path":"filament/Flashforge HS PLA @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PETG Pro @FF AD5X 0.6 nozzle", + "sub_path":"filament/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PETG Transparent @FF AD5X 0.6 nozzle", + "sub_path":"filament/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PETG-CF @FF AD5X 0.6 nozzle", + "sub_path":"filament/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Basic @FF AD5X 0.6 nozzle", + "sub_path":"filament/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Color Change @FF AD5X 0.6 nozzle", + "sub_path":"filament/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Galaxy @FF AD5X 0.6 nozzle", + "sub_path":"filament/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Luminous @FF AD5X 0.6 nozzle", + "sub_path":"filament/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Matte @FF AD5X 0.6 nozzle", + "sub_path":"filament/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Metal @FF AD5X 0.6 nozzle", + "sub_path":"filament/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Pro @FF AD5X 0.6 nozzle", + "sub_path":"filament/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Silk @FF AD5X 0.6 nozzle", + "sub_path":"filament/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Sparkle @FF AD5X 0.6 nozzle", + "sub_path":"filament/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA-CF @FF AD5X 0.6 nozzle", + "sub_path":"filament/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge TPU 95A @FF AD5X 0.6 nozzle", + "sub_path":"filament/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge ABS Basic @FF AD5X 0.8 nozzle", + "sub_path":"filament/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge ASA Basic @FF AD5X 0.8 nozzle", + "sub_path":"filament/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge HS PETG @FF AD5X 0.8 nozzle", + "sub_path":"filament/Flashforge HS PETG @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge HS PLA @FF AD5X 0.8 nozzle", + "sub_path":"filament/Flashforge HS PLA @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PETG Pro @FF AD5X 0.8 nozzle", + "sub_path":"filament/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PETG Transparent @FF AD5X 0.8 nozzle", + "sub_path":"filament/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PETG-CF @FF AD5X 0.8 nozzle", + "sub_path":"filament/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PLA Basic @FF AD5X 0.8 nozzle", + "sub_path":"filament/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PLA Color Change @FF AD5X 0.8 nozzle", + "sub_path":"filament/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PLA Galaxy @FF AD5X 0.8 nozzle", + "sub_path":"filament/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PLA Luminous @FF AD5X 0.8 nozzle", + "sub_path":"filament/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PLA Matte @FF AD5X 0.8 nozzle", + "sub_path":"filament/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PLA Metal @FF AD5X 0.8 nozzle", + "sub_path":"filament/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PLA Pro @FF AD5X 0.8 nozzle", + "sub_path":"filament/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PLA Silk @FF AD5X 0.8 nozzle", + "sub_path":"filament/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PLA Sparkle @FF AD5X 0.8 nozzle", + "sub_path":"filament/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PLA-CF @FF AD5X 0.8 nozzle", + "sub_path":"filament/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge TPU 95A @FF AD5X 0.8 nozzle", + "sub_path":"filament/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge TPU 64D @FF AD5X", + "sub_path":"filament/Flashforge TPU 64D @FF AD5X.json" + }, + { + "name": "Flashforge TPU 64D @FF AD5X 0.8 nozzle", + "sub_path":"filament/Flashforge TPU 64D @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge TPU 64D @FF AD5X 0.6 nozzle", + "sub_path":"filament/Flashforge TPU 64D @FF AD5X 0.6 nozzle.json" } ], "machine_list": [ @@ -518,6 +1110,22 @@ { "name": "Flashforge Guider 2s 0.4 nozzle", "sub_path": "machine/Flashforge Guider 2s 0.4 nozzle.json" + }, + { + "name": "Flashforge AD5X 0.4 nozzle", + "sub_path":"machine/Flashforge AD5X 0.4 nozzle.json" + }, + { + "name": "FlashForge AD5X 0.25 nozzle", + "sub_path":"machine/FlashForge AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge AD5X 0.6 nozzle", + "sub_path":"machine/Flashforge AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge AD5X 0.8 nozzle", + "sub_path":"machine/Flashforge AD5X 0.8 nozzle.json" } ] } diff --git a/resources/profiles/Flashforge/Flashforge AD5X_cover.png b/resources/profiles/Flashforge/Flashforge AD5X_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..67dae78153931bd2f66857c7d917690d172660ef GIT binary patch literal 738612 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


^ zjgrF~oLp;Z;i)i-qZ2SOyk8=OGJhgt>=mVc>rSNo|b0JQ_t{L5wC*N9Jt zAw=eHM=KPR{<~&n%sRpa=xbG+^k%9V=lu(G-cLWs?QPXEhkrn4{>!rcMcU3-Uorr_ z78&RDnsQ|rVpY{AQT&tu(dd6JgTH|Od*Au#)nMc^n}4mlzMoqHjpCq7=sf$oe9<;qo*57uRkNLd-~5YvKhg?~?sazHDy}pe zuWIzVm&ae~{dm?5Gyj+Og!I#!orKoFoU!MopFxW^w;Sie$tQ6dNIcmt^;dbT^aztR z=u?rL?k!lK>JyU!!iAmET}=H0sbA$2*q8STUySxOATjz?DJM~K!*9fq)m%13}gQYF6*zj)520k6ngS{{-r_LPVYgY zsopEsyRmXnPDT;Zp19ChvH~xUgCrB?5)6IgvP*u>a% z++(IIJj>s^{>RM2AEndY4#r8|Dc2Rej^5yVV?10`62^(42I=<^H>+VV&ktzcC^;mG z$LVQ}Y3O`bfwA4FIOo*h7yp#uTyn<>3i&Sp0L-Ibs&lZvxXrtEXDNOow~qr+m;?s< z)7Q8sC>@;zpf3j?5IBR7eK+$Z<&*yU#)ZrLNRZ(DOr1#ABZ?-PfTxi;_kBcJvu1q8 z`^ib}X8IXG&(Uzl!eB%A%^jj)AnL;hZ*Hxfjv%X}WuvgUjFH6IQxL4dU>a^j3Bzq= z6Zmp{r`7N$i)-iq%Cb*1`KQm>T{GJB)#+Yccw17n40+6gb|+>SDit@a)4M7^qc)1w z7baVI6f$uRfa4M(8LOup==K?RwV=>dIn}1q$Pp&)!_$(VJME}NnffQq((mD)Z_f0M%1 zNTzMYuKX&W#kmx;**PvUpn>ATXCPmD?Q~81uD zF(7Q(veP^`nnVyCU}=bcY?Kw7#M?t-1)}%D_1w{onuy)tAJ%qY}%A_9BKYMe7L$Yhrfz8wo{E;p)~AK7WwXuliHqsBXum>37zEN8(-PM(E#!4f!&qAK^h~s zy$t^X_NMJ`Mg>N&kfw8K7A*fS3Gg#;8d&P%P>o5n@2ie)n8ywa(VpDGK>_ZcaqX~M zb*NTN6!BA=)e(z=Zo*errZn^w5sgfW2ebh*?$6m zW&Yy+PcKom|MS*gzBR=^e|t3ld+86O|Hp{`G2(wm<524SPe%OV#Q$#?;a#r>?&HP) z*e!FQz0Pl?&1dEwM*xGtfrYU7Hg~{EN)|lC#&znPoo-;hMaIc;Ty_e9_ zFMw!z5c^>_lc0v8Q?6I3_94eMN0le5Wn!I!O#96bl9`XbsgB{ZRo`#LV}9v~ghs@5 zRM^2F^oNeTs-gPfAT37&%h#U(aZ;uMY^Of^r-~%#$`%!9?-96fSd7TLKh))Shl=)I ziPKFKBN#k-{(yv|X(jjf^v@rBMdsq6YV2j_n0`jPkHtkEX~=t4N2J;ul4|Z(7JNAO z!yes1E{hrrhm%)346d|8Dqt`<0jfU)%kUizHC4+l>}txrxqWhfxN};EFVHH=-8jSo z{74o4!@0}Jhtp}3b&sp~N+oaR1kc##m8y-h=XHP;eDC$O{LeYTV09`lrvSF{01b#Z zfuy=O80;xGvfS}=Wz$U^Fb8a~Z4$3pY}C@5|m89Jj#{(bVcJxP-u3V!Q`wPT=KUdoUp zZx$E78if&Ct@T#8(p+h7Nmvl>L#fTKF}SY;3|6AUPpMnra=vel)v}}f>7802F_ZsT zCQOOrtn;y3N%Fj59E4hx%Jv=Q5z8e^VfqudZt-3&Ux?}06ND4C;gUGPZ<=UdV^qQk z#u(q5CBI~g5fG7h{_mTY zsS47c@Mxv9`Z@x9OI~%g zuU~Db>CE}&BINKxy6j~Orp4h?nk<2h?W?Vp_-|f5yVAjDo6X?4Q#qroa;r!@>E-aG z&o1Bsj$89Q6DXGV+CRgLm+jZ4R%FQL&nRPw~us_mOMyFLvv zE*doPt~BG7emL>d#;cPCQ?UwSnxlK`>N6c&v83m;Ov+!(MGHnxVrD;ukn)IBdrJ?! z(i#*9#D+Mf!|haSEDm&;$_gbUV|iv3>G-K%M9;w4i+6PU`j^7|1*|g(0r_oqK=Gs3 zomSalILPehP8Mj^i_w4rcRq_KF;Y@6dS%y8#v0ja+$%X=9~pe*TI&K^l0j7cSfP! z<<&vjkEm8AV=jS(QHHB3Jd-POpWU0#X&3>3uJ(UAHvt6YY=b~$*;9AlwPhKFW7@aq zA!BmmcJTPg?TnU1b{=A3X~xXY0KO`fa8+E-`OlihXOrNGclzwjU!tL0orY)43knfR zqx_OrSnE%GeWdHZFg2EF4}pjIB76N7tBSjmucN*{Do%qhYnpI}!q-cFmO0EI9p{-= z$8FuxIdYbWaDoq@CYyoc1WciNii#r~JsLIi(X=+KU!$%w-f-6k5 z_a!x#!WtGVD*efg!R}wr=NUPont$vHR$~U3U(dVfGAJ3M@ox$GX#WJ4*RQi`+ zZee1!HLu(o;9c!=rcGwhL~2knOa=M-3AXVLShj{_ifExa_Tj-?;i2bG|hn; z%3W7Rx0AwgzSQ*!%)DKGd15#|LUQ7R=wEu%d|sc6*OT#r!mN8GJCdHs&6a?x2{Na0WE#{7Rvi@Cl679 zJd><43DqZ!BlXp4S8m0g|Cl-=1#DyXp$&=d-QXA_FH$_`q9!jj+6BC;7 zQldIHZY!C{H8Qq(N?`1)pQ{*^`3p5#NJ}k`r{AwuCdpYNDHz>YkQhWqsU6S4Vo%DJXh`Z-ak$Oc zm8{xqs=kXlAJRZenkK{-xvtok=`ZTCWAFvqwdLtG>TVA>H*zyo|1TPEI66=+!FO7Lp`G6B!uYEChX*SAp`_0dV4aX zinXiQ)o2SN_jZ0uZcqRF&u{V!>sp`&FaavAe297H#SYpATsdI1*tY_06Ie@X6mhx@ zrjnX1(712{)9r$nLJ~AoPq4<;Fo$akS3*=76auuxEl{mu38x{jZ;8E%N_giClSWRa zjk&W=UwhLNPw2wxX|K1MlxRZIwOY56VUKKo3xW7Z=X#5)6gB)y$N+g`aO9W~x1V=Ca1Z7pp>xE`8?K+fu=vSOrJmX6OR7C@T<$pq;9^8E@WU6}{#YtC zy?N&rIVGBR<)2p0)#;7a75x~x)FBWO7dCM2XNvTb@8RAl8Hm0)*aL5;DAitFmgPU< z6H27l@%TVHxE7$JD;D#i?ckId)QKE_9%#6A=QxFV85O9*^Ng^bqpRmM?`{YEsuJ@v z5v>J}uEOiNCL(s#Cb175_5cUoCiIISb$GwWieJc708h)eZFD*Zgg5P5WDDlTLTL@3 zpwy1t1X|t(D7{&Q^vm>o&AaGmS9ch=+K`(1hF#rQ~@I1`TF)2{Iati(S3^787;z3 z#abI(7A0OS#oF=2_{97Wt^6$h_+V)ZV$U2;D0qh$$Dt0+9bOdF`Iv@rNziKyL?w?G zw&#^*quFVrhnSw%+hl^bm?Bq}zWC*R_)qwQlzNdB*cAG&n2*q1C05NM-Fl!!?7{Hg z^DIrr`SgX>eL_<7)VWO5xx-(HxH;B&ET7DWK267FEyL5)pNjSkJ#Il7(Bq0xyzf+E`?Ewlv=ivP)VHrkuH+7oK0S<0Tqx+aIFx{TeHJZE zbgq|V^AhpX5+0JSCQoH-Zk8AFhsb{~VeVMH{KM)PMd?d)nj)W$zae`G$uDUFyral? z7D_4R`6|nax&su_e%G!Hu|xnZYx=LzrFl4h4(Km)wKRE82zO4m)ZdBf4%o*U^up9b zRK$Nlac6)OSV(MYyPM|>0#uv$xUWsP(hDr*)|iZO&`I4H5DQ*j=s^(u+wA}IYy~y& zx}@8QnTV5k7i?5Ml2Y`~F4os?pJ`!Je)P2C3$yt`hn#OPjnqx$k4Rq&Wkm*@Fy=wt&OWR#SD^EK#+l=3 zaxmD|#g{IX{z6k5wF6Ioe701^vHt~^`-k=Q=jy8Y+NF7# zEVap%BNr19j=7qQ(K*HnknyCg{F2sQ9;=03ON7(J24B>S85q1HOQpyd#@&B;VIP_$ z320!yJ`6V2=vLm0y!!n<%SJqgRLdg#F-8hyY|Pm4m?m{sgi3*T(RoA_z62D74AVi> z(zkSnQ>|{66!(o)hnm-gJy|+U`)Sc~cqQS?(jAbt%B|YQD8<}!TYA_9LvAU3Aq;AS zm~)>&&6!|ItF@cmu~|DiC>@Xl@)_Y6A6MsGSN<^3A(;f6PtCw_!1w~X0Hdy>+T&rc z-O?Fl$~5|i0H$EbVmn7qxPd1)O)afd6azSpbzg0`S1YFc7DH(D)FgSQDLk>T%Q3KI<9E9!ZYUmu42pooXzHP zz+%q^T$wskc$KkWpj7L170+7j(M#JkFj(;|AJj0nVZ9kveL8Vjr=CMCO>i;Pww{QC9G6?H252Gc%If@oHy5;{qMgouQb#1 z;In7V=Z6qmmmkga4oo(`+cze@vCZRGJ_S|JfzfxkP=M4>aM z;V~EF$rRtLoh=o$e8@e>;4%cawjUXTQ-QiJ_S_NGsWDjgZ4#fCoZ4lW^5=FD74moL zKCYCHJ%vn^6r9c};Og&ys?qtwdfZQc{8iw0^(IThee_CET=VERoRHmrzefW(jC!ms zc8YyXeSjO+DEbBpKa|pmnsF6=lxb~D6`!_Bl!n&Z8JHK(+->A_;VO7cP-XRBcL@67 zxAgY9>;1kOL_!XXiR!&hYJYLxGRjxiPvJCi@zLm#*MIAXXh-n6Dl`*-m-q z-`>~>I}VE_wjwDV+Rj!;+hzn|NlcgOc;?_v%S@I<$L|Lgz~<|3Tiy9EIHhIds;KHG z0o5^R5E6-J+<|}T1~w9dx0;0(8>UMvc1$j$)Lu)>kg@ecB%;HAs4Q*idhI1EYNe}S zyZYN+O5HlHzhw-Ey3X3_H7aS(f)Fo`m>tt=W>z8csj4_uX5K%xt+^jsu-I8@I^2GZ zxGmiR)I=o5$~&+1BGsZzkYb&WLwTK_pR(J{eZ=dqph2&rcO2%3h+xYcscM-BIOVmYCY>8f zwsX^7vnpl0h0(t1(TsFiV8pl_a#PqcnP6{lwjQ}QY;g}l=N7K5<>C% z=ld?IPd@$GIZkv}!BP$ioX#WuL%bafwC?^RaJ^Hh!;02EzlBY8g;-4%-b;c?-YRMja~f{mz!F?t5^Cx*MrhU85jWFV`B~_fND1_r(qzzAN9oX&>w& zaGQaWu9+K_Irg}k$xb9w3B?95+6m77Q)*7I#e1@IU>boV`LG_u+PI zFO@v5TmsfY^F5##HvdZInCJ^h!FMx?x_qfR;1VHW)SCPEY)ezt;TWgqVxG8b+DX$z z>V3The@^+vRb*0eu3{cqZKBdiw%tS>tvP%sPe9o7v*)Hmx-F{>N*dWV{L73!bjTMo zT9|F4ON;M%D7mueWhy#>=cp5>A^M!JotcHRl+q_>hIBuQ=1fK4e06ea2rv4kT(97~ zQwj;`2~>=yPRag}W#0W(47vFX!_X35`LRIEe3s^s7<-?>yPCuk42-;J8AckjId{IH zQN8q+^qSS8KG9yyLom#u2Ciee(tIV2P{1eRjc&$dEYVz@j|F7 zLp9eF7pzjuA{`4`-V_%?zIR$-M&ZO!g;x*@EpBE(-P!Ne$e+46N`bqKK6FCuujZ_>X_ ztkeKP@YBVWs<=llq3~)g|Lim7{n!A?)wXDZK+G2cZ;)%Uy3D6=rUXB zyI)%{iR~EZKOxV0ASf=jTQp@PDUSRL%KHsO4N80FTERELnUKp4_*+ z&lzRh4Hgp7S^B2jc#5>s@QV)8UX(j1SoGnW2#}wUgVV@UgR(Mqm<_#fHsTh2jBiAu zPC{B%M;-~C|NVXC7okpS_&$RgWwF4TA>SU zdY=$bc+A%T6$$@h%)|d=2Z=6QRQuh)6UA|=xPj}ag4Vae&?rZ`taQAESoaHe2C#cK zXyDa6)LSaUf-*zlvnr*p5~b?$t^B8YDr3DdL?s6POhneJY_Umxz$DM1d%ae0c~gBO z-Im=n^!HYKM)c96TRamt%*ns8p&msug&A@1To6BHgQ9$-ko%;k!fNu>Av{x zE@JFfQNM2<48|(J1(-q~M7WnAV%vLD#5d`L_6SUF;dgY#SzPdd)`_KfB29yS9mqx1 z?M464?Iq{%~c(BF6}9nOKX1Jo8zQ3O3g~TQ5E7J()n@A<`Ft z`L7vdbcDYLdubl{jh|e(uv+6D%O=6k_fGOxRRD0xeyphht3NE9fv$6K8Ha1Iy^TPO zca>fu6?HY1#_;^2pHA9Mxv5xlNij)IFaW6eVrzX%nWhtdi5k?qC94aGntU=LaZGDQ zYcr`Zepn{|mOf1#B4)#Dok9F8#59WKk=i1sct2I>y4qST0{vD0;P~0ai#x!y>sPznOsonQbB7`2bRo}AhVg_Ae+}A{ z|7YM?Q$}8I`iq%Mirbkiw*qQxB!HVnE76Ev8&hC6(bt5i=JDZH8)DgjO81Kq@$sof z*g@z!)6XRcJ+y!dmP>vSlrImjzs2E8kDr8%%3&B%i?Tk8wJx>Q#Zzf+ezbW_{_=&5bl6&sc%+kzeez` z>73F03Dn^cje%n)AyVO+8TH9nun$$~k(cvjc zqARU6L&AYmcvlRpxuF~u1sq4S`}KQeFH!zV{gy!5knc6<1aRh)@ZGc!@26c|h%Kte ziTy)W+5jXxF-u|Nesa8QJ8k^^s=d<>4U;R1?`{3_2s~5I&o$&OVK6i@@Fc2vuaCN6 zT~#^*wAS3Vr3>e%|Mzi5^^i$NW6i~p?3D9XTe%Z)+6S=*p{ia=VO<2LWXA%LKy#@hQNXN8ewdGHhI{s6a`JpVVRk?6ThEgzC#Z{=${lGy?k;Gv}C9QlNc7x&KZ$ z=}O`ixw;L|9zW%2;8fim9{O6H7Vg}gtmPYWr8?AuV|XchM%)U9LF$K|kOzWxfTbgp z7OrZ%6c(}$469#441dox<4wB&h<7Fo7bRd^G%(`)P>J6y8(pkg&Nsl%ez8p3a>uTz zp-=?+cF7w^7ouHWBM=u2eV};mM)KL@M;Sd|b%9V1y22qD@|uqg8m?+OumUK{ z8S&j}+ne9Rb^_Sbt(k5sOI*tb0s{|%-|ky7SMHwPbgTLLkuk zcWo6F9?02m@3hpZTgO?L{weMt0-gy-gtT)ZEo|r43V15#;)PuUoirGpe*`~dadRgTe?l0 z9L4M~hB~F$jm8d6wY#Y?E?@ZAD$~M)MyDh-Vykt}am|}}6%$IsNR{5&2gfjaQqefx zQv{>b?heDvTj0<4dM9h=F$;?hEho)gD5|oxVBpdi(@xzXyuZ2w#2G$c`Jk|D<42dv zaDR;91CZ+_5dT3=!l`+!^z;0#j_ptxt0%0{tnsNU&x|Vrz0!r#U@d zk-o;{%4D{CE<^D9JiBQ>`eilR0=gaUDgbjBRVkkQJ-zk5a|zwAMd>D;gLKfv;(|Wm za*eF$?dy2G58K}0v(k;UkTny$6+L{BXp)n{2pJgGHwl3cAu%>8qYmBC*ySX<q&$Gnnnl{FoXwed;ihp%%wg2O~Dg z$qetAqVwe!Bb`O1iqWI#{1^}_Ix9T{lTgydr7ZeVQc#sE6;^5Tk3HmcDzr+?R>;WG zNa5LAE6HzA>%PbB{HDODVV`AtHr3+d#m0a=Sq96P;j`H&ceq$%(!l5-py!TKI0aNW zo+hwudGYplNyva4oHX+9LBEBUCi%14(F-aW=A#{-FTgfG#lpd>VS^jU9IA+ai!(i~ zyB9sRq>8K;A8kd`BEPm#ogi{C9-yXIJ|$CRYa9-82>$%SiIKY)M9HWB%huxPnox zeWBO2qNsa;WX1n6VW97_*^PjPf($3EK2RVGHs9rZZ&`+ok$_nU1W^+Mo_}}=ssT44 zBO{uOo#l*&vs|H^1r2nBl`ct@7dH;U8JVdd>V36^Q_l~s#Za%v&4}dd@ z0?+yxm?u;USJtQ3B@k0j6GX60D`SE%3U&hYc}fy!&)2J0cI;D?bAS~aq)AlcDLLx14Qs(}})jal~*;hjftDtetqz>)&MEi#lx z(wJ`F-2+rE@(`od{M?lR@ah3g0o*VEJiPzs0ptn~-pmAgQ~dskNki+;o56ldmVn`< zDs3je_Hg4Pfa3vq^R$$+oh~CD>UN>Rr`;trXMc3xuOo0d_5H?@XWz1lMYc#Q4UB| zTMQrWl>^YHBu?TGdBQf%_J`j0fSGzQhakH)`rk7}0(R5yY26dN^?Rn~WW<wOq`V`=>`}pX-u3`pN;@vqJ#8fIn3Z6UvmT8UV32;L3ZzR<%R6sv4RcPfIXY10SPl*hbBi634$m{5+ukVNd##XQ327bBB-b^ z=oL{E1Bx)yeLN^86vTuXL=h8mB`Bu*-@B`K_tQOR-uM01`p&u+Yt4RswX3=-cXhQ= z|Ns6{SBLRAN;z8n@vOD(`rJ*`RNb^1b7$eZbA#}iwYBwF3-k97DMO&@hBNhs(E%-l z@qrc~oY}YPhBs#Q0YpqS{c?R>=Y$XPMfm^=63#qVKi(~?4tsLFd^zx8Fa zZ1)2#K&02UO#SZ!syH8`mt^yS79MtIz@jw<|wgo6QFjF%`9ypA5+A11v~z`#7;6 zs}CelMZLtA?X&s-ODtY$=lj>n>H`RcD(Zb+Yn{~xT98N|E?iSNs}CelwS0iPwH^3~ zN(owG#Cmt{iCKLhu^d#xesjO;p4A6hka(}3x3f{g2c?Y4E)uA^!15j%mDLAYkhp)P z_i_KMK9E3F&h=i-f~-E!0)$gzhd1NCtUiE1l{0gxck_m9KF|^)njD?p`&~94F#=T1 zpHF-3f6eLxEDjR4)l9$FB|-T21LJZ)u*8VtTBgriks!>q0>S|m`&d>1 zdgtg`fh9%|J^l7Kbs<^!MeLJfUv_QOE#$K74)dvu$;(Al<=&S@-Vg%Kd)gS(^1gfb1 zk7|*PP+;LYDDiTgKfO_6Ol|HU5~!kf?C`*>KEM)-m)fq9tFrn4LZOP<7 zs11H@aaJElpo;pHS8vSf11&LPz5C=dS$!ZuJx-{?nI4yP{yFqN9h(CpL4D$$7ZN@g ziW8`UnI1_m9gG{t`q;_^@DxLECp+t(VBnbbr1=@3fbo$7#FJes>kLyj`%$hr^i#$Im~9eIyA{vG3TLC8?uSi3Q{3 zJY}DMU|gu;YglIO)lU^#kl?$Seg1(2s<MAi*Qf?9XwKKoyVY%FJthA80{>N1WN8;~;@5E(>Mm=e`fLAi*Qf?9XwK zKoysmGV2V!540e`BhKv4agab2ml#3qtSu{m+9=!agab&`K2Ugfq1!umh&73 zN*t=NghrX*a#dxSm62Io&-FSZv#o^>7G|=KUXegmrTK-K>~l`EAW`$xcA4y>S0qq% z&isN*nVB$U$kAv)V%za;Gui705~$j+vR$T3o9O#M3lhWUw9aI&A4s5T(id$rW!iS% z2U?KGKmWo^_WFSYsty;l&6Me*d>?2*qE^jTne6og2~_>GxlN`_U+eoo3lgeF%S`tA zfds0kpU=q1fT9k6{zxXWK)jiE^E27&2gZe}F{9gLVq>4ci=)wk#QsO~{|^MJ*mrCU z7y3X866~)`uSS%~xx|GkzJ{@}Xy^kiNbr@8&9)tbI2s95aao9ssY4$z3&hL!Keh%C z`al9zT&81lgU|>4db z79^JT>5+-8GcZB_cQg{H;=jjcMKK>@L4w1wfIMseZ(vfFPE|G>kLSsitA08`JnFuEl6-( zk>^x&UCqzo`+)?ixc--!*ZKrnkl;Em&%Xi>!5u^bRosrnR<;@QeV_#iZo9HS^Fjhu z+#Z)%q4#~D1qp70vp@4f0#)1-mHVV2v>?HKi98G8O#45F?+3<(DxB#B`rulj1qtpG zvp+FG0#!KEQ>x9ebG%EItSPNJp}0iB-a*{sM>`-iw>};6^3qC8T|3?Dq;7QcS{Ik# zo;zpw7R~J-tB|G)be!dVTsg;`I=r|5Eiq#3R{aF+HZ(qZ5%Iu@IqtM10jhYa7PlMg zJ^kT!cV}Hn73|WZoeG+J06$f@r%?THNs)J8{%ZG!TuK#KkWk|`>w9Q_qDj@densB2 zd8^&;69lR-Pf8s*p`Z6s|Ek^zC(zY}oq+1kr#1I|eySj~N_}wcQ18HsBW~VyN)=jw zP%pitZ>=t=dTY{9Z^u(d+@?taRIxm%U9Y$H{;rejZMc-K748I_xm0tn@8=d%t2Uh5 z#hd=B7LBv#;C#71{^5(wL%e!qQT`Sye*yMW6;~oE6 zVQSTzbsBpY)k}HjoF8c?0?fcQSLJJa44$-4$NUCZyspLIzc#zj2NuUbzq#pflvHQ%1 zDc;V3lq%exIP5oz$GCo~Ftw`QN3QG6nc(f+yP_bL4_6wmh!yDPZg$CE$oz2x_}7xHM&-4L1OQs z!ftIPRc|(KTDt$GIbKPUKo#bRb8huD`6!9)n*8fomuGZ-sxY-`M70W5N4mO=8ql>u z3lcl}yB8Nqs-E0`l+}6HY_EQjKo#am-Mz!LT2d*wr9NFN+-EuGOpoWXeyVVfr^@?j zv2`q!#NMY;s?dVOti$eQJtbA=>|ShLy>W`yD@mXV^Q5}vR?>414Dx0lSy96Kufo~S zjLSWq#rvtk)T-yF@3A(_AL&({N~uB%64w`cM@CDkPMo~QYP2v5fhx=sw>~;(eM)dI zr@DQC$Lkk67nV?T)KXr5$#d(rCcr)jB^_m|FEh;aGk9mhJAdAFe3Ce8h;1=S|3! z-nnhTSY74)?e5wnfhx?CIaepg~oIGAz^ve~bR;k~fovxQ3bljDl zsFZ*O3FqH$dnLi>OsQXRsQlC>D{CmX_EB9g3 zGKBM2Dt-Js!oOBj+9kD09n)^C9oPIM+vl`jRHOk}4s#Cka$R zo|KFkv_EFRJ;Kym@^eQ&Rk%M{1%0iS-Z{(%64dWLFhEij^yg&>RAHWEe5Gk*>5uxt znLCXv__?Z|Dom|vynnGZ_~j|O-Su>>(1HYwQ7$Z!RMq}!vGx1LDY`I8pbGOOV^Qso zMR89vjl%c|ub(R11FeEFoR%?Mm=7dqJZC$Ss$iU`Wtb{d7tb7w^( zR;K+_VQSU#mvTyT*3Z$pIbAEXAi-nbngwL>PbkA!&eyT9F zDwrGSalvdN%m)%QPiQ?;QWeZUxRm(wkB~qW=1Jy*+Mf^7>@IxjO*0`b$9}3XwQAM- zu6w>SLBHRFe4qshnp5=|C8-+mwd=N;Jwb0v5~#vFsme5W=6e2NFKXLqCLBH|r&%M{ zc|TQ{TGb)9k~ibPAZ-V8&M+TH(EKx}lcXw`*J_#9h6JiGPqNOSd7VMgdP4YQoo3kF z+HtC4sg)VMmKlAR4l)3!lOE^hhF!b^o9pT^2_mM#JgG&r zezoeu?baJTDOI!@B~R~p<%auR|5{;c)izr9+4|0Pim| z0*DbY734{&Nwn72LEUIo+sSf<>vqYlQ@@U;fxYd|X1r!zbog-#{9ggIW>nQeTON1#f=#>X>lYUw@Od-*=lB4LhK zc9GJvm4uCtVI>3Is_kd``9O<=IbM0Y%J=}n5f#UUDhV4O4}Igh%jZwGJvm4uCt3au-76aN|H`#_6?IbM0Y%J=}n5f#UUDhV4O_PLF{U(QeY zKF}gzj#u8UGCqKCM8$ETO2WoRX-*e!;r6<|541>_6_kk7(bG)*D+xP&&5f#UUDhV4O zYcHPVRjHKY`#_6?IbPYnZF~UXh>GJvm4uBCdJ5^^3+|)PB4P0njR5{9LR3u43X)Pm zsx0v#7E!SePOXfb$|q1IVUv&G>iRy=B4PHyS6#-8N|i^TO2WoRP)d9sXpu1c;L;P0 zmQ{HKsw8ZD1f^Z`wL*)8*$3AGnI|Y!9)T(e8y{A^#@-7}QoawgNSJ+aZ4PHhsyqT! z5;i{WZ(GUx;IBcx541>_eQ>K3&J9(01ga!#d<3ni?*lCoW*^+ThO=T-9)T(e8y`V$ z;QK&}gxLr865)D)Dvv;wgpH4&SMzxJ`7>B4PHybCGa; zUjd;+#c`oZ!p281EAoAyMZ)ZZ=T!1!Ln$DXs5mZEN!a*+8Ki?239}EJ8*=*`_MFbr z`wQ*EmGbFCsbOgjkC@Ri4D;VpN_jCt3Bi^m!L$%e@z2pomH7K+e_Ol8&OG0rk^27< z@q5iy_TRR#OsSM_|FDhEeHfPBvgPeFXV7z4rmG8S{q?9Z? z(jz0Kq*dO;Fok~39sggty66MrEkhW92(%!vYH^oL_ELfbsxY-d^uZmRSG!L}?laR8 z9(Kk>ne3$mEl8m6xQ`?uchG*hS0;NYK?}xq~E^5GMIt@#g^&teRwzX((KU&16StSXy)E}2?zy1cF-SvM>6%qxf zU8wx!Q2 zVQM*k$2dv&fOyLg2B2~kvjCyi{pw}!4PpeSFttJSe##u3+Tx_82Vh#lYI9LKdvAai zBx1hBiNiH2Nyzm{-FsO&dvAaij2Ex8?}FmzACLMfg<~}iOFo+Cz1Cj*8L9s-*IKY7 z38CY}8(TJnadB8wcilfK{Ck{0OOg;ePAtEFR9JpEEUIl=HiUnV6KF{iLdOZpc^DUm zMfJe_mC6~(pe0EN?fVG+arCg!^Mdn&ho$KbwwIoI*r~Uq)^^R-*P;ap4ogoI_mNsR zA~k7c(7ukFn#w)Tv}#!ihf7J!0z|6ujj3DLL7T{q$`Gi+)Ur6L=a?$==iJ^awW~4o z1{6R4=;UFrAdzZ4Bo)iK;{yo-RjIQErItRGZR~@VRP6z&rOy}@`u1bb?gNNa;U%dX zUjQH32~<7YC)Hvj5GEUx4+R#dXYbSvoBqF~Dn?w|Gu7-J@R2oD4yv|xPaU-bh%i;@ zDcw>}`seIY?=_@*>fRdWt~tkdOZERN8xgYrkvg|q>f2uu1f`5}j@~zRORd>$RR6d8 zp@1mkgLCftz_?K5Z0wP8&rXy?Lx2Sdyb4P7+5TAJ2j`jRQL)k&l-CsX&Qjhu{67#u zc}2pE;r{q|nl=2|8U7ek;$n-0eIh88#z(mXsIcTKmHOjN>+HgD#s`*gB!Y5me3VOo zDqcVCTzj0p;k|*z2h<5s`SAv|!1ySSkh+3|xmI63d%nK#P0RNoD&GR}N?kEN$|F!E zVdJA|?=E`4>bkxUv`CoamD*)|luHD45DDYMx#tRf{DHq*ML&s)EfV(Q4eE^_rYAAk z38`I37$1$!nWUeY{H*UoRK5k{4QiM1Q7(ZhsEZO4;j1>DMcK?fZzeWI#xpXnX+S zAb~0gn|%B|uaB(YYVT60!H_8{MnM5&;$@Qgw1t^?#tT57TN_!B{Wn%k6HDs}lsM z@H+&wv)>x)J+WiEyX}@m1!#%I+of*mQF>p^_^_(?^X}_c)!TkkoKT>OeTP8Jtk%!l zNbf;f(-sxPEI_D_PfAU$EgDy|s|y6G@H+(bPD5TT?|mZ9yJArRT98n4(|YOz@v)xX zAAEn&NUvUkKvnEJ1nQd^d)!y=80lSmE&0H28bG|xcem*)TZ)g4d+BY!(kb5Mbghtx zsqi}l>M?qM@O2`to4y(VKciEaFmv79^?+^d71!K8}3tT3ww9-c4f?1ghXW1WMiZm23S* z#E|QVKnoB~@5j88E)pNh=v{z0hX#3#>7FBjDn2_rI`?BS5jPVtnM(;+V#I(?y&-pr zkAC!q+tLOp@85JkVg#u0I|NGQp59o0TtDTtq&kQe2Z;q0(~o~GKHhKGMGt(tu6N(~ z1OckpcL>yT4Z7&{Tk3k-W)XqkGyo!Xdad-G^vI5} zVe_7s!`BK3RN;3Blse52&W!;fXMG^S;c92ncLDr-ETdFCT`9-9iF$)rT%d}5hd|v! z#7)QMSoc${jah);Jbk!CeDM8PvS76}GeN{u@EroB9wwsq9jmQ;Dv9__gBU^grqhY^ zB+k#rZBvHoy-yyo^0;NdxIl&9AqdNrwJ|7(;fWwXa2Y$A-cT?;-lO_4;O)Blo1nA{ zfhznCfl@aSv7U&DGwABV7Ybqo)s>$<6(4h`*4{~b=(+Vl!T}Z6|LEM0%G5G^)*z+t zyow00#0aYMt#aszqJOO(qSoieLxc3VB!MdY4uLwQWhK4z;2>QyXyN2U5N=B(UT(W? znJ7L+P%HX3y=ft>Xh@)nTJY%HkD%SvRd_@OmRP*h1|MD~KANl_Xf?QSrvCf-IH6F5 z-yu*<)(o^fA_fd60xd{TUy}Ed_~3r9=EgaC=amTpRruusRcCKb;a?l(=+lCpGdvLl z3F;GPmxvGUovA<9GlJeZBv2LmBEp~5E4VpCd^?O%g%%{JZ(seC__*$y#cmgOioS_+ zjs&Q9yb_%?xr)XmTS}+sp_fp(LJJZ!_Q}0Xd>l`srT^YBQh#xAoZyj+sCc9noi+K$ z)IIJ4i$>~3!H7&ONbuZR)>h?uGdepBy}7PY)BZ}-yOsSd`zqX+Tw znDL}a;v*RE>M;odRXlQz&YIk|rL|YLPOh#`BYm_W!DH&WPf0!BTfLvR{F18rKI)y3 zKo!pbqO&HiGvju>DH!R87L1q1@cTN7k1uKdalx0{twX_VA|y~nGnweD$<2jhy;h%Y zx9W4xi54JuE^^KL(zef`Sy3N)E9C_0IgyB|;M;ffHaQV{D%@xl1~V@?g%Sy#Q++#F ze6+1H$9sA4n!<~yP2{;+NPsH#?K^cG5xM_fQ+Uooy1MYSJ&ZTCv2$s_@%)>J%czuUu0)GDwx2LW%L>+>qYkeR`nvJheU-ja*c4-jEI%Y01u-+CC#K z4xT5ZRFeTW73LMq(fP}$uZ0tgkf@+inTDlOcI#})DQvZFjy_cSe2hR9o0tJFRssuHo}vPA`GK_b1rT}E0WrM{&0>J4hI7E)V+1gh{1 zTcv6f@jDSk)QX}7iLd``lZo1^B5JRuQG50Bh&X{NJi}J0vuIv>4YgMrs1Bk9i9X|6 zXQKA170u7zK0R0eo5rF@pbF2hRjMboSF5SLx`a}N79{RI`NB-pUj0g~&x!r3>aP+6 zs`#wYu#Hi(h$toE3Toldg2df_w#-EB)hcRzHd5=;h(>)e0#$H^tx^wC3)lCn?bi7> zQ_BDrjQ7%}Ei+MjRZ6YT<^MQVz7r=0ipy}Umi>tedPXhCAz+Wbt^Uj265 z9Bd7^w4<-my#m=x* zrv~j+#UNGEULnE$!qqS3(Y3nbAIG(VoC^_C!5OwnRibN^|Ci&A;Sm{Fkl^bUt&#nk z?)mypx4X9{2vl)dh|b3SjqdqdUu<^^gHj?EB>4VEYh>N2Bvu?y)w?Vxi9(ZXcsHvK_QWwuDx^9-R{>P=#mM(wQ98wx8fm@zzmEL<$_wCUdS?y;BTJvbdYcku9#ew_<9%*Q_e``#_C2kz+(&C<7jwG{1gh{1Tct+P8rh!PR=ZuPO+*V4Pu1y> z$-YL01gh{1+xQw8T9DW|u}3ER8W|F(!ZU2+Yh-9ag2UO@$dZJpVrSUK*2vI;@p7KB zuaO}UQ^6UwbZ!*g!Ru&M?RZ{i01Fa)Z=yA_-)W7k@9HDgRBA<$Koy>08ES)J_|~_tdXG#&#+bMW?Do3ZA)FCRd|Lits&DI*%DeK z`!#42WyK2#ZoA5^kqt`_sKPUBmD*12Zk-z^=q0mFOD(HsNZ`zpMr1D!v`(Wr=bs4z zRXDTs_m`Byj+8X-n&PLdv^&KQ^Yc^MIg*a{M$sM?AskWp1gL~C&ua^QoaW|E4tJ#Z zaU}_-_JFkPtWpXH2jfDOgpCi{U*gJ+6tqa#e?DAzNjlnp1%x9ij>`d+gpH4Ok00k1 zeQb85phd#|v*w5Uq@x{MKsciE<3d#sHa=*7i3dAU{J4???HozVelMEWMubCqSV96- z5;i_)e~AY>QvA5sA}aq{UD`7p?Fs|J5tUDXiuRiLgz+(O*%jV@-Vb-Agcecx~^q$Hs1H*&#-&Q4!&Y%J%`PR1h{kj_P^6_wtoy zM+#ab?E5&kTRPgS281Ij-v_8@uZd3>AGE*3gB>ZMMO6O%IKEpt+Cc||BPx!Ic8-K9 z2^$}@zr=$bDZVO6(4LTVxO-2PN1#f=#>eIZQ@rcm40ojXaj`{I{ftWm(eu(0rX8)X#CEX;j3LBA`-MZoIrWxw_C3NF7pjIe zzA+u!zw3|_`akWh#dZ){XUPX&1=5B;+PMsIrN&K7!>;20Lq3q8oxtgEe{$%7Q-%3J zmGnfhR5?tb1&Q+Wfds0gCyM!?)R7P9`;d@+B_t?C{38NdHEHcwg|v~foC#D(8=RH! zF(xoBB&3%JQoLL+6~~1t2^$~hANQ8~Qya767cCNIAD`y+ z%0%NUARJL~T&R+;@$s+XJg!$J8eak7h>GJvm4uBC7%eHZNSJ-R z@lDT6_VJadI4)F4*!al5q>ESQQM2P0EfQuQ^Iz+kiN;qzIHKaXP$gmG14c^34LtUMzvCAz5@sLk@9LR}##cZ%qT;wvC1K;^S8uj= zc!t^Wixvs9kKRjqW}@*`c?7B?Y<$rET~BuWqD8{&BlB3#Of&cE^ zv`CnJY}nW{6OFIRBTyw_;{!)aXpu1ccz8$8O!o1Ws5mZEN!a*Mey?eIPHEvdUTIOw z=7Wgf=jcy|4$H{=Bd1OIiK)c?V>?0W@P{n_jv0Ygo zVnG7)6cP@n3N1*;wc@J~5)_CNsFJH5BYYpNy(=^F#%kvuhG*mrSsJMY--8T%keYw~ z7%sFRLGRjT~*9gP+wu+GPQAb~1uiQ)uWuua66 z;sjcdkoNe0&IhWbmncg}Kgbs8cR4Kmd|3kHk{*s#nA-C5fdu+4pFow2aLT3%El4Eu zL2u6mKWu%l#gV_KsC8v&S%NJ|LPoVr$j{MFy_y@geZ8M(9=4+IZaKc37A`-pSy-Q0 zB{ShZmp3b?4x$B#GCmxWE=MN`X;DA=v{}3kh6GwLUd)ppdq`l;kr>%14|+9XLIN#F z+)&UWeyy?+sOsJ^4|-?v5&Rr|{+1Tu_`Lq%7U4L0+k`wAUx}RWJrbxI|8NVKO^633 z(1JwQYw}=xg+7o#)r({DV6=ojFt=w+q?82j?Uu>8V<<HJ@V=LXP*i;ClwUc&eQ!Vwk6g(?XfA7f_p(Rbc!o*SS=!W^&k^Tr1d zj;J^;R7u$QQ0C`wU(4s0$moT`GFsxZOyuu@-tVXA)H<*v388(0;^&`#)=L;KpI;*J z^0_A23A7{$p-t@UAn?&%EJTDSp77Z+^7lA_mL!oqReXkwSU4>4@;Ni|ci#u4h<}bo zOOgmK}YKR(5$m@Zh2Xv>@@rK? z2@H<@;;e%d0#^Bn4krTwfAn5TPbKkV$#oD?XtVPpQOEmNT6!( z_ucGhm-i%kkEI`d!Q~0M=V(D*RUEXLxV$yX1;qUT3jeLxycTCs^5~yO|vNKz$nnX+> z;?W>gVnKraMZ3Ijq+Q+@(@6-mf}9HxQ_)qAPC|(7@&*eMeBH{~ zw=uFaTdDuhF7H~j%e!aL`iKPyZdamR-f|Mc13?QX1gf}oome3G*iEhICfeowGwl~e z3liKuM!UQ_&@S(%X_xm-+6jmRs<_SXUrT)Omy|aXv5)q>q6GcI_TKL#9|dPN)+f*|?_cOWFSH=h^Q8;zXqWc~ zw2Spp+U5Q0<#7U4GnTZn-|Hf6$usn=-~6q0y`Bpe6`%!)t~a!@qg~z=XqWfdbP_^~ z`Eeqqdc37Q@pmk0uWH1n z2y!2FD(&*#Kqn#08nUPWElBkHHs6kRc^}(#mM)}k?8!VAi-hTzfG%Abgsd&f0|eiP;ZbVM8*00aWTD@>R+qH zM9ig=5Kf|zK3Xtd&Qr9@yEEO79`rTZ#}Y(LMR&GA6?%u)_Ype@0W3)Hy@_^t$4){3 z0##f>WoNchU8r0wee8&JN>CETf&`bbXqWd^svrGmm-lT!X%_-jT+>#6DEYXV-hycL zZe4wV`Y5y@!F46t<$W8yo3V<%`}$wnfsF*Jxcv+cDY89pB}R79_asigtPb`h{zCp*`CJf>u=GLKU~*vX@(_pxxEA zsTD;F5;(J@Jw+P_T8CQA)c>V7s*pex&MavR&mwwIz_ZRwS#HVOAg2Q~qtAxYT zds)bYL;qJo@Crndh@BA2VuwjOxjsCtd|IXa@Wgk1vXPx&i=2l#YfrN5~$+8m$~PhFlXdw`f^V2T?r0LDUrWRs-jYYmLw6o=V3nb^CtT7 za$Fpi`#-mKpD@gc@qZ3qU9=22cHB`M-QpdgKF%)XTl%UtOU1`4=ZpMd#^< z-?uPYmNS8t$~3Q$Qi8sHg4Fzr`#|E+#a-gxv~YYNL7+;mwA>FF)Q#oJr zKmt|#_cEo#r0o9MI#|IJws+^@dB`2C2EjwTzXrWWZQ&LL) zZ>d7UdEr+bJH?#h=U+S@F;(JzL{}H@2NKTLD|Ghr+hYW(g1c!-qD^0M9kgUk>46K2 zOU8_D6RZ{c-^a*y=4+bh%8>y{K3paqE+=eEf_u|#}yB;uYEbKHOE>%d5$DxRu6ZO3}W zbVg&tHpL}}3)*JhsAf_%@~<|Tcbc1cF}2}$cwPPuFItdTwWUqw9?Bno^GB%<`WJa; zIICU$4lfd@!aOPU=865hnY5O1?m5LJlfG!1ned^RHJo=_+f4gkoBHu$YL&Wd@=$Ne z<44@HrWO~V1&Pjf+sv)iB~?P4kswfoc~a{2H(Gnu>g0MeIu(~}SlKS~!U~hB<^}CC zH*YYh!qh6Y;oL6X^tbAIGcGAEKnoI0zHXZt{*j?0Vse5&73N8)qv=GT+urEqeSC9q z$vN{2GIge#RP{NfAd|De#EYq=GXc+N?7eh$%Dby?aRFM8$UNRIv!hs2^>?kt-bd%8 zygL&FsxVLV+<;D}oVZ}5$6qtAG`}$O$pDk80ml|*9vWrh#ndVld>sF^4G1c zr0UJaO-uK`RF*&$=E={wRZRJqG`P6r)qU;#yT+;deMEczZgQ$Hwe)T3Y89+bbafv* zt+)U!NbLA9mASZ3Qgz+0M_Fxm&GsHj5U9dDDb?+B*P214KW8hQ@dO8>GV#1FT<(2`BZ7_Yo?)XhEXI z<()Gn!RSn>JBaw`H^*I>AW(&QQmVlLbL#0l+oVdq-21@&o&7N*rwUW6)RJT8=znIe zDgCHIaRFM8n080!Os$P_t=3kWqtDn@mOvHeNvRULR=q3cSQq4&JILP+mTM*7fMnm2 zTBTN!k6%AnQ}}U^DzR|9La@KM&!oCTDR?Q_Z!sKPuc)q~2_v$w6b#`Z1tOFMsQ zSjv@r{gUsKq*kfh>3)3hn`6x$X6~R^_#Ozs_vWLnlBya+TtrVs=OhSJVV;y4F?pz- z_4pC%jP|Bw;BOOis<`yYcR#sIOKQW?ZoM0ncCjGA<+vf`kMF-yL20+7vPB$_2I7>bE>$e$`?<${!40=3hKH3JgDblL4xc2jJG6JB~|2dh`$DAr|)#O{Rm|CTRHc<}=+C<3*65Ku>T_HEPRzbU~r4H?j9@%4WO>G!A(a<9f;Oy*Q^4!E-rvDHN65N+G$(2+I zQ7=KD3iA|>88nX>cm%-TSmso5Zz^lt-5G?PVT?ahPinrk3W;W(=og3@7n!aRj@9L;ka zp0RLQ;#BeIUcTdvsZ}bN8|d-D+(7by1kV#%)7jCcy}Iw|fi8{0wah<+Ko#aGoDXWA z5Ay7e>m8?xXF~D?b4)FrX0^q2AEqY_*W7AmUXl+acuv)4l%%THcdpxPR#^g7m?x!9 zpt&>G^SVvVjGo&lP8H7@<=gF;T53yLRPtv1I!G4;b56+z5hZK1g%%`uU8DJT z(&OCRu#0zKb6q_qL7)orL_TQ!YT1tM)+wXRsv7tDoGM zk>mpjUIRLT@@GmrjR1V&>;!=-%oDXfwAR;^&Jmt!|@1-Q^l)XJVxPoc_mCz ztJHC{Mt1+))z;6!8kty-;PtZqUM;Cw*RRN%HgB~ht7<}^3iITTMg4c4Xe?TQtAHHl zeO;U?T+56TXhDL*JQ_6DDxcOxn=D&X_-kTa6jgXdl$t|pmLFBlv3{Ry)-2^(A;IgH zKQ<5_-HBLwVvcn%L7)n+n^ND;Zl(vl+sc~oY`&MO+%moL%jTOt+%h+vDlAOjJIsWg z#@jp@$tv~QoMw7+Nh_;#ZN7&V=ihI8GMdDgl-eI*I&-GKQ)VUoR=#K|3wyxq-fd%7rGM*QWEZ-#`w~bhA9Y;Q5 zmf`C?8NFgmN_}2fQ~z}4+t%TP4+Vr8{InO16VKH(b*lE;Rx9=asfwwFpPKIQisa+$ zR89R^&9|-UL@2aCyiVUoJsHW;n&nRw^!`JCSd9`yO!fTVUhlJ81lQ`BA1mngzx`od z#HoU~oS&C?;b<~OyhFrEMD%1IV2Kg8FYvgnGHns;X}qNB zVpP+e&LL z5p9zMsGOWTy)lnVK1O$5Y1P|TPmf>%EkLL_XL>S{r9F@%`dL4Y%F$ht1ghSt=Pi6k zd@LE-&pKsvj^02M4X)@P*rP_b=MBb#{%+kOtY5y7tRM-kXSar zl94QpUbohAf9;&B|4I_5+C5C4P3O0B>#EeA4{Etnh-l8KLe+q0t#C9MBi`Fq%YB`Q z)0jXD62pG8WF$)~scmm{>vcL$H%Jnoa&|tY7cG=jJ!;+Re$e4OeG3sW3lM7G89EwS zF3Z2w9oP9hlXJA3Z)q95#$r+rG;`hjtLtc$^Z|r=a)^$`iM1NL?$&X2H1`IvxIpC$ z_(t1ZB_F>xa^1G$>*&s$b5N-!*J~NQ#)&--{Ngr0x3V6^J}@pIROJOa8YfPAfOVVWp17 zi9einqSyYD-PRCJ6%Y=n(kGvt`edP`s&CB`y_3J(ZPjD~RO-*CwTxclM2Eg-d0&0G z);f!bm<0&+(n~rTCw|)JEbs8wYpuaa0#xaPO;dHL|1kBV8W9WjthLT30^@S7O=}sw z#);j3o$obxw8-kfJ|He6)VR$$8Yf=x_xaunD~hcA1c9pbJ8e?Emz!}A?Y|-)yH^)k zN4TCtT+Z+{cC(;l3s!)8bI!Kjb4ufGXWvr+z$J zQpLp9fWWw%N!zuIKjXy4OIz}I*Exn$1#uz4VHx||ASq6=L2j&XIo?~??mxVJkdSA0~f>$=BItmAFtoTCK@?(L#|06|~tabFv= zP+u#14Pr5=riHhAVK4x=&AmjG`^bFIoHoej6fBQ?J9iRBq&$k1w=FU zffgiaq$c|gl)9frmP?zq^msNABTz+S)R|w2kC9srmwZpehjh<*^cq@_;8A9{58&xr z50#7{;w|=p78>vJZU}$2g)ylw>#i?cxHHe&%miAHps{xJRDVbJ^@T%;;Q2?4Ko!jZ zD(#nibfS@d7b5yHfhrp5^Ue`JRWV}1sD9SwQ8`|BCeVTe%|)W8`kTh|v+gH?d*>Jd zDxP0mP*cj)DUmxp%rPlVp74p)~_Ei3lKctjh^byGqY_kl}r_? zXx`rGVadl9B2w>E_jt6#Gy2ei1kJp8CzrWaQ)!*y%|m~pTES%&$MdL zz8sh?j*MNA3ph?y7sRp{*h{f)YNdi>7 zMz;S;N!5HJ9vQmWZR+PEii=mKy>0Mff6RauBzX0UcT<{F{XlDdZ*6Vm z_9GuL0#v;2_ssTeO7G%Sfp;XFr{D9Ur}{Kg(JfD!R(eg6098t*{IikG_^LJ$bIAvfme7Ln zI(hGVGLohBT_ReYJgtytEHMI9oLX5URq74O$6x19E4(jAl~^!d_808~5MptX02QvV z(hecIy6rZ#@<)BNR&2`^ZQdl`mb>fj)%wfm@CA%Uv#U$nKO zdOn)gMTejIw%eY3paqG~pJ-)At&dA>$$8Y4@I6NYRqI!_v!fQSgox$=ffgjjoZQ+D zTRw%YC=#fuJHNn|c3!FZ)b3tM?XE?sLJJc8*0r&t9%o_Kl~#uOsCEegRTbwK+EK4I zlX|sli0DHET9CMRUOPMLIo)yntQOSQUY;OORe70Zhkd)szq+4wB@w)aj20x`m{Dj) zV}=oJ*B3rXV+PJS5~%9BUfbcQMm6uYzOWGyw-SLCB$mzAb~uVs$2L4%awUzHxDFzL zDta1jM`O4}For`563yqex1(|5o7-!-chJbPCHX)CRq1{0?QkTk-lvh}Tq1a-2rWn~ zyt#uNjd$0!xz)XpM#%mQ65>MDs^4u}#_&qDqEYyHL~vh=79=WO)ya-#6V=ai-QMHt z_#|dM*3K zEuonguiT*piO-+tYDe?I+B6@0o#vcF69lSuOz&jNjFrBeMQdbDX$HwNVYDF8{6F37 zXeL~pR=ghja;-ZkL7-~s(VcCXtJ6-Wi_h}5e6`k{LIhfn==w`{J6Z#H@XzzTKc6Xb zXD0|$)fmy)mQ@PcWkIV3?>tfDa?5}gBz7+AVMnVU6-!%qx#t`zZJi)c<=oTRmh~B> zhS7S-Nwi)vmk6{VvHxHXJ6iY24_1oqND!#vm}F&&b~**b!hjG95*&_JyoxDRo9i7a zd>{)UD!wAJCP%w>h`5y2$a)ij7L1qk6s`4rPxs@xwMACr1c55Pv$7gV`+ewsjDE7n zx|9gCAi?(rRynC$JwYp}Jjy@G80M4$x;Zo8uAA1_n8Yts{xGZF-< zxCM`%u{5W4SDvw;1qp70qbEN;^hltJ$HCFgfndCA^`d;B1qmMeM!OUC)42UX+MU3wI7pz1$Mdp(LaFIAZl7`L z+g1({XhDL<@X=0=LYjZPIcl;0JPHX^@w_D3EwYa09}}-yY;iw`79@BsB70ku+Dfyc z4x3t8yk3F?s(5}C?Rt5ch?8DzWpyJ0ElBX3N@jhuQOXu>nq#avy;^OC%{cwuj`mKD-wRZmx%-@wdM8vLj%S$WK zxdv!KqQB{)7(V`XhCAjh9bM$VDWK*Zm4g6 z#P*J-d?10Ukt2)jJ~xPubU{PCbcOBprK^h;BzATzvZr4wKAw2_7(F62*gJY*oQSDD znPjiNM||Ap9iuY^gT0x2+8bDqSe2e+zkI9s$b7%aa<3cj)l3km`n~-myZ1`*F=+25 ztMbh8-XJQwXhC9R?j-xp`^3k@v#+tf*)_wPL_Ux})nCQe*q=TnJ}Mu5jdkDd8Qwz5 zIa-id`oJ~zvPZ;6`0OciRwAkL67U;6?6yDg2cNUiZW3>Kb6#%6*ly?-4-WMwWs^! zOw?YrU1@tCw{7V4q*S2=iMeM_&P4519_4yg`WSBn-E$;R)o=OaOw{i3b>iz)pRN^J zkf8Q46ScdU>&JV4eznPclYAh7s;|GCoQe96W9fchx|ezbYT?j=#5Ye)&P4skG2hJa zzWZ~c+vb)yfvOXZxi%B^gMU!DUGUdL_g89n(Sk(HZId%mKe+XRIo_|YE-xKVsX_u( zUsu1Dz6&7z;6Wm|uf2orIa-jgKcDOq+*2$6SMe~N9{Go98KiFSuYa{IVQeuBaSRdT z143E`B!-L}1T-^Dhz}u9#V686{*Z`ShO_}y)Q*`{aXyl%Qb07%I}T{{fjNw;((SXS zN~y?FH}5h~B~z6x=W&AGMG4zoPF2=?(BC7~HP9Xl5nSDvMF?lyFP?;1Pp2W!wHjyc zU`U{J}-_}PV12{tG?Oa*5z^_k6`YeBuP(2U;ZT$4jZ*`l9%l+3OYebt0O4G=H6_QE^~@uclqw-{&`!*2M|hB92cr2Y<&E1??l>1@Up9@0Ha019Pf-h z&HR(Uj1M4`s5mZEN!a+{xaog>KDZvp`B12mzZ)Of2(}<0VIiW^tRyb>E@4)2IQ#im zXvs#14|8UeqTiU&c1G&CgxMdrMDlmm@z10TEl9M=o9Gj~^>VZYofJYA4_ z$B1x5#c`oZ!p6t5lRJ7#OpQ`#kudw9Gu^^d3zY)G5f#UUDhV4ONB3;xZG6pd85CM1 z%s#4o-z_7jfKksJ5ss)hE>ua___&8!xX(-rr_dr{_OWVl7dUqi2uD;L7pf#|e5`5z zirc)J-?l5XNSJ+a>G^EAwC%rBZ?KzM>dl{zZiyBo>QwENiB1=rOufNdLH~gSsw8Yu zbylsB?o89GDYQtKQ^h4;`Yxq_a74v%p-RHWhk~|*>w&Z-QjXb&{JngFEl5aM2*1XX zD|&VdwNv61A6U=J5*$~Okh-ZE7sn-Rysr9W4@OAKO|qw;wHP8u%!WK$V1zkGqD9@oMb;$oGL33A2y- z<8tlS-^dAklt-XS!p6rtL;8A4cUSk@M6^hleH5IMXYXkyKFT9dC1K;^tg5ZN!XtUU z541>_eT+Y=C9SG93Gz`Mfhq|bA1W%lihCJ}OTw%Yg8h-+|M@+qLQ6J6e8l@f`6h}G zDTGJv zm4uBCMTIITyJ~IC(P3N?W)+tnt~bU95%e>q9W6+d?*j=`NjT-_p6Fe&d%f=iEfVHzK$#tG{?v=g|v`Coa-7$2S&EKy!K7df7;8Q`XmyW9mXm_@5>8b(f(*jGYWE5+S}y^@&qqk0DhQiYeNQ9g zJ;8Wap#=y|Z8WByO2j`zoIiF*OC(~db-#MislYgH&!+P85hGyr!%=7n!c5R9#A%+f zm}>=uLIPD1HaUmY4+kw0=6KUfb(&95Ha>t*qT;wvC1K;EAIL6b$#q~hql5mn{9skVON8(D+70pJ755LCxoYXb8 zAR&L}m{?erU`vva)P{t^A^sj9TiAz$Q$%wZTL#mP2qBhi1kXkAWh27-p(rbUjzlG?%I1&6{x42&T*+%CSDocpqc(&+B!2@`R2-JnW+zgV zk0c=}WP*RjkHp2Pl5mP>{{E=k8($t0Xvsz}%|vu{g}RaME)M8N(;x|OOK!kiL}$tT2*gO+SWm=8Z~%!(>S>E*DbME)Kl93AJuhg!_{53Hee+FSzrPhr|O#z(E8GxfI%`kQ^117KDutMMXsF2aPPkuK=S;{?7hLpM_ux5)$UW z`vCvz@c$()_AcQRsW>caXQVSF-QfUQvJojvmG39jdPqv*LR$V_KEW0wBy5P`&%an& z@1hoZZHHD`^*K@)em8jkan_1?h^>zOyVk{9c3lQqMCHnbrHqrl+6>hJa>+0!A0#$R< zI{Mb{-=D2;mlJVcN6H6UkWe4$Rd-81s=WT8`{S+E^wJ~&D(Ajmb@Z*@`fq>eR==&9 z?m|~LZi(Ve5aHQa2TS>-Q%jZt44`Rgnp_AkjZJRb`y`*!Rx4-kKWs zT1WU=ApxpXot#wkt=}O;v^@1*Ybg1MS%662qEpjf5PvN~}Yt)YcikA7F_Q-@fQ| ze?jixx)bMFcfZq6-6PP1}}c!vqJATj1$cU?tU1K8T}V8QVF^YrUU0#(>zs83Eg zSg`ehJUxkW9&1aGP)eP4ocOrn+=B%#5OHggKozztYU2%!_0~JDvA!fCy*f87-(*bP z-7$U3lR?So(I_2#NAWBoM%{jm^&95{EHR>1oAk6CDZ5|O$tJ`5KVw;3+JR7@N}XOS z9eqc!(l2M|R|h;}y-hx179i5y&r84hnE0sn#qoN@r@O4j69lT91r^iLcN9+}qVMOs ztTTu}3lizaPEP+*O-jk8TYk1K|Fx3tlq5ifwSZQ(=lyKGzQ2<0nW!HauXFc*yyNIp zN7H|dT2f-wtx{WWOc1ETxn9(uei=#@U!(k5w~-V z0t*tH!uy_*G2AS=Rx7{Q<&I7esN(x{Cw(QRn*W9F7d|^)_x^I1yC}FHVnKqh^t-3Y z_^KD(^Bw)4abHUksG`yneZ{ra{xft_A{r6F+Se)_eZ}?Yrn!1ll>?<| zuC-u6B0aKude{BpEDT1NW>~4ViqK* zhwFNr)Y>nouYKU;+P)7YxE~Z1w^!0)DAkbq^W{W5$UeXlBdBlR-CKOL7*%4Od3tTH zC`o_{+ZClgIh^BlYu3^_MCA%c7U}w3Qc^PFqm0Xs{AFeITNf4+?ExFL26`A&`-kEt`)rwOJizy#53&fkM+XLoNEs2=?&9$Xmu8=?# zr*_S7daCcYiH}mM`d6G%+8{`kSpFYnX96BI)y4gYfXJeNfPg6A#@0e*q^PRH|g^$5UR|cm{t79&SA{0>Z9Ij6@;iC}|`-tdAglvI& zX%=?uoEUx1(R}c}6OGKAXaZF<7yYTC@Uh_qnsXj+WX|ALp#=$=P0rXMd{kYVU(~l_ zvbi*xK$SFt_k1hAs4@}9m_Q2>6up-GQ26+??(e?YG`7DRO-L#j=atS=3f18>W8sJ_ z|3Di{%vg9eotUwVY1rEGW-Oa%6x~HLmLQ$AXhEX!me!UxV`)w^mUn5!@?sQ$s`@=! zS>B9g+$}TJ@ib!@LEC{AB;MW9%JOC`rD^`LkmeuJ1gh>DooRV9mXkzuAYudgKnoK4 zm(sgg+!@Qlb7}s=ffVi5Cu9Oud|$x*^ps}jj9L`DI#Xaxz_Myvn1T z%-JXcRk?%HEiWh2g>o`;iC9g0SF%98`<6DhyqrvX%E?@&oXoB$0#yquH@D*FWYB^{ z-`Z(b{G1FDs9JcvndRkVmY%O--b*=|7ii1Tg2bjXsg{?MnMK#ZH>xjEXGIaH>ejfK z<>h1=Q@p$8=1cwsL>wEEZHbsV{mC5qWy6VHHq^|vMC7a}edL8S8fe>|9jaa@A4s6;gHatUZ${6=dqn(A1X_@ox**$%KchziRryoeTi%Sm z5zX#0y1l37k`J^Xv0-`#%bU@Mj+WDI{Pwt7KZ-zAe!F&-H>3Z6h^mK=tAluK2MZFt z8@9K+8U0e4(SJqr^HEU*s_-hIC@qOdpd7%<+$y+!AhB>>Tg#i#PhMN7K2fTMHl2L{ zfhxR~(EGe73jd9w@CV2TUvb17fK?*$=9;{?y~F52_3>&oOkbo`!h!_*6Zrr|nL7Iy z^$_I%j3@$Cybrys!CgcgCW7ZUXhDMaf|oUTmvR8hC~L4gia-_j1(6$2l(*;zszlt+ z1Xz&Zqv>T0OzKzNy1p0WoD34E;vOn;1N5{7B2tK`Lj+oo;9e>60g7^+asZ9z3=KAk zB2dL=nwK?roX)7P<_!&YkDRr_f&`ykUe=%so#(^LUn=SvMWBjD3@>Z&JrQ4)xm0wL zT7?!Qa@XWoUe@48%gGvi8bzQAM=VC_B@rpO2&!xQRJR;~WYdew=79=?0@MiS=BJ*?3 z8emSFsnLQ2 zM}T6kt|%L5Wav#J!#hy~s_>jwl*V+8x=hz7K7x2%T6I&ZB{Ki=H7b$j=dU+vrhZ8T zT9DZET#9?WQj}YX7~8O!dLtckBv7?~W2yze8_+Ke&6+n;Gl)P75`_~}EN@2tRIL=V zv&7YZS*(>Gk*`1%}=VOnI^qaIDXhA~hm|_!7?iFYBNT7;a>(0WJHPou( zUyroUTFChKtQ6S}Q5ULsAG-5)r4sGkiiypFUq_CIupq(5#+%Vk zqhtQy?Tdn+M-iyv2*;g;E31iUT76NFXLo2pf_slQqrXD)bG6H^;It?LRUCJDGy0Q6 zobS9V_$w1&L4so~Z$@8(=I0$hz8d5a4hd9o#OclG?$+FaJ1~r=udpRGPrwc9rJV)fhvyYy&3(RG^1}b zy^d-BDuWiNmt%NuM*r))&cTf|qyLp+YOD)YJd^Qe^f%7$92`$GdY&7g1qq&ucr*Im z>+*|IX?|`+5valuTv3vV@DWi&1X_^bIh8k~&!-vvL>k)*q6k#sI8VQSzMD=RA)`uqB#^xsOF-Z_z%)$_iS~5E8yw#~)`U5?TZuAb;X}F4Ge*_jfeg z9IIyg2+esQ#4BsqBFelPg4VW#cx8>VE~7XCRifYtSOf_I60eyf{J}XCxdSiv2NoMT$ZzPeP)w>IGW*Ey z+R2JPCJGhTg(^{YeBcO&7Exv&jql5~;*W_!#dV=dlpP;9!l6Z!*~bT~a;^AdqEK;N zs1jwzM|T<%r*v}0M6`%9`w+*R%ZgGQfhtjUd?@zE855_6AF#xjD9Wtjo+!R|^kPgz zOFV*U$ARd(`}US|$3#))w)69H#I@b^!B=MkEl8xMG;z-Y*#{D+66HXoRnAtk53W~i zA^H&C#}EoyqKTO8u=jx=cxy$O>z(9Fc70P@?2p|t11(7K_HkwxKzM0z{T4Yu1pxGquV{S)njDW_#< ziAOklS8O$NVr$ugg!n!{zFFtp1%Z}mLTn!s-u0Z<|BEdYW%kGS0*LQzf+2fML`yuv z-445LjIl}_4BeL z`3M^HzfA~BJR*SGVIOzC`%DmgFPSKd?~5ncf`ljw!aE+KE^e`NA1d^b31Nvx z2p=w`h`QLqEn%9=;(M{LVhOe&A&g|b#Em{1zO3G zyzhRkZWMv4L#utdw~_k!c{O#&} zMDXuwXh9;OAH7MyUCA+AJU)<2?A)8nhs>vmi_NR&wCo zHAtYUPRTa9w~_GE^4cLD>*vtJ{X)r#2>VG zB@5J>+OM7Nt>k!Z=M82}x>u$p`9K0y!+vR}dn-9!q73~5M4TW3El4aq)?W8ka?Gc7 z840v5gMV>H0##3z?4WxqIq>cpv>=gFHCy*qas>C@WA>`CNaeLSNT6!n7ajEYD>>>c zNY%wJqdQ+rp?ln&l^k7uNY&%7E23? z+lV+fYp7a*Rw1DUiHSo}b#Eod3v_Qr-Olf+ouUX-wVRZtdn-9|>G$&wyT7L%q+Ws+ zB)Uv!rh6+nhS9J3{k}i0u8Sg2m9wR}?ycnLM#Qv3$JKA?c%TJ|6$jIFZzab#x(njO z`O@04C<0Z|RYG}@R&tcOR9ZX4t%B)uL^D$@$p@pQ$x8bwGdxRxkN8T!38 zNWa(4p(Dsw9I=vvuTh1GPJW+#i}f1xn=tv9Km?zIk_8C%=dI)@MR#+2N$WB`h$2wM z`_Nm-ah>+nH$?DyAG9FBd%;`DvG_$65K1jl^h%C{7~l(4f5(w zBv8d?npm%)D2s`hKm@O+Mhg;rcEw-Gfdr~}#E8F=11(5w?4F{>U&(<4s&G`2S8|{Q z2`ns@(tZ-F_(V3<9izTdM;LS@bz4*idC zD>*K0YhwSRhy?2L z*Qh3R_rRiN%~X{Lv>=f)BFDX6$tyXKKvhzwY(4%;4zwVVH7!Svzmfw9R1F)KZO?I? zRmHfH11(4>ALO{RVnxA~97v#weT&r>^lV&M$st*wUiKG%B?l6y;(aLAYbZ)RIv%Cd zngzAU@emdy_}F+WIkxS)$NZ+oqF`zifhvwyypaG9m3i66A zBv8e1m$#DRF(OXU+K+#!RcJwiV=Zqb$72-r>7QN=mZ9E`1gbcG^j31rB4Xo5SA$?HADsLsno3xT+C|wP9MiHpOao&FNuqvKa{OS_F{Y+w>>x(ky7Jj*5Gh ziL&E^o`J22r)Hx?l-b9a(y8!d?&1hkiL&E^p5?8Hr+=eGl-UP8(H@>KUL1icQFeUL zGs!ja6mztQGW%F{G6|lPUL1icQFeULv(+{6G6+5E*DRrO4K9>J3DBjXyLMW>X7)J z_W}#ue4_n}qG)e4A)XXuS1l-;5EdlFz7jq>KWIUMw@I{6@?ju>D)D{5-dFU5KP~bO z1!a1TTwSzElv&lYRwsB*LvaMEMA_L6dQzbldA6Z~7Exv&fo%`K`zDGbP$kNa4|+p| z7I~+If)-I`AM^}-cyC5=1gb>Y@j*|H)FSWZ;3x3gb+JX1*+-e5+r#@miX%`Z%8n0} z#>Dd3_B%!tw1_hMcw=!}`#mOHrYCF^L!e5O9Ut_r6qVnVqR7^OROrMVB2P zM9{|>ON1&w-ub!3V*J3GY`III1qps%m7t3!P$g<&-%QwJiH)*FoX?`nTl;?}g!g!a zyRTe7+;-su&vQ|B2}86j9>FT!CQ*~!eAfqBuwHDTO$Z+b5~vd8fW5D9^r^Gg2#E1Y zlvx$}czD2jPHJ%kszlk@avXioBFc747CjR1p7&ZDp`a>Kc6`tiVztOKWfh^aEkGEr zXaVoJwZ##r5@p9nZ;E{ef9$+51TCV>+d)sj4S3JrEtUY4ARHe!`k+OWZ6BL1YWy5w zd%sEJl~8eA2B<{Y@j=fjR{2@Q3VqNb%C?UaD>d&4%Ec0(G9qQi2R(CHjXb4UL5nEc zZC_GDyHYwevK_?{3aTPy#|O7xj6SRqW0WWd=y=c?uT1xQTQ3O75}}dcG6UXN!h|?G zMVVV7YKl*Yu_PWLZHMhmsJJdX2gUcr6Kp|3lpSI*y{-A%ev8#c^giLr|FpL5pO+No zw;BI5u7f4s>0G@<8_RoJa}y$NqxU=WJEYNq#O&N`%X?e1GP#L%Jd~z3k0MZ&{Ae5N zt9FiWMcG7eYrdJ@*4&8*v>>tnzuA`ew&qnt?D{xOZ5>6RDrZU?%X=gAJbLT&D0=I3 zZz6EZ%ZFQA;{DgSO^R}y-kv?1-kwcwZ8p(@#QqVjt*3X3?HEi%%j$dVRw03^ySuix zyf<{euU6CkuCYh$MLy7i#KODjIQ=Ai^gmZZ+i>|$wObT{s#kw$Yk6-PAM26^~|!wJI}EuI)e26^Q6xzY1}Hb zAW`M#R#rk&;bRC9orriSia^!79okslTiHz_(uv3=0xd`!8{NwC-u!-+-WC56z4^Uk z6oINI$7NaG+vPvaS*>0?S63@R1X_^z^|Efg+Er{v=d9K0tH0LOh7y66zeekpc+Wl7 zq$scT?V{e0m#Ae$`9R{&bD382;jWMVUDW>$NYwcJz`9VCHcPkWeU=<{-ZVaMbQkqP z|3vLH9dooGakU>kZDE4&@lN}#{^iF~G$F2U=MEpTMP<7~F zz|sw;UYRJkXRH4UBF2&rv>=h+Hel_WE?V{06ITjXH*Ti+qX<;(8>d?H4~bUIYIvpa z#wN|Qi_|K#Ao2WG&1yeQ_&@?Jc?~pc#}r3}H7Uw>`>O}PZqrmNL#;v!5}lW+R{D71 z<9;HJ5>Y;iK-H*;KC3o8%fdN=Ck|8(zDdNLM4$zUKqb}MFhcm))M8dJy>)%9UKD|< zKVNBSJwH$Q_%U-<@JqeE_B9b`K_X|K-^v{ze2i!^EBI2|`r5a&chS=ICd!vR?5MCN zdeK6YU@&!1O-+gNfkfx$d{$y>;iGzkVDR(7HMOo$1gbiGn{Mgt#CFtd7z{o|#N$Mu z1&Q3-eAa+u;p52i^T8^0%h=-;5~!-*wYimiv1#OZ>{@m{n0PRBc^6SzTR*UwI3Tsl7 zHigON+4RePzH*`kiTvqwcjkS<$Gb#aNVx3p97Uk2a=BFNY;Ca}tB4qzeA%xPfvQPQ zwy>6#aO#zbvE7<+RB5y)0xd{znOD7WG^i*MLWxHR71y+GS(C`#6+YUL53GyJe{6T^ zm5CX&9eRt)Md^`NiMo*B?R)EG(JJ2Z;|Z6G9*ZJS#e2Q=ouXBvh)7SqTr`9TRPpiX zG0Le|CWigp(A@j#@Zbz0(1HZ_g%>-ER;{64(tYjlAa4f}sNxE6`#%9lSHdZ5HXtw zj>yo01fR{B7aK=<$!Z#X8Xq|sxsvp~SrY9)S1i1frY6p_6|1ovIEAi?q6=NZDsVv0o;(eoGpcq^|LM)_95ak@_`nPUO!HER9KUujG>tN`C}>Ob|TP%1jpC^@e3cr zDbgQ6MB69=RXk@XeL-wTCPn(Kh~S6}ElBVT;JZxWW7HE})Ug8+Z68RWif1y7s)=6m z1I>!myhQUx@_`m4c=qy0j_`48R2Q{>|3q^f5oqCg)Zwm<3Tsl7$Xw0jxf)uK;5pp2 zJmI5c`_<}uztlBTq6k#+Ty%e~*p8tzgIs#9uGyamv>?H=$(mz@kI^)*&Hb#B$q@h& zsNy+w>(_;k$ZXr}P6VoWCj9t3r{3ZTv>?HA^-U{9tNJ;4h9LVu0#%%`$o)&SY8Pb< z68`)%c!_#DsyKr%zrd+iCTdY;;?v*$403#h79==J@zg=ls$P^~X;6Jn@WChoRh)V8 z4-{9m? z`*E7xDkMubQ*TEL66|k6BqCRo?X=|s9~|T7 zSQH6V$vMlm?b3r|_D?WhJ^g)#^5iS(q7w<>l+MdT%0f#Wb~+(Et{;`FhgI*Ymfveb zuxa_>=7^csGn7jMw9+LL!@0Xjb#0lp>+ZyG8D&LCIoVqiS5!s0>0~gtVb)XT&u`sX zC|Q6oj&0DqxTMDD^xzZwCYZ~(RoIeF<+TTYO$ZmvjBeHY{nLZ>Kc8TJ`rxq)sl7;S zZL6hSO9(%;g=i(K=;7ctb-Xzz<)%W3K$Wx|KRmJ__#JI|+G5&rv>@?dZ|%ksiQ&DU zu#Y1TZwS6pVYt~mnm`rqLuKW$?4p71Og8&l2MVO)fybbCbG6d(gm8X)_Oa${V$r+S zWV8L2(uE3Ikmz3`=*0~GT+A-oxqh-au0@JWNGe6y^<6^v2OsS& zv5$sTN~n|1J!4i+pIaaisFGTEGH;FFxOcL7bm#3p1uaN~ZU_#geRXp-`$!wG#y^#a z!_kDK!Y%Lne1Up8Wr(Td&&p74e8Ifo_Qdcr7ng^O1-Hp~XqV|lGI#Dip&ou_fZ2O)SD8T7P5I{YEhFQKQnw<#4Ql;6 zMGH106$bqNkhro0lz{zgA|9QMA}#c7eiLUTQnZE7Xj@yA4-We*)hAir^o2S<>Zq_L zT8B(TDcvC?3lO0|MyOIV;p5=evD!bSrv&rfOO{%Nsz8}$A@Az^-Pw`a!<}9WzEC>N zhpN!1)X>}CH@4d@6GMq8)%msH^F*KpiBN9SP})|9rrzG_3GMKA2ZFz!Pc4)PP#Le+ z3we=DqlW#oz5kvK_NkZd!@7*y>V+PC!l_p#S|#+;%s@?4G7C!E&U0%DhWmoglXaZHzIrz%{6TwHP4lwU|qf`c7^^H$A zXoD%Yz{gp>oE=``ZGE0F}}8l;-72uH9YU zJVo0v{n!r~2CB}U)Rv5iv`QjY6HzOpt2vbkuoy@jIj4EYqja4H=DJ1!^XWaO3M2wl z#jFB|p#l*Z<7*%{{B1I}d_pi;V*4b0jbX_Z7gI;*j{j(UkrpaqCf|62lH-))f4 z*8Jj&I%d7LXA96fszQ}(2fRF7qtCO=d2~j-bjzg-R2iYW0-KsTXR1tW*`IArJ5|$s znF**138nen0q;B?IH8yM@}_ISz?$C*kU&-F_r?J)XE`#VpSeXj7rc7@S_Z0&ml_As zR!3ST5wjcjGxM*WwF#^X2_v^@z#9`^>NVUn=dKUlu;Gsai2zmTvlam_zuV)Nk>=zF zUkiS;Cj~JYLA=! z?TL`;0wVCH8aU9xp%tYv?W=MX6V)NNm9kqU>OvLoL+@9a>u--Y|6bck-Sul3pQL)E zMc~5nNUJ2G&O77HuNHJtcN2kig^*Cv19i8HR{itXaC6JE>(zGuDN`sBpyK}K{esmm zd5C$(yaILYpXGcZP$@I%oSw=^AM9--)R4HIZVLP-czNOfpM=}qTg&kwGt zv%fA|h(rifd~SNb-QBgjhuPqCN$t@+w@|B~uD9LpWm2iZm3sZn`%_@VO@bh*}yLsoO)%V?+uye zsD=)K79;}WO9j3zoow%EMVUfl`;`U(Ei|`cp+ta+$9(TM;krxfnqSRqqkXcvichL* z%Sml}8>e2GSiH8bIqeyTkSstb_aD+0bQi4}-MqB9?s|7^TbJ7kB?44@eS}}!OI{ED zbw@94Py)@0P}O&Xwr_5vRTA-b#p}Th)q81A5P@|WNR(f$?O!5VrO}N3;;g5%T1TrE zN(8EChU~31*faC(;5SW&YcDUV;WJQ`+FMI0h}0_)TZs5RLhx+ctqX}abS?j5(JFQG z!@)V~c&*o@>UN&NB~V4PVs9nKsoNU|&*&4iRlDx+DX8jisWZQd)GHBleoG9_&x#Oe zL88nw^{;P4s~XV!{K`j@wR!*6wDSzEcT~~r)m!zV(C?^c|C+3w-G7%)iBh@s#t`QO zffg#eMA>OxS^1@M3AO5(XS5RCC?|sis%W0*t@kNarm@<;)kLlNw{?69s)p4yhwq7O ztwg+kUt{%7+PmpYpaqFHbkjS6vwmEx{oca4I(595K4vRrq|m`(Y$u+i~TjD>D~7H-1QDB zj&WCa^982s)chZ)BL!yt+1E z{{vd>>Gu{QA*pE2;H}bIx~#7D*7P=7|628VWbo?x_b+qdoslCb5mT1d)#lG=qYYpJ zEkGFKONG2q^j(@q&8gE=+Z?{%p0Nn;l8RG`62_-_R$iE>{VCVn(hR z67kConOd*<^|cE`@LbKU3y8qKHACJNr%kmk+RARXYR~*$-=5tG0#!U073)*!O;kI3 zXw~Sdrgu;9p(;?fUg-WVkt>cw{Jgh^*7y68S{4yl7ZP+u4S84R*Jys;?E3?1jYAFX znXvGVDxSA{>t26uGDMrXpg_IWpfO*a-MWlPsiEE9I9(<2{nAs^CvQu%vj)ODsyHj+t(5)!t?^p@_dBV+Wl0>#xOD~A`$9E)M_MHj+S}u` z)~|F@Gl;;tkTBj$+3UffTH2>?#+N1ep{JqX5`_Lj0 z1GUg*T9LxB77e;YY&cxT|5y|e0F{(MQZRddC@E7H+4Fm6Wa=V&o-{L4kDoo?`*JH? zWY2e=&(cLEZQit2di?A;T97FDcxyd=_8eQ{YpUxadoH&Mv*&0*;@DlS^!V9xBv6H| zrS-cHZ3tecTzJjC*E7(9MDCPUx|cmKKXOB`u*`7t&L{#^xDOTO!5_1W`cd}$df|Zr zJRaD>{#yciZ1#M?_R@uDL1O7Mn(k%KYn;h0`kb=o_avoA1giM1UoU&U`s1-`gFa5~ z_1Jj7F0$tn66$Qqo;SW@ zZUGXg!WJsZyeHQ9$5Af)8_I>F1&P2UP4}|rxr5gDM-y=*ia?dT<#&vuTzL8r^E%~_ zf0~t{i|qNZH5t0do-dl2p?lf$=U*;RtJBQro>H?j(1JuxJ)iDn&tE^gSWTwv`Ru{z zg-DcRix}WZaKCvwPJ>Q z&MQ*(94$z6+1x^ppFKwcRXaPi)V-`)O&Ud8QTF^Ly=h@mLaHvZ=ZcbQKU;#c=l7OO z)x8`*Ys!TeQl23@J=KSn4b4(@kv*4d8n@sX&FbM0XhGul>{Q*$e(a_z&dPs{;GW&d zQmat)^n0ngmpwmBx$rKOJ#XJJ&4;Q@TT^wBJ(r0miMWxn=S-jliQmtp>RzU(DDw%e z&kqNJSHDUvL;_W{W;WBk?D=Dj`f2U2pAGI<+1!V!9nUw@MfO}KI@jx`ohW-Q_z4kc zL1O;VX1bSEd;Rt<+G`KpYL*|8R)_?uj=q(qd)f1U_GN23PdK@7RBe4fO&8g7nHax2 zTif!JlW#{05}Rr?*S!p6qkZYxEp?lkJI^&QL;_U(WnwO6&$m+coC&lbQHGwR|@i9^@3;mV2Gb0kp3-;4aUqUe-8zdu~YKetI~AFB5MlC6vExlFVsVoXsP{~RLF zf<(77*}6B6!t6N`sN#JXKYNa<(Bf=eWY1-yCFR@a<#$qdQuZ7zNR&6Sb#Ko3@uS1d z%?sD7qw19@L;_XZ-@NR3e~J-nQTBYvrgA=1_5O*@iAeTbCMr?({3vD5nLrB?2m&cR1FTvMOg)ucr)4n{AbRs4DqJJ6&YYWugyd&qq@B zyfqPMLE?>v+v#53XAX_+|7{r1YWJ^55rF3%RXpZ<+4J7ZD0@!1C2dp{AF2xPY^#gx zxlHt1UDy20XruXwKnoH{AGOiF92sWMkw6t+AHD23W$uE#DSK|*bh{5#)%&&9MfO}K zX5D-}xRG*wlZikJ68*1c>0Uk&v*$>lif71f{#wE8IjZ&>t#pw+mx%>a-VW}jEGOsN z(IOFLTj^fzm9yt_DSJL`NcBP_=7EZ5#cuvuSze=Y@F3-PS5o#IRXe9=>LPnC6PP_m z3lbGeXXUWeqKQZebAF3wK$J?}@^^HUq|EkpuUJZBL3Yeo6>^}5)PP*G2YRCNO)B79_f@ zYYwC6hcu6xU$?3D-lqEtkw6vCuSEWuRw`2Vyf=;QA5LxPL)FHOX}ZXs%fva#o2T-bFkA(5+h6!}aaio$!t-o{Nh7wW82fO{;dw$)2O?!gI}Zkv*4* zqo4H9y8Y}BXhGtF)(o!Bcj-@P+kQBpe$=9oJrfq*QN{Cik-t`ykDCtBF3u`YE9W=% zp{f>T4Mg@_CVo#EqE(|Pg9)@C@%!Xdh-B(*AFJ*C$52OJPO!5E!aJ%sDXoLo4ndQ*l)WY1;d66M?bQNGkiYv94+=M174Y?{l59=TG0>#Lln?@3P9v z0a2?c7oK^tjQ>=ZWFKaSka+s$RNc#-&mv+YWzVAtRAB~5QQBFPwE-*dNuRl;ssG$( zdAe#QgwqPvhBofW(>FYo5dNd?nvk+HPk*UVLim-5t0_ajoPI}L+j{txCF_&@Xt{80 zfUOG9vrMoiMOi_FLaF^7>yjlONN}0o6UQ`V2Z?yjzj|B4wXuXyRoR!PwpNaZ^=hiwt9JLMEgs>pNW$`^L?T;aR2n(vpml|n3 z^ktL}n?MT^bH5&ARk;oXJBcAsb>h1bR+YbiAa!KR!Gc7!=f+q|+ogG1PCzVysxB)= zSYOwTN1z3XGPjMf+AjQG1gcJV7-7*nzvHwDElBi!aqlDewu$Eh2}yN$n6>`Jcs>-cAo0noBdl)2 z;`u-VRaY{HSsho$^MMv5YK|Iiee--gA4s6;pH)MxBOBuRKnoIA{llzrE93bmhoX3vXkz=?cs`KevZorV7wZEoGU3sD0@BBz|7gU_$TZRaY~I>G6*_T9BwRYPcSA%xxb?NUFob^q9VD6Vwx33lckC9ihkc-53H@ z{reBsW6nXFKnoI^){oR<&cPT0Rhy0t*JH*Kn?MT^>B~mxF=I&#fvQs-M(8nPqD`O$ ziJni6)?>!R7y?zfD@N!sW4leD1&NZkjnQMq_80L|(POT)whtswg)vH`dix*R4v2Sj9V|$;(JA*Xvto=%n_M>bc7|MB8-Fhdl5z15t&2?3leg)L{VR{gouOK2bTkO zWJ$58*?RWsZHFlqz3^F{CF0%c`|>OiO3A6QKYa`>urMnm-sfY4+l0h^ z3+y#Q;t7V1)c#9E{q{MQAkv@AagV{w8o5?{A}M8<8`pMud5GR4+lg_V=dwC)B64aM zKG1?hVX3F|8Yxi`GC_uh1giSa9;|mOR~)fsRa#^(4%J1OpL!~u#3;AQs69g8=W~d8 z!$#<#JDhUy1X_?d_Vx(<{2!uUd0q@{U1*rTZI)B-v8>_x*pdG~K9JbEeYoDfheLZF zcwb?wP=(tk6WHD=`$y>h15VqqCYeAB5;(sqo@`U%LGN=XfB|zv(djg_r)<@jw;!1-VrxvW8otXRHqmvqXiZ^xRPo#eF5(2zh?wf!S3(PQN8zSVtWAz)uQNzEUFeIS9V4bwYV-W%C$eS|;@68g3W>^D0EVtgQhs@@ITTizSl&<9$O zpeM}RZ>Wg%fdr}+&TDIVZ)8IsXhEXv&+Y9uZN&OO0#!XHw6!)4ao!*r@etWpXhCA# z;wBP~jl?_grw|rCS zMsbKEDGyjvHaV(eH$Pw{7dT};PTu?OcmtgO4Gk?w>^zlYO$s}--Kw|*s<^*-@4K^^ z$T8o)s=qa{r_`r*9eee3)j>!H7#GM_iz`|do( z(6A+QKhCk5eC7}_tulzB{|yZ-NL<;FW8H8l-j*YQs+d-}KG1^12e0K=@0^V10|`{& z9-%F8J_c_G?w^h?=U8u-ao&oEHQ91f^T*K8f`s*Ejt5aF0zYf{o*D71}fAw8FpYc5Z^87$+!-9C{Ia-jI*sH&FXiU7h0TQUX`-jJ^ zoq9YUXhEXQnZDNd|NbumRZrgfxYh4Wykm|QB+|`3*64}xd?10UlB4ph_vXg)ffghV zoa$|jJ^#N5RPClw`_}v85okf;NUz@3)kpppfhwF8yZws0mWCE2cuW+(0u@i7N}g?d zjN?Phu#qT!+{L<3HT~=W>*K$jo^N|F96yGJ*C;%rkd_IwATcnnk9<{geIS9V4RCHc z?V-O!85)jDuOG^>jyG_Q8jgH6L2CZUVLtjSRPHFisMJ`eW{L`{*n*0 zAd%m-lhw37oF7!b;{yp)aUATuFV#`gU-E$#BpTnBYt7mm&j%8y%3VYIZ3&D%276#1 zXhGtGRk_y2c2R^8O`wWv5^q9vD!2beda*Zlvq3W=qm0aleS{#UC|6*FE%nr3Lu+nJo49_HjW zR?D;RPzl7uKA55Vvi=}l#Og>#s<;1)Lkkl7&kxk4 zD8q0NnLrgq1A6=@BQ>SBF6JLeH3#S-Zr{7Azb@i=yLQ)yWVyY+F8UJI3Ds-E26R~ONlO&G!lZXs@Y)|tL~{MZLANYwe^ab1e9TpviFD%I?x$B%u` zg2cdEAJ?V$%JqQ+s`j7it;dgj(1HX-QF{FN3JFvl>eXA1AN!yMiJf#t#gDI$Ko$3e z_^}UKkdRl_ILDj+awgTQ3sq8o^MD8;dOH$a7Eu%caR{L@&JNJyM@wjVB{V=6quT#l ztB~-GAE1j7wfI({3eRAhFdUA44X3wcf1V%7q)_>*7o5yZw?XN8OiqR%Lz65(3>%rQ z$K;l5;_1^(+${NulS%GdBl#`xQs#~uWv~ylAi?jZkDrG_3lj7uRCt3VJD`ujK9E4w zii2r-{5%|5kQh}u72Y6edx-cz0#$MMmE9_|AVF`Yg*Ql|4Ovx+pQ>*z3E5iL2iAqE zQx{t5-h2BZ4(K2H9S1B(c^VZf@{Jx78B;MW9%8K82kw6vix0v5Q>@7zN5{O^jRnUjp0DhRy$jc79_e|&DLw}2g3D%1gZwk%hiY9 z7w@b^3lcnHjDH9S*9Q`)!V!bTc3fic5kw0T$_F{}SYl(*1gdZxi-^U(N_pfXF{&j| zSzP-lQ%K*#8Ww61e`u{5tVzSQYD|c=6pohVHUX>KkXEX<2uZUdQac1%B;u3dA@9xB zq~?#oK9EpA73xqw6n`EiS%3&EdL-n%+1mCH@qq-YLT^?M#h*u^MIv6&Lf)ILB_B{% z2vo+x-^`dfr@iH9k%;+sg}gUgqYotL4b-m67<}H0e;q^%63XU_X3X5#X%*H5Dy}K! zdTtZg&i zY7%jmBenl>-$fObMGVI^NrVG15oK|Sf%}5-V>pRG)yb7+{1{F_3lis^GULZ^5&-N@_0%__!iF|m(JxE3T58)+gM&UT98l%j}FBA!W%RgD5`n6o9Rl&!Eg9W%0%9eYk<&3CR$w53n$Ff5@d#PvjS`Ml z5cKp{Zp31?>Z34IKI|-iHE&@_C1Vv`R06$^8md*cW6Ue6?(Mb7W3N*V@wu zog4sPIb%jqLY=F#YXO4mb-x!*40}vO3lbDRe7hBL8BE0zQ7ZR}%Ie66T9wl=Bzic< z*J3p$N3}7lKZ&A!mEJQXMt$5`jyT2lcJ+qi#L&=!1V@?DmNP;B%LJ;pCMjlMf<6u* zEJ$!!y5iXKc!W^VwZwjFQ$XaFn4pim<#eqLiK{bilcQxh6KIi$8eKy%5kL%KfXeVc z7?RF&QuBv=Ku<(}Tox-R9jW~{(kfw*hu^lb}s<^$xA)x{Iqoqh$k5P&1kSu=A4s68_+Ek*Btrc=gv44S*#{D+GOEr9 zNs&whqhk&hB)BZCzbcjxs@@HzgrrEuCD4NP^4)dPI?SDiabB2adsx zl>QprchQ1G;PVb4>8eKRSOQgng7zVC6(z0vp%D%&blnY!D>C}F z6ag?nADKWE#SbA7aX4C*+XPqwJv)R%+!nW0F+Px>I58x}iBvy-qFMziJhG0~`Ag9& z%>h5$ANf^}W|OyEilo2K(SSr>mk_>honIziq}N>{cmgL4vGqmVz5(IRBFm zB8b{>LWJ;u2(avn@>U$B0J=6^*DgyMrvJOGH})!Sg{;X0iC#W4l`y zs<jF>kz_%MDcS@tP53j_8I|Elk5Zcu5n_e=H_~^F90I<5+saG7qysNpS>N} zuVmFhZQa7SzarDzKv&fmNN417fIdZ37@!Nr0o1T?niJWCz!r(CxEl4Qc zT39hT%NPPx*jjmC?OWR164{#a52m>H!HsX3;@(kb6I4Hc3=J*5J5t-;q| zv>DhLEgJaLNLGJz^Q{Z z&YZ7~G;!}MDgOLG3lbgQN{YSnh1?h#5~$jACe@0c7exya8+J5}y@SX0fds1h)=snH z=S9(iME`mz?mb5KUNY>zv>iyG>i_KsBGDl$rI>pyu`X1_^ed-P)GA)rBXR(|-bZA= z_3ORJ;!)dJIaBy~jPKRg#LvF%b>QK6tzm79?o( zZ|uGLwhtsw#l0tfoQM`A#*|Ktedd7e0|`{|Sr9)?L<u?`e?Z9YJh* zE``=vMn$g%_jV*u#j%8lqD1{ptI!fn#P@*&mxXHI-g3qGKnoJ7DL1>c+bSy1H45rN z6@MQ;dPNHoTo&V)?Za?9IX*;PsNxoi?_~ll(L{V7NN`!GCi#+!@qrd3Fv@hcKx_xE zTo(26I%F}n^D5@}BQ+AJ!WERR4}*^fT9Dw?*zredBv2KzGL!1(kD)zzS2K4NBesxN z_QyXSk_GkxufP|3#HpMeun#0q#otTk2dVkv5W<24mqpKav@DND2vt%_6WIr2Hh~tb z7w?E*vG~xc$rn>x?;E?P=pr|bH3>EU%h_|!I}%(L`Q-mQAykV-Hj!5XMlf1u2^OrE z?;eStbw&bJ`;(L86^*VBv>?HE55>?HE55>u0Tv{<9Fs{k;t@i{>$fEzwg*9o40iQfTf2AE@H%U;4<_Z%gY4L0Xb(W zMh2YqxdavD`5+QJ=ZrrxU|p!<@1?Vrwt+v64`D%q%i^4Ov@DND2o=YSq9&O@3)aiu z3%Ym$RUB)__kk89I9iVJ!JA@7`l2pWaZT}m$3Y7cTo$pGy&Z}zH5|@qm9QY;>_hl1H7F``|xBIX*;Ps9LdP zfb7F1(1HZ7nTqkjZZsrN#ovp4$kmIFLkJ5JxGu|98x9joh@*!4P$tlV_2PbW3G!oT z^Op>8S0Ugpqx`+thb}<{hY%JdxE!;uTpvgX)y}=!WgqOwCeR|+8;bS8kcNb!cq;y0 z>~*eQd>q2Fcm&g8Pupt4VPXlP!hI+cvc;|MF- zxJ{1Q*}HOGp6Zn)rRf?KZ@iK%9>Mt;aWo?y?0@)a3tnBQ;_tn^?lBG_EJ$Du$f?|+ zVhM3Pc>6?6GJzJkUT;sw5bj!FK8r*qjYq!tc{sEn!DFJJT^|M?K_pPc-%F7`srlm& z!h%H1xNFPf5wNf1b;vG3`^vRoy)k166ZCPeAEH&L;+mv=vSdhT|=2Y$=&X_0& z9^u3u<&jT(FB51%BCZdEw*v`O@%Li;Vtoh;5?mI0+Svm7>-s=KsQCIJzLyEKV7)lb zy9B$juTi2dRB=txzKUS6dsnmy_nR#?9K;zDy}Cl~eOEm4dEb-TC1i_7@R%r$rd>M| z^uKe(5p|)8YZBY%5)9c_HDN&_X53}Wh)0Mm=j(^4iN*HEU;-_2y-{O{fFuG(YOYCa zUqtMjWq?Oz*8nw@1`zLXH2c6CiiQEu+ID&vpr9sV(2 zOfoMV&9rWLJt2I5=e3~|OERr@mnMYO?6sjDFK1f4S0;p)c3(?G+tLRzYWi0AL(L|e zsN!5kt3?UnQgzpcxct+Sgm7{bCW^jVnbGjR9sUbZKCs@239YP$>DeMTtYl*3r8j*a zmCwv*eQ~m>-`mO>N6%CLbnV(u?-p6sm|Y3sl3%S2t!dQCsz=WjX}^w%s=Lnn?mO^B z;S>8Nn`lAez~NR_0=gSfaJnxO!sv%_VPy{(L;k8cut9QO+Bo1J|-F-<^r!n+EcGE&sD>gPL_P$6WC5 z-$Aq>(V<_K^=|pZ@a1Qjc=E48wcq}pW{bw}O9ZNBU&^w!)=3PHsI`iSZCMYgjjSud zUB|kccx;CmSyshs3E}_FTNA>*pePFmk5Ma(yv3~Xa<Eb>)Mp=IxvAl?YVfURRWJvlgmfuSzm2r8Ja|2NI7xm1XTLl^A~R+8gBKsROIk ztw&X}+*?&80#$fysF(au*8gtxszpcMoov?X-r5@VQ$o0mvMzLWQecm`7(j3 z)K0Cf-+oC5|8|9m$LsX+Z|Hou=&poGCR&gPypd(ScRV5d>s2ewNkc*M#u4huDV^OjUiq?+HHkWS&Hz3eN&X zNjmyb#=S4>@ORojDQ3J9V-$`=iZW%%xr~1{uJEg=lTEbXsK(`nuO);ZP3BgGer)Yq zb>m&zn_Z73glg4`nbvpf62f=bqv+RX-)T9&_X_{Uw8@Ue!#&&7vQG~(%Y~W*(Sk(Hr?adZZchw9b8$HlZ{GR7 zn!UWc*)Vrc5XZquy|S#wZcPmL-?l0wkBKAKn`)~eeayo<76s9QL}AY?>v0;dmVCXE ze3Y+ZsRQ~AG|yaaE)l3IypUzJx;rr(yu{m))6-Jhju>c`T+}Rx79?={6s1FsrLOKd z&^$H2xkR8Ui+s!?A3H+qqw`x~_0~R5n2S%;459@Id0!R0RiGvvf66?xEKr05s&=2x zvUZV=G79@RSJ=MrY^eqQDP1R6UP-rX*^YRXDCFN~`Gw{xVg123MYW+C&Qy6O9d`-YilL84>DR#y1)gz%bj>|=f9JJelg_6KWD$dd?E$s=6Wr90Fk zV&kyM}zUz0geE^zmQ8)L-S80aX|cD9VWIY3d!d{|UY` zp}UC|B=SqOvd+_0ZJ*9QKCRtRegA>V=JmDNG65=#2IyAdgB{h6!|ZV7*;# zpy%~{pAdd4~Dl|7XZ zZqSZ>?8qFe-u7#%xjCbuM4$@e2SwR>daU~RL(R;Wf(=ZxAd!Dfx02|}`R02ZmvjtI zS8Hw0GN)KoB?47)T=M3vGt@5CTALNqtD0y*V$>Dgx`E=7Z6(;p4;$yHDSJAbc}@Qb zB7rI#T@~f`bMw?YD?Vr*Zuqw}?jrHQCEe;vZw#uhbM)Hwp%>L9m3o=}vGPcbDjb6q z<-n2`)dzd@GOLx^9YhNfFa4%lO)k>;F_h!o&8=TiuUP}lviC2R2vp%1tSHxpzM^(N zL*wp^i-KrDBJF~1<^G-!KKmSB4fqHnna)q$6$KT=u@w$eG7(~J#S2v zu4+iEKd)PFT}}wEUcuw;M`=scJF-WZ=FM0ASQo1Bib_|U&BN5=Bl67OKP(9LzL;rU zq5ji+HPaYt9)2w)hy<#plaGTZ62ezhK7z_0e)X+xW6f{= z(>#b4B=FeKwf4Um>aIz{%%qG(5`n7n6Edy$jwOVP>TploIwM2R}r7{+0+-r9G2rJwYS&@elc|oxh`rs&DIV{XbDri=uhvtif0%9F+PanhV*rB9(^vRF^PR#55`n7mMyA#A zKti~WJ-h31v6gzQOon-1*M=rqkiapR=FWO$b#8}-=ALC45`n7TQ!}k^=&fc8p5d#( z#g8hf>h1<+Z#3sU-(4b5bzx?v^$NXNF4Suc`FK0+ynjU58_mZlYk(Fc z@Y+sC@Z5g?{8C4P?ds*p1Vk1a=VV$-DPMA_kbS&1@pJ!gFCPkSotkH&1?$BaMNwW@ z^^X5=n{~mipAC};RLS#??O7ZAD}G%QtXpBYi54U<)>4#D?w;j;uV_GU`{}180#!I$ zQj}inX83y_?Hf$2BF~DDz?e}{G9StCAM^cOw6LN)^FkHQ`ecVSdOtc^&XVr!co#0ko?1f&`cAe3ua3n#5O}*0)UeXFfa0?6TyY7(%F+P>Cog$;3@r zYyEW+Mw(Znu4?EnI3-{Wr3}l>*?i^9u06~D+=>b2>|dJ%(Sn5Rqt3{6{!x^{*|cY4 z5fZ54@-AxC4?gzMyvLr5?q6C(Qw~lt*&^oTT<%4)_)2%I4dGd!D03(M=)3vMtl%q~ z$4I>$2`*ROoDjC`v$osiUw!#|-wu9TRz9Opg=aIxiT>*TTS|TtY?1P~bk-uliKF)$mWN^%Oy!c`EQDaU!e{yD`S*5&u#X%Kb?G&Z- zyFL7uRx~p=pG=XiYDjR|x0iBD|K+RmPZ#_6N4~F`o6_VfC#vwOtteY=%keiF*~~0? zPpWivMuN*%X5%zJg`{Vv=)jOGMcgqm~sxX#Nl!W}D{`-&p$82(-k`!ei!R3Bm zCWNoOz>&b2 z>VL1}AoKYRazutIj0P2DScRwkiw-|-c0T%*6!js&XK7;L$N=^2BK|gitXd#$bv| zCjD4+@SaK9rR(+m6Mybw?L5;kTx(mG(B7tftsl-d3@;tnBP72YaKYwr=G117s&5W# z>R+@l&szFbqwp7hEemaUKhL^&xlwrTLn}h^JHysjnQUf-7x_PFn(Ut!&a+;roe;jf zXH}@g&OD3X^YhBY)ggRaqN1$4I?4Rt)fN7wDNX%Y7y6Ki5qrm(uMFs+-ng)>A1z2c zy*ba?ajj8!J6(MgWgNBY(?g5=Rg;q?0#(>r%Jp@4((LweSk>Dm`SG1<)$8V2Jr^_z zHy!eF2;ZDWPiyTx*qmEqr~2sMP5o#=;>mh>)+dV^g?E1PGPP>zBZJNTNjud8rIP(< zIXa%&{!ycFqpnM%eC$~?%53!9Vm0ISWXT5-)h6Uw=ZQYneJT0)>HVk8gVqprV0D>5 z74CIKnduv4e!b{rwfwVw>3ATqcSfGIZC9i4*QJ(`kH7QBndNIes$Lx+A3;=M?@^RR z&o(!g-JYyvzLDlPo*Q80KGG=Muh0AtzWeU6+Xq;awMOADvz{d%%ctn(kec^vO{+BY zqXh~1oqC~C&CSa1Bx`l&%LJ<0?CftHOK24S^w2Ew@!QX7=Io+mt;{yLRUKa#U=>me zyN;Gys3?{5x|%0Om(xnAP5jsrBwDT?V6_|2DBP=H0r?nIxrf>E%~INz=Nn4|s<6K) z%3ssEn#VKCY0v)pe;7OOuquxC?a$ZPqS&ybvBlT`6+}fiyNin*dlx&{EA|c;yJD<~ zy<#s>V~w1hIWG1RON_lmjT*a&n%IBOip$=Ed9Ul`uf2Hg&$hEWZRdWblJq1ZF`w3C z-7(EKx$EU0=ok$mdW-en9##{3$j>gS@TsJ4MTJU<#5i61tCp{Vs}#lz>SBIV)HgYE ztMMMZZ;Z7&mQ55o)?B+kK3u^F5*HhsRd`KwcW?g4V>`uYi|?0G&OL}Smp(6-{H#b% z&#qTd=GGVGlG|77<-wIDsq`87BX2V(M%($Il!6f?@cO7Nnv~4vMfB0uHV=>pRN?xQ zl;dhe2Jy~2QkxSQpkM?E`Cc`+(T}g%HC)TTzl?&VKGp_!w)6{5|JPXm%NXt1s+!VS zAu%{1%B=IKTyoPXo$2mA8S^9GJupU__(Z;PRN*~j%y;~9qw2r0+M&XM3a(jeZ9ltL zE}8eLm!^(V*B?#VzAaAsXL>E^I*{<`)7iXAbeF63=&a`MxnnFX6{}^=P*x&Ph4mx* z__tzToHlB`d{&tE0gsnLEGJ^bC&E5=B&^z5nkU2li$Im-Z}^-TX&nP1IIr)&&*~!q zcN7Vnh4%lx4pew%w%V%AS8>wYrA_6^tN(>*mn+sEO~C!>7k+SB`z74Bi-}Cp|8gJo-(v zXK_H39{aFda!|KOk4y}n{Z3g(#2q3qf<*H_JL~1BwY+Uta}Rx+nDkCDiHJTf6R5(o zrC#dQerhEucjs;?tKj{?`-aD+FIW|RRx7mZr}2t)rL#g}^us9qufNMBS1;3(&T91I zJ?h_4{j@82WCB%qN9fzc+^pL4<}I~G{r!|1gSzO?i})tjiX88GdOKSGl4{G${~P0B zu+A)FODAU4`m}GUT^#ABU<8RC`=fQcre^HsiVRw8u1M|Nfup5^BS-{^X#Fy^4C+wJfU)JPcdA44_t$zok_lAdeWPB{jI7$BRxP#sX|5cvDPda| z{dH;I$lw5O4{n1m9;Uy`AP(;&K~NbXZH6^ z-uIi;TH5x!wzg+TQ7tIBl2T_zSKV%ZuA1Ie52v}u3-aR%SyTqBv6HCNZ-7EsieKVTUncO(O1C;5_Jl6)oW9` zJvPE>w;LyjxK~-5kcL2&eC54zMry(Iqy%>hQg9vCn4I18+*5p$*ChOq=E{3`T4)~z zdT9qnRFJL%i7p$u>eZ2CUI>OrnJVD%td*6X81Q7_fIaz%+i72ZR}#;ob7&C790eN&>M zba#l!+7Z*TZ$~pkH#sGi#|f2-j!q^Gn`L^JxpTsj1tuDd{>g zWm4*QouK~w#W1n8qpm++^a_!n?rOjXaqYf4cIWX|5cv>FvVm`ed4I=v~V? z#(wvhB-gi(m6_FJ>C3(oL1N~CFugSqyHtxHRl9>>`hj_V$#*`^ zXq>vDVSiiYFgOaggTlOZ^rg`CC(u_tVP-Sh~bHu5H3;)Btc}N8@ zrB;Y2nG~kiq%WWcyRG(Q-W#U>_={h1yW~|LpDSmadTPiWcbn%;L~MO;(PdAVKJ2_- za=D1ak1B5(paGop5*JHq#h&CRShs z_iJtYP|1+v8;kg{ZK!)v!KFs=;JD8STlF?MOh3QEFF9`wi^wsekh|3?(}+4t?*~M1 zzt*-r&z7Fu?uGZxr}?{XdfL+xw#p*x*}sgP3e07!z7Z?3)ZJ!S5xcasw(akZSh_NH z**}+2GR;zhUr zlUT8B?oS3rkg&F$uK+zuWHdf(7$*KVBA%xuY}I%=MtS;ndw8?;rQxPmR%2$!Fu{}P zO9Mo3zt;BZ%QW|Vl|>wA{-xp9w!i3qWXETOt-3;c+D%_G?!;O(=ZBf|-Fe#%qw5&Q zF@pQGw(Tz)G-q2aXiUEyEy@hJ_ZeZUu#BNO!nf|azX<3dDwR0TF@pQGww-T92fw=G zjycvu1Wx+Ays}jmVV7NuJ$|s?edo8z;+q0N!iw1Mv$bu16U4HTW~=wz;m&d=x434Q@e%I}noW1uNi>O}Nop3j|=<>L+zzFWw z+IGJ1e)s->yWa0d`Lvh4J|k=umVAs|D?7#g!tXL4(WLulC7exI$8f%e7mR4_e%ojw zzn^Z{XN0Y?2)jh3UQva&#=Fv^#Lc$__?|#rAO3)RP<5Ak@C`mi{~vSTFZn`#>uKNk z?2U20+9;7(%g-@_1iopET|M^NXqP-h{QF0|M4+lqC0##CGX!V;X&qzg#Mj2bKZl5b znQ;#?GcuqU4Ud93x2JyGgSRN8UD0 z#x@gIqOu7jP_-vm*NalC)>GH2YfHAeZHU{=#L1&x0wYLZ%YeoJwwyEad+8$Smy!~J zs!gG~-iykszusHNNKQOwB(&5;$zdf0Mv%ak0nIgdbinZ5<}X_J4Uq^`mCe>j0!0)UO%iRFoJ|!mVDFsC*$sy`Ne=S4I~0pg~N5d9DUV~uDFJd@n^4} zjNg0a7b~hX5EwxMOAPvAGHqd}I|#=@0zc>aBZ1xAp-HW7Wb%v93IbFV7@ zms(3mpz3f7de5mnx4WNpjJu;s8Vw^t_^k1x1V)g+RuuVh?p$}5oIKAsRVhv)P_-#i z*ZqF7d~}(o@z`+vi*)|U#}8V)?V;NO_>f}JV%@b%{6>**y$U%Q`|e)maRuml zGjf9^OGhZ9KPmd8XUsN@aKoyq3 zjFtGR7@sq$hsbm3po$SBE>x_p&!u_Dm6}?|IKQ`{(VP0tv(ogPQDv3Ec0Za%amugZ zC2mBEImw9}?+M-oyob~ZKN79sU<)Po{ zKJ!mr)XS?Jlw(-yspGN?01MUwZ48+&!CBe*^~(;3L!b z5NlR#=NLf(>n`fiyL<4nL)(eH2k%J)s&20c*LTnpy7Z!TjO7P=@H4mCiMHR|W>1I+Vcf78;X(KOJD>Eth*S?)1@I# z|EEh-x>-^pP}ON;xE}h+u>J%ao zsOqzg-g$DR6nbGD<7Ebg&zxLV6uwtYU<3)QyU6o1wG7YkqqmqprGZ4CDrir*UXR}M z^5fRfF~V+^;U(MV7KOiTATWXi)?GATw2U`@R^kOeX113IR3(UTy$pE)n!mD+@zZ#3 zeyR6MejvKNzz7mpcTrFH*xyE6(mwvfhh7qas^*8nb#c)z`T0lh>sdv@gK+Gsy6!0c+oJBKNvDfU<3)QyBI6pI?!lzb*k}u zxj2bHRhp5zDM3bDiCISHLh{HR5?FW9oQV-j+_myPcO5+^6R5%wHk#KrVSxK!jYqD| zSLN|UB;r1V)gs`XA0X!<@4(lKv$3 zav^drO9ZGa!Wp?6u4mp*vY4LUwH8{nmCA?Zc|&qVP0r-payDSXjExyC^i z)^;@4d0A%O?E6F>O>IStAi*lv)CW?l@BFBbJ(ik<_?>ZXUgfM@bD|1sZK^rH^Wyur ztmHW1`i5zqCl+yX!qwmulEyrVjw)b%k>*Hmt0AQ4lv zrrtHPe{$tbYv}hFKRKE|@XjvU1j{WMRADQMvD??{@&(l%@_>QurPdM>359FwcBUZ8 z6!P~#{;*m>k^lE_i9i*W^OPf{=2~S3IY6h4S;)g;HQn~a+?b&1wi|RlZ95K7@A@l4 zPu1P8#8O6}oL{TDopq>KH&wT@4z22;>Q2_77MWAB4w;m72vt^1W`9wVYqhQySA>o) zxnFsf<`}r&@xQusC+pCQN2^^qcBf<=@?3W5cGjWg2Sar`>rm^nF5SsG^!L6eu3I}# zyJIMa5Jr&jE9KIitV7=JC$8_8o^}sSLrAJ>F5SsG6t#GV+WJ9jp{d9Cp2eZMohxYk z@=)E*e$npBQ2kvI>Qj5HvVB3l%<9(3OLsBULZS$r}?XVlv=BiDM)b`8~? z%q<%tvZ;?_SMsRxF#;nnDd>xrL&Qgy3UWV5^H%cN<)%xcUeIq%tS6#45pY!<|mQbkbZa$<6vs@on{>j}5N_SG1x>W;rQFkgKoZg6F>p?HwM z2olz|{XLSg_L1F{mgL8oaxCv>gsnRMt*Sdd;VpamE8mbGr#$&_a9`H8{Vi1{!shf> zrfhB^N*D4L7(v3?cD{dX$k|ufySu%(Q|&!ZOV}!}@v81Pq?1avP%g}CBFaU33yk1? zt!?{z3u6NseybE|)Ju%oaEzxVY}Io*hU4_Ea(!Ruf`t7_E6O31w)C;v(O9m?IfO7` zorz6Y+fKV3a|op+Y*o8Hs_x_vYPA2UYsj&Ud=)wMY7A0!J1dX1U;BGRRHNLbtUmknwmNBJnX3SQ&IhjjaluvIxnsJi1U#>_@|h1RzHWmLY7 zCs}8?4lgy0f+uLM0bC&x*0%lama!ub=eQ23PYsiDA*Cg3)zki}?&L!1J9nIG|Bt4T zM7fYKg8Q|$?QhVO@ubZ@*MP5j^JvP2l$Nknc-QHB?Wnu19Cs)2bi3$_dz#RY5sJp>J@58S3|E+liTZh()%53Aa?>wHB2b0xQW_)MUe~REF-w`$ zGEQLI5L@Bco?~oU{|PS7hdr+Ol)(%mNMH|uz5>kZq1>5!-uQtsm?42GY|l{!f%$!u z`Wvnoy(ohjMv%C0)1^BZ%-rLDRyIy;!|PI>2_#U3ZEbo=5|R|JV(s{~KZi@La3se6 z>C&AHX214)txVdqoNHMJNCc|zcak%hVFZb-Ph7f_!EA5dLh8{cr}%lwBZLI1@adts z2KNi8Mbe$&BLn5<3W@qJT)LCNZ11DWYQVv_JdiS&;l5CXZvo{a`?rcZj53(*p$uji zL8AU^m+oXRYnH2_+Ng%NShXcWCP0O6Gh+)cHB=uQ^cJUU$nQDschh^9?qo1~Hzr!G zTdt&dmfj_m45-3#OwM425hRwUQ*}fDfqnZ)`6NMY;oVF;DgI8X2a%}nrRYuuv!7eeQQJ}mvoOkFhWkPl zwrZ#?I&Y2|)v}{t1&(rzAkingqB|MPy4ISn#_aDQDir=+B2a~`8X7603}!R8HP)`v2fVFZcRIThW>VAhE; zn9ZdOX7```qacAQY@?F@V@Hg-ZfG|#V?`2Qo=w&53}!b*D!QG)3~9!`-w>nrqfCfh zrYCWXATiuq(VYxt+t!%E67(oJ`G0G{Mx2jrUc{kxZ?kGnBRoJJdEStxxs1Lh$ z6Fzg~-Zm2Wu8_aBYDM*nuOh{C%3y~3LKTh;(6?>x;ynqOLV zZ;KEsBJxTj6R5&*6h1`we zRq{B)<*HAVo}V(9VFU@R+bI*0wZZDm%EtQZc-`YM(s&7~aBP6SH0Ya@LzKbnYsz4T5hSp!MgEUslaya5gPEWV zW=Nn4M=Z!kzhQ#X{*NfWnsVb}1PN?2(tOcop-QuIe;QYE%Ht)d!jTusN2UiW!#-s& z!w3@C_NC0+D-OAWeox6@h6Ji`B#g25z4y8PjvNuHQwB4PAc5oXjJ0}p%01%gMD+?~ zxhV~$9;^>-+Zv>Lm7c^U#P+|pW3?}#w%+s4HYXVkCSQx zB&=ZXihtT~HZX#OwQYMS$cY4b)zT8S$|7tB2IW2Pl}~w-{WAZJvWr;}dt}qv zw&#UoiNV<76TZsS!@0#gv$0f`AYpCWbKMym*3@4){V;>rf49wNgssA|lCl5&=~5bx z$t^zIYb=$CxL<4Ap0iIm8q$Cmhrb{pk#7gbn-Q!9LSkkW(lkzJ*HWEerh+P1w1 zG$Nc(M|n*7$U0?peMZ%iEB_()}Dx60yZk)Y2A zTV)aUw-B0#ysV*7faY16eQI+`hpAqo+1!>#k#(x7I&&+jd```!cQ7d0)nj#{QjBJ? zvfqbkwnveTC+Wh>}r0^@hDEs zlHO?Y@*nqY@+e9XBnl4F9FJmyuJ4m3Z=R@>Bafm)pbF2Hm5hsY70r;S1kv0m={k^@ zK1g#siY0GGxw@=NR0^lPa#X=xAop3dOiDVs^89J99IrO^gz9({zt}S-sXTcUXOTyd zVFZbUnyTYb^jaRDH2=aGr8;>OB?49LYN?J#acAPyq#?e)Diz41$S{HgHQem)E%Y_~ zr@cva$fKBrTw4+$si@65H)S0g%2U*>t2^@YT;7Ied9xatYP;wNV5y_>r@~an6L(}| zg8S^dN&J2CP{E`K5JcNw1n8L@nZ^BpJaPSLmUmhrRn)zx}(n9$(UVIOK&qvACSu^OrE$57CPi?+wDv`+C+-$` z;ueu7?(0K4cv>P=b)~B6c;cGOo$t=`$rHz<2=13^zto(7`SpTE0(s(m$rG2BNL6(S zR&C!cW4Z6$b*CdwTmX6EtY0uyMcZ~eh)G0pi97E8pFDAL1PG$-uf5jyk9+QG{ac7Z z<+6#iM5?NAHP!L(8WqwR)p9o#@wvSPlOniZI@{Fjln>XN?*Ea8_Y!${(-Ntw%pt1n zOQt+`yPmnzlZW>nd3c!=!TmDk)KRT(Jao?(R6&#`zjIn5RaGohwSCZ(W%J2?cgV5I z;(iG_h7`g5QZ7gG%A{lqO}x3wJ#Jh9@%y9(pAo65E-uya_O+OM+Wp;cxrOJC#&mZv zg8OC6ZljQQ>3fg6Yy1bEl-&L^B2~3tQ5|pJ&N?aHz9{ncF)4!kr8!i>&fYpN^FjBH z>qq%b^7f@AQdLrU?DliKeQ8VTRKj|$QZwByYvg$Q(h`meOYJ|&+qb*SC~@RZDocL! z(rj;^R1$6X(#E8E`<9cpZ&t`C@sDqQ&M=aujpCFs=Gn9zFoJ|s#=INx(ilbFzP{w`lL%COlTCBHeR*rVG$ya7@0{7G^uY)cQW>+Xz!PJ5 zp(x>+LS+dOsG65e`)_X_!w3>mS%Tg^i9l8P?3&~4>)7(P@$gPF@!cUW!7ze^RAQ9c ze9kEG$=fFpsCtlHbG&_zR-7|Jn(N}h2r5f3f`n9Jym)fJ7`@$JgVA;Sm~Qi+k7ynO?A zyyf2?rjh{(R9(rXIo`ffTNfKIe}2aojUfUfNJu3{{ww2+o}avZ5`n7pxi!bzcj3c$ zLmz*H-w{-nU<3)NED77*%Gfr0Hg{RAJ|s{ToJVuKeFMB&8$Xb@FE4rf7)FqgT7$t~ zmNeeqP4V_g1gZw))f{i%gfS(JI^^w}N!~t&5hSG6V9R^g-Py_8cbdF?5`n4>`83Dd z*W>pa?hZbSjk#9e03%39t-+P#S4+GcEe2glI(x*ZLT%+%-HmA21` zDk_7W{^zNHHGImYXwm69-7CB&co*;L}b7s$hYmpZj-zG5#NF?;?RJukM=T?Q0n~l;5TK+Hc6) z$1s8f)?L*69Kd&xw=XAo`y>KYiQP5F+qbL20KS5}eLGie=L{oAU`@m(xO?!WBio6Z zd#H{=0#(C%XpXn97J2(}-e@O|R=Ud>Mv%a|i&ZYro)@mrP#kJRtyd&aMLDt@Z{Nv^ z?RgS;`@SV_AHxU|Sa&gZ*M@x7BbT^xg=!omP<5e~_TSzq8Gs&4n!9B*IiIB%X9{gT)2Mg&HXz`Bc#Kk~P+g}i;=lebSI zP<3vA=6L&x?tN}_Aa7rD^7b)|Ab~XzYpU!sYJBqcNd&4c4ALBLUyVwpv3urseCZ~t zqcDO5)?LiiV7hUkQ3d|T0;+M4K-IM&+JAfd7)Fr5x{FPZ2sE}OPc@4BQjLQIs-zLG z!V`mxUq5;Kq!BM9uy(D#Olu~W zyFkRBSf)ANzKe5K@rVC37yk3*vRzVPEy0QwT*)7MH54Dl&@mt)5h2U8|MvDF!BBOmxyF4Y`wU#l70c)*D6BD@Lp2XSAh!djc{Z@878C2!xW0^8*J9EkXsrJCdI zTQ_Gr_deW5G%K1J1{kx8|3Y4YW22ZUy=%2Q7q}- zy8P?thkR>SItE0Lh@X|HIo`e@j|cK|l?#f*+u<^SDlF$&P|>@th?*05*c1AiL4T>= zJa8nf(?M=~PZ--Yy0M&gvhJafT|S zCmP)G<3xREp_JaIiiDtYAI~avgtmj=sh%j+!)@ObjV#7RDqejmi#i2^WI|HmsOr%9 zhg{ydhlGr$_0<@iS*jQD)DfQQ!O2xu*e*d@VRe_sRi|eeqd&RN;_s{%_WK;)VuMI^ zwO#pMIDWNXo30E^SAV}Uj68~L_+xJSAlYBXx$T3Lj?K{3C=qyuMI(gcYOHBebyA0ik=kPrie<58@5%Ezcqb0)r` zITI3rD(S4|&)uO;y4zX|Y;lao_e>DBt16jQ<7yneWtOtzNg2M@Dt#u; z6}Gc5{2#R~=}!$mmbAMHrqh-d(&SYy+*S z_vNQG^`t9DLV8NByG~G53ss7R z|7nb%IbIThsw{`ONh31UY(dV&UNTV({PjTP9h`~ezmsz zgR?2K>Q?I;J^lu1j^Xr*s@<;XniO4lZ{;^BL}~;Hd>@(byoaGLC`XD)IZ~`+q!N+} z`%w)p?F%hDW53eq6kP}XrOqip0!wWcl0L<;zKZ?F41e zr`1mxMv%Z~f%%k}r0k*jiEf&oC=sZV+6)U@>~qDD*D{K{mJB0E&`nI84Z&*7z3a;Q zViM23gK8WkBo($-^4$4ZeKn+)=rFPZXa3}W&E%gv_{K6%eBd-;J11G!X~J<%X1e*a zdSGZT5o-|;k%%v52*)|uq{klh_TKj5Oke6pLG6XL8ufRC(~nxTMW~_uJBw!IoWzJk z%$p`0=cHcHRGW0`As()(Dif$Guv9qC$%{=)^`8MfM1ez(tO808YswB0`t-fMY8O@LgP{qGmBAlKV zIwz&O8?sE;J#1`CFji#$M)m!R2r+L96Bvm{qRTSjI48TtZc=AosV{nwb5bHe75^bY zIL^r-O*g6;%hwk(M$<7M5|2cO<+Nh7fAZ=DmaB2(xkPpSEmh=OmRBY~6~A%1aGaC* zy3bRW?+y}$$vKIUcp%t=<-&1J?mst2t=q1mIA5upL`bTh-wDS#89ZZwx+W?}j9N}( zG8lpV#-CjwQb&y>=Ohx6DsYByoRfX>#i_Y&k%%*^gyWoimZQ8ny6y@7h@6v1FjN(sE$mz!l<790nVPmw)Y!$Ru)|DEAO$*Ctrkl3sX$Eg?dq_X<^fw#O8IrSt0Rrouxj$c$&mzI0a?+%lH z4~9g)>cVmAJuKW%?NZNMOx-|F3GNG3@Vrs|eWsy0(nD*$lA{BkM219*F!A3`J&8aS zzBiOlzl&OESxIq!W~lr|A<Kb>XmoN<(0JG#fos8dgp#j zP`@LmUh4oVMWIY&pu*CX912ep)Gqm(iMBc4N#!mQjJ|M1J)w-fw8{fHk($j>S7qxc za!!?dkf_31l>AYP$W0#EQKZXoluHrZZ#S24oO*xMp08FUr(R`p>PZBsq*|2ijhU~8 zkW=pxIrXFn5G=b(I8ME|h(&6j75zoUMO9=1RalF%*8LZ$UyxJJpPYJ9jf}*DP~kZB z3RYX79<4V}C>j4%Bmz~?CZg4vcgCm%`*#zq4kmF{@fEk7daQPFVLSC0(k#>R7_}KW zeti}Zfe|F4LWSehJF_-MJvY3Yc)u_Wfhy^&lKQVz3ec+Tm4`3n%$pWXryQS!yHTE9 zJi{P^JDH|>o()zrwjC)9pYsaC2oiXr$G;)V3sTY3xNCowj(MF6N zOQVArkq9hH3M?(H2JegzqiWHp0TNJ_$fF6{OP5x2P`Q4eoO)6O2`KFtiy!rs`fzHf zc*V=g1gfNw!W+*Dt0yytikQ|^Qey-OEQ8st8s6$Qa_YIssV5Prs<@9kPQAbOio&m$%I?ZVDnWf&|uyEO*FL^xwaC?wI!7d(tdG{c#poL6q8(Ar^&UI zmPnm@jwK%p&plpg5F0C&)%?kjN;o=3DnZ-M9QvDHLn0&< zx(cSxjZ`9ks4T`kuJmzCCUw>|zQIJN&Xi_}lj|tYKe?SK;6#wXH;uI%AEcBsa*Mjj zG}jpkNrm&Cn`f)3_%HSm%dOTc{iV*KMgreW_Dy9)8MrUEn6W427^#G$!uix=x|UR? zyvZO|{6X&^{iV)`Mgre7)~~1IiIWIPh4ZPewD(b3<-f-FQLZqHNS#BC1iqVW^7F?o z&o3MKSju1~5vY!xnGOiDTO zc@-d^SJUN+X*=AS4se;a!|glzzvFPrn=ZZ4;OBqb|B}NEBSGHst9WgZU6 zq`V(CLCu@y%JB@-cU4Wt;TE-bOj6*dRroN1#J~{EbR2G7SEQ`MSC<@aNT6y>HO+J! zZn;)mO|8alnMYrFRloi=9g8Q|$otip*sf@-Za-Ve@ z70=TWwrV6D!*QP#ex1e8UBg7gmT?>-xL<2KwH?H2ce>?1-@U(hLGH7(gsmz`$8g+d zB7auHpmFL6>CSPC;C`*`Gvq$Y#jL!wN8jW(y8aO@{KsdEt6_R@FUot`uio0@rxw1lm)2>Z!r?CYn_ifmTIewM6lyPY6ES8WHR ztjKnYR%F8n64tik+kTjM(p`sEWV=KwvZW<#)#7l?bX;3U8=ZFNKayJ{lA{VExL<2K zwVr27+D>y{+wg%8-q-#!!d8Xon(4T<8jRcF?o;kEUsnh7r2GE>|yOI+p`n{^i$!Tnm>sci`sIx)(fcx5hcO5TjL zgsrNmX{O`IjhUC=KK0imK7m%L#0c)!+IGG!bsx2=3R~cD`B{>REX25A-cHiN2+#C2W;Nq<;ToE6Tq$I+4Sz{oe(6ofC>_JKV7B z3Z(x#4mVuA4kJilsU)vnhXksAIIftE!)^EE*T&p?Lqx8XaU3H^V5!8|yP+=)V@O{y z%V(!VpsL3)#dI8QKGk0u$Jg~0UG6v^*W3ofu$0C9UgVt*g2+|i0zV1Ac3knhZNIsxZ&z`7(oJSZE|XFJ!e$U zri)f5N(v-U)pEaLIu5t2tIrwjTj*lK@R9-}NMNl^xp&Cn_T{J5>ySXzC68kMx5Eu1 zNMKn>bGKmiIwVka$E}!-!|fIbNh`%(9&a=pa+p_m-Af`+^?18tIu5rYY=Y5x;t@WO z9Bvpv0?SIq0)A>`?Ed6%LjqMrwkW3KaO;@0wK4zG>U9`F0?SIu8bPbqmHneCFSKHm zKmt|48|XbxUA=Db=#oa|h9SH^IovRU1eUIhWxspf-7sOEagZEtNT90aYQ=OMZUt!d zx@kog8&k>Qh7lyNtfaAU*BV}i9Bx0KO5_*1x=h>Q7TCjO+77p^u`bhbxYgehz>Csa zbgOS);>CV5tshW<%?fiGIjk~mZ-ET*# z7)YQB%V1gwvtTjqJDO$=oIj{y1c@>yRnu{}4cOh#=tn)s*=c%^sItmnyEiGXUWfMt z?*iUKdG$JsAc5CM*Fme-b!|OFl)6zs`aMvk)9>Us+$xa6ZQ<}C;?KKzIYyAcnn+%~ z4hdA9iKbpEt*7w$>U9`F0_!eX1-#k-p7jWgK%U*fkwDep&Mwn&xCI0Z;IGs55J{W1 zbBrK?br}+cTBS07d)_Rd zp;%l$n?M3pXWO_;$Kh78LVLdLyM|)ZJ}-e0B(Nr;6(pk@@^%kgV)FHp5`n6v&0VJB za4Sr!*WDYgh~(gs0wYLZO~hEn6E1!sOIeY#Lx@D6YHmY%=Tld&`;cDYOKJ7GVzhc4 zMv%aoh`zW_DZ`6?TD=YlR2{GFG98Co7g}qgB01cOe%U}^1PQE(XdT|Kz4%cjgKoyQmF;@870q$n4 z9=SS@!wn-y$n{_zTD|V*qf4$<o3x|*c~=*5xM2hdx&JZ!qT_Hw z0#(+wGvf8EWVGw$vP7i<)#o^-cW+IIY0o{zdq`{1!RlNXL1Oay5Hr=y!@kT~$|%DV zjGPtZyNfFPWvNWu_1>McrjK!KoBW$2@ypf_)Ak6^YJxeJ8oSAlGmF;R!hN9%pHRvi z`Ea38_xDnKGR<$t2ohV(5Yw68?!V=!ai;AQ{`P?UexM59O~(9|XXX`Yt*tKP-NpzK z>{y8D_;JeBE5tiYcJpt3mEUtzVTnQOA}4t9)9Y9AuW9umDFXZDzlNC3Os5g;t8Vmh<*CXhSx;Ib-WOE0+|L>1P-l<#%)4F2!XDk5%?T-PGu{Vv3GW;Djn zSj_9at0fM2!UM&idDp{C=`oZ+*D?{P(mCDY|z5vs6< z#F+1lExg@`-eP80IL8PQ9y*3It2qDWO*}8Hy!aKZyody*;&?$x4Bn|LO#0it~GH=%e8-0$GgE^{!gg`Gk~-sJq` zq`sp6vaj42LE`oN5Hmx7O;jHd%!7X!CFavv;hA9XPCl#B(ZRgh$x&kJh#R38K>~Y7 zv{oZ;#kZ&<#iM{sZX{5JXG^Pqx7ftr&{t8Ps5hY)K?3`5j1B6#iI=67BMPMP z#Erm85`ikK&0v4up%IqD!_=3ZhKrDv-?)lQ&`oWnnzpF5p8`QaGxcgd+qNT3SOklMRF)+nP((!DyI--Qt* z_}DPhnKRM2*BWIA5tq^ssFJU|@Q5TeUvNLsZsDX*pW!u3+q*EkO%2m_LG&3>!}QH( zKf5#MC8-4h`-%8JCxv1JiCq`MP1{ewSk4FEtF@B{i_nq5ZX{5JcZ9KZKMhk`M-3O< zqrP!r1c`}{bkmtTICBrplo@mU*hNeXoKK-&C8#b`_&1wUh`{1#hisei!1OoS7}B(kFAyI4##t zn~m&W1h`NA8ezU~SK;FmmyXppk6ugJzVs%-yt=ExC!)seFP`vKD}1{)B7>t z!65BnlSRBfVTYrqaVctG|4sHTLQOpL4sa3stTG_00A?Q}!zp)5}C_1u{PTNMHns zfnV1%ABWp#rR8g`t!$M;lsKdK z?4KX%Le;4|wao&{Q}!zpN8`(DYTZzAfC!8raiLpnv+lR{S-q)JK-+M#fmr@?H8&Ed z!gqzSJH@@U`oS&5n>>mOBS@65S==_bBXhc{3EfE+&!f!z^{2t?ql@--| z!^D*px08@SRhgDm&CbW{v#R}VdC@f@RJ@=6Fceh-BdeN|j;EZJOtha=UaYG{b6yub z48;f%y9!o?XLqx2ZPDvYF|jh;gCrzSbtZcib8kiaJuiDQLQK2kBZf`GCV*a*QeD$bjNl2h-SI)}jz?Jq{J@tzg=iWcy z|2%mWimHYADw|ajQ_e~z3YCi%o-ZHre~G{d5-;xuL7BL&!vOJi#s*$D_rFOJS$&u@Ml`PD#dGKV!iB1Ta|M}ykjgqMnaDDCj9|4>2#g?6 zCVddpoKN1RIB^%2Oy@=dRo4F>6s`EFRtvruCzhSdtW2$t(S@o&?;!IEsqC|Ii2g+E z?3Y=YLImy$iFJ8{%rn(eX!5bpy{hKruNDu;@bRqdeWA*_hYgq8XO*;Zr1)u5BXv#g zFI}k8dj*+Km!<4iCW48WwyTl4nh1;_@iH#REWX!1t332v{WEiey5VgmHxj6_p0{F! z0zTcVXlf%CqBhpr*I8YtTA82T37>$E_ev&K6LEZM3V{(Mo@gV1dc!*v>ZrXanBRq}dy7NNU#6z)S0*NW`G#-t>8L#?0wYK)&J=2%T40~mZ0gbH zo!nRJbULpa2~=4<)N%Yu8AA@wSW`?BS;K< z;WBp}u+J*{u2wuw9jQ$oT;St4gMD;VS-s+!7wogzSD-wt3R9U^(0@v)bVq~y+ z^fpd=aH@zat;*i-=fuNL1V*fFoAAz9J$0M>gSpbFh3}8ierWNP8wpfd{ltV5_F08z zEUyj^AFTynE#^X%N#g+nj-_0!Oekf_tN)|BYY`YhVrG_b_yzOa`(8c0f3OyPyy(YK z1N-QxvU-y}*4k&)bNoitdP;6i`r3u6@k48v?N+Cpl}zNAx>3Daae($a5g0+D+rKs7 zX%D4-?ZY`;w0wn2eC(gwM@N;_)=utYpVhMrZ&WXO2TSbz#)YbOwQ89cdZnC|Oq9s< zM%_*CphaK=iJ*P8pkx?dwSd;;R0D1N!jf(zP-XQQ8Wy$B>W5{;HLr2Cw1*L8T&Q|^ zx3)R^tCX{n33Fj_?O!V49ua{NB-XX61EuH|>PJm07NAX9SL$Pr#XdT!to~K_KD%r` zny$LmxpWz=Nw;z?R5fl?*E}dv%66Gp^F?*7OQ{qBBS`$Ur7qMsZt8QsY?VWM#LIl_ z-PuP+mDLw**}^`n-wsD=`KVUwKf=$2D(`{y%u>x$&Ppb39EsH0-A=FdBLX8xWcSpA z+W8vw&xhYUqbA-d_pv8zA01UzzdiAq-IA#v&`)bYEr49R%DYf?n??$i&GC z{j_VdQV5J7kv%>FS~8{f4%3dkk5{i0^#3?&U>_Y-)~LwbPWD+H-7r%7dPO7EwWOj8 zRm*9F#fMZ@t4}5(){oSl87Txtkchk=0j<8gH12bF$7W?uK!uMZEcVe+g=0YUHRF7o zcKUc`W!%U>7emMAE8nIeP=zB%jP)#eoqutxvp6}0a*IHg zMahnoSibFQ75DSI zQ)-E%{**5R^KU|4PIhFE)~KSLFJt4A&3tgCilTQd%1nV7LNQa_@V#2La{kE`)~%*v z^nMV{@2A@-1NLd& zx#-GwTg27hr??*Z)mN0&)T;=sCvIh^ME8B2hizyovV8GryJZt`{9R!3vzHceH(;Y{ zx#n+V+D%`PAt#)aL+U`X7)zOHQivPgiOSVX-|#_a(_}CMpAVgtaL(%ZtHSEvmzVN} z^evTvGf2t-VQ}GGdBxk&YO7^;c-7XF%K~#tV2+FtZn3C@fAYdM72uSL?MBUHhcTy#x7n;%Dv>&a=BN<8{@0PiHYJAx)N>%uZ&T z_yW5`LmI8!@3G#f9W!t8oz=UFakaw?hFL)&TWI{DO`1Jw#MsHHH+gftt2kP#x*B zPeg1M-H68s5bW7QEeDO{kKSYS_Nj@UM3^Oo-M7*a+m_2I5*eoJEL>zlgcNZcOQL9AQAsP`*IjghtB1GMv zeMH}d^a}zJkE*IA!kjVW+>fHfb^d@SY_D!Gh#(RFL-{a!)QDEFe-b6mxF2w>k7i&5 ziLlNAVLmi^o^n<-o<@l*dmixkjC38aFI2@h4hVC`+gEKEB+{2%#E<+<$AAbDVcn{Q z*`r33H){PLF}vI%-on4Sfe|F)n}&w{kG?ddoK+4YDD?$z-#ttsP~`~=4RgLtBs3f& za(v~*Cl8=s5F$v#-%!KsQ6t9824lpFqF(&h*7SQo1PRYcE$kwFV@WxyvP4w=CoA`T z87>j13Ny4Y=c~*QGvh?NA(@p;x5EvLAi=JxVfLsIW1Z*3(O5=irF}Mfb|Hd9{BAYu z5{(q4oK?43abiZ$mx|g*mk3matyaUFv85{AMv9948mY!x`aK|mgr{w_FniR99B$o5 zipar@$mmFS7a~Y7@8Ga1G*XmuR+oB?6eS`XsnPRQi9nTy1&29fOMU<9D|nkEHS7ox z7{UEcEFWf%8qv595mBv^)MuTjWWWd#x%|S)(@0UuSzUb6SB&kLq*k9zcNYmzd6-|A zGq&{AcadV(zVzC%8+7Fu0fKET5@wGYk%yXyABbr4hK_*|AUxR$g;k-EqLj0GHa${! zh}e*o-g6)%)d!z2XKd-(FJWT(tI}Gn4|EKOAQ2XpCCnZ*qHo(o+<9GEJ8@GpFoFb| zlp!o@roc~UwfuOPh<#gH`{qY_2XSAZ3LBXr%o$tyI;OZd*0`2-XCM(60fOzmrP-rK zG|!TVEn zwC%?ggFys|_^3^qJ!-_**aNTm;;S9BS=Xsdgos2GTBdm~w9ks2c+IC=>7c#ZNM#}t zpo;fera5Cvi(7Bx_n*dShqn*`k$50jP$$hEHDat^dm$6l+GuXWIJoKR!}Ri!Qnr(~!!sJJ$Z z$}6Q1ofSmrJ$Lr|;jOSojToB~Q(XIrh$R)Ra@UC<5jH7<$0zY7kNDPs1akCh^R_LhZ^)GLPR367xFkY&h8Uo+D#(L zTJ;AI3{+tsd^}E#vu%2$R@O|fZKFC$iXc(Ew8tJbVl4K%NbM}uYAf4QZGaIZa`}0j z+PT}zNG)-1dM&afwU&Sg0~OW59;bG$@VKwGzkQPWN9J&=c212T5g!}mu}6()zRzEM zwUN|jSXr6MU5FqN<{j*DS~5q7IMyIZZ5&4JL?l2(?G=yHk_qoNQp-7_k-Dv7b*m+l z8o~XBZE$()Q6uty^c<-*rxw}XVyb}=B&ec5bBB?n?DJ>T}PD)4rOWSqWWFR}K**!g^>PXQZgZ>^SZ0kC~Od)aS$q64WmBI4$JiM0j>&Rx)Zb zfvR{z^EfT!a}CC5H>lkn(30*hM37*sT^@T56Rmkqgqh!qN3Nw34kAc+nudCu-o%3X zW3*v~y!gYM;W7a#>N9wp-o%S_gEV)^MSSif-Re!GMsUBL!9gB-4ikAA)(_HdQ6Fc? zNNOiS1c~_00UoF4_2Y&?+L1Dg_+jctA%QAS;{cD-^SbjWN~^f<0k1%PHH;t;pS!fj zp2I|$5Qw-+J;EqjmG7*VFg0PrIS>`K?I5Ti*JQJhl#NzP0DLu=M5FrBdK=>5s7&AP&lI> zam~wXmve`T#@1K{5~#ZTP&lI>iEp!Nm*2Gzn`yj+K_niDHHU>WZ)wh(tXfyrQY^OG z3=ly=9*x@iDyw#lhz&IEBM~@em1&o7MvDHLcvCGO-c>}>d(I#t?H5MB7`rm#rh1n~ zqiPhQRv!?Uv02X2Jp8vL*V0C14Ze#;Ilp%D|4SpD6Zeay>8;s9G+xS<+$y02eznx- zmYE2MAi<<@(aMYcl+m*m88y=osEQwcS9I~Uk1=t6f-B_FIrrh~bPSB(e%#Kzwl?TNVj3MdM5UBe3gUJ7J=9zUJ(aSn2Rf?t%3?o2<{g~a;WvqQx`IEM|hAeQq zr_otS5gRD-TYf;N!JwwMIv@^^X*EjRGsTDSF-<2W6fsE%1Lzincpqcx#!!D0_~kCXaNzm2;h|cp`2q83ZawI9fC@ z|LblM+RnVnpH*)~B+!>zs32k9iZ-_$wMx};&2;6$lxep2Jv<1Aa-_$YFOFF`hOVBj z{QSc-+dCHl3Le)i6m7=cvxtECxs+P%TiAAAq`MXrB-n>A^GuW4ndd6k^ij&2&ZD4`)V6Ib!Cd+ggp7 zXZzKIUF$PSg#?2rxm0EMRZ=btk5>2u$}!v9oD`Jt{>(Ar zt}%8-=DW1t?-?zUTyOYY_4xFDjcs1q1zQbQsX#GLz-uDd|CA6rMxIzS>P&pO5^-HjeH=RFJTXD(1&D>s+<^ z;v1#tmeNXiZw~^Zq%+MP|MY|HOp7?>!y2jwzH5Yckd8u|jrk|7caVc(G}}Mdyp`u? ziGV0pevQ%L^EW;lOqqz;d&}nCwykn-CbeBW77#4Q7UR`f>s&2g@z}QQbt@&tlYl7c zYO)76r`S^8zOzMKq8xagfnZ-;Hzv|^xQuIlXq}I8XGA0A7PS(Iz$j=7^c$0rX%SN* zYAF7PsOI>-7SCJhnc_j&%y+jec2X|eqp^|7##ACuLE_;ov8P0E<~?}(%GY6y7T6TW zA07lo^_a$sm9ug%`qS>zQ|{?Rpn}B1S=^oDr}P}odT}v|7yYu>gK$TsC-E6s_2|9V z%h|JbjPiUN5vbsC+kBU;8N?_InT*l_OpqV7>EZzRvHRPk)P5uB;~l z6(sI#P=hX7SFq)tzRpfQ~t7MeCg-3zt?(9gqnrD&&qjWuBE|RALT2p;cAo$ObAE zDtO!xh3thCizxNoS?8(9Y|5@9M4*DiY;U{O^D#EOVRe1j-jd4oB_0GsIR+QD$Anlp zE`C*AU%jiOl1_xA0AXKJ)gF7n>U~}1qjD4)$G?X+huPiZ z;G%?n`j_jD*#;!a1V))3>)Y>Sjf2jw`{`Y_W)P@I#JvXgxA(2l*(WNee!4+(+f?eW zOi++;+={ll=M3LgovE)HJkwUNvrJ%=<4TPEQP!M6tv*xt`g*1<9}%cXgxbV@zNb~H zWpQ5mf(zFps{KU-C`iz(#_pb9eR*l2o;};Xi0>N91V%aDHL*uz&9B;CT&O=t$Rt2P z!pza!UNvjhx1gw(ethcO@WV9gLj?(%W!l|y(FRG&^mfm$?LJapCNRoTshM45%|+W0 zG5^T5-A9R#6g=*Wc>C_=)?BniOm4l-tmNH3t~moLKsdTLvb*Q)lMBz&<3=VsTQrpk zj51p_wtts3Z;vFxZ(OqTDs2IqqE#Z%@?nn10%~jgUL;ppdex2!R>C3lQv+P z-r2~je_K)}Fv=XQ+W*M%IE{#Cv^TFl&_#fPgrikGyP4&@TIRd$JosjyGk{8k3KDF1 zfZgo}uf3bE=kV8b-`p~RQTA$q_TVf(7)nI>KuxbggrvZ6%{jjILs>5MYsWEX(&k0Z z(&SPl1qg?48N1s%|5jv@UM<@o{R}-dKthT#%h+dTdFN4uC+YWdWDpD#B<%eQ+P9Cj zymRub6z6X}oz7)+u24aOIX|lI=M3-0#p?x%PtebhKSu(i9H&32*S@lHoO!oOZ~4Sm ztfO^580@{vV6R`t{(Y+ZJF>pso1MGL`Rl%}FV9c`g5hq&Z29PTy?u!Z`e`balpV{y z?~b}Z>j}$S$1G=oV;7v~sOAh6Af(*v&Ix}#=KCdjv0O4CMNQeSuFiT=)9P1-gT15aAB(TLW z7QN%0{-#JCQQ3o#qAHiNXLDLPLe9L?H&)CeLa9^?6}*Dd9p%hlOgx{Erh5|D+8tl| z+5h-5AoHuqp6`l^PyN&MQm#^gf&}&wj0OK$MRX0`r2BXf7-g?*v-_^Ia&*2{MU;=& zq_3rVNDA}}Qs2cAUIvO*MZ4$=JP3@k>oN8XUj}B@Bk5M4_$7N6y$h8J6(q3Nrj-!> zsw)=7A9c3#ATY||h_io_YUK#{yRKN?Ch zjp-FnP-Z=jOb8R-wLB2v?s2Z}v03_4FJ(;B$uCwXJyVLh&J_?C z<=9lvo?4?$W{v?we3-m(mmbF&zpNu4(V7B<>>Q|I?-X}7#4a@ ze;e-2gQ*^p0)*suSpM=m^^iA}{x5-!<>UtSm;F|bj)ivW&F@y?u5-mu0YY+NtloeT z`t{fT{IUljMI|>?8$Gvj)aW=ue{;v5|3o!sphyI`N&3n==R4=ce?s|a4}zYZxZQ8z znf%{;!Pfne?VWS%^-%t^i$Dbl^wBOu&%FN^#((rAFskTG;m+YA3RwgyNZ|7Tb|U*b zTfR}L02&AnH9BA!`*fhO72vgPbzU&UxJE6 z;1eX)tmZvsRvmA?)suiIb5lXneGmHh-&3ZCc=IG8P?4T9NzW4}*z)rai=QczJqUd2 zNcX?#?n_S9$j>j2f2ORa>mey{ToazjGIrA_&qu8`l(im&6g9i9>FyK%C1NrWt{e;$ ziGZiLw7!o~i<>s;cRdJva_eXuWxD(JD(7qQHjSn!vs`Bv6*#U5&&BDh$#Wt6?XeQd zJP!h+9Bmt$?lJ1|#Sq@(WC^9civR@)8cX24LHxWh{-)!Bh<=^~M465_(>>OfpA*J^ z?Rp@>)vi#HjtlQ87)$uKE`QeLsB^prL1S&!dliQsW4h-IO|I1Cg(HtT+tS&U6d+9L zUD3Q-fn23oMpq94qiBX>y5~Mu{|V$Bb9T|25rGO44t)Q`ik_*$O9XDxn|lx#MKd+i zJ%?L+xC)=?yGcLbDitV5*roS_`=1u&BRiz&sUCzBRk@Vuo{Ori81FPJO+QU%m*%2b z3KFLDX7m^1owB-g9`Tz8fl)MbHr#XSeyQ)2sqPtamVyM$mf@Z7w(>`nSobVEi@+%P z_c$#o996Cm5$>uv{!#~zi|?S>!@{eTX1S}1X&G+9{o5Xha{Rf$*!;|I-xqpH~KB2Yo%_C~|K)?~io<;B;}mx+!w2O0FsAT?`cMf~NH^!uokg5^cKN6W-e zS_e}43kDK5ao~v^iH8A>@W9PIdU``A`ax4DDspb0u<@E=zUnL#3YectgR^EK}Zhiznb=F zT8$**w`4gcC5f4(+X~fHDpcUO=zZv|zrf6TG#tKBBp$!0kMbU5pn?Q?ANua~ z%WY!I6;1E&Nq~2<-;cGwAdi!Au6)XF6Q9m&di$b-3{>#Al9OQtQnripIk+v(gTN?r ze?xl!56a9jV(WHs?t@}mKm;mCNZyCpO8zV^)crx}?m=LbdD3oQvERyZn~0V5eo!086^5-9FB@j(hYC{;Q1H0uedz0*{}zfC zE5rB<4+5jizF*j#zgszWK3*vD&JE)w=pIA`33M`y4bD4NOrF!1?{?J#j)hV7zw_I* z%5^g9vB7Jq_$R3^e?kN*NJvhGH5}7L{B>;x@8m&9QR8o@PexcdzUtFOyf{6Bk8s_! zpdcZ6A6C6#fViBth`;hA&^v8hr#7I~9WvVPy3PUOxBnLL$#ixZDAIA!`>^FPkMv)^ zU(ZuL2+1M6h*P8PSvfBAM|!hK>v;vLIYR}H3*LvZ0tW``L+YgPFi!%b;%D$hEI6|s zo%avcN7hc^y<7w;NTBy|85UOV&~`qP1`s33t(hK)WjSQ&1W3JHvQ z5ofs1Rp8#i%FVzO{!2#9-3k)ueOOZHBPDhGdhYESaqw6ewQ-%{zUIN&BW2T+^?YrS z&)3|o03mrFcBf+i_kX^K|K&kQQR8nI?zWq~K>$xnU&Nnew8Sh03G_aUt?AK)^RqMf zcuxYnljHCFru!cJa%>mgpYEv6bgodrGK)8Dt0NB>hrjB(`v0;BBz)im96xbg>=@@#jji0nk5f&_XW#xBfE;$v&J6`$xn zM?#7UEn&LnqH`0Icr*9RGE0#N@IEx(Z9arw$URZycircBEQoRhy)oQ#>X7b3_~N1y zMPsUmq#z-=qJ*^?HxDL@&piViOY%p`$l zPSw4x!Cw!%i@|Gei^8;O1S&{K-iM8>nk04}xk#?agFx@ZU#e;St+f*t)Jqa0(=Uo_ zUl0L`bX@R0jNQ1LBKGcbiqjqh`W^GzV)le1R*tpDQ^e~nPVu^Wf*~n*T<|`O<^Ae} zXp(=4xZ+7bl=-r{y=!Pd<{A)VTAvU_3M~iFEiu2qcdziR1Z`nLUKh_$GjH@Yn@S44+0&MIhosU z@3C^M9{gTZtaL{CB7ky$A`#$yXqEq)kHwt7ZG4@-2LVy`(sk^<_S%{Cc=_hB`0&ie z_ffk-1w9pdA6hk{|5Y*J))emWB)}m###XYIPPKA`^tvkcr%mCfYS0w~1&@nPhOxA7 z_KIfRHuAD`pGySz9Y;t$dk>#Fnf2)L?Ox&Cdm|5Z1_%u%fqoy}f^Q2oj{ypO-bg$?9Y8BW00SXf6ec1O2 zDf)}rAGxn5fl*tg@sh8t9J|`4=us6v^7(W<7%E7h_i-5(R`@YftJ3w52#or9nsDc^ zh-xkZ6(rEfu!GH0l%Z6rrLIyTfl)IW8SZoSpm&OLHRL1rcZ~+9Ac0PX4Y}&aV+uXz z=PG*;7?rZda9{IorXMf-#iAt^wh_hIbfpuKzv z%`U&B>wyGD(fx0_`;zRP_wpm{HuCAzC!&G`dLPEJx4p`HUYx?Oxb6=;7W$pibxe1k zShdqte(kR*Jc+Ic^@(l;2+7H?m3JQVUbk%AMq`vjpx>FoO?Tg3`sQPP@VbpJrcyCf zkU;OldJcZicT_o}RHK?p1V;6WHr-=X?3nkwe2p_ol&f8#f&_RU8qY5?b;98pw$h#i zMoo_~-DBBF!R5qK%7Fw%(G16Q&wcjoc*+0$uAInEcN8i}pp#+jpL4hPr_=!= z+>-#m!(LT4-E+8@^jrMd{sH2-YnA~D9v7Vqt;5p#1RqVazE(8WA|XW$DrUOpqQMC# z_~{Z$gukn&21O#!$*`b{Dg5eAr+Di@px<%umxg;zz4USl&-OcQzf66iq`+|{@5BBV zlEhPQTog~KPeekBlGZ%iS2>B7H7<&kuKNQNi2(1z*mpO&^ODPMi*>Gb)qp_1gX^s^ zw)OxuWN9#f)o@XeBmS4G;YelUBxi^>(f}`Fk;=A?+W9 zibP1R=-94Q5mhChad(SMNDgV$Gj;k@d;@BZ^XkCT5;u#sZC9A{Pg!=S*-dQ^=pZ?ue#6&+k>7ZiyA@59*nkyVWE zuczuwTvreX>btVMlcQe)`%UsV87nTPCsr{U-AvWHrVs%N66k#xTkz7?_%3dnt=Tr2 zz$i05%AVgAl$m3JS5>3H%5Ao~E9iQlf}TopMdPml( zcB@RF-?2Nr?9GeU$*f1zoi}3JUzhllpQ+}cAc5Y8eiPUKv^dL{+TD`?hvex0x9Z*3 z%CYa8(<18AC;mTIJwTC;3*Lw3?AKO`-G6zjzf%q*&>=YU|h0cwF>8pFK`QnX0OfCxKD6sluJZ zg@juKDoCJ{VSW?Sm9|u>!>$}iU{sHWhWlLY9GI>g+wg^|&=sVbyA>qR`>;A834G<` zvg$og0;1^38t!ZUBrJiKnpRd_>bj#)0YY*zY(?5iUg4^@+QoH$AOU`d+MD5Sy9fVX z$yGAuokdT}V^YJODM)u##UwaT3Wd;YC z?mn?v`GRVNZ#VO*G&-Y#gydwH|LQVou?K^BZkhogfl-d}Hq+g=fALcpHAnhje!w+y zf`WwPWZ0&)mDOjDbMbC88XzG>HHk9aW7OttmDQ*hxwsFFI1Cl^ROo%!UazX^^Um9B z6=_tH2#7NKH89;{ZQg8E)jUJC*_OM`E-FAs-iH;OSw-FPGF3mk)`I|tWS&(`_ne{5 zK+6}(G16Q&wY+HF0U^ADps6!T@O%@K<`6e zI*lu;Uibe|eCI)66wTC3_Z)8P=%VVLnm>w#)Y?%&0-X$F@B8LZ$%%=P9t1|wjMH?_ zMN9S1p$6_hBnr6t5>&ubq4#0z*CN+>%Iv2iud7`l0S<|+erCAm)Ely2=SxRF6|-p$ zCn-RnlVR-DmQ)@_v+$h1$^=Hqt29q^rt*F@^BFtVQ>kG6W+Wsh!ybK_%U|fljC^-x zLW+VFq8SUwIgeM{U(A?ygGz-8I3)5ShV{0Fv2IJZiVNEVjcvct+R?a1IIaXPtrwoY zb*pHxJJ1N*NCYZKNUkV2?Se2>U!z-s2LVxz!B5nRqpUT_|Ga-e%%=6o54P~7-`9eI z1bQE~|4c5Uz*2AHN=uoL98ywY`-yW_j;DKa8F%M+8=?KFRG=Usc^~#=y>dq15&w$s zJPB|}jxE0SR3%{F+Mm{#G?+(~GxALNSHyRuQh|cUMejqu&F~8_zImJ~QauQaa*>@KLJR*okt0A`#$y7_;YyFarDs3SSQb9g@8iw~wzAm|2fig(Hlobq9*v zO??eikU%Fx9%qDR3@Ce1Z_~ts0Ka2jtJyVL6*%Ku)#;@fMSU*n;oXP;1&@o~ht>=C zZD91;e#X|ks|NuNiOq<#2S)^D=7_7*z!l)in&EY?{mI*0pNr1h6{o0xJn6{{{ zv2ouVKB5Pe3KS&J`_O7{zgIVYGLP}(o-%<^j&|kk_cmEM-ka5p*b~S2%=T0&P$UAp z5A8twp_sApU#8~y+Jk^7yCaW1)Voe*JzixmZUnwyYD#muf}lvA3cL@^udclot(4O0 zP7gwINd2#`zXN{F( z(NI&o^Qxte>P`eG5`o@_jU7Kp^tv0S&UNKL0;3j2t8Y$QId+epB#g8$HU9v*f}lvA z3Y`o)+CP`b^>w6r+k=q&PR=QO{v9hvi-EbsqwbMvd#VRR1&@o~$7NX9V%|W#>`7o$ z?kU2Z!$mA2;*yI%1qpOA?EKJNTu`YRc@h}4FxqgRtLA-k@ldMy)r^|E6(rF6u;h`G zc&YR-wUj3TQFNUQ_cfpIn8g3P6Q(Z9xPop433M{7%n*|&P`jE;^}u6EerLcH!`*gs zk2ZNqp<3!jx}z8_a9^CGTDqQ`7G71`((rflh|8TR+uR=O3KIr%^8|5#XK7qv0m>?Q83*+m6rSCiT>);Bh4< z!}^EXReMB5zJ*2uBrwW8Bhqw_QQuX!t8eR8&6g)0^AL^@u1JtE& zQ^f?DSt5Z^G*dI(bGT`K0qS9zk?qQuk!2}Jp!Z>Hi&jp3PP4vf4+5j?Nrg@KTy&yZ zPW?UcUoqV^lK}+@$;q&?M{=oq{^xDvroIFTDQd_Q!#$^-aXOb;cA2;Fm}bZf6p4^r z(VM#$cvwSU;}1GlNT5TK_m!!B{Q|E^GyOI+)0Y%DE_xrvHg4X^Z;+b^CO3hE6a{ja2v8&fy$>ro?U}gNv%ayku}q*ta_oMjjvHs~)Z{n!ndsQBzHwJ! zhNQr8CGW#R@|QANmHEQh>_K3ZImO#P^`ezyIT7oK*k@w~DoCLBp{I|%gN#{4avLKe zWCEk?jw<#o_JGVCr%omW8S@L|HdZuYG=6}Bo(jAV?VUNlfw8;(adEw=Oh^uCR~>u$ zPAkXp#SM&!%5gEK0i7#QBm%q-?JHBZrSZJqR1xS&K$PjU*?$iX%&doR@s`GkzEj2P z=2UY~&{LuJp_cgV*T$S<&-56o2ND=%YLWI?Ut39kZRcNGsA;2b8HxzVB9wz+FFLuxdKHxE_feWJK;?`qxha+-knN? z1Ue-9@cQ;^yR96Nui6=D&S2h=+LffhanbwGv!$9%jqh8m;?t<@A|XX}^0)7;TRXEJ z_57O}Yul{izfsK@C=vnQhdgH&#W0H8=GQz3bVz3Xa`x5htsJkuR*ZzaxB2NvI=iUA zanbuQ_H}{k#^Udbs1xlnfl>Aux$X7x*U7BMn_Sh6s}qZ;i@u_ogCY^&eQ4##EBTFi zhij?-YatWpkl5ds)t@?9IVRr7Z*>2&mfF8Qohwj~Kqo`re#BlDgUUv#>%(ONqa4jv zs9!I)a(o|iS!62{sTNkLm4G4<;AH6j_%2y&Gn=bb=v+wzMg=rb7t?;A8TUub$Ye3% zP;<3+2$c#HbV%rZ7>nFoQdI5KLERE06H-*s$-K}FD@QpZD!1#P{_CnaD&VOk@8dEo zY{J|GwI}t75`hk>_+;VE;UXpx(aS}kf&_XW7QDVBkET++c9jYVj0$XExX)Fe?Irnw z&K*?Kp9oZtkX(^-Tr&4L+FYF$;6XqXT_?kR&Gn(lywslNYUzwC=vI)BT+z|!%RGcy zN%4$Ul0~53p%!Ym+wL*#GH+KZQmr0Er2<7F!23|&o|a!-eyWz*f%Bwx9PqI zYhKH*b~{;1O=?Ij5fwNtdLR1kHD7hrdqxp8*)@IuAw`9kGu?ej0g6BuRh~496%`9;s?MQ)cew|F zeuw&F)7`gUuGCb$8^4Ngc8%wtAc0PXu`eFBQ>*L2e7FaJQDzOh=^mpBzip=m8^OGf zYa9dx3CYQ@bwd->k^3Lo+R&(mgcKDOX}ZT+8adVT=0lt7Trp6PKqo`*CdPiPmigq+NAP_uS{p zvMtq^fm1~UwL}vXJT5vJ8lx6BP@Ad8#kU>=MmZc+O!pivWoZNTxOQBOcHOn0NQC5y zLV51TWFTSK#>UWK8)3v^NbhhU*EXuL7?ApNIPLxo$-u^(M&&?X8Mu>$3-W@ z*k9H6bANIZaTFbV^ z{yN)*w4W^Q8Y}HBJCgR6ZQP-)@hUg%=!psv;C*Osju|?QxQa&$dg#dvfo(5O3M zn?MB#^gfJ*v{H?cy^0urCdvdxIktac-=)!-XXRY`@c!0VHClEnVkG}c1Sm*I-iP%L zYi$&t^tYIwDiavxxKP{P_BSg>fr!>dx5GaS1TTfn|;1g zfAk=vs42_U^u<;Vb>#zbtnXLq%JtOypaPx>oeX0m*h*2dM>loqCYg|;>PD$|4_P@v ziMY_Mo9e%v2v8&fybqnL-c>}|gZ^{3fl>9M4EMR()~O1gLN&kP zI#;M5f!>FmWGlIo&hD3<1V&9+Zn&?xfA*F9aQANN?2IeuR)COQ(dv~CcnYL5)HQjy5F27K<3-t^t^$e&Wf!>E!-s{{%^{3t^ z!PU3pvA`j*Nq(lgPYmkRL|s8W+?UkDNeU3?eHb&7JF8u&7ac;qC=ycCtT5Bvw|`vR zSxv~ljqe>x1Sm+L_o1~WoA*; z^eThYel3|&a+^$G6pg5+d#s&RX^@(u6I0^$d>%Qo6eQ5e(AtTg2B>RR<`8c@2#j)^ zj4<7EhB0{ts{hh>UV&x+k^-IzoeX_b^rnaU_{3ashh`ZP0S?K$P}_9ReTKj2q1HMw zSNPFPMpBRf??cx-ytO)Q%HJZ$H9Etw&>@-IzcAf%xE*1w)n^kjW@M-!f!>EP|9DmH z)TM~AlV*KLV3c{fkm;U_rnXSkUVVxfZ)j$T3KHmK=vm+CD(a^*fkp+Iy&@q+&Hk5M znKj>ia-@oyb}-QR-+pR|sDP(J??ZclPRXI>F5Jl2e87VMhvfL-S7T0?l|xL=p)M=a z$oPw9`jUc#Hhx`W|3;hoJbD8m>g8#l(rfW|9nus|>RLVvE0~912 z;mZx{Z4Et9OS~qQe%aMH(=|rW4r%JNFEVzjcjQ~9j-~(m9$sOx(!Z)r!>t|cZ&ghb zwT^T(Zmz2*P>~4qKJ0aRUgN{z7RI=eG9fvnrw>*4?sc2f@*1^?NDCnX6+A9_A68~Z zEn`}AnDMlM2LVy`A%*Pjefyqnt7U9#5N1>!T2Dv{5a@jv>oPgk2xL-ku&73*yKq-l)YmH*jQO%bhBpyr^?CvoJT7`4`fWzyDC2a_e4@^m zGJ#RFD<dOR1(SD$I_s*n${5r-s zG%>gG{(CAFC`h39p|3xe4L7!b70++YmkB8f_jG4XR}41_w~OcbyHZO81qt*%)Jneo z#`t~mE}o~e2Z7!Rc4%j801@9z*~OQ)CIS>ZE_xrz5!Ke1x+lB(yuAkj4oTW?orMyy zoe1wXbar7+cs#D;ec1Hdit*i$s%jI;frJzVyQk9^baxbE$?!4yVXX+{Hp=6%rT)JAyMdB(4^pLN))vRdZC3K<~r09NxfpHXooq z_wgVg3itPBY~g_oyc%6WN5&O&??Da(UCk^f!`SSPuXq%-l42RH#7#gH?$%9DCO*94 zr>Q0O&uEG6oxhQgTv6+671h#of0Xqg&^t+cZ?iVJDyq3!N2x#Lq0s>L2bT!R75#co zQR{zKRbBYLu0%)<33k$EEaD$UeNOjzoU8W%1qsQ?Fnd&6bs6;K0Xb~B33rEP?1zuvs)f$|C_-r_g9;uOoeaG{pV(P_QTwi_ zO0y*-Fbem2W~}_=&T6C3yJCD*B4FQWB+$t))@ORG+KFa;{^dOg@J_gMGhL6VvFhyZ zrHySgvqS}tD>)gqd3!DOV^o;oMYC6l0PlqRFf-O{M=iBNqcGz!-RG!C$3^eMzP+AT zO+C`WIFLgo&>>0tFta8^9He=BBF*$A1&)hOhVI(RX}rtPuEr^H6G%u=rI#5|nG|(Pb^xs#j_bT)B z+XkBDg!b=_*6M^>-+0vx+b=%MjWPVYFk{fi2HI91|9$hbuQ8uwkJhaBL$L>=wPr!q zyP`4|w~E{k0*!=zzQ(Qs(c0dk{`;PdS!=E-6s=ib&6($-wSr$-U(l6(*YT zOfUvjjMjR3`R@zevd(Pa7p+;VTi<#~rJ~#!tG8Y*QC_rqxlFvIXZtKPS{w4-Z{Ni+ z>&@m$w07yW-{<`wrss{(iqcnl8T)^nIy=L5J|JGPtxYsaU$kjAGj~61x6`KO%aO68 zzpbxiLn&-@`R)mG3Qk!?Q{?>{WdzRZ!9Ld=;&w7fx&GEjbmgu}^;c_I6lrI?sh? z)x31RaH#q4^zJ-(#cdHz>r4!~9Ig$e{gr-szs?+XGhDNNcNJ1DTyw9Cr+k>ppYASZ zc;AmQI^GZ0&K9Kh1%9x6RsI0{PzWaT4NUe z5T13-chwJvYwne8KQGlH#yEYE8CP>gXpVCJ`(l$C z_UHP{8-mgP=Ywg-baPvDmJ&k$Tl=cpdPQsfYP)vla@|q6-sd;keQIq?pk3K93h9m& z8)`odw}`|4g2;+1%nZT&{ z+p*e`D^`wzKgJmwoIb{_bzDaU39pBZwA9+J{kC0a_x!>*V02=yR{JR(G{U73=N)iGxF_vARM{v5`j@(CE~QYyQ~~*HVrj$)?6%(JXdv8 zkm#`>PCHWGwa1~W<^whkHRgS}ShV(!)KNjA#?Ck`TWDbBx$-8$2wE%>dfO!eqY9+P zX+?<0$T6$wIK#Vq0Wp2BT}K58uSap(KT9oQQL}M|Uzq~p*Kn!_C`i0{AE#ZW_q7>U z@HZlYD;E&Eex+*;1V&wY7pMJAL`JC`v?FQHWnRjbpSX?+5~u%-)2>!@?Vag5SAYJG zh#$NZHci!0L1N^CI4x`b$o?QA?nf^ra-&RORJ;3e+S&S6j!Jz-8;8Da#&h;mbyScr z=f`PJmRrO{=5=zh_!R86p-C(f*xXM+J$i z+Zt(g*I1=`n$*ECiP)4sQX(+wNlGIvKM@(Fx^~iTB)zS!#(c8ts34JZO|16s6N@-a z#O?p8t0!)#Ix0vEY8R{J&r>J!T&*~6H^#rOu2%ioE)f{DrfsZtF}G{4U)S~MI=HfN zv{{UrW2jw61qo;QhT0#W_d<6O1&C<)RgC(iwyL9o#OXaT+VS>QsiH?!Ho}_3sHX8(iwM$IDPS0XZUB;NBEJ|D)YKZI*KDo7lj z9H~vcU=dT&{l%3OmNQuCxK}5K(;M~@m`A53u zc_&Bes30+RMugUJtyQY)?Kkty)Dm~5syZr2RLT^U&le##L>!=`6gV%?iq5FaVc*FEg>Z#+3 zL}1i$BHTU0p?GiXmDk< zIQ4M(57C?fj)hU}Hq?V&^yVqMn)h9GHT`F#+fyQ)bg^7@dCwPi9Tg<5jt_yE%p@Y()4b%N8YvMN^&&9@W-@1cjaGXNY{n-AMe3*^ z(IqrQ^XX!hYI@JnYQ>?=__GgZL-bYFVMr|k&0<*q#a}(9; zx|edcsivcX#K^oM+Rkg%?Dfq564mZB7acuY)loqrXO0kx$D!75dW=HpaOv+xIDTt@|oON~RoP3&wkPE|t- zh==42kie)HaUtL)j%*sL{!?|aaFYK(1&LH@SDVu;SLD5UsQPR5#bVUYs*Va0ckj_P zCm)qDXZV?N9I3Hb93~%y1V+8MPc1Rac@=%!OTWmnnlKvORx)!Fho8ibn;Ba{0ovb*=pOJ$>ccU2(~QlWxG>VUf1u2id3 zl?o42CN53TyVsHljB3!muGaAvE60nX!;~(IG6+aSci|2REa>Db+_-yi}NBvNOF zXpLKE5%q7|-ui#*tW4($6(kPR$oY1qRjSxt%awJ%<*vsJY?yuOu3% zAkif-Slez7$~;%LR{v8f&Db4LxwTAS)bWbJ^a-kKe&sq>qlu_9V0T0%B2Yo%(wD*7 zf88yj`<}eY{m5GpZ7wGos34KLGFaPo)GAfWHPe*~Q>NM8_mByUdNVgzdvVOlae;_| ziPLQFh(HC2!YRR8+&zo9IwhA$njE`iEAg#N zV3b$a5bby~*Sy_zu3q*2R;fCmh%&Di)gw7ni#nKbtR>Szwd02~qL5}RW=^`T)rfhv zf37APs35`Uu6^6v%JJGcN@;i?qf|&>lw7K6dn+j;Mno%oLZVSFPd#l?P@T^;Y~T#j z#?Hw2KkSz!-7*SwYI zXA=#KDxDUtb@==oW`ijcj$5~EtNON8Qf4L^s37rhdARoKtaYxUet&FRP_VTU;6Y#% zUQNd4U!P*z`ud&Cb}7+71&JrG!nBF>94_OUA6n<5+!@hGxkar635>$FK)+;7Op7?6 z)=+95lHaA`c{_cNYY)n1yjNu`c2X|eqp^|7#?(Xu6(nlh=GvYT!I}4<4^p^NL(rt2|1?h%Hhl(AEV^mE)y7KmW|YAWYwed zJ}+mN+A+$rZHWddNVJNMg15*idH>m6wxyradB03xRNiu+6BxCmenV}_JS#`uMLG0~ zBdaQ_HzXRUATf;IS{70)VtA{w&OWuWDMyba8mJ&~^-XM6&&OEVj@9+2KbKU}m&gQ0 z70=U1iwUuETyI`opZ$ADbvE32IlMAmQ7uan>lo z*v?|ndc^H_wxaW80;7tLX{_0gSUD;bjn;?X&md4iV$hg4?Y|xtacg`w{a}lwwrb}R z4OEagJ|_;w!5i)R>EG-+W*d+w6BzYyd7O49YaBE?^wWd3XAr0$v7%|b_V&ItI`>g? z>RwUJZ8NC9LIsKVPVq2j_|$Nw-eTfRo8Cz#FlyI;cLZ1}aD_IUNu4tH~(~^>4r07x8CfnZPJ#TD%sKHNT48woqUD zZtrIT6(qt~6Rm32tZ%{>Ui#UEbHn%0tPd3=2HlK@xoG#KW%}=_*LEMRFB2H$^(uL7;+!{ZzcRySX(NEfJGjuQMxow-3!3P(dPWK|IXcCl{Wl$Bj&OwrDC7 z7!|)ZUi&U<-oBWKdBZaZRFHVmEM6O(f<%`) zjlmD@xG-OT{VGyllUpV*s?W2=T5y&h{Nwz5z43<(0u>}!Bl^lB%cZKLjyYSeS>*H~ zmx>A!@$(vicmA!&B)wX;LHZebYJdbrCg`WBRG1x0Rhl={_Gdj|dFzV|PyY>oMOi(TnAh z35=@Y8>6kxdQ#+nqNZMU;Zi+_2vm@e>oK;b)0sTHraqsZMj?SwrQ1hmJ*A=@3oE6G zNA!K-)fx3ft0xUK>sM5hpEt<*#%pqFG<@TA_iCDmJKx24@pX($K$M-1WPR_&Snryv z^#Nt8ivIM?9e(|XS5y8Hux7#4dh0w@#q{%I3{;T7v%px-3P<&`V|_&ZlQMx(g|9T! zLK3X64Hp+Zs@MI_M{FVj6(sO#GWKlsJ6+_>Bi4Bk7*$|MBQ2ZL%F%B7J3ZYykBA@w z6(sOpp&g-L6&1gAPt(8gATVmf-p1M=U(%`(zq#7(i+4pu{eEeB86r?Y0(%Mi#_P{2 zqD$>f|A)Y+!u#Sh-*r}wu4k%6;ydOTQ2dg;i{6C@RFJ@tfmW^itFBlSf7IE|gTN@SUGdsCsaB4Fzw3(SO^!NM zB2YmB$3(`Kj1Loc8y<*g;Xz>3Fd7H@sI+Rt=XxBO5GKBBc_6}{2vm^3*#P|__i%_f zx3`2+!h^u5H6iiZf@Mh%Dh`77MP(BfX z3KBT?WvoqbevxC=Go={S0||`U@K>ysT7y>;2Z2$QN=9n`<_pfe9zW!G=Nx%Gl>bZwDoCJLcRe$pd*pv%{6`N0 zqb||240jF}Q7Dr@1qpoSz}Pol?`*m5g!2BB0||`Ua=-@XYHa>@wn>>aM+FIdcEZ@m zP9u~_baq|m3JHvwMc<^muX+DbBb4vo`}3dZ3Zfzr(i1OHY^U<{aV5UegTQB5yUx?I zrL4BwxWZ25@asxEmv#|t)v9VexChM&_Y^OGZ=RcKjtUa; zGs}v>`T3fe&y-Rg1V%mlEfo5auZeh1L~$ZeK?0vlGWPgbd0y_9jNS(cjHIvx zj1S|*n;(d9%>YnA0^fzu?h$|2I=KgdQ8ki-Vb1XAeqG+8_fh8}YKf>Ifp38r zOL`v2Tb1adZ}1>6>Y*(J=02@&2lC%Pb=F;DEhtG{87dVjNZ@;J#=b1MTB%mBst6`Gfdoe3Z-MAH)j3uxjbHkTj(^I( z5<&uhW5ig#;^oEH&zFgg^eZ9!O%(p}N&bD*UqpN&B8&)0f!|7@_n}o!*J@(ffn@Q0 zQJKJ~v3nY79eY~8!TM&2CJq?M;(oC~1}aFP_o0;|TMZGN^G_7P#bpAcnzwAEz1(Z% zD4sAxwD6uNDpC$qkU;N4J3>!S64`y*ia)6yNMO{O<&CxIpn%NZl6lWc5?5-p6`zU> zGEhMRy$@sc4=xoe?^F@lCr zV3ac|PV3g7c4j>$_g*VTM`Y)nsO_SH1bQFx29FntG@4mHq8vzI)RJnAHRtbEjxlc+ zid?J0_%3QCs33t(hOsq8r;2Aw`tp??1V&xbV>PXEoy>Z?DKb^eTilnQBmxyA(EHFX zN>jUt^S5X4WDf$Po)l}SJsDx;C^VFaOEdURI#;M5flh|8PE7*DrrV2nGW8`$U{nL@ z?HbT;0W#WdLdyW5{JV&&lmitc(EHFnLgA0}SB~|3K3xwaFzR$*looZ*%28K&qz{_3 zo>w3O6(rF6(62cT4AzI#N#S801V;T>G*Vl{f-~#UdH-O2WbG8*iwIPZK=0%7D~y#p zw4KlJATX-OzZ`P7hzgkmDoCJ{VJyrXtUL`!;WsD;5*X!o+6L#U$DzSWSE_k^B2YmB zoeYg1wnxf1I=dA;2#iWS8V=Vyd!t9nu@1!J|9~jH;p4gL|;uxGwzK-!phusyQl1 zp!cEmGV)I4TW0m;4?PHs>Tx*~`jW!=rt)J+eYqe46(rEfFqZT2LjHJO826z&3JHvA z;0%F2@f;DmsfT+^IZ#0Yy$?Oh=)IOl*s}A^uDceFg;B+y2SeXpp#NH4fO_hYlmitc z(8kwYE*hJyF=BOZn-iNV-wHh}MCX3FV1UMvl1%dC@ zX#4@q^pl7{1&@nPhIaI%RSLG#Dh2h(O(20$xOxG7zgw_8pZsu{IQXT!t^pFbDgv!; zyso=w+V!?*(m%nNRW3SfEdyK+;_%IASl3|0lkQ^7n%kmyn*;+DBqZ;{MpjJ{JC9rx zL%);>jC!)Mp_bO)f8U~+>rC1^lP8HX_b!SP6%q_okU;OlSmT>1;>up9IO0KI)cd-P zw1gv8j)TWi#Qm*K@u+%&feI4nWEji))d|rg{}OSQ8WrNTLVGl%2Ao#-Pvnr)?>(>$0GP28|Qv>u0TNooecH630KARD^vLQu5$$hM(xkjSSy`s z+}`;jlCQlWwb zdLNfxq4zkCnOe<*z^DyRIOK24ZsaRH2#gAQ6AFDv*M56>O4p6N0*yGRAc0PX zR!Qq|m8V{x!Y|WZiv&iEyhhLTv--r;F<1Gyhg0~7%5+D8f&@Al+NCnz6aMa#jYoM9 z7`3HT2=wh0azEkiKiK%HFA@w?kU;N4efy8^`T3|b%1<5yMlIPG3}aNk+3)#i^^7vC zYJ!0Z66k$smCc(>{g67tR?CCHD96HJ7;9zlcrJ6I|m5 z5EymodN9lxSg%j~a!iu$MXdxCB+&aXw)f|k{O7^t#8S$E1V)XW8Uk~le5+pao4v}3 z6?6}xf&@Al#@_6^#fPpLAclGn7`4I?3Uj!DX}9>fLj%M+I=iSKf!>E!1#WeMJH3~P zc$)hlfl)b+)ct>KopoFl%lpUI?(PmSK|ngr&cKoib_WJ3wqhYBcK7w#-Fd|;Dk^6O z_t@PXT&~^SUVqOK7Cw8vKmOvy=kw;-+1Z_$XLff6#-h`L&N7#5E7Tcuu24Y&b00|x zJ-UmT*Cea?YzTA}Z0!wW>eV-Pu}cS%)$4R6qJjkGKD3IU$81(2?YjDj?hho;WnA;@ za;@2{%Zcl1G~MT@Ac2_-J<)&KjSblJNG(X&1QO`N_0}Zm(7)Z-p4E@knl>x3A%W|- z(Rv&|=Bu4(CAKBB5*x0Dhxv|iWxP*c=d0%qln|jW0tG5aVD3Y6$VrK6pk03PWQUPJ zSIIv^m1#rt)%VJ8PgEb2&o9324HT##fw>Q@n*A$P?KS4Dx+&2}pzBGc21?%ZdJNCX z|ESJO-m2r*)BYQvAc46Ltz17ehfvNQSHm|L33Q!^YN$N+amv_-_gwEBVqeN}b@*R_ z0u>}M_mQM$BZ`aWj!V=nHUzrD+J`H-cIz?5jVUgwI4@BLY!4KuAc46LwIvNJiRaD2 z)Jrx5x*UIoD=%D}Gs-bNypovPJWQ=k1S&{i?nC3NNp>RYL85t=4S}wtkO<{p%5l>7 zEKZHL6Ak`NGy3^=bzN z3Cw+HoY?n*+9sRCJJ=BD>i#@LDbibyF?i4g)giaUr%;`vf&^wVH23=NT6OjPBK)Tf zfv%xtf|b;5dW>$VYtGK;{-w+D&k5s@!9Db$*s&Ac3xaX(l*V z$pcg6!&LG`RB}|1z}$!0UEfGnh0g94I=e`qYt|EAsPkn!lFgk_fp@2?1Qi1TxexW{ z57x4^qJjiwGW4E) z`9geRpY8004S}u`Kj=A5W}EoFKq0=l<94=)MgXWFfw_+)rOheF^IsUm3eqS833Qe9 zc89jzXKp#(i-^M%0~I7N_n|K*msR7=X}Q?RJw^gu?({xfRv)#Wh!RBPq!_3mfw_+) zop@`{lLsW2MpFzV&=qvR4f@)g*=q3O)N}5jvx^E6n90!d^O<)1+w(;86>1rfK-Y!r z?l5MEnQO<#eMmG{TNfx$K>{-wNqX9<60h7POntZ3NT4fmqdSa!oQb&6DNJ2XF;GDQ zb06AgbV_k<@>!x@w;|BwzS0B6a63m9=ZEVoQ5RE>g9;Lu$xvV0I|uioQD2-5fv&P? zo-h_YG&l#}f8n?qMZGgBNMP#_Qpt{ z3s;Diq@!Qvv-y;~9hnp?VmO-QT$HFU$<6~da>ib3lT}K)= zR1#$;%f_V}QY2|-U`0`F;!Cx4M|*(^5}5l)(mF>c(dTudnrK6yE2n?BBKGJprc`qh zp^p>Q{eA2ODo9}NBT3O;d_{1L0jevl_>Kg+hW-<-jCFO+D91m!{6tyj0qWQG_5u|o zF!!P7oc$CrtNeBIa~lF(ZR5(Ac9G_8oX7pNeCxsN1SYWa)T&Q(~8o<;&)TXuviL(O`O z&UO9847Vz*aCduw3KE#f(3pC;r+9pPF6%;9A`<9Ip*665eClVEkLX4#@PmQ` zW-^jAdhA3s`iVE6Pce`{SI5$U%9jgzj6)+Qs^Y#kFVNp!pn?QuGLm$vUoJIQhXDS_ zhCo-|`~k|JkM$VM2jo&;bqnC_s2r#uftidoU!i`A1@Rj;1iHR_WDo-hRFJ?-hQ3i8 zoQoZ!qY9@ONT6%OQxlx40@1lxk9GmPR*bzs1qsY#B&qnYiEQm1Z~oUHBZ01_AAF(C z3s0KJqMv*7;+^aTDo9}NLwRjn3VT+_fuE+f9SL+TvG;*%H)2Q%bIk9+ThLX4ih(d> zMWfDsX4b3yI$iBZV21Q#su$dYXRm)|6FtlFzH~>Sf&}J1v?tQf5_~`1wJ+(eMFL%M zbv>ai`Tns4PkkbBPAvl}NMPL{uYRFJ^jhu%o3>(3ortFXM(QX_$` zn8$9=NA0cU&s){6!kSQzg9;Lu$w*S|szF@bzG&J*y&4ke+H%zm`r3W=LHy0xi>6Sz zN>D)pGZ|X{Dq7(eN?bQ9RB|NHHLJ2aj2VKuD*Q#>>*k)lXha4I5}5nYH;UhVxu@L# z^*xmw33PoC?lAWG?~5=0tMUM~GL2+VK>~9hdQYah6QA=SQ9VYZB_z=0z1IWAa1R`u zc)@px>JhqYQ9%N8A9`+}ROIg`zf^;52y{7q_JpzM1YVIJh<~Y0qxwJv3Cv_9sr!js zJa%Cb@tx`e33Lq|?G0n;UL2%RI1=bG?kiL4 zpKGiRjr3d7NFNm>F!!NnsoQt5G|DF2D4Re6UAU)>Bu(D6lYP;g#mY6t-ENS;y>e)G z;HpPd=fNQ&c$p+{=Oo-8$+(Nsyt+r!F>xW{{47bJf&}J1)LzYbr~c^eBZ>zY33S~V z7OIRHqwmz@IRBm6v9FJKBGVo`pdf*{k0iMlC?i^yt1hQT&)LOABo@pq8Z|Hy=*sEcP}$+{WXaQOeG2VU-NQwM70E6B<&r=J z3Cw*Y>B-6<@gd-h8f!zKYnns2lDb!qk+eQYn1j!#1wABz3KE#f&>Vn$3vp`b6g9!k zNTBP&>2T$Mn{!4vE>~13V8 zVn*|I^ewBAKv(M3hKlA{KcgI8^%{$ft=F;rRB}|1z}$z%iCttNialcYYzTC%uryHC zZ`NbXj*>-U$wy40s{|D!F!zz962)tYMRSYso;C!!7WN8Lyb8Exl;cwFTH@9CVtj5h zNuYuR=05Z+^>zWV;DiJJqq&hl*OPN0%F<4Hj0tH4M7OIByq}LGP(cDS8A)msc2kY1 z5WqM48VPibraj|2tkz@92)U_dD;L0v(p`%R5}3(I(!X?+Kybj$_NT4gZXrQv3 zc8^HEKc1qsZ3toe#0jh`RMd-xd%blv&PAcmEgKtwbVs33uv3|&{7O0#Bd+w*T!A4s4p z=(P#XRYXE*wvkFMsN|?1fw_+)C68Ii%G24MN@o`dbWNf?>Kmg zX6x9~5F>%ECB59CZ9n7MnD1+|j&-B!3Kb+UlcDDyQaj!(#f>#`FcRpB`{@RKRMD?( zxtnlfy{N}Q1qsY#Bx%!-NFI0Og{d|5YDl2#%5yj9YX|j-*cnxFkpwD8 zVD3ZjE%kBXZ%XABU+WtQbgiK^jI+j~U!q-jTCv<>G_{GSAc2_-jV$w*;S~rFZ+M{I~an5zO zitDxEuCd0o+g{V&vJM^Eh$p#;fc4stz}!cYR?f^JPLydNw$4p35a{aHFH{*fPT#-Q zaZ(O(zGwrn=xBn93KE$6NYdI9cB04$XR-H)kw90@mtjijTY8MNb9SQM8E0X)GC@TJ z3Cw*c=WN79tsce1)HOx|T@@V~DoF~hc~)^<3azc)go}4X6j_v@qJjkGK9baowG!Ub z@2V~483}ats}!!Z*{{d=;NMD2o^e$sHh-;xew)Pe|8oTxf9swbw&bRE+-l) zMLlTEv)}a*w7j$EUpRsF8Iz!*f&}J1lJqmGkyt+UE2}%wNT4fde*-0IqaNd3r$%B{ z{8!d_NrH+B5}5nY+6j&x!v1C@uKZ~v(DflQOo_`&YlZzT$Bud)!sAvY9yupLMFk1W zeP|ERy=8=BdtZKiwvj+r#IX=1rh^`%@t!i`eoJ5e?~Vi&6(lhCk)-;oXbf{F?fnEP1s z6?%qFTfQZYFcRphO?v}o#rTb65U3!5nT#ZP4YXtDF7)FMViQy(&}IML1m|jGq#avG zCBH!>M+FJYWa!(zUu)PaI=ikm1iG%|@Pj(Pn`14j6&=Ozt)P;Ff&}J1l5}~~b2hwR zGd|-FBZ00&A0N1OJFa=oB)Sq8(v^q`5}5nYJKMX<@YvSA{EH2NuDt8K;2zAeuME#g zchtXhN1=iQW-|1A(8+_pyHSZZrn?pibR~y*LR+%Do(FG9M008xP(cDS8G5g;b0c1l zTAxU2eUL!c6)z8H6J0tr;%mlI3rGDqDo9}NL-V@}JM%9264>DNMgmo&>h~1hsIWAc47$Bz+F(%Xhv|Sf_JF0$m#lx{e(hUPNfb?1S{=Buyv8wqqROml~^Pwa>8+~MSW)p2Wr ziV6~#$xxm9w&GJK-&I|xcSZtT53YE?7;dIpEB-$2u6poBf{F?fnEOc5%n;6>M-~$` zt{Vw-eJSn*W6>gwIDbjw#HBQ{LR`G@-E%66hKo?hETW|2aJeFIBFAI87scRFJ?-Mv@v| zyTVGfZzH}?Hh~1XI_C3Jepaq$`IKTEQ}-jH4-uZZcB`l$;gZ`=F;&u^X82dV&(0m| zD$c&~QsWBxWv)pbRK!mSq+Qt5_iIuxHm!zO`9AyiL{~B6oR{IKkiZ?_XxF#YeEjjT z=3;rMkw6!oLrI!LM1xb!#l{?7hO>(V?qo;LQWG7xDa>13%wr_bh1Y^4&D-O^bBB0~ z&mLZes{{$$!;kL4X<__ebXn2I!APJB?*d6GHY1GB>{C{#S3M2)2NJk@A@xyHJM-1v zPt+?m1iJ9vq}h*&o%t)LC#riBFT-7n1n%2N-+%lX$QPVnqLz*@66nHKiB>$3VtC<8 zOH@lOFGG8U1nyW#&%DNt;MEG{S6kFI66nI#m7e^J9Kkzg&#x|<DomF3EYR7 z-bs}{vvLzV@E-0)0$n(&rS|H-Pb_dk2VTAzon093B7r+l)1LQ7wy;i3`t#u-Mgm

f~N|kwfMsWm9SQK2Oau}Hej>1#{N}c*XKk>v~lFfk*GfCC7XA=snITc z**YiLSev_$ddZ<9hZW2OGOEA%LX++ z>>rA=82f9>&G#aFySst;b`YVqMO|Eq-lOED@9fJAr(28 z?-r?qq8~BjmUi5`{8tRJ2WVmzWP18+drw7V$$4I}>XTI*u#pgKl7ohEQY1R9RzlYX z_1b|Is&T%%q=u=4X*xc$`l)1M+}M|Ak9=*jn;h&0N#|Z`)1Ip5ZFe8fz;GLToQ zNzV9u{yR9Lju&e4Bi={$p=UMzMc&vU3|GAp!Tc;|UyWeAm>;?EeeSkQ5>j2{Tni11 z9-5{BetOY$C@ug)`3Id%au*18UTU4y)hq<%kX(v-x*9+H!pakm3w3QkkZv_R`(0}~ zGjy?=x7JFSK>nK!6{aQv5`y}8$B1YfwycCFs2L%|^fkFMesF(INAeXU;FNNEW z_QZmUy^%~mo38zP1*3zX+*#j?puD2fM-mcHOiqC=wrj`Gr37k3usbGdgk8WrYHO>v zCeuHCdj2#F#JfEG<3Jr70P6-$?AE2#&X5!XKfqe>YQMSIafJhjC!+>T04-U*y-wT3 z3=$77e?PbX-}Hw*I-$VMD~&hAO1;*wjpz1_-loo1J0L-?_Pt6pBS<8|Nc_yJ6()I) zOh^CEOSz;9_7ZSiH`pv*R@nO?>8%1!Q+pEtqN83H1Z}ilUR_rgtYP4ZQ`LS)_;w`x z`m5RT8aF~<;e-Pqg8{^fBirxh4Ff(keLgiIbXwA5& zgCW}aSVw8nP~rY!?J;B>IeTMl>%iy|<`eF_(iSC~m%FmnHZo8IrcptappyhLkP%=g zKuX1)dxZ)Zq0F>`OeFNwDdE3^(N|l+_5Z|~NJhtcdld6xEw zo|IgU*>YpnqG`j_cXHFpwn%YOVO4f#$ca&%pc6 za;deB*9#D=Nj^LL|M1cYx(7x)BEch_gGxovpEeB&Cmo|u)l_QAP=EM{e(yNY>SDy9 z<7XXVj(BlPw>$ghCZ~@>@8%_|jk=SRopLf@%YupOwyrL{tUfaP@o9AkY_}*^p-}QJ z7!Z^g4zK^Axmo=wlj*wbkXN5e@Q`B(ONEk?De-N+Z5B1LPkzWuigfjw2fg2PDyYC< zR}-OzMFys{&AD{H(t21)M8Il&p_YlQ)P@z>_wd$;$8+qgWuZ4LH;aI!-YS9}f4xQY zS6Jz{BMeE2sUnruOUVgjkf#-HXpOJs@m{omZM(sY--077$INZk^_q?*b%5Xb&ovLi ztW^^mAG#TqWy-gjr%sk2-M}@J05u7Okn}BZ; z@Sg$FiN1f%$;-jN57}LKoe%HE4oHC~tiyzf0D%!#x-omEtm575XOM`V*Yx<1K^Eb9 z@>fi%;D)w6>xM4@q_b&tcFhOO?c!pXF}0BnE^_tA2SySOrkcJs;6$ZBVxm(&Sn~J| zr!P6fQ@29|7bI;B495sWzhpMlhuF$BOdlU`k3I^VaM(y|LpfQ>eN&@_U^300@csB@ zL7Pd&uA(^{6nzT=y=COR8V4K4;tf@y@Q^Sg_2aC{t5E{#hrYqRUco`l;4tpjOdSa- zHC^9}waIKPW&G|Er}y!}EQpD_n+<&%Em~B45z8)NmmVP<2|qIPQdnh5mZJyI9jg5U zR-5d1-h!V2&nXyqAvo^r0~C)x`8GOjcdea~i=DT8Jb;)WysjS#2B88D?V3$uc64ek zacqM8hbFSQ)FJd!WiX2XqJ|;RR@15SM*_s$bkfqmiJPzt1L5_!(rjQ>Qc`wkYEr)lf7r6jn=6pzNL<;bm z?w}jzitFwp=rU$+bgoYL&2=5>%R@oqrs0cR-Dgz8k!MSohE>v2O{5u-JAFDV6ZrLG zFPK&n}^$N7HR=2qQ}|a=y(SqfdpcXD8OV2(}JK* z;dq`V$ohQ0Fymuhic8%W&O8#U;|0A%6M*!xxW;|Pcf`$}EGoX4L_$vIi*NGJsys3A zVMvR_WjQe6A;$S4boZ`NF<8ka#+yao<-1eV-aA#fiwRIQ3QS#lCIP7o=|CP67OxR$ zCq+|IqjC+~pFSB9|bx)QrWbVg@iwq&U?okr&);GtcEn8D7$2N>c%tkE)Mw+I7p%gc-|Sc zYyVU2NA?peoWM$Sovk)q0!7usu}0_jjfd!sF6)LK$d*vsJ&-#~JJK@nPlO7jPxt%Z z)cwWyXX9J#d{tj-br+s*v`DTs^=v=1`}8KdNfM`OO98Xi;Yy?&o3&lx4iQsdZ1%e4 zi_q4RPlE-nau(lH8lSThgTbo5PgPrk{x6Zuj<0-xa4*Qbec))AU_$ADhvz>aKU=z@ zql-_75RBrW)M8d_q^_$qpry;yl83%jhB?04GFPg7jr__wUXU?yX>;-S3L8n6fewKhaPG{DhC}C-z8lJJ@p)M3%+# z{J`soB@Ui}5P2H*2$4R_Qb>bCrHEcM(0|(;g;HGI*4cQ$O>;vz5JWU6;5(#%VZycW zxOsptGyisE8Z~SgGz3(xt`MEH{ZT#`N?f#QaW&&?E88g3k@}PWYY=hAPa~R^@op1v7)An&n?~$fVVOZ`ob* z<^czhtQ5;4va)Ft5e~HS+S?VbEQ^#s8CGtSe^7?s^2X7)lq!kBjf|zY#|;BAJt%Sv zDFhS2h+Og%rJ^OIX1@-iVcuhlg+vHJRoKtM5GmKrqQ@&A} zP0UYIk<~=7;uKOP&?oJ9=^0eSo_)ohDM~#gf^Et1@l%4dP{wM#s!`t39|&M4JFF3O zm8CdP3VZreCu|(ic0MB;aVJja=Gw;3dew-#^chNzdQYth;+lPp5k)qURyDzgMptU+ zB@la(p!qy>R0HFr8cdLrXiUzVt{PT?RGNquP(~P)`iB7yDMPP!0xUT2G?mAM?2!&W zt!L@0=HAhUbb4|yl*QU|xN(@cVkscwQ(ItT{?LFUu^<1`t}j)L&Kt6nZ^Iv=B4ZZB zwZHR)u}ylmK9vO*@N)z6P|h-(>bl_ec3;5Doqxjb^T(Mb{{%Sys|U@KJ>ge@#69=zz@>~qA9dUtpEZpJ$sl zyD+h&!UJCI14(5Xj*m`(0BJJ+9D0O3U-3+jQU1rTvu3f;e90guw!G#JQ7DFz1g&G- zEW49d;>d2?CbkLG3vIF$jG-UBW|%>gXnmOz@>CEi$fTVPY6Po{TXCq!M(X9Y#zuUSd=2TE!>2Vi3Xc^BdaN023M zk~S6~GZO_cJZ}sxax});M*H zf)W1wj2~;mgewo6#At)REDT|3^D$Z)C5g0dEa`O^u7y74;t(yuH$G6UwC+=23u_56 zyqCOZ%+!bw4LdM*kga`}bDd^%w+vdEjSL-kk5nX9-G_a$;CcQcCE1wG!F9e3*rOuv z{Qg%vul<<)pe2;S+?`GY--VFzldUSd#|KOl*_0I#27MNcZ22P*NgSOjfCJ1;4%U@| ziC4xrAzE~B!-G`?t1kzZ7M0X=4Ta`Qf;}Pv(byuKtdO@O;hDk!#$%%|%RmXWBfU(B~!H7(Zp`H^FV$6KROlulgj=U@EsA*rh$sVVNO zmWl&4&^bolvcrBS)mu;L_ti%g3Fi0AzTMVSqrf6*a0F5)+>g6Q{!Al3pd>wUcA(55 zhk5PmlSMJ$O4>PvRGuU#i61@(Dl8q2g5P6-MFoG*8k;!}9BU%6VK;QN7g5KxvwS>` z;`qD{GZUBiqDbAl>?huffm_Q6@%I+u9;-O@D<_M3S&D&;(5@}E<2yt8ELHzbIuupQ zsY^N^$ncf}lzv4vY^%%N)(r#3HC(1&ADJ3A()=jS_nvA)EA zpBfe&?t!46y(A4b0%d>)2=5C5H#^sj`ov18cqt{fp;qfgbM4Nzro$s0Uj z{%a~!`Rp+Q;($TrzhlZf$}g9~F+js`bJ71*1He=GuC+NrL-=plKy0*Pyde?AUPzQr zv?1@MaclbL2`lLxfN0rf$1^^kBS7a3M3+VZ6mE-gc9>1(vBvOLdWLuq%njJJOj04dJWwE`q=$(O_dU$BdK$ws!8S2%|DnC z7BZ$HQ7QsNOfmp+&J)4Ar#8tX+6 zw7M1mkz>Hw%_zS4lH_3^CZev+P|#fZ-bD|IGCc3Xaurun1q$XyFSeEmBek0%k4fIe z7YRh~6Nny!jxKT7q9pO1^LtLYoCJzLkZ|UU?4aNP0q`7bBk=IK;wp*o81SN1zc$K7 zpeQ8NZ|{K5ACLFSdED8j1@vZ6sG0A~hvkli#c7)%PVx)AMF1A~(Z zoRkJDJ{yuBSlzAw{0)z%2L?dNS*ic~JFuJp106p<2M{YYm%s)T3MW;afsI=Kx?kPh zJEyiWuffnh*MK5)<@V%ZIQv1Cn1lql{Wm_blqffhPeQL8fSrh{u5{T-Bo8Q^itZq; zBoh-84!6hZz<$~RQp=kCUisY2`N=_givaZq@a= zQK12PjPA$Iibcht&abk9Mi3(KXII5y~ z=T8!tA^0k|p&({+YzW0oJ9^5K^Om3prHjQ8oK%Z!LGU4Nh)@q66sI^4@v!@YfczZ& z85D%4Y)vL1pcac0C>#yC5{ftH`Vg{o6X6T@041ggi{Xtd`kvE+g^vQ6foe#wjShtB zOJ@2eI_j7F11bQJX-LDjgY@Y}Hfy=$tv_!Gf|i}z+#^I`XxdZmCCNSL&SmeAJkKl9 zp}0bdRj_6@I_S~uIxq@a!l3SzdOJd!zd3}KD^tLD92AfjNRXQp_oe@$(JwM zfTEOrwsCy6lVVL;IC|-XE@czd0h*+tb(}4T5Pgz`Lzluz4VVxDld*vV|I_P-vcJ#3 zOV9W0Ru<^qF|`B5`jy%w#UU163JK37^j8L+_L{}JwM4@U#!cWi|7Kz$N5NHwP( zT}wY5%C(Fn>%jT`8?-8U<+K^9HVGXZ#28JYxqcunUR1ziGCTwwdNf#}HQJ)O63+Ap z1zJ_PM(G=N=nt0+$}Y`sysT(F4&;3bt#o*AJ1A3r|26h<{(ruWKtDU6pX0yxcHHf} zy)@8pbl&Nb;VJ?jLFEPBpk5Qymdq1GNswoE&_)3(ug> zEBJI6eW23YcHSi!-zXHr6o!vt=Jd1#9phoag=D7ETzO7R6@ll~03>l38hc=xLofo{ zh+uqcQS8XM`b@-?dWVL4_9*(GB^8aiS%rKipJuy*@efx}1>XTP$;0_k#Grd))IR)w zCKm>px~~8>4Je)o6pBnfexOWi?6>6-U%Zc?Fk~k+S+7)ifRfY#MtRoDjNwIgtOT+B z;ww$~i&ShbvXtO2iordR#h+SntKM+{u}uH)W^6e4u7YB#Tn;gxaBItGg?r(H=zMAVb>X3mKbUzeYuCNNei z#nrz+F_9nN>CFaq(~lzR(cOP}fI2ZRT)Y<3RZE&viUtG3jokAj&SGoXC0T&=3D5)rK=%_@!UOggdIMq^WUDi@N{QmIwfh+JuvB+Jz= z`^8k{i>m4P$mQu$5s{VBcwPW8ph%0#NkS`8liLQo0-#8~I3FM=F6NMf;p3??px7yg z*KJq1;%O;v5MlZQ{;Z%%D`!Jd7p7$-Q!9L+(!(OgNGp2RZRG9_hejqiVEwxXVv7f$ z(v-7>`hg?m_GA%o@BAlex*TS6b9ZMWRd06Mdk=_>fHp|S4V^zMTzL4y{`p@a+{jQ6 z<2#Bjx9Dp$+;1G@Ujd&lGKdKm3Ge`wEmm&dcV7P2cLT&Zi0?6a5wFby*VpyNiujwo z?@398{X&4=Tt1p05ZdVIIvq zgNH-Jk!fiQX02b0^v9>6eeF!~)C7NhbXz(;f!%CQ zDG)*+;oRq4uLupQ#XY)@kdV)va-6Nu!8Xff(D-pxuU`dVPt8<}+Vv?0B7jRtf$sBK zn;*2rFCc;Y;Dbn)hX8?f-LGO4F}?W+w(X6V^o?Gx_J2OQPxCmy$k(6XpIt4)-uL7l z092p=Xx931KF?wk?|ALBb>RP1HhZDqXaq!$bVu+$e$12dnj1*^|%jPfxo^~ zWPJ)Im5z}z(0Gtm(?S|t6kNQlJ)BijFNpLxmNURp$qkjJ3yqgE9_B|v^V!GlPhjKG zBV#4>x_a2&5hfO;K2i4O)P!~S|IWM3|IWMn9F*VN^%yLLoei$KhnInS;|p$|i4~2S z0^nCnjjq4xHGb6Zr3}4HIVlooV=8du;i&I8i~DQ2RX5zKka&l^8Z5&T96fc0PbG$j zKAP$#a+wp!#_~JDm^w+_lP`TdrnGcLhiM-!Hzm5oDs8vIZMTptRm3lXmGwL&RD~#4 zgo);NpG_!*J9=r?SEAY=Cl#L*A(uFZ2cbJ)*9u&+S?ifzHuJLRhrJ3i=-swk{EC!*a$!+(=00CeViF^o6~ z0r!1R3TffB=7$B~mx16mzLb-oyv-B=e zC-zd5WGF`8wyjv*40VXewk5^_<$GiY{ z$>D6kRky_j0qxHQ-gyoSprzk|yn1^)XS%ah4gx-DbTaQtnl*n1vgc>-f3HARVgB9( zI^~&_29o5rwkfw~6Ug-o{xigLF#T{1XjMWWq<}XtOTaS-ppxX3TC1tQbAn2}zjM3X z9mZSIV=H>8}##z>kojuKU4>x5lrt4rm{?+KNmw*#@^f#Lzq({ zX_V4FGyRfJRR6iq2sBFY`>}Yl6bgNkfD9a3z{xb{%ADi14j@m41*~)wemU80z$wt~ z)DJ{kmt5=P7SbCx$t%!O^}%!6h1cvKvSS@FD8OB20qR#9Em^UwJE{?U-@ zqsxudwTufPN&Ci^hgu`XF#{$P%RG6cNtzWp z!-5~=%Qc*Yktqs7cuq0IW4$XuhPd}T7+=a71hNwjle{>^Ob4vn2VB?}&RvV8KQ7p4af|{(*oF|g%eksA zjM(iGI28*vz_m1WFZY7+q(9R|D&!T=>b}tpfd~m*0!158w2R3+ipek@h)@*G*r}_7 zkzejK{E?Ki1OlB&f$W-xXTUDG^>-4IEvS>Mdyu&~xqk0Z#4l|c^%H{^S{4KYd=*2< zh;YiPQ>!Nqu~X6fJQ6Kp|NK)yS^fQq@n7iIyn}^=5$(bf8teBZt&zbzoU+I;n1-|g zeR1ES#-f_pHXf0^9q#=!|8(5{cBG1z5t(2AG8mZdc+Ttne0R3agiMMwWG@-ZsESNxyWM)mu& zDU)0!c4Phz?jJLVpN9yp9qeQKeF9a#XFpuVUI7+rv7mtRIIwlnRwZO}e=SnG#Y3qIUwA_${gSWCF|2uQ) zem~3zkvxTR&olE-WgF%7aZj@9_X}s7XD9cIq;Y>dto`Z)& zm_l+6-Vg8;E5RekjSW7Vp?DrwCC)zQ1NX&5HQSIjPY%sLI6IfAJNa1O+3^B|GTDEY zZ|TabbC*|CMB3!z$*&gr?l{5H(|xx@~cT@BaE?1hqWOIRvEVClC~Mo!Dr1> zWcW^O0uz@M3?}_X#w2ZmOVMc0iO-&{%=R-rwR1U2low=IoVRJkTwzCm`c7mMW@)mF zSIQ!l3907{-ElS}a=x>szQT+LR~{weqm7V3+yU=TuCaZjuwHP$?j|WfpbKlX1AGWf z`_3Y4_{n4Y9JOsZLrz6>vmh6Ny5*qZmDHk2tK;Np(=i`5=`8|ODd3%X6v<@b3YO~Z#8vt`366V~L!44QxsyBvT&D$&gJCun%uGT<7jfa+VaGb?@~(|fIFsFwaT z)bEnbjbHoT3*aYWB4X?x`v}oZQe*YBmExnqVj9oES68JWR^^P1?z-kfd5|X4pawNf z#1&a}^NkpF`{*07gD2;GL{$=Nxz(JddNCAjtX9Ih4Mp0~ZJf1|nQ-$Gr;Pp*Aj9#* z(u2acF-$8?KrIWqTHUrnCZDh^ndK&@9YSt@$O7~%xBv*EMz=9oTLqi9Zdu_$tR9u= zK)mfKtQdHU%r%kaW-S`%L^!7%>+8Ef2)S!>7jU10DGQfa^QicZt z<@rw`kiE4DUf?Djlpc(N-H})#!1+7zEpLs>QEAm|Ph!myq`jiwt7Q# z%AZr(egCT6a`2Uu%&wxp;l~FlR2oH7{yU{qmAbL1x%riDh~HPE+D0J^yvfFXE%3Zh zV=J71s=I_;V+yqHJ9&Lm_&+o0@v7T>El*#BYodr`+fAwWo3+&xe$lDMa&03nuW%C2 zE=OG-OgbKo?1A!1cTp)^t!+=L8~YO|w(>52l3EB>HY^R~aq^s4RrKPMX`Tmv+7l33 zv&lD`4z&=8XiZL4Ibf=2z=rI!DfWpk@FqG_pswU*qJF{tRz+QX;I@GCt?uh8ZiRyJ zgZfAi&K28ihNs=l8J`; z23W9ryeX-C{`*;zu+cjDrk;_ePYMzzWVX0KxMcpyPx=9LPifr+oU#+L21r~%c zI0>S~d^y0`v8?Mr*D(Lno)UII-~vmF`N^*_$c4swQTsA2Y#o2zJh$pIC)K=X80q)) zpY%=D5y(;bb|k8L4x!jzN2VHhY?&_)D{QAUr!N`t-oFP12p#9H~NFv-dsR)Lg25JQ5$)=jD+!{ZX@lr&&jS|mog zgqaXTxh>Q} z>Utr?S=)drAu`1DKV6kE>vAVEsjWmYYZ_x5&Fy>d>K}s_n7=H5qoUWwQ5%^oe2*gn zUCQ3cr+fiL^aqGM#Ea~g8G5I#t*tB;nS)8_s)9b3C-=pI{yI~5-RO;YJHJ1-L7ILO zW?F$ur7B2y`8|T3kX=A@XW-+qW&Cd5Z7l*bCgw!<;Ylj7BZFW$@%d1~drdRHhkp7^ zJ5fVB5vr;Qh&`M)_Dik_XoS~Rm? zI~bn5#ojffWz}MG6L0-9#z zdG|@qv`mVpLBG}GbQp4dkeyR$4YZH39s@))Y-j$G`qr$PPUIDvLJOYwEXP8&?k1;q zV$$nY!m1AA!CHm_pMF%Oe3^&ybo+3OdO5-Cr>bU#LrDJ455Y|$YY)fbZ!V}0v3&@Q z%l!9BM)}ZG#Q-GMf|z$yRKj3)*H$dc!pvQ9YB#KWj9)(KV7h8PZVyp=J=ThD*PaSV zlX2)e0L*M3ie-rB4zr#Fo&ecmJ3=fL#Y6W+x8Q4Z{~l0JI8;PtH<{|xuI6xu39;2i z9-^z_(fv|sXK^gYhZSH)4Hx~GZ2q(7r<)J^A5>t~Kox)&9x_I5hXQa@%bfHVv`X;N;})F9$!}4e8H6_J%K zuE+utmEW5VaXCnQ5{NxcMbEG6Th31L50p{}_Aap1{h80%JLR{w;tFtmj66L7h;wmc z!{Q@RT{}c#X8zANr{#H745Z!s4C)DhD2fp%HoU)&6!8#nG^{Rjo}g%5d|vdLe;?+O zNuOm+a-@4e2DCusx`EKEMriB-v9z=_(BA>!DkFvR$<3ZmY~MR?dB0}0_3Vv)ZF0FT z>RXSIqIwmy0eIpIp0HgG6}$Ak5tYAKxZT*v2p<|D|A zdp3HF9!x+z$fD%=Eld8nO*KCm& z4GjrdGJ6rF+H!_Q_@>MLX&U~hO~0G4?yh4oT&p)7PPLP+tAezvtr&lh!h&h{3>PF6 zyOh&}6_f@8bce%2IRBYja!GvaD@`-s4l~Q>^$eUM7Qp@HqJ2)BI?Ol<_~`W4i3AKC z&MR=>0B(N+3gWVG(vh?ng#F2lx!xxJm1$|EY1~9fdd<%tm4t6;b<=g-&Qr&W^15b= zW|kOeI^-NBu^c8*GXh&mN|=VL?O&hWefHI|w}E^NZ6G70kMw(6H|1+Lu$3rWnYd$@`_U-7$qm_ho_$`&9){bV?8!p$IbG6aCD6TKwRj7w^F1GSO%E z2^f=7XkN-}LC>SY=XmlyA%Yxl!Zqh{zR=j}_quqYgbfxEH& z_>UmTB^(5ebVq9?3$;pp&+u;h4J8dgo9U6LZnXX5F9jKB$Z%8f-M41e>!~1I&8B@HMN6k*r71N(!ov6AmtmL@ZDL@8hAn7r_o381r+KHAb0gc3FCp)pAxKhzfY)ql_W z$Q9jXqO_RZmuX@ph=3n9H}f&H)Ho)lq(zn-f4+D(6_e+1eO=73xiYRe5tFO?%6e`0&@lHwn|{f=*FU@jmA5Qsk$G zulio_g;J;cLxEL#_MgZ6ESBBUPY3qiAudPHc#0uP*2T7cy*=^+{&MD}8d8MIu`3)= zUKyB|UZJK~k1K<>hdYla1G%4Y%}${h!pV+RGwEmoX2dsZ{D7b;cEC+T(_CX+{{I6i zbR({ElId>9ACgwPHF_HI!i4EoM-LES1J<#p$Z46hHmLk2Ecuf|M!a=?(Vnc=2~kuy z59ZG+E$s_#sfdlJWeImdgN8(BrDP!Abg}!?EfSM_ju5bF=ou+iJw?Bvlctkq2)afC zOm$!ekCfidMoUD@{bc@0l9YA%N4`Y#5B&1@wD||DH@dMovEC~2SM5C-z9?u|fP{6; z_>K@gH=ZP;X`YLH75aAawHduBIO`piHg?4{6?rC<(e+{a!%qt-Ba%Hh^6P5p2vM@5 z4|D^>*s!J1CQZlX@APBELZyMoL!sucm4*XrDDiiGwj15O(z!a=L5cU?m=v^ICGeES zaEMrB$C6tRxd4^tum#U^I;MPvNIJUM7}F9-t%!4SPR~ac52c%5P7JjDU(vR4f2I6p zzmUAgJMej|jt6qE+aI5n8~Lo`Mdz(8j?3PeOfSk`x9$-fs|Z9%dqtnG;UbQJXZZ4$ zL>6h-9mj3YCujc+u)r0m?6>_I4F+_4*Fer<&6L7=;}Z4W2MFoFh4))i;1>0n4r-TtfDXSxB+l zK}92gN$fq&O#HL_J6mm5IMG4Hg$U+$x~$5Zcj95qepGAW8Eg2Qx2vVp#38_}} zetYFhrkHxTk9Fkn2$JmQl=V>##~R0ZH(alXN|A@0smiDp=Hxi;d0OKFKVRF?F~B_m zo&bQHnE5n8==l`Fws^k6F)4q#`f`8$w9ziQ-ErEHa~dBSKsFjE7QST^e!Wyu#^X19 z7#a1tj4<51T`(-R)tz5hU__H;UT)a-ujWlvPNHLAP$ST2FR0f#Bf|HP-nUCo(~A_r zM7`MD+sm}}`W9)hv06*vY5}y?>$78fmu3m1@y7ZyhEuY<*h<}s-7CX_R?do)*;k(D zS%?3{#F#R2g(|j#?#ep;zdVX$2$6)bBzmv6H00U7<|f5WoJ2N902Y&gX0XB z4iZ|>{-Z_$3ab8T4ldXTfCEd0h%ZGU{`Er!up)9oG>08wvh0Fu zzP{IEk;S0Ng-5EM%G<8Sh{OmeEjlSvd2m1ZPdt%h$2b?A^| zd2+a;6Jvl?o*TQB`GPl4hc+Av7bEYtgiK|{uO4WWs76kdBTYgSTuT%;tsC4ZjgQ@)!kmn=-vs?UG&4c8H4bVWXx$+WWN~!m zu<-l7lDVF*?R38&+t_@su4^AN1MdTH;jBjg-5tikxR6+qJV{HF;YWW?k$sl)!DMK~ z<_0^`OS#rfUDwl5OH#)w1081T3^cdEJE}Sqm=~9X^gahV>wvv9RvQmmPow;V@ zo`w}k5YLXu%P$c3*@|%w?T$;a?A3Z9ovT~b=P9f^cy|WO%Hl84w(7=}rPavDtN{^Ee(@cSTSA4MPfuljjh_=p zpl_QpSSJxXc@RZ8y8|0#GFKlW14Ik*D$C`ckYS{SDh0sl?Hg};ZF6&?S+pf<4E1NV zPXM%P%rzEVA#Y=6XQD5!FHM1vIW6u{|Mw|(Oo!Rw9Ey`{$V%{sP#n$!Xmo||{V}f= z0JX#Qf$)o!&q1SavhQ=u8{vA3Lty+73IHQkRIt{vpsm71cN=vL3?QNQzrIoc{mZNZ zdD}glFNVsza`%*&ADi)?ysuKbjj+}85ch9s6%m9tcX!QR-ro6ZE55&>cX#1S&ZXBZ zrXLxrb#@Z);nqR&*lyp{r72SJ$ZL2?ukFLHS5NE=#j&~UEx~CC#vy!$rlDEK;&0_A z(}xxR4m6aN*{_4?yfdR_fj(nx%dz<*R}ekFFsfvX<{Tkya>BhzHF{4ws^5?_Yh8Tc z7_yqlAOU4Cb~a2@G^!~+W*^Kk?oim-_*9~r%Ro-frK=*M-&xBbNIacR|I6CPUGr`L z&0NwlJlHhKKJprwpC`~=(FNR~oSk;8EintN%SIRu2w|LW-{YI82^ z`Pdy2=uu^h2M6L2Z1eYgsO+iwiv~Q@;gG#y%W>abX70h`vtXrts4lY?bzOzYBRYD? z#G@B@FP>Z_B&(mdsT}8TAkDE!6KI1x?SjQdegC=a!-t!1>Z*62#l93z9Ta+ za8FvNafCS(6(F+sPub(Mm;eZ_K0F-mA~#-=O|`EL^1^FbsQSf@gsYn|lZ!gi73Rx3*;I_2>zVvG@ft0A^&OZ%BPVawa}Eo^~Lr0o|wXereAhAesmI&Xlm zi_!?a3${F35Q1u$P)eVa6UxWh>N*<$GZBB$3_s?Xh^Qgo#Dmj;`^6@eC+3}&ZaRl{ zdg$JA@3L9urCDTeyj2v2^?xdJM1?pqnp;q)iP)Qu-%B~sU7g;(%ZDKA75bZIDeI+$ z;}!yrL%kuY4d6B)WYgc=7yQ)ha!sIQ&^k~U0q8FeFdEPQnm8KoY3iTRmDHWn1)c9} zuR6^L@6YI|2YK_@n;yP;9gfA=o&GpG!rpbApMLF_tZ-2wdg$uTO{!ezAgshru)!W; zptD7&Xy^W|R{2oxD%M#1faMcEo@<01If6uatl-4$Lvc`l9{SnbAmkdPx06A0jpPNx zBCM60zo+>l6ULiR~h`u(e+yQL$F@5v4SDGdlFz0=4FpWo2no53nM4 z)A9grncQ(NNdVzE`eZAirlB4cd+MK8+K1mUgjzqZe$8KZ6j?qr991NF=TIy(P zVmVS>ve$4kJ{hyDAnYB~=>FH_L z-*YW>r}A4si9G*l!C~IvZCoD%<8BxYR~3UzhAyKw&*t)7U;qKmoSO&evU*x-Cll(4 zj2t!9((ZBlpTph=zTqc@`G!+E#2ikDE#oqMMGfD`OE8s11WpWk%Pq-X{p;S5&)is8 z{aKQo8dYCU@nq6(GJ?F}EafJqvRbBdo&VuyzDEdD*{{(d0$cAedlYMl=?6Y}i02*W zUeL}V=e7r4PeqZEUl_4BaH6KJGgnjCzC%CqDRCeNU1eGq<4{Qq-rFwV3g-n+Kn>nj-`JK#HD9Et0;eP;wH z$b%%FiI|E_uNzFgAig`}7Bd=jQDV!AO7$?Dp3#OC*IYiV8m-&L!0yO`QNbdqVnRyg zFcKcwG8Pm$j27>lO88Mn^lR1uj$oD7$doOBW1zc-?jTn4;)<6cc`@%QRX7nsn< zb~qmMqh$)W6{FlRG4r~3^(!78Ut+ZPbiYnVx zq+EKJ>jwhb_&ql~oyO@2dI`oDPI@e2?B$|(aS3abR(ku?M{vKcvD z15%%d`y-NxqJCP^Mc!Zc2TVV4Pzd;qe#j=GK{0NNizHfiI=YfHNC8jmF@IfLUfy25 zwf1^079PhvV88hOHrBb9{W{}2!ffc9$dKh00D+*uxU3kZBURw-OvMf_3)rqXzO9o3 z=Wpmb!;vqiBn|Y8KulB8*~-1n{>J)-PpuFMG%x1JPfy>xy@j0Ck3u{#n;-4~U9V!$ zw{J6Dwp< zI{#N|O8((zZEw?=oK_1_4}F1S%%=~-!MuJomR1*AXCP0g^Mk1U$@}?Ux68Ofh{d+7 zolB|HR{UsODEr3kWXW|;LzeKB9D;g4VtaDh5HwqwvYshnJU~OI1HX*TY}pSAXj6ay z6M1dC@~R5c`fn{-$_xKk2o(p}7ByPco(BzmLjr>Uqs9t%yJLov(WXO3t9xPLdiRbX zIC{pwYz_8{1!tIr??*WS!bO|>U`8e(_3*l=7l3nDXdO9V7I*dAR;LC=XPAAhp~s%m z)Pp>_ZMb?o%-$}epsw_z4oYrf$$Q@2ql)A3c}P8kPFj_cM}<|M!S1cR0MInAlZrUCm_I7Td5jdPD^=M3J|SrY;?BZw{?>h3`W#xf1 z%aa7deISS2Cxx+IWK2f(eXzqN7<#^T(A^ti^Zk27Ysv7WB~l=4;FjM`FU|0i5Cu08 z#;|yss|Gu0lp6e`;^&jp|KuS0LG{2H=PfZ1#L$3J7sdo!zWrR#SJ924x z*+e+Krc=xQVcMK6qq7UBG<;++i|gwIIfirHTvaAmm@0=0Q*t)>0o;~%0nn+qI4&K7 zokeQK8WsP`r^%nID-GR0W7EqMy{l>{PVv@9(i{vD8Y^sTs9swkmqH(Pmb%)`CaEGv zmNm=&c0ZEMeC9RwF5Oh2wjSMfKG$KlI@KXvwqh+x+{nDLWOdh;?p?MVc;j3b3TR4QelYe?)J4fo^rVUfa+x4DghPYa=tA1i#GFcaJbR@i09F zCHzstko$H`{K;}%HUYkRAWO}TsvWGaO)%NK}~!u=VDO+S+%@`j+D1aPLN z!3|;#W$zhj#mwcJzP1&Y60i{9|ASj`v+wzUzdMKb2nS^UBIb3heXc*f;lDwBZ`qgD z+WQ}_5B{xU@yZitqXsz0(1|fZKF$Taw1@mT;I6HOsY=QEQ$3yqS1M+l=e2yGcR?f{ z`LR2K=0fTBlv~2aa(n;R&O42Dj{~H-cwzNRhCcHje+Q|6;Oogb{2WWp^)>c9s|dL!b`$w{97hiEbuRvBilQ#~z{M z4(0V#Om4%H>Oa*hvW*_WIO;2YtKgB6j8HIg?4GHAzcZWySaDakL;3+Fy!#^WUmIIa zvPdKE%m**vhTYySlt-7A02FaZbxV;F2cVO*1~TBm42{B(ny4q9+!{_hgxuXc)?$w5 zGq<>+nv@fn^mjAAWBipDyGbJ&fUsCkz`OxOo4cqvaAm4~<#ErFFU>64y5B`e=;0r| zoWe%ve&!gZGi)YQ{)P*KTh<=N7*mc9m%SPMp`>VctzJ`$xp`E>O)BzNj3&1=Ji8w! z-^vf27c5^;3?8rVC7Fw5J}oVW7Um8_PWH^s>9;tzu$PED$bKlHTL=3~q^8yZKSoyC zxIlEmJKu5LdQPE6(ZnwKdK?A7z7|++fbr1sA!OvT7-liMFFz^~`&zz{4i4WSRCG6F z?d3)XQ6wS9|d>7EcUWsWPP72B?;vJ!lbMlMYH@$N{vYUn!7 zqh@pdR8X(Q%^zTETpFGGy|fF>1KV_Icpx=BVu>tPT~}8(y}YVQwg>^S4q*S~(~LOA zX8EQaR(z*=6N7o&@j)I3-g2fZY6~vneE$~w9LxIL($7nEHIQLkr3_Qy^y|kLWH1@n z%z}A0U}MF?+cxtwll5%9nIVgeo~9ob@k3!k0r8FEl~YWjpDuoqnf`*+DLX;L&8w}c zoYaR@*hdul4KP*%SHmiA!E=o+a@v+wG>p*}?8`*Gm~h)6Q|32whTI z=laWn)~weL=;z=DTQNqKHQ}wEXPOK??tM_Kw?%H!wtHrB%F}OA1NAuQs^FkkWtd&( ze{40YjD0=sO!~pxL$$vNE=>s{__y~@ekT+RUHfx)3rcG&h#BwwPGkG-rXgt}`+Gn4 z)&<65eyW~}B2UX&^%;mII^xLqT5I4u>E_9hMJ4}b85SPj%a(>Pj9=j zsNx{O;A}SLAS=35bEe`B+`>91Gkoqz1|ie!T!wbXE9FHQgGu5E5hElOinz0U_N{8} zLazDG3n6L_<(FnfA4d1|tkQlyIHS5%8hFQHcHF}@OxOZksB=J;;da+-QKQf+@?`NA zx$#i3VQjz-7)LOyW8iHDInKJClA#)QJ%XB3HS)wJMAHy+xh_2L zJ>Ih36pzq& z57RdtG(_!cB!b)NIj5!M-4S|^U{E_(UF9XLkx5z{DJE zOjNr}leX69qb4k0a*WxWb}TUst+0Zk*W9sM&ooGqMYeA=vMZ&%6V$fmOA3q7#8Wiw z#82?0;$c`|L?OOkp$m+iQSCVSa`Q22maHI4dHS02Nd;%{dMos;@@G$ z7;f6x+f*m5P&DgtdLF&+ffpSs3~l|^+HdQ!2CfI~yHT2%g#^1V%L7Q(Udq!YMD(}= z!g?YUF;wA>Wb~@5l=fl8rEimkA`2rv*Zvd<>@u?!?J`VxIgUT+pZ~D$;?g<#Uttr*Q3uKeXdN@AbkqPVE(G z=OUbnJ2{Cu54TsDxBx6*skP>S}!PYR0>VBUI>fj?zg3-|_8(@4?y?^>!0T^h~SzNCGY z)Yq_L8w%cDK7Zu=%UH>pF(^0Hk~9Fx`%uFhyfdpXw*E>1z|4DF>k?UB$Fcx36_98E zkxL0hpZUdPWqP~>fQ};cHp=BHuM0vDAI9YZM8Z|@^iIKK{iWnG{6hR*s_lL|!fUe-bGzbTFWIojR#*70CT6RAXXAOrcaTu{4KYDQuiZ=g zodGk7B;%K8uJAn2;_~Wl2?N~%P|h(^7B=?B14F(P&osN9;hX-+{-%9rjG29<+*gB= zwoGe1xzOsm{~jhyYMRra*()(B>V3FL*Rt6cmGB;g^%oUU7P5Eb$U*ewRQP7KePz=t zK)Tb}U38PeiP3Eg%hNB{ZqMv}iEWhQiC_P!fxFWGmL4z3ik7M$kp2A5vT`c&E{kwG z)Qw1?!cAKAwb{byt_&agqC{GLGq}3rn_hYesGB@DJ~Jk1kWa58Suz9HGn{ zMdpFD3^#Jfc41>(*vkTV7a6988H|$B(bEsiw10A$?D2^8ilmSISk@WlppIDyEM+1mgX=0%akgY`AfKZH(FfmGyy zE%l1Q&^xN+8YyH)&Li#$g$o$vxCRAlJh;C47#H^p%(I&;qb<#0TXJ?I=&sp_(}eKg z_&xv-uI4qkm_#YT6`$`$fc{3z@id8gWUDq<(p;9++#p(r+v(t$4HR%1$~6}V#2$K+ zoeU*bDoYg-NnCE?`&0FMA?0SgLkNVa`|OOLm6@O*fa=BO=5=W1JvlJsL}MZTTM{`B zgx|)OfO<~u7dS8D<%&sG=t9M_8TGCUhaY=z1K~pKx6*RkO)HMQnTc01+}@Xz1*X{T zuq)AYgHRbQczFue61BYPica`RZR5i;svG2^9htadPf>Qi&Y}2Xk6nUGZDZfC7uALL z`Q3gDKN|Ri1-7=77%Xnx3oKwFB>Q_qFq`qVC!kPh>clsk@79WF%MM`K&1v_+ttl!gi#5HI zu@yQP!of!&qQ1v21DF=!+n17u&oG;80T$YZI>i#S{u^8q#F0phQlxu`=udl(k;lS^ zcSDvBCkiT*f|9}<4%-7!{=XM#%jd@Rzoy&Sd3;YggBo{+%Dvz71gs<6jSs?Ug17|q z(uL(rb6d)2%{8lVca-IQ?A?p+b=H_io){%adS~ngh2c!!+gg{Dj;EVgp$i$eheLzx zdk<%YE&8oGK&V$>CC>9kfH8hukq(3d^8#Kfozlgt+W*BTPr@XaaFD4YHRqxjkSbVD z@%5<;BfkC=9U@NXo|kTLh~Z5GPo$1n0Ovjjvfa}!|BoHhcF}_d12`xcZjo+0BT>Fi zh5%3V`Rx3e&G7XqSzFi86r8$gBd<1RMlWpv=NMvbTB+C31Nbun60+4!-|R-aj^34X zAZ3`GV*PUcO~lWaizs1Zxc2!CoIN2jJBe|~;`ad9=a z)6-M=Seo(#qh^z7{4I;@voCfy5)Itn`m>|{zMVKQVLRsK@B*!Vl?OM(H>pBz6<|BB zd;XucgI(mFNMvp$cCWPyoQ{D;IQ{|uEv_Ywg)*8MbN$iGR_P9Y&fkaf)APIKUaA@G zP56X6SQ|QmLpLivbncoWifl5|iu}s|#xqxnK&T}meRKUk(4Lx=!r`J|DyZ2(;gJn< zA4BK9agZoC^85qjzQ68&ujS3MzuY$Wc^>r5uwJOVl=gid1jJUPfQWH^VP0H^w`9U| z!t2}O`qDmw?=ge>wdeP%2X?PtN5k+yT_})9R@4#?PMHy1G{*x)sjv#*5NK10sdkT; zQDdtpho*Erva*FKZY!MpY^fM#)KX^vLNu8{6`%;NW{$fGt4ZzLyc{gVEjlrlcP-dC zKt@-%sA}#Paj(qV->#Fco#}L2;BXWJ$y^n`29N_8Q&Us%u$SBqEsud|_O)wotQ$f9 z=^c&1`;D*-;pU?ePw27QFJ;;3wGx>1e2%u&XklgHGEBwx5V>mi2Sdp;b~rZb39;wb zCp6VH5=wVL0a3V>;-8ok$cL^UpPFHvy^iP*TzNu)`N130j@;iUy z;}_1YNdl0vlaq8UYhrZizkhAGNumI`TO+>!AMlEDfaK}pc`%|e-0tmT#>N!#2>sC< zF2+SDayrxT+rK-AC=j`lbTQ+FgoqosZapJjfh{^xc5LMNK{X1aQ&UuwkCPz}UC6>R zN#?8Vp4mV!o1>j)L@V@+D_uc5y*$jM%8E!zoJDdlucD>Kr2)+p5T5*GlYV+*C#c|Y zr#FidS1cTIM1hxWAzy=UsL9YFJ)X5Vo`saYY4>o%tT<7;w4ZOcs{87Ju>WRgYW20u zmOPCwW+cQ+pn6I+F)<>jH-2TCTNqS`VO<+u|N8k>$Y+;{-Ac^+ok;kRti+lvbC#JT z+re*JT@vP++i|(JHqKv*>=|2ZOys@I*og%yVX3_1IcDma)7)o;7#nnG>Ol$kMhRGR z=6d4SelSpeZy!$08t| zLX$)GcKIpDAm5JYG0m1H{nv3fIV8oyb0|pes*F6?6!%#DTz1 z5#mpn^TiJGNPhOgQe>Q;_r<`G<&w}l`czHM&i|eV3!Rn*!NF633^#Ss?>2%6K{f=% z1S)#C?Wgb|dX(m^J_N~X9qQy^WTQ?#|8N2d!++}!pU^nPCo}e2?4bdip!CwN;pD zfSbe~YXcjw)L)AJ)%|eA0#7@DZypbq2LfAL7|ea8ztS+={t1okFG-D=@5|g*#;dsQ>ORX% zlbD$y#7PpwwuD|m6rC&UKXvPk4Vi4RP#g-ZW_YhS2@mLPy_CFo0K-_-JLY(r0Y+Fp zl!kNFN4cM`ryXw_pt1p(-r2jw3(yEV8u!|@sgM}xy80$S|GVpXdV*58t9P)^wRaW1 zYzKiqE9xK$xR3DU*8lv4fdxAI%J&01rnqI|c+jAA+HP_I-)*7L1~qZtJ=!T6c>il^ znuiA-1#?Zu zw(?ak9o-q{N(t7AGF(@sfIgXy)Ee_-F#3lHom~rfpa=gjpVA#fu0p3p$l*ZLu>x{I zgIiS+%oVeu01g2c`)6VWbVixH&s8xkYaEQ0RQsVaPwKl`RMkM5$NM|y$+RM?f81wV zuKi-4D~6^YFIJ^3+jp5OZMXX?s~zp5&b*02duRHk4;fqbp`3XclLN6KP;zusHocZV zbrZr8SqE*ek0)NIWrlSCHn>=I@)+Z{0rzUyl@4=qLP})XkY2?26kjq^<625yc-T%@ z3%xy1N};hOg+K=akZoLvOPW+7Tnc3l&085~3ibSTKlVIUz z9b=y^{ZluBEB_Dr?>$(D#*8b9hMFiGtd%MYSUP&ry%gpt=LE#!lO@J`symm_$+0;WsDjA1$=U}z!(udbIEfO>29z;I%(|n`d@cOo{5&F~)lFS71_m%%r!x0lAieQ$z~4{TP; zoBM|je`)!V1YigO7R`w9dw*@dJM96Svh{X}6&=_PPKu=wzxr;RB8U{fLS?sA$d9;| zVa5;)tB~Cn{n{*Md=oTmaSqb$z&bF^gkvNS$%|eIVYRgmVq8UDa7J90i*(nN`I6zH zsT!OLx58^;JTHJ9=|Y7jh7cN_^x?K>alXTAm1Y> z4K67G!2u)Wf%uC5r0`+GiZZDUK91cX@+qPxR>zS$$->#Fo$~P_YlWSCN{IJ4)5c$p zRsVWXz~uaa;@$aw{J4}ECjb0pJ zga)#h3;+32$T4QM+~Mun4|(w_jBtWiJG|4QDinPFO2nZpBN8qw*$kN3MnNDz>BA^F zPMfkEx-m;*xgO0VudovOoZNBTCAQo&({%e{`sk81ttdIB{k^NTq;)l`AXG=Z#pi*s z6j}L+O4@%JA4(A{(8w}m~2($>&A0;+i3hBLXJge`z9-{_Mi6kW9V~Y*H5n!WfLqJ zhWE0+BSMm@hvR~%3lsV@rQX}yU!D|DC$cc8^YATH|Q`Qcix^%XDTzwXP+j|FgOa5hF( zE?XaN=CNgO>lf~cd?Wi9PCgjPf$3zqT-lmZkhd0odUdI|Zv$I@v^E#5gQ4rlQk)a7 zBA$q%Zf#7ds~`)VE3X50iqJAI8BVkK>IH@r53}$R3QL9|EFlhGk}qDJ+n#VuP}tQ{ z#e#d4P%Qa2G@;G41Emk+qo6O6_S4CZ+i=uA-87xWGN+4#H>)o>YowD}_mtD{0 zy3egItP0>K7aR`M`5KPK{42|0#6{5Z{5C5(Qryu89OWnm+@JYW?!UMNQ|nUL0k-D6h?#I6Okz zv#*MV*jU1c%#GBGiYFp)yG@q`Xt@6=COr&Rh7Cez^HJl~UPQs{8Un2?6W)%T(X>Xj ztKRI9-L6T~)tCUUOfAbM2KKMKE!sr574J0*p``7%>80GnB3qKQ7AkJQo?4tAG<1a? zoM-T^Bz453@-Eg|XgB?Q=m5{CAUVm;#EXB9r>rU{^r=X-C&W1UNfeJb&whQKe-I7O zFxzk*=x#hy(bzrX|L!Zo&myh!<ewU$|(nfBdWdghOae2x|tO=1fxP$S` zoq;IQ=k@cKSAf#;y#w|6dsin?hr7q2>yIDQ-~EA*a0iMz_AgcBuvKKr&g(%c(f$Rp z?=9rOnvXI9j9yB^nrm$`Vqw!?*)aMU75yx+F{KMt3(9$q((bh_EfN?_QUX9I=m4>% z>}vi0XSscIgD>Niz2D&*K8` zP7U;es?lyeuhM!vQ$%{D;kkI@Md=^*4u(Eon`ukwBZ@cV#ggqbn|qrE0^PuM*6k$; zA)A4jz)MyErU2c|t*t&lmKy^ZziR#}Su_<&;rmuX@UZ4i=y>xZz=7my(okiRC`#Id zv4knZ#mqfgBhFFQb0{2ck}5N`8-fo+=2p0bULzl{GI0>P6sQ**F#OP-Bh8Vf-)W_p zl0Lh-tVqs4+kiwvRg;nsnZ{N?g14;SM_cj$E)u&NI?`bq+PKHJ8@_uggML?AV-$=K*Jd{8HwhdwxJx zO_3EK<=5-*NCZZ!%gtBsJ1C{w5fn*#%|Rug83_3T|>i9C$@q@ z4>13#RoTOl?}TFndw2kFSpj>zrS)YX+t7e^)G0bTs7o@j>BeATSi^oQ?L;&)R<<8R(JhDpD{C&w-DF(I;)_dofJ7}`m^_!nYcrAQHhEiCkXlQ zOEC*M=VulN4p3r~XhhJBB!oOxzAJn#!IQnfy=KC4*HHz*G@*Zd{u`4EQf8@5BSc>6a08l!o_ap{HJ z778)4`YyT3C>g$i5LdH#o5XL!SZ@=#1rTcgffPSx3h+L3I+iK;Yo zgsOW7#l*vZ4jX8()v34Y_WWXLC?ZuBi2L7>cVrTuyJ=pc0B)H_mT7S`@T1S~(^KAe zAvgJ)3T(Wbxi&#snc+OGAI4ofM**xD;8GT>cFyxV+FD*GO}TxUX#fDy2G<{ajZV>| z-`8_0(~U|FqvSW{6haDCWhd2#c`h920_-p1G6&*T<%KePsD)<{V*KLsaWOD3i7=2q zwiISU>MJDodcIXg#lk`qBvu*#$_ghDM(S9Rak*me-w&mC-I9(F4C?>j?25ZLi0Rry zU~gQ-e;>nkQ6ep|x#nSNBJ52BO=^LsWFINu(8L}UV)0rXfuAyr@|C?dhdG6 zs1THCuC=mT!Nb9vZ|}7}wNj{dKlx?pdKDkKXOPgn;< z!mMfbj*gF~v7yPOv_7#WqoDZbpCx=-qI4NAayexNu>qK7vw+hL24)OxmaB5y7_Ej* z8t(nBd#rd!PmGxp*8F8HNbSEWZvE<)+Q4Hjb$yDB*L!H9%FE+6#dgo@$^p4{>8LB@ zzltgUtyLncM%^rpm~rriwXNR9Wu2R1ALCi;iC4;sL-Y?hChf_~wrio_tsT6t?P?4V zNEO9lCP*mQ?;K`%y45AT*?RGMiyStEy&|<-7G^Wd^75GLshk`g-j_-o-x&!F5Q9Wv+RM%cj}UL-yLoo2L^qS z*59J! zb(Xp*)8^t*|59?!k2$?$s_ml=QMJE~7M*1V>`X4*zUa@HHKUk)MqPpbc_ayL&)A~w zv#Q|KL4)_8&nt$z())PhdbYY}^yXJ&<$l&|@xTsH;O)-OuG&9s>~5`7G}xBxqhbGH zFui~?;g07d!6>Oq12B~BOuErp1dPae6a5_cy^^XxWeVaR(-zKm$XBf}Q-@3z^~T00 zvDv)4(*|+l`0J>aMDL}^l$55Oc8u9k@v^rG;qhSxh=$|;=Bc-^EK23F>cHpmKlTT1RL=YRW~#YxPkk0l+=cwg%(AOfIB>bklkVLSOWtSLo6(K z6o7AqkvCVHftCAqMBDS#C}6p|u~|}F>9o~@n_xa{Qj=qqHdv$(;jkl5aBa^jM^{?` zl)SZ8*P+@B%D15yC&2RSTV3kxMneKs-=6NqBf-kb%5$ROtNFkV3MK_Ohb#fG#vy=c z{XeSC`mL(2jn;s)bVzqdH%N=5l2XzQ0@4D~-67pA4bmmu4bt7+u<4F7eZTX=Isd`F z_O;er^BK<=_h7EQc3$L238%jhUAp$kK#EB6WYcK!m0%yW=ZLLrXlM|h!H14GFAjV9 z!Q$f}5&4@b!Y$L{!(G(#!!oohnLKMIZoy7EOu&f`iiV8owwtc!T+!WBsuP2-B(q*7 zj?VJAPRgPk>p`I+na2pa_Qne4XyP7HFMWU*JgHa$1ti|m(G%~10oPmjPmrMsN@oxruYC%edXL80t zt#76LB@0{-I%*>dEuwcR*1uRSet&rux+WDi27m67F_Y*X0clEkOyU$*o>ZxaX!%h#YGlYqaZfcqRGGLP2AQ4_i;4ZEqHP z@F4Mq`I{RI38$Gm&aWH)k9q=`XvlQIMJL#vP-M+R(4Y940o$9!69_B5@nITIr2FR( zCQY^(-0|xJO4&Vf40v1D`~FD%_SlI=b(~(YuUvP|;bcE!Fm(Q)j%Z>|!C+Lh?v5=aP??VM{yU$eS<@9H}HfaQM%AY9 zFQT7>FyNc#YE;??*>rbb68uRQhenJM(2_Ut>X?6IzRcv4v)b}D39o#NBgD#AJ)Vg$ zyGgjUYp@8{+>mLN8{BeHv_S&hnr=x=u#E1>p z@S#4>8gdJw_CI_%H#WH07|8Ct0^9*X_uHs-vwkVCrg1qadTV|F+%D3KQ^vg&!Wz3x zPo#Wvt~CCTaXz|;kcO7G?s%Lv|XD=dHR8w zv3rW@PkJ#o%(>JPVgjzY{}YYMVwb%gDarWi>Tdd<)pciA-w~9Yv(LPW3q1XBDdYOXGc&Y_EP8-c@>}q%+hy>>z`$7?q~#13 zG$32;gu#IZn(;&y9fqNfEG22Xi*%<1$wIpCpYGm7S6(_w;nj}~)A`S;a}8TRDT6rG7H$Bem%e9(3mlM=(8 z9H~I&e_SJnf2+Q`Uov|7GC^NqsM6Oi5s?z!=lGsFVfA-8EgYJBC`TBEWgV{QfF`v?gaGP|m-F=`Zvr3ky98zc`=no)J3^+7`6`?+8N zlU7>w(Ms#k*%=b>D6NAH!e;WJ!o?Ej=-G^x&DpVySD1hkq)L65ehAvH1M2W!r2XIH zl}!iKxA_4i4MpnT0T^=<-lSWa-83rNvksJ(A^uL3m;JoS?We_#xAHD&)s%&Ma@V<6S@MjsGGCIUG4n+eaTZwA0AA!8#AXEaT}SC9INu{z@>M{ziAgBl2+t`jn;B zj==qr`FhB#3gMvZQ3K{x%MT}yDs9#lw^(NqXnU{L%qqd$n3<1nYkIxzXR4{EXu%)y z*O2VS=YHZL^P7|F+dnAx>Yg`JQCH}iDy!(GF4nhp~3x*(oq$- z^#XD}gmFJSKRx{Wux@Pv7i`<*P+PYd*TzV?KuzgZw3Bo2vSM%Hbm~EAzM-Py>o;C2 zU@7oy+1A&o$jO4;SC2kX?)C9<$kvsmg{|Rvb@_iwdWD> zg5NjHeK;AvkE=2U-hEFQl6>Pu{c(Sr#X!&1mND#mBZZr3|_st4um~0fosaT z{3H-_Q6opS!lHRA2Z+UNO{q+_vHi(dqd9wZq=#`o_Hr*NdVU8bJ=xA2u9+0Xy~*QS z^IJ@E0$yP%V0yh0slssm=|(~jD_6m<#ILj9w)olo0CKVZcr~6Ss`k!DWcF>T zh?7p*!f&pEXV^AR2HS77DY&0nt zdGDRm`Zmk2A+;Z#S{95&GX5RuRj-qG@TE;>X=5N#(d~^0ZyPP82`_CX^CcRq%uGB#1-e476>pD?x=rbY?NjS#vKYse4r zBQkaihV6&ID8gzcDksAyXO)9J@8k2W&jl=pGKe3tq&=OOG;$i}nykaK6FiZkSf7?t z;|kiH-l+<#^IU5@dL~<%-pM5d#7VVM@5IHwNF{ye`R1{-dzPNy|M(24%uM)pp6(Dg zg;D&{8Od`kR44K6lBx9g#Zp4(TtP2OyYXo1v$zxn#F5gOFj6vHii$!5C4+55Y;p=P z=uAv^iOHUdGPidArULFGDzHcNU!XuFkZP0uR+gF=+52Ta?kRvZTh~qNjga+nV-HxN z0evRCZ&T#^96fG#YHkld(5gTf=1myfowPGnVylAhu^nWec{Y?TL46` zvj3SAOV#>#p6GHizk6%*GUGLby_>n#;fG*mbt+<^RVC;bpgtk{wPIwlE*?XPnHiY! z!p|BjM?0U1O%oj>qSDzlgf>$qHDMvvE>|vS8~m`^OMFp(=ZmKTtCwnOC&o|ZWxFu3 zZ5d|yx{yD|oAN^JM#4;$m#FT)9CLoSqKcFsI=H+-a=)2b)^NP$`?T@Xv@!by%47gL zYc*S{_{!Alan4l-{j*cqVP$ddsi6zHsz=luf|sI3N?b%}?$3~$OHY5>scd#$#x-JA z3i{(Lxk2Vqt~!K~#GRjLYuuOB6PilQ`AN)oOLRXcbhmsiNwd4H7Xv9->z&srr<*qb zc6X`4EtQEAgxNEW)2&zp?R)@EEul1>TFFB|*h39mEN=iPk8QWzD54;Gk=m>uuQ$sEpgxQ25(f=vy$VldJyJ?m-y37uYr zRWN(M&!1(;mM@_b$mdNA1iHPYetu&J)fIFSBkjtWM}g;k z%b?qmnmZ6fArbnXxwcWzBSb{DLFnP2bfTTDxZz6|WUNB_k=yE!EkC|_T@&ulXSR+~ zZEanN$KmkKB$Qpji=MPuQ158H(%5qazJ5N5!tDs}Z$E$oxo?QIZ8-7eatJ)7G(((# zwC?vE7!J2wB6wPOMe-00e0|cGas$G?G((NWzsd7eXV|#O5?ux00AaQoSBW=9sIMNH zl;9Qmni=(I;u^R3i(sntu-1U_&LeI*RZ8Y)7}{70n$ln-Zd!rAt@`My)Lp2E>TeKQ zloVyh2wFAqp9Ymq?Q@ywq6{Tbmf$Sf&Wl^Zbgt&5+-)g`PUCN_kvI4975fEp7rMR6 z4;fjHna~n1rZ78^bX2Z+u_R)m$Z zscUI%LY`aNhDINU3+i1C6Hbk{lA-i1CbP_p#=I5R#D*c~gctQu=nGQo&9g6O<=J$i zbFVv_@p?rH`d^-jzmW7_6hJ#`)*JlIsIB84P2udzs9$kcg1Wrn-z%@pXAmIJb_3ErIzTPWq3JWnJH*Ugly9A znU=uc?WZhdThfPIftW|ViWXYyHVqDESegVWbp|)rEZ`;%Xn4YxztHWT?j6B3fAx99 z>GoiV^`Bo)wilpULVuK2I-<_Nm8#Cpfy)%>ZC=}B;+@mW&Z^?{h15|VQ6N}p_$@hW;S=TSK zGuHAn=em%@*^hC{q5+I}H~*+pCI2nzPJ3QkM%YzAn=^+PFKf)idf&Gy7DT{KhxIrj z2BmpzG3?=|i=`E#H9D=X<8FJ{V&fR5jFdJCEG3j~A)!L^5FldxP>RNvr+GKqSk^77 zt7(V#$M8esiS7nHq>=}bd(a@9VhFybbo+M8zuar{@aSY^BN>=e0`PR#0Bs9p_s7WD zgV*W9QnL$o&QJB@L0_|Zr^?YB!%iotI-6heZ!Y(CB4V77MTB$;YPy~H8CMXJH9`Tt zLwla;^y4U4S(Lt=jO*SQ{2Vkg4NdK~ij+Cf*@7~owD1d2TgZWZl%qc6uA#56T1CpM zOx)-FHD)xdG!4e-+{6IkFL_*=+X$1!8`7r-B{ANs2P4>c8aRm{9DWMkJLC+kLDwux z`e!bmA~Y43)zqPa#m6?IJI|ALxiW7J*_v)-U{M4kCUg#yPzn^m;pcAEHv0%j? zomoyu7T8Id%O+tin=Z>n>a%|@p+3TYnT+KwvEOnT=^4Ufm#nVi=@7t23zY4(kTq4- zeY&5$oB7i!r!{K{u~bfgvpQ__n7M&ECNTNIag2jn@aIc_Qt|71Y3azz%~(-mjg@^l zO>}TtTr8&@%KzC}-_G1>yB@bn z%05307u<6;IE)?DP*gR^jZ!7)Iy$Jr47TF#JXy3d&By6(TIeN^x!pK1$}Mj7J1 zpbYuc3>1k7Z=Uj|RmaHGRXU?DxYe*j7ryQ~@(V(rUtHb&cRf1wBij-qd&Zc}Xzc|| z0UF(h84DnT3ucVlQYQp?4;mG=n-7(KA#~{TX8r=tCtUmHS5K12Q4T0}Kfobao|A-H z@;LD$D!%w~iVe)L-5li5o^#UMSzj9fHIVK1iM?j4Nb8gq~^43AH%e#X-pLq3|3O^Bi zearcET08hHlCie*dU|~qqY0QVVy-N>Xi+RiB}sSG@Yu37GHg6(h&uQej=eCC3Tt#X zRvAWeD$rEcN>9t0Xf@OnUO$-C=zih(wRik(J?GXjWv7@b^oU*WrdlA4Z`FAiOHJnG za%YL-)a|lvdz8%F$)@G1V<@@pW^H!j`{@Mq+0%=?#xdx*hU>klG4-B+HxlecqEBL% z6m9l>sGHGjZisU>ci9}TOZAE7V)xa|!{JB2@pqH>b)@{rR}p6-P9H+8HmL6l42A)- zB>2=Ymt)Dx_@A`mm9mXbNrQ6e>@!@?K}Mocd~ynyC03fxKp9Nr{NmzU&cO87cw>^2 zm)~m-$r0-Nplvrymy=x@sa+_aNnUnaN^+Fg zn3;#})|LssrZ_DB<2vsmYqI?ZK0E2R0)IM40H5${7^7gJ3&qK>Tr2>%WxmuYU-j@fo|+{IxU9awUt!Jn}ckEYI5bm+% z)mMB6fCxGQn$yUpVhPcv1TH)Vf=CbkVd72{2@7s%@mv;Gszz2}XykqP*i2WrtKbZF zzUW2$cgZ=sd0tuF{P%hPW3#$*yO(rkOx&zR=`0zS`s-qglNZJ2HH8MuN_zh&C`1hA40uX<_h8+zR4Agc1?tPIh#rt zv&4V&DFLbQtIFD5@jTBUwBB&FK%K+(nbTZ*AbIqAq znm816N96(++QB937Ffwdse2_xzweZZX~Ow&SShV6mRYesHjo`|+wC`FgW{wSvWW*} ziY_*uiHc>1)?IIx1JH|5qr7qcweQ)`)MiSymC~>N%=*09&{oY z{O1NC{l9LIPb27A(5s0li2-pL;w?;pSGg_EE61*N(VgI=W)2Y(8$2uqXQS;Y3r;F&m)j7*Ak_ZSV*7 z^mN$ZK&VRe#_6ZLUTqc1gn*nAL9BUYFV=U8<4=b;E-$`DV zBaU=M$v6cHP5Rv+fRD2B5bag|;_|%A{do6QU=AzWctiv@f5CTZ4$EYc~ez)RQ*_R&-ZJeiWL5>=bET+Ra zk5!kI5f}wE-S|5pt#g=OGNvMtbKJx;x(@wkwv>CVn?e7@TavW)n*xpPC>?s-gXg^}3Cr33pC2we$)@$LPxOFMJiKVrIxqwn=>JNO;=XbaD8Hfczey{Ro12@%ICRu8 zO2?+%Urz%5*smA#0QIsLQ-q^#V~2?X|4aAdKF2}v32d;L;_D}^=~_C0G|&>16EAJq z64`q&uoax*Y>*1U5YcO5?V?ta3iZ&&GEfNnBji)_9xvJ{+GRng4c(cHz-9VxsoA`= zO-x1O0n%vY6(@gZmHK6cXxKneR!O0~GGx?YdIA1!}A@aodL zeeDGuxqH&mByQLXQIGe7u4}7@$#D3nW-%n?%juT|| zJby8Gk3su1(#U9_@Lf_u#>RLM(oE3E$xz0(pR~t}d;LXf17jaij!N?4)A7BZ_a%PS z*h0eB@sA(X#19$nGHKw-$2CP$;;?=<)Y4J??02Y(6PClN`}}v;xEIzt!yvAMt~zdX ziBTdUgyWlyO(ZBBdi@V!*Pb|bEMYJN>kpB*{}{5-F7Qtt6%bgY`aJ&9Ld! zy3$J(hw7X3++WT8jNAHqwc~w3K|wS8O;b))){c1CZByks@6$3^?aF6^DHih`*PBY< zrLS#Bp5+>6>rJlvc)!#wHGB8w^kZ-Ki|Ih;-CUJbmbIQw_8p2nP?m?E3`kRc>3I^* zTqy#6tS{RSasSO!pZ3MS)n5KW3_inaaj-fc@Z}5$!f!g-Kd+S>o4Daf@atNSC$3m< zDzg?wsuZrbA)wA@gu3`>PYCTMDC&BmjaE6q7=PKZ@i(BNbjPLFsr7-x`ebE`itG*} z^L}69JS6f3XH@8g806TQ|81Q4>uVZkXrX(JX*Jr@-nvOU61eG;>)T0Rb&D3 z({nEe!ZvLeJfkhA#G`^2D7&oMYli@T^si?b)TYRVkB0{u0WFYp)PY}u9v@BW7HSMH zEOdFX30UZQW7(l*To4<|YS9v`Al;OE0pf#oJW#6QP@jzO?~~>AFEBRdH&jlMN)Dkq zyYH)HbtSRnAG~?c97j#Giprkz=$)jCKXN;)<}0`vJqBZx%RdqN*f#P=A1fKX4R#Qb zF4Oa^T(&7jSHi*iI_`qwphMJQhTdJM%q>a5jeI6!U9}I_=<1fq`dYRiVBkdgWp7re zRz~FR!O!~{pZV&63WDpae}8<$6Up`lv!(lUz?kjoZyEaUvF!LLBIbf$dg+%m6ZkZ& z%?<*C&`B%oty9}B6Q8k0g&&yo?l%%|Ct1BhARZ7oz{&m3IcXGoX4Y-XmPIV?qjF7P zaddT_0%< zi((wU=oVb1_Pz^L>kn+F$0vnv`D3jOTfrV)6v^LNxh}CzNx?!Gi!|DUWpQh?yBJv) zTqc4b(YYD_>b&wqFm;2r00*CHU888zl>%Qz`r~OqR7`gDmYd*8_Xo7lGT5muUh0Yk zJxI$d?&s~qKcR*7KL>TFPB3qSPdZgsGz`qq6O1U#O0YxJc@VYfM>Y+MG4o)8zaUW` ztS#rM4CB&fCP(4+z+O8`NPT`Y8ux4gw+v%7Nn6g{e3~wvwX7y98IYwwLGB@8o#-aS zz`%(#J_sJYvge?etM?^psWn>( zFBWfP25m9Xuq`1o{h2TEmUvUVpuM{aTDoVnC-x+1cH;#tKKBM6USf{)%at=l$RYmr z|I?RqqsI@u()V}OC3C_pkG1RT36CoW5%v*fpY8V9qZY$P1}gV zW4FR7=lctK;RpNoeSg|6tUO=PpQBGoJA4fRKDMS zVB(yT>q>9>1K5+Kc&s|WJgc{1Dtxu;yxy?ueD_;#GhR*4fF~VCc;?s6EF7DpSH_%{rUHqD)FJFUHp~LA%`dBrO?@gpQx-`sSEWzv4tC7}Ky4 z%ne4+t*h6Y^3A(9VoYnSsGg48$hmx#vP%eYm?|GsiGOF{zSG3niX_i*_=3N;G@m0v z3uE?n&C&iX%<{Gi>0%s|ttp0#<5j@g&6X#jZWVf2V}N5L^uEcf`f$6Qb*I(oL=J|u zb%Imfq3@|9)^1owuNHnnSq${ie0&m~nd#Ddt|_8zbyd%yoC`QZg3w^D3~d-&D!{VZ z392BbCynmT)kz?TGUjph20M-zC$q_z5`Y}HmQ9;n#;$goXL_QpYe?qHUFPn;B6z*$ z!Nj|jpAfrxul^^u8_+0O%59>dl<>+RY7rvZ>jALBrROV*w;cg z*HGS$e}b^eKOmM)1sF|=B{KaZ0*XCNUm-DTC??B{9!Td-~PaJ8V zAA}02qHz8p0)V{@0}z)@Ug(nf|x55xY;zNLi5wAq>8NEI*T)$((+VOH${ z4k}AyRZ&eJ-LwZ;7j;7C8$&NTiLYEPU-W4MYkxWpW~(1)on5ja+48e)1p=Cnu|zcQ zXORg8*IoZ%?&f&3!IP(!S6{2m7dFFWM+6e1ahm0&df=4G(eE1lR-Fpg-qx1WeJ`oq z2LJJkp(2jn#mdX7w@aH-WF**JKfCWbM(qTgYci6>KcySyzDHY6SDk$k4hV%E4Xc1J zl@eBNX+;ZVN%j+t=9bhe&H908M5n7Hd^(+bnNTpJJcS@G42!!+cx@1po>(WYz?ex} z(s$Q-@L$06|5E5*^4=!pb}2e~^|7kTde5WB9Ieikb69V-yy`@-syiPrCkYPH#F&ar z@c!6BJ45bUfkO=&3FBtXbKBdLlB%IvM3rN-AJSy~m$+`l*3WPeMF@cnDB~z{Y}Uye_ZmjVVd;ka*G!R#OUGlyxP( z=~(aQEx2C%gW`=+AgF*{s^Hy}qwsC#>&Kq9OT4>E^p@@+JMap) zO`Li?1-(Rp8%h}9TP-XQzD&OCdu<#$t?ZybuiXrsgPk@x$}zl6z*(I+Vg4jR=Ixe( z{q6~guG=wD+%_8&+$ZdUc(l9Bo_owvTT1P#r5Q!A-Qr5|+wm40#gBXoWYLs-PgtoR z37KOTGG9*E&O4MQ@;vvU2XjAv5}W^Nfg$?9@mm3^JT}@ba4zqT0FEpM!{HzWF~Y4o zB%{##blo-nK%t#mH+JEQu3nyHZCqt$nslX94LzOw#dEMJL`g_X0lo0Xf0!;!%0TXF zal1+QLAZTT!pG&4%On|Nd~bwVbQsE&cn>+36_xd#h~k!^9H<9jCB|NVW*Wk$gF^!< zWSYHY=HiZh=EKF~aOQ*kk&t`8limxfODJ zQjGks+fP^`=r!2O61u|CN$VBW{68nE(A^-E(lNGhG}8VHA)S(j4>>Z&n>(Lv#^0j_ z7yMv-H6!&NNm??`JUy@2BBil+e(me=rsl~=hM>PHsN;%FO{*OsTyX;gNMK_zlA3<2F#CW!?|82og@#8nO|B z;$&NPa{J0!D{^+n0aU$P1E!1pw8o4fZRj|S3}lW{${`=fPAZD*Fum3R}8*0 z90gqp-pRj>k;EObQYDQ(vMQc77M6V+?}xA?CAZ}FW& zHy$pf6u+4`=akbP&1BPBz+Qmf-#AwZTcLs=OZoAn$v#9M1Fg`EQ@ZHuWQ3*e4y{t(NS~1sI{qRatqr9 z@$p>%`O~}Y(c4GeYPEF^^><$ho)9PqT6FmEZT zh$6n8#UzO!RBx{`?HlxfeplOeeF$m=ffNt_FGQvAy!D!xgd}jzE?^u!Bvp;FKVW1( zR-O;i=wNNod?8q1l@hgjtMXBl&^b~m9k=y?SaHE$|9Fq@U_S(1$hR+s6rYhvP*R#bVSGU6go0?vDG#^&Ac1k=y(d^xbijo`l zhsy?yPyk4ria-bDuBhd$En7G2_5KNbyr2MAO0jvp(+la0CKwO?VGaiv)m-kA3-0za zpUnj;3g0ZXxkUnd1z7tem;kk{Dtm3BMY9K zVjVhaqWind&(htj=0w_c^0P0D)%~QCE|IX1_Ufwv=$=C2evOZcu6$$6hEqB!~iGNVBPG<3m{aV*rjI z!d%31H~Aq|v2ea7LL4t{g^0LX#~+ zZ;yCyD+d*uMeOAZRq9TsixsGqC>g9?k#HrJ;4=Kp5r#?}%Prg+qwYA;8S(jtanktT za>QZ3?jl2O@#dXT;xd>#)z5E9biz`3$ttb6oxk#Z z$_Tqcy;mhtXZXm--Z+fA@mriXJnHPS{jYw??>^kUXA-= zU$8<3FFf$o;CGP>TuRFt=9#)Vo`PWtdxE5P@^a#l(3u5i%whyTOpO_U+i(WC;RcsO zS}^nxlezEvX?xw9w_Z<|pD)kq?Up|+lvh_abo{gBWj^m`{%?_x-sJSzY~hPGb?p~? zs{IsAi-7Gqb3mFX|Mz(ke%e>ChpgztVdnqXC6*5h^08+|79--ql`M)Hl=J_(t5d~u zrw?6CaSh1bA8WJ2N+*0;2w8i5TTSMiU_REQI1p$XTT0wUWQIkV>Fi1pRvl5Bz(7Z- zACB>>r(>-2?&6yuCwq@mmSSoB*nVhVO4Ql5>K%*@oON7Vv66!m_YZ`H7q2ORZp z4Oq31F?y&68YlJXL%f{5KF#ahu#(b3^8KxrxN8=5tNSlm#;Ry9(oKSscj4Nm6JD(d zDx7|mw8xB_wk)-ZN`wQqPjJ}AhDzBGG*~oSQy7tP-b>_VBbym8@^|PNGLXt>?){)e)6h!h;&5T z6nP8JzZc7rLhQ-@Ud!qfWu=>Gc_1ctCm0$TZ`m3jsX$cwvFm#49r&eha>;MBl?h3{m!w;W$M2=wjo;irSyCzZAa2SiKEp zjQ`5wUb8myHrQ?cwc5o(xc{yvOnKzbmM-O6nbVDZ&p}tzPzhz6uiHdjDPR z!0$6N!*uDr&4G|^!-%0>qoc0RmwJb<2V7gBBXbi9WOzh0*4K){+Q9G)f>Hm0^gZ`B zIv(_sX^~utu~7tG7`o$|vHeL+E5jBHqc1vN+{tM#gf-5+(cIU>X6)mcsxHyyrsfJ! zzqI(#=+3^nQ=~g?5*maq{LIpx>fAQ7rj4a?Ci)H7D3Cfcz26%+TAOP@Pfr`lYb2l` zfM#B33Ehw1s%AKx?2)yiaIvU<*I>c%m~-`t}{sZL1M4!{*7{F0mOdXF1;4UUIzz!cv6biGJS zO7cp#WOc;A@1cT666()IoWwx3hJ$zKj~~Hz?kxLOafWs3V>2-pJRA!$2dUPNlw)-> zaQP3sLEX4K8mq5@u?c!;45(o`>457zi_*w8l9*9r<00!3r(z7z+kOT95PoR(nrTS! zRtC9nEW?Z*;uh2ItX^UTEvLKHZF^{T7qJyohA`Ig_LPYyOuncBcIK7(z814%+Y^O2 zv^JMn=nMyOfDLKD$!|@*@2I(}M8xqi` zj4yx7Pl?*jhy*V#Cx^dcahy#lE1dm#o>|=hOp3=|n@4!ownq-xU&AsKT0>kTy~9xA zC<)DtaWN-gR?qSnO|M((wes~aiSPKsIo+$n0e=5g#b{}(Hi$jqs zLTkA@wVT#mlxQ*lYGd%@Xx>(vf1jo0H#Do37M5ct;p23fLB4Vk%AC9;rEmfnng5O+{YoM32(xQBA)h+U6EbN~>o;$nI{6I&0m zsO>5)qS-MPCLRm0$C5RnE3Y7jV8B}1_#b@}B%Q2d2H}zI=N7kcT5RF75Csr71TBip zpyQnn+<{F2ZJq3#`9T(kTyZXf-A^&O3e$!*hv*^DNa1N2x*|5*yxh~;u$AXOa@A* zvg70MzE;&?C;VyVoBEhV{8whPZM3SVc8l6OC+diQ8pOnM2|(pBhyE zv~pyqDPw}_J0MSlb{Y!j(1l{C(a+@7Mc2HSNLE(sjIazhs8s))0Ou?*-7hdtK9}eh zlW*NFrjY=G-rsY^!7Pr&L0^h!psmV+CR9E z|BLSXLLD5WKTI^EATHcaHF}#51F>IpDc{Kux~8n!zs`yX5f8P@N|ErKNvub^4>Rv_ zEm3XAf~Ubp^0!_EsZ;2m3~$2HCm-%rf0Wnf?m<0yj$}{87jtn4!h~8ph`qXm{ApOLoMxCZ@D_3Ir!I2_B`ZF9Ux^%T5@jEc z9I`}Z84affmp{#R@fbOF3$dMG-gn_5>34=KgEEZWmR)Cb^l;%k>Za_{*9&#E_*8C%PPzx*naMY; zO2r85P$Pc5(hZ?xX9y7t9mX%QiXCdcO322rxN#ST#Jw`mvsp;EbC66haR-~Cb+wm+ z@~W1Ge-+@WI>1f{LUI2DssRPh7`=yDy?;#ErY0x#MRikN;_*N}eUEBs9jz2A}vo=X25q9aJ$HRq?F% z-dLXwGM0Z<#qCW(&^*+U@5yw75TL?E%C#256BnnLe}LbVYcVrsL}eD9Ju7$i<1#HK_YkD^zXFfa|E$P# zq0)AB?6VF^wbxwzp>c0^r&LYr>0-3iJZ#&rm^p}()d^sKoYDB>XB&`GU_h$??P2WJH+~fT5o7oq)S$kg7)ojS zuaoo^7Kc-1ChX~zt(7eLZzTBWk~3sMe}QqYt+V^ESykX!c1cqBTdumiGNN7!?41jG z!b+Zz9sAI15sMxNez2D>s1XMCNC}}ngrOG)ekltYC`VGGV_b0PjO%;XGCNujAOv{Z z>*BzK@ww2Jtbjg%Dmq2!>cTf*#7p@iNKTs*tv>yaTU6YWHf+45(P7w1&dM=XQTVMl z2eS?ru3Miis`(7|R50~*taAqFX`ma#`kBzc#-LmX-tFvS#E#a)ADI2Qq*Yi$HM%>~Y-|)i;k3ka84SbD;C*1$#Ipch-UkmpLui$HCCv> z-%VT9^{c{Vi4J&owPhAH;a_PeulVq2#+h`$Xa}vvJ8{h@#=Wv!Tq_wq%(srow$uGP zp{q5^EupaiIyFwCn1<@FFDD=8Gg~@m+nycIm^wKLQIkg*zJOZmg1XiD9h3uCh6iH;-I&z$ZsxOV3IEGL^noS64@E0EtNsJ z1?^}I2ixfRmT(ytm#Uu<{2_DOl|WlhKp39C5d|lxRLF_n0X?F-fLI16PGO-%B*@)O zRA_Dd_~S<%eW+419pbw1I!5G-DOrbgd(n#9_w*e5o<*CMzlm*++qvPVpU$Kdeyx_` zPCunwzm80NlJ2b4++DKhO-gj(TC9)C79QMSK}Oh)Q5whWzid9)C(I_sp>RM57J%Gh zlwh?yCRmXSx%nVh?iCAc<{$(}ZB;q-j0g`ZQCoPS#DD&zyl}|m$`N23v)8%!|1D8F zzcT8|E{`lW@HxK8VA)|H&ZR&vxc;Vb^;meWhUQQ1&EM|-im$OnYADKk)r>j}rR}@E z`Eqm~zEw9zzStN2Jb@W?_dy$?!|>y4=VnJ2GFgDQHf38puZdYe!Xb%%OZ~n?lsI(QJZZm`xn+(-XElKva zXf8!sTQsPPLQW?Z6+Rr{RhkvM3oX56vmE(|<`6lnc?x_D00v_wT=-UD__hd+#=1F2 zCvtH)BXk*jB2hBfb_x0OMj1y5A)}e@tgLfBp$dl$2p{Uf5*kdu;Yi=!+-jFZNJ#m{ z;lY(9)YzG@f7~xV7wqH1bd8nzkg#r9vycet#`64CiX08+83vX72dh4^*GUw1fl@1! z!eTgS^ZhQ#V7MV?y#%8R;xtn(d=7igG$&we-3j9xOq#lpw5a;-?PSc18aqru71^&K2xsZ^f2&KQq+>)}b0n)xkvVSybsy3;7@;$A=%hU2a}j zEHQ|i(Z}^g!lxD${pP0VAQT)y_xJo^#fAWp$TT!J&)1h-3*XlbMA8LK-E99=*{|KjLLGL>;t|_CjGqEdwF7c=1o@scYR-F^`&n6{f%vz?2 z3!>uqR>M||nx?RgR%$abF^qOC9!8;Dpq0reR-ULIGAXTd~wN|sg^8@Hz|%rMi?c9vk^e*fMM;A4dncMh;_3x z$DH~{3sVk4#M@Dh!47ZGqr$G4%9i=pOec&zvRy#;O_1Och}$^+}(q_ySoI*cRz2PAE%1nR58Wgv-axltM~p`fSiVT zx?WrWcig|Uy*&zvLX1WJ)e=KqLblu}$Fs3yhW!xMhrIzS8{4SG(2_d*jgq^bG~_eg z)BeTg=f%V$7}T&w#~j|Z*+xgb<|=tIDOFXVETB1swUm)(-Zn;*7s!fsPRIPVV9Z*NB!S!{CW8$em~{1z%tjm6FLyJuWSUhTH1;*9PX3MM1cT!1xm637E6 zm;)Ae#J?x-0DoDKR88W{aSb4TiI4|ElYEl2i_Cn1kG?c0 z(e*>B@$6x3Mg4M(zDHsAv4Lz-cdYP&8V*d6xAm}P_vGiGzbx}Y2*EW}_!~h*T<@Te3`;Ivz z?SfPtt)-QWYSn?3mG6VpJfAOiX~h>$(oj|kE5Kb zYBbG%cBj2j4UwCIl4`4HZj-N}3*452wpd2+Ov`P()NWm6mB+!b4&zVm6uOj#u(Je^ z@Pov!nKhk5|3!7YVc9ucI!2HfC`H& zmtA&YqR6w~PuQlT-gTrbwO;$Ft4SS;=q_LfL0ShDR}sx{xMjHJeUyMY*p(>FaE@bUkkOsOi;EuJGU%SH=!>?eR zM}>I%FNTMB^Wp{;wHdM!!iFFK@cxosupTxLI%YHF6E~->qit8yF%R3T(^%AY=*^un zha6}!WXp`lOYp2gw6$ARgRhSaY}48%+FkwJ(>1Hag(C3@{(P)&o<(HcL_(w!({Yen z=d2SCJq3ZoS%s%@k)1HseJ2EOruTqf(+WH$u|uNN$wl4mrsk~aM~_f2uJ(A%M9xuR zV2WAGCM3Kg9@4Vc41B`%b#%paSbPXriRh-(HnaH7HCBroT@m26qmseH*U+&{) zVFOO0dMCTElhLH0AhG5ks`rl|xIRMLs+JzFh$A$@$!mUL%}MVq$DB>>ONNb{#17;F zJqjzP{*NGX3r4P}l`P;fQCDUS`xWSKv|uu5u^cd};P^Iz0tW@ZxckRK{F9(`Xd#9R zm47R;6E6#UofOL5gFNoiSp_gj9Q(^yMj z6heMg8`v~&yYpeuS70d}tE6kMZ)$>l~-Dth>qn?5UQgSdEXm#mI1dnR1tLLIso6h>~g&7zhmNWI@iaR zPx9R;U5)y7!7Aj&B3hMVM;w#8URHu7MPeh@hI2~MDi&>L+V;|guQK1@D1u(2O zt|YK-8X*Kj3ke%mh^9P5oci4uBI5M9P_pp8YBgBd?+wYL$l3$BxU^~WvNOa@^|VPm ze3Y-FwK`QmQPLmRT^9}_)HZVI4-iHXf0_0N8qS?ke|h!6i^>-xjzs z%wWpB$E+{2;Y0<+Ru$4VhWFTp66=c2oT2aZ_Rzn7)7pDE${pT|`w~!Miy`nWLp&Dq z?{|zgRLjnAM$(iMDaS|EuD)c3xE;ri%HRqQ1~y;V(;8Y$uhksVNWG8wQa%1o$AbvK zg1KtleRJ7<^})k7q`uaCQLEOG+Uoj^u6^ieg1mNax~GC43UmeLkKS0Ow&MO z$?{Vt7G{^p>qunFgYJ|a7?ef8S1L!yO{UO(MIqzT4cnWu#| zYH0ca`deZ%R+xe!vXvC4?>VBFmGbC$PMo@)Jn*(H`Ay9TUp>b$pj;T8hqi&7U?cw|>bJzfik z!ymnp(7fQUsDCh4s|Rmx*nl+|uqUW(?~clTCl01IXws6N_#BUU9G*uHWHy|` z#9Zj~t81;OSHqZ6_NdgNaJKRL{}A1!!@ob|rSLxdfhQeutP^jr`eV_SH)<7qV1y9Z zZzb60>>FBMj#c|PMhzs3d}YF}23j{<;MABnGJwS$Co{X_JJm{3k9q+op|Ta|GO^)v zlM@Yx_u7-npt_cEc5N}_XSNio_086RbVsW3yD-%?t^~8(ECjx>IwakjcRgCcoI|&$ zGHZ@Zjum2YT|j8&Ck0r>0a;pvT|62mj$)%#GjwoIV>;D1Dd&^B$*7@^qi1CGnSJf= zu+B~)Rw!T%+V9QZe>p{h%5r7gssr?)td$7@RtrqE3e>0ASabr53|u$6jUjO7H}bVE zD&;o8c)Jp22GVn(=6BU6#D-Xe;ji3%R0Nre!51ddG|p@WD~xO!%)yBw8`A-4NrqDb zl_~P%v+N|$P{;d3YU9PM8634bOsw!+9W`}YOueTVGnIt?@w^n#Xa(i;-~KYGAA@0B zcl)N|G58@iW^-_iD1!}q9Gfsj&MEPDVWZLU$y~$z&m)jY*;8WLYQ+xAX|?z;I=JMK zj7D2(tq6ZsC|R$`X|8cHxJ$xkyZ5&wi#6!{s>iX&L@g6vX|>}2sa=kjXm4(>D@!|J z5RM-VRb0;Stgv3Zww!0J-KZMEJi_57U$yfY!uE`_$o~)Lt`9qr=fNbpga?bqNN_iV z$gzpv)hg~aszL+gPx_Gd=C4P|@YQECY6_2X2TF4pigcaKPdVFsyV~0vckU zCkV6;Gfay`Olr+u%gSXsD)_(M3*8LtvDPahRY@VSA+g9%}hJK~vk*33Hg{ZUq|IGy-L-Vwq(^jPnMN{?Z|4s?qZ~{0t~F z??1MHrPA-T)=t_I{-N;xexEW1tt*a|D4Qxr<-Fo+;y-X81L!8BsDicK=gcGsfSGIf zw$zlQwOc=*!~tPHCSOf`wa;bY70@&~_2J^Zd8bwHRc6*3O?PIAHd!GmwZ)Qh$8D;@ zeXv^(ah!SEK)d_B{L-}OYJ}!?oG1&qr~xr8R65F-P0SHjbRpi}Ut%uSJYMHtj6tBT4cwGRVU{Exknn3V zTwnU!QAuqTo!?ZwL~jdfWYw9pwR*uN=Ek0~kCSg8fR!$atEkVOHz93h?3X}=M&}4$ zG|-AtiNT+%j2Q0(FPi2Svn*uh!1T1)-vs_CUbOWIS$t(%=(HTS*O|00 znXBiH_5p3>7~p{!om)+vOJcs3Z7LiCc#!1xe!?I-|F&DwqdzE+R+9%r z(v^nDki+3^%H%9kE#YyZ!6pwq*C%)6&SJ0r7(3h8X^~%1QNzWrH%HfFM2dTAOrn)o@NtRcRo;sxD`&Z=#L(fs<}B>&ZbbstW5_S3bV#=2% z7mLH1cwcbMwhsIVJ%PGonYY}X=&TAVIz`m5(g9mpU~mCQgo^nL6$2G4Xz^;Sx=;oc z1+x*c^i@^eK1U?mn?W#^wb(kuL}fX3#ytL`=xY%^Cy=xGF>f7V+&A*L%0j0sb$Jf7l%X~(#xyqm=qC?e4p zCso`%*rD8LF3!VJz^1Wom*SI=q0aCprp$zul+Z=72QZf3lRb4%pu@p9=hB99!6mjc z%fbT~d4i0_fyhXZS?6$W1eOGS%XAglf0h5n;AqVD5$oz%nh? zQ1{|Zab z&_b6~K5*+~m}@%*j6E;^yHM(6S#*&gV(A8b&fsc;XwK~Deq0x4W$$*BJy8S}x5?8P zsN;A>xPj`2pWCS7sx*PVcITjXKp<&CWLpPZA(tPDTW`bBi!TRzf~an zCWwf|##4qhM@|f7m225aOwdJCzG|Q;(wNBMp1Iu}$^!<#o!Mg97RQ6ggey4*Z|}eb z<;t$9sB8Y*X;B3!>khoz(!ISxY!;N-A*VJCq6rQ05pn%q{@w*sl@IMH>bC zvduzL1Fbpgtpv%^E@o*s;uOhw-m`1Sq+i|XIsh+iz!WUbjt9oz+(Cx^RV(f9RDhqr zD{_HmnjfmgmqkHZ{*zvR_TGn@Q5jM^>9Yu<#Hz0&rAxeUg_R^`DQauMhUT&hI!s*c zN&9}YC3Cuju*DNPjQC45IOUL-Od{~4X>58hM6i4-($k#RHZfN56wkaUlKH`hlU2&2 z#0@U9rP$DoG` zwgU)Bu&RJN_C*nx>es8D7DqGn16OhB!dAzkx%4M`ff5zRa>rOgd*rE;H%e8FF&EeY za=L9f>-mSF*#tF-6of8!`fMZ~I&IAa{qBult! ze?{m-YBEoIwpVL-pKy5S@m;COhv5gP5&SE>MPLQ011H4rW?N_m1^9l#=^X56b>p_d zY(xzdY&4;yL=^{<5QxNKU=ZGZO`391cg>lSI-n#26}~>LS+U|f0}d=8W+9YEVmttZ z0a;R>kZQ}EC|ATL?uPLhA0$KRBHa=ksn=T^psqUJxl87Lg(}53Je zu*?eRUjAj7YJ7CUM6EQ9=ZTS46txIkk-e#yd}2<|S>~P0?E%S7mhoXOLQZK919PLv zX=q;h6@_)G!|9&|C*ixOfkIz5B9O?uXEm3wKRpjLcG{R>5@DSz+BIEQWfJCqK3L+PCM=sb8f< zQj!0Yh2Ulqz{-*My*Zp;UhZDcl9|n=6CLJbrSA8FHa!3p8`NXZ+fyq1V7U$ue1OIu zspzq(SLZE!3L|H$QB(~sCbbJh4boOu^Fz1Mh)H-bCYA>L5vOUUJD;O+zoZ$o+TjZr z-QWW0hI|CeKdD#0`r9orP6^0Fy_e)$K7s?xb$AlN;~Y^j=hbYHv4yWbm@&w=^{wt4 zveM&HRVoG}ymI0njDb<$4XKjZzfq?g-busQBFNteijGcol-3-?D zTiCF$_w$J2%n%~dP$NbpvJ8sQtPL`meS>xdwGzW|i6SYn+r(kx|9(t(0&D73BB%AT-gtXdNow$|{wcI{5Japi<26$0cPZs88dhlo>E zJwMl{sT(=4vf#?cC|swA@l0~0snfF6{7psRPmm=_FeX7vph1A@egZ`$NZz|4M{Fc9*YBU-NZSua#dK&2{D{EM+4#HW%|nUZ z3flKPhf#xjy2n3t+@w*ts2vWHmM`d$yy&k@d#LQ3_u=Im`c6gxX*nHq-!CR7fi>^N zbxFL{Z^7A@`&Y#eaqHvp_f6)%d!C!b+>Y3z94}PAvmftFZ|{Js@@CWP%8(b|KnYFx zQcDHC5x6`Byia8HCFWe8r+yy+9K{F(_1oQYP!6=vRGvymCw@qBrZM`sTy!2jMpF1x z5+$w^jSsD|*kaeG5ys$ic=0A@n*GJA66Be?N)gS%&O=J?w4PsNs7d=@lej+dDz9+X zZAye{ozRvJD6^nCEU9XMsgLiMhCJ79>BlSs9BoCnRHD2IF4G#dXIaSStz+iR!&z&y zGN>%XLbwzJMMhOuTUH{M-Z{S>h1AX}&39J>Dwgen_w=D;>3g!XFR%%f*omW>W&^N0 zKG~1rDrVEH!cb?Xd_u(_6CWx^Szh_Hce-F+*TnTrxeo`npRBq0=_csP4{oWZGb~m3 zhCRpq)MH?oYId;Nwyu){q7|a+<>5=84R^n}zAwxx-0N{0F7h9jM){zPcUwj^;;xrr z{g4W)jW{1mX>X0}~7UQR` z@**h`i1u7`D^gKtSg`l45+P-VcvrNiC)LyKU}aG7>F1^0({IDqvUskovBYU2#-qkc z@{3OHl*82h&Htu-I6HmaTHapsq1BZ`5R5F=8ELUmvm!PzkUuQZ9J{cQ4l>%PVxf@D z<#Y58wUZq}uhG~_qR{zXXXX+b;KaNI=9eX|f08g{lQ$6PmNHMc7+u`9L0OPBW@J37 z%wvXAk#d>+F?HGy##7<|b;9;T^raNq4io5QH3?+on$*bfFK=`JwRu+;En7ac)Vh0U zCzASWhV!IWP*HDCYPYT!EybA3dM5ez1!n0f!`48PJ7U9hxM@`Jzj^)J)K{cXS;Fz% z}XqoYny{8gQ#9ZWEpurKCJJJ~@Kat+mIoXwY#vT{aFPgR23s6>1K&Rv2dU`vK@H$$SGk1P z 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


^ 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

🚨🚨🚨Important Security Alert🚨🚨🚨

+The only official platforms for OrcaSlicer are **our GitHub project page**, **orcaslicer.com**, and the **official Discord channel**. + Please be aware that "**orcaslicer.net**", "**orcaslicer.co**" or "**orca-slicer.com**" are NOT an official website for OrcaSlicer and may be potentially malicious. These sites appear to use AI-generated content, lacking genuine context and seems to exist solely to profit from advertisements. Worse, it may redirect download links to harmful sources. For your safety, avoid downloading OrcaSlicer from this site as the links may be compromised. If you see the above sites in your searches, report them as spam or unsafe to the search engine. This small action will assist everyone. -The only official platforms for OrcaSlicer are our GitHub project page and the official Discord channel . - We deeply value our OrcaSlicer community and appreciate all the social groups that support us. However, it is crucial to address the risk posed by any group that falsely claims to be official or misleads its members. If you encounter such a group or are part of one, please assist by encouraging the group owner to add a clear disclaimer or by alerting its members. From 70dfdb95a90e99e7f9d8098ae3fd83776b4b84c5 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 23 Feb 2025 15:20:27 +0800 Subject: [PATCH 104/129] Fix a crash issue then exporting preset bundle (#8525) fix crashes when finding base preset --- src/libslic3r/Preset.cpp | 2 +- src/libslic3r/Preset.hpp | 5 ++++- src/slic3r/GUI/CreatePresetsDialog.cpp | 5 +++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index a6d6501226..21b67e5d19 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -2461,7 +2461,7 @@ const Preset *PresetCollection::get_preset_base(const Preset &child) const // Handle user preset if (child.inherits().empty()) return &child; // this is user root - auto inherits = find_preset(child.inherits()); + auto inherits = find_preset2(child.inherits(),true); return inherits ? get_preset_base(*inherits) : nullptr; } diff --git a/src/libslic3r/Preset.hpp b/src/libslic3r/Preset.hpp index 591eced62c..0a365043d9 100644 --- a/src/libslic3r/Preset.hpp +++ b/src/libslic3r/Preset.hpp @@ -610,7 +610,10 @@ public: // Orca: find preset, if not found, keep searching in the renamed history. This is function should only be used when find // system(parent) presets for custom preset. Preset* find_preset2(const std::string& name, bool auto_match = true); - + const Preset* find_preset2(const std::string& name, bool auto_match = true) const + { + return const_cast(this)->find_preset2(name, auto_match); + } size_t first_visible_idx() const; // Return index of the first compatible preset. Certainly at least the '- default -' preset shall be compatible. // If one of the prefered_alternates is compatible, select it. diff --git a/src/slic3r/GUI/CreatePresetsDialog.cpp b/src/slic3r/GUI/CreatePresetsDialog.cpp index b2ba961506..cdbd3b5742 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.cpp +++ b/src/slic3r/GUI/CreatePresetsDialog.cpp @@ -1,4 +1,5 @@ #include "CreatePresetsDialog.hpp" +#include #include #include #include @@ -4240,6 +4241,10 @@ void ExportConfigsDialog::data_init() Preset *new_filament_preset = new Preset(filament_preset); const Preset *base_filament_preset = preset_bundle.filaments.get_preset_base(*new_filament_preset); + if (base_filament_preset == nullptr) { + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " Failed to find base preset"; + continue; + } std::string filament_preset_name = base_filament_preset->name; std::string machine_name = get_machine_name(filament_preset_name); m_filament_name_to_presets[get_filament_name(filament_preset_name)].push_back(std::make_pair(get_vendor_name(machine_name), new_filament_preset)); From 99e4879f8b4ce9b395f560f1a7a51d34753c0620 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 23 Feb 2025 15:49:38 +0800 Subject: [PATCH 105/129] Disable silent_mode as we don't support it. Fixes #8507 --- resources/profiles/Prusa/machine/fdm_machine_common.json | 1 - resources/profiles/Prusa/machine/fdm_machine_common_mk4s.json | 1 - src/libslic3r/PrintConfig.cpp | 2 +- 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/resources/profiles/Prusa/machine/fdm_machine_common.json b/resources/profiles/Prusa/machine/fdm_machine_common.json index 8680aa36fb..b595079b56 100644 --- a/resources/profiles/Prusa/machine/fdm_machine_common.json +++ b/resources/profiles/Prusa/machine/fdm_machine_common.json @@ -126,7 +126,6 @@ "deretraction_speed": [ "30" ], - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", diff --git a/resources/profiles/Prusa/machine/fdm_machine_common_mk4s.json b/resources/profiles/Prusa/machine/fdm_machine_common_mk4s.json index 1d4d32613a..5e8cf14f23 100644 --- a/resources/profiles/Prusa/machine/fdm_machine_common_mk4s.json +++ b/resources/profiles/Prusa/machine/fdm_machine_common_mk4s.json @@ -110,7 +110,6 @@ "retraction_length": "0.7", "retraction_minimum_travel": "1.5", "retraction_speed": "35", - "silent_mode": "1", "single_extruder_multi_material": "0", "thumbnails": [ "16x16/QOI", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 3238ae2fd8..e10b4c97a9 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -6513,7 +6513,7 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va "retraction_distance_when_cut", "extruder_type", "internal_bridge_support_thickness","extruder_clearance_max_radius", "top_area_threshold", "reduce_wall_solid_infill","filament_load_time","filament_unload_time", - "smooth_coefficient", "overhang_totally_speed" + "smooth_coefficient", "overhang_totally_speed", "silent_mode" }; if (ignore.find(opt_key) != ignore.end()) { From 911baa84b24544d798bb6b736275b58f31f0bd4e Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 23 Feb 2025 18:43:03 +0800 Subject: [PATCH 106/129] Fix AMS mapping bug (#8531) * Fixed an issue that filament ids are conflicted for BBL machines * bump bbl.json version --- resources/profiles/BBL.json | 2 +- resources/profiles/BBL/filament/AliZ/AliZ PA-CF @P1-X1.json | 1 + resources/profiles/BBL/filament/AliZ/AliZ PETG @P1-X1.json | 2 +- resources/profiles/BBL/filament/AliZ/AliZ PETG-CF @P1-X1.json | 1 + .../profiles/BBL/filament/AliZ/AliZ PETG-Metal @P1-X1.json | 1 + resources/profiles/BBL/filament/AliZ/AliZ PLA @P1-X1.json | 1 + 6 files changed, 6 insertions(+), 2 deletions(-) diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index 7848733ac3..9f4d613849 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -1,7 +1,7 @@ { "name": "Bambulab", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json", - "version": "01.10.00.33", + "version": "01.10.00.34", "force_update": "0", "description": "the initial version of BBL configurations", "machine_model_list": [ diff --git a/resources/profiles/BBL/filament/AliZ/AliZ PA-CF @P1-X1.json b/resources/profiles/BBL/filament/AliZ/AliZ PA-CF @P1-X1.json index f82618615f..c8e745a876 100644 --- a/resources/profiles/BBL/filament/AliZ/AliZ PA-CF @P1-X1.json +++ b/resources/profiles/BBL/filament/AliZ/AliZ PA-CF @P1-X1.json @@ -1,6 +1,7 @@ { "type": "filament", "setting_id": "AliZPX1FSA04", + "filament_id": "AliZ003", "name": "AliZ PA-CF @P1-X1", "from": "system", "instantiation": "true", diff --git a/resources/profiles/BBL/filament/AliZ/AliZ PETG @P1-X1.json b/resources/profiles/BBL/filament/AliZ/AliZ PETG @P1-X1.json index 9aeeb52554..e64a87ff13 100644 --- a/resources/profiles/BBL/filament/AliZ/AliZ PETG @P1-X1.json +++ b/resources/profiles/BBL/filament/AliZ/AliZ PETG @P1-X1.json @@ -1,7 +1,7 @@ { "type": "filament", - "filament_id": "GFG99", "setting_id": "AliZPX1FSA04", + "filament_id": "AliZ001", "name": "AliZ PETG @P1-X1", "from": "system", "instantiation": "true", diff --git a/resources/profiles/BBL/filament/AliZ/AliZ PETG-CF @P1-X1.json b/resources/profiles/BBL/filament/AliZ/AliZ PETG-CF @P1-X1.json index 14df69df01..e9d706bf79 100644 --- a/resources/profiles/BBL/filament/AliZ/AliZ PETG-CF @P1-X1.json +++ b/resources/profiles/BBL/filament/AliZ/AliZ PETG-CF @P1-X1.json @@ -1,6 +1,7 @@ { "type": "filament", "name": "AliZ PETG-CF @P1-X1", + "filament_id": "AliZ001-1", "inherits": "AliZ PETG-CF @base", "from": "system", "setting_id": "AliZPX1FSG50", diff --git a/resources/profiles/BBL/filament/AliZ/AliZ PETG-Metal @P1-X1.json b/resources/profiles/BBL/filament/AliZ/AliZ PETG-Metal @P1-X1.json index baeefd6c11..7a2ea7ac30 100644 --- a/resources/profiles/BBL/filament/AliZ/AliZ PETG-Metal @P1-X1.json +++ b/resources/profiles/BBL/filament/AliZ/AliZ PETG-Metal @P1-X1.json @@ -1,6 +1,7 @@ { "type": "filament", "name": "AliZ PETG-Metal @P1-X1", + "filament_id": "AliZ001-2", "inherits": "AliZ PETG-Metal @base", "from": "system", "setting_id": "AliZPX1FSG50", diff --git a/resources/profiles/BBL/filament/AliZ/AliZ PLA @P1-X1.json b/resources/profiles/BBL/filament/AliZ/AliZ PLA @P1-X1.json index 36a868e6e2..e64e985015 100644 --- a/resources/profiles/BBL/filament/AliZ/AliZ PLA @P1-X1.json +++ b/resources/profiles/BBL/filament/AliZ/AliZ PLA @P1-X1.json @@ -1,6 +1,7 @@ { "type": "filament", "setting_id": "AliZPX1FSA04", + "filament_id": "AliZ002", "name": "AliZ PLA @P1-X1", "from": "system", "instantiation": "true", From 7bd6863525e119c2c4af5d54db97bf04a3ad4854 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 23 Feb 2025 18:43:36 +0800 Subject: [PATCH 107/129] bump nightlybuild version to 2.3.0-beta2 --- build_release_macos.sh | 77 +++++++++++++++++++++++++++++++++++++++--- version.inc | 2 +- 2 files changed, 73 insertions(+), 6 deletions(-) diff --git a/build_release_macos.sh b/build_release_macos.sh index 38a360ed2d..59cd616c76 100755 --- a/build_release_macos.sh +++ b/build_release_macos.sh @@ -3,7 +3,7 @@ set -e set -o pipefail -while getopts ":dpa:snt:xbc:h" opt; do +while getopts ":dpa:snt:xbc:hu" opt; do case "${opt}" in d ) export BUILD_TARGET="deps" @@ -37,6 +37,9 @@ while getopts ":dpa:snt:xbc:h" opt; do 1 ) export CMAKE_BUILD_PARALLEL_LEVEL=1 ;; + u ) + export BUILD_UNIVERSAL="1" + ;; h ) echo "Usage: ./build_release_macos.sh [-d]" echo " -d: Build deps only" echo " -a: Set ARCHITECTURE (arm64 or x86_64)" @@ -46,6 +49,7 @@ while getopts ":dpa:snt:xbc:h" opt; do echo " -x: Use Ninja CMake generator, default is Xcode" echo " -b: Build without reconfiguring CMake" echo " -c: Set CMake build configuration, default is Release" + echo " -u: Build universal binary (both arm64 and x86_64)" echo " -1: Use single job for building" exit 0 ;; @@ -57,10 +61,18 @@ done # Set defaults if [ -z "$ARCH" ]; then - ARCH="$(uname -m)" + if [ "1." == "$BUILD_UNIVERSAL". ]; then + ARCH="universal" + else + ARCH="$(uname -m)" + fi export ARCH fi +if [ "1." == "$BUILD_UNIVERSAL". ]; then + echo "Universal build enabled - will create a combined arm64/x86_64 binary" +fi + if [ -z "$BUILD_CONFIG" ]; then export BUILD_CONFIG="Release" fi @@ -205,16 +217,71 @@ function build_slicer() { # zip -FSr OrcaSlicer${ver}_Mac_${ARCH}.zip OrcaSlicer.app } +function build_universal() { + echo "Building universal binary..." + # Save current ARCH + ORIGINAL_ARCH="$ARCH" + + # Build x86_64 + ARCH="x86_64" + PROJECT_BUILD_DIR="$PROJECT_DIR/build_$ARCH" + DEPS_BUILD_DIR="$DEPS_DIR/build_$ARCH" + DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep_$ARCH" + build_deps + build_slicer + + # Build arm64 + ARCH="arm64" + PROJECT_BUILD_DIR="$PROJECT_DIR/build_$ARCH" + DEPS_BUILD_DIR="$DEPS_DIR/build_$ARCH" + DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep_$ARCH" + build_deps + build_slicer + + # Restore original ARCH + ARCH="$ORIGINAL_ARCH" + PROJECT_BUILD_DIR="$PROJECT_DIR/build_$ARCH" + DEPS_BUILD_DIR="$DEPS_DIR/build_$ARCH" + DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep_$ARCH" + + # Create universal binary + echo "Creating universal binary..." + PROJECT_BUILD_DIR="$PROJECT_DIR/build_Universal" + mkdir -p "$PROJECT_BUILD_DIR/OrcaSlicer" + UNIVERSAL_APP="$PROJECT_BUILD_DIR/OrcaSlicer/Universal_OrcaSlicer.app" + rm -rf "$UNIVERSAL_APP" + cp -R "$PROJECT_DIR/build_x86_64/OrcaSlicer/OrcaSlicer.app" "$UNIVERSAL_APP" + + # Get the binary path inside the .app bundle + BINARY_PATH="Contents/MacOS/OrcaSlicer" + + # Create universal binary using lipo + lipo -create \ + "$PROJECT_DIR/build_x86_64/OrcaSlicer/OrcaSlicer.app/$BINARY_PATH" \ + "$PROJECT_DIR/build_arm64/OrcaSlicer/OrcaSlicer.app/$BINARY_PATH" \ + -output "$UNIVERSAL_APP/$BINARY_PATH" + + echo "Universal binary created at $UNIVERSAL_APP" +} + case "${BUILD_TARGET}" in all) - build_deps - build_slicer + if [ "1." == "$BUILD_UNIVERSAL". ]; then + build_universal + else + build_deps + build_slicer + fi ;; deps) build_deps ;; slicer) - build_slicer + if [ "1." == "$BUILD_UNIVERSAL". ]; then + build_universal + else + build_slicer + fi ;; *) echo "Unknown target: $BUILD_TARGET. Available targets: deps, slicer, all." diff --git a/version.inc b/version.inc index bca3c93b26..5e0806b9d7 100644 --- a/version.inc +++ b/version.inc @@ -10,7 +10,7 @@ endif() if(NOT DEFINED BBL_INTERNAL_TESTING) set(BBL_INTERNAL_TESTING "0") endif() -set(SoftFever_VERSION "2.3.0-beta") +set(SoftFever_VERSION "2.3.0-beta2") string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)" SoftFever_VERSION_MATCH ${SoftFever_VERSION}) set(ORCA_VERSION_MAJOR ${CMAKE_MATCH_1}) From d022d7ba6947e7f93744f0d18ada662f46fad1f5 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 23 Feb 2025 19:33:03 +0800 Subject: [PATCH 108/129] Fix AMS mapping bug 2 --- resources/profiles/BBL/filament/AliZ/AliZ PA-CF @P1-X1.json | 1 - resources/profiles/BBL/filament/AliZ/AliZ PETG @P1-X1.json | 1 - resources/profiles/BBL/filament/AliZ/AliZ PETG-CF @P1-X1.json | 1 - .../profiles/BBL/filament/AliZ/AliZ PETG-Metal @P1-X1.json | 1 - resources/profiles/BBL/filament/AliZ/AliZ PLA @P1-X1.json | 1 - .../OrcaFilamentLibrary/filament/AliZ/AliZ PA-CF @base.json | 2 +- .../OrcaFilamentLibrary/filament/AliZ/AliZ PETG @System.json | 1 - .../OrcaFilamentLibrary/filament/AliZ/AliZ PETG @base.json | 2 +- .../OrcaFilamentLibrary/filament/AliZ/AliZ PETG-CF @base.json | 2 +- .../filament/AliZ/AliZ PETG-Metal @base.json | 1 + .../OrcaFilamentLibrary/filament/AliZ/AliZ PLA @base.json | 1 + 11 files changed, 5 insertions(+), 9 deletions(-) diff --git a/resources/profiles/BBL/filament/AliZ/AliZ PA-CF @P1-X1.json b/resources/profiles/BBL/filament/AliZ/AliZ PA-CF @P1-X1.json index c8e745a876..f82618615f 100644 --- a/resources/profiles/BBL/filament/AliZ/AliZ PA-CF @P1-X1.json +++ b/resources/profiles/BBL/filament/AliZ/AliZ PA-CF @P1-X1.json @@ -1,7 +1,6 @@ { "type": "filament", "setting_id": "AliZPX1FSA04", - "filament_id": "AliZ003", "name": "AliZ PA-CF @P1-X1", "from": "system", "instantiation": "true", diff --git a/resources/profiles/BBL/filament/AliZ/AliZ PETG @P1-X1.json b/resources/profiles/BBL/filament/AliZ/AliZ PETG @P1-X1.json index e64a87ff13..272c623e31 100644 --- a/resources/profiles/BBL/filament/AliZ/AliZ PETG @P1-X1.json +++ b/resources/profiles/BBL/filament/AliZ/AliZ PETG @P1-X1.json @@ -1,7 +1,6 @@ { "type": "filament", "setting_id": "AliZPX1FSA04", - "filament_id": "AliZ001", "name": "AliZ PETG @P1-X1", "from": "system", "instantiation": "true", diff --git a/resources/profiles/BBL/filament/AliZ/AliZ PETG-CF @P1-X1.json b/resources/profiles/BBL/filament/AliZ/AliZ PETG-CF @P1-X1.json index e9d706bf79..14df69df01 100644 --- a/resources/profiles/BBL/filament/AliZ/AliZ PETG-CF @P1-X1.json +++ b/resources/profiles/BBL/filament/AliZ/AliZ PETG-CF @P1-X1.json @@ -1,7 +1,6 @@ { "type": "filament", "name": "AliZ PETG-CF @P1-X1", - "filament_id": "AliZ001-1", "inherits": "AliZ PETG-CF @base", "from": "system", "setting_id": "AliZPX1FSG50", diff --git a/resources/profiles/BBL/filament/AliZ/AliZ PETG-Metal @P1-X1.json b/resources/profiles/BBL/filament/AliZ/AliZ PETG-Metal @P1-X1.json index 7a2ea7ac30..baeefd6c11 100644 --- a/resources/profiles/BBL/filament/AliZ/AliZ PETG-Metal @P1-X1.json +++ b/resources/profiles/BBL/filament/AliZ/AliZ PETG-Metal @P1-X1.json @@ -1,7 +1,6 @@ { "type": "filament", "name": "AliZ PETG-Metal @P1-X1", - "filament_id": "AliZ001-2", "inherits": "AliZ PETG-Metal @base", "from": "system", "setting_id": "AliZPX1FSG50", diff --git a/resources/profiles/BBL/filament/AliZ/AliZ PLA @P1-X1.json b/resources/profiles/BBL/filament/AliZ/AliZ PLA @P1-X1.json index e64e985015..36a868e6e2 100644 --- a/resources/profiles/BBL/filament/AliZ/AliZ PLA @P1-X1.json +++ b/resources/profiles/BBL/filament/AliZ/AliZ PLA @P1-X1.json @@ -1,7 +1,6 @@ { "type": "filament", "setting_id": "AliZPX1FSA04", - "filament_id": "AliZ002", "name": "AliZ PLA @P1-X1", "from": "system", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PA-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PA-CF @base.json index 84f3273227..bb7b348ba4 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PA-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PA-CF @base.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFN98", + "filament_id": "AliZ003", "name": "AliZ PA-CF @base", "from": "system", "instantiation": "false", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG @System.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG @System.json index a269174eb9..cf91e387aa 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG @System.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFG99", "setting_id": "AliZGFSA04", "name": "AliZ PETG @System", "from": "system", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG @base.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG @base.json index 59e8a436f6..bb4a21694b 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG @base.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFG99", + "filament_id": "AliZ001", "name": "AliZ PETG @base", "from": "system", "instantiation": "false", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-CF @base.json index 925c386928..83da3ae163 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-CF @base.json @@ -2,7 +2,7 @@ "type": "filament", "name": "AliZ PETG-CF @base", "inherits": "AliZ PETG @base", - "filament_id": "GFG50", + "filament_id": "AliZ001-1", "from": "system", "instantiation": "false", "fan_cooling_layer_time": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-Metal @base.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-Metal @base.json index d19bb0d0e4..978b4495b3 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-Metal @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-Metal @base.json @@ -2,6 +2,7 @@ "type": "filament", "name": "AliZ PETG-Metal @base", "inherits": "AliZ PETG @base", + "filament_id": "AliZ001-2", "from": "system", "instantiation": "false", "fan_cooling_layer_time": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PLA @base.json index 9f806a03e1..f8dd45e6fd 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PLA @base.json @@ -2,6 +2,7 @@ "type": "filament", "name": "AliZ PLA @base", "from": "system", + "filament_id": "AliZ002", "instantiation": "false", "inherits": "fdm_filament_pla", "enable_pressure_advance": [ From db16cacc386761993a175238407608b570fba8b0 Mon Sep 17 00:00:00 2001 From: Alexandre Folle de Menezes Date: Sun, 23 Feb 2025 12:21:19 -0300 Subject: [PATCH 109/129] Adding missing pt-BR translations (#8482) --- localization/i18n/pt_BR/OrcaSlicer_pt_BR.po | 112 +++++++++++++------- 1 file changed, 76 insertions(+), 36 deletions(-) diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index 8b023117bb..db43d910cc 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-02-20 21:21+0800\n" -"PO-Revision-Date: 2025-02-17 11:39-0300\n" +"PO-Revision-Date: 2025-02-21 11:24-0300\n" "Last-Translator: Alexandre Folle de Menezes \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt_BR\n" @@ -1372,13 +1372,13 @@ msgid "" msgstr "" msgid "Warning:please select Plane's feature." -msgstr "" +msgstr "Aviso: por favor selecione o recurso do Plano." msgid "Warning:please select Point's or Circle's feature." -msgstr "" +msgstr "Aviso: por favor selecione o recurso do Ponto ou do Círculo." msgid "Warning:please select two different mesh." -msgstr "" +msgstr "Aviso: por favor selecione duas malhas diferentes." msgid "Copy to clipboard" msgstr "Copiar para a área de transferência" @@ -4134,7 +4134,7 @@ msgid "Input value is out of range" msgstr "Valor de entrada está fora do limite" msgid "Some extension in the input is invalid" -msgstr "" +msgstr "Alguma extensão na entrada é inválida" #, boost-format msgid "Invalid format. Expected vector format: \"%1%\"" @@ -5265,6 +5265,8 @@ msgid "" "Please check if the SD card is inserted into the printer.\n" "If it still cannot be read, you can try formatting the SD card." msgstr "" +"Por favor verifique se o cartão SD está inserido na impressora.\n" +"Se ele ainda não puder ser lido, você pode tentar formatar o cartão SD." msgid "LAN Connection Failed (Failed to view sdcard)" msgstr "Falha na conexão LAN (Falha para ver o cartão SD)" @@ -5725,14 +5727,18 @@ msgid "" "The server is unable to respond. Please click the link below to check the " "server status." msgstr "" +"O servidor não consegue responder. Por favor clique no link abaixo para " +"verificar o status do servidor." msgid "" "If the server is in a fault state, you can temporarily use offline printing " "or local network printing." msgstr "" +"Se o servidor estiver em estado de falha, você poderá usar temporariamente a " +"impressão offline ou a impressão em rede local." msgid "How to use LAN only mode" -msgstr "" +msgstr "Como usar o modo somente LAN" msgid "Don't show this dialog again" msgstr "Não mostrar esse diálogo novamente" @@ -6685,7 +6691,7 @@ msgid "with OrcaSlicer so that Orca can open models from" msgstr "" msgid "Current Association: " -msgstr "Associação Atual:" +msgstr "Associação Atual: " msgid "Current Instance" msgstr "Instância Atual" @@ -6854,10 +6860,10 @@ msgstr "" "dispositivos ao mesmo tempo e gerenciar vários dispositivos." msgid "Auto arrange plate after cloning" -msgstr "" +msgstr "Organizar automaticamente a mesa após a clonagem" msgid "Auto arrange plate after object cloning" -msgstr "" +msgstr "Organizar automaticamente a mesa após a clonagem de objeto" msgid "Network" msgstr "Rede" @@ -8054,7 +8060,7 @@ msgid "Nozzle temperature when printing" msgstr "Temperatura do bico ao imprimir" msgid "Cool Plate (SuperTack)" -msgstr "" +msgstr "Mesa Fria (SuperTack)" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " @@ -8072,7 +8078,7 @@ msgstr "" "significa que o filamento não suporta impressão na cool plate" msgid "Textured Cool plate" -msgstr "" +msgstr "Mesa Fria texturizada" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " @@ -8090,16 +8096,16 @@ msgstr "" "significa que o filamento não suporta impressão na Mesa de Engenharia" msgid "Smooth PEI Plate / High Temp Plate" -msgstr "Mesa PEI lisa / Mesa de alta temperatura" +msgstr "Mesa PEI Lisa / Mesa de Alta Temperatura" 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 "" -"Temperatura da mesa quando a mesa PEI lisa/ de alta temperatura está " +"Temperatura da mesa quando a Mesa PEI Lisa/Mesa de Alta Temperatura está " "instalada. O valor 0 significa que o filamento não suporta a impressão na " -"Mesa PEI lisa/Mesa de Alta Temperatura" +"Mesa PEI Lisa/Mesa de Alta Temperatura" msgid "Textured PEI Plate" msgstr "Mesa PEI Texturizada" @@ -8295,7 +8301,7 @@ msgid "Layer height limits" msgstr "Limites de altura da camada" msgid "Z-Hop" -msgstr "" +msgstr "Z-Hop" msgid "Retraction when switching material" msgstr "Retração ao trocar material" @@ -8606,11 +8612,11 @@ msgid "Obj file Import color" msgstr "" msgid "Specify number of colors:" -msgstr "" +msgstr "Especifique a quantidade de cores:" #, c-format, boost-format msgid "The color count should be in range [%d, %d]." -msgstr "" +msgstr "A quantidade de cores deve estar na faixa [%d, %d]." msgid "Recommended " msgstr "Recomendado " @@ -9145,7 +9151,7 @@ msgid "Connect" msgstr "Conectar" msgid "Manual Setup" -msgstr "" +msgstr "Configuração Manual" msgid "connecting..." msgstr "conectando..." @@ -10056,16 +10062,16 @@ msgid "Bed types supported by the printer" msgstr "Tipos de mesa suportadas pela impressora" msgid "Smooth Cool Plate" -msgstr "" +msgstr "Mesa Fria Lisa" msgid "Engineering Plate" msgstr "Engenharia Plate" msgid "Smooth High Temp Plate" -msgstr "" +msgstr "Mesa de Alta Temp. Lisa" msgid "Textured Cool Plate" -msgstr "" +msgstr "Mesa Fria Texturizada" msgid "First layer print sequence" msgstr "Sequência de impressão da primeira camada" @@ -10294,6 +10300,11 @@ msgid "" "The actual top surface flow used is calculated by multiplying this value " "with the filament flow ratio, and if set, the object's flow ratio." msgstr "" +"Este fator afeta a quantidade de material para preenchimento sólido superior. Você " +"pode diminuí-lo ligeiramente para ter um acabamento de superfície suave. \n" +"\n" +"O real fluxo de superfície superior usado é calculado multiplicando este valor pela " +"taxa de fluxo do filamento e, se definido, pela taxa de fluxo do objeto." msgid "Bottom surface flow ratio" msgstr "Fluxo em superfície inferior" @@ -10304,6 +10315,10 @@ msgid "" "The actual bottom solid infill flow used is calculated by multiplying this " "value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" +"Este fator afeta a quantidade de material para preenchimento sólido do fundo. \n" +"\n" +"O real fluxo de preenchimento sólido do fundo usado é calculado multiplicando este " +"valor pela taxa de fluxo do filamento e, se definido, pela taxa de fluxo do objeto." msgid "Precise wall" msgstr "Parede precisa" @@ -10312,6 +10327,8 @@ msgid "" "Improve shell precision by adjusting outer wall spacing. This also improves " "layer consistency." msgstr "" +"Melhora a precisão da casca ajustando o espaçamento da parede externa. Isso " +"também melhora a consistência da camada." msgid "Only one wall on top surfaces" msgstr "Perímetro único em superfícies superiores" @@ -10544,7 +10561,7 @@ msgstr "" "automaticamente." msgid "Painted" -msgstr "" +msgstr "Pintado" msgid "Brim-object gap" msgstr "Espaço entre a borda e objeto" @@ -11422,13 +11439,16 @@ msgid "" msgstr "" msgid "Tool change time" -msgstr "" +msgstr "Tempo de troca de ferramenta" msgid "" "Time taken to switch tools. It's usually applicable for tool changers or " "multi-tool machines. For single-extruder multi-material machines, it's " "typically 0. For statistics only" msgstr "" +"Tempo gasto para trocar ferramentas. Geralmente é aplicável para trocadores " +"de ferramentas ou máquinas multi-ferramentas. Para máquinas multi-materiais " +"de extrusora única, é tipicamente 0. Apenas para estatísticas" msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -11725,7 +11745,7 @@ msgid "Grid" msgstr "Grade" msgid "2D Lattice" -msgstr "" +msgstr "Malha 2D" msgid "Line" msgstr "Linha" @@ -12130,7 +12150,7 @@ msgstr "" "Não imprimir preenchimento de lacuna com um comprimento menor que o limiar " "especificado (em mm). Esta configuração se aplica ao preenchimento superior, " "inferior e sólido e, se estiver usando o gerador de perímetro clássico, ao " -"preenchimento de lacuna de parede." +"preenchimento de lacuna de parede. " msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " @@ -12851,7 +12871,7 @@ msgid "mm³/s²" msgstr "mm3/s2" msgid "Smoothing segment length" -msgstr "Distancia do segmento de suavização" +msgstr "Comprimento do segmento de suavização" msgid "" "A lower value results in smoother extrusion rate transitions. However, this " @@ -12913,6 +12933,9 @@ msgid "" "minimum layer time defined above when the slowdown for better layer cooling " "is enabled." msgstr "" +"A velocidade mínima de impressão para a qual a impressora diminui a " +"velocidade para manter o tempo mínimo de camada definido acima quando a " +"desaceleração para melhor resfriamento da camada está ativada." msgid "Diameter of nozzle" msgstr "Diâmetro do bico" @@ -13020,6 +13043,8 @@ msgid "" "This option will drop the temperature of the inactive extruders to prevent " "oozing." msgstr "" +"Esta opção diminuirá a temperatura das extrusoras inativas para evitar " +"vazamentos." msgid "Filename format" msgstr "Formato do nome do arquivo" @@ -13208,12 +13233,14 @@ msgid "Force a retraction when changes layer" msgstr "Forçar uma retração ao mudar de camada" msgid "Retract on top layer" -msgstr "" +msgstr "Retração na camada superior" msgid "" "Force a retraction on top layer. Disabling could prevent clog on very slow " "patterns with small movements, like Hilbert curve" msgstr "" +"Forçar uma retração na camada superior. Desabilitar pode evitar obstrução em " +"padrões muito lentos com pequenos movimentos, como a curva de Hilbert" msgid "Retraction Length" msgstr "Distância de retração" @@ -13670,7 +13697,7 @@ msgid "" "skirt." msgstr "" "Combinado - saia única para todos os objetos, Por objeto - saias individuais " -"por objeto" +"por objeto." msgid "Combined" msgstr "Combinado" @@ -13727,7 +13754,7 @@ msgid "Solid infill" msgstr "Preenchimento sólido" msgid "Filament to print solid infill" -msgstr "" +msgstr "Filamento para imprimir o preenchimento sólido" msgid "" "Line width of internal solid infill. If expressed as a %, it will be " @@ -13816,9 +13843,12 @@ msgid "" "value is not used when 'idle_temperature' in filament settings is set to non " "zero value." msgstr "" +"Diferença de temperatura a ser aplicada quando uma extrusora não estiver " +"ativa. O valor não é usado quando 'idle_temperature' nas configurações de " +"filamento é definido como valor diferente de zero." msgid "Preheat time" -msgstr "" +msgstr "Tempo de pré-aquecimento" msgid "" "To reduce the waiting time after tool change, Orca can preheat the next tool " @@ -13826,14 +13856,21 @@ msgid "" "seconds to preheat the next tool. Orca will insert a M104 command to preheat " "the tool in advance." msgstr "" +"Para reduzir o tempo de espera após a troca de ferramenta, o Orca pode pré-" +"aquecer a próxima ferramenta enquanto a ferramenta atual ainda está em uso. " +"Esta configuração especifica o tempo em segundos para pré-aquecer a próxima " +"ferramenta. O Orca irá inserir um comando M104 para pré-aquecer a ferramenta " +"com antecedência." msgid "Preheat steps" -msgstr "" +msgstr "Passos de pré-aquecimento" msgid "" "Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " "other printers, please set it to 1." msgstr "" +"Insire múltiplos comandos de pré-aquecimento (por exemplo, M104.1). Útil " +"apenas para Prusa XL. Para outras impressoras, defina como 1." msgid "Start G-code" msgstr "Código de Início" @@ -13956,18 +13993,21 @@ msgid "" "Normal (manual) or Tree (manual) is selected, only support enforcers are " "generated" msgstr "" +"Normal (automático) e Árvore (automático) são usados ​​para gerar suporte " +"automaticamente. Se Normal (manual) ou Árvore (manual) for selecionado, " +"apenas os reforçadores de suporte serão gerados" msgid "Normal (auto)" -msgstr "" +msgstr "Normal (automático)" msgid "Tree (auto)" -msgstr "" +msgstr "Árvore (automático)" msgid "Normal (manual)" -msgstr "" +msgstr "Normal (manual)" msgid "Tree (manual)" -msgstr "" +msgstr "Árvore (manual)" msgid "Support/object xy distance" msgstr "Distância xy entre suporte e objeto" @@ -14652,7 +14692,7 @@ msgstr "" "espaçamento é ajustado automaticamente." msgid "Idle temperature" -msgstr "" +msgstr "Temperatura ociosa" msgid "" "Nozzle temperature when the tool is currently not used in multi-tool setups." From f1ef4abca8db39deb22dd233e40d2e4393f426ed Mon Sep 17 00:00:00 2001 From: Russell Cloran Date: Sun, 23 Feb 2025 07:21:53 -0800 Subject: [PATCH 110/129] Turn on exclude object for Prusa MK4S (#8486) --- resources/profiles/Prusa/process/process_common_mk4s.json | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/profiles/Prusa/process/process_common_mk4s.json b/resources/profiles/Prusa/process/process_common_mk4s.json index d15802643a..dd9498df07 100644 --- a/resources/profiles/Prusa/process/process_common_mk4s.json +++ b/resources/profiles/Prusa/process/process_common_mk4s.json @@ -9,6 +9,7 @@ "enable_overhang_speed": "1", "enable_prime_tower": "1", "enforce_support_layers": "0", + "exclude_object": "1", "filename_format": "{input_filename_base}_{nozzle_diameter[0]}n_{layer_height}mm_{filament_type[0]}_{printer_model}_{print_time}.gcode", "from": "system", "gap_infill_speed": "120", From 14f77e41fb81d6fe428c61540012a9af4fdd93a9 Mon Sep 17 00:00:00 2001 From: Thomas Date: Sun, 23 Feb 2025 16:22:41 +0100 Subject: [PATCH 111/129] Add new K1 SE profiles (fixes #8455 (#8485) --- resources/profiles/Creality.json | 16 ++- .../machine/Creality K1 SE 0.4 nozzle.json | 2 +- ....12mm Fine @Creality K1 SE 0.4 nozzle.json | 119 ++++++++++++++++++ ...mm Optimal @Creality K1 SE 0.4 nozzle.json | 119 ++++++++++++++++++ ... 0.20mm Standard @Creality K1 SE 0.4.json} | 6 +- ...24mm Draft @Creality K1 SE 0.4 nozzle.json | 119 ++++++++++++++++++ 6 files changed, 376 insertions(+), 5 deletions(-) create mode 100644 resources/profiles/Creality/process/0.12mm Fine @Creality K1 SE 0.4 nozzle.json create mode 100644 resources/profiles/Creality/process/0.16mm Optimal @Creality K1 SE 0.4 nozzle.json rename resources/profiles/Creality/process/{0.20mm Fast @Creality K1 SE 0.4.json => 0.20mm Standard @Creality K1 SE 0.4.json} (95%) create mode 100644 resources/profiles/Creality/process/0.24mm Draft @Creality K1 SE 0.4 nozzle.json diff --git a/resources/profiles/Creality.json b/resources/profiles/Creality.json index 04265c3e7d..2a59ae1c93 100644 --- a/resources/profiles/Creality.json +++ b/resources/profiles/Creality.json @@ -398,6 +398,10 @@ "name": "0.12mm Fine @Creality K1 (0.4 nozzle)", "sub_path": "process/0.12mm Fine @Creality K1 (0.4 nozzle).json" }, + { + "name": "0.12mm Fine @Creality K1 SE", + "sub_path": "process/0.12mm Fine @Creality K1 SE 0.4 nozzle.json" + }, { "name": "0.12mm Fine @Creality K1C", "sub_path": "process/0.12mm Fine @Creality K1C 0.4 nozzle.json" @@ -582,6 +586,10 @@ "name": "0.16mm Optimal @Creality K1 (0.4 nozzle)", "sub_path": "process/0.16mm Optimal @Creality K1 (0.4 nozzle).json" }, + { + "name": "0.16mm Optimal @Creality K1 SE", + "sub_path": "process/0.16mm Optimal @Creality K1 SE 0.4 nozzle.json" + }, { "name": "0.16mm Optimal @Creality K1C", "sub_path": "process/0.16mm Optimal @Creality K1C 0.4 nozzle.json" @@ -795,8 +803,8 @@ "sub_path": "process/0.40mm Standard @Creality K2 Plus 0.8 nozzle.json" }, { - "name": "0.20mm Fast @Creality K1 SE 0.4", - "sub_path": "process/0.20mm Fast @Creality K1 SE 0.4.json" + "name": "0.20mm Standard @Creality K1 SE 0.4", + "sub_path": "process/0.20mm Standard @Creality K1 SE 0.4.json" }, { "name": "0.20mm Standard @Creality Hi", @@ -1094,6 +1102,10 @@ "name": "0.24mm Draft @Creality K1 (0.4 nozzle)", "sub_path": "process/0.24mm Draft @Creality K1 (0.4 nozzle).json" }, + { + "name": "0.24mm Draft @Creality K1 SE", + "sub_path": "process/0.24mm Draft @Creality K1 SE 0.4 nozzle.json" + }, { "name": "0.24mm Draft @Creality K1C", "sub_path": "process/0.24mm Draft @Creality K1C 0.4 nozzle.json" diff --git a/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json index f1e812eb68..51e322a328 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json @@ -7,7 +7,7 @@ "inherits": "fdm_creality_common", "printer_model": "Creality K1 SE", "gcode_flavor": "klipper", - "default_print_profile": "0.20mm Fast @Creality K1 SE 0.4", + "default_print_profile": "0.20mm Standard @Creality K1 SE 0.4", "nozzle_diameter": [ "0.4" ], diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality K1 SE 0.4 nozzle.json b/resources/profiles/Creality/process/0.12mm Fine @Creality K1 SE 0.4 nozzle.json new file mode 100644 index 0000000000..15a6490593 --- /dev/null +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality K1 SE 0.4 nozzle.json @@ -0,0 +1,119 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.12mm Fine @Creality K1 SE", + "from": "system", + "inherits": "fdm_process_common_klipper", + "instantiation": "true", + "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": "1", + "bridge_speed": "50", + "internal_bridge_speed": "150%", + "brim_width": "5", + "brim_object_gap": "0.1", + "compatible_printers": [ + "Creality K1 SE 0.4 nozzle" + ], + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "12000", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.15", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "200", + "outer_wall_acceleration": "5000", + "inner_wall_acceleration": "5000", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.42", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "internal_bridge_support_thickness": "0.8", + "initial_layer_acceleration": "500", + "initial_layer_line_width": "0.5", + "initial_layer_print_height": "0.12", + "initial_layer_speed": "60", + "gap_infill_speed": "300", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "15%", + "sparse_infill_speed": "500", + "interface_shells": "0", + "ironing_flow": "10%", + "ironing_spacing": "0.15", + "ironing_speed": "100", + "ironing_type": "no ironing", + "layer_height": "0.12", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "60", + "overhang_2_4_speed": "30", + "overhang_3_4_speed": "10", + "overhang_4_4_speed": "10", + "only_one_wall_top": "1", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "300", + "wall_loops": "3", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_inner_walls": "1", + "seam_slope_entire_loop": "1", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "minimum_sparse_infill_area": "15", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "300", + "spiral_mode": "0", + "initial_layer_infill_speed": "105", + "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_bottom_z_distance": "0.2", + "support_filament": "0", + "support_line_width": "0.42", + "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_expansion": "0", + "support_interface_speed": "80", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_speed": "150", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.35", + "tree_support_branch_diameter": "2", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "1", + "detect_thin_wall": "0", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.42", + "top_surface_acceleration": "5000", + "top_surface_speed": "200", + "top_shell_layers": "5", + "top_shell_thickness": "0.6", + "travel_acceleration": "12000", + "travel_speed": "500", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "gcode_label_objects": "0", + "precise_outer_wall": "1" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality K1 SE 0.4 nozzle.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality K1 SE 0.4 nozzle.json new file mode 100644 index 0000000000..17e94d76aa --- /dev/null +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality K1 SE 0.4 nozzle.json @@ -0,0 +1,119 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.16mm Optimal @Creality K1 SE", + "from": "system", + "inherits": "fdm_process_common_klipper", + "instantiation": "true", + "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": "1", + "bridge_speed": "50", + "internal_bridge_speed": "150%", + "brim_width": "5", + "brim_object_gap": "0.1", + "compatible_printers": [ + "Creality K1 SE 0.4 nozzle" + ], + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "12000", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.15", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "200", + "outer_wall_acceleration": "5000", + "inner_wall_acceleration": "5000", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.42", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "internal_bridge_support_thickness": "0.8", + "initial_layer_acceleration": "500", + "initial_layer_line_width": "0.5", + "initial_layer_print_height": "0.16", + "initial_layer_speed": "60", + "gap_infill_speed": "300", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "15%", + "sparse_infill_speed": "500", + "interface_shells": "0", + "ironing_flow": "10%", + "ironing_spacing": "0.15", + "ironing_speed": "100", + "ironing_type": "no ironing", + "layer_height": "0.16", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "60", + "overhang_2_4_speed": "30", + "overhang_3_4_speed": "10", + "overhang_4_4_speed": "10", + "only_one_wall_top": "1", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "300", + "wall_loops": "3", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_inner_walls": "1", + "seam_slope_entire_loop": "1", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "minimum_sparse_infill_area": "15", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "300", + "spiral_mode": "0", + "initial_layer_infill_speed": "105", + "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_bottom_z_distance": "0.2", + "support_filament": "0", + "support_line_width": "0.42", + "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_expansion": "0", + "support_interface_speed": "80", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_speed": "150", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.35", + "tree_support_branch_diameter": "2", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "1", + "detect_thin_wall": "0", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.42", + "top_surface_acceleration": "5000", + "top_surface_speed": "200", + "top_shell_layers": "3", + "top_shell_thickness": "0.6", + "travel_acceleration": "12000", + "travel_speed": "500", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "gcode_label_objects": "0", + "precise_outer_wall": "1" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.20mm Fast @Creality K1 SE 0.4.json b/resources/profiles/Creality/process/0.20mm Standard @Creality K1 SE 0.4.json similarity index 95% rename from resources/profiles/Creality/process/0.20mm Fast @Creality K1 SE 0.4.json rename to resources/profiles/Creality/process/0.20mm Standard @Creality K1 SE 0.4.json index fcc01eec40..a2dee99af2 100644 --- a/resources/profiles/Creality/process/0.20mm Fast @Creality K1 SE 0.4.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality K1 SE 0.4.json @@ -1,7 +1,8 @@ { "type": "process", "setting_id": "GP004", - "name": "0.20mm Fast @Creality K1 SE 0.4", + "name": "0.20mm Standard @Creality K1 SE", + "renamed_from": "0.20mm Fast @Creality K1 SE 0.4", "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", @@ -106,5 +107,6 @@ "prime_tower_width": "60", "xy_hole_compensation": "0", "xy_contour_compensation": "0", - "gcode_label_objects": "0" + "gcode_label_objects": "0", + "precise_outer_wall": "1" } \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality K1 SE 0.4 nozzle.json b/resources/profiles/Creality/process/0.24mm Draft @Creality K1 SE 0.4 nozzle.json new file mode 100644 index 0000000000..768c4c502c --- /dev/null +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality K1 SE 0.4 nozzle.json @@ -0,0 +1,119 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.24mm Draft @Creality K1 SE", + "from": "system", + "inherits": "fdm_process_common_klipper", + "instantiation": "true", + "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": "1", + "bridge_speed": "50", + "internal_bridge_speed": "150%", + "brim_width": "5", + "brim_object_gap": "0.1", + "compatible_printers": [ + "Creality K1 SE 0.4 nozzle" + ], + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "12000", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.15", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "200", + "outer_wall_acceleration": "5000", + "inner_wall_acceleration": "5000", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.42", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "internal_bridge_support_thickness": "0.8", + "initial_layer_acceleration": "500", + "initial_layer_line_width": "0.5", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "60", + "gap_infill_speed": "300", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "15%", + "sparse_infill_speed": "500", + "interface_shells": "0", + "ironing_flow": "10%", + "ironing_spacing": "0.15", + "ironing_speed": "100", + "ironing_type": "no ironing", + "layer_height": "0.24", + "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": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "10", + "only_one_wall_top": "1", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "300", + "wall_loops": "3", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_inner_walls": "1", + "seam_slope_entire_loop": "1", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "minimum_sparse_infill_area": "15", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "300", + "spiral_mode": "0", + "initial_layer_infill_speed": "105", + "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_bottom_z_distance": "0.2", + "support_filament": "0", + "support_line_width": "0.42", + "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_expansion": "0", + "support_interface_speed": "80", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_speed": "150", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.35", + "tree_support_branch_diameter": "2", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "1", + "detect_thin_wall": "0", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.42", + "top_surface_acceleration": "5000", + "top_surface_speed": "200", + "top_shell_layers": "3", + "top_shell_thickness": "0.6", + "travel_acceleration": "12000", + "travel_speed": "500", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "gcode_label_objects": "0", + "precise_outer_wall": "1" +} \ No newline at end of file From 160a0e2aea44f9f77f4e66eea57bbaefa9ce06e3 Mon Sep 17 00:00:00 2001 From: Alexandre Folle de Menezes Date: Sun, 23 Feb 2025 12:24:21 -0300 Subject: [PATCH 112/129] Fix strings missing localization on PrintConfig (#8483) Fix strings missing the localization marker --- src/libslic3r/PrintConfig.cpp | 202 ++++++++++++++++------------------ 1 file changed, 94 insertions(+), 108 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index e10b4c97a9..1a8744fca9 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -465,9 +465,8 @@ void PrintConfigDef::init_common_params() ConfigOptionDef* def; def = this->add("printer_technology", coEnum); - //def->label = L("Printer technology"); - def->label = "Printer technology"; - //def->tooltip = L("Printer technology"); + def->label = L("Printer technology"); + def->tooltip = L("Printer technology"); def->enum_keys_map = &ConfigOptionEnum::get_enum_values(); def->enum_values.push_back("FFF"); def->enum_values.push_back("SLA"); @@ -3111,10 +3110,8 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionFloat(100)); def = this->add("inherits", coString); - //def->label = L("Inherits profile"); - def->label = "Inherits profile"; - //def->tooltip = L("Name of parent profile"); - def->tooltip = "Name of parent profile"; + def->label = L("Inherits profile"); + def->tooltip = L("Name of parent profile"); def->full_width = true; def->height = 5; def->set_default_value(new ConfigOptionString()); @@ -3128,7 +3125,6 @@ void PrintConfigDef::init_fff_params() def = this->add("interface_shells", coBool); def->label = L("Interface shells"); - def->label = "Interface shells"; def->tooltip = L("Force the generation of solid shells between adjacent materials/volumes. " "Useful for multi-extruder prints with translucent materials or manual soluble " "support material"); @@ -3817,8 +3813,6 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionStrings()); def = this->add("printer_model", coString); - //def->label = L("Printer type"); - //def->tooltip = L("Type of the printer"); def->label = L("Printer type"); def->tooltip = L("Type of the printer"); def->set_default_value(new ConfigOptionString()); @@ -3834,7 +3828,6 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionString("")); def = this->add("printer_variant", coString); - //def->label = L("Printer variant"); def->label = L("Printer variant"); //def->tooltip = L("Name of the printer variant. For example, the printer variants may be differentiated by a nozzle diameter."); def->set_default_value(new ConfigOptionString()); @@ -4290,7 +4283,6 @@ void PrintConfigDef::init_fff_params() def = this->add("skirt_height", coInt); def->label = L("Skirt height"); - //def->label = "Skirt height"; def->tooltip = L("How many layers of skirt. Usually only one layer"); def->sidetext = L("layers"); def->mode = comSimple; @@ -4430,7 +4422,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionFloatOrPercent(200, true)); def = this->add("spiral_starting_flow_ratio", coFloat); - def->label = "Spiral starting flow ratio"; + def->label = L("Spiral starting flow ratio"); def->tooltip = L("Sets the starting flow ratio while transitioning from the last bottom layer to the spiral. " "Normally the spiral transition scales the flow ratio from 0% to 100% during the first loop " "which can in some cases lead to under extrusion at the start of the spiral."); @@ -4440,7 +4432,7 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def = this->add("spiral_finishing_flow_ratio", coFloat); - def->label = "Spiral finishing flow ratio"; + def->label = L("Spiral finishing flow ratio"); def->tooltip = L("Sets the finishing flow ratio while ending the spiral. " "Normally the spiral transition scales the flow ratio from 100% to 0% during the last loop " "which can in some cases lead to under extrusion at the end of the spiral."); @@ -7214,20 +7206,20 @@ CLIActionsConfigDef::CLIActionsConfigDef() def->set_default_value(new ConfigOptionBool(false));*/ def = this->add("export_3mf", coString); - def->label = "Export 3MF"; - def->tooltip = "Export project as 3MF."; + def->label = L("Export 3MF"); + def->tooltip = L("Export project as 3MF."); def->cli_params = "filename.3mf"; def->set_default_value(new ConfigOptionString("output.3mf")); def = this->add("export_slicedata", coString); - def->label = "Export slicing data"; - def->tooltip = "Export slicing data to a folder."; + def->label = L("Export slicing data"); + def->tooltip = L("Export slicing data to a folder."); def->cli_params = "slicing_data_directory"; def->set_default_value(new ConfigOptionString("cached_data")); def = this->add("load_slicedata", coStrings); - def->label = "Load slicing data"; - def->tooltip = "Load cached slicing data from directory"; + def->label = L("Load slicing data"); + def->tooltip = L("Load cached slicing data from directory"); def->cli_params = "slicing_data_directory"; def->set_default_value(new ConfigOptionString("cached_data")); @@ -7237,13 +7229,13 @@ CLIActionsConfigDef::CLIActionsConfigDef() def->set_default_value(new ConfigOptionBool(false));*/ def = this->add("export_stl", coBool); - def->label = "Export STL"; - def->tooltip = "Export the objects as single STL."; + def->label = L("Export STL"); + def->tooltip = L("Export the objects as single STL."); def->set_default_value(new ConfigOptionBool(false)); def = this->add("export_stls", coString); - def->label = "Export multiple STLs"; - def->tooltip = "Export the objects as multiple STLs to directory"; + def->label = L("Export multiple STLs"); + def->tooltip = L("Export the objects as multiple STLs to directory"); def->set_default_value(new ConfigOptionString("stl_path")); /*def = this->add("export_gcode", coBool); @@ -7254,45 +7246,39 @@ CLIActionsConfigDef::CLIActionsConfigDef() /*def = this->add("gcodeviewer", coBool); // BBS: remove _L() - def->label = ("G-code viewer"); - def->tooltip = ("Visualize an already sliced and saved G-code"); + def->label = L("G-code viewer"); + def->tooltip = L("Visualize an already sliced and saved G-code"); def->cli = "gcodeviewer"; def->set_default_value(new ConfigOptionBool(false));*/ def = this->add("slice", coInt); - def->label = "Slice"; - def->tooltip = "Slice the plates: 0-all plates, i-plate i, others-invalid"; + def->label = L("Slice"); + def->tooltip = L("Slice the plates: 0-all plates, i-plate i, others-invalid"); def->cli = "slice"; def->cli_params = "option"; def->set_default_value(new ConfigOptionInt(0)); def = this->add("help", coBool); - def->label = "Help"; - def->tooltip = "Show command help."; + def->label = L("Help"); + def->tooltip = L("Show command help."); def->cli = "help|h"; def->set_default_value(new ConfigOptionBool(false)); def = this->add("uptodate", coBool); - def->label = "UpToDate"; - def->tooltip = "Update the configs values of 3mf to latest."; + def->label = L("UpToDate"); + def->tooltip = L("Update the configs values of 3mf to latest."); def->cli = "uptodate"; def->set_default_value(new ConfigOptionBool(false)); def = this->add("downward_check", coStrings); - def->label = "downward machines check"; - def->tooltip = "check whether current machine downward compatible with the machines in the list"; + def->label = L("downward machines check"); + def->tooltip = L("check whether current machine downward compatible with the machines in the list"); def->cli_params = "\"machine1.json;machine2.json;...\""; def->set_default_value(new ConfigOptionStrings()); def = this->add("load_defaultfila", coBool); - def->label = "Load default filaments"; - def->tooltip = "Load first filament as default for those not loaded"; - def->cli_params = "option"; - def->set_default_value(new ConfigOptionBool(false)); - - def = this->add("min_save", coBool); - def->label = "Minimum save"; - def->tooltip = "export 3mf with minimum size."; + def->label = L("Load default filaments"); + def->tooltip = L("Load first filament as default for those not loaded"); def->cli_params = "option"; def->set_default_value(new ConfigOptionBool(false)); @@ -7303,15 +7289,15 @@ CLIActionsConfigDef::CLIActionsConfigDef() def->set_default_value(new ConfigOptionBool(false)); def = this->add("mtcpp", coInt); - def->label = "mtcpp"; - def->tooltip = "max triangle count per plate for slicing."; + def->label = L("mtcpp"); + def->tooltip = L("max triangle count per plate for slicing."); def->cli = "mtcpp"; def->cli_params = "count"; def->set_default_value(new ConfigOptionInt(1000000)); def = this->add("mstpp", coInt); - def->label = "mstpp"; - def->tooltip = "max slicing time per plate in seconds."; + def->label = L("mstpp"); + def->tooltip = L("max slicing time per plate in seconds."); def->cli = "mstpp"; def->cli_params = "time"; def->set_default_value(new ConfigOptionInt(300)); @@ -7323,8 +7309,8 @@ CLIActionsConfigDef::CLIActionsConfigDef() def->set_default_value(new ConfigOptionBool(false)); def = this->add("normative_check", coBool); - def->label = "Normative check"; - def->tooltip = "Check the normative items."; + def->label = L("Normative check"); + def->tooltip = L("Check the normative items."); def->cli_params = "option"; def->set_default_value(new ConfigOptionBool(true)); @@ -7339,19 +7325,19 @@ CLIActionsConfigDef::CLIActionsConfigDef() def->set_default_value(new ConfigOptionBool(false));*/ def = this->add("info", coBool); - def->label = "Output Model Info"; - def->tooltip = "Output the model's information."; + def->label = L("Output Model Info"); + def->tooltip = L("Output the model's information."); def->set_default_value(new ConfigOptionBool(false)); def = this->add("export_settings", coString); - def->label = "Export Settings"; - def->tooltip = "Export settings to a file."; + def->label = L("Export Settings"); + def->tooltip = L("Export settings to a file."); def->cli_params = "settings.json"; def->set_default_value(new ConfigOptionString("output.json")); def = this->add("pipe", coString); - def->label = "Send progress to pipe"; - def->tooltip = "Send progress to pipe."; + def->label = L("Send progress to pipe"); + def->tooltip = L("Send progress to pipe."); def->cli_params = "pipename"; def->set_default_value(new ConfigOptionString("")); } @@ -7395,15 +7381,15 @@ CLITransformConfigDef::CLITransformConfigDef() def->set_default_value(new ConfigOptionPoint(Vec2d(100,100)));*/ def = this->add("arrange", coInt); - def->label = "Arrange Options"; - def->tooltip = "Arrange options: 0-disable, 1-enable, others-auto"; + def->label = L("Arrange Options"); + def->tooltip = L("Arrange options: 0-disable, 1-enable, others-auto"); def->cli_params = "option"; //def->cli = "arrange|a"; def->set_default_value(new ConfigOptionInt(0)); def = this->add("repetitions", coInt); - def->label = "Repetions count"; - def->tooltip = "Repetions count of the whole model"; + def->label = L("Repetions count"); + def->tooltip = L("Repetions count of the whole model"); def->cli_params = "count"; def->set_default_value(new ConfigOptionInt(1)); @@ -7423,14 +7409,14 @@ CLITransformConfigDef::CLITransformConfigDef() def->tooltip = L("Multiply copies by creating a grid.");*/ def = this->add("assemble", coBool); - def->label = "Assemble"; - def->tooltip = "Arrange the supplied models in a plate and merge them in a single model in order to perform actions once."; + def->label = L("Assemble"); + def->tooltip = L("Arrange the supplied models in a plate and merge them in a single model in order to perform actions once."); //def->cli = "merge|m"; def->set_default_value(new ConfigOptionBool(false)); def = this->add("convert_unit", coBool); - def->label = "Convert Unit"; - def->tooltip = "Convert the units of model"; + def->label = L("Convert Unit"); + def->tooltip = L("Convert the units of model"); def->set_default_value(new ConfigOptionBool(false)); def = this->add("orient", coInt); @@ -7460,8 +7446,8 @@ CLITransformConfigDef::CLITransformConfigDef() def->set_default_value(new ConfigOptionFloat(0)); def = this->add("scale", coFloat); - def->label = "Scale"; - def->tooltip = "Scale the model by a float factor"; + def->label = L("Scale"); + def->tooltip = L("Scale the model by a float factor"); def->cli_params = "factor"; def->set_default_value(new ConfigOptionFloat(1.f)); @@ -7502,55 +7488,55 @@ CLIMiscConfigDef::CLIMiscConfigDef() def->tooltip = L("Load configuration from the specified file. It can be used more than once to load options from multiple files.");*/ def = this->add("load_settings", coStrings); - def->label = "Load General Settings"; - def->tooltip = "Load process/machine settings from the specified file"; + def->label = L("Load General Settings"); + def->tooltip = L("Load process/machine settings from the specified file"); def->cli_params = "\"setting1.json;setting2.json\""; def->set_default_value(new ConfigOptionStrings()); def = this->add("load_filaments", coStrings); - def->label = "Load Filament Settings"; - def->tooltip = "Load filament settings from the specified file list"; + def->label = L("Load Filament Settings"); + def->tooltip = L("Load filament settings from the specified file list"); def->cli_params = "\"filament1.json;filament2.json;...\""; def->set_default_value(new ConfigOptionStrings()); def = this->add("skip_objects", coInts); - def->label = "Skip Objects"; - def->tooltip = "Skip some objects in this print"; + def->label = L("Skip Objects"); + def->tooltip = L("Skip some objects in this print"); def->cli_params = "\"3,5,10,77\""; def->set_default_value(new ConfigOptionInts()); def = this->add("clone_objects", coInts); - def->label = "Clone Objects"; - def->tooltip = "Clone objects in the load list"; + def->label = L("Clone Objects"); + def->tooltip = L("Clone objects in the load list"); def->cli_params = "\"1,3,1,10\""; def->set_default_value(new ConfigOptionInts()); def = this->add("uptodate_settings", coStrings); - def->label = "load uptodate process/machine settings when using uptodate"; - def->tooltip = "load uptodate process/machine settings from the specified file when using uptodate"; + def->label = L("load uptodate process/machine settings when using uptodate"); + def->tooltip = L("load uptodate process/machine settings from the specified file when using uptodate"); def->cli_params = "\"setting1.json;setting2.json\""; def->set_default_value(new ConfigOptionStrings()); def = this->add("uptodate_filaments", coStrings); - def->label = "load uptodate filament settings when using uptodate"; - def->tooltip = "load uptodate filament settings from the specified file when using uptodate"; + def->label = L("load uptodate filament settings when using uptodate"); + def->tooltip = L("load uptodate filament settings from the specified file when using uptodate"); def->cli_params = "\"filament1.json;filament2.json;...\""; def->set_default_value(new ConfigOptionStrings()); def = this->add("downward_check", coBool); - def->label = "downward machines check"; - def->tooltip = "if enabled, check whether current machine downward compatible with the machines in the list"; + def->label = L("downward machines check"); + def->tooltip = L("if enabled, check whether current machine downward compatible with the machines in the list"); def->set_default_value(new ConfigOptionBool(false)); def = this->add("downward_settings", coStrings); - def->label = "downward machines settings"; - def->tooltip = "the machine settings list need to do downward checking"; + def->label = L("downward machines settings"); + def->tooltip = L("the machine settings list need to do downward checking"); def->cli_params = "\"machine1.json;machine2.json;...\""; def->set_default_value(new ConfigOptionStrings()); def = this->add("load_assemble_list", coString); - def->label = "Load assemble list"; - def->tooltip = "Load assemble object list from config file"; + def->label = L("Load assemble list"); + def->tooltip = L("Load assemble object list from config file"); def->cli_params = "assemble_list.json"; def->set_default_value(new ConfigOptionString()); @@ -7577,21 +7563,21 @@ CLIMiscConfigDef::CLIMiscConfigDef() def = this->add("outputdir", coString); - def->label = "Output directory"; - def->tooltip = "Output directory for the exported files."; + def->label = L("Output directory"); + def->tooltip = L("Output directory for the exported files."); def->cli_params = "dir"; def->set_default_value(new ConfigOptionString()); def = this->add("debug", coInt); - def->label = "Debug level"; - def->tooltip = "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:trace\n"; + def->label = L("Debug level"); + def->tooltip = L("Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:trace\n"); def->min = 0; def->cli_params = "level"; def->set_default_value(new ConfigOptionInt(1)); def = this->add("enable_timelapse", coBool); - def->label = "Enable timeplapse for print"; - def->tooltip = "If enabled, this slicing will be considered using timelapse"; + def->label = L("Enable timeplapse for print"); + def->tooltip = L("If enabled, this slicing will be considered using timelapse"); def->set_default_value(new ConfigOptionBool(false)); #if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(SLIC3R_GUI) @@ -7608,59 +7594,59 @@ CLIMiscConfigDef::CLIMiscConfigDef() def->set_default_value(new ConfigOptionString()); def = this->add("load_filament_ids", coInts); - def->label = "Load filament ids"; - def->tooltip = "Load filament ids for each object"; + def->label = L("Load filament ids"); + def->tooltip = L("Load filament ids for each object"); def->cli_params = "\"1,2,3,1\""; def->set_default_value(new ConfigOptionInts()); def = this->add("allow_multicolor_oneplate", coBool); - def->label = "Allow multiple color on one plate"; - def->tooltip = "If enabled, the arrange will allow multiple color on one plate"; + def->label = L("Allow multiple color on one plate"); + def->tooltip = L("If enabled, the arrange will allow multiple color on one plate"); def->set_default_value(new ConfigOptionBool(true)); def = this->add("allow_rotations", coBool); - def->label = "Allow rotatations when arrange"; - def->tooltip = "If enabled, the arrange will allow rotations when place object"; + def->label = L("Allow rotatations when arrange"); + def->tooltip = L("If enabled, the arrange will allow rotations when place object"); def->set_default_value(new ConfigOptionBool(true)); def = this->add("avoid_extrusion_cali_region", coBool); - def->label = "Avoid extrusion calibrate region when doing arrange"; - def->tooltip = "If enabled, the arrange will avoid extrusion calibrate region when place object"; + def->label = L("Avoid extrusion calibrate region when doing arrange"); + def->tooltip = L("If enabled, the arrange will avoid extrusion calibrate region when place object"); def->set_default_value(new ConfigOptionBool(false)); def = this->add("skip_modified_gcodes", coBool); - def->label = "Skip modified gcodes in 3mf"; - def->tooltip = "Skip the modified gcodes in 3mf from Printer or filament Presets"; + def->label = L("Skip modified gcodes in 3mf"); + def->tooltip = L("Skip the modified gcodes in 3mf from Printer or filament Presets"); def->cli_params = "option"; def->set_default_value(new ConfigOptionBool(false)); def = this->add("makerlab_name", coString); - def->label = "MakerLab name"; - def->tooltip = "MakerLab name to generate this 3mf"; + def->label = L("MakerLab name"); + def->tooltip = L("MakerLab name to generate this 3mf"); def->cli_params = "name"; def->set_default_value(new ConfigOptionString()); def = this->add("makerlab_version", coString); - def->label = "MakerLab version"; - def->tooltip = "MakerLab version to generate this 3mf"; + def->label = L("MakerLab version"); + def->tooltip = L("MakerLab version to generate this 3mf"); def->cli_params = "version"; def->set_default_value(new ConfigOptionString()); def = this->add("metadata_name", coStrings); - def->label = "metadata name list"; - def->tooltip = "matadata name list added into 3mf"; + def->label = L("metadata name list"); + def->tooltip = L("metadata name list added into 3mf"); def->cli_params = "\"name1;name2;...\""; def->set_default_value(new ConfigOptionStrings()); def = this->add("metadata_value", coStrings); - def->label = "metadata value list"; - def->tooltip = "matadata value list added into 3mf"; + def->label = L("metadata value list"); + def->tooltip = L("metadata value list added into 3mf"); def->cli_params = "\"value1;value2;...\""; def->set_default_value(new ConfigOptionStrings()); def = this->add("allow_newer_file", coBool); - def->label = "Allow 3mf with newer version to be sliced"; - def->tooltip = "Allow 3mf with newer version to be sliced"; + def->label = L("Allow 3mf with newer version to be sliced"); + def->tooltip = L("Allow 3mf with newer version to be sliced"); def->cli_params = "option"; def->set_default_value(new ConfigOptionBool(false)); } From 1d0af13aa36278f11fb9b5c0e06307f5579e234b Mon Sep 17 00:00:00 2001 From: Lee Jong Mun <43285072+crwusiz@users.noreply.github.com> Date: Mon, 24 Feb 2025 00:24:47 +0900 Subject: [PATCH 113/129] kor translation update (#8530) --- localization/i18n/ko/OrcaSlicer_ko.po | 975 +++++++++++++++----------- 1 file changed, 562 insertions(+), 413 deletions(-) diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 8ec3603f0d..c327910117 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-02-20 21:21+0800\n" -"PO-Revision-Date: 2024-11-06 21:10+0900\n" +"PO-Revision-Date: 2025-02-23 19:27+0900\n" "Last-Translator: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github." "com>\n" "Language-Team: crwusiz@gmail.com\n" @@ -20,7 +20,7 @@ msgstr "" "X-Generator: Poedit 3.5\n" msgid "Supports Painting" -msgstr "지지대 칠하기" +msgstr "서포트 칠하기" msgid "Alt + Mouse wheel" msgstr "Alt + 마우스 휠" @@ -41,13 +41,13 @@ msgid "Left mouse button" msgstr "마우스 왼쪽 버튼" msgid "Enforce supports" -msgstr "지지대 강제" +msgstr "서포트 강제" msgid "Right mouse button" msgstr "마우스 오른쪽 버튼" msgid "Block supports" -msgstr "지지대 차단" +msgstr "서포트 차단" msgid "Shift + Left mouse button" msgstr "Shift + 마우스 왼쪽 버튼" @@ -80,7 +80,7 @@ msgid "On overhangs only" msgstr "돌출부에만 칠하기" msgid "Auto support threshold angle: " -msgstr "자동 지지대 임계값 각도: " +msgstr "자동 서포트 임계값 각도: " msgid "Circle" msgstr "원" @@ -102,13 +102,13 @@ msgid "Highlight faces according to overhang angle." msgstr "돌출부 각도에 따라 면을 강조 표시합니다." msgid "No auto support" -msgstr "자동 지지대 비활성" +msgstr "자동 서포트 비활성" msgid "Support Generated" -msgstr "지지대 생성됨" +msgstr "서포트 생성됨" msgid "Gizmo-Place on Face" -msgstr "기즈모-면에 배치" +msgstr "도구상자 - 면에 배치" msgid "Lay on face" msgstr "바닥면 선택" @@ -189,13 +189,13 @@ msgid "Move" msgstr "이동" msgid "Gizmo-Move" -msgstr "기즈모-이동" +msgstr "도구상자 - 이동" msgid "Rotate" msgstr "회전" msgid "Gizmo-Rotate" -msgstr "기즈모-회전" +msgstr "도구상자 - 회전" msgid "Optimize orientation" msgstr "방향 최적화" @@ -207,7 +207,7 @@ msgid "Scale" msgstr "배율" msgid "Gizmo-Scale" -msgstr "기즈모-배율" +msgstr "도구상자 - 배율" msgid "Error: Please close all toolbar menus first" msgstr "오류: 먼저 모든 도구 모음 메뉴를 닫으십시오." @@ -231,7 +231,7 @@ msgid "Scale ratios" msgstr "배율비" msgid "Object Operations" -msgstr "개체 작업" +msgstr "객체 작업" msgid "Volume Operations" msgstr "용량 작업" @@ -261,7 +261,7 @@ msgid "World coordinates" msgstr "영역 좌표" msgid "Object coordinates" -msgstr "개체 좌표" +msgstr "객체 좌표" msgid "°" msgstr "°" @@ -352,7 +352,7 @@ msgid "Part" msgstr "부품" msgid "Object" -msgstr "개체" +msgstr "객체" msgid "" "Click to flip the cut plane\n" @@ -517,7 +517,7 @@ msgid "Select at least one object to keep after cutting." msgstr "잘라낸 후 보관할 개체를 하나 이상 선택합니다." msgid "Cut plane is placed out of object" -msgstr "절단면이 개체 밖으로 배치됨" +msgstr "절단면이 객체 밖으로 배치됨" msgid "Cut plane with groove is invalid" msgstr "홈이 있는 절단면은 유효하지 않습니다" @@ -533,7 +533,7 @@ msgstr "" "절단 도구로 인해 메인폴드가 아닌 가장자리가 발생했는데 지금 수정하시겠습니까?" msgid "Repairing model object" -msgstr "모델 개체 수리 중" +msgstr "모델 객체 수리 중" msgid "Cut by line" msgstr "라인별로 자르기" @@ -689,10 +689,10 @@ msgid "Embossed text" msgstr "텍스트 양각" msgid "Enter emboss gizmo" -msgstr "양각 기즈모 입력" +msgstr "도구상자 - 양각 입력" msgid "Leave emboss gizmo" -msgstr "양각 기즈모 남기기" +msgstr "도구상자 - 양각 나가기" msgid "Embossing actions" msgstr "양각 작업" @@ -768,7 +768,7 @@ msgid "Join" msgstr "접합부" msgid "Click to change text into object part." -msgstr "텍스트를 개체 부분으로 변경하려면 클릭하세요." +msgstr "텍스트를 객체 부분으로 변경하려면 클릭하세요." msgid "You can't change a type of the last solid part of the object." msgstr "개체의 마지막 솔리드 부분 유형은 변경할 수 없습니다." @@ -988,10 +988,10 @@ msgid "Rotate text Clock-wise." msgstr "텍스트를 시계 방향으로 회전합니다." msgid "Unlock the text's rotation when moving text along the object's surface." -msgstr "개체 표면을 따라 텍스트를 이동할 때 텍스트 회전을 잠금 해제합니다." +msgstr "객체 표면을 따라 텍스트를 이동할 때 텍스트 회전을 잠금 해제합니다." msgid "Lock the text's rotation when moving text along the object's surface." -msgstr "개체 표면을 따라 텍스트를 이동할 때 텍스트 회전을 잠급니다." +msgstr "객체 표면을 따라 텍스트를 이동할 때 텍스트 회전을 잠급니다." msgid "Select from True Type Collection." msgstr "트루타입 컬렉션에서 선택하세요." @@ -1086,10 +1086,10 @@ msgid "SVG move" msgstr "SVG 이동" msgid "Enter SVG gizmo" -msgstr "SVG 기즈모 입력" +msgstr "도구상자 - SVG 입력" msgid "Leave SVG gizmo" -msgstr "SVG 기즈모 나가기" +msgstr "도구상자 - SVG 나가기" msgid "SVG actions" msgstr "SVG 작업" @@ -1350,7 +1350,7 @@ msgid "Face" msgstr "얼굴" msgid " (Fixed)" -msgstr "(결정된)" +msgstr "(고정된)" msgid "Point" msgstr "가리키다" @@ -1402,7 +1402,7 @@ msgid "Rotate around center:" msgstr "중심을 중심으로 회전:" msgid "Parallel distance:" -msgstr "" +msgstr "평행 거리:" msgid "Flip by Face 2" msgstr "면 2로 뒤집기" @@ -1661,7 +1661,7 @@ msgid "Infill" msgstr "채우기" msgid "Support" -msgstr "지지대" +msgstr "서포트" msgid "Flush options" msgstr "버리기 옵션" @@ -1712,10 +1712,10 @@ msgid "Add modifier" msgstr "수정자 추가" msgid "Add support blocker" -msgstr "지지대 차단기 추가" +msgstr "서포트 차단기 추가" msgid "Add support enforcer" -msgstr "지지대 강제기 추가" +msgstr "서포트 강제기 추가" msgid "Add text" msgstr "텍스트 추가" @@ -1749,7 +1749,7 @@ msgid "Del" msgstr "Del" msgid "Delete the selected object" -msgstr "선택된 개체 삭제" +msgstr "선택된 객체 삭제" msgid "Load..." msgstr "불러오기..." @@ -1868,7 +1868,7 @@ msgid "Scale to build volume" msgstr "출력 가능 영역에 맞게 확장" msgid "Scale an object to fit the build volume" -msgstr "출력 가능 영역에 맞게 개체 크기 조정" +msgstr "출력 가능 영역에 맞게 객체 크기 조정" msgid "Flush Options" msgstr "버리기 옵션" @@ -1880,10 +1880,10 @@ msgid "Flush into this object" msgstr "개체에서 버리기" msgid "Flush into objects' support" -msgstr "개체의 지지대에서 버리기" +msgstr "개체의 서포트에서 버리기" msgid "Edit in Parameter Table" -msgstr "개체/부품 설정에서 편집" +msgstr "객체/부품 설정에서 편집" msgid "Convert from inch" msgstr "인치에서 변환" @@ -1931,7 +1931,7 @@ msgid "Mirror along the Z axis" msgstr "Z축을 따라 반전" msgid "Mirror object" -msgstr "개체 반전" +msgstr "객체 반전" msgid "Edit text" msgstr "텍스트 편집" @@ -1976,7 +1976,7 @@ msgid "Split" msgstr "분할" msgid "Split the selected object" -msgstr "선택한 개체 분할" +msgstr "선택한 객체 분할" msgid "Auto orientation" msgstr "자동 방향 지정" @@ -1988,13 +1988,13 @@ msgid "Select All" msgstr "모두 선택" msgid "select all objects on current plate" -msgstr "현재 플레이트의 모든 개체 선택" +msgstr "현재 플레이트의 모든 객체 선택" msgid "Delete All" msgstr "모두 삭제" msgid "delete all objects on current plate" -msgstr "현재 플레이트의 모든 개체 삭제" +msgstr "현재 플레이트의 모든 객체 삭제" msgid "Arrange" msgstr "정렬" @@ -2081,19 +2081,19 @@ msgid "Right click the icon to fix model object" msgstr "아이콘을 마우스 우클릭하여 모델 개체를 고칩니다" msgid "Right button click the icon to drop the object settings" -msgstr "아이콘을 마우스 우클릭하여 개체 설정을 드롭합니다" +msgstr "아이콘을 마우스 우클릭하여 객체 설정을 드롭합니다" 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 "아이콘을 쿨릭하여 개체의 출력 가능한 속성을 전환합니다" msgid "Click the icon to edit support painting of the object" -msgstr "아이콘을 클릭하여 개체의 지지대 칠하기를 편집합니다" +msgstr "아이콘을 클릭하여 개체의 서포트 칠하기를 편집합니다" msgid "Click the icon to edit color painting of the object" msgstr "아이콘을 클릭하여 개체의 색상 칠하기를 편집합니다" @@ -2169,13 +2169,13 @@ msgid "Cut Connectors information" msgstr "잘라내기 커넥터 정보" msgid "Object manipulation" -msgstr "개체 조작" +msgstr "객체 조작" msgid "Group manipulation" msgstr "그룹 조작" msgid "Object Settings to modify" -msgstr "수정할 개체 설정" +msgstr "수정할 객체 설정" msgid "Part Settings to modify" msgstr "수정할 부품 설정" @@ -2213,16 +2213,16 @@ msgstr "" "다." msgid "The type of the last solid object part is not to be changed." -msgstr "마지막 꽉찬 개체 부품의 유형은 변경되지 않습니다." +msgstr "마지막 꽉찬 객체 부품의 유형은 변경되지 않습니다." msgid "Negative Part" msgstr "비우기 부품" msgid "Support Blocker" -msgstr "지지대 차단기" +msgstr "서포트 차단기" msgid "Support Enforcer" -msgstr "지지대 강제기" +msgstr "서포트 강제기" msgid "Type:" msgstr "유형:" @@ -2242,7 +2242,7 @@ msgstr[0] "다음 모델 개체가 수리되었습니다" msgid "Failed to repair following model object" msgid_plural "Failed to repair following model objects" -msgstr[0] "다음 모델 개체 교정을 실패하였습니다" +msgstr[0] "다음 모델 객체 교정을 실패하였습니다" msgid "Repairing was canceled" msgstr "수리가 취소되었습니다" @@ -2311,7 +2311,7 @@ msgid "Brim" msgstr "브림" msgid "Object/Part Setting" -msgstr "개체/부품 설정" +msgstr "객체/부품 설정" msgid "Reset parameter" msgstr "매개변수 초기화" @@ -2564,7 +2564,7 @@ msgstr "정렬 완료." msgid "" "Arrange failed. Found some exceptions when processing object geometries." -msgstr "정렬에 실패했습니다. 개체 형상을 처리할 때 일부 예외를 발견했습니다." +msgstr "정렬에 실패했습니다. 객체 형상을 처리할 때 일부 예외를 발견했습니다." #, c-format, boost-format msgid "" @@ -2742,7 +2742,7 @@ msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "베드에 다중 부품 개체가 있는 SLA 프로젝트를 로드할 수 없습니다" msgid "Please check your object list before preset changing." -msgstr "사전 설정을 변경하기 전에 개체 목록을 확인하세요." +msgstr "사전 설정을 변경하기 전에 객체 목록을 확인하세요." msgid "Attention!" msgstr "주목!" @@ -2895,7 +2895,7 @@ msgid "" "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" @@ -2911,7 +2911,7 @@ msgid "Bed Temperature" msgstr "베드 온도" msgid "Max volumetric speed" -msgstr "최대 체적 속도" +msgstr "최대 압출 속도" msgid "℃" msgstr "℃" @@ -2982,7 +2982,7 @@ msgid "Print with the filament mounted on the back of chassis" msgstr "섀시 뒷면에 필라멘트를 장착한 상태에서 출력" msgid "Current AMS humidity" -msgstr "" +msgstr "현재 AMS 습도" msgid "" "Please change the desiccant when it is too wet. The indicator may not " @@ -3591,7 +3591,7 @@ msgid "" "Too small max volumetric speed.\n" "Reset to 0.5" msgstr "" -"최대 체적 속도가 너무 작습니다.\n" +"최대 압출 속도가 너무 작습니다.\n" "0.5로 재설정" #, c-format, boost-format @@ -3676,11 +3676,11 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height and Independent Support Layer Height" msgstr "" -"적응형 레이어 높이 또는 독립적 지지대 레이어 높이가 켜져 있으면 프라임 타워" +"적응형 레이어 높이 또는 독립적 서포트 레이어 높이가 켜져 있으면 프라임 타워" "가 작동하지 않습니다.\n" "어떤 것을 유지하시겠습니까?\n" "예 - 프라임 타워 유지\n" -"아니요 - 적응형 레이어 높이 및 독립적 지지대 레이어 높이 유지" +"아니요 - 적응형 레이어 높이 및 독립적 서포트 레이어 높이 유지" msgid "" "Prime tower does not work when Adaptive Layer Height is on.\n" @@ -3699,10 +3699,10 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Independent Support Layer Height" msgstr "" -"독립적 지지대 레이어 높이가 켜져 있으면 프라임 타워가 작동하지 않습니다.\n" +"독립적 서포트 레이어 높이가 켜져 있으면 프라임 타워가 작동하지 않습니다.\n" "어떤 것을 유지하시겠습니까?\n" "예 - 프라임 타워 유지\n" -"아니요 - 독립적 지지대 레이어 높이 유지" +"아니요 - 독립적 서포트 레이어 높이 유지" msgid "" "seam_slope_start_height need to be smaller than layer_height.\n" @@ -3715,7 +3715,7 @@ 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 "" -"나선형 모드는 벽 루프 1, 지지대 비활성화, 상단 셸 레이어 0, 드문 채우기 밀도 " +"나선형 모드는 벽 루프 1, 서포트 비활성화, 상단 셸 레이어 0, 드문 채우기 밀도 " "0, 타임랩스 유형이 기존인 경우에만 작동합니다." msgid " But machines with I3 structure will not generate timelapse videos." @@ -3957,7 +3957,7 @@ msgid "Print Statistics" msgstr "통계 출력" msgid "Objects Info" -msgstr "개체 정보" +msgstr "객체 정보" msgid "Dimensions" msgstr "치수" @@ -4149,7 +4149,7 @@ msgid "Temperature (°C)" msgstr "온도 (°C)" msgid "Volumetric flow rate (mm³/s)" -msgstr "체적 유량 (mm³/s)" +msgstr "압출 유량 (mm³/s)" msgid "Travel" msgstr "이동" @@ -4275,7 +4275,7 @@ msgid "Sequence" msgstr "순서" msgid "Mirror Object" -msgstr "개체 반전" +msgstr "객체 반전" msgid "Tool Move" msgstr "툴 이동" @@ -4284,7 +4284,7 @@ msgid "Tool Rotate" msgstr "툴 회전" msgid "Move Object" -msgstr "개체 이동" +msgstr "객체 이동" msgid "Auto Orientation options" msgstr "자동 방향 지정 옵션" @@ -4293,7 +4293,7 @@ msgid "Enable rotation" msgstr "회전 활성화" msgid "Optimize support interface area" -msgstr "지지대 접점 영역 최적화" +msgstr "서포트 접점 영역 최적화" msgid "Orient" msgstr "방향" @@ -4326,10 +4326,10 @@ msgid "Auto orient" msgstr "자동 방향 지정" msgid "Arrange all objects" -msgstr "모든 개체 정렬" +msgstr "모든 객체 정렬" msgid "Arrange objects on selected plates" -msgstr "선택한 플레이트의 개체 정렬" +msgstr "선택한 플레이트의 객체 정렬" msgid "Split to objects" msgstr "개체로 분할" @@ -4736,10 +4736,10 @@ msgid "Delete all" msgstr "모두 삭제" msgid "Deletes all objects" -msgstr "모든 개체 삭제" +msgstr "모든 객체 삭제" msgid "Clone selected" -msgstr "선택된 개체 복제" +msgstr "선택된 객체 복제" msgid "Clone copies of selections" msgstr "선택된 개체의 복사본 복제" @@ -4754,13 +4754,13 @@ msgid "Select all" msgstr "모두 선택" msgid "Selects all objects" -msgstr "모든 개체 선택" +msgstr "모든 객체 선택" msgid "Deselect all" msgstr "모든 선택 취소" msgid "Deselects all objects" -msgstr "모든 개체 선택 취소" +msgstr "모든 객체 선택 취소" msgid "Use Perspective View" msgstr "원근법 보기 사용" @@ -4790,13 +4790,13 @@ msgid "Show &Labels" msgstr "이름표 보기 (&L)" msgid "Show object labels in 3D scene" -msgstr "3D 화면에 개체 이름표 표시" +msgstr "3D 화면에 객체 이름표 표시" msgid "Show &Overhang" msgstr "돌출부 보기 (&O)" msgid "Show object overhang highlight in 3D scene" -msgstr "3D 장면에서 개체 오버행 하이라이트 표시" +msgstr "3D 장면에서 객체 돌출부 하이라이트 표시" msgid "Show Selected Outline (beta)" msgstr "선택된 개요 표시(실험적)" @@ -5029,7 +5029,7 @@ msgid "The printer has been logged out and cannot connect." msgstr "프린터가 로그아웃되어 연결할 수 없습니다." msgid "Video Stopped." -msgstr "" +msgstr "비디오가 중지되었습니다." msgid "LAN Connection Failed (Failed to start liveview)" msgstr "LAN 연결 실패(라이브뷰 시작 실패)" @@ -5582,23 +5582,26 @@ msgid "Not for now" msgstr "건너뛰기" msgid "Server Exception" -msgstr "" +msgstr "서버 예외" msgid "" "The server is unable to respond. Please click the link below to check the " "server status." msgstr "" +"서버가 응답할 수 없습니다. 아래 링크를 클릭하여 서버 상태를 확인하세요." msgid "" "If the server is in a fault state, you can temporarily use offline printing " "or local network printing." msgstr "" +"서버가 장애 상태인 경우 오프라인 출력 또는 로컬 네트워크 출력를 일시적으로 사" +"용할 수 있습니다." msgid "How to use LAN only mode" -msgstr "" +msgstr "LAN 전용 모드 사용 방법" msgid "Don't show this dialog again" -msgstr "" +msgstr "이 대화 상자를 다시 표시하지 마세요." msgid "3D Mouse disconnected." msgstr "3D 마우스가 분리됨." @@ -5651,7 +5654,7 @@ msgstr "하드웨어를 안전하게 제거합니다." #, c-format, boost-format msgid "%1$d Object has custom supports." msgid_plural "%1$d Objects have custom supports." -msgstr[0] "%1$d 개체에 사용자 정의 지지대가 있습니다." +msgstr[0] "%1$d 개체에 사용자 정의 서포트가 있습니다." #, c-format, boost-format msgid "%1$d Object has color painting." @@ -5703,13 +5706,13 @@ msgid "WARNING:" msgstr "경고:" msgid "Your model needs support ! Please make support material enable." -msgstr "모델에 지지대가 필요합니다! 지지대를 활성화하세요." +msgstr "모델에 서포트가 필요합니다! 서포트를 활성화하세요." msgid "Gcode path overlap" msgstr "G코드 경로 겹침" msgid "Support painting" -msgstr "지지대 칠하기" +msgstr "서포트 칠하기" msgid "Color painting" msgstr "색 칠하기" @@ -5806,7 +5809,7 @@ msgid "Global" msgstr "전역" msgid "Objects" -msgstr "개체" +msgstr "객체" msgid "Advance" msgstr "전문가 모드" @@ -5815,7 +5818,7 @@ msgid "Compare presets" msgstr "사전 설정 비교" msgid "View all object's settings" -msgstr "모든 개체 설정 보기" +msgstr "모든 객체 설정 보기" msgid "Material settings" msgstr "재료 설정" @@ -5824,10 +5827,10 @@ msgid "Remove current plate (if not last one)" msgstr "현재 플레이트 제거(마지막 플레이트가 아닌 경우)" msgid "Auto orient objects on current plate" -msgstr "현재 플레이트의 개체 자동 방향 지정" +msgstr "현재 플레이트의 객체 자동 방향 지정" msgid "Arrange objects on current plate" -msgstr "현재 플레이트의 개체 정렬" +msgstr "현재 플레이트의 객체 정렬" msgid "Unlock current plate" msgstr "현재 플레이트 잠금 해제" @@ -5897,7 +5900,7 @@ msgid "Set filaments to use" msgstr "사용할 필라멘트 설정" msgid "Search plate, object and part." -msgstr "플레이트, 개체 및 부품을 검색합니다." +msgstr "플레이트, 객체 및 부품을 검색합니다." msgid "Pellets" msgstr "펠릿" @@ -6094,7 +6097,7 @@ msgstr "" "파일을 여러 부품이 있는 단일 개체로 로드하시겠습니까?" msgid "Multi-part object detected" -msgstr "여러 부품으로 구성된 개체 감지됨" +msgstr "여러 부품으로 구성된 객체 감지됨" msgid "Load these files as a single object with multiple parts?\n" msgstr "이 파일을 여러 부품이 있는 단일 개체로 로드하시겠습니까?\n" @@ -6137,7 +6140,7 @@ msgid "Confirm Save As" msgstr "다른 이름으로 저장 확인" msgid "Delete object which is a part of cut object" -msgstr "잘라낸 개체의 일부인 개체 삭제" +msgstr "잘라낸 개체의 일부인 객체 삭제" msgid "" "You try to delete an object which is a part of a cut object.\n" @@ -6307,7 +6310,7 @@ msgstr "형상만 가져오기" msgid "" "This option can be changed later in preferences, under 'Load Behaviour'." -msgstr "" +msgstr "이 옵션은 나중에 환경설정에서 '로드 동작'에서 변경할 수 있습니다." msgid "Only one G-code file can be opened at the same time." msgstr "동시에 하나의 G코드 파일만 열 수 있습니다." @@ -6417,7 +6420,7 @@ msgid "Send to printer" msgstr "프린터로 전송" msgid "Custom supports and color painting were removed before repairing." -msgstr "수리 전 사용자 정의 지지대와 컬러 페인트가 제거되었습니다." +msgstr "수리 전 사용자 정의 서포트와 컬러 페인트가 제거되었습니다." msgid "Optimize Rotation" msgstr "회전 최적화" @@ -6434,7 +6437,7 @@ msgstr "현재 선택된 부품 수: %1%\n" #, boost-format msgid "Number of currently selected objects: %1%\n" -msgstr "현재 선택된 개체 수: %1%\n" +msgstr "현재 선택된 객체 수: %1%\n" #, boost-format msgid "Part name: %1%\n" @@ -6442,7 +6445,7 @@ msgstr "부품 이름: %1%\n" #, boost-format msgid "Object name: %1%\n" -msgstr "개체 이름: %1%\n" +msgstr "객체 이름: %1%\n" #, boost-format msgid "Size: %1% x %2% x %3% in\n" @@ -6740,22 +6743,22 @@ msgid "Associate URLs to OrcaSlicer" msgstr "OrcaSlicer에 URL 연결" msgid "Load All" -msgstr "" +msgstr "모두 로드" msgid "Ask When Relevant" -msgstr "" +msgstr "관련성 있는 경우 질문" msgid "Always Ask" -msgstr "" +msgstr "항상 물어보세요" msgid "Load Geometry Only" -msgstr "" +msgstr "형상만 로드" msgid "Load Behaviour" -msgstr "" +msgstr "행동 로드" msgid "Should printer/filament/process settings be loaded when opening a .3mf?" -msgstr "" +msgstr ".3mf를 열 때 프린터/필라멘트/프로세스 설정이 로드되어야 합니까?" msgid "Maximum recent projects" msgstr "최근 프로젝트 최대 표시" @@ -7310,7 +7313,7 @@ msgid "Bind with Pin Code" msgstr "핀 코드로 바인딩" msgid "Bind with Access Code" -msgstr "" +msgstr "액세스 코드로 바인딩" msgid "Send to Printer SD card" msgstr "프린터 SD 카드로 보내기" @@ -7507,7 +7510,7 @@ msgid "" "support volume but weaker strength.\n" "We recommend using it with: 0 interface layers, 0 top distance, 2 walls." msgstr "" -"지지대 부피는 작지만 강도는 약한 것이 특징인 실험적 모양 \"얇은 나무\"를 추가" +"서포트 부피는 작지만 강도는 약한 것이 특징인 실험적 모양 \"얇은 나무\"를 추가" "했습니다.\n" "접점 레이어 0, 상단 Z 거리 0, 벽 루프 2 와 함께 사용하는 것이 좋습니다." @@ -7526,7 +7529,7 @@ msgid "" "using support materials on interface." msgstr "" "\"강한 나무\" 및 \"혼합 나무\" 모양의 경우 최소 접점 레이어 2, 상단 Z 거리 " -"0.1 또는 접점에서 지지대 재료를 사용하는 설정을 권장합니다." +"0.1 또는 접점에서 서포트 재료를 사용하는 설정을 권장합니다." msgid "" "When using support material for the support interface, We recommend the " @@ -7534,8 +7537,8 @@ msgid "" "0 top z distance, 0 interface spacing, concentric pattern and disable " "independent support layer height" msgstr "" -"지지대 접점에 지지대 재료를 사용하는 경우 다음 설정을 권장합니다:\n" -"상단 Z 거리 0, 접점 간격 0, 접점 패턴 동심원 및 독립적 지지대 높이 비활성화" +"서포트 접점에 서포트 재료를 사용하는 경우 다음 설정을 권장합니다:\n" +"상단 Z 거리 0, 접점 간격 0, 접점 패턴 동심원 및 독립적 서포트 높이 비활성화" msgid "" "Enabling this option will modify the model's shape. If your print requires " @@ -7596,8 +7599,8 @@ 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" @@ -7608,70 +7611,74 @@ msgid "" "A copy of the current system preset will be created, which will be detached " "from the system preset." msgstr "" +"현재 시스템 프리셋의 복사본이 생성되며, 이 복사본은 시스템 프리셋에서 분리됩" +"니다." msgid "" "The current custom preset will be detached from the parent system preset." -msgstr "" +msgstr "현재 사용자 지정 프리셋이 상위 시스템 프리셋에서 분리됩니다." msgid "Modifications to the current profile will be saved." -msgstr "" +msgstr "현재 프로필에 대한 수정 사항이 저장됩니다." msgid "" "This action is not revertible.\n" "Do you want to proceed?" msgstr "" +"이 작업은 되돌릴 수 없습니다.\n" +"계속 진행하시겠습니까?" msgid "Detach preset" -msgstr "" +msgstr "프리셋 분리" msgid "This is a default preset." -msgstr "" +msgstr "기본 프리셋 입니다." msgid "This is a system preset." -msgstr "" +msgstr "시스템 프리셋 입니다." msgid "Current preset is inherited from the default preset." -msgstr "" +msgstr "현재 프리셋은 기본 프리셋에서 상속됩니다." msgid "Current preset is inherited from" -msgstr "" +msgstr "현재 프리셋은 다음에서 상속됩니다." msgid "It can't be deleted or modified." -msgstr "" +msgstr "삭제하거나 수정할 수 없습니다." msgid "" "Any modifications should be saved as a new preset inherited from this one." -msgstr "" +msgstr "모든 수정 사항은 이 프리셋에서 상속된 새 프리셋으로 저장해야 합니다." msgid "To do that please specify a new name for the preset." -msgstr "" +msgstr "이렇게 하려면 프리셋의 새 이름을 지정하세요." msgid "Additional information:" -msgstr "" +msgstr "추가 정보:" msgid "vendor" -msgstr "" +msgstr "공급업체" msgid "printer model" -msgstr "" +msgstr "프린터 모델" msgid "default print profile" -msgstr "" +msgstr "기본 출력 프로필" msgid "default filament profile" -msgstr "" +msgstr "기본 필라멘트 프로필" msgid "default SLA material profile" -msgstr "" +msgstr "기본 SLA 재료 프로필" msgid "default SLA print profile" -msgstr "" +msgstr "기본 SLA 출력 프로필" msgid "full profile name" -msgstr "" +msgstr "전체 프로필 이름" msgid "symbolic profile name" -msgstr "" +msgstr "기호 프로필 이름" msgid "Line width" msgstr "선 너비" @@ -7736,10 +7743,10 @@ msgid "Raft" msgstr "라프트" msgid "Support filament" -msgstr "지지대 필라멘트" +msgstr "서포트 필라멘트" msgid "Tree supports" -msgstr "나무 지지대" +msgstr "트리 서포트" msgid "Multimaterial" msgstr "다중 재료" @@ -7751,7 +7758,7 @@ msgid "Filament for Features" msgstr "기능용 필라멘트" msgid "Ooze prevention" -msgstr "유출 방지" +msgstr "흘러내림 방지" msgid "Skirt" msgstr "스커트" @@ -7819,12 +7826,14 @@ msgid "Nozzle temperature when printing" msgstr "출력 시 노즐 온도" msgid "Cool Plate (SuperTack)" -msgstr "" +msgstr "쿨 플레이트(슈퍼택)" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " "does not support to print on the Cool Plate SuperTack" msgstr "" +"냉각판 설치 시 베드 온도. 값 0은 필라멘트가 쿨 플레이트(슈퍼택)에 출력할 수 " +"없음을 의미합니다." msgid "Cool Plate" msgstr "쿨 플레이트" @@ -7878,7 +7887,7 @@ msgstr "" "레이트에 출력하는 것을 지원하지 않음을 의미합니다" msgid "Volumetric speed limitation" -msgstr "체적 속도 제한" +msgstr "압출 속도 제한" msgid "Cooling" msgstr "냉각" @@ -7936,16 +7945,16 @@ msgid "Toolchange parameters with single extruder MM printers" msgstr "다중 재료 프린터의 단일 압출기 툴 체인지 매개변수" msgid "Ramming settings" -msgstr "래밍 설정" +msgstr "채워넣기 설정" msgid "Toolchange parameters with multi extruder MM printers" msgstr "다중 재료 프린터의 다중 압출기 툴 체인지 매개변수" msgid "Dependencies" -msgstr "" +msgstr "종속성" msgid "Profile dependencies" -msgstr "" +msgstr "프로필 종속성" msgid "Printable space" msgstr "출력 가능 공간" @@ -7983,7 +7992,7 @@ msgid "Machine end G-code" msgstr "장치 종료 G코드" msgid "Printing by object G-code" -msgstr "개체 G코드로 출력" +msgstr "객체 G코드로 출력" msgid "Before layer change G-code" msgstr "레이어 변경 전 G코드" @@ -8057,7 +8066,7 @@ msgid "Layer height limits" msgstr "레이어 높이 한도" msgid "Z-Hop" -msgstr "" +msgstr "Z올리기" msgid "Retraction when switching material" msgstr "재료 전환 시 후퇴" @@ -8409,7 +8418,7 @@ msgstr "" " 현재 압출기는 16개를 초과합니다." msgid "Ramming customization" -msgstr "래밍 사용자 정의" +msgstr "채워넣기 사용자 정의" msgid "" "Ramming denotes the rapid extrusion just before a tool change in a single-" @@ -8422,29 +8431,29 @@ msgid "" "This is an expert-level setting, incorrect adjustment will likely lead to " "jams, extruder wheel grinding into filament etc." msgstr "" -"래밍은 단일 압출기 다중 재료 프린터에서 툴 체인지 직전의 급속 압출을 의미합니" -"다. 필라멘트를 뺄때 끝 모양을 적절하게 형성하여 새 필라멘트의 삽입을 방해하" -"지 않고 나중에 다시 삽입할 수 있도록 하는 것입니다. 이 단계는 중요하며, 좋은 " -"모양을 얻으려면 재료마다 다른 압출 속도가 필요할 수 있습니다. 이러한 이유로 " -"래밍 중 압출 속도는 조정 가능합니다.\n" +"채워넣기는 단일 압출기 다중 재료 프린터에서 툴 체인지 직전의 급속 압출을 의미" +"합니다. 필라멘트를 뺄때 끝 모양을 적절하게 형성하여 새 필라멘트의 삽입을 방해" +"하지 않고 나중에 다시 삽입할 수 있도록 하는 것입니다. 이 단계는 중요하며, 좋" +"은 모양을 얻으려면 재료마다 다른 압출 속도가 필요할 수 있습니다. 이러한 이유" +"로 채우기 중 압출 속도는 조정 가능합니다.\n" "\n" "이는 전문가 수준 설정이므로 잘못 조정하면 막힘, 필라멘트 갈림 등이 발생할 수 " "있습니다." msgid "Total ramming time" -msgstr "총 래밍 시간" +msgstr "총 채워넣기 시간" msgid "s" msgstr "초" msgid "Total rammed volume" -msgstr "총 래밍 부피" +msgstr "총 채워넣은 부피" msgid "Ramming line width" -msgstr "래밍 선 너비" +msgstr "채워넣기 선 너비" msgid "Ramming line spacing" -msgstr "래밍 선 간격" +msgstr "채워넣기 선 간격" msgid "Auto-Calc" msgstr "자동 계산" @@ -8544,10 +8553,10 @@ msgid "Configuration package changed" msgstr "구성 패키지가 변경됨" msgid "Toolbar" -msgstr "도구 상자" +msgstr "도구 모음" msgid "Objects list" -msgstr "개체 목록" +msgstr "객체 목록" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "STL/STEP/3MF/OBJ/AMF 파일에서 형상 데이터 가져오기" @@ -8596,7 +8605,7 @@ msgid "" "objects, it just orientates the selected ones.Otherwise, it will orientates " "all objects in the current disk." msgstr "" -"선택한 개체 또는 모든 개체의 방향을 자동으로 지정합니다.선택한 개체가 있는 경" +"선택한 객체 또는 모든 개체의 방향을 자동으로 지정합니다.선택한 개체가 있는 경" "우 선택한 개체의 방향만 지정합니다.그렇지 않으면 현재 디스크에 있는 모든 개체" "의 방향이 지정됩니다." @@ -8622,7 +8631,7 @@ msgid "⌘+Left mouse button" msgstr "⌘+마우스 왼쪽 버튼" msgid "Select multiple objects" -msgstr "여러 개체 선택" +msgstr "여러 객체 선택" msgid "Ctrl+Any arrow" msgstr "Ctrl+화살표" @@ -8637,7 +8646,7 @@ msgid "Shift+Left mouse button" msgstr "Shift+마우스 왼쪽 버튼" msgid "Select objects by rectangle" -msgstr "사각형으로 개체 선택" +msgstr "사각형으로 객체 선택" msgid "Arrow Up" msgstr "화살표 위로" @@ -8670,7 +8679,7 @@ msgid "Movement step set to 1 mm" msgstr "1mm로 이동" msgid "keyboard 1-9: set filament for object/part" -msgstr "키보드 1-9: 개체/부품에 필라멘트 할당" +msgstr "키보드 1-9: 객체/부품에 필라멘트 할당" msgid "Camera view - Default" msgstr "카메라 시점 - 기본" @@ -8694,7 +8703,7 @@ msgid "Camera Angle - Right side" msgstr "카메라 각도 - 우측" msgid "Select all objects" -msgstr "모든 개체 선택" +msgstr "모든 객체 선택" msgid "Gizmo move" msgstr "도구 상자 이동" @@ -8712,13 +8721,13 @@ msgid "Gizmo Place face on bed" msgstr "도구 상자 바닥면 선택" msgid "Gizmo SLA support points" -msgstr "도구 상자 지지대 칠하기" +msgstr "도구 상자 서포트 칠하기" msgid "Gizmo FDM paint-on seam" msgstr "도구 상자 솔기 칠하기" msgid "Gizmo Text emboss / engrave" -msgstr "기즈모 텍스트 엠보싱/인그레이빙" +msgstr "도구상자 - 텍스트 엠보싱/인그레이빙" msgid "Zoom in" msgstr "확대" @@ -8739,13 +8748,13 @@ msgid "⌘+Mouse wheel" msgstr "⌘+마우스 휠" msgid "Support/Color Painting: adjust pen radius" -msgstr "지지대/색상 칠하기: 펜 반경 조정" +msgstr "서포트/색상 칠하기: 펜 반경 조정" msgid "⌥+Mouse wheel" msgstr "⌥+마우스 휠" msgid "Support/Color Painting: adjust section position" -msgstr "지지대/색상 칠하기: 단면 위치 조정" +msgstr "서포트/색상 칠하기: 단면 위치 조정" msgid "Ctrl+Mouse wheel" msgstr "Ctrl+마우스 휠" @@ -8757,22 +8766,22 @@ msgid "Gizmo" msgstr "도구 상자" msgid "Set extruder number for the objects and parts" -msgstr "개체 및 부품에 대한 압출기 번호 설정" +msgstr "객체 및 부품에 대한 압출기 번호 설정" msgid "Delete objects, parts, modifiers " -msgstr "개체, 부품, 수정자 삭제 " +msgstr "객체, 부품, 수정자 삭제 " msgid "Select the object/part and press space to change the name" -msgstr "개체/부품을 선택하고 스페이스바를 눌러 이름을 변경합니다" +msgstr "객체/부품을 선택하고 스페이스바를 눌러 이름을 변경합니다" msgid "Mouse click" msgstr "마우스 클릭" msgid "Select the object/part and mouse click to change the name" -msgstr "개체/부품을 선택하고 마우스를 클릭하여 이름을 변경합니다" +msgstr "객체/부품을 선택하고 마우스를 클릭하여 이름을 변경합니다" msgid "Objects List" -msgstr "개체 목록" +msgstr "객체 목록" msgid "Vertical slider - Move active thumb Up" msgstr "수직 슬라이더 - 활성 레이어 위로 이동" @@ -8873,21 +8882,24 @@ msgid "Confirm and Update Nozzle" msgstr "노즐 확인 및 업데이트" msgid "Connect the printer using IP and access code" -msgstr "" +msgstr "IP 및 액세스 코드를 사용하여 프린터 연결" msgid "" "Step 1. Please confirm Orca Slicer and your printer are in the same LAN." -msgstr "" +msgstr "1단계. 오르카 슬라이서와 프린터가 동일한 LAN에 있는지 확인하세요." 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 3. Please obtain the device SN from the printer side; it is usually " "found in the device information on the printer screen." msgstr "" +"3단계. 프린터 측에서 장치 SN을 받으세요. 일반적으로 프린터 화면의 장치 정보에" +"서 찾을 수 있습니다." msgid "IP" msgstr "IP" @@ -8896,37 +8908,37 @@ msgid "Access Code" msgstr "액세스 코드" msgid "Printer model" -msgstr "" +msgstr "프린터 모델" msgid "Printer name" -msgstr "" +msgstr "프린터 이름" msgid "Where to find your printer's IP and Access Code?" msgstr "프린터의 IP 및 액세스 코드는 어디에서 찾을 수 있습니까?" msgid "Connect" -msgstr "" +msgstr "연결" msgid "Manual Setup" -msgstr "" +msgstr "수동 설정" msgid "connecting..." -msgstr "" +msgstr "연결중..." msgid "Failed to connect to printer." -msgstr "" +msgstr "프린터에 연결하지 못했습니다." msgid "Failed to publish login request." -msgstr "" +msgstr "로그인 요청을 게시하지 못했습니다." msgid "The printer has already been bound." -msgstr "" +msgstr "프린터가 이미 바인딩되었습니다." msgid "The printer mode is incorrect, please switch to LAN Only." -msgstr "" +msgstr "프린터 모드가 올바르지 않습니다. LAN 전용으로 전환하세요." msgid "Connecting to printer... The dialog will close later" -msgstr "" +msgstr "프린터에 연결 중... 대화 상자가 나중에 닫힙니다." msgid "Connection failed, please double check IP and Access Code" msgstr "연결에 실패했습니다. IP와 액세스 코드를 다시 확인하세요" @@ -9003,19 +9015,19 @@ msgid "Failed to initialize the WinRT library." msgstr "WinRT 라이브러리를 초기화하지 못했습니다." msgid "Exporting objects" -msgstr "개체 내보내는 중" +msgstr "객체 내보내는 중" msgid "Failed loading objects." msgstr "개체를 로드하지 못했습니다." msgid "Repairing object by Windows service" -msgstr "Windows 서비스로 개체 수리 중" +msgstr "Windows 서비스로 객체 수리 중" msgid "Repair failed." msgstr "수리에 실패하였습니다." msgid "Loading repaired objects" -msgstr "수리된 개체 로드" +msgstr "수리된 객체 로드" msgid "Exporting 3mf file failed" msgstr "3mf 파일 내보내기 실패" @@ -9061,8 +9073,8 @@ 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%." @@ -9070,7 +9082,7 @@ msgstr "%1%에서 %2% 사이의 빈 레이어에 대해 개체를 출력할 수 #, boost-format msgid "Object: %1%" -msgstr "개체: %1%" +msgstr "객체: %1%" msgid "" "Maybe parts of the object at these height are too thin, or the object has " @@ -9129,10 +9141,10 @@ msgid "Gap infill" msgstr "간격 채우기" msgid "Support interface" -msgstr "지지대 접점" +msgstr "서포트 접점" msgid "Support transition" -msgstr "지지대 전환" +msgstr "서포트 전환" msgid "Multiple" msgstr "다수" @@ -9159,7 +9171,7 @@ msgid "file too large" msgstr "파일이 너무 큽니다" msgid "unsupported method" -msgstr "지지대 재료 없는 방식" +msgstr "지원되지 않는 방법" msgid "unsupported encryption" msgstr "지원되지 않는 암호화" @@ -9320,7 +9332,7 @@ msgid "" "While the object %1% itself fits the build volume, its last layer exceeds " "the maximum build volume height." msgstr "" -"%1% 개체 자체가 빌드 부피에 맞지만 마지막 레이어가 최대 빌드 부피 높이를 초과" +"%1% 객체 자체가 빌드 부피에 맞지만 마지막 레이어가 최대 빌드 부피 높이를 초과" "합니다." msgid "" @@ -9330,7 +9342,7 @@ msgstr "" "모델 크기를 줄이거나 현재 출력 설정을 변경하고 다시 시도할 수 있습니다." msgid "Variable layer height is not supported with Organic supports." -msgstr "유기체 지지대에서는 가변 레이어 높이가 지원되지 않습니다." +msgstr "유기체 서포트에서는 가변 레이어 높이가 지원되지 않습니다." msgid "" "Different nozzle diameters and different filament diameters may not work " @@ -9351,8 +9363,8 @@ msgid "" "Ooze prevention is only supported with the wipe tower when " "'single_extruder_multi_material' is off." msgstr "" -"유출 방지는 'single_extruder_multi_material'이 꺼져 있을 때만 와이프 타워에" -"서 지원됩니다." +"흘러내림 방지는 'single_extruder_multi_material'이 꺼져 있을 때만 와이프 타워" +"에서 지원됩니다." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -9372,7 +9384,7 @@ 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 "프라임 타워는 모든 개체의 레이어 높이가 동일해야 합니다" @@ -9402,29 +9414,29 @@ msgstr "선 너비가 너무 큽니다" msgid "" "The prime tower requires that support has the same layer height with object." -msgstr "프라임 타워는 지지대가 개체와 동일한 레이어 높이를 갖도록 요구합니다." +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 "" -"유기체 지지대 가지 직경은 지지대 재료 압출 너비의 2배보다 작아서는 안 됩니다." +"유기체 서포트 가지 직경은 서포트 재료 압출 너비의 2배보다 작아서는 안 됩니다." msgid "" "Organic support branch diameter must not be smaller than support tree tip " "diameter." -msgstr "유기체 지지대 가지 직경은 지지대 나무 끝 직경보다 작을 수 없습니다." +msgstr "유기체 서포트 가지 직경은 서포트 나무 끝 직경보다 작을 수 없습니다." msgid "" "Support enforcers are used but support is not enabled. Please enable support." msgstr "" -"지지대 강제기가 사용되지만 지지대가 활성화되지 않습니다. 지지대를 활성화하세" +"서포트 강제기가 사용되지만 서포트가 활성화되지 않습니다. 서포트를 활성화하세" "요." msgid "Layer height cannot exceed nozzle diameter" @@ -9744,6 +9756,8 @@ msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Cool Plate SuperTack" msgstr "" +"초기 레이어의 베드 온도입니다. 값 0은 필라멘트가 쿨 플레이트(슈퍼택)에 출력" +"할 수 없음을 의미합니다." msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " @@ -9899,7 +9913,7 @@ msgid "Nowhere" msgstr "아무데도" msgid "Force cooling for overhangs and bridges" -msgstr "" +msgstr "돌출부 및 브릿지에 대한 강제 냉각" msgid "" "Enable this option to allow adjustment of the part cooling fan speed for " @@ -9907,9 +9921,12 @@ msgid "" "speed specifically for these features can improve overall print quality and " "reduce warping." msgstr "" +"이 옵션을 활성화하면 돌출부, 내부 및 외부 브릿지에 대한 부품 냉각 팬 속도를 " +"조정할 수 있습니다. 이러한 기능에 맞게 팬 속도를 설정하면 전반적인 출력 품질" +"을 개선하고 뒤틀림을 줄일 수 있습니다." msgid "Overhangs and external bridges fan speed" -msgstr "" +msgstr "돌출부 및 외부 브릿지 팬 속도" msgid "" "Use this part cooling fan speed when printing bridges or overhang walls with " @@ -9922,9 +9939,17 @@ msgid "" "speed threshold set above. It is also adjusted upwards up to the maximum fan " "speed threshold when the minimum layer time threshold is not met." msgstr "" +"돌출부 임계값이 위의 '돌출부 냉각 임계값' 파라미터에 설정된 값을 초과하는 브" +"릿지 또는 돌출부 벽을 출력할 때 이 부품 냉각 팬 속도를 사용합니다. 돌출부 및 " +"브릿지에 대한 냉각을 강화하면 이러한 기능의 전반적인 출력 품질이 향상될 수 있" +"습니다.\n" +"\n" +"이 팬 속도는 위에 설정된 최소 팬 속도 임계값에 의해 하단에 고정된다는 점에 유" +"의하세요. 또한 최소 레이어 시간 임계값이 충족되지 않으면 최대 팬 속도 임계값" +"까지 상향 조정됩니다." msgid "Overhang cooling activation threshold" -msgstr "" +msgstr "돌출부 냉각 활성화 임계값" #, no-c-format, no-boost-format msgid "" @@ -9934,9 +9959,13 @@ msgid "" "by the layer beneath it. Setting this value to 0% forces the cooling fan to " "run for all outer walls, regardless of the overhang degree." msgstr "" +"돌출부가 이 지정된 임계값을 초과하면 아래에 설정된 '돌출부 팬 속도'로 냉각 팬" +"이 강제로 작동합니다. 이 임계값은 백분율로 표시되며, 각 선 너비에서 그 아래 " +"레이어가 지원하지 않는 부분을 나타냅니다. 이 값을 0%로 설정하면 돌출 정도에 " +"관계없이 모든 외벽에 대해 냉각 팬이 강제로 작동합니다." msgid "External bridge infill direction" -msgstr "" +msgstr "외부 브릿지 채우기 방향" #, no-c-format, no-boost-format msgid "" @@ -9949,7 +9978,7 @@ msgstr "" "용합니다." msgid "Internal bridge infill direction" -msgstr "" +msgstr "내부 브릿지 채우기 방향" msgid "" "Internal bridging angle override. If left to zero, the bridging angle will " @@ -9959,9 +9988,14 @@ msgid "" "It is recommended to leave it at 0 unless there is a specific model need not " "to." msgstr "" +"내부 브리징 각도 오버라이드. 0으로 두면 브리징 각도가 자동으로 계산됩니다. 그" +"렇지 않으면 제공된 각도가 내부 브릿지에 사용됩니다. 0 각도는 180°를 사용합니" +"다.\n" +"\n" +"특정 모델이 필요하지 않는 한 0으로 두는 것이 좋습니다." msgid "External bridge density" -msgstr "" +msgstr "외부 브지 밀도" msgid "" "Controls the density (spacing) of external bridge lines. 100% means solid " @@ -9971,9 +10005,14 @@ msgid "" "space for air to circulate around the extruded bridge, improving its cooling " "speed." msgstr "" +"외부 브릿지 라인의 밀도(간격)를 제어합니다. 100%는 솔리드 브릿지를 의미합니" +"다. 기본값은 100%입니다.\n" +"\n" +"밀도가 낮은 외부 브릿지는 돌출된 브릿지 주변에 공기가 순환할 수 있는 공간이 " +"더 많아져 냉각 속도가 향상되므로 안정성을 개선하는 데 도움이 될 수 있습니다." msgid "Internal bridge density" -msgstr "" +msgstr "내부 브릿지 밀도" msgid "" "Controls the density (spacing) of internal bridge lines. 100% means solid " @@ -9987,6 +10026,15 @@ msgid "" "bridge over infill option, further improving internal bridging structure " "before solid infill is extruded." msgstr "" +"내부 브릿지 라인의 밀도(간격)를 제어합니다. 100%는 솔리드 브릿지를 의미합니" +"다. 기본값은 100%입니다.\n" +"\n" +" 내부 브릿지의 밀도가 낮으면 돌출된 브릿지 주변에 공기가 순환할 수 있는 공간" +"이 더 많아져 냉각 속도가 향상되므로 상단 표면 필링을 줄이고 내부 브릿지 안정" +"성을 개선하는 데 도움이 됩니다.\n" +"\n" +"이 옵션은 특히 두 번째 내부 브릿지 오버 인필 옵션과 함께 사용하면 솔리드 인필" +"이 압출되기 전에 내부 브릿지 구조를 더욱 개선할 수 있습니다." msgid "Bridge flow ratio" msgstr "브릿지 유량 비율" @@ -10127,7 +10175,7 @@ msgid "" "This setting can also help reduce part warping due to the reduction of " "stresses in the part walls." msgstr "" -"짝수 레이어에서 반대 방향으로 오버행 위에 부분이 있는 둘레를 돌출시킵니다. 이" +"짝수 레이어에서 반대 방향으로 돌출부 위에 부분이 있는 둘레를 돌출시킵니다. 이" "러한 교대 패턴은 가파른 오버행을 대폭 개선할 수 있습니다.\n" "\n" "이 설정은 부품 벽의 응력 감소로 인한 부품 뒤틀림을 줄이는 데도 도움이 될 수 " @@ -10155,7 +10203,7 @@ msgstr "" "이 설정을 사용하면 부품 응력이 이제 교대로 분산되므로 부품 응력이 크게 줄어듭" "니다. 이렇게 하면 부품 뒤틀림이 줄어들면서 외부 벽 품질도 유지됩니다. 이 기능" "은 ABS/ASA와 같이 뒤틀리기 쉬운 소재와 TPU 및 Silk PLA와 같은 탄성 필라멘트" -"에 매우 유용할 수 있습니다. 또한 지지대 위에 떠 있는 영역의 뒤틀림을 줄이는 " +"에 매우 유용할 수 있습니다. 또한 서포트 위에 떠 있는 영역의 뒤틀림을 줄이는 " "데 도움이 될 수 있습니다.\n" "\n" "이 설정이 가장 효과적이려면 모든 내부 벽이 돌출 정도에 관계없이 균일한 레이어" @@ -10171,7 +10219,7 @@ msgid "" "2. Partially Bridged: Only a part of the unsupported area will be bridged.\n" "3. Sacrificial Layer: A full sacrificial bridge layer is created." msgstr "" -"이 옵션은 카운터보어 구멍에 대한 브릿지를 생성하여 지지대 없이 출력할 수 있도" +"이 옵션은 카운터보어 구멍에 대한 브릿지를 생성하여 서포트 없이 출력할 수 있도" "록 합니다. 사용 가능한 모드는 다음과 같습니다.\n" "1. 없음: 브릿지가 생성되지 않습니다.\n" "2. 부분적으로 브릿지됨: 지원되지 않는 영역의 일부만 브릿지됩니다.\n" @@ -10268,8 +10316,8 @@ msgid "" msgstr "" "외부에서 볼 수 있는 브릿지 돌출 속도입니다. \n" "\n" -"또한, 구부러진 둘레에 대한 속도 저하가 비활성화되거나 클래식 오버행 모드가 활" -"성화된 경우 브릿지의 일부이든 오버행이든 상관없이 오버행 벽의 출력 속도는 " +"또한, 구부러진 둘레에 대한 속도 저하가 비활성화되거나 클래식 돌출부 모드가 활" +"성화된 경우 브릿지의 일부이든 오버행이든 상관없이 돌출부 벽의 출력 속도는 " "13% 미만으로 지원됩니다." msgid "mm/s" @@ -10302,16 +10350,16 @@ msgstr "" "자동으로 분석 및 계산됨을 의미합니다." msgid "Painted" -msgstr "" +msgstr "칠해짐" msgid "Brim-object gap" -msgstr "브림-개체 간격" +msgstr "브림-객체 간격" msgid "" "A gap between innermost brim line and object can make brim be removed more " "easily" msgstr "" -"가장 안쪽 브림 라인과 개체 사이에 간격을 주어 쉽게 브림을 제거 할 수 있게 합" +"가장 안쪽 브림 라인과 객체 사이에 간격을 주어 쉽게 브림을 제거 할 수 있게 합" "니다" msgid "Brim ears" @@ -10358,6 +10406,8 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" +"활성 프린터 프로필의 구성 값을 사용하는 불리언 표현식입니다. 이 표현식이 true" +"로 평가되면 이 프로필은 활성 프린터 프로필과 호환되는 것으로 간주됩니다." msgid "Compatible process profiles" msgstr "호환 프로세스 사전설정" @@ -10370,6 +10420,8 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" +"활성 출력 프로필의 구성 값을 사용하는 불리언 표현식입니다. 이 표현식이 true" +"로 평가되면 이 프로필은 활성 출력 프로필과 호환되는 것으로 간주됩니다." msgid "Print sequence, layer by layer or object by object" msgstr "출력순서, 레이어별 또는 개체별" @@ -10387,7 +10439,7 @@ msgid "Print order within a single layer" msgstr "단일 레이어 내의 출력 순서" msgid "As object list" -msgstr "개체 목록으로" +msgstr "객체 목록으로" msgid "Slow printing down for better layer cooling" msgstr "레이어 냉각 향상을 위한 감속" @@ -10455,17 +10507,17 @@ msgstr "" "팬을 정지합니다" msgid "Don't support bridges" -msgstr "브릿지에서 지지대 사용안함" +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 external bridges" -msgstr "" +msgstr "두꺼운 외부 브릿지" msgid "" "If enabled, bridges are more reliable, can bridge longer distances, but may " @@ -10489,7 +10541,7 @@ msgstr "" "을 사용합니다." msgid "Extra bridge layers (beta)" -msgstr "" +msgstr "추가 브릿지 레이어(베타)" msgid "" "This option enables the generation of an extra bridge layer over internal " @@ -10524,21 +10576,46 @@ msgid "" "4. Apply to all - generates second bridge layers for both internal and " "external-facing bridges\n" msgstr "" +"이 옵션을 사용하면 내부 및/또는 외부 브릿지 위에 추가 브릿지 레이어를 생성할 " +"수 있습니다.\n" +"\n" +"추가 브릿지 레이어는 솔리드 인필이 더 잘 지원되므로 브릿지 모양과 안정성을 개" +"선하는 데 도움이 됩니다. 이 옵션은 브릿지와 솔리드 인필 속도가 크게 달라지는 " +"고속 프린터에서 특히 유용합니다. 브릿지 레이어가 추가되면 상단 표면의 필로우" +"가 줄어들고 외부 브릿지 레이어가 주변 경계와 분리되는 현상이 줄어듭니다.\n" +"\n" +"일반적으로 슬라이스 모델에 특별한 문제가 발견되지 않는 한 최소한 '외부 브릿" +"지 전용'으로 설정하는 것이 좋습니다.\n" +"\n" +"옵션\n" +"1. 비활성화 - 두 번째 브릿지 레이어를 생성하지 않습니다. 기본값이며 호환성을 " +"위해 설정됩니다.\n" +"2. 외부 브릿지만 - 외부를 향한 브릿지에 대해서만 두 번째 브릿지 레이어를 생성" +"합니다. 설정된 둘레 수보다 짧거나 좁은 작은 다리는 두 번째 브릿지 레이어의 이" +"점이 없으므로 건너뛰게 됩니다. 두 번째 브릿지 레이어가 생성되면 첫 번째 브릿" +"지 레이어와 평행하게 돌출되어 브릿지 강도를 강화합니다.\n" +"3. 내부 브릿지 전용 - 스파스 인필 위에 있는 내부 브릿지에 대해서만 두 번째 브" +"릿지 레이어를 생성합니다. 내부 브릿지는 모델의 최상위 셸 레이어 수에 포함된다" +"는 점에 유의하세요. 두 번째 내부 브릿지 레이어는 가능한 한 첫 번째 브릿지 레" +"이어에 수직에 가깝게 돌출됩니다. 동일한 섬에 다양한 다리 각도를 가진 여러 영" +"역이 있는 경우 해당 섬의 마지막 영역이 각도 참조로 선택됩니다.\n" +"4. 모두 적용 - 내부 및 외부를 향한 브릿지 모두에 대한 두 번째 브릿지 레이어" +"를 생성합니다.\n" msgid "Disabled" msgstr "비활성" msgid "External bridge only" -msgstr "" +msgstr "외부 브릿지 전용" msgid "Internal bridge only" -msgstr "" +msgstr "내부 브릿지 전용" msgid "Apply to all" -msgstr "" +msgstr "모두 적용" msgid "Filter out small internal bridges" -msgstr "" +msgstr "작은 내부 브릿지 필터링" msgid "" "This option can help reduce pillowing on top surfaces in heavily slanted or " @@ -10569,6 +10646,29 @@ msgid "" "overhang. This option is useful for heavily slanted top surface models; " "however, in most cases, it creates too many unnecessary bridges." msgstr "" +"이 옵션을 사용하면 심하게 기울어지거나 구부러진 모델에서 상단 표면의 필링을 " +"줄일 수 있습니다.\n" +"\n" +"기본적으로 작은 내부 브릿지는 필터링되고 내부 솔리드 인필은 스파스 인필 위에 " +"직접 출력됩니다. 이 방법은 대부분의 경우 잘 작동하여 표면 품질을 크게 저하시" +"키지 않으면서 출력 속도를 높일 수 있습니다.\n" +"\n" +"그러나 경사가 심하거나 곡선형 모델, 특히 너무 낮은 스파스 인필 밀도를 사용하" +"는 경우 지원되지 않는 솔리드 인필이 말려서 필로우가 발생할 수 있습니다.\n" +"\n" +"필터링을 제한하거나 필터링을 사용하지 않도록 설정하면 약간 지원되지 않는 내" +"부 솔리드 인필 위에 내부 브릿지 레이어가 출력됩니다. 아래 옵션은 필터링의 민" +"감도, 즉 내부 브릿지가 생성되는 위치를 제어합니다.\n" +"\n" +"1. 필터 - 이 옵션을 활성화합니다. 기본 동작이며 대부분의 경우 잘 작동합니" +"다.\n" +"\n" +"2. 제한된 필터링 - 불필요한 브릿지를 피하면서 심하게 기울어진 표면에 내부 브" +"릿지를 만듭니다. 이 옵션은 대부분의 어려운 모델에 적합합니다.\n" +"\n" +"3. 필터링 없음 - 모든 잠재적인 내부 오버행에 내부 브릿지를 생성합니다. 이 옵" +"션은 경사가 심한 윗면 모델에 유용하지만, 대부분의 경우 불필요한 브릿지가 너" +"무 많이 생성됩니다." msgid "Filter" msgstr "필터" @@ -10587,8 +10687,8 @@ msgid "" "bridges to be supported, and set it to a very large value if you don't want " "any bridges to be supported." msgstr "" -"지지대가 필요하지 않은 브릿지의 최대 길이. 모든 브릿지에 지지대를 생성하려면 " -"0으로 설정하고 브릿지에 지지대를 생성하지 않으려면 매우 큰 값으로 설정합니다." +"서포트가 필요하지 않은 브릿지의 최대 길이. 모든 브릿지에 서포트를 생성하려면 " +"0으로 설정하고 브릿지에 서포트를 생성하지 않으려면 매우 큰 값으로 설정합니다." msgid "End G-code" msgstr "종료 G코드" @@ -10597,13 +10697,13 @@ msgid "End G-code when finish the whole printing" msgstr "전체 출력이 끝날때의 종료 G코드" msgid "Between Object Gcode" -msgstr "개체 사이의 G코드" +msgstr "객체 사이의 G코드" msgid "" "Insert Gcode between objects. This parameter will only come into effect when " "you print your models object by object" msgstr "" -"개체 사이에 G코드를 삽입하세요. 이 매개변수는 개체별 출력을 사용할 때만 적용" +"객체 사이에 G코드를 삽입하세요. 이 매개변수는 개체별 출력을 사용할 때만 적용" "됩니다" msgid "End G-code when finish the printing of this filament" @@ -10750,7 +10850,7 @@ msgstr "" "\n" "내부/외부/내부를 사용하면 외부 벽이 내부 경계에서 방해받지 않고 출력되므로 최" "상의 외부 표면 마감과 치수 정확도를 얻을 수 있습니다. 그러나 외부 벽을 출력" -"할 내부 경계가 없으므로 오버행 성능이 저하됩니다. 이 옵션은 세 번째 경계부터 " +"할 내부 경계가 없으므로 돌출부 성능이 저하됩니다. 이 옵션은 세 번째 경계부터 " "내부 벽을 먼저 출력한 다음 외부 경계, 마지막으로 첫 번째 내부 경계를 출력하므" "로 최소 3개 이상의 벽이 있어야 효과적입니다. 이 옵션은 대부분의 경우 외부/내" "부 옵션보다 권장됩니다.\n" @@ -10949,7 +11049,7 @@ msgstr "" "장 값 범위는 0.95에서 1.05 사이입니다. 약간의 오버플로 또는 언더플로가 있는 " "경우 이 값을 조정하여 멋진 평면을 얻을 수 있습니다. \n" "\n" -"최종 개체 흐름 비율은 이 값에 필라멘트 흐름 비율을 곱한 값입니다." +"최종 객체 흐름 비율은 이 값에 필라멘트 흐름 비율을 곱한 값입니다." msgid "Enable pressure advance" msgstr "프레셔 어드밴스 활성화" @@ -10987,15 +11087,15 @@ msgid "" "and for when tool changing.\n" "\n" msgstr "" -"출력 속도가 증가하고(노즐을 통한 체적 흐름이 증가함) 가속도가 증가함에 따라 " +"출력 속도가 증가하고(노즐을 통한 압출 흐름이 증가함) 가속도가 증가함에 따라 " "일반적으로 유효 PA 값이 감소하는 것으로 관찰되었습니다. 이는 단일 PA 값이 모" "든 기능에 대해 항상 100% 최적인 것은 아니며 일반적으로 유속과 가속도가 낮은 " "기능에 너무 많은 돌출을 일으키지 않고 더 빠른 기능에 간격을 유발하지 않는 절" "충 값이 사용된다는 것을 의미합니다.\n" "\n" -"이 기능은 출력 중인 체적 흐름 속도와 가속도에 따라 프린터 압출 시스템의 반응" +"이 기능은 출력 중인 압출 흐름 속도와 가속도에 따라 프린터 압출 시스템의 반응" "을 모델링하여 이러한 제한 사항을 해결하는 것을 목표로 합니다. 내부적으로는 주" -"어진 체적 흐름 속도 및 가속도에 대해 필요한 압력 전진을 추정할 수 있는 적합 " +"어진 압출 흐름 속도 및 가속도에 대해 필요한 압력 전진을 추정할 수 있는 적합 " "모델을 생성하며, 이는 현재 출력 조건에 따라 프린터로 방출됩니다.\n" "\n" "활성화되면 위의 압력 전진 값이 무시됩니다. 그러나 대체 수단으로 사용하거나 도" @@ -11034,7 +11134,7 @@ msgid "" "your filament profile\n" "\n" msgstr "" -"압력 전진(PA) 값 세트, 측정된 체적 유량 속도 및 가속도를 쉼표로 구분하여 추가" +"압력 전진(PA) 값 세트, 측정된 압출 유량 속도 및 가속도를 쉼표로 구분하여 추가" "합니다. 한 줄에 하나의 값 세트가 있습니다. 예를 들어\n" "0.04,3.96,3000\n" "0.033,3.96,10000\n" @@ -11047,10 +11147,10 @@ msgstr "" "으로 희박하거나 단단한 충전재)에 대해 테스트를 실행하는 것이 좋습니다. 그런 " "다음 가장 느리고 가장 빠른 출력 가속을 위해 동일한 속도로 실행하고 Klipper 입" "력 셰이퍼에서 제공하는 권장 최대 가속보다 빠르지 않게 실행하십시오.\n" -"2. 각 체적 유속 및 가속도에 대한 최적의 PA 값을 기록해 두십시오. 색상 구성표 " +"2. 각 압출 유속 및 가속도에 대한 최적의 PA 값을 기록해 두십시오. 색상 구성표 " "드롭다운에서 흐름을 선택하고 PA 패턴 라인 위로 수평 슬라이더를 이동하여 흐름 " "번호를 찾을 수 있습니다. 페이지 하단에 번호가 표시되어야 합니다. 이상적인 PA " -"값은 체적 유량이 높을수록 감소해야 합니다. 그렇지 않은 경우 압출기가 올바르" +"값은 압출 유량이 높을수록 감소해야 합니다. 그렇지 않은 경우 압출기가 올바르" "게 작동하는지 확인하십시오. 출력 속도가 느리고 가속도가 낮을수록 허용되는 PA " "값의 범위는 더 커집니다. 차이가 보이지 않으면 더 빠른 테스트의 PA 값을 사용하" "십시오.3. 여기 텍스트 상자에 PA 값, 흐름 및 가속도의 세 가지 값을 입력하고 필" @@ -11066,8 +11166,8 @@ msgid "" "before and after overhangs.\n" msgstr "" "돌출부뿐만 아니라 동일한 기능 내에서 흐름이 변경되는 경우 적응형 PA를 활성화" -"합니다. 이는 실험적인 옵션입니다. PA 프로파일이 정확하게 설정되지 않으면 오버" -"행 전후의 외부 표면에 균일성 문제가 발생할 수 있습니다.\n" +"합니다. 이는 실험적인 옵션입니다. PA 프로파일이 정확하게 설정되지 않으면 돌출" +"부 전후의 외부 표면에 균일성 문제가 발생할 수 있습니다.\n" msgid "Pressure advance for bridges" msgstr "브릿지를 위한 압력 전진" @@ -11151,14 +11251,14 @@ msgid "You can put your notes regarding the filament here." msgstr "여기에 필라멘트에 관한 메모를 할 수 있습니다." msgid "Required nozzle HRC" -msgstr "필수 노즐 록웰 경도" +msgstr "필수 노즐 HRC" msgid "" "Minimum HRC of nozzle required to print the filament. Zero means no checking " "of nozzle's HRC." msgstr "" -"필라멘트 출력에 필요한 노즐의 최소 록웰 경도. 0은 노즐의 록웰 경도를 확인하" -"지 않음을 의미합니다." +"필라멘트 출력에 필요한 노즐의 최소 HRC. 0은 노즐의 록웰 경도를 확인하지 않음" +"을 의미합니다." msgid "" "This setting stands for how much volume of filament can be melted and " @@ -11166,7 +11266,7 @@ msgid "" "case of too high and unreasonable speed setting. Can't be zero" msgstr "" "이 설정은 초당 얼마나 많은 양의 필라멘트를 녹이고 압출할 수 있는지를 나타냅니" -"다. 너무 높고 부적절한 속도 설정의 경우 출력 속도는 최대 체적 속도에 의해 제" +"다. 너무 높고 부적절한 속도 설정의 경우 출력 속도는 최대 압출 속도에 의해 제" "한됩니다. 0이 될 수 없습니다" msgid "mm³/s" @@ -11249,7 +11349,7 @@ msgstr "" "냉각 후 필라멘트가 얻게 될 수축률을 입력합니다(100mm 대신 94mm를 측정하는 경" "우 94%). 출력물은 xy 방향으로 보정됩니다. 외벽에 사용되는 필라멘트에만 적용됩" "니다.\n" -"이 보정은 확인 후 수행되므로 개체 사이에 충분한 공간을 허용해야 합니다." +"이 보정은 확인 후 수행되므로 객체 사이에 충분한 공간을 허용해야 합니다." msgid "Shrinkage (Z)" msgstr "수축(Z)" @@ -11282,15 +11382,15 @@ 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 "래밍 직후 필라멘트 끝을 빼는 데 사용되는 속도입니다." +msgstr "채워넣기 직후 필라멘트 끝을 빼는 데 사용되는 속도입니다." msgid "Delay after unloading" msgstr "빼기 후 지연" @@ -11360,16 +11460,17 @@ msgid "Cooling moves are gradually accelerating towards this speed." msgstr "냉각 동작은 이 속도를 향해 점진적으로 감속됩니다." msgid "Ramming parameters" -msgstr "래밍 매개변수" +msgstr "채워넣기 매개변수" msgid "" "This string is edited by RammingDialog and contains ramming specific " "parameters." msgstr "" -"이 문자열은 RammingDialog에 의해 편집되며 래밍 관련 매개변수를 포함합니다." +"이 문자열은 채워넣기 다이얼로그에 의해 편집되며 채워넣기 관련 매개변수를 포함" +"합니다." msgid "Enable ramming for multi-tool setups" -msgstr "다중 압출기 설정을 위한 래밍 활성화" +msgstr "다중 압출기 설정을 위한 채워넣기 활성화" msgid "" "Perform ramming when using multi-tool printer (i.e. when the 'Single " @@ -11377,22 +11478,22 @@ msgid "" "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 "Multi-tool ramming volume" -msgstr "다중 압출기 래밍 부피" +msgstr "다중 압출기 채워넣기 부피" msgid "The volume to be rammed before the toolchange." -msgstr "툴 체인지 전에 래밍 할 볼륨입니다." +msgstr "툴 체인지 전에 채워넣을 양 입니다." msgid "Multi-tool ramming flow" -msgstr "다중 압출기 래밍 유량" +msgstr "다중 압출기 채워넣기 유량" msgid "Flow used for ramming the filament before the toolchange." -msgstr "툴 체인지 전에 필라멘트를 래밍하는 데 사용되는 유량입니다." +msgstr "툴 체인지 전에 필라멘트를 채워넣기에 사용되는 유량입니다." msgid "Density" msgstr "밀도" @@ -11412,15 +11513,15 @@ msgstr "가용성 재료" msgid "" "Soluble material is commonly used to print support and support interface" msgstr "" -"가용성 재료는 일반적으로 지지대 및 지지대 접점을 출력하는 데 사용됩니다" +"가용성 재료는 일반적으로 서포트 및 서포트 접점을 출력하는 데 사용됩니다" msgid "Support material" -msgstr "지지대 재료" +msgstr "서포트 재료" msgid "" "Support material is commonly used to print support and support interface" msgstr "" -"지지대 재료는 일반적으로 지지대 및 지지대 접점을 출력하는 데 사용됩니다" +"서포트 재료는 일반적으로 서포트 및 서포트 접점을 출력하는 데 사용됩니다" msgid "Softening temperature" msgstr "연화 온도" @@ -11494,7 +11595,7 @@ msgid "Grid" msgstr "격자" msgid "2D Lattice" -msgstr "" +msgstr "2D 격자" msgid "Line" msgstr "선" @@ -11518,7 +11619,7 @@ msgid "3D Honeycomb" msgstr "3D 벌집" msgid "Support Cubic" -msgstr "정육면체 지지대" +msgstr "정육면체 서포트" msgid "Lightning" msgstr "번개" @@ -11527,23 +11628,23 @@ msgid "Cross Hatch" msgstr "크로스 해치" msgid "Quarter Cubic" -msgstr "" +msgstr "쿼터 큐빅" msgid "Lattice angle 1" -msgstr "" +msgstr "격자 각도 1" msgid "" "The angle of the first set of 2D lattice elements in the Z direction. Zero " "is vertical." -msgstr "" +msgstr "Z 방향의 첫 번째 2D 격자 요소 집합의 각도입니다. 0은 수직입니다." msgid "Lattice angle 2" -msgstr "" +msgstr "격자 각도 2" msgid "" "The angle of the second set of 2D lattice elements in the Z direction. Zero " "is vertical." -msgstr "" +msgstr "Z 방향에서 두 번째 2D 격자 요소 세트의 각도입니다. 0은 수직입니다." msgid "Sparse infill anchor length" msgstr "드문 채우기 고정점 길이" @@ -11736,10 +11837,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\"가 " @@ -11750,7 +11851,7 @@ msgid "layer" msgstr "레이어" msgid "Support interface fan speed" -msgstr "지지대 접점 팬 속도" +msgstr "서포트 접점 팬 속도" msgid "" "This part cooling fan speed is applied when printing support interfaces. " @@ -11760,9 +11861,14 @@ msgid "" "Set to -1 to disable it.\n" "This setting is overridden by disable_fan_first_layers." msgstr "" +"이 파트 냉각 팬 속도는 서포트 인터페이스를 출력할 때 적용됩니다. 이 파라미터" +"를 일반 속도보다 높게 설정하면 서포트와 서포트 파트 사이의 레이어 결합 강도" +"가 감소하여 쉽게 분리할 수 있습니다.\n" +"비활성화하려면 -1로 설정합니다.\n" +"이 설정은 disable_fan_first_layers로 재정의됩니다." msgid "Internal bridges fan speed" -msgstr "" +msgstr "내부 브릿지 팬 속도" msgid "" "The part cooling fan speed used for all internal bridges. Set to -1 to use " @@ -11772,6 +11878,11 @@ msgid "" "can help reduce part warping due to excessive cooling applied over a large " "surface for a prolonged period of time." msgstr "" +"모든 내부 브릿지에 사용되는 부품 냉각 팬 속도입니다. 돌출부 팬 속도 설정을 대" +"신 사용하려면 -1로 설정합니다.\n" +"\n" +"내부 브릿지 팬 속도를 일반 팬 속도보다 낮추면 넓은 표면에 장시간 과도한 냉각" +"이 가해져 파트가 뒤틀리는 현상을 줄일 수 있습니다." msgid "" "Randomly jitter while printing the wall, so that the surface has a rough " @@ -11812,7 +11923,7 @@ msgid "Whether to apply fuzzy skin on the first layer" msgstr "첫 번째 레이어에 퍼지 스킨을 적용할지 여부" msgid "Fuzzy skin noise type" -msgstr "" +msgstr "퍼지 스킨 노이즈 유형" msgid "" "Noise type to use for fuzzy skin generation.\n" @@ -11824,45 +11935,58 @@ msgid "" "Voronoi: Divides the surface into voronoi cells, and displaces each one by a " "random amount. Creates a patchwork texture." msgstr "" +"흐릿한 피부 생성에 사용할 노이즈 유형입니다.\n" +"클래식: 클래식 균일 랜덤 노이즈.\n" +"펄린: 펄린 노이즈: 보다 일관된 텍스처를 제공하는 펄린 노이즈입니다.\n" +"빌로우: 펄린 노이즈와 비슷하지만 더 뭉툭합니다.\n" +"리지드 멀티프랙탈: 날카롭고 들쭉날쭉한 특징을 가진 리지드 노이즈입니다. 대리" +"석과 같은 텍스처를 만듭니다.\n" +"보로노이: 보로노이: 표면을 보로노이 셀로 나누고 각 셀을 임의의 양만큼 이동시" +"킵니다. 패치워크 텍스처를 만듭니다." msgid "Classic" msgstr "클래식" msgid "Perlin" -msgstr "" +msgstr "펄린" msgid "Billow" -msgstr "" +msgstr "빌로우" msgid "Ridged Multifractal" -msgstr "" +msgstr "리지드 멀티프랙탈" msgid "Voronoi" -msgstr "" +msgstr "보로노이" msgid "Fuzzy skin feature size" -msgstr "" +msgstr "퍼지 스킨 피처 크기" msgid "" "The base size of the coherent noise features, in mm. Higher values will " "result in larger features." msgstr "" +"코히어런트 노이즈 피처의 기본 크기(mm)입니다. 값이 클수록 피처가 커집니다." msgid "Fuzzy Skin Noise Octaves" -msgstr "" +msgstr "퍼지 스킨 노이즈 옥타브" msgid "" "The number of octaves of coherent noise to use. Higher values increase the " "detail of the noise, but also increase computation time." msgstr "" +"사용할 일관된 노이즈의 옥타브 수입니다. 값이 클수록 노이즈의 디테일이 증가하" +"지만 계산 시간도 늘어납니다." msgid "Fuzzy skin noise persistence" -msgstr "" +msgstr "퍼지 스킨 노이즈 지속성" msgid "" "The decay rate for higher octaves of the coherent noise. Lower values will " "result in smoother noise." msgstr "" +"코히어런트 노이즈의 높은 옥타브에 대한 감쇠율입니다. 값이 낮을수록 노이즈가 " +"더 부드러워집니다." msgid "Filter out tiny gaps" msgstr "작은 간격 필터링" @@ -11895,7 +12019,7 @@ msgid "" "layers. Note that this is an experimental parameter." msgstr "" "슬라이싱 후 객체의 정확한 z 높이를 얻으려면 이 옵션을 활성화하세요. 마지막 " -"몇 레이어의 레이어 높이를 미세 조정하여 정확한 개체 높이를 얻습니다. 이는 실" +"몇 레이어의 레이어 높이를 미세 조정하여 정확한 객체 높이를 얻습니다. 이는 실" "험적인 매개변수입니다." msgid "Arc fitting" @@ -11959,7 +12083,7 @@ msgid "Brass" msgstr "황동" msgid "Nozzle HRC" -msgstr "노즐 록웰 경도" +msgstr "노즐 HRC" msgid "" "The nozzle's hardness. Zero means no checking for nozzle's hardness during " @@ -11968,7 +12092,7 @@ msgstr "" "노즐의 경도. 0은 슬라이스하는 동안 노즐의 경도를 확인하지 않음을 의미합니다." msgid "HRC" -msgstr "록웰 경도" +msgstr "HRC" msgid "Printer structure" msgstr "프린터 구조" @@ -11989,7 +12113,7 @@ msgid "Delta" msgstr "델타" msgid "Best object position" -msgstr "가장 좋은 개체 위치" +msgstr "가장 좋은 객체 위치" msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." msgstr "베드 모양 w.r.t. 범위 [0,1] 내에서 가장 좋은 자동 정렬 위치입니다." @@ -12093,7 +12217,7 @@ msgid "Enable this option if you want to use multiple bed types" msgstr "여러 배드 유형을 사용하려면 이 옵션을 활성화하세요" msgid "Label objects" -msgstr "개체 이름표" +msgstr "객체 이름표" # Wipe into this object;s infill/Wipe into this object msgid "" @@ -12108,10 +12232,10 @@ msgstr "" "환되지 않습니다." msgid "Exclude objects" -msgstr "개체 제외" +msgstr "객체 제외" msgid "Enable this option to add EXCLUDE OBJECT command in g-code" -msgstr "G코드에 개체 제외 명령을 추가하려면 이 옵션을 활성화하세요" +msgstr "G코드에 객체 제외 명령을 추가하려면 이 옵션을 활성화하세요" msgid "Verbose G-code" msgstr "상세한 G코드" @@ -12211,8 +12335,8 @@ msgid "" "Useful for multi-extruder prints with translucent materials or manual " "soluble support material" msgstr "" -"인접한 재료/체적 사이에 꽉찬 쉘을 강제로 생성합니다. 투명한 재료 또는 용해성 " -"지지대 재료를 사용하는 다중 압출기 출력에 유용합니다" +"인접한 재료/압출 사이에 꽉찬 쉘을 강제로 생성합니다. 투명한 재료 또는 용해성 " +"서포트 재료를 사용하는 다중 압출기 출력에 유용합니다" msgid "Maximum width of a segmented region" msgstr "분할된 영역의 최대 너비" @@ -12331,12 +12455,13 @@ msgid "The distance between the lines of ironing" msgstr "다림질 선 간격" msgid "Ironing inset" -msgstr "" +msgstr "다림질 삽입" msgid "" "The distance to keep from the edges. A value of 0 sets this to half of the " "nozzle diameter" msgstr "" +"가장자리로부터 유지할 거리입니다. 값이 0이면 노즐 직경의 절반으로 설정됩니다." msgid "Ironing speed" msgstr "다림질 속도" @@ -12561,7 +12686,7 @@ msgstr "" "도/더 작은 너비) 압출로 또는 그 반대로 출력할 때 발생하는 급격한 압출 속도 변" "화를 완화합니다.\n" "\n" -"이는 압출된 체적 유량(mm3/초)이 시간에 따라 변할 수 있는 최대 속도를 정의합니" +"이는 압출된 압출 유량(mm3/초)이 시간에 따라 변할 수 있는 최대 속도를 정의합니" "다. 값이 높을수록 더 높은 압출 속도 변경이 허용되어 속도 전환이 더 빨라진다" "는 의미입니다.\n" "\n" @@ -12599,9 +12724,16 @@ msgid "" "\n" "Allowed values: 0.5-5" msgstr "" +"값이 낮을수록 압출 속도 전환이 더 부드러워집니다. 그러나 이 경우 g코드 파일" +"이 상당히 커지고 프린터가 처리해야 할 지침이 더 많아집니다.\n" +"\n" +"기본값인 3이 대부분의 경우에 적합합니다. 프린터가 끊기는 경우 이 값을 늘려 조" +"정 횟수를 줄이십시오.\n" +"\n" +"허용된 값: 0.5-5" msgid "Apply only on external features" -msgstr "" +msgstr "외부 기능에만 적용" msgid "" "Applies extrusion rate smoothing only on external perimeters and overhangs. " @@ -12609,6 +12741,9 @@ msgid "" "visible overhangs without impacting the print speed of features that will " "not be visible to the user." msgstr "" +"외부 경계와 오버행에만 돌출 속도 평활화를 적용합니다. 이렇게 하면 사용자에게 " +"보이지 않는 피처의 출력 속도에는 영향을 주지 않으면서 외부에 보이는 오버행의 " +"급격한 속도 전환으로 인한 아티팩트를 줄일 수 있습니다." msgid "Minimum speed for part cooling fan" msgstr "출력물 냉각 팬의 최소 속도" @@ -12643,6 +12778,8 @@ msgid "" "minimum layer time defined above when the slowdown for better layer cooling " "is enabled." msgstr "" +"레이어 냉각을 위한 감속이 활성화된 경우 위에 정의된 최소 레이어 시간을 유지하" +"기 위해 프린터가 감속하는 최소 출력 속도입니다." msgid "Diameter of nozzle" msgstr "노즐 직경" @@ -12693,9 +12830,9 @@ msgid "" "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 "필라멘트 주차 위치" @@ -12753,7 +12890,7 @@ msgid "Make overhangs printable" msgstr "돌출부 형상 변경" msgid "Modify the geometry to print overhangs without support material." -msgstr "지지대 없이 돌출부를 출력하도록 형상을 수정합니다." +msgstr "서포트 없이 돌출부를 출력하도록 형상을 수정합니다." msgid "Make overhangs printable - Maximum angle" msgstr "돌출부 형상 변경 최대 각도" @@ -12869,13 +13006,13 @@ msgid "Initial layer density" msgstr "초기 레이어 밀도" msgid "Density of the first raft or support layer" -msgstr "첫 번째 라프트 또는 지지대의 밀도" +msgstr "첫 번째 라프트 또는 서포트의 밀도" msgid "Initial layer expansion" msgstr "초기 레이어 확장" msgid "Expand the first raft or support layer to improve bed plate adhesion" -msgstr "베드 플레이트 안착을 향상시키기 위해 첫 번째 라프트 또는 지지대 확장" +msgstr "베드 플레이트 안착을 향상시키기 위해 첫 번째 라프트 또는 서포트 확장" msgid "Raft layers" msgstr "라프트 레이어" @@ -12921,12 +13058,14 @@ msgid "Force a retraction when changes layer" msgstr "레이어 변경 시 강제로 후퇴를 실행합니다" msgid "Retract on top layer" -msgstr "" +msgstr "상단 레이어에서 후퇴" msgid "" "Force a retraction on top layer. Disabling could prevent clog on very slow " "patterns with small movements, like Hilbert curve" msgstr "" +"상단 레이어에 강제 후퇴를 적용합니다. 비활성화하면 힐버트 곡선과 같이 작은 움" +"직임이 있는 매우 느린 패턴에서 막힘을 방지할 수 있습니다." msgid "Retraction Length" msgstr "후퇴 길이" @@ -12960,7 +13099,7 @@ msgid "" msgstr "실험적 기능. 필라멘트 교체 시 절단 전 후퇴 길이" msgid "Z-hop height" -msgstr "" +msgstr "Z올리기 높이" msgid "" "Whenever the retraction is done, the nozzle is lifted a little to create " @@ -12992,7 +13131,7 @@ msgstr "" "이 값보다 낮을 때만 적용됩니다" msgid "Z-hop type" -msgstr "" +msgstr "Z올리기 유형" msgid "Z hop type" msgstr "Z 올리기 유형" @@ -13181,7 +13320,7 @@ msgstr "" "냄) 스카프 조인트 솔기가 사용됩니다. 기본값은 155°입니다." msgid "Conditional overhang threshold" -msgstr "조건부 오버행 임계값" +msgstr "조건부 돌출부 임계값" #, no-c-format, no-boost-format msgid "" @@ -13332,7 +13471,7 @@ msgid "" "Angle from the object center to skirt start point. Zero is the most right " "position, counter clockwise is positive angle." msgstr "" -"개체 중심에서 스커트 시작점까지의 각도입니다. 0은 가장 올바른 위치이고 시계 " +"객체 중심에서 스커트 시작점까지의 각도입니다. 0은 가장 올바른 위치이고 시계 " "반대 방향은 양의 각도입니다." msgid "Skirt height" @@ -13376,7 +13515,7 @@ msgstr "스커트 유형" msgid "" "Combined - single skirt for all objects, Per object - individual object " "skirt." -msgstr "결합 - 모든 개체에 대한 단일 스커트, 개체별 - 개별 개체 스커트." +msgstr "결합 - 모든 개체에 대한 단일 스커트, 개체별 - 개별 객체 스커트." msgid "Combined" msgstr "결합" @@ -13474,20 +13613,24 @@ msgstr "" "부드러운 나선형을 얻기 위해 점을 XY로 이동하는 최대 거리 %로 표시할 경우 노" "즐 직경에 대해 계산됩니다" -#, c-format, boost-format msgid "" "Sets the starting flow ratio while transitioning from the last bottom layer " -"to the spiral. Normally the spiral transition scales the flow ratio from " -"0% to 100% during the first loop which can in some cases lead to under " +"to the spiral. Normally the spiral transition scales the flow ratio from 0% " +"to 100% during the first loop which can in some cases lead to under " "extrusion at the start of the spiral." msgstr "" +"마지막 하단 레이어에서 나선형으로 전환하는 동안 시작 유량 비율을 설정합니다. " +"일반적으로 나선형 전환은 첫 번째 루프 동안 유량 비율을 0% 에서 100% 로 스케일" +"링하므로 경우에 따라 나선형 시작 시 압출이 미달될 수 있습니다." -#, c-format, boost-format msgid "" "Sets the finishing flow ratio while ending the spiral. Normally the spiral " "transition scales the flow ratio from 100% to 0% during the last loop which " "can in some cases lead to under extrusion at the end of the spiral." msgstr "" +"나선형을 끝내는 동안 마무리 유량을 설정합니다. 일반적으로 나선형 전환은 마지" +"막 루프 동안 유량 비율을 100% 에서 0% 로 스케일링하므로 경우에 따라 나선형 끝" +"에서 압출이 미달될 수 있습니다." msgid "" "If smooth or traditional mode is selected, a timelapse video will be " @@ -13581,7 +13724,7 @@ msgid "Purge remaining filament into prime tower" msgstr "남은 필라멘트를 프라임 타워에서 제거" msgid "Enable filament ramming" -msgstr "필라멘트 래밍 활성화" +msgstr "필라멘트 채워넣기 활성화" msgid "No sparse layers (beta)" msgstr "희소 레이어 없음(베타)" @@ -13652,46 +13795,48 @@ msgstr "" "을 직접 수정하세요)." msgid "Enable support" -msgstr "지지대 사용" +msgstr "서포트 사용" msgid "Enable support generation." -msgstr "지지대 생성을 활성화 합니다." +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 "" +msgstr "일반(자동)" msgid "Tree (auto)" -msgstr "" +msgstr "트리(자동)" msgid "Normal (manual)" -msgstr "" +msgstr "일반(수동)" msgid "Tree (manual)" -msgstr "" +msgstr "트리(수동)" msgid "Support/object xy distance" -msgstr "지지대/개체 XY 거리" +msgstr "서포트/객체 XY 거리" msgid "XY separation between an object and its support" -msgstr "개체와 지지대를 분리하는 XY 간격" +msgstr "개체와 서포트를 분리하는 XY 간격" 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 "빌드 플레이트에만 생성" msgid "Don't create support on model surface, only on build plate" -msgstr "모델 표면에 지지대를 생성하지 않고 빌드 플레이트에만 생성합니다" +msgstr "모델 표면에 서포트를 생성하지 않고 빌드 플레이트에만 생성합니다" msgid "Support critical regions only" msgstr "위험한 지역에만 생성" @@ -13701,34 +13846,34 @@ msgid "" "etc." msgstr "" "날카로운 꼬리, 외팔보(항공기 날개처럼 튀어나온 구조 by MMT) 등과 같이 위험한 " -"부위에 대해서만 지지대를 생성합니다." +"부위에 대해서만 서포트를 생성합니다." msgid "Remove small overhangs" -msgstr "작은 돌출부 지지대 제거" +msgstr "작은 돌출부 서포트 제거" msgid "Remove small overhangs that possibly need no supports." -msgstr "지지대가 필요하지 않은 작은 돌출부에서 지지대를 제거합니다." +msgstr "서포트가 필요하지 않은 작은 돌출부에서 서포트를 제거합니다." msgid "Top Z distance" msgstr "상단 Z 거리" msgid "The z gap between the top support interface and object" -msgstr "지지대 상단과 개체 접점의 간격" +msgstr "서포트 상단과 객체 접점의 간격" msgid "Bottom Z distance" msgstr "하단 Z 거리" msgid "The z gap between the bottom support interface and object" -msgstr "지지대 하단과 개체 접점의 간격" +msgstr "서포트 하단과 객체 접점의 간격" msgid "Support/raft base" -msgstr "지지대/라프트 기본" +msgstr "서포트/라프트 기본" msgid "" "Filament to print support base and raft. \"Default\" means no specific " "filament for support and current filament is used" msgstr "" -"기본 지지대 및 라프트를 출력하기 위한 필라멘트. \"기본값\"은 지원을 위한 특" +"기본 서포트 및 라프트를 출력하기 위한 필라멘트. \"기본값\"은 지원을 위한 특" "정 필라멘트가 없으며 현재 필라멘트가 사용됨을 의미합니다" msgid "Avoid interface filament for base" @@ -13737,12 +13882,12 @@ msgstr "베이스용 인터페이스 필라멘트 줄이기" msgid "" "Avoid using support interface filament to print support base if possible." msgstr "" -"지지대 베이스를 프린트하기 위해 지지대 인터페이스 필라멘트를 사용하지 마세요." +"서포트 베이스를 프린트하기 위해 서포트 인터페이스 필라멘트를 사용하지 마세요." msgid "" "Line width of support. If expressed as a %, it will be computed over the " "nozzle diameter." -msgstr "지지대의 선 너비. %로 입력 시 노즐 직경에 대한 비율로 계산됩니다." +msgstr "서포트의 선 너비. %로 입력 시 노즐 직경에 대한 비율로 계산됩니다." msgid "Interface use loop pattern" msgstr "접점에서 루프 패턴 사용" @@ -13750,16 +13895,16 @@ msgstr "접점에서 루프 패턴 사용" msgid "" "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "" -"지지대 상단 접촉 레이어를 루프로 덮습니다. 기본적으로 비활성화되어 있습니다." +"서포트 상단 접촉 레이어를 루프로 덮습니다. 기본적으로 비활성화되어 있습니다." msgid "Support/raft interface" -msgstr "지지대/라프트 접점" +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" @@ -13790,13 +13935,13 @@ msgid "Spacing of bottom interface lines. Zero means solid interface" msgstr "하단 접점 선의 간격. 0은 꽉찬 접점을 의미합니다" msgid "Speed of support interface" -msgstr "지지대 접점 속도" +msgstr "서포트 접점 속도" msgid "Base pattern" msgstr "기본 패턴" msgid "Line pattern of support" -msgstr "지지대 기본 패턴" +msgstr "서포트 기본 패턴" msgid "Rectilinear grid" msgstr "직선 격자" @@ -13812,8 +13957,8 @@ msgid "" "interface is Rectilinear, while default pattern for soluble support " "interface is Concentric" msgstr "" -"지지대 접점의 선 패턴. 비가용성 지지대 접점의 기본 패턴은 직선인 반면 가용성 " -"지지대 접점의 기본 패턴은 동심입니다" +"서포트 접점의 선 패턴. 비가용성 서포트 접점의 기본 패턴은 직선인 반면 가용성 " +"서포트 접점의 기본 패턴은 동심입니다" msgid "Rectilinear Interlaced" msgstr "엇갈린 직선" @@ -13822,16 +13967,16 @@ msgid "Base pattern spacing" msgstr "기본 패턴 간격" msgid "Spacing between support lines" -msgstr "지지대 선 사이의 간격" +msgstr "서포트 선 사이의 간격" msgid "Normal Support expansion" -msgstr "일반 지지대 확장" +msgstr "일반 서포트 확장" msgid "Expand (+) or shrink (-) the horizontal span of normal support" -msgstr "일반 지지대의 수평 범위를 확대(+) 또는 축소(-)합니다" +msgstr "일반 서포트의 수평 범위를 확대(+) 또는 축소(-)합니다" msgid "Speed of support" -msgstr "지지대 속도" +msgstr "서포트 속도" msgid "" "Style and shape of the support. For normal support, projecting the supports " @@ -13842,14 +13987,14 @@ msgid "" "style will create similar structure to normal support under large flat " "overhangs." msgstr "" -"지지대의 스타일과 모양. 일반 지지대의 경우, 격자는 보다 안정적인 지지대(기본" -"값)가 생성되는 반면, 맞춤 지지대는 재료를 절약하고 지지대 자국을 줄입니다.\n" -"나무 지지대의 경우, 얇은 및 유기체 모양은 가지를 보다 적극적으로 병합하고 많" +"서포트의 스타일과 모양. 일반 서포트의 경우, 격자는 보다 안정적인 서포트(기본" +"값)가 생성되는 반면, 맞춤 서포트는 재료를 절약하고 서포트 자국을 줄입니다.\n" +"트리 서포트의 경우, 얇은 및 유기체 모양은 가지를 보다 적극적으로 병합하고 많" "은 재료를 절약합니다(기본값 유기체). 반면 혼합 모양은 크고 평평한 돌출부 아래" -"에 일반 지지대와 유사한 구조를 만듭니다." +"에 일반 서포트와 유사한 구조를 만듭니다." msgid "Default (Grid/Organic" -msgstr "기본값(그리드/유기적" +msgstr "기본값(그리드/오가닉" msgid "Snug" msgstr "맞춤" @@ -13867,14 +14012,14 @@ msgid "Tree Hybrid" msgstr "혼합 나무" msgid "Independent support layer height" -msgstr "독립적 지지대 레이어 높이" +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 "" -"지지대 레이어는 개체 레이어와 독립적인 레이어 높이를 사용합니다. 이것은 Z 거" +"서포트 레이어는 객체 레이어와 독립적인 레이어 높이를 사용합니다. 이것은 Z 거" "리 사용자 정의를 지원하고 출력 시간을 절약하기 위한 것입니다. 프라임 타워가 " "활성화되면 이 옵션은 유효하지 않습니다." @@ -13884,26 +14029,28 @@ msgstr "임계값 각도" msgid "" "Support will be generated for overhangs whose slope angle is below the " "threshold." -msgstr "경사각이 임계값 미만인 돌출부에 지지대가 생성됩니다." +msgstr "경사각이 임계값 미만인 돌출부에 서포트가 생성됩니다." msgid "Threshold overlap" -msgstr "" +msgstr "임계값 중복" msgid "" "If threshold angle is zero, support will be generated for overhangs whose " "overlap is below the threshold. The smaller this value is, the steeper the " "overhang that can be printed without support." msgstr "" +"임계각이 0이면 오버행이 임계값 미만인 오버행에 대한 서포트가 생성됩니다. 이 " +"값이 작을수록 서포트 없이 출력할 수 있는 오버행이 가파르게 됩니다." msgid "Tree support branch angle" -msgstr "나무 지지대 가지 각도" +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 "" -"이 설정은 나무 지지대의 가지가 만들 수 있는 돌출부의 최대 각도를 결정합니다. " +"이 설정은 트리 서포트의 가지가 만들 수 있는 돌출부의 최대 각도를 결정합니다. " "각도가 증가하면 가지가 멀리까지 닿을 수 있도록 더 수평으로 출력될 수 있습니" "다." @@ -13921,11 +14068,11 @@ msgstr "" "를 사용하세요." msgid "Tree support branch distance" -msgstr "나무 지지대 가지 거리" +msgstr "트리 서포트 가지 거리" msgid "" "This setting determines the distance between neighboring tree support nodes." -msgstr "이 설정은 인접한 나무 지지대 지점 간의 거리를 결정합니다." +msgstr "이 설정은 인접한 트리 서포트 지점 간의 거리를 결정합니다." msgid "Branch Density" msgstr "가지 밀도" @@ -13938,8 +14085,8 @@ msgid "" "interfaces instead of a high branch density value if dense interfaces are " "needed." msgstr "" -"가지 끝을 생성하는 데 사용되는 지지대의 밀도를 조정합니다. 값이 높을수록 돌출" -"부가 더 좋아지지만 지지대를 제거하기가 더 어렵습니다. 따라서 조밀한 인터페이" +"가지 끝을 생성하는 데 사용되는 서포트의 밀도를 조정합니다. 값이 높을수록 돌출" +"부가 더 좋아지지만 서포트를 제거하기가 더 어렵습니다. 따라서 조밀한 인터페이" "스가 필요한 경우 높은 가지 밀도 값 대신 상단 지지 인터페이스를 활성화하는 것" "이 좋습니다." @@ -13950,22 +14097,22 @@ msgid "" "Enabling this option means the height of tree support layer except the " "first will be automatically calculated " msgstr "" -"이 옵션을 활성화하면 첫 번째 레이어를 제외한 나무 지지대의 레이어 높이가 자동" +"이 옵션을 활성화하면 첫 번째 레이어를 제외한 트리 서포트의 레이어 높이가 자동" "으로 계산됩니다 " msgid "Auto brim width" -msgstr "나무 지지대 자동 브림 너비" +msgstr "트리 서포트 자동 브림 너비" msgid "" "Enabling this option means the width of the brim for tree support will be " "automatically calculated" -msgstr "옵션을 활성화하면 나무 지지대의 브림 너비가 자동으로 계산됩니다" +msgstr "옵션을 활성화하면 트리 서포트의 브림 너비가 자동으로 계산됩니다" msgid "Tree support brim width" -msgstr "나무 지지대 브림 너비" +msgstr "트리 서포트 브림 너비" msgid "Distance from tree branch to the outermost brim line" -msgstr "나무 지지대 가지에서 가장 바깥쪽 브림까지의 거리" +msgstr "트리 서포트 가지에서 가장 바깥쪽 브림까지의 거리" msgid "Tip Diameter" msgstr "끝 직경" @@ -13975,7 +14122,7 @@ msgid "Branch tip diameter for organic supports." msgstr "유기 지지체의 가지 끝 직경." msgid "Tree support branch diameter" -msgstr "나무 지지대 가지 직경" +msgstr "트리 서포트 가지 직경" msgid "This setting determines the initial diameter of support nodes." msgstr "이 설정은 지지 노드의 초기 직경을 결정합니다." @@ -13992,7 +14139,7 @@ msgid "" "support." msgstr "" "아래로 갈수록 가지의 직경이 점차 굵어지는 각도. 각도가 0이면 가지가 균일한 두" -"께를 가지는 가지가 됩니다. 약간의 각도는 유기체 지지대의 안정성을 증가시킬 " +"께를 가지는 가지가 됩니다. 약간의 각도는 유기체 서포트의 안정성을 증가시킬 " "수 있습니다." msgid "Branch Diameter with double walls" @@ -14008,27 +14155,27 @@ msgstr "" "됩니다. 이중벽을 허용하지 않으려면 이 값을 0으로 설정합니다." msgid "Support wall loops" -msgstr "지지대 벽 루프" +msgstr "서포트 벽 루프" msgid "This setting specify the count of walls around support" -msgstr "이 설정은 지지대 주변의 벽 수를 지정합니다" +msgstr "이 설정은 서포트 주변의 벽 수를 지정합니다" msgid "Tree support with infill" -msgstr "채우기가 있는 나무 지지대" +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 automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -14152,8 +14299,8 @@ 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 "" -"노즐에서 누출된 재료를 청소하기 위해 후퇴할 때 마지막 압출 경로를 따라 노즐" -"을 이동합니다. 이동 후 출력을 시작할 때 방울(blob)을 최소화할 수 있습니다" +"노즐에서 흘러내린된 재료를 청소하기 위해 후퇴할 때 마지막 압출 경로를 따라 노" +"즐을 이동합니다. 이동 후 출력을 시작할 때 방울을 최소화할 수 있습니다" msgid "Wipe Distance" msgstr "닦기 거리" @@ -14247,10 +14394,10 @@ msgid "" "regardless of this setting." msgstr "" "와이프 타워에서 퍼징하고 와이프 타워 희박 레이어를 출력할 때 최대 출력 속도입" -"니다. 퍼징 시 희소 충전 속도 또는 필라멘트 최대 체적 속도에서 계산된 속도가 " +"니다. 퍼징 시 희소 충전 속도 또는 필라멘트 최대 압출 속도에서 계산된 속도가 " "더 낮은 경우 가장 낮은 속도가 대신 사용됩니다.\n" "\n" -"희소 레이어를 출력할 때 내부 주변 속도 또는 필라멘트 최대 체적 속도에서 계산" +"희소 레이어를 출력할 때 내부 주변 속도 또는 필라멘트 최대 압출 속도에서 계산" "된 속도가 더 낮은 경우 가장 낮은 속도가 대신 사용됩니다.\n" "\n" "이 속도를 높이면 타워의 안정성에 영향을 줄 수 있을 뿐만 아니라 노즐이 와이프 " @@ -14296,7 +14443,7 @@ msgid "" "lower the amount of waste and decrease the print time. It will not take " "effect, unless the prime tower is enabled." msgstr "" -"필라멘트 변경 후 버리기는 개체의 지지대 내부에서 수행됩니다. 이렇게 하면 낭비" +"필라멘트 변경 후 버리기는 개체의 서포트 내부에서 수행됩니다. 이렇게 하면 낭비" "되는 양이 줄어들고 출력 시간이 단축될 수 있습니다. 프라임 타워가 활성화되지 " "않으면 적용되지 않습니다." @@ -14313,7 +14460,7 @@ msgid "Maximal bridging distance" msgstr "최대 브릿지 거리" msgid "Maximal distance between supports on sparse infill sections." -msgstr "드문 채우기 부분의 지지대 사이의 최대 거리." +msgstr "드문 채우기 부분의 서포트 사이의 최대 거리." msgid "Wipe tower purge lines spacing" msgstr "프라임 타워 청소 선 간격" @@ -14341,8 +14488,8 @@ msgid "" "0 to disable." msgstr "" "도구가 현재 다중 도구 설정에서 사용되지 않을 때의 노즐 온도. 이는 출력 설정에" -"서 '얼룩 방지'가 활성화된 경우에만 사용됩니다. 비활성화하려면 0으로 설정합니" -"다." +"서 '흘러내림 방지'가 활성화된 경우에만 사용됩니다. 비활성화하려면 0으로 설정" +"합니다." msgid "X-Y hole compensation" msgstr "X-Y 구멍 보정" @@ -14688,7 +14835,7 @@ msgid "Zero-based index of currently used extruder." msgstr "현재 사용되는 압출기의 0 기반 인덱스입니다." msgid "Current object index" -msgstr "현재 개체 인덱스" +msgstr "현재 객체 인덱스" msgid "" "Specific for sequential printing. Zero-based index of currently printed " @@ -14776,16 +14923,16 @@ msgid "Number of layers in the entire print." msgstr "전체 출력의 레이어 수입니다." msgid "Number of objects" -msgstr "개체 수" +msgstr "객체 수" msgid "Total number of objects in the print." -msgstr "출력물의 총 개체 수입니다." +msgstr "출력물의 총 객체 수입니다." msgid "Number of instances" msgstr "인스턴스 수" msgid "Total number of object instances in the print, summed over all objects." -msgstr "모든 개체에 대해 합산된 출력물의 총 개체 인스턴스 수입니다." +msgstr "모든 개체에 대해 합산된 출력물의 총 객체 인스턴스 수입니다." msgid "Scale per object" msgstr "개체당 크기 조정" @@ -14936,10 +15083,10 @@ msgid "Detect overhangs for auto-lift" msgstr "Z 올리기를 위한 돌출부 감지" msgid "Generating support" -msgstr "지지대 생성 중" +msgstr "서포트 생성 중" msgid "Checking support necessity" -msgstr "지지대 필요성 확인" +msgstr "서포트 필요성 확인" msgid "floating regions" msgstr "떠있는 영역" @@ -14955,7 +15102,7 @@ msgid "" "It seems object %s has %s. Please re-orient the object or enable support " "generation." msgstr "" -"개체 %s에 %s이(가) 있는 것 같습니다. 물체의 방향을 바꾸거나 지지대 생성을 활" +"객체 %s에 %s이(가) 있는 것 같습니다. 물체의 방향을 바꾸거나 서포트 생성을 활" "성화하세요." msgid "Optimizing toolpath" @@ -14981,34 +15128,34 @@ msgstr "" #, c-format, boost-format msgid "Support: generate toolpath at layer %d" -msgstr "지지대: 레이어 %d에서 툴 경로 생성" +msgstr "서포트: 레이어 %d에서 툴 경로 생성" msgid "Support: detect overhangs" -msgstr "지지대: 오버행 감지" +msgstr "서포트: 돌출부 감지" msgid "Support: generate contact points" -msgstr "지지대: 접점 생성" +msgstr "서포트: 접점 생성" msgid "Support: propagate branches" -msgstr "지지대: 가지 증식" +msgstr "서포트: 가지 증식" msgid "Support: draw polygons" -msgstr "지지대: 폴리곤 그리기" +msgstr "서포트: 폴리곤 그리기" msgid "Support: generate toolpath" -msgstr "지지대: 툴 경로 생성" +msgstr "서포트: 툴 경로 생성" #, c-format, boost-format msgid "Support: generate polygons at layer %d" -msgstr "지지대: 레이어 %d에서 폴리곤 생성" +msgstr "서포트: 레이어 %d에서 폴리곤 생성" #, c-format, boost-format msgid "Support: fix holes at layer %d" -msgstr "지지대: 레이어 %d의 구멍 수정" +msgstr "서포트: 레이어 %d의 구멍 수정" #, c-format, boost-format msgid "Support: propagate branches at layer %d" -msgstr "지지대: 레이어 %d에서 가지 증식" +msgstr "서포트: 레이어 %d에서 가지 증식" msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." @@ -15051,7 +15198,7 @@ msgid "Flow Rate Calibration" msgstr "유량 교정" msgid "Max Volumetric Speed Calibration" -msgstr "최대 체적 속도 교정" +msgstr "최대 압출 속도 교정" msgid "Manage Result" msgstr "결과 관리" @@ -15110,7 +15257,7 @@ msgid "Flow Rate" msgstr "유량" msgid "Max Volumetric Speed" -msgstr "최대 체적 속도" +msgstr "최대 압출 속도" #, c-format, boost-format msgid "" @@ -15206,7 +15353,7 @@ msgid "Flow rate calibration result has been saved to preset" msgstr "유량 교정 결과가 사전 설정에 저장되었습니다" msgid "Max volumetric speed calibration result has been saved to preset" -msgstr "최대 체적 속도 교정 결과가 사전 설정에 저장되었습니다" +msgstr "최대 압출 속도 교정 결과가 사전 설정에 저장되었습니다" msgid "When do you need Flow Dynamics Calibration" msgstr "동적 유량 교정이 필요한 경우" @@ -15227,7 +15374,7 @@ msgstr "" "1. 다른 브랜드/모델의 새로운 필라멘트를 도입하거나 필라멘트가 습기에 노출된 " "경우;\n" "2. 노즐이 낡았거나 새것으로 교체한 경우\n" -"3. 필라멘트 설정에서 최대 체적 속도나 출력 온도가 변경된 경우." +"3. 필라멘트 설정에서 최대 압출 속도나 출력 온도가 변경된 경우." msgid "About this calibration" msgstr "교정 정보" @@ -15348,13 +15495,13 @@ msgstr "" "습니다. 반드시 절차를 주의 깊게 읽고 이해하신 후 진행하시기 바랍니다." msgid "When you need Max Volumetric Speed Calibration" -msgstr "최대 체적 속도 교정이 필요한 경우" +msgstr "최대 압출 속도 교정이 필요한 경우" 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 "열 수축/팽창이 심한 재료, 다음과 같은..." @@ -15449,7 +15596,7 @@ msgid "Please choose a block with smoothest top surface." msgstr "상단 표면이 가장 매끄러운 블록을 선택하세요." msgid "Please input a valid value (0 <= Max Volumetric Speed <= 60)" -msgstr "유효한 값을 입력하세요(0 <= 최대 체적 속도 <= 60)" +msgstr "유효한 값을 입력하세요(0 <= 최대 압출 속도 <= 60)" msgid "Calibration Type" msgstr "교정 유형" @@ -15523,10 +15670,10 @@ msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "노즐 직경이 프린터 설정에서 동기화되었습니다" msgid "From Volumetric Speed" -msgstr "체적 속도에서" +msgstr "압출 속도에서" msgid "To Volumetric Speed" -msgstr "체적 속도로" +msgstr "압출 속도로" msgid "Flow Dynamics Calibration Result" msgstr "동적 유량 교정 결과" @@ -15686,13 +15833,13 @@ msgstr "" "시작온도 > 종료온도 + 5)" msgid "Max volumetric speed test" -msgstr "최대 체적 속도 테스트" +msgstr "최대 압출 속도 테스트" msgid "Start volumetric speed: " -msgstr "시작 체적 속도: " +msgstr "시작 압출 속도: " msgid "End volumetric speed: " -msgstr "종료 체적 속도: " +msgstr "종료 압출 속도: " msgid "step: " msgstr "단계: " @@ -15800,18 +15947,20 @@ msgid "" "The selected bed type does not match the file. Please confirm before " "starting the print." msgstr "" +"선택한 베드 유형이 파일과 일치하지 않습니다. 출력을 시작하기 전에 확인해 주세" +"요." msgid "Time-lapse" -msgstr "" +msgstr "타임랩스" msgid "Heated Bed Leveling" -msgstr "" +msgstr "히트 베드 레벨링" msgid "Textured Build Plate (Side A)" -msgstr "" +msgstr "텍스처 빌드 플레이트(A면)" msgid "Smooth Build Plate (Side B)" -msgstr "" +msgstr "매끄러운 빌드 플레이트(B면)" msgid "Unable to perform boolean operation on selected parts" msgstr "선택한 부품에서 부울 연산을 수행할 수 없습니다" @@ -15995,8 +16144,8 @@ msgstr "" "다시 작성하시겠습니까?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "사전 설정의 이름을 \"선택한 공급업체 유형 직렬 @프린터\"로 변경합니다.\n" @@ -16193,7 +16342,7 @@ msgid "" "them carefully." msgstr "" "필요한 경우 필라멘트 설정으로 이동하여 사전 설정을 편집하세요.\n" -"노즐 온도, 핫베드 온도 및 최대 체적 속도는 출력 품질에 큰 영향을 미칩니다. 신" +"노즐 온도, 핫베드 온도 및 최대 압출 속도는 출력 품질에 큰 영향을 미칩니다. 신" "중하게 설정해 주세요." msgid "" @@ -17041,8 +17190,8 @@ msgid "" "Did you know that you can view all objects/parts in a list and change " "settings for each object/part?" msgstr "" -"개체 목록\n" -"목록의 모든 개체/부품을 보고 각 개체/부품에 대한 설정을 변경할 수 있다는 것" +"객체 목록\n" +"목록의 모든 객체/부품을 보고 각 객체/부품에 대한 설정을 변경할 수 있다는 것" "을 알고 계섰나요?" #: resources/data/hints.ini: [hint:Search Functionality] @@ -17072,7 +17221,7 @@ msgid "" "settings for each object/part?" msgstr "" "슬라이싱 매개변수 테이블\n" -"테이블의 모든 개체/부품을 보고 각 개체/부품에 대한 설정을 변경할 수 있다는 것" +"테이블의 모든 객체/부품을 보고 각 객체/부품에 대한 설정을 변경할 수 있다는 것" "을 알고 계섰나요?" #: resources/data/hints.ini: [hint:Split to Objects/Parts] @@ -17081,7 +17230,7 @@ msgid "" "Did you know that you can split a big object into small ones for easy " "colorizing or printing?" msgstr "" -"개체/부품으로 분할\n" +"객체/부품으로 분할\n" "쉽게 색칠하거나 출력하기 위해 큰 개체를 작은 개체로 나눌 수 있다는 것을 알고 " "계섰나요?" @@ -17164,9 +17313,9 @@ msgid "" "makes it easy to place the support material only on the sections of the " "model that actually need it." msgstr "" -"지지대 칠하기\n" -"지지대의 위치를 칠할 수 있다는 것을 알고 계섰나요? 이 기능을 사용하면 실제로 " -"필요한 모델 부위에만 지지대 재료를 쉽게 배치할 수 있습니다." +"서포트 칠하기\n" +"서포트의 위치를 칠할 수 있다는 것을 알고 계섰나요? 이 기능을 사용하면 실제로 " +"필요한 모델 부위에만 서포트 재료를 쉽게 배치할 수 있습니다." #: resources/data/hints.ini: [hint:Different types of supports] msgid "" @@ -17175,8 +17324,8 @@ msgid "" "supports work great for organic models, while saving filament and improving " "print speed. Check them out!" msgstr "" -"다양한 유형의 지지대\n" -"여러 유형의 지지대 중에서 선택할 수 있다는 것을 알고 계섰나요? 나무 지지대는 " +"다양한 유형의 서포트\n" +"여러 유형의 서포트 중에서 선택할 수 있다는 것을 알고 계섰나요? 트리 서포트는 " "필라멘트를 절약하고 출력 속도를 향상시키면서 유기 모델에 적합합니다. 확인해 " "보세요!" @@ -17216,7 +17365,7 @@ msgid "" "Stack objects\n" "Did you know that you can stack objects as a whole one?" msgstr "" -"개체 쌓기\n" +"객체 쌓기\n" "물건을 통째로 쌓을 수 있다는 사실을 알고 계섰나요?" #: resources/data/hints.ini: [hint:Flush into support/objects/infill] @@ -17225,8 +17374,8 @@ msgid "" "Did you know that you can save the wasted filament by flushing them into " "support/objects/infill during filament change?" msgstr "" -"지지대/개체/채우기에 내보내기\n" -"필라멘트를 교체하는 동안 낭비되는 필라멘트를 지지대/개체/채우기 출력에 활용" +"서포트/객체/채우기에 내보내기\n" +"필라멘트를 교체하는 동안 낭비되는 필라멘트를 서포트/객체/채우기 출력에 활용" "할 수 있다는 사실을 알고 계섰나요?" #: resources/data/hints.ini: [hint:Improve strength] @@ -18283,8 +18432,8 @@ msgstr "" #~ "로 지정되지 않은 경우 필라멘트의 최소 출력 속도가 활성화됩니다." #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\". \n" +#~ "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 "" #~ "사전 설정의 이름을 \"선택한 공급업체 유형 직렬 @프린터\"로 변경합니다.\n" From f8b84310d62a7ae0cf18426404ea3bb83d895966 Mon Sep 17 00:00:00 2001 From: Psych0h3ad <41975091+Psych0h3ad@users.noreply.github.com> Date: Mon, 24 Feb 2025 00:25:05 +0900 Subject: [PATCH 114/129] Added small Japanese translation (#8527) Update OrcaSlicer_ja.po Just added small translation for Japanese --- localization/i18n/ja/OrcaSlicer_ja.po | 129 ++++++++++++++------------ 1 file changed, 68 insertions(+), 61 deletions(-) diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 92b9edc6c1..c9edb1cb56 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -13355,7 +13355,7 @@ msgid "" msgstr "" msgid "Auto brim width" -msgstr "" +msgstr "オートブリム幅" msgid "" "Enabling this option means the width of the brim for tree support will be " @@ -13363,7 +13363,7 @@ msgid "" msgstr "" msgid "Tree support brim width" -msgstr "Tree support brim width" +msgstr "ツリーサポートブリム幅" msgid "Distance from tree branch to the outermost brim line" msgstr "" @@ -13410,7 +13410,7 @@ msgstr "" "ます。" msgid "Support wall loops" -msgstr "Support wall loops" +msgstr "サポートのウォール数" msgid "This setting specify the count of walls around support" msgstr "This setting specify the count of walls around support" @@ -13441,7 +13441,7 @@ msgid "" msgstr "" msgid "Chamber temperature" -msgstr "Chamber temperature" +msgstr "庫内温度" msgid "" "For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " @@ -14933,16 +14933,16 @@ msgstr "" "使用するIPアドレスを1つ選んでください。" msgid "PA Calibration" -msgstr "PA Calibration" +msgstr "PAキャリブレーション" msgid "DDE" -msgstr "" +msgstr "ダイレクトドライブ" msgid "Bowden" -msgstr "Bowden" +msgstr "ボーデン" msgid "Extruder type" -msgstr "" +msgstr "押出機タイプ" msgid "PA Tower" msgstr "PA Tower" @@ -14954,10 +14954,10 @@ msgid "PA Pattern" msgstr "PA Pattern" msgid "Start PA: " -msgstr "Start PA:" +msgstr "開始PA:" msgid "End PA: " -msgstr "End PA: " +msgstr "終了PA: " msgid "PA step: " msgstr "PA step:" @@ -15076,14 +15076,14 @@ msgid "Upload to storage" msgstr "ストレージへのアップロード" msgid "Switch to Device tab after upload." -msgstr "" +msgstr "アップロード後、デバイスタブに切り替える。" #, c-format, boost-format msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" msgstr "Filename to upload doesn't end with \"%s\". Do you want to continue?" msgid "Upload" -msgstr "Upload" +msgstr "アップロード" msgid "Print host upload queue" msgstr "Print host upload queue" @@ -15095,14 +15095,14 @@ msgid "Progress" msgstr "Progress" msgid "Host" -msgstr "Host" +msgstr "ホスト" msgctxt "OfFile" msgid "Size" -msgstr "Size of file" +msgstr "ファイルサイズ" msgid "Filename" -msgstr "Filename" +msgstr "ファイル名" msgid "Cancel selected" msgstr "Cancel selected" @@ -15117,7 +15117,7 @@ msgid "Uploading" msgstr "アップロード中" msgid "Cancelling" -msgstr "Canceling" +msgstr "キャンセル中" msgid "Error uploading to print host" msgstr "プリントホストへのアップロードに失敗" @@ -15218,10 +15218,10 @@ msgid "Select filament preset" msgstr "Select filament preset" msgid "Create Filament" -msgstr "Create Filament" +msgstr "フィラメントを作成" msgid "Create Based on Current Filament" -msgstr "Create Based on Current Filament" +msgstr "現在のフィラメントを元に作成" msgid "Copy Current Filament Preset " msgstr "Copy Current Filament Preset " @@ -15327,10 +15327,10 @@ msgid "Create Printer/Nozzle" msgstr "Create Printer/Nozzle" msgid "Create Printer" -msgstr "Create Printer" +msgstr "プリンターを作成" msgid "Create Nozzle for Existing Printer" -msgstr "Create Nozzle for Existing Printer" +msgstr "既存のプリンターに別サイズのノズル径を作成" msgid "Create from Template" msgstr "Create from Template" @@ -15634,7 +15634,7 @@ msgid "Failed to create temporary folder, please try Export Configs again." msgstr "Failed to create temporary folder, please try Export Configs again." msgid "Edit Filament" -msgstr "Edit Filament" +msgstr "フィラメントを編集" msgid "Filament presets under this filament" msgstr "Filament presets under this filament" @@ -15666,7 +15666,7 @@ msgid "+ Add Preset" msgstr "+ Add Preset" msgid "Delete Filament" -msgstr "Delete Filament" +msgstr "フィラメントを削除" msgid "" "All the filament presets belong to this filament would be deleted. \n" @@ -15678,7 +15678,7 @@ msgstr "" "information for that slot." msgid "Delete filament" -msgstr "Delete filament" +msgstr "フィラメントを削除" msgid "Add Preset" msgstr "Add Preset" @@ -15696,7 +15696,7 @@ msgid "[Delete Required]" msgstr "[Delete Required]" msgid "Edit Preset" -msgstr "Edit Preset" +msgstr "プリセットを編集" msgid "For more information, please check out Wiki" msgstr "For more information, please check out our Wiki" @@ -15705,7 +15705,7 @@ msgid "Collapse" msgstr "Collapse" msgid "Daily Tips" -msgstr "Daily Tips" +msgstr "今日のヒント" #, c-format, boost-format msgid "nozzle memorized: %.1f %s" @@ -15723,7 +15723,7 @@ msgid "*Printing %s material with %s may cause nozzle damage" msgstr "*Printing %s material with %s may cause nozzle damage" msgid "Need select printer" -msgstr "Need select printer" +msgstr "プリンターを選ぶ必要があります" msgid "The start, end or step is not valid value." msgstr "The start, end or step is not valid value." @@ -15745,13 +15745,13 @@ msgid "Test" msgstr "テスト" msgid "Could not get a valid Printer Host reference" -msgstr "Could not get a valid Printer Host reference" +msgstr "有効なプリンタホスト参照を取得できませんでした" msgid "Success!" -msgstr "Success!" +msgstr "成功!" msgid "Are you sure to log out?" -msgstr "" +msgstr "本当にログアウトしますか?" msgid "Refresh Printers" msgstr "Refresh Printers" @@ -16149,9 +16149,9 @@ msgid "" "height, and results in very apparent layer lines and much lower printing " "quality, but shorter printing time in some printing cases." msgstr "" -"Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer " -"height. This results in very apparent layer lines and much lower print " -"quality but shorter print time in some cases." +"0.8mmノズルのデフォルト・プロファイルと比較すると、レイヤーの高さが大きくなっています。" +"その結果、レイヤーラインが非常に目立ち、印刷品質が大幅に低下しますが、" +"場合によっては印刷時間が短縮されます。" msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a much bigger " @@ -16247,18 +16247,25 @@ msgid "" "Did you know that calibrating your printer can do wonders? Check out our " "beloved calibration solution in OrcaSlicer." msgstr "" +"キャリブレーション\n" +"プリンターを校正することで、素晴らしい効果が得られることをご存知ですか?" +"オルカスライサーの校正(キャリブレーション)ソリューションをご覧ください。" #: resources/data/hints.ini: [hint:Auxiliary fan] msgid "" "Auxiliary fan\n" "Did you know that OrcaSlicer supports Auxiliary part cooling fan?" msgstr "" +"補助部品冷却ファン\n" +"OrcaSlicerが補助部品冷却ファンをサポートしていることをご存知ですか?" #: resources/data/hints.ini: [hint:Air filtration] msgid "" "Air filtration/Exhaust Fan\n" "Did you know that OrcaSlicer can support Air filtration/Exhaust Fan?" msgstr "" +"空気ろ過/排気ファン\n" +"OrcaSlicerが空気ろ過/排気ファンに対応していることをご存知ですか?" #: resources/data/hints.ini: [hint:G-code window] msgid "" @@ -16524,10 +16531,10 @@ msgid "" "extruder/hotend clogging when printing lower temperature filament with a " "higher enclosure temperature. More info about this in the Wiki." msgstr "" -"When do you need to print with the printer door opened?\n" -"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? There is more info about this in the Wiki." +"プリンターのドアを開けたまま印刷する必要があるのはどんなときですか?\n" +"エンクロージャーの温度が高い状態で低温のフィラメントをプリントする場合、" +"プリンターのドアを開けると、エクストルーダーやホットエンドが" +"詰まる確率が下がることをご存知ですか?これについてはWikiに詳しい情報があります。" #: resources/data/hints.ini: [hint:Avoid warping] msgid "" @@ -16536,13 +16543,13 @@ msgid "" "ABS, appropriately increasing the heatbed temperature can reduce the " "probability of warping." msgstr "" -"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?" +"反りを避ける\n" +"ABSのような反りやすい素材を印刷する場合、" +"ヒートベッドの温度を適切に上げることで、" +"反りが発生する確率を下げることができることをご存知ですか?" #~ msgid "Current Cabin humidity" -#~ msgstr "Current Cabin humidity" +#~ msgstr "現在の庫内湿度" #~ msgid "Stopped." #~ msgstr "中止しました" @@ -16552,7 +16559,7 @@ msgstr "" #~ msgstr "接続に失敗しました (%d)" #~ msgid "Initialize failed (Device connection not ready)!" -#~ msgstr "Initialization failed (Device connection not ready)!" +#~ msgstr "初期化に失敗しました(デバイス接続の準備ができていません)!" #, c-format, boost-format #~ msgid "Initialize failed (%s)!" @@ -16578,7 +16585,7 @@ msgstr "" #~ "pingを実行します。" #~ msgid "IP and Access Code Verified! You may close the window" -#~ msgstr "IP and Access Code Verified! You may close the window" +#~ msgstr "IPとアクセスコードが確認されました!ウィンドウを閉じてください" #~ msgid "Force cooling for overhang and bridge" #~ msgstr "オーバーハングとブリッジの冷却" @@ -16744,10 +16751,10 @@ msgstr "" #~ msgstr "ワイプタワーエクストルーダー" #~ msgid "Please input a valid value (K in 0~0.3)" -#~ msgstr "Please input a valid value (K in 0~0.3)" +#~ msgstr "有効な値を入力してください (K in 0~0.3)" #~ msgid "Please input a valid value (K in 0~0.3, N in 0.6~2.0)" -#~ msgstr "Please input a valid value (K in 0~0.3, N in 0.6~2.0)" +#~ msgstr "有効な値を入力してください (K in 0~0.3, N in 0.6~2.0)" #~ msgid "Printer local connection failed, please try again." #~ msgstr "Printer local connection failed; please try again." @@ -16931,7 +16938,7 @@ msgstr "" #, c-format, boost-format #~ msgid "Load failed [%d]" -#~ msgstr "Load failed [%d]" +#~ msgstr "ロード失敗 [%d]" #~ msgid "Failed to fetching model information from printer." #~ msgstr "Failed to fetch model information from printer." @@ -17005,7 +17012,7 @@ msgstr "" #~ "No one part is selected to keep after cut" #~ msgid "Edit Text" -#~ msgstr "Edit Text" +#~ msgstr "テキストを編集" #~ msgid "Error! Unable to create thread!" #~ msgstr "エラー:スレッドを作成できません" @@ -17017,25 +17024,25 @@ msgstr "" #~ msgstr "Choose SLA archive:" #~ msgid "Import file" -#~ msgstr "Import file" +#~ msgstr "ファイルインポート" #~ msgid "Import model and profile" -#~ msgstr "Import model and profile" +#~ msgstr "モデルとプロファイルを取り込む" #~ msgid "Import profile only" -#~ msgstr "Import profile only" +#~ msgstr "プロファイルのみ取り込む" #~ msgid "Import model only" -#~ msgstr "Import model only" +#~ msgstr "モデルのみ取り込む" #~ msgid "Accurate" -#~ msgstr "Accurate" +#~ msgstr "緻密" #~ msgid "Balanced" -#~ msgstr "Balanced" +#~ msgstr "バランス" #~ msgid "Quick" -#~ msgstr "Quick" +#~ msgstr "高速" #~ msgid "" #~ "Discribe how long the nozzle will move along the last path when retracting" @@ -17052,7 +17059,7 @@ msgstr "" #~ "右クリックし、メニューで選択できます。" #~ msgid "Filling bed " -#~ msgstr "Filling bed" +#~ msgstr "ベッドをこのオブジェクトで満たす" #, boost-format #~ msgid "%1% infill pattern doesn't support 100%% density." @@ -17084,7 +17091,7 @@ msgstr "" #, c-format, boost-format #~ msgid " doesn't work at 100%% density " -#~ msgstr " doesn't work at 100%% density " +#~ msgstr "100%% の密度では使用できません" #~ msgid "Ctrl + Shift + Enter" #~ msgstr "Ctrl + Shift + Enter" @@ -17245,7 +17252,7 @@ msgstr "" #~ msgstr "指定したファイルリストからフィラメント設定を読込む" #~ msgid "Skip Objects" -#~ msgstr "Skip Objects" +#~ msgstr "オブジェクトスキップ" #~ msgid "Skip some objects in this print" #~ msgstr "Skip some objects in this print" @@ -17286,7 +17293,7 @@ msgstr "" #~ msgstr "Embedded" #~ msgid "Online Models" -#~ msgstr "Online Models" +#~ msgstr "オンラインモデル" #~ msgid "Show online staff-picked models on the home page" #~ msgstr "Show online staff-picked models on the home page" @@ -17324,7 +17331,7 @@ msgstr "" #~ msgstr "底面との隙間があります、レイヤーを入れ替えました" #~ msgid "The model has too many empty layers." -#~ msgstr "このモデルには空層があります。" +#~ msgstr "このモデルには空の層があります。" #~ msgid "Cali" #~ msgstr "標定" @@ -17333,7 +17340,7 @@ msgstr "" #~ msgstr "押出のキャリブレーション" #~ msgid "Push new filament into the extruder" -#~ msgstr "Push new filament into the extruder" +#~ msgstr "新しいフィラメントを押出機に挿入してください" #, c-format, boost-format #~ msgid "" @@ -17356,7 +17363,7 @@ msgstr "" #~ "ドアを開いて換気を良くするか、ベッド温度を下げてください。" #~ msgid "Total Time Estimation" -#~ msgstr "Total Time Estimation" +#~ msgstr "予想合計時間" #~ msgid "Resonance frequency identification" #~ msgstr "共振特性測定" From 906923cd2452f86fbf321e712a2ea0bfbecb797d Mon Sep 17 00:00:00 2001 From: davidjuanesb Date: Sun, 23 Feb 2025 16:48:18 +0100 Subject: [PATCH 115/129] Catalan language updated to OrcaSlicer v2.3.0-beta (#8511) --- localization/i18n/ca/OrcaSlicer_ca.po | 1569 ++++++++++++++----------- 1 file changed, 860 insertions(+), 709 deletions(-) diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index 603194c38a..47c05fe919 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-02-20 21:21+0800\n" -"PO-Revision-Date: 2024-07-07 18:43+0200\n" +"PO-Revision-Date: 2025-02-21 23:18+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: ca\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" msgid "Supports Painting" msgstr "Pintar suports" @@ -670,7 +670,7 @@ msgid "Horizontal text" msgstr "Text horitzontal" msgid "Shift + Mouse move up or down" -msgstr "Majúscules + Ratolí pujar o baixar" +msgstr "Majúscules + Ratolí per pujar o baixar" msgid "Rotate text" msgstr "Rotar text" @@ -1314,24 +1314,24 @@ msgid "Esc" msgstr "Esc" msgid "Cancel a feature until exit" -msgstr "" +msgstr "Cancel·la una funció fins a sortir" msgid "Measure" msgstr "Mesurar" msgid "" "Please confirm explosion ratio = 1,and please select at least one object" -msgstr "" +msgstr "Confirmeu la proporció d'explosió = 1 i seleccioneu almenys un objecte" msgid "Please select at least one object." -msgstr "" +msgstr "Seleccioneu almenys un objecte." msgid "Edit to scale" msgstr "Editar a escala" msgctxt "Verb" msgid "Scale all" -msgstr "" +msgstr "Escalar-ho tot" msgid "None" msgstr "Cap" @@ -1346,40 +1346,46 @@ msgid "Selection" msgstr "Selecció" msgid " (Moving)" -msgstr "" +msgstr " (Movent)" msgid "" "Select 2 faces on objects and \n" " make objects assemble together." msgstr "" +"Seleccioneu 2 cares dels objectes i \n" +" feu que els objectes s'ajuntin." msgid "" "Select 2 points or circles on objects and \n" " specify distance between them." msgstr "" +"Seleccioneu 2 punts o cercles sobre objectes i \n" +" especifiqueu la distància entre ells." msgid "Face" -msgstr "" +msgstr "Cara" msgid " (Fixed)" -msgstr "" +msgstr " (Corregit)" msgid "Point" -msgstr "" +msgstr "Punt" msgid "" "Feature 1 has been reset, \n" "feature 2 has been feature 1" msgstr "" +"La funció 1 s'ha restablert, \n" +"la funció 2 ha estat la funció 1" msgid "Warning:please select Plane's feature." -msgstr "" +msgstr "Avís: seleccioneu la funció Avió." msgid "Warning:please select Point's or Circle's feature." -msgstr "" +msgstr "Avís: seleccioneu la funció de Punt o Cercle." msgid "Warning:please select two different mesh." -msgstr "" +msgstr "Avís: seleccioneu dues malles diferents." msgid "Copy to clipboard" msgstr "Copiar al porta-retalls" @@ -1397,25 +1403,25 @@ msgid "Distance XYZ" msgstr "Distància XYZ" msgid "Parallel" -msgstr "" +msgstr "Paral·lel" msgid "Center coincidence" -msgstr "" +msgstr "Coincidència de centre" msgid "Featue 1" -msgstr "" +msgstr "Característica 1" msgid "Reverse rotation" -msgstr "" +msgstr "Rotació inversa" msgid "Rotate around center:" -msgstr "" +msgstr "Gira al voltant del centre:" msgid "Parallel distance:" -msgstr "" +msgstr "Distància paral·lela:" msgid "Flip by Face 2" -msgstr "" +msgstr "Gira per la cara 2" msgid "Ctrl+" msgstr "Ctrl+" @@ -1725,7 +1731,7 @@ msgid "Wipe options" msgstr "Opcions de purga" msgid "Bed adhesion" -msgstr "Adhesió al llit" +msgstr "Adhesió del llit" msgid "Add part" msgstr "Afegir peça" @@ -2057,7 +2063,7 @@ msgid "Center" msgstr "Centre" msgid "Drop" -msgstr "" +msgstr "Deixar anar" msgid "Edit Process Settings" msgstr "Editar la configuració de Processat" @@ -2187,7 +2193,7 @@ msgstr "" "Aquesta acció interromprà una correspondència de tall.\n" "Després d'això, no es pot garantir la consistència del model.\n" "\n" -"Per manipular peces sòlides o volums negatius primer cal invalidar la " +"Per manipular amb peces sòlides o volums negatius primer cal invalidar la " "informació de tall." msgid "Delete all connectors" @@ -3042,7 +3048,7 @@ msgid "Print with the filament mounted on the back of chassis" msgstr "Imprimeix amb el filament muntat a la part posterior del xassís" msgid "Current AMS humidity" -msgstr "" +msgstr "Humitat actual de l'AMS" msgid "" "Please change the desiccant when it is too wet. The indicator may not " @@ -4859,10 +4865,10 @@ msgid "Clone copies of selections" msgstr "Clonar còpies de seleccions" msgid "Duplicate Current Plate" -msgstr "" +msgstr "Duplicat de la Placa Actual" msgid "Duplicate the current plate" -msgstr "" +msgstr "Duplicar la placa actual" msgid "Select all" msgstr "Selecciona-ho tot" @@ -4913,10 +4919,10 @@ msgid "Show object overhang highlight in 3D scene" msgstr "Mostra el ressaltat del voladís de l'objecte a l'escena 3D" msgid "Show Selected Outline (beta)" -msgstr "" +msgstr "Mostra l'esquema seleccionat (beta)" msgid "Show outline around selected object in 3D scene" -msgstr "" +msgstr "Mostrar el contorn al voltant de l'objecte seleccionat a l'escena 3D" msgid "Preferences" msgstr "Preferències" @@ -4940,16 +4946,16 @@ msgid "Flow rate test - Pass 2" msgstr "Test de Flux - Pas 2" msgid "YOLO (Recommended)" -msgstr "" +msgstr "YOLO (Recomanat)" msgid "Orca YOLO flowrate calibration, 0.01 step" -msgstr "" +msgstr "Calibració del flux de material YOLO d'Orca, pas de 0,01" msgid "YOLO (perfectionist version)" -msgstr "" +msgstr "YOLO (versió perfeccionista)" msgid "Orca YOLO flowrate calibration, 0.005 step" -msgstr "" +msgstr "Calibració del flux de material YOLO d'Orca, pas de 0,005" msgid "Flow rate" msgstr "Ratio de Flux" @@ -5162,7 +5168,7 @@ msgid "The printer has been logged out and cannot connect." msgstr "La impressora ha tancat la sessió i no es pot connectar." msgid "Video Stopped." -msgstr "" +msgstr "Vídeo aturat." msgid "LAN Connection Failed (Failed to start liveview)" msgstr "" @@ -5275,6 +5281,8 @@ msgid "" "Please check if the SD card is inserted into the printer.\n" "If it still cannot be read, you can try formatting the SD card." msgstr "" +"Comproveu si la targeta SD està inserida a la impressora.\n" +"Si encara no es pot llegir, podeu provar de formatar la targeta SD." msgid "LAN Connection Failed (Failed to view sdcard)" msgstr "Ha fallat la connexió LAN (no s'ha pogut visualitzar sdcard)" @@ -5581,7 +5589,7 @@ msgid "Get oss config failed." msgstr "No s'ha pogut obtenir la configuració del Sistema Operatiu." msgid "Upload Pictures" -msgstr "Pujar Imatges" +msgstr "Puja Imatges" msgid "Number of images successfully uploaded" msgstr "Nombre d'imatges carregades correctament" @@ -5730,23 +5738,27 @@ msgid "Not for now" msgstr "No per ara" msgid "Server Exception" -msgstr "" +msgstr "Excepció del servidor" msgid "" "The server is unable to respond. Please click the link below to check the " "server status." msgstr "" +"El servidor no pot respondre. Feu clic a l'enllaç següent per comprovar " +"l'estat del servidor." msgid "" "If the server is in a fault state, you can temporarily use offline printing " "or local network printing." msgstr "" +"Si el servidor es troba en un estat d'error, podeu utilitzar temporalment la " +"impressió fora de línia o la impressió en xarxa local." msgid "How to use LAN only mode" -msgstr "" +msgstr "Com utilitzar el mode només LAN" msgid "Don't show this dialog again" -msgstr "" +msgstr "No tornis a mostrar aquest diàleg" msgid "3D Mouse disconnected." msgstr "S'ha desconnectat el ratolí 3D." @@ -5993,7 +6005,7 @@ msgid "Edit current plate name" msgstr "Editar el nom de la placa actual" msgid "Move plate to the front" -msgstr "" +msgstr "Mou la placa cap al davant" msgid "Customize current plate" msgstr "Personalitzar la placa actual" @@ -6475,6 +6487,8 @@ msgstr "Importar només la geometria" msgid "" "This option can be changed later in preferences, under 'Load Behaviour'." msgstr "" +"Aquesta opció es pot canviar més endavant a les preferències, a \"Carrega " +"Comportament." msgid "Only one G-code file can be opened at the same time." msgstr "Només es pot obrir un fitxer de Codi-G al mateix temps." @@ -6528,8 +6542,8 @@ msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " "will be kept. You may fix the meshes and try again." msgstr "" -"No s'ha pogut realitzar l'operació booleana a les malles del model. Només " -"s'exportaran les parts positives. Proveu d'arreglar les malles i tornar-ho a " +"No s'ha pogut realitzar l'operació booleana a les malles del model. Només es " +"mantindran les parts positives. Proveu d'arreglar les malles i tornar-ho a " "provar." #, boost-format @@ -6552,6 +6566,8 @@ msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " "will be exported." msgstr "" +"No s'ha pogut realitzar l'operació booleana a les malles del model. Només " +"s'exportaran les parts positives." msgid "" "Are you sure you want to store original SVGs with their local paths into the " @@ -6838,7 +6854,7 @@ msgstr "" msgid "If enabled, auto-calculate every time the color changed." msgstr "" -"Si està activat, fa els clculs automàticament cada vegada que canviï el " +"Si està activat, fa els càlculs automàticament cada vegada que canviï el " "color." msgid "" @@ -6872,10 +6888,10 @@ msgstr "" "alhora i gestionar múltiples dispositius." msgid "Auto arrange plate after cloning" -msgstr "" +msgstr "Disposició automàtica de la placa després de la clonació" msgid "Auto arrange plate after object cloning" -msgstr "" +msgstr "Organitza automàticament la placa després de la clonació d'objectes" msgid "Network" msgstr "Xarxa" @@ -6931,22 +6947,24 @@ msgid "Associate URLs to OrcaSlicer" msgstr "Associeu URLs a OrcaSlicer" msgid "Load All" -msgstr "" +msgstr "Carrega-ho tot" msgid "Ask When Relevant" -msgstr "" +msgstr "Preguntar quan sigui pertinent" msgid "Always Ask" -msgstr "" +msgstr "Pregunta sempre" msgid "Load Geometry Only" -msgstr "" +msgstr "Carregar només geometria" msgid "Load Behaviour" -msgstr "" +msgstr "Carregar Comportament" msgid "Should printer/filament/process settings be loaded when opening a .3mf?" msgstr "" +"S'ha de carregar la configuració de la impressora/filament/procés en obrir " +"un .3mf?" msgid "Maximum recent projects" msgstr "Màxim projectes recents" @@ -7526,7 +7544,7 @@ msgid "Bind with Pin Code" msgstr "Enllaçar amb codi PIN" msgid "Bind with Access Code" -msgstr "" +msgstr "Enllaçar amb el codi d'accés" msgid "Send to Printer SD card" msgstr "Enviar a la targeta SD de la impressora" @@ -7627,12 +7645,12 @@ msgid "" "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 "" -"Gràcies per comprar un dispositiu Bambu Lab. Abans d'utilitzar el vostre " -"dispositiu Bambu Lab, llegiu els termes i condicions. En fer clic per " -"acceptar l'ús del vostre dispositiu Bambu Lab, accepteu complir la Política " -"de privadesa i les Condicions d'ús ( generalizant, les \"Condicions\" ). Si " -"no compleix o està d'acord amb la Política de Privacitat de Bambu Lab, si us " -"plau, no utilitzi l'equip i els serveis de Bambu Lab." +"Gràcies per adquirir un dispositiu de Bambu Lab. Abans d'utilitzar el teu " +"dispositiu Bambu Lab, si us plau, llegeix els termes i condicions. En fer " +"clic per acceptar l'ús del dispositiu Bambu Lab, acceptes complir amb la " +"Política de Privacitat i els Termes d'Ús (conjuntament, els \"Termes\"). Si " +"no compleixes o no estàs d'acord amb la Política de Privacitat de Bambu Lab, " +"si us plau, no utilitzis l'equip i els serveis de Bambu Lab." msgid "and" msgstr "i" @@ -7830,8 +7848,8 @@ 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 "" "Quan graveu timelapse sense capçal d'impressió, es recomana afegir una " "\"Torre de Purga Timelapse\" \n" @@ -7991,7 +8009,7 @@ msgid "Prime tower" msgstr "Torre de Purga" msgid "Filament for Features" -msgstr "" +msgstr "Filament per a característiques" msgid "Ooze prevention" msgstr "Prevenció de degoteig" @@ -8053,7 +8071,7 @@ msgstr "" "significa que no es configura" msgid "Flow ratio and Pressure Advance" -msgstr "" +msgstr "Relació de Flux i Avanç de Pressió Lineal( Pressure advance )" msgid "Print chamber temperature" msgstr "Temperatura de la cambra d'impressió" @@ -8068,12 +8086,14 @@ msgid "Nozzle temperature when printing" msgstr "Temperatura del broquet en imprimir" msgid "Cool Plate (SuperTack)" -msgstr "" +msgstr "Cool Plate (SuperTack)" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " "does not support to print on the Cool Plate SuperTack" msgstr "" +"Temperatura del llit quan s'instal·la la placa freda. El valor 0 significa " +"que el filament no admet la impressió al Cool Plate SuperTack" msgid "Cool Plate" msgstr "Base Freda" @@ -8086,12 +8106,15 @@ msgstr "" "que el filament no admet imprimir a la Base Freda" msgid "Textured Cool plate" -msgstr "" +msgstr "Placa Freda Texturitzada" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " "does not support to print on the Textured Cool Plate" msgstr "" +"Temperatura del llit quan la placa freda està instal·lada. Un valor de 0 " +"significa que el filament no és compatible per imprimir sobre la Placa Freda " +"Texturitzada" msgid "Engineering plate" msgstr "Base d'enginyeria" @@ -8273,7 +8296,7 @@ msgid "Jerk limitation" msgstr "Limitació de la sacsejada( Jerk )" msgid "Single extruder multi-material setup" -msgstr "Configuració d'extrusor únic multimaterial" +msgstr "Configuració d'extrusor únic per a múltiples materials" msgid "Number of extruders of the printer." msgstr "Nombre d'extrusores de la impressora." @@ -8284,10 +8307,10 @@ msgid "" "Do you want to change the diameter for all extruders to first extruder " "nozzle diameter value?" msgstr "" -"Multi Material en extrusor únic seleccionat,\n" +"S'ha seleccionat l'extrusor únic per a múltiples materials,\n" "i tots els extrusors han de tenir el mateix diàmetre.\n" -"Voleu canviar el diàmetre de tots els extrusors al valor del diàmetre del " -"nozzle del primer extrusor?" +"Vols canviar el diàmetre de tots els extrusors al valor del diàmetre de la " +"boquilla del primer extrusor?" msgid "Nozzle diameter" msgstr "Diàmetre del broquet( nozzle )" @@ -8302,12 +8325,15 @@ msgid "" "This is a single extruder multi-material printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" msgstr "" +"Aquesta és una impressora de múltiples materials amb un sol extrusor, i els " +"diàmetres de tots els extrusors es configuraran amb el nou valor. Vols " +"continuar?" msgid "Layer height limits" msgstr "Límits d'alçada de capa" msgid "Z-Hop" -msgstr "" +msgstr "Z-Hop" msgid "Retraction when switching material" msgstr "Retracció en canviar de material" @@ -8340,7 +8366,7 @@ msgstr "Els perfils heretats per altres perfils no es poden eliminar!" msgid "The following presets inherit this preset." msgid_plural "The following preset inherits this preset." msgstr[0] "Els següent perfil hereta aquesta d'aquest altre." -msgstr[1] "Els següents perfils hereten d'aquest altre." +msgstr[1] "Els següents perfils hereten d'aquest perfil." #. TRN Remove/Delete #, boost-format @@ -8717,9 +8743,8 @@ msgid "" "Orca would re-calculate your flushing volumes every time the filaments color " "changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" -"Orca tornarà a calcular els volums de purga cada vegada que canviï el color " -"del filament. Podeu desactivar el recàlcul automàtic a Orca Slicer > " -"Preferències" +"Orca recalcularà els volums de purga cada vegada que canviïs el color del " +"filament. Pots desactivar el càlcul automàtic a Orca Slicer > Preferències" msgid "Flushing volume (mm³) for each filament pair." msgstr "Volum de purga ( mm³ ) per a cada parell de filaments." @@ -8769,7 +8794,7 @@ msgid "" "install BambuStudio or seek after-sales help." msgstr "" "Falta el component BambuSource registrat per a la reproducció multimèdia! " -"Torneu a instal·lar BambuStudio o busqueu ajuda postvenda." +"Torneu a instal·lar BambuStutio o busqueu ajuda postvenda." msgid "" "Using a BambuSource from a different install, video play may not work " @@ -9141,21 +9166,28 @@ msgid "Confirm and Update Nozzle" msgstr "Confirmar i Actualitzar el broquet" msgid "Connect the printer using IP and access code" -msgstr "" +msgstr "Connecteu la impressora mitjançant IP i codi d'accés" msgid "" "Step 1. Please confirm Orca Slicer and your printer are in the same LAN." msgstr "" +"Pas 1. Confirmeu que Orca Slicer i la vostra impressora estan a la mateixa " +"LAN." msgid "" "Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" +"Pas 2. Si la IP i el codi d'accés següents són diferents dels valors reals " +"de la impressora, corregiu-los." msgid "" "Step 3. Please obtain the device SN from the printer side; it is usually " "found in the device information on the printer screen." msgstr "" +"Pas 3. Si us plau, obteniu el SN del dispositiu del lateral de la " +"impressora; normalment es troba a la informació del dispositiu a la pantalla " +"de la impressora." msgid "IP" msgstr "IP" @@ -9164,37 +9196,37 @@ msgid "Access Code" msgstr "Clau d'Accés" msgid "Printer model" -msgstr "" +msgstr "Model d'impressora" msgid "Printer name" -msgstr "" +msgstr "Nom de la impressora" msgid "Where to find your printer's IP and Access Code?" msgstr "On podeu trobar la IP i el Codi d'Accés de la impressora?" msgid "Connect" -msgstr "" +msgstr "Connecta" msgid "Manual Setup" -msgstr "" +msgstr "Configuració manual" msgid "connecting..." -msgstr "" +msgstr "connectant..." msgid "Failed to connect to printer." -msgstr "" +msgstr "No s'ha pogut connectar a la impressora." msgid "Failed to publish login request." -msgstr "" +msgstr "No s'ha pogut publicar la sol·licitud d'inici de sessió." msgid "The printer has already been bound." -msgstr "" +msgstr "La impressora ja ha estat vinculada." msgid "The printer mode is incorrect, please switch to LAN Only." -msgstr "" +msgstr "El mode d'impressora és incorrecte, canvieu a Només LAN." msgid "Connecting to printer... The dialog will close later" -msgstr "" +msgstr "S'està connectant a la impressora... El diàleg es tancarà més tard" msgid "Connection failed, please double check IP and Access Code" msgstr "S'ha produït un error de Connexió, comproveu la IP i el Codi d'Accés" @@ -9589,6 +9621,8 @@ msgid "" "While the object %1% itself fits the build volume, it exceeds the maximum " "build volume height because of material shrinkage compensation." msgstr "" +"Tot i que l'objecte %1% s'adapta al volum de construcció, la seva última " +"capa supera l'alçada màxima del volum de construcció." #, boost-format msgid "The object %1% exceeds the maximum build volume height." @@ -9617,6 +9651,9 @@ msgid "" "well when the prime tower is enabled. It's very experimental, so please " "proceed with caution." msgstr "" +"És possible que els diferents diàmetres de broquet i els diferents diàmetres " +"de filament no funcionin bé quan la torre principal està activada. És molt " +"experimental, així que si us plau, procediu amb precaució." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9629,6 +9666,8 @@ msgid "" "Ooze prevention is only supported with the wipe tower when " "'single_extruder_multi_material' is off." msgstr "" +"La prevenció de degoteig només és compatible amb la torre de neteja quan " +"'single_extruder_multi_material' està deshabilitat." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -9802,6 +9841,8 @@ msgid "" "Filament shrinkage will not be used because filament shrinkage for the used " "filaments differs significantly." msgstr "" +"La contracció del filament no s'utilitzarà perquè la contracció del filament " +"per als filaments utilitzats difereix significativament." msgid "Generating skirt & brim" msgstr "Generant Faldilla i Vora d'Adherència" @@ -10018,6 +10059,8 @@ msgid "" "Bed temperature for layers except the initial one. Value 0 means the " "filament does not support to print on the Textured Cool Plate" msgstr "" +"Temperatura del llit de les capes excepte la inicial. El valor 0 significa " +"que el filament no admet imprimir a la Placa Freda Texturitzada" msgid "" "Bed temperature for layers except the initial one. Value 0 means the " @@ -10050,6 +10093,8 @@ msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Cool Plate SuperTack" msgstr "" +"Temperatura del llit de la capa inicial. El valor 0 significa que el " +"filament no admet la impressió al Cool Plate SuperTack" msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " @@ -10062,6 +10107,8 @@ msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Textured Cool Plate" msgstr "" +"Temperatura del llit en la capa inicial. El valor 0 significa que el " +"filament no admet imprimir a la Placa Freda Texturitzada" msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " @@ -10088,16 +10135,16 @@ msgid "Bed types supported by the printer" msgstr "Tipus de llit suportats per la impressora" msgid "Smooth Cool Plate" -msgstr "" +msgstr "Placa Freda Llisa" msgid "Engineering Plate" msgstr "Base d'Enginyeria" msgid "Smooth High Temp Plate" -msgstr "" +msgstr "Placa Llisa d'Alta Temperatura" msgid "Textured Cool Plate" -msgstr "" +msgstr "Placa Freda Texturitzada" msgid "First layer print sequence" msgstr "Seqüència d'impressió de primera capa" @@ -10174,6 +10221,33 @@ msgid "" "generator and use this option to control whether the cosmetic top and bottom " "surface gap fill is generated" msgstr "" +"Activa l'emplenament de buits per a les superfícies sòlides seleccionades. " +"La longitud mínima de l'espai que s'omplirà es pot controlar des de l'opció " +"de filtrar petits buits a continuació.\n" +"\n" +"Opcions:\n" +"1. A tot arreu: aplica el farciment de buits a les superfícies sòlides " +"superiors, inferiors i internes per obtenir la màxima resistència\n" +"2. Superfícies superior i inferior: aplica l'ompliment de buits només a les " +"superfícies superior i inferior, equilibrant la velocitat d'impressió, " +"reduint el potencial d'extrusió al farciment sòlid i assegurant-se que les " +"superfícies superior i inferior no tinguin buits de forats\n" +"3. Enlloc: desactiva l'ompliment de buits per a totes les àrees de farciment " +"sòlides. \n" +"\n" +"Tingueu en compte que si s'utilitza el generador de perímetre clàssic, també " +"es pot generar un buit entre perímetres, si una línia d'amplada completa no " +"pot cabre entre ells. Aquest espai perimetral no està controlat per aquesta " +"configuració. \n" +"\n" +"Si voleu eliminar tots els buits, inclòs el clàssic generat pel perímetre, " +"definiu el valor dels buits petits en un nombre gran, com ara 999999. \n" +"\n" +"Tanmateix, això no s'aconsella, ja que l'ompliment de buits entre perímetres " +"contribueix a la força del model. Per als models on es genera un farciment " +"excessiu entre perímetres, una millor opció seria canviar al generador de " +"parets d'aracne i utilitzar aquesta opció per controlar si es genera el " +"farciment cosmètic de la superfície superior i inferior" msgid "Everywhere" msgstr "A tot arreu" @@ -10185,7 +10259,7 @@ msgid "Nowhere" msgstr "Enlloc" msgid "Force cooling for overhangs and bridges" -msgstr "" +msgstr "Refrigeració forçada per a voladissos i ponts" msgid "" "Enable this option to allow adjustment of the part cooling fan speed for " @@ -10193,9 +10267,14 @@ msgid "" "speed specifically for these features can improve overall print quality and " "reduce warping." msgstr "" +"Habiliteu aquesta opció per permetre l'ajust de la velocitat del ventilador " +"de refrigeració de les peces específicament per a voladissos, ponts interns " +"i externs. La configuració de la velocitat del ventilador específicament per " +"a aquestes funcions pot millorar la qualitat d'impressió general i reduir la " +"deformació." msgid "Overhangs and external bridges fan speed" -msgstr "" +msgstr "Velocitat del ventilador de voladissos i ponts externs" msgid "" "Use this part cooling fan speed when printing bridges or overhang walls with " @@ -10208,9 +10287,19 @@ msgid "" "speed threshold set above. It is also adjusted upwards up to the maximum fan " "speed threshold when the minimum layer time threshold is not met." msgstr "" +"Utilitzeu aquesta velocitat del ventilador de refrigeració de la part quan " +"imprimiu ponts o parets en voladís amb un llindar de volada que superi el " +"valor establert al paràmetre \"Llindar de refrigeració voladissos\" " +"anterior. Augmentar la refrigeració específicament per a voladissos i ponts " +"pot millorar la qualitat d'impressió general d'aquestes funcions.\n" +"\n" +"Tingueu en compte que aquesta velocitat del ventilador està subjecta a " +"l'extrem inferior pel llindar de velocitat mínima del ventilador establert " +"més amunt. També s'ajusta cap amunt fins al llindar màxim de velocitat del " +"ventilador quan no es compleix el llindar mínim de temps de capa." msgid "Overhang cooling activation threshold" -msgstr "" +msgstr "Llindar d'activació de refrigeració en volada" #, no-c-format, no-boost-format msgid "" @@ -10220,9 +10309,16 @@ msgid "" "by the layer beneath it. Setting this value to 0% forces the cooling fan to " "run for all outer walls, regardless of the overhang degree." msgstr "" +"Quan el voladís superi aquest llindar especificat, força el ventilador de " +"refrigeració a funcionar a la \"Velocitat del ventilador voladís\" que " +"s'estableix a continuació. Aquest llindar s'expressa com a percentatge, que " +"indica la part de l'amplada de cada línia que no és compatible amb la capa " +"que hi ha sota. L'establiment d'aquest valor a 0% for fa que el ventilador " +"de refrigeració funcioni per a totes les parets exteriors, independentment " +"del grau de volada." msgid "External bridge infill direction" -msgstr "" +msgstr "Direcció d'ompliment del pont exterior" #, no-c-format, no-boost-format msgid "" @@ -10235,7 +10331,7 @@ msgstr "" "per als ponts externs. Utilitzeu 180° per a l'angle zero." msgid "Internal bridge infill direction" -msgstr "" +msgstr "Direcció d'ompliment del pont intern" msgid "" "Internal bridging angle override. If left to zero, the bridging angle will " @@ -10245,9 +10341,14 @@ msgid "" "It is recommended to leave it at 0 unless there is a specific model need not " "to." msgstr "" +"Anulació de l'angle de pont intern. Si es deixa a zero, l'angle de pont es " +"calcularà automàticament. En cas contrari, s'utilitzarà l'angle proporcionat " +"per als ponts interns. Utilitzeu 180 ° per a un angle zero.\n" +"\n" +"Es recomana deixar-lo a 0 tret que hi hagi un model específic que no cal." msgid "External bridge density" -msgstr "" +msgstr "Densitat del pont exterior" msgid "" "Controls the density (spacing) of external bridge lines. 100% means solid " @@ -10257,9 +10358,15 @@ msgid "" "space for air to circulate around the extruded bridge, improving its cooling " "speed." msgstr "" +"Controla la densitat (espaiat) de les línies de pont externs. 100% significa " +"pont sòlid. El valor predeterminat és 100%.\n" +"\n" +"Els ponts externs de menor densitat poden ajudar a millorar la fiabilitat, " +"ja que hi ha més espai perquè l'aire circuli al voltant del pont extruït, " +"millorant la seva velocitat de refrigeració." msgid "Internal bridge density" -msgstr "" +msgstr "Densitat del pont intern" msgid "" "Controls the density (spacing) of internal bridge lines. 100% means solid " @@ -10273,6 +10380,17 @@ msgid "" "bridge over infill option, further improving internal bridging structure " "before solid infill is extruded." msgstr "" +"Controla la densitat (espaiat) de les línies de pont intern. 100% significa " +"pont sòlid. El valor predeterminat és 100%.\n" +"\n" +" Els ponts interns de menor densitat poden ajudar a reduir el coixí de la " +"superfície superior i millorar la fiabilitat del pont intern, ja que hi ha " +"més espai perquè l'aire circuli al voltant del pont extruït, millorant la " +"seva velocitat de refrigeració. \n" +"\n" +"Aquesta opció funciona especialment bé quan es combina amb la segona opció " +"de pont intern sobre farciment, millorant encara més l'estructura de pont " +"intern abans que s'extrueixi l'ompliment sòlid." msgid "Bridge flow ratio" msgstr "Ratio de flux del pont" @@ -10284,6 +10402,12 @@ msgid "" "The actual bridge flow used is calculated by multiplying this value with the " "filament flow ratio, and if set, the object's flow ratio." msgstr "" +"Redueix lleugerament aquest valor (per exemple, a 0,9) per disminuir la " +"quantitat de material utilitzat en els ponts i millorar la caiguda. \n" +"\n" +"El flux real per al pont es calcula multiplicant aquest valor amb la relació " +"de flux del filament i, si està establert, amb la relació de flux de " +"l'objecte." msgid "Internal bridge flow ratio" msgstr "Ratio de flux del pont intern" @@ -10297,6 +10421,14 @@ msgid "" "with the bridge flow ratio, the filament flow ratio, and if set, the " "object's flow ratio." msgstr "" +"Aquest valor regeix el gruix de la capa de pont intern. Aquesta és la " +"primera capa sobre el farciment poc dens. Disminuïu lleugerament aquest " +"valor ( per exemple 0,9 ) per millorar la qualitat de la superfície sobre el " +"farciment poc dens.\n" +"\n" +"El flux real intern dels ponts s'utilitza calculant la multiplicació " +"d'aquest valor amb la relació de flux dels ponts, la relació de flux del " +"filament i, si està configurada, la relació de flux de l'objecte." msgid "Top surface flow ratio" msgstr "Ratio de flux superficial superior" @@ -10308,6 +10440,13 @@ msgid "" "The actual top surface flow used is calculated by multiplying this value " "with the filament flow ratio, and if set, the object's flow ratio." msgstr "" +"Aquest factor afecta la quantitat de material per al farciment sòlid " +"superior. Podeu disminuir-lo lleugerament per tenir un acabat superficial " +"suau. \n" +"\n" +"El flux real de la superfície superior s'utilitza calculant la multiplicació " +"d'aquest valor amb la relació de flux del filament i, si està configurada, " +"la relació de flux de l'objecte." msgid "Bottom surface flow ratio" msgstr "Ratio de flux superficial inferior" @@ -10318,6 +10457,12 @@ msgid "" "The actual bottom solid infill flow used is calculated by multiplying this " "value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" +"Aquest factor afecta la quantitat de material per al farciment sòlid del " +"fons. \n" +"\n" +"El cabal de farciment sòlid inferior real utilitzat es calcula multiplicant " +"aquest valor per la relació de flux de filament i, si s'estableix, la " +"relació de flux de l'objecte." msgid "Precise wall" msgstr "Perímetre precís" @@ -10326,6 +10471,8 @@ msgid "" "Improve shell precision by adjusting outer wall spacing. This also improves " "layer consistency." msgstr "" +"Milloreu la precisió de la carcassa ajustant l'espaiat del perímetre " +"exterior. Això també millora la consistència de la capa." msgid "Only one wall on top surfaces" msgstr "Només un perímetre a les superfícies superiors" @@ -10382,7 +10529,7 @@ msgstr "" "no es poden ancorar ponts. " msgid "Reverse on even" -msgstr "" +msgstr "Invertir en capes senars" msgid "Overhang reversal" msgstr "Inversió del voladís" @@ -10395,6 +10542,12 @@ msgid "" "This setting can also help reduce part warping due to the reduction of " "stresses in the part walls." msgstr "" +"Extrudir els perímetres que tenen una part sobre un voladís en la direcció " +"inversa en les capes parells. Aquest patró alternatiu pot millorar " +"dràsticament els voladissos pronunciats.\n" +"\n" +"Aquesta configuració també pot ajudar a reduir la deformació de la peça en " +"disminuir les tensions a les parets de la peça." msgid "Reverse only internal perimeters" msgstr "Invertir només els perímetres interns" @@ -10413,6 +10566,19 @@ msgid "" "Reverse Threshold to 0 so that all internal walls print in alternating " "directions on even layers irrespective of their overhang degree." msgstr "" +"Aplica la lògica de perímetres inversos només en els perímetres interns.\n" +"\n" +"Aquesta configuració redueix considerablement les tensions de la peça, ja " +"que ara es distribueixen en direccions alternes. Això hauria de reduir la " +"deformació de la peça tot mantenint la qualitat de les parets externes. " +"Aquesta funció pot ser molt útil per a materials propensos a deformar-se, " +"com ABS/ASA, i també per a filaments elàstics, com TPU i PLA Seda. També pot " +"ajudar a reduir la deformació en regions flotants sobre suports.\n" +"\n" +"Perquè aquesta configuració sigui més efectiva, es recomana establir el " +"llindar invers a 0 perquè totes les parets internes s'imprimeixin en " +"direccions alternes en capes parells, independentment del seu grau de " +"voladís." msgid "Bridge counterbore holes" msgstr "Pont pels forats esbocats( contraforats )" @@ -10450,6 +10616,12 @@ msgid "" "When Detect overhang wall is not enabled, this option is ignored and " "reversal happens on every even layers regardless." msgstr "" +"Nombre de mm que ha de tenir el voladís perquè la inversió es consideri " +"útil. Pot ser un % de l'amplada del perímetre.\n" +"El valor 0 permet la inversió a totes les capes parelles independentment.\n" +"Quan l'opció \"Detecta paret en voladís\" no està activada, aquesta opció " +"s'ignora i es produeix la reversió a totes les capes parelles " +"independentment." msgid "Classic mode" msgstr "Mode clàssic" @@ -10488,6 +10660,25 @@ msgid "" "overhanging, with no wall supporting them from underneath, the 100% overhang " "speed will be applied." msgstr "" +"Activa aquesta opció per reduir la velocitat d'impressió en zones on els " +"perímetres poden haver-se corbat cap amunt. Per exemple, es reduirà més la " +"velocitat en imprimir voladissos en cantonades pronunciades, com la part " +"frontal del casc del Benchy, reduint així la curvatura que s'acumula en " +"múltiples capes.\n" +"\n" +"En general, es recomana tenir aquesta opció activada, tret que el sistema de " +"refredament de la teva impressora sigui prou potent o la velocitat " +"d'impressió prou baixa com perquè els perímetres no es corbin. Si " +"imprimeixes amb una velocitat de perímetre externa alta, aquest paràmetre " +"pot introduir lleugers artefactes en reduir la velocitat a causa de la gran " +"variació en les velocitats d'impressió. Si notes artefactes, assegura't que " +"el paràmetre de compensació de pressió estigui correctament ajustat.\n" +"\n" +"Nota: Quan aquesta opció està activada, els perímetres del voladís es " +"tracten com a voladissos, és a dir, s'aplica la velocitat de voladís fins i " +"tot si el perímetre de voladís forma part d'un pont. Per exemple, quan els " +"perímetres estan 100% en voladís, sense cap paret que els suporti des de " +"sota, s'aplicarà la velocitat del 100% del voladís." msgid "mm/s or %" msgstr "mm/s o %" @@ -10503,6 +10694,12 @@ msgid "" "are supported by less than 13%, whether they are part of a bridge or an " "overhang." msgstr "" +"Velocitat de les extrusions del pont visibles externament.\n" +"\n" +"A més, si l'opció de Reduir la velocitat per als perímetres corbats està " +"desactivada o el mode clàssic de voladís està activat, aquesta serà la " +"velocitat d'impressió per a les parets de voladís que estan suportades per " +"menys del 13%, ja sigui que formin part d'un pont o d'un voladís." msgid "mm/s" msgstr "mm/s" @@ -10514,6 +10711,9 @@ msgid "" "Speed of internal bridges. If the value is expressed as a percentage, it " "will be calculated based on the bridge_speed. Default value is 150%." msgstr "" +"Velocitat dels ponts interns. Si el valor s'expressa com un percentatge, es " +"calcularà en funció de la velocitat del pont (bridge_speed). El valor per " +"defecte és del 150%." msgid "Brim width" msgstr "Ample de la Vora d'Adherència" @@ -10528,12 +10728,12 @@ msgid "" "This controls the generation of the brim at outer and/or inner side of " "models. Auto means the brim width is analyzed and calculated automatically." msgstr "" -"Això controla la generació de la Vora d'Adherència a la cara exterior i/o " -"interior dels models. Auto significa que l'amplada de la Vora d'Adherència " -"s'analitza i es calcula automàticament." +"Això controla la generació de la vora d'adherència al costat extern i/o " +"intern dels models. 'Automàtic' vol dir que l'amplada de la vora " +"d'adherència s'analitza i es calcula automàticament." msgid "Painted" -msgstr "" +msgstr "Pintat" msgid "Brim-object gap" msgstr "Espai entre la Vora d'Adherència i l'objecte" @@ -10573,8 +10773,8 @@ msgid "" "indicates the minimum length of the deviation for the decimation.\n" "0 to deactivate" msgstr "" -"La geometria serà reduïda abans de detectar angles aguts. Aquest paràmetre " -"especifica la longitud mínima de la desviació per a la reducció.\n" +"La geometria es simplificarà abans de detectar angles pronunciats. Aquest " +"paràmetre indica la longitud mínima de la desviació per a la simplificació.\n" "0 per desactivar" msgid "Compatible machine" @@ -10714,7 +10914,7 @@ msgstr "" "molt llargs" msgid "Thick external bridges" -msgstr "" +msgstr "Ponts exteriors gruixuts" msgid "" "If enabled, bridges are more reliable, can bridge longer distances, but may " @@ -10738,7 +10938,7 @@ msgstr "" "utilitzeu broquets grans." msgid "Extra bridge layers (beta)" -msgstr "" +msgstr "Capes de pont addicionals (beta)" msgid "" "This option enables the generation of an extra bridge layer over internal " @@ -10773,21 +10973,52 @@ msgid "" "4. Apply to all - generates second bridge layers for both internal and " "external-facing bridges\n" msgstr "" +"Aquesta opció permet la generació d'una capa de pont addicional sobre ponts " +"interns i/o externs.\n" +"\n" +"Les capes de pont addicionals ajuden a millorar l'aspecte i la fiabilitat " +"del pont, ja que el farciment sòlid està millor suportat. Això és " +"especialment útil en impressores ràpides, on el pont i la velocitat " +"d'ompliment sòlid varien molt. La capa de pont addicional es tradueix en una " +"reducció de coixins a les superfícies superiors, així com una separació " +"reduïda de la capa de pont externa dels seus perímetres circumdants.\n" +"\n" +"En general, es recomana establir això com a mínim com a \"Només pont " +"extern\", tret que es detectin problemes específics amb el model en " +"rodanxes.\n" +"\n" +"Opcions:\n" +"1. Desactivat: no genera segones capes de pont. Aquest és el valor " +"predeterminat i està establert per a finalitats de compatibilitat.\n" +"2. Només pont extern: genera segones capes de pont només per a ponts " +"exteriors. Tingueu en compte que els ponts petits que siguin més curts o més " +"estrets que el nombre de perímetres establert es saltaran, ja que no es " +"beneficiaran d'una segona capa de pont. Si es genera, la segona capa de pont " +"s'extrudrà paral·lelament a la primera capa de pont per reforçar la " +"resistència del pont.\n" +"3. Només pont intern: genera segones capes de pont per als ponts interns " +"només amb un farcit escàs. Tingueu en compte que els ponts interns compten " +"per al recompte de la capa superior del vostre model. La segona capa de pont " +"intern s'extrudrà el més perpendicular possible a la primera. Si hi ha " +"diverses regions a la mateixa illa, amb diferents angles de pont, es " +"seleccionarà l'última regió d'aquesta illa com a referència d'angle.\n" +"4. Aplicar a tots: genera segones capes de pont per als ponts interiors i " +"exteriors\n" msgid "Disabled" msgstr "Deshabilitat" msgid "External bridge only" -msgstr "" +msgstr "Només pont exterior" msgid "Internal bridge only" -msgstr "" +msgstr "Només pont interior" msgid "Apply to all" -msgstr "" +msgstr "Aplicar a tots" msgid "Filter out small internal bridges" -msgstr "" +msgstr "Filtreu petits ponts interns" msgid "" "This option can help reduce pillowing on top surfaces in heavily slanted or " @@ -10818,9 +11049,36 @@ msgid "" "overhang. This option is useful for heavily slanted top surface models; " "however, in most cases, it creates too many unnecessary bridges." msgstr "" +"Aquesta opció pot ajudar a reduir el coixí a les superfícies superiors en " +"models molt inclinats o corbats.\n" +"\n" +"Per defecte, els ponts interns petits es filtren i el farciment sòlid intern " +"s'imprimeix directament sobre el farciment escàs. Això funciona bé en la " +"majoria dels casos, accelerant la impressió sense comprometre massa la " +"qualitat de la superfície superior. \n" +"\n" +"Tanmateix, en models molt inclinats o corbats, especialment quan s'utilitza " +"una densitat de farciment escassa massa baixa, això pot provocar " +"l'enrotllament de l'ompliment sòlid no suportat, provocant un coixí.\n" +"\n" +"Si activeu el filtratge limitat o no es fa cap filtratge, s'imprimirà la " +"capa de pont interna sobre un farciment sòlid intern lleugerament " +"incompatible. Les opcions següents controlen la sensibilitat del filtratge, " +"és a dir, controlen on es creen els ponts interns.\n" +"\n" +"1. Filtre: activa aquesta opció. Aquest és el comportament predeterminat i " +"funciona bé en la majoria dels casos.\n" +"\n" +"2. Filtrat limitat: crea ponts interns en superfícies molt inclinades alhora " +"que s'evita ponts innecessaris. Això funciona bé per a la majoria de models " +"difícils.\n" +"\n" +"3. Sense filtres: crea ponts interns a cada voladí intern potencial. Aquesta " +"opció és útil per als models de superfícies superiors molt inclinades; " +"tanmateix, en la majoria dels casos, crea massa ponts innecessaris." msgid "Filter" -msgstr "" +msgstr "Filtre" msgid "Limited filtering" msgstr "Filtratge limitat" @@ -11001,30 +11259,30 @@ msgid "" "\n" " " msgstr "" -"Seqüència d'impressió dels perímetres interns ( interior ) i externs " -"( exterior ). \n" +"Seqüència d'impressió de les parets interiors (interiors) i exteriors " +"(exteriors). \n" "\n" -"Utilitzeu Interior/Exterior per obtenir els millors voladissos. Això es deu " -"al fet que els perímetres voladissos poden adherir-se a un perímetre proper " -"durant la impressió. No obstant això, aquesta opció es tradueix en una " -"qualitat superficial lleugerament reduïda, ja que el perímetre exterior es " -"deforma en ser aixafat contra el perímetre intern.\n" +"Utilitzeu Interior / Exterior per a millors voladissos. Això es deu al fet " +"que les parets que sobresurten poden adherir-se a un perímetre veí durant la " +"impressió. No obstant això, aquesta opció resulta en una qualitat " +"superficial lleugerament reduïda, ja que el perímetre extern es deforma en " +"ser aixafat al perímetre intern.\n" "\n" -"Utilitzeu Interior/Exterior/Interior per obtenir el millor acabat " -"superficial extern i precisió dimensional, ja que el perímetre extern " -"s'imprimeix sense problemes des d'un perímetre intern. No obstant això, el " -"rendiment del voladís es reduirà, ja que no hi ha cap perímetre intern " -"contra el qual imprimir el perímetre exterior. Aquesta opció requereix un " -"mínim de 3 perímetres per ser efectiva ja que imprimeix primer els " -"perímetres interiors a partir del 3r perímetre, després el perímetre " -"exterior i, finalment, el primer perímetre intern. Aquesta opció es recomana " -"contra l'opció Exterior/Interior en la majoria dels casos. \n" +"Utilitzeu Interior / Exterior / Interior per obtenir el millor acabat de la " +"superfície externa i precisió dimensional, ja que la paret externa " +"s'imprimeix sense molèsties des d'un perímetre intern. Tanmateix, el " +"rendiment del voladís es reduirà, ja que no hi ha un perímetre intern per " +"imprimir la paret externa. Aquesta opció requereix un mínim de 3 parets per " +"ser efectiva, ja que imprimeix primer les parets interiors a partir del 3r\n" +" perímetre, després el perímetre extern i, finalment, el primer perímetre " +"intern. Aquesta opció es recomana contra l'opció Exterior/Interior en la " +"majoria dels casos. \n" "\n" -"Utilitzeu Exterior/Interior per obtenir els mateixos avantatges de qualitat " -"de paret externa i precisió dimensional de l'opció Interior/Exterior/" -"Interior. No obstant això, les costures z semblaran menys consistents a " -"mesura que la primera extrusió d'una nova capa comenci en una superfície " -"visible.\n" +"Utilitzeu Exterior / Interior per obtenir la mateixa qualitat de paret " +"externa i els mateixos avantatges de precisió dimensional de l'opció " +"Interior / Exterior / Interior. Tanmateix, les costures z semblaran menys " +"consistents a mesura que comenci la primera extrusió d'una nova capa en una " +"superfície visible.\n" "\n" " " @@ -11050,15 +11308,15 @@ msgid "" "external surface finish. It can also cause the infill to shine through the " "external surfaces of the part." msgstr "" -"Ordre de perímetre/farciment. Quan es desmarca la casella, primer " -"s'imprimeixen els perímetres, cosa que funciona millor en la majoria dels " +"Ordre de paret/farciment. Quan la casella no està seleccionada, primer " +"s'imprimeixen les parets, cosa que funciona millor en la majoria dels " "casos.\n" "\n" -"Imprimir el farciment primer pot ajudar amb voladissos extrems, ja que els " -"perímetres tenen el farciment veí per adherir-s'hi. Tanmateix, el farciment " -"empenyerà lleugerament les parets impreses on s'uneix, cosa que provocarà un " -"pitjor acabat superficial extern. També pot fer que el farciment ressalti a " -"través de les superfícies externes de la peça." +"Imprimir primer el farciment pot ajudar en voladissos extrems, ja que les " +"parets tenen el farciment veí per adherir-s'hi. No obstant això, el " +"farciment empenyerà lleugerament les parets impreses allà on s'hi uneix, " +"resultant en un acabat superficial extern pitjor. També pot fer que el " +"farciment es faci visible a través de les superfícies externes de la peça." msgid "Wall loop direction" msgstr "Direcció del bucle de perímetre" @@ -11073,6 +11331,15 @@ msgid "" "\n" "This option will be disabled if spiral vase mode is enabled." msgstr "" +"La direcció en la qual s'extrudeixen els bucles de paret quan es mira des de " +"dalt.\n" +"\n" +"Per defecte, totes les parets s'extrudeixen en sentit antihorari, tret que " +"s'activi l'opció Invertir en capes parells. Configurar això a qualsevol " +"opció diferent d'Automàtic forçarà la direcció de la paret, independentment " +"de l'opció Invertir en capes parells.\n" +"\n" +"Aquesta opció es desactivarà si està activat el mode espiral (vase mode)." msgid "Counter clockwise" msgstr "En sentit contrari a les agulles del rellotge" @@ -11215,6 +11482,15 @@ msgid "" "The final object flow ratio is this value multiplied by the filament flow " "ratio." msgstr "" +"El material pot tenir un canvi volumètric després de canviar entre estat fos " +"i estat cristal·lí. Aquesta configuració canvia tot el flux d'extrusió " +"d'aquest filament en gcode proporcionalment. El rang de valors recomanat és " +"entre 0,95 i 1,05. Potser podeu ajustar aquest valor per obtenir una " +"superfície plana agradable quan hi ha un lleuger desbordament o " +"desbordament. \n" +"\n" +"La relació de flux d'objecte final és aquest valor multiplicat per la " +"relació de flux de filaments." msgid "Enable pressure advance" msgstr "Activar l'Avanç de Pressió Lineal" @@ -11223,14 +11499,14 @@ msgid "" "Enable pressure advance, auto calibration result will be overwritten once " "enabled." msgstr "" -"Habilitar l'Avanç de Pressió Lineal, el resultat del calibratge automàtic se " +"Activeu l'avanç de pressió, el resultat de la calibració automàtica se " "sobreescriurà un cop activat." msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "Avanç de Pressió Lineal( Klipper ) AKA Factor d'Avanç Lineal( Marlin )" msgid "Enable adaptive pressure advance (beta)" -msgstr "" +msgstr "Activa l'avanç de pressió adaptativa (beta)" #, no-c-format, no-boost-format msgid "" @@ -11253,9 +11529,29 @@ msgid "" "and for when tool changing.\n" "\n" msgstr "" +"Amb l'augment de les velocitats d'impressió (i, per tant, l'augment del flux " +"volumètric a través del broquet) i l'augment de les acceleracions, s'ha " +"observat que el valor PA efectiu normalment disminueix. Això vol dir que un " +"únic valor de PA no sempre és 100% oòptim per a totes les funcions i que " +"normalment s'utilitza un valor de compromís que no provoca massa " +"protuberància en funcions amb velocitats de flux i acceleracions més baixes, " +"alhora que no provoca llacunes en funcions més ràpides.\n" +"\n" +"Aquesta característica té com a objectiu abordar aquesta limitació modelant " +"la resposta del sistema d'extrusió de la impressora en funció de la " +"velocitat del flux volumètric i de l'acceleració amb què imprimeix. " +"Internament, genera un model ajustat que pot extrapolar l'avanç de pressió " +"necessari per a qualsevol velocitat i acceleració del flux volumètric " +"donats, que després s'emet a la impressora en funció de les condicions " +"d'impressió actuals.\n" +"\n" +"Quan està activat, el valor d'avanç de pressió anterior es substitueix. " +"Tanmateix, es recomana un valor predeterminat raonable anterior per actuar " +"com a alternativa i per al canvi d'eina.\n" +"\n" msgid "Adaptive pressure advance measurements (beta)" -msgstr "" +msgstr "Mesures d'avanç de pressió adaptativa (beta)" #, no-c-format, no-boost-format msgid "" @@ -11287,9 +11583,38 @@ msgid "" "your filament profile\n" "\n" msgstr "" +"Afegiu conjunts de valors d'avanç de pressió (PA), les velocitats de cabal " +"volumètric i les acceleracions a les quals es van mesurar, separats per una " +"coma. Un conjunt de valors per línia. Per exemple\n" +"0,04,3,96,3000\n" +"0,033,3,96,10000\n" +"0,029,7,91,3000\n" +"0,026,7,91,10000\n" +"\n" +"Com calibrar:\n" +"1. Executeu la prova d'avanç de pressió almenys 3 velocitats per valor " +"d'acceleració. Es recomana que la prova s'executi almenys a la velocitat " +"dels perímetres externs, la velocitat dels perímetres interns i la velocitat " +"d'impressió de les funcions més ràpida del vostre perfil (normalment és " +"l'ompliment escàs o sòlid). A continuació, executeu-los a les mateixes " +"velocitats per a les acceleracions d'impressió més lentes i ràpides, i no " +"més ràpid que l'acceleració màxima recomanada que proporciona el modelador " +"d'entrada Klipper.\n" +"2. Anoteu el valor de PA òptim per a cada velocitat i acceleració del cabal " +"volumètric. Podeu trobar el número de flux seleccionant el flux al " +"desplegable de l'esquema de colors i moveu el control lliscant horitzontal " +"per sobre de les línies del patró PA. El número ha de ser visible a la part " +"inferior de la pàgina. El valor de PA ideal hauria de ser decreixent com més " +"gran sigui el cabal volumètric. Si no és així, confirmeu que la vostra " +"extrusora funciona correctament. Com més lent i amb menys acceleració " +"imprimiu, més gran serà el rang de valors de PA acceptables. Si no hi ha cap " +"diferència visible, utilitzeu el valor PA de la prova més ràpida.3. " +"Introduïu els triplets dels valors de PA, flux i acceleracions al quadre de " +"text aquí i deseu el vostre perfil de filament\n" +"\n" msgid "Enable adaptive pressure advance for overhangs (beta)" -msgstr "" +msgstr "Habilita l'avanç de pressió adaptativa per als voladissos (beta)" msgid "" "Enable adaptive PA for overhangs as well as when flow changes within the " @@ -11297,9 +11622,13 @@ msgid "" "set accurately, it will cause uniformity issues on the external surfaces " "before and after overhangs.\n" msgstr "" +"Habiliteu PA adaptatiu per als voladissos, així com quan canvia el flux dins " +"de la mateixa característica. Aquesta és una opció experimental, ja que si " +"el perfil PA no es configura amb precisió, provocarà problemes d'uniformitat " +"a les superfícies externes abans i després dels voladissos.\n" msgid "Pressure advance for bridges" -msgstr "" +msgstr "Avanç de pressió per als ponts" msgid "" "Pressure advance value for bridges. Set to 0 to disable. \n" @@ -11309,6 +11638,12 @@ msgid "" "pressure drop in the nozzle when printing in the air and a lower PA helps " "counteract this." msgstr "" +"Valor d'avanç de pressió per als ponts. Establiu a 0 per desactivar. \n" +"\n" +" Un valor de PA més baix quan s'imprimeixen ponts ajuda a reduir l'aparició " +"d'una lleugera extrusió immediatament després dels ponts. Això és causat per " +"la caiguda de pressió al broquet quan s'imprimeix a l'aire i un PA més baix " +"ajuda a contrarestar-ho." msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " @@ -11324,8 +11659,8 @@ msgid "" "If enable this setting, part cooling fan will never be stopped and will run " "at least at minimum speed to reduce the frequency of starting and stopping" msgstr "" -"Si activeu aquest ajustament, el ventilador de refrigeració de peces no " -"s'aturarà mai i funcionarà almenys a una velocitat mínima per reduir la " +"Si s'activa aquesta configuració, el ventilador de refrigeració de la part " +"mai s'aturarà i funcionarà almenys a la velocitat mínima per reduir la " "freqüència d'arrencada i aturada" msgid "Don't slow down outer walls" @@ -11343,15 +11678,15 @@ msgid "" "external walls\n" "\n" msgstr "" -"Si està habilitada, aquesta configuració garantirà que els perímetres " -"externs no s'alenteixin per complir el temps mínim de capa. Això és " -"particularment útil en els escenaris següents:\n" +"Si s'activa, aquesta configuració garantirà que els perímetres externs no es " +"redueixin per complir el temps mínim de capa. Això és especialment útil en " +"els escenaris següents:\n" "\n" -"1. Per evitar canvis de brillantor en imprimir filaments brillants \n" -"2. Evitar canvis en la velocitat de la paret externa que poden crear " -"artefactes de paret lleugers que semblen bandes z \n" -"3. Evitar imprimir a velocitats que provoquen VFAs (artefactes fins) a les " -"parets externes\n" +" 1. Per evitar canvis de brillantor en imprimir filaments brillants \n" +"2. Per evitar canvis en la velocitat de la paret externa que poden crear " +"lleugers artefactes de paret que semblen bandes z \n" +"3. Per evitar la impressió a velocitats que provoquen VFA (artefactes fins) " +"a les parets externes\n" "\n" msgid "Layer time" @@ -11410,6 +11745,9 @@ msgid "" "single-extruder multi-material machines. For tool changers or multi-tool " "machines, it's typically 0. For statistics only" msgstr "" +"És hora de carregar un filament nou quan canvieu de filament. Normalment " +"s'aplica a màquines multimaterial d'una sola extrusora. Per als canviadors " +"d'eines o màquines multieines, normalment és 0. Només per a estadístiques" msgid "Filament unload time" msgstr "Temps de descàrrega del filament" @@ -11419,15 +11757,21 @@ msgid "" "for single-extruder multi-material machines. For tool changers or multi-tool " "machines, it's typically 0. For statistics only" msgstr "" +"És hora de descarregar el filament vell quan canvieu el filament. Normalment " +"s'aplica a màquines multimaterial d'una sola extrusora. Per als canviadors " +"d'eines o màquines multieines, normalment és 0. Només per a estadístiques" msgid "Tool change time" -msgstr "" +msgstr "Temps de canvi d'eina" msgid "" "Time taken to switch tools. It's usually applicable for tool changers or " "multi-tool machines. For single-extruder multi-material machines, it's " "typically 0. For statistics only" msgstr "" +"Temps necessari per canviar d'eina. Normalment s'aplica per a canviadors " +"d'eines o màquines multieina. Per a màquines multimaterial d'una sola " +"extrusora, normalment és 0. Només per a estadístiques" msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -11448,16 +11792,16 @@ msgid "" "\n" "filament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )" msgstr "" -"El coeficient de flux de pellets es deriva empíricament i permet calcular el " -"volum per a impressores de pellets.\n" +"El coeficient de flux de pellets es deriva empíricament i permet el càlcul " +"de volum per a impressores de pellets.\n" "\n" -"Internament es converteix en filament_diameter. La resta de càlculs de volum " -"continuen sent els mateixos.\n" +"Internament es converteix a filament_diameter. Tots els altres càlculs de " +"volum segueixen sent els mateixos.\n" "\n" -"filament_diameter = m²( (4 * pellet_flow_coefficient) / PI )" +"diàmetre_filament = sqrt ((4 * coeficient_flux_pellet) / PI)" msgid "Shrinkage (XY)" -msgstr "" +msgstr "Encongiment (XY)" #, no-c-format, no-boost-format msgid "" @@ -11475,7 +11819,7 @@ msgstr "" "compensació es fa després de les comprovacions." msgid "Shrinkage (Z)" -msgstr "" +msgstr "Encongiment (Z)" #, no-c-format, no-boost-format msgid "" @@ -11483,6 +11827,9 @@ msgid "" "if you measure 94mm instead of 100mm). The part will be scaled in Z to " "compensate." msgstr "" +"Introduïu el percentatge de contracció que obtindrà el filament després de " +"refredar-se (94% isi mesureu 94 mm en lloc de 100 mm). La part s'escalarà en " +"Z per compensar." msgid "Loading speed" msgstr "Velocitat de càrrega" @@ -11539,19 +11886,23 @@ msgstr "" "refredament. Especifica el nombre que vulgueu d'aquests moviments." msgid "Stamping loading speed" -msgstr "" +msgstr "Velocitat de càrrega d'estampació" msgid "Speed used for stamping." -msgstr "" +msgstr "Velocitat utilitzada per estampar." msgid "Stamping distance measured from the center of the cooling tube" -msgstr "" +msgstr "Distància d'estampació mesurada des del centre del tub de refrigeració" msgid "" "If set to nonzero value, filament is moved toward the nozzle between the " "individual cooling moves (\"stamping\"). This option configures how long " "this movement should be before the filament is retracted again." msgstr "" +"Si s'estableix en un valor diferent de zero, el filament es mou cap al " +"broquet entre els moviments de refrigeració individuals (\"estampació\"). " +"Aquesta opció configura quant de temps hauria de durar aquest moviment abans " +"que el filament es torni a retreure." msgid "Speed of the first cooling move" msgstr "Velocitat del primer moviment de refredament" @@ -11596,8 +11947,7 @@ msgstr "" "Moldejat de Punta( Ramming )" msgid "Enable ramming for multi-tool setups" -msgstr "" -"Habilita el Moldejat de Punta( Ramming ) per a configuracions multieina" +msgstr "Habiliteu l'embat per a configuracions multieina" msgid "" "Perform ramming when using multi-tool printer (i.e. when the 'Single " @@ -11605,21 +11955,21 @@ msgid "" "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 "" -"Realitzar el Moldejat de Punta( Ramming ) quan s'utilitzi una impressora " -"multieina ( és a dir, quan el \"Multimaterial d'un sol extrusor\" a la " -"configuració de la impressora no està marcat ). Quan està marcat, " -"s'extrusionarà ràpidament una petita quantitat de filament a la Torre de " -"Purga just abans del canvi d'eina. Aquesta opció només s'utilitza quan la " -"Torre de Purga està habilitada." +"Realitzeu l'embolcall quan utilitzeu una impressora multieina (és a dir, " +"quan l'opció \"Multimaterial d'extrusora única\" a la configuració de la " +"impressora està desmarcada). Quan es comprova, una petita quantitat de " +"filament s'extrudeix ràpidament a la torre de neteja just abans del canvi " +"d'eina. Aquesta opció només s'utilitza quan la torre de neteja està " +"habilitada." msgid "Multi-tool ramming volume" -msgstr "Volum de Moldejat de Punta( Ramming ) multieina" +msgstr "Volum d'impacte multieina" msgid "The volume to be rammed before the toolchange." msgstr "El volum de Moldejat de Punta( Ramming ) abans del canvi d'eina." msgid "Multi-tool ramming flow" -msgstr "Flux de Moldejat de Punta( Ramming ) multieina" +msgstr "Flux d'embolcall multieina" msgid "Flow used for ramming the filament before the toolchange." msgstr "" @@ -11664,9 +12014,10 @@ msgid "" "equal to or greater than it, it's highly recommended to open the front door " "and/or remove the upper glass to avoid clogging." msgstr "" -"El material s'estova a aquesta temperatura, per la qual cosa quan la " -"temperatura del llit és igual o superior a ella, és molt recomanable obrir " -"la porta principal i/o treure el vidre superior per evitar obstruccions." +"El material s'estova a aquesta temperatura, de manera que quan la " +"temperatura del llit és igual o superior a aquesta, és molt recomanable " +"obrir la porta d'entrada i/o treure el vidre superior per evitar " +"l'obstrucció." msgid "Price" msgstr "Preu" @@ -11733,7 +12084,7 @@ msgid "Grid" msgstr "Graella" msgid "2D Lattice" -msgstr "" +msgstr "Gelosia 2D" msgid "Line" msgstr "Lineal" @@ -11766,23 +12117,27 @@ msgid "Cross Hatch" msgstr "Quadrícula" msgid "Quarter Cubic" -msgstr "" +msgstr "Quart cúbic" msgid "Lattice angle 1" -msgstr "" +msgstr "Angle de gelosia 1" msgid "" "The angle of the first set of 2D lattice elements in the Z direction. Zero " "is vertical." msgstr "" +"L'angle del primer conjunt d'elements de gelosia 2D en la direcció Z. El " +"zero és vertical." msgid "Lattice angle 2" -msgstr "" +msgstr "Angle de gelosia 2" msgid "" "The angle of the second set of 2D lattice elements in the Z direction. Zero " "is vertical." msgstr "" +"L'angle del segon conjunt d'elements de gelosia 2D en la direcció Z. El zero " +"és vertical." msgid "Sparse infill anchor length" msgstr "Longitud d'ancoratge de farciment poc dens" @@ -11986,15 +12341,15 @@ msgstr "Velocitat màxima del ventilador a 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 velocitat del ventilador augmentarà linealment de zero a la capa " -"\"close_fan_the_first_x_layers\" al màxim a la capa \"full_fan_speed_layer" -"\". S'ignorarà \"full_fan_speed_layer\" si és inferior a " -"\"close_fan_the_first_x_layers\", en aquest cas el ventilador funcionarà a " +"\"close_fan_the_first_x_layers\" al màxim a la capa " +"\"full_fan_speed_layer\". S'ignorarà \"full_fan_speed_layer\" si és inferior " +"a \"close_fan_the_first_x_layers\", en aquest cas el ventilador funcionarà a " "la velocitat màxima permesa a la capa \"close_fan_the_first_x_layers\" + 1." msgid "layer" @@ -12011,9 +12366,15 @@ msgid "" "Set to -1 to disable it.\n" "This setting is overridden by disable_fan_first_layers." msgstr "" +"Aquesta velocitat del ventilador de refrigeració de la part s'aplica quan " +"s'imprimeixen interfícies de suport. L'establiment d'aquest paràmetre a una " +"velocitat superior a la normal redueix la força d'unió de la capa entre els " +"suports i la part suportada, fent-los més fàcils de separar.\n" +"Establiu a -1 per desactivar-lo.\n" +"Disable_fan_first_layers substitueix aquesta configuració." msgid "Internal bridges fan speed" -msgstr "" +msgstr "Velocitat del ventilador dels ponts interns" msgid "" "The part cooling fan speed used for all internal bridges. Set to -1 to use " @@ -12023,6 +12384,14 @@ msgid "" "can help reduce part warping due to excessive cooling applied over a large " "surface for a prolonged period of time." msgstr "" +"La velocitat del ventilador de refrigeració de la part utilitzada per a tots " +"els ponts interns. Establiu a -1 per utilitzar la configuració de velocitat " +"del ventilador en voladís.\n" +"\n" +"La reducció de la velocitat del ventilador dels ponts interns, en comparació " +"amb la velocitat del ventilador habitual, pot ajudar a reduir la deformació " +"de les peces a causa del refredament excessiu aplicat sobre una superfície " +"gran durant un període de temps prolongat." msgid "" "Randomly jitter while printing the wall, so that the surface has a rough " @@ -12048,8 +12417,8 @@ msgid "" "The width within which to jitter. It's advised to be below outer wall line " "width" msgstr "" -"L'amplada dins de la qual Tremolar( Jitter ). Es recomana que estigui per " -"sota de l'amplada de la línia del perímetre exterior" +"L'amplada dins de la qual es pot tremolar. Es recomana estar per sota de " +"l'amplada de la línia de la paret exterior" msgid "Fuzzy skin point distance" msgstr "Distància del punt de la Pell Difusa" @@ -12068,7 +12437,7 @@ msgid "Whether to apply fuzzy skin on the first layer" msgstr "Si s'ha d'aplicar Pell Difusa a la primera capa" msgid "Fuzzy skin noise type" -msgstr "" +msgstr "Tipus de soroll de pell difusa" msgid "" "Noise type to use for fuzzy skin generation.\n" @@ -12080,45 +12449,59 @@ msgid "" "Voronoi: Divides the surface into voronoi cells, and displaces each one by a " "random amount. Creates a patchwork texture." msgstr "" +"Tipus de soroll per a la generació de pell difusa.\n" +"Clàssic: soroll aleatori uniforme clàssic.\n" +"Perlin: soroll Perlin, que dóna una textura més consistent.\n" +"Ballow: semblant al soroll de perlin, però més desordenat.\n" +"Ridged Multifractal: soroll crepuscular amb característiques agudes i " +"irregulars. Crea textures semblants al marbre.\n" +"Voronoi: divideix la superfície en cèl·lules voronoi i desplaça cadascuna en " +"una quantitat aleatòria. Crea una textura de mosaic." msgid "Classic" msgstr "Clàssic" msgid "Perlin" -msgstr "" +msgstr "Perlin" msgid "Billow" -msgstr "" +msgstr "Billow" msgid "Ridged Multifractal" -msgstr "" +msgstr "Multifractal estriat" msgid "Voronoi" -msgstr "" +msgstr "Voronoi" msgid "Fuzzy skin feature size" -msgstr "" +msgstr "Mida de la característica de la pell difusa" msgid "" "The base size of the coherent noise features, in mm. Higher values will " "result in larger features." msgstr "" +"La mida base de les característiques de soroll coherent, en mm. Els valors " +"més alts donaran lloc a característiques més grans." msgid "Fuzzy Skin Noise Octaves" -msgstr "" +msgstr "Octaves de soroll de pell difusa" msgid "" "The number of octaves of coherent noise to use. Higher values increase the " "detail of the noise, but also increase computation time." msgstr "" +"El nombre d'octaves de soroll coherent a utilitzar. Els valors més alts " +"augmenten el detall del soroll, però també augmenten el temps de càlcul." msgid "Fuzzy skin noise persistence" -msgstr "" +msgstr "Persistència del soroll de la pell difusa" msgid "" "The decay rate for higher octaves of the coherent noise. Lower values will " "result in smoother noise." msgstr "" +"La taxa de decadència per a les octaves més altes del soroll coherent. " +"Valors més baixos donaran lloc a un soroll més suau." msgid "Filter out tiny gaps" msgstr "Filtrar els buits minúsculs" @@ -12131,6 +12514,10 @@ msgid "" "(in mm). This setting applies to top, bottom and solid infill and, if using " "the classic perimeter generator, to wall gap fill. " msgstr "" +"No imprimiu l'ompliment de buits amb una longitud inferior al llindar " +"especificat (en mm). Aquesta configuració s'aplica a l'ompliment superior, " +"inferior i sòlid i, si s'utilitza el generador perimetral clàssic, a " +"l'ompliment de buits de paret. " msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " @@ -12165,15 +12552,14 @@ msgid "" "quality as line segments are converted to arcs by the slicer and then back " "to line segments by the firmware." msgstr "" -"Habiliteu-lo per obtenir un fitxer de codi-G que tingui moviments G2 i G3. " -"La tolerància d'ajust és la mateixa que la resolució. \n" +"Activeu-ho per obtenir un fitxer de codi G que tingui moviments G2 i G3. La " +"tolerància d'ajust és la mateixa que la resolució. \n" "\n" -"Nota: Per a les màquines de sabatilles, es recomana desactivar aquesta " -"opció. Klipper no es beneficia de les ordres arc, ja que aquestes es " -"divideixen de nou en segments de línia pel firmware. Això resulta en una " -"reducció de la qualitat de la superfície, ja que els segments de línia es " -"converteixen en arcs per la talladora i després tornen als segments de línia " -"pel firmware." +"Nota: per a les màquines Klipper, es recomana desactivar aquesta opció. " +"Klipper no es beneficia de les ordres d'arc, ja que el microprogramari torna " +"a dividir-les en segments de línia. Això es tradueix en una reducció de la " +"qualitat de la superfície a mesura que els segments de línia es converteixen " +"en arcs pel tallador i després el microprogramari torna a segments de línia." msgid "Add line number" msgstr "Afegir número de línia" @@ -12272,15 +12658,15 @@ msgid "" "gcode' is activated.\n" "Use 0 to deactivate." msgstr "" -"Engegar el ventilador aquest nombre de segons abans de l'hora d'inici " -"programat ( podeu utilitzar segons fraccionats ). Assumeix una acceleració " -"infinita per a aquesta estimació temporal, i només tindrà en compte els " -"moviments G1 i G0 ( Ajustament en Arc( arc fitting ) no és compatible ).\n" -"No mourà comandes de ventilador des de Codis-G personalitzats ( actuen com " -"una mena de \"barrera\" ).\n" -"No mourà comandes de ventilador des de Codis-G d'inici si s'activa el 'només " -"Codi-G d'inici personalitzat'.\n" -"Utilitzeu 0 per desactivar." +"Inicieu el ventilador aquest nombre de segons abans de l'hora d'inici " +"objectiu (podeu utilitzar fraccions de segons). Assumeix una acceleració " +"infinita per a aquesta estimació de temps i només tindrà en compte els " +"moviments G1 i G0 (l'ajust d'arc no és compatible).\n" +"No mourà les ordres dels ventiladors dels gcodes personalitzats (actuen com " +"una mena de \"barrera\").\n" +"No mourà les ordres del ventilador al gcode d'inici si està activat l'\"únic " +"gcode d'inici personalitzat\".\n" +"Utilitzeu 0 per desactivar-lo." msgid "Only overhangs" msgstr "Només voladissos" @@ -12404,7 +12790,7 @@ msgstr "" "original." msgid "Infill combination - Max layer height" -msgstr "" +msgstr "Combinació de farciment: alçada màxima de la capa" msgid "" "Maximum layer height for the combined sparse infill. \n" @@ -12418,6 +12804,18 @@ msgid "" "Use either absolute mm values (eg. 0.32mm for a 0.4mm nozzle) or % values " "(eg 80%). This value must not be larger than the nozzle diameter." msgstr "" +"Alçada màxima de la capa per a l'ompliment dispers combinat. \n" +"\n" +"Establiu-lo a 0 o 100% to utilitzeu el diàmetre del broquet (per a una " +"reducció màxima del temps d'impressió) o un valor de ~80% to maximitzeu la " +"força d'ompliment escassa.\n" +"\n" +"El nombre de capes sobre les quals es combina l'emplenament s'obté dividint " +"aquest valor amb l'alçada de la capa i arrodonit al decimal més proper.\n" +"\n" +"Utilitzeu valors absoluts en mm (p. ex. 0,32 mm per a un filtre de 0,4 mm) o " +"valors % (p. ex. 80%). Aquest valor no ha de ser més gran que el diàmetre " +"del broquet." msgid "Filament to print internal sparse infill." msgstr "Filament per imprimir farciment poc dens intern." @@ -12456,11 +12854,11 @@ msgid "" "appearance of pinholes. The percentage value is relative to line width of " "sparse infill" msgstr "" -"L'àrea superior de farciment sòlid s'amplia lleugerament per superposar-se " -"amb la paret per a una millor unió i minimitzar l'aparició de forats on el " -"farciment superior es troba amb les parets. Un valor de 25-30% és un bon " -"punt de partida, minimitzant l'aparició de forats. El valor percentual és " -"relatiu a l'amplada de línia del farciment poc dens" +"L'àrea de farciment sòlida superior s'amplia lleugerament per superposar-se " +"a la paret per a una millor unió i per minimitzar l'aparició de forats on " +"l'ompliment superior es troba amb les parets. Un valor de 25-30% is és un " +"bon punt de partida, minimitzant l'aparició de forats. El valor percentual " +"és relatiu a l'amplada de línia de l'emplenament escàs" msgid "Speed of internal sparse infill" msgstr "Velocitat de farciment poc dens intern" @@ -12493,6 +12891,10 @@ msgid "" "\"mmu_segmented_region_interlocking_depth\"is bigger then " "\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" +"Profunditat d'enclavament d'una regió segmentada. S'ignorarà si " +"\"mmu_segmented_region_max_width\" és zero o si " +"\"mmu_segmented_region_interlocking_depth\" és més gran que " +"\"mmu_segmented_region_max_width\". Zero desactiva aquesta funció." msgid "Use beam interlocking" msgstr "Utilitzar feixos d'entrellaçament" @@ -12596,12 +12998,14 @@ msgid "The distance between the lines of ironing" msgstr "La distància entre les línies de planxa" msgid "Ironing inset" -msgstr "" +msgstr "Reculat per al planxat" msgid "" "The distance to keep from the edges. A value of 0 sets this to half of the " "nozzle diameter" msgstr "" +"La distància a mantenir des de les vores. Un valor de 0 l'estableix a la " +"meitat del diàmetre del broquet" msgid "Ironing speed" msgstr "Velocitat de planxat" @@ -12875,9 +13279,18 @@ msgid "" "\n" "Allowed values: 0.5-5" msgstr "" +"Un valor més baix produeix transicions de velocitat d'extrusió més suaus. " +"Tanmateix, això dóna com a resultat un fitxer gcode significativament més " +"gran i més instruccions per processar la impressora. \n" +"\n" +"El valor predeterminat de 3 funciona bé en la majoria dels casos. Si la " +"impressora està tartamudeig, augmenta aquest valor per reduir el nombre " +"d'ajustaments fets\n" +"\n" +"Valors permesos: 0,5-5" msgid "Apply only on external features" -msgstr "" +msgstr "Aplicar només a funcions externes" msgid "" "Applies extrusion rate smoothing only on external perimeters and overhangs. " @@ -12885,6 +13298,11 @@ msgid "" "visible overhangs without impacting the print speed of features that will " "not be visible to the user." msgstr "" +"Aplica el suavitzat de velocitat d'extrusió només en perímetres externs i " +"voladissos. Això pot ajudar a reduir els artefactes a causa de les " +"transicions de velocitat pronunciades en els voladissos visibles externament " +"sense afectar la velocitat d'impressió de les funcions que no seran visibles " +"per l'usuari." msgid "Minimum speed for part cooling fan" msgstr "Velocitat mínima per al ventilador de refrigeració de peces" @@ -12920,6 +13338,9 @@ msgid "" "minimum layer time defined above when the slowdown for better layer cooling " "is enabled." msgstr "" +"La velocitat mínima d'impressió a la qual la impressora disminuirà per " +"intentar mantenir el temps mínim de capa anterior, quan \"alentir per a un " +"millor refredament de la capa\" està habilitat." msgid "Diameter of nozzle" msgstr "Diàmetre del broquet" @@ -13028,6 +13449,8 @@ msgid "" "This option will drop the temperature of the inactive extruders to prevent " "oozing." msgstr "" +"Aquesta opció farà baixar la temperatura de les extrusores inactives per " +"evitar degoteig." msgid "Filename format" msgstr "Format del nom del fitxer" @@ -13080,7 +13503,7 @@ msgstr "" "s'utilitza la velocitat de pont." msgid "Filament to print walls" -msgstr "" +msgstr "Filament per imprimir parets" msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " @@ -13135,7 +13558,7 @@ msgid "Printer type" msgstr "Tipus d'impressora" msgid "Type of the printer" -msgstr "" +msgstr "Tipus d'impressora" msgid "Printer notes" msgstr "Notes de la impressora" @@ -13189,9 +13612,9 @@ msgid "" "much points and gcode lines in gcode file. Smaller value means higher " "resolution and more time to slice" msgstr "" -"La trajectòria del Codi-G es genera després de simplificar el contorn del " -"model per evitar massa punts i línies de Codi-G al fitxer gcode. Un valor " -"més petit significa una major resolució i més temps de laminació" +"El camí del codi G es genera després de simplificar el contorn del model per " +"evitar massa punts i línies gcode al fitxer gcode. Un valor més petit " +"significa una resolució més alta i més temps per tallar" msgid "Travel distance threshold" msgstr "Llindar de distància de desplaçament" @@ -13219,12 +13642,15 @@ msgid "Force a retraction when changes layer" msgstr "Forçar una retracció quan canvia de capa" msgid "Retract on top layer" -msgstr "" +msgstr "Retreure a la capa superior" msgid "" "Force a retraction on top layer. Disabling could prevent clog on very slow " "patterns with small movements, like Hilbert curve" msgstr "" +"Força una retracció a la capa superior. La desactivació podria evitar " +"l'obstrucció en patrons molt lents amb moviments petits, com la corba de " +"Hilbert" msgid "Retraction Length" msgstr "Longitud de Retracció" @@ -13238,7 +13664,7 @@ msgstr "" "la retracció" msgid "Long retraction when cut(beta)" -msgstr "Retracció llarga en tallar(beta)" +msgstr "Retracció llarga quan es talla (beta)" msgid "" "Experimental feature.Retracting and cutting off the filament at a longer " @@ -13262,7 +13688,7 @@ msgstr "" "canvi de filament" msgid "Z-hop height" -msgstr "" +msgstr "Alçada Z-hop" msgid "" "Whenever the retraction is done, the nozzle is lifted a little to create " @@ -13296,7 +13722,7 @@ msgstr "" "d'aquest valor" msgid "Z-hop type" -msgstr "" +msgstr "Tipus de salt en Z" msgid "Z hop type" msgstr "Tipus de salt en Z" @@ -13619,17 +14045,16 @@ msgid "" "print order as in these modes it is more likely an external perimeter is " "printed immediately after a de-retraction move." msgstr "" -"Per minimitzar la visibilitat de la possible sobreextrusió a l'inici d'un " -"perímetre extern en imprimir amb ordre d'impressió de perímetre Exterior/" -"Interior o Interior/Exterior/Interior, la deretracció es realitza " -"lleugerament a l'interior des de l'inici del perímetre exterior. D'aquesta " -"manera, qualsevol potencial sobreextrusió queda amagada de la superfície " -"exterior. \n" +"Per minimitzar la visibilitat d'una possible sobreextrusió a l'inici d'un " +"perímetre extern quan s'imprimeix amb l'ordre d'impressió de paret exterior/" +"interior o interior/exterior/interior, la retirada es realitza lleugerament " +"a l'interior des de l'inici del perímetre extern. D'aquesta manera, " +"qualsevol potencial sobre extrusió s'amaga de la superfície exterior. \n" "\n" -"Això és útil quan s'imprimeix amb ordre d'impressió de perfil Exterior/" -"Interior o Interior/Exterior/Interior, ja que en aquests modes és més " -"probable que un perímetre extern s'imprimeixi immediatament després d'un " -"moviment de detracció." +"Això és útil quan s'imprimeix amb l'ordre d'impressió de paret exterior/" +"interior o interior/exterior/interior, ja que en aquests modes és més " +"probable que s'imprimeixi un perímetre extern immediatament després d'un " +"moviment de retirada." msgid "Wipe speed" msgstr "Velocitat de neteja" @@ -13653,12 +14078,15 @@ msgid "Distance from skirt to brim or object" msgstr "Distància de la faldilla a la Vora d'Adherència o a l'objecte" msgid "Skirt start point" -msgstr "" +msgstr "Punt d'inici de la faldilla" msgid "" "Angle from the object center to skirt start point. Zero is the most right " "position, counter clockwise is positive angle." msgstr "" +"Angle des del centre de l'objecte fins al punt inicial de la falda. Zero és " +"la posició més correcta, en sentit contrari a les agulles del rellotge és un " +"angle positiu." msgid "Skirt height" msgstr "Alçada de la faldilla" @@ -13680,23 +14108,36 @@ msgid "" "distance from the object. Therefore, if brims are active it may intersect " "with them. To avoid this, increase the skirt distance value.\n" msgstr "" +"Un protector contra corrents d'aire és útil per protegir una impressió ABS o " +"ASA de deformacions i despreniments del llit d'impressió a causa del corrent " +"de vent. Normalment només es necessita amb impressores de marc obert, és a " +"dir, sense carcassa. \n" +"\n" +"Activat = la faldilla és tan alta com l'objecte imprès més alt. En cas " +"contrari, s'utilitza \"Alçada de la faldilla\".\n" +"Nota: amb l'escut de corrent actiu, la faldilla s'imprimirà a una distància " +"de la faldilla de l'objecte. Per tant, si les vores estan actives, es pot " +"creuar amb elles. Per evitar-ho, augmenta el valor de la distància de la " +"faldilla.\n" msgid "Enabled" msgstr "Habilitat" msgid "Skirt type" -msgstr "" +msgstr "Tipus de faldilla" msgid "" "Combined - single skirt for all objects, Per object - individual object " "skirt." msgstr "" +"Combinat: faldilla única per a tots els objectes, Per objecte: faldilla " +"d'objecte individual." msgid "Combined" -msgstr "" +msgstr "Combinat" msgid "Per object" -msgstr "" +msgstr "Escalat per objecte" msgid "Skirt loops" msgstr "Voltes de la faldilla" @@ -13725,6 +14166,13 @@ msgid "" "Final number of loops is not taling into account whli arranging or " "validating objects distance. Increase loop number in such case. " msgstr "" +"Longitud mínima d'extrusió del filament en mm en imprimir la faldilla. Zero " +"significa que aquesta funció està desactivada.\n" +"\n" +"Utilitzar un valor diferent de zero és útil si la impressora està " +"configurada per imprimir sense una línia principal.\n" +"El nombre final de bucles no es té en compte en organitzar o validar la " +"distància dels objectes. Augmenteu el nombre de bucle en aquest cas. " msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " @@ -13748,7 +14196,7 @@ msgid "Solid infill" msgstr "Farciment sòlid" msgid "Filament to print solid infill" -msgstr "" +msgstr "Filament per imprimir farciment sòlid" msgid "" "Line width of internal solid infill. If expressed as a %, it will be " @@ -13777,9 +14225,8 @@ msgid "" "Smooth Spiral smooths out X and Y moves as well, resulting in no visible " "seam at all, even in the XY directions on walls that are not vertical" msgstr "" -"Suavitzar l'Espiral suavitza també els moviments X i Y, de manera que no " -"s'aprecia cap costura, ni tan sols a les direccions XY en parets que no són " -"verticals" +"L'espiral suau suavitza també els moviments X i Y, donant lloc a cap costura " +"visible, fins i tot en les direccions XY a les parets que no són verticals" msgid "Max XY Smoothing" msgstr "Suavitzat màxim XY" @@ -13798,6 +14245,10 @@ msgid "" "0% to 100% during the first loop which can in some cases lead to under " "extrusion at the start of the spiral." msgstr "" +"Estableix la relació de flux inicial mentre es fa la transició de l'última " +"capa inferior a l'espiral. Normalment, la transició en espiral escala la " +"relació de flux des de 0% to 100% d en el primer bucle, cosa que en alguns " +"casos pot provocar una subextrusió a l'inici de l'espiral." #, c-format, boost-format msgid "" @@ -13805,6 +14256,10 @@ msgid "" "transition scales the flow ratio from 100% to 0% during the last loop which " "can in some cases lead to under extrusion at the end of the spiral." msgstr "" +"Estableix la relació de flux d'acabat mentre finalitza l'espiral. " +"Normalment, la transició en espiral escala la relació de flux des de 100% to " +"0% d en l'últim bucle, cosa que en alguns casos pot provocar una subextrusió " +"al final de l'espiral." msgid "" "If smooth or traditional mode is selected, a timelapse video will be " @@ -13837,9 +14292,12 @@ msgid "" "value is not used when 'idle_temperature' in filament settings is set to non " "zero value." msgstr "" +"Diferència de temperatura a aplicar quan una extrusora no està activa. El " +"valor no s'utilitza quan 'idle_temperature' a la configuració del filament " +"s'estableix en un valor diferent de zero." msgid "Preheat time" -msgstr "" +msgstr "Temps de preescalfament" msgid "" "To reduce the waiting time after tool change, Orca can preheat the next tool " @@ -13847,14 +14305,20 @@ msgid "" "seconds to preheat the next tool. Orca will insert a M104 command to preheat " "the tool in advance." msgstr "" +"Per reduir el temps d'espera després del canvi d'eina, Orca pot preescalfar " +"la següent eina mentre l'eina actual encara està en ús. Aquesta configuració " +"especifica el temps en segons per preescalfar la següent eina. Orca inserirà " +"una ordre M104 per preescalfar l'eina amb antelació." msgid "Preheat steps" -msgstr "" +msgstr "Passos de preescalfament" msgid "" "Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " "other printers, please set it to 1." msgstr "" +"Inseriu diverses ordres de preescalfament (p. ex., M104.1). Només útil per a " +"Prusa XL. Per a altres impressores, poseu-la a 1." msgid "Start G-code" msgstr "Codi-G inicial" @@ -13977,18 +14441,21 @@ msgid "" "Normal (manual) or Tree (manual) is selected, only support enforcers are " "generated" msgstr "" +"Normal (automàtic) i Arbre (automàtic) s'utilitzen per generar suport " +"automàticament. Si se selecciona Normal (manual) o Arbre (manual), només es " +"generen els aplicadors de suport" msgid "Normal (auto)" -msgstr "" +msgstr "Normal (automàtic)" msgid "Tree (auto)" -msgstr "" +msgstr "Arbre (automàtic)" msgid "Normal (manual)" -msgstr "" +msgstr "Normal (manual)" msgid "Tree (manual)" -msgstr "" +msgstr "Arbre (manual)" msgid "Support/object xy distance" msgstr "Distància suport/objecte a xy" @@ -14180,7 +14647,7 @@ msgstr "" "sota grans voladissos plans." msgid "Default (Grid/Organic" -msgstr "" +msgstr "Per defecte (quadrícula/orgànic" msgid "Snug" msgstr "Ajustat" @@ -14221,13 +14688,16 @@ msgstr "" "per sota del llindar." msgid "Threshold overlap" -msgstr "" +msgstr "Superposició de llindars" msgid "" "If threshold angle is zero, support will be generated for overhangs whose " "overlap is below the threshold. The smaller this value is, the steeper the " "overhang that can be printed without support." msgstr "" +"Si l'angle del llindar és zero, es generarà suport per als voladissos el " +"solapament dels quals estigui per sota del llindar. Com més petit sigui " +"aquest valor, més inclinat serà el voladí que es pot imprimir sense suport." msgid "Tree support branch angle" msgstr "Angle de branca de suport en arbre" @@ -14372,8 +14842,8 @@ msgstr "Activar el control de temperatura" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -14382,6 +14852,16 @@ msgid "" "either via macros or natively and is usually used when an active chamber " "heater is installed." msgstr "" +"Activeu aquesta opció per al control automatitzat de la temperatura de la " +"cambra. Aquesta opció activa l'emissió d'una ordre M191 abans de " +"\"machine_start_gcode\"\n" +" que estableix la temperatura de la cambra i espera fins que s'assoleix. A " +"més, emet una ordre M141 al final de la impressió per apagar l'escalfador de " +"la cambra, si n'hi ha. \n" +"\n" +"Aquesta opció es basa en el microprogramari que admet les ordres M191 i " +"M141, ja sigui mitjançant macros o de manera nativa i s'utilitza normalment " +"quan s'instal·la un escalfador de cambra actiu." msgid "Chamber temperature" msgstr "Temperatura de la cambra" @@ -14405,6 +14885,25 @@ msgid "" "desire to handle heat soaking in the print start macro if no active chamber " "heater is installed." msgstr "" +"Per a materials d'alta temperatura com l'ABS, l'ASA, el PC i el PA, una " +"temperatura de la cambra més alta pot ajudar a suprimir o reduir la " +"deformació i, potencialment, conduir a una major força d'unió entre capes. " +"Tanmateix, al mateix temps, una temperatura més alta de la cambra reduirà " +"l'eficiència de la filtració d'aire per a ABS i ASA. \n" +"\n" +"Per a PLA, PETG, TPU, PVA i altres materials de baixa temperatura, aquesta " +"opció s'hauria de desactivar (establir a 0) ja que la temperatura de la " +"cambra hauria de ser baixa per evitar l'obstrucció de l'extrusora causada " +"pel suavització del material durant el trencament de calor.\n" +"\n" +"Si està activat, aquest paràmetre també estableix una variable de codi g " +"anomenada chamber_temperature, que es pot utilitzar per passar la " +"temperatura de la cambra desitjada a la macro d'inici d'impressió, o una " +"macro de remull tèrmic com aquesta: PRINT_START (altres variables) " +"CHAMBER_TEMP=[chamber_temperature]. Això pot ser útil si la vostra " +"impressora no admet les ordres M141/M191, o si voleu gestionar el remull de " +"calor a la macro d'inici d'impressió si no hi ha instal·lat un escalfador de " +"cambra actiu." msgid "Nozzle temperature for layers after the initial one" msgstr "Temperatura del broquet per les capes després de l'inicial" @@ -14466,12 +14965,12 @@ msgid "" "is disabled and thickness of top shell is absolutely determined by top shell " "layers" msgstr "" -"El nombre de capes sòlides superiors s'incrementa en laminar si el gruix " -"calculat per les capes superiors de la carcassa és més prim que aquest " -"valor. Això pot evitar tenir una carcassa massa fina quan l'alçada de la " -"capa és petita. 0 vol dir que aquest ajustament està desactivat i que el " -"gruix de la carcassa superior està absolutament determinat per les capes de " -"la carcassa superior" +"El nombre de capes sòlides superiors augmenta quan es tallen si el gruix " +"calculat per les capes de closca superior és més prim que aquest valor. Això " +"pot evitar tenir una closca massa fina quan l'alçada de la capa és petita. 0 " +"significa que aquesta configuració està desactivada i que el gruix de la " +"carcassa superior està absolutament determinat per les capes de la carcassa " +"superior" msgid "Speed of travel which is faster and without extrusion" msgstr "Velocitat de desplaçament més ràpida i sense extrusió" @@ -14501,17 +15000,16 @@ msgid "" "Setting a value in the retract amount before wipe setting below will perform " "any excess retraction before the wipe, else it will be performed after." msgstr "" -"Descriu quant de temps es mourà el broquet al llarg de l'última trajectòria " -"en les retraccions. \n" +"Descriu quant de temps es mourà el broquet per l'últim camí quan es " +"retrairà. \n" "\n" -"Depenent de quant de temps trigui l'operació de neteja, de la rapidesa i de " -"quant de temps siguin els paràmetres de retracció de l'extrusora/filament, " -"pot ser necessari un moviment de retracció per retirar el filament " -"restant. \n" +"Depenent de quant duri l'operació de neteja, de la rapidesa i de la durada " +"de la configuració de retracció de l'extrusora/filament, pot ser que calgui " +"un moviment de retracció per retraure el filament restant. \n" "\n" -"Establint un valor a la quantitat de retracció abans de l'ajustament de " -"neteja següent, es realitzarà una retracció de l'excés abans de la neteja, " -"en cas contrari es realitzarà després." +"L'establiment d'un valor en la quantitat de retractació abans de l'esborrat " +"es realitzarà qualsevol retracció en excés abans de la neteja, sinó es " +"realitzarà després." msgid "" "The wiping tower can be used to clean up the residue on the nozzle and " @@ -14669,22 +15167,29 @@ msgid "Spacing of purge lines on the wipe tower." msgstr "Espaiat de les línies de purga de la Torre de Purga." msgid "Extra flow for purging" -msgstr "" +msgstr "Flux addicional per a la purga" msgid "" "Extra flow used for the purging lines on the wipe tower. This makes the " "purging lines thicker or narrower than they normally would be. The spacing " "is adjusted automatically." msgstr "" +"Flux addicional utilitzat per a les línies de purga a la torre de neteja. " +"Això fa que les línies de purga siguin més gruixudes o més estretes del que " +"serien normalment. L'espaiat s'ajusta automàticament." msgid "Idle temperature" -msgstr "" +msgstr "Temperatura d'espera" msgid "" "Nozzle temperature when the tool is currently not used in multi-tool setups." "This is only used when 'Ooze prevention' is active in Print Settings. Set to " "0 to disable." msgstr "" +"Temperatura del broquet quan l'eina no s'utilitza actualment en " +"configuracions multieina. Només s'utilitza quan la \"Prevenció de " +"supuració\" està activa a la configuració d'impressió. Establiu a 0 per " +"desactivar." msgid "X-Y hole compensation" msgstr "Compensació de forat( contorn intern ) X-Y" @@ -14740,11 +15245,11 @@ msgid "" "broaden the detection.\n" "In mm or in % of the radius." msgstr "" -"Desviació màxima d'un punt respecte al radi estimat del cercle.\n" -"Com que els cilindres sovint s'exporten com a triangles de mida variable, " -"els punts poden no estar a la circumferència del cercle. Aquest ajustament " -"us permet un cert marge de maniobra per ampliar la detecció.\n" -"En mm o en % o del radi." +"Defecció màxima d'un punt al radi estimat del cercle.\n" +"Com que els cilindres s'exporten sovint com a triangles de mida variable, és " +"possible que els punts no estiguin a la circumferència del cercle. Aquesta " +"configuració us permet una mica de marge per ampliar la detecció.\n" +"En mm o en % of el radi." msgid "Polyhole twist" msgstr "Gir del poliforat" @@ -14782,9 +15287,10 @@ msgid "" "printers. Default is checked" msgstr "" "Es recomana l'extrusió relativa quan s'utilitza l'opció \"label_objects\". " -"Alguns extrusors funcionen millor amb aquesta opció sense marcar( mode " -"d'extrusió absoluta ). La Torre de Purga només és compatible amb el mode " -"relatiu. Es recomana a la majoria d'impressores. Per defecte està marcat" +"Algunes extrusores funcionen millor amb aquesta opció sense marcar (mode " +"d'extrusió absolut). La torre de neteja només és compatible amb el mode " +"relatiu. Es recomana a la majoria d'impressores. El valor per defecte està " +"marcat" msgid "" "Classic wall generator produces walls with constant extrusion width and for " @@ -14886,17 +15392,16 @@ msgid "" "top-surface. 'One wall threshold' is only visible if this setting is set " "above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Ajusteu aquest valor per evitar que s'imprimeixin perímetres curts sense " -"tancar, cosa que podria augmentar el temps d'impressió. Els valors més alts " -"eliminen més perímetres i més llargs.\n" +"Ajusteu aquest valor per evitar que s'imprimeixin parets curtes i no " +"tancades, cosa que podria augmentar el temps d'impressió. Els valors més " +"alts eliminen més i més parets més llargues.\n" "\n" "NOTA: Les superfícies inferior i superior no es veuran afectades per aquest " -"valor per evitar buits visuals a la part exterior del model. Ajusteu " -"\"Llindar d'un sol perímetre\" a la configuració avançada següent per " -"ajustar la sensibilitat del que es considera una superfície superior. " -"L'ajustament del \"Llindar d'un sol perímetre\" només és visible si aquesta " -"opció de configuració s'estableix per sobre del valor predeterminat de 0,5 o " -"si les superfícies superiors d'un sol perímetre estan habilitades." +"valor per evitar espais visuals a l'exterior del model. Ajusteu \"Llindar " +"d'una paret\" a la configuració avançada següent per ajustar la sensibilitat " +"del que es considera una superfície superior. \"Llindar d'una paret\" només " +"és visible si aquesta configuració està per sobre del valor predeterminat de " +"0,5 o si les superfícies superiors d'una sola paret estan habilitades." msgid "First layer minimum wall width" msgstr "Amplada mínima del perímetre de la primera capa" @@ -14932,9 +15437,9 @@ msgid "" "concentric pattern will be used for the area to speed printing up. " "Otherwise, rectilinear pattern is used by default." msgstr "" -"Aquesta opció detectarà automàticament una àrea de farciment sòlid intern " -"estret. Si està habilitat, s'utilitzarà un patró concèntric a l'àrea per " -"accelerar la impressió. En cas contrari, el patró rectilini s'utilitzará per " +"Aquesta opció detectarà automàticament l'àrea d'ompliment sòlid intern " +"estreta. Si està activat, s'utilitzarà un patró concèntric per a l'àrea per " +"accelerar la impressió. En cas contrari, el patró rectilini s'utilitza per " "defecte." msgid "invalid value " @@ -15016,35 +15521,35 @@ msgid "" "custom G-code travels somewhere else, it should write to this variable so " "OrcaSlicer knows where it travels from when it gets control back." msgstr "" -"Posició de l'extrusora al començament del bloc de codi-G personalitzat. Si " -"el codi-G personalitzat es mou a un altre lloc, s'hauria d'escriure a " -"aquesta variable perquè PrusaSlicer sàpiga des d'on es mou quan recuperi el " -"control." +"Posició de l'extrusora al principi del bloc de codi G personalitzat. Si el " +"codi G personalitzat viatja a un altre lloc, hauria d'escriure a aquesta " +"variable perquè OrcaSlicer sàpiga des d'on viatja quan recuperi el control." msgid "" "Retraction state at the beginning of the custom G-code block. If the custom " "G-code moves the extruder axis, it should write to this variable so " "OrcaSlicer de-retracts correctly when it gets control back." msgstr "" -"Estat de retracció al començament del bloc de codi-G personalitzat. Si el " -"codi-G personalitzat mou l'eix de l'extrusora, hauria d'escriure a aquesta " -"variable perquè PrusaSlicer es retiri correctament quan recuperi el control." +"Estat de retracció al principi del bloc de codi G personalitzat. Si el codi " +"G personalitzat mou l'eix de l'extrusora, hauria d'escriure a aquesta " +"variable perquè OrcaSlicer es retiri correctament quan recuperi el control." msgid "Extra de-retraction" msgstr "Deretracció extra" msgid "Currently planned extra extruder priming after de-retraction." msgstr "" -"En l'actualitat es preveu un cebament addicional de l'extrusora després de " -"la deretracció." +"Imprimeix extrusora addicional previst actualment després de la retirada." msgid "Absolute E position" -msgstr "" +msgstr "Posició E absoluta" msgid "" "Current position of the extruder axis. Only used with absolute extruder " "addressing." msgstr "" +"Posició actual de l'eix de l'extrusora. Només s'utilitza amb l'adreçament " +"absolut d'extrusora." msgid "Current extruder" msgstr "Extrusora actual" @@ -15094,14 +15599,16 @@ msgstr "S'utilitza extrusora?" msgid "" "Vector of booleans stating whether a given extruder is used in the print." msgstr "" -"Vector de booleans que indica si s'utilitza un extrusor donat en la " +"Vector de booleans que indica si s'utilitza una extrusora determinada a la " "impressió." msgid "Has single extruder MM priming" -msgstr "" +msgstr "Té una imprimació MM d'extrusora única" msgid "Are the extra multi-material priming regions used in this print?" msgstr "" +"S'utilitzen les regions d'imprimació multimaterial addicionals en aquesta " +"impressió?" msgid "Volume per extruder" msgstr "Volum per extrusora" @@ -15267,12 +15774,14 @@ msgid "Name of the physical printer used for slicing." msgstr "Nom de la impressora física utilitzada per laminar." msgid "Number of extruders" -msgstr "" +msgstr "Nombre d'extrusores" msgid "" "Total number of extruders, regardless of whether they are used in the " "current print." msgstr "" +"Nombre total d'extrusores, independentment de si s'utilitzen a la impressió " +"actual." msgid "Layer number" msgstr "Número de capa" @@ -16220,18 +16729,20 @@ msgid "" "The selected bed type does not match the file. Please confirm before " "starting the print." msgstr "" +"El tipus de llit seleccionat no coincideix amb el fitxer. Si us plau, " +"confirmeu abans de començar la impressió." msgid "Time-lapse" -msgstr "" +msgstr "Time-lapse" msgid "Heated Bed Leveling" -msgstr "" +msgstr "Nivell de llit calefactat" msgid "Textured Build Plate (Side A)" -msgstr "" +msgstr "Placa de construcció amb textura (costat A)" msgid "Smooth Build Plate (Side B)" -msgstr "" +msgstr "Placa de construcció llisa (costat B)" msgid "Unable to perform boolean operation on selected parts" msgstr "No es pot realitzar una operació booleana amb les peces seleccionades" @@ -16376,8 +16887,7 @@ msgstr "" "El tipus de filament no està seleccionat, torneu a seleccionar el tipus." msgid "Filament serial is not entered, please enter serial." -msgstr "" -"No s'ha introduït el número de sèrie del filament, si us plau, introduïu-lo." +msgstr "No s'ha introduït la sèrie del filament, introduïu la sèrie." msgid "" "There may be escape characters in the vendor or serial input of filament. " @@ -16423,8 +16933,8 @@ msgstr "" "Vols reescriure'l?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Canviaríem el nom dels perfils seleccionats com a \"Proveïdor Tipus " @@ -16453,7 +16963,7 @@ msgid "Create Type" msgstr "Crea un Tipus" msgid "The model is not found, please reselect vendor." -msgstr "El model no s'ha trobat, torneu a triar proveïdor." +msgstr "No s'ha trobat el model, torneu a seleccionar el proveïdor." msgid "Select Model" msgstr "Seleccionar Model" @@ -16504,10 +17014,11 @@ msgid "The printer model was not found, please reselect." msgstr "No s'ha trobat el model d'impressora, torneu a seleccionar." msgid "The nozzle diameter is not found, please reselect." -msgstr "El diàmetre del broquet no s'ha trobat, torneu a seleccionar-lo." +msgstr "No es troba el diàmetre del broquet, torneu a seleccionar-lo." msgid "The printer preset is not found, please reselect." -msgstr "El perfil de la impressora no s'ha trobat, torneu a seleccionar-lo." +msgstr "" +"No s'ha trobat el valor predefinit de la impressora, torneu a seleccionar-lo." msgid "Printer Preset" msgstr "Perfil d'Impressora" @@ -16585,7 +17096,7 @@ msgid "" "You have not selected the vendor and model or entered the custom vendor and " "model." msgstr "" -"No heu seleccionat el proveïdor i el model o n heu introduït el proveïdor i " +"No heu seleccionat el proveïdor i el model ni heu introduït el proveïdor i " "el model personalitzats." msgid "" @@ -16713,8 +17224,8 @@ msgid "" "User's filament preset set. \n" "Can be shared with others." msgstr "" -"Conjunt de perfils de filament de l'usuari. \n" -"Es pot compartir amb altres persones." +"Conjunt predefinit de filaments de l'usuari. \n" +"Es pot compartir amb els altres." msgid "" "Only display printer names with changes to printer, filament, and process " @@ -17771,11 +18282,8 @@ msgstr "" "augmentar adequadament la temperatura del llit pot reduir la probabilitat de " "deformació." -#~ msgid "Current Cabin humidity" -#~ msgstr "Humitat de la cabina" - -#~ msgid "Stopped." -#~ msgstr "Aturat." +#~ msgid "Orca Slicer" +#~ msgstr "Orca Slicer" #, c-format, boost-format #~ msgid "Connect failed [%d]!" @@ -17799,19 +18307,6 @@ msgstr "" #~ "S'ha produït un error en la Connexió de Xarxa LAN ( Enviant un fitxer " #~ "d'impressió )" -#~ msgid "" -#~ "Step 1, please confirm Orca Slicer and your printer are in the same LAN." -#~ msgstr "" -#~ "Pas 1: Confirmeu que Orca Slicer i la impressora es troben a la mateixa " -#~ "LAN." - -#~ msgid "" -#~ "Step 2, if the IP and Access Code below are different from the actual " -#~ "values on your printer, please correct them." -#~ msgstr "" -#~ "Pas 2: Si la IP i el Codi d'Accés següent són diferents dels valors reals " -#~ "de la impressora, corregiu-los." - #~ msgid "Step 3: Ping the IP address to check for packet loss and latency." #~ msgstr "" #~ "Pas 3: Feu ping a l'adreça IP per comprovar si hi ha pèrdua de paquets i " @@ -17820,9 +18315,6 @@ msgstr "" #~ msgid "IP and Access Code Verified! You may close the window" #~ msgstr "IP i Codi d'Accés verificats! Podeu tancar la finestra" -#~ msgid "Force cooling for overhang and bridge" -#~ msgstr "Força la refrigeració per voladís i pont" - #~ msgid "" #~ "Enable this option to optimize part cooling fan speed for overhang and " #~ "bridge to get better cooling" @@ -17860,93 +18352,17 @@ msgstr "" #~ "inferior. 0%% significa forçar la refrigeració de tot el perímetre " #~ "exterior sense importar el grau de voladís" -#~ msgid "Bridge infill direction" -#~ msgstr "Angle del farciment del pont" - -#~ msgid "Bridge density" -#~ msgstr "Densitat del pont" - #~ msgid "" #~ "Density of external bridges. 100% means solid bridge. Default is 100%." #~ msgstr "" #~ "Densitat dels ponts exteriors. 100% significa pont sòlid. Per defecte és " #~ "del 100%." -#~ msgid "" -#~ "Improve shell precision by adjusting outer wall spacing. This also " -#~ "improves layer consistency.\n" -#~ "Note: This setting will only take effect if the wall sequence is " -#~ "configured to Inner-Outer" -#~ msgstr "" -#~ "Millora la precisió de la carcassa ajustant l'espaiat del perímetre més " -#~ "exterior. Això també millora la consistència de la capa.\n" -#~ "Nota: Aquest paràmetre només tindrà efecte si la seqüència de paret està " -#~ "configurada a Interior-Exterior" - #~ msgid "Thick bridges" #~ msgstr "Ponts gruixuts" -#~ msgid "" -#~ "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 overridden by disable_fan_first_layers." -#~ msgstr "" -#~ "Aquesta velocitat del ventilador s'aplica durant totes les interfícies de " -#~ "suport, per poder debilitar la seva unió amb una alta velocitat del " -#~ "ventilador.\n" -#~ "Definiu en -1 per desactivar aquesta sobreescriptura.\n" -#~ "Només es pot anul·lar per disable_fan_first_layers." - -#~ 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 "" -#~ "Un valor més baix dóna lloc a transicions de velocitat d'extrusió més " -#~ "suaus. Tanmateix, això resulta en un fitxer gcode significativament més " -#~ "gran i més instruccions per processar per a la impressora. \n" -#~ "\n" -#~ "El valor predeterminat a 3 funciona bé en la majoria dels casos. Si la " -#~ "impressora s'entrebanca, augmenteu aquest valor per reduir el nombre " -#~ "d'ajustos realitzats\n" -#~ "\n" -#~ "Valors permesos: 1-5" - -#~ msgid "" -#~ "The minimum printing speed that the printer will slow down to to attempt " -#~ "to maintain the minimum layer time above, when slow down for better layer " -#~ "cooling is enabled." -#~ msgstr "" -#~ "La velocitat mínima d'impressió a la qual la impressora disminuirà per " -#~ "intentar mantenir el temps mínim de capa anterior, quan \"alentir per a " -#~ "un millor refredament de la capa\" està habilitat." - -#~ 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 "" -#~ "normal( auto ) i arbre( auto ) s'utilitzen per generar suports " -#~ "automàticament. Si se selecciona normal( manual ) o arbre( manual ), " -#~ "només es generen suports forçats" - -#~ msgid "normal(auto)" -#~ msgstr "normal( auto )" - -#~ msgid "tree(auto)" -#~ msgstr "arbre( auto )" - -#~ msgid "normal(manual)" -#~ msgstr "normal( manual )" - -#~ msgid "tree(manual)" -#~ msgstr "arbre( manual )" +#~ msgid ", ver: " +#~ msgstr ", ver: " #~ msgid "ShiftLeft mouse button" #~ msgstr "Màj+Botó esquerre del ratolí" @@ -17958,96 +18374,12 @@ msgstr "" #~ msgid "Scale" #~ msgstr "Escalar" -#~ msgid "Orca Slicer " -#~ msgstr "Orca Slicer " - -#~ msgid "Cool plate" -#~ msgstr "Base Freda" - #~ msgid "Lift Z Enforcement" #~ msgstr "Forçar elevació Z" #~ msgid "Z hop when retract" #~ msgstr "Salt en Z quan hi ha retracció" -#~ msgid "Reverse on odd" -#~ msgstr "Invertir en capes senars" - -#~ 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 "" -#~ "Extruir perímetres que tenen una part sobre un voladís en sentit invers " -#~ "en capes senars. Aquest patró alternatiu pot millorar dràsticament els " -#~ "voladissos pronunciats.\n" -#~ "\n" -#~ "Aquest ajustament també pot ajudar a reduir la deformació( warping ) de " -#~ "peces a causa de la reducció de les tensions a les parets de la peça." - -#~ 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 recommended 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 "" -#~ "Aplicar la lògica dels perímetres inversos només sobre perímetres " -#~ "interns. \n" -#~ "\n" -#~ "Aquest ajustament redueix considerablement les tensions de les peces, ja " -#~ "que ara es distribueixen en direccions alternes. Això hauria de reduir la " -#~ "deformació( warping ) de peces alhora que manté la qualitat de la paret " -#~ "externa. Aquesta característica pot ser molt útil per a material propens " -#~ "al warping, com ABS / ASA, i també per a filaments elàstics, com TPU i " -#~ "Silk PLA. També pot ajudar a reduir la deformació( warping ) de les " -#~ "regions flotants sobre els suports.\n" -#~ "\n" -#~ "Perquè aquest ajustament sigui més efectiu, es recomana establir el " -#~ "llindar invers a 0 de manera que totes els perímetres interns " -#~ "s'imprimeixin en direccions alternes en capes senars, independentment del " -#~ "seu grau de voladís." - -#, no-c-format, no-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 "" -#~ "Nombre de mm que ha de tenir el voladís perquè la inversió es consideri " -#~ "útil. Pot ser un % o de l'amplada perimetral.\n" -#~ "El valor 0 permet la inversió en totes les capes senars independentment." - -#~ msgid "" -#~ "The direction which the wall loops are extruded when looking down from " -#~ "the top.\n" -#~ "\n" -#~ "By default all walls are extruded in counter-clockwise, unless Reverse on " -#~ "odd is enabled. Set this to any option other than Auto will force the " -#~ "wall direction regardless of the Reverse on odd.\n" -#~ "\n" -#~ "This option will be disabled if spiral vase mode is enabled." -#~ msgstr "" -#~ "La direcció en què s'extrudeixen els bucles de perímetre quan es mira cap " -#~ "avall des de la part superior.\n" -#~ "\n" -#~ "Per defecte, totes les parets s'extrudeixen en sentit contrari a les " -#~ "agulles del rellotge, tret que \"Parets invertides en capes imparells\" " -#~ "estigui habilitat. Triar una opció que no sigui Auto forçarà la direcció " -#~ "de la paret malgrat s'habiliti \"Parets invertides en capes imparells\".\n" -#~ "\n" -#~ "Aquesta opció es desactivarà si el mode gerro en espiral està habilitat." - #~ msgid "" #~ "While printing by Object, the extruder may collide skirt.\n" #~ "Thus, reset the skirt layer to 1 to avoid that." @@ -18055,171 +18387,20 @@ msgstr "" #~ "Mentre s'imprimeix per Objecte, l'extrusora pot xocar amb la faldilla.\n" #~ "Per tant, restabliu la capa de faldilla a 1 per evitar-ho." -#~ msgid "" -#~ "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 "" -#~ "La geometria serà reduïda abans de detectar angles aguts. Aquest " -#~ "paràmetre especifica la longitud mínima de la desviació per a la " -#~ "reducció.\n" -#~ "0 per desactivar" - -#~ 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 commands 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 "" -#~ "Engegar el ventilador aquest nombre de segons abans de l'hora d'inici " -#~ "programat ( podeu utilitzar segons fraccionats ). Assumeix una " -#~ "acceleració infinita per a aquesta estimació temporal, i només tindrà en " -#~ "compte els moviments G1 i G0 ( Ajustament en Arc( arc fitting ) no és " -#~ "compatible ).\n" -#~ "No mourà comandes de ventilador des de Codis-G personalitzats ( actuen " -#~ "com una mena de \"barrera\" ).\n" -#~ "No mourà comandes de ventilador des de Codis-G d'inici si s'activa el " -#~ "'només Codi-G d'inici personalitzat'.\n" -#~ "Utilitzeu 0 per desactivar." - -#~ msgid "" -#~ "A draft shield is useful to protect an ABS or ASA print from warping and " -#~ "detaching from print bed due to wind draft. It is usually needed only " -#~ "with open frame printers, i.e. without an enclosure. \n" -#~ "\n" -#~ "Options:\n" -#~ "Enabled = skirt is as tall as the highest printed object.\n" -#~ "Limited = skirt is as tall as specified by skirt height.\n" -#~ "\n" -#~ "Note: With the draft shield active, the skirt will be printed at skirt " -#~ "distance from the object. Therefore, if brims are active it may intersect " -#~ "with them. To avoid this, increase the skirt distance value.\n" -#~ msgstr "" -#~ "Un escut contra corrents d'aire és útil per protegir una impressió ABS o " -#~ "ASA de la deformació i el despreniment del llit d'impressió a causa del " -#~ "corrent d'aire. Normalment només es necessita amb impressores de marc " -#~ "obert, és a dir, sense tancament. \n" -#~ "\n" -#~ "Opcions:\n" -#~ "Habilitat = la faldilla és tan alta com l'objecte imprès més alt.\n" -#~ "Limitat = la faldilla és tan alta com especifica l'alçada de la " -#~ "faldilla.\n" -#~ "\n" -#~ "Nota: Amb l'escut contra corrents d'aire actiu, la faldilla s'imprimirà a " -#~ "distància de faldilla de l'objecte. Per tant, si les vores d'adherència " -#~ "estan actives pot creuar-se amb elles. Per evitar-ho, augmenteu el valor " -#~ "de distància de la faldilla.\n" - #~ msgid "Limited" #~ msgstr "Limitat" #~ msgid "" -#~ "Minimum filament extrusion length in mm when printing the skirt. Zero " -#~ "means this feature is disabled.\n" -#~ "\n" -#~ "Using a non zero value is useful if the printer is set up to print " -#~ "without a prime line." +#~ "Your object appears to be too large. It will be scaled down to fit the " +#~ "heat bed automatically." #~ msgstr "" -#~ "Longitud mínima d'extrusió del filament en mm en imprimir la faldilla. " -#~ "Zero significa que aquesta funció està desactivada.\n" -#~ "\n" -#~ "L'ús d'un valor diferent de zero és útil si la impressora està " -#~ "configurada per imprimir sense una línia principal." +#~ "El vostre objecte sembla massa gran. Es reduirà automàticament per " +#~ "adaptar-se al llit." -#~ msgid "" -#~ "Adjust this value to prevent short, unclosed walls from being printed, " -#~ "which could increase print time. Higher values remove more and longer " -#~ "walls.\n" -#~ "\n" -#~ "NOTE: Bottom and top surfaces will not be affected by this value to " -#~ "prevent visual gaps on the ouside of the model. Adjust 'One wall " -#~ "threshold' in the Advanced settings below to adjust the sensitivity of " -#~ "what is considered a top-surface. 'One wall threshold' is only visible if " -#~ "this setting is set above the default value of 0.5, or if single-wall top " -#~ "surfaces is enabled." -#~ msgstr "" -#~ "Ajusteu aquest valor per evitar que s'imprimeixin perímetres curts sense " -#~ "tancar, cosa que podria augmentar el temps d'impressió. Els valors més " -#~ "alts eliminen més perímetres i més llargs.\n" -#~ "\n" -#~ "NOTA: Les superfícies inferior i superior no es veuran afectades per " -#~ "aquest valor per evitar buits visuals a la part exterior del model. " -#~ "Ajusteu \"Llindar d'un sol perímetre\" a la configuració avançada següent " -#~ "per ajustar la sensibilitat del que es considera una superfície superior. " -#~ "L'ajustament del \"Llindar d'un sol perímetre\" només és visible si " -#~ "aquesta opció de configuració s'estableix per sobre del valor " -#~ "predeterminat de 0,5 o si les superfícies superiors d'un sol perímetre " -#~ "estan habilitades." - -#~ msgid "Don't filter out small internal bridges (beta)" -#~ msgstr "No filtrar els petits ponts interns ( beta )" - -#~ msgid "" -#~ "This option can help reducing pillowing on top surfaces in heavily " -#~ "slanted or curved models.\n" -#~ "\n" -#~ "By default, small internal bridges are filtered out and the internal " -#~ "solid infill is printed directly over the sparse infill. This works well " -#~ "in most cases, speeding up printing without too much compromise on top " -#~ "surface quality. \n" -#~ "\n" -#~ "However, in heavily slanted or curved models especially where too low " -#~ "sparse infill density is used, this may result in curling of the " -#~ "unsupported solid infill, causing pillowing.\n" -#~ "\n" -#~ "Enabling this option will print internal bridge layer over slightly " -#~ "unsupported internal solid infill. The options below control the amount " -#~ "of filtering, i.e. the amount of internal bridges created.\n" -#~ "\n" -#~ "Disabled - Disables this option. This is the default behavior and works " -#~ "well in most cases.\n" -#~ "\n" -#~ "Limited filtering - Creates internal bridges on heavily slanted surfaces, " -#~ "while avoiding creating unnecessary internal bridges. This works well for " -#~ "most difficult models.\n" -#~ "\n" -#~ "No filtering - Creates internal bridges on every potential internal " -#~ "overhang. This option is useful for heavily slanted top surface models. " -#~ "However, in most cases it creates too many unnecessary bridges." -#~ msgstr "" -#~ "Aquesta opció pot ajudar a reduir la formació de forats a les superfícies " -#~ "superiors en models molt inclinats o corbats.\n" -#~ "\n" -#~ "Per defecte, es filtren petits ponts interns i el farciment sòlid intern " -#~ "s'imprimeix directament sobre el farciment poc dens. Això funciona bé en " -#~ "la majoria dels casos, accelerant la impressió sense comprometre massa la " -#~ "qualitat superior de la superfície. \n" -#~ "\n" -#~ "No obstant això, en models molt inclinats o corbats, especialment on " -#~ "s'utilitza una densitat de farciment massa baixa i escassa, això pot " -#~ "resultar en l'enrotllament del farciment sòlid no suportat, causant " -#~ "formació de forats\n" -#~ "\n" -#~ "Si activeu aquesta opció, s'imprimirà la capa de pont intern sobre un " -#~ "farciment sòlid intern lleugerament sense suport. Les opcions següents " -#~ "controlen la quantitat de filtratge, és a dir, la quantitat de ponts " -#~ "interns creats.\n" -#~ "\n" -#~ "Desactivat: desactiva aquesta opció. Aquest és el comportament " -#~ "predeterminat i funciona bé en la majoria dels casos.\n" -#~ "\n" -#~ "Filtratge limitat: crea ponts interns en superfícies molt inclinades, " -#~ "alhora que evita crear ponts interns innecessaris. Això funciona bé per " -#~ "als models més difícils.\n" -#~ "\n" -#~ "Sense filtratge: crea ponts interns sobre tots els voladissos interns " -#~ "potencials. Aquesta opció és útil per a models de superfície superior " -#~ "molt inclinats. No obstant això, en la majoria dels casos crea massa " -#~ "ponts innecessaris." - -#~ msgid "Shrinkage" -#~ msgstr "Encongiment" +#, fuzzy +#~| msgid "Shift+" +#~ msgid "Shift+G" +#~ msgstr "⌘+Maj+G" #~ msgid "" #~ "Enables gap fill for the selected surfaces. The minimum gap length that " @@ -18244,31 +18425,6 @@ msgstr "" #~ "superfícies superiors i inferiors\n" #~ "3. Enlloc: desactiva el farciment de buits\n" -#~ msgid "" -#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " -#~ "material for bridge, to improve sag" -#~ msgstr "" -#~ "Disminuïu lleugerament aquest valor ( per exemple 0,9 ) per reduir la " -#~ "quantitat de material per al pont, per millorar l'enfonsament" - -#~ 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 "" -#~ "Aquest valor regeix el gruix de la capa de pont intern. Aquesta és la " -#~ "primera capa sobre el farciment poc dens. Disminuïu lleugerament aquest " -#~ "valor ( per exemple 0,9 ) per millorar la qualitat de la superfície sobre " -#~ "el farciment poc dens." - -#~ msgid "" -#~ "This factor affects the amount of material for top solid infill. You can " -#~ "decrease it slightly to have smooth surface finish" -#~ msgstr "" -#~ "Aquest factor afecta la quantitat de material per al farciment sòlid " -#~ "superior. Podeu disminuir-lo lleugerament per tenir un acabat superficial " -#~ "suau" - #~ msgid "This factor affects the amount of material for bottom solid infill" #~ msgstr "" #~ "Aquest factor afecta la quantitat de material per al farciment sòlid " @@ -18284,13 +18440,6 @@ msgstr "" #~ msgid "Speed of bridge and completely overhang wall" #~ msgstr "Velocitat per a ponts i perímetres completament en voladís" -#~ 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 "" -#~ "Velocitat del pont intern. Si el valor s'expressa en percentatge, es " -#~ "calcularà a partir de la bridge_speed. El valor predeterminat és del 150%." - #~ msgid "Time to load new filament when switch filament. For statistics only" #~ msgstr "" #~ "Temps per carregar nou filament quan canvia de filament. Només per a " @@ -18351,19 +18500,6 @@ msgstr "" #~ "temperatura, la temperatura real de la cambra no hauria de ser alta per " #~ "evitar obstruccions, pel que 0, que significa apagar, és molt recomanable" -#~ msgid "" -#~ "Different nozzle diameters and different filament diameters is not " -#~ "allowed when prime tower is enabled." -#~ msgstr "" -#~ "No es permeten diferents diàmetres de broquet i diferents diàmetres de " -#~ "filament quan s'habilita la Torre de Purga." - -#~ msgid "" -#~ "Ooze prevention is currently not supported with the prime tower enabled." -#~ msgstr "" -#~ "Actualment, la Prevenció d'Ooze( goteig ) no és compatible amb la Torre " -#~ "de Purga habilitada." - #~ msgid "" #~ "Interlocking depth of a segmented region. Zero disables this feature." #~ msgstr "" @@ -18373,6 +18509,12 @@ msgstr "" #~ msgid "Wipe tower extruder" #~ msgstr "Extrusor de la Torre de Purga" +#~ msgid "Split the selected object into mutiple objects" +#~ msgstr "Partir l'objecte seleccionat en múltiples objectes" + +#~ msgid "Split the selected object into mutiple parts" +#~ msgstr "Partir l'objecte seleccionat en múltiples peces" + #~ msgid "Associate prusaslicer://" #~ msgstr "Associar prusaslicer://" @@ -18484,22 +18626,27 @@ msgstr "" #~ msgstr "HMS" #, fuzzy +#~| msgid "Unsaved Changes" #~ msgid "Actions For Unsaved Changes" #~ msgstr "Canvis no desats" #, fuzzy +#~| msgid "Reset scale" #~ msgid "Preset Value" #~ msgstr "Valor predefinit esquerre" #, fuzzy +#~| msgid "Modified G-codes" #~ msgid "Modified Value" #~ msgstr "Valor modificat" #, fuzzy +#~| msgid "User Preset" #~ msgid "Use Preset Value" #~ msgstr "Perfil d'usuari" #, fuzzy +#~| msgid "Save file as:" #~ msgid "Save Modified Value" #~ msgstr "Desa el fitxer com a:" @@ -18512,6 +18659,10 @@ msgstr "" #~ "Voleu desar aquests paràmetres canviats (valor modificat)?" #, fuzzy +#~| msgid "" +#~| "You have changed some preset settings. \n" +#~| "Would you like to keep these changed settings (new value) after " +#~| "switching preset?" #~ msgid "" #~ "\n" #~ "Would you like to keep these changed settings(modified value) after " From dc4007104558c900b69312373dcc8dd1718aad72 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Tue, 25 Feb 2025 21:08:55 +0800 Subject: [PATCH 116/129] Revert unnecessary text changes --- src/libslic3r/PrintConfig.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index ae77db55d6..7ba48799a9 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -4934,7 +4934,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionFloatOrPercent(50., true)); def = this->add("tree_support_branch_angle", coFloat); - def->label = L("Branch angle"); + def->label = L("Tree support branch angle"); def->category = L("Support"); def->tooltip = L("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."); @@ -4968,7 +4968,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionFloat(25)); def = this->add("tree_support_branch_distance", coFloat); - def->label = L("Branch distance"); + def->label = L("Tree support branch distance"); def->category = L("Support"); def->tooltip = L("This setting determines the distance between neighboring tree support nodes."); def->sidetext = L("mm"); @@ -5032,7 +5032,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionFloat(0.8)); def = this->add("tree_support_branch_diameter", coFloat); - def->label = L("Branch diameter"); + def->label = L("Tree support branch diameter"); def->category = L("Support"); def->tooltip = L("This setting determines the initial diameter of support nodes."); def->sidetext = L("mm"); From fd8792f3428bbcd93634b897c2a04c75d8470ebf Mon Sep 17 00:00:00 2001 From: klylabs <198387982+klylabs@users.noreply.github.com> Date: Tue, 25 Feb 2025 13:39:53 +0000 Subject: [PATCH 117/129] Add Zink Override (#8373) * Add Zink Override Add Zink Override * Add Zink Override (#1) Add Zink Override * Fix escape literals * Fix Escape Literals (#2) * Add Zink Override Add Zink Override * Fix escape literals * Add checks for wayland/render gpu and manual user overrides --------- Co-authored-by: SoftFever --- src/platform/unix/BuildLinuxImage.sh.in | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/platform/unix/BuildLinuxImage.sh.in b/src/platform/unix/BuildLinuxImage.sh.in index 96cf25bc14..a7d6a76c11 100644 --- a/src/platform/unix/BuildLinuxImage.sh.in +++ b/src/platform/unix/BuildLinuxImage.sh.in @@ -43,6 +43,30 @@ export LD_LIBRARY_PATH="\$DIR/bin:\$LD_LIBRARY_PATH" # 1) OrcaSlicer will segfault on systems where locale info is not as expected (i.e. Holo-ISO arch-based distro) export LC_ALL=C +if [ "\$XDG_SESSION_TYPE" = "wayland" ] && [ "\$ZINK_DISABLE_OVERRIDE" != "1" ]; then + if command -v glxinfo >/dev/null 2>&1; then + RENDERER=\$(glxinfo | grep "OpenGL renderer string:" | sed 's/.*: //') + if echo "\$RENDERER" | grep -qi "NVIDIA"; then + if [ "\$ZINK_FORCE_OVERRIDE" = "1" ]; then + APPLY_OVERRIDE=1 + else + if command -v nvidia-smi >/dev/null 2>&1; then + DRIVER_VERSION=\$(nvidia-smi --query-gpu=driver_version --format=csv,noheader | head -n1) + DRIVER_MAJOR=\$(echo "\$DRIVER_VERSION" | cut -d. -f1) + [ "\$DRIVER_MAJOR" -gt 555 ] && APPLY_OVERRIDE=1 + fi + fi + + if [ "\$APPLY_OVERRIDE" = "1" ]; then + export __GLX_VENDOR_LIBRARY_NAME=mesa + export __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json + export MESA_LOADER_DRIVER_OVERRIDE=zink + export GALLIUM_DRIVER=zink + export WEBKIT_DISABLE_DMABUF_RENDERER=1 + fi + fi + fi +fi exec "\$DIR/bin/@SLIC3R_APP_CMD@" "\$@" EOF From 6587f270862c94c08ba3327651e5f9b43933f907 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Wed, 26 Feb 2025 14:43:41 +0800 Subject: [PATCH 118/129] Measure: Fix wrong diameter when selecting a circle feature (#8575) Suppress Eigen lazy evaluation by not using `auto`. VC++ compiler optimization does funny things with `intersection_pt` that breaks lazy evaluation. --- src/libslic3r/Measure.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Measure.cpp b/src/libslic3r/Measure.cpp index 0100c1574e..43e20a0373 100644 --- a/src/libslic3r/Measure.cpp +++ b/src/libslic3r/Measure.cpp @@ -1413,8 +1413,8 @@ void SurfaceFeature::translate(const Transform3d &tran) auto calc_world_radius = [&local_center, &local_normal, &tran, &world_center](const Vec3d &pt, double &value) { Vec3d intersection_pt; get_point_projection_to_plane(pt, local_center, local_normal, intersection_pt); - auto local_radius_pt = (intersection_pt - local_center).normalized() * value + local_center; - auto radius_pt = tran * local_radius_pt; + Vec3d local_radius_pt = (intersection_pt - local_center).normalized() * value + local_center; + Vec3d radius_pt = tran * local_radius_pt; value = (radius_pt - world_center).norm(); }; //m_value is radius From f6ac67e601a4254edd1f75f3902001f1d056bb96 Mon Sep 17 00:00:00 2001 From: Vovodroid Date: Wed, 26 Feb 2025 12:08:29 +0200 Subject: [PATCH 119/129] Fix VS2022 17.13 build failure (#8481) --- src/mcut/include/mcut/internal/frontend.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mcut/include/mcut/internal/frontend.h b/src/mcut/include/mcut/internal/frontend.h index ccc2a2babe..e12cbeaffe 100644 --- a/src/mcut/include/mcut/internal/frontend.h +++ b/src/mcut/include/mcut/internal/frontend.h @@ -42,6 +42,7 @@ #include #include #include +#include #include "mcut/internal/tpool.h" From 71b40f9bd54cdb33ab9cff6584770abbcb4dd18d Mon Sep 17 00:00:00 2001 From: wrathernaut <97267123+wrathernaut@users.noreply.github.com> Date: Wed, 26 Feb 2025 06:54:13 -0500 Subject: [PATCH 120/129] Add Lulzbot Taz 6 printer profile. (#8513) * Add files via upload Added Lulzbot Taz 6 profile, and supporting files images to add other printers in the future. * Add bed model and image for Taz Pro * Filament name clarifications and prep for GFL * Changes to align with GFL * GFL Integrated * Update version # to reflect changes to use GFL * format cleanup * cleanup format * cleanup format * correct discrepancy on max acceleration label/value --------- Co-authored-by: SoftFever --- .vscode/settings.json | 5 + resources/profiles/Lulzbot.json | 51 ++++++++ .../Lulzbot/Lulzbot Taz 4, 5_cover.png | Bin 0 -> 188001 bytes .../profiles/Lulzbot/Lulzbot Taz 6_cover.png | Bin 0 -> 101386 bytes .../Lulzbot/Lulzbot Taz Mini 2_cover.png | Bin 0 -> 296040 bytes .../Lulzbot/Lulzbot Taz Pro Dual_cover.png | Bin 0 -> 344110 bytes .../Lulzbot/Lulzbot Taz Pro S_cover.png | Bin 0 -> 315869 bytes .../Lulzbot/Lulzbot Taz Workhorse_cover.png | Bin 0 -> 286116 bytes .../Lulzbot/Taz_Pro_Dual_printbed.png | Bin 0 -> 159505 bytes .../Lulzbot/filament/Lulzbot 2.85mm ABS.json | 18 +++ .../Lulzbot/filament/Lulzbot 2.85mm PETG.json | 18 +++ .../Lulzbot/filament/Lulzbot 2.85mm PLA.json | 18 +++ resources/profiles/Lulzbot/lulzbot_logo.png | Bin 0 -> 47665 bytes .../machine/Lulzbot Taz 6 0.5 nozzle.json | 112 +++++++++++++++++ .../Lulzbot/machine/Lulzbot Taz 6.json | 12 ++ .../Lulzbot/machine/fdm_machine_common.json | 118 ++++++++++++++++++ .../0.18mm High Detail @Lulzbot Taz 6.json | 12 ++ .../0.25mm Standard @Lulzbot Taz 6.json | 109 ++++++++++++++++ .../Lulzbot/process/fdm_process_common.json | 70 +++++++++++ .../profiles/Lulzbot/taz_6_build_plate.stl | Bin 0 -> 1128984 bytes .../Lulzbot/taz_pro_dual_build_plate.stl | Bin 0 -> 580884 bytes 21 files changed, 543 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 resources/profiles/Lulzbot.json create mode 100644 resources/profiles/Lulzbot/Lulzbot Taz 4, 5_cover.png create mode 100644 resources/profiles/Lulzbot/Lulzbot Taz 6_cover.png create mode 100644 resources/profiles/Lulzbot/Lulzbot Taz Mini 2_cover.png create mode 100644 resources/profiles/Lulzbot/Lulzbot Taz Pro Dual_cover.png create mode 100644 resources/profiles/Lulzbot/Lulzbot Taz Pro S_cover.png create mode 100644 resources/profiles/Lulzbot/Lulzbot Taz Workhorse_cover.png create mode 100644 resources/profiles/Lulzbot/Taz_Pro_Dual_printbed.png create mode 100644 resources/profiles/Lulzbot/filament/Lulzbot 2.85mm ABS.json create mode 100644 resources/profiles/Lulzbot/filament/Lulzbot 2.85mm PETG.json create mode 100644 resources/profiles/Lulzbot/filament/Lulzbot 2.85mm PLA.json create mode 100644 resources/profiles/Lulzbot/lulzbot_logo.png create mode 100644 resources/profiles/Lulzbot/machine/Lulzbot Taz 6 0.5 nozzle.json create mode 100644 resources/profiles/Lulzbot/machine/Lulzbot Taz 6.json create mode 100644 resources/profiles/Lulzbot/machine/fdm_machine_common.json create mode 100644 resources/profiles/Lulzbot/process/0.18mm High Detail @Lulzbot Taz 6.json create mode 100644 resources/profiles/Lulzbot/process/0.25mm Standard @Lulzbot Taz 6.json create mode 100644 resources/profiles/Lulzbot/process/fdm_process_common.json create mode 100644 resources/profiles/Lulzbot/taz_6_build_plate.stl create mode 100644 resources/profiles/Lulzbot/taz_pro_dual_build_plate.stl diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000000..a490b614a3 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "githubPullRequests.ignoredPullRequestBranches": [ + "main" + ] +} \ No newline at end of file diff --git a/resources/profiles/Lulzbot.json b/resources/profiles/Lulzbot.json new file mode 100644 index 0000000000..ad3f399488 --- /dev/null +++ b/resources/profiles/Lulzbot.json @@ -0,0 +1,51 @@ +{ + "name": "Lulzbot", + "url": "https://ohai.lulzbot.com/group/taz-6/", + "version": "02.03.00.00", + "force_update": "0", + "description": "Lulzbot configurations", + "machine_model_list": [ + { + "name": "Lulzbot Taz 6", + "sub_path": "machine/Lulzbot Taz 6.json" + } + ], + "process_list": [ + { + "name": "fdm_process_common", + "sub_path": "process/fdm_process_common.json" + }, + { + "name": "0.25mm Standard @Lulzbot Taz 6", + "sub_path": "process/0.25mm Standard @Lulzbot Taz 6.json" + }, + { + "name": "0.18mm High Detail @Lulzbot Taz 6", + "sub_path": "process/0.18mm High Detail @Lulzbot Taz 6.json" + } + ], + "filament_list": [ + { + "name": "Lulzbot 2.85mm ABS", + "sub_path": "filament/Lulzbot 2.85mm ABS.json" + }, + { + "name": "Lulzbot 2.85mm PETG", + "sub_path": "filament/Lulzbot 2.85mm PETG.json" + }, + { + "name": "Lulzbot 2.85mm PLA", + "sub_path": "filament/Lulzbot 2.85mm PLA.json" + } + ], + "machine_list": [ + { + "name": "fdm_machine_common", + "sub_path": "machine/fdm_machine_common.json" + }, + { + "name": "Lulzbot Taz 6 0.5 nozzle", + "sub_path": "machine/Lulzbot Taz 6 0.5 nozzle.json" + } + ] +} diff --git a/resources/profiles/Lulzbot/Lulzbot Taz 4, 5_cover.png b/resources/profiles/Lulzbot/Lulzbot Taz 4, 5_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..cfa1070fca2ac1bc907fe746a04573781083ab1b GIT binary patch literal 188001 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%0DPDr^BEbD6Nab>oFER!4R$vt? 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

  • idp|DDW@^3^-Rdw1ayeqqc- z&IFFy&w{{dN4NL)LYPaqigBj{B*54Zikfjx69#h1l3|D-UY&F*z?N`DDU-$^3)?b! z4u+Mz{Ko+NwfBlEdf1PT6>2gZ9S<2Yjfb+9-&EX&cO{t+qo?gK4WBkWeA;icn>UV5 zo9^G!Eak6X4^P>U%P|(Ul~=d;L{n5VVMr5<31{;&4HwO*#dkL}KKwbmrf_F6RIe#h zF@T9hI5yv8fNh3-KCTJmTgSZT7=m5Cj396s9>L?jo!SmToM>Rwvvf92-pEb>``HP> z+9_mJH5*N-^3Y88Rg1WgU097Z|Mq#)A{oq>|1_w?)ncfy_C=9q+T5Zb03> z_$>0R41$PTK1$SZ6D&?g7hU(YLBt42I6FT6wYVlWw*Kn)ixkFgD^D^$KsaxFH z9Oxb!CXDmeU(E$S_x1QSIyWLZq3pblejYj3&osi!F6su`1DxcRJe;2??WgBU7`PSA z#xW1xq%l9gX>93s@8384$)7wkY~QwZ_|T4rI7U!IAa8{;LIf8LR}+l^dX&K7tx%Ib zA(8b<<2N2O?!zMEs44Zy;;c-e-K^#Sr&ndxFv_7-Er*vI!R)ZA36l~Y4Ss|QFsB4i z7eqCIY~Cg0t`;^TDxAWxcuaTwEaS8(R!QNey%*RE#saVR!6CvEuv6BF=MuILMDX-{ zd!vvc!&x?#9>}{hV)sh?#F0ry-)8TA?cKvEdD5k3T2G&(RjCD~h=tEs(OSBDaU9*# zm3S?CrMt#cd?>_p+66He(PBZ^=;(zEsL{7uI{i|9JflMbHxth!t^GeXbblo*6hI1? z>`Kn&K7|YdK!Jh~DWO!tDZ-`syAjX>sTB{wVqAq!U^vV|$T&P!z<|p{&=A+k#6S0o z5*oo|`H_&~bJ0s{c)S0_!>i}`TI2;jU}cGvGtw}p$H}7@sPTX__CIxLbcH}XGXLW0 zlslW9FjlZQX}p}_lZRJVvsyLFyiJ6RJBwYRV&6?RCpv`6Z=$&q2mgoC^aNx!O=` zk?;HDl)y1^BG&f0c5X%w*J4o}&zy}+=FckP&9j3wvOFy#n5gYH57?AD;$f zI_`+CF@H^GHME?VQX!D_qfdYs2AT@Txy#NziGpS1!X7?rVg98#A<)#SgcWU#32PHFmy|T7gI7HA zqKe~kwiCRWxACit2%43vJf=`f;GU;alk!le!ljNjAZT1ZS5PT%nue3Zp)QL%F+K_y zX)+N$UDySi4(d@`f<`80*DjxBeYQ9`19z54RYSeTeO~e-3S||d$Q!74`^L- zj>n-@T@)Q{OF^Vs6Qicn^EcBHGM)=_@jY6RRhghllU>i^L*5Ft8CK@zR-ic{h%#>? z48p~^&Oa$&)MC7^$7=x5aL{;aLYRD--E&bM+;lZdO~?5fg;2B;?M?6~Ffxp4f};zW z{x;u=Q#dGaBB10l!XmJtRk*I<$*Z~R?Q`1n@M%Boho4^<7Hngder$^>-;j$ILW7*}*jD{KXV!=jv-QfM$Q<7Pj#maINSqtRYMGn$NH z#8cy`jehMI1L^w;R3?KXKqx2WEy2@iSi*z=lq>0?|J6T{EPrfaw(hPsrC8GRx||Ly zUeza+GYJaqCeCZdn?$)m8~IITIc0rkIFJ0w|N2YA(7zFIRs1D|&{eU10FP-xRwGyl z%<#qjy`qXGdvU2SSTxN9f=gtXFrjHw4Q@R3HKwMg$5xTc+mKdM{hip&Z;aF|6YmbM zzZb{+;M_~mF1dr6)apk18h26#%U&(m9==GWkU+TL&7L@#d8eOC>F$7r`T$s_o!@1K zTbH4`jZ)YOnoBlb1dww?7v1%YCKG`q+%{CoJws&TP)tD+Ef!Q;&6Z#xzN>KYQ(K}l zB1fVk^eBrOQZG*qrP}z>Wc*SG(CT5di5{Vw+lpih`0CVl*WT_RH#J5L8vy3#eF&@c%(z6 zT`-)IN2Y$FvCwU}82TuCTq(@eZqs*TI^!;7Dy-@(gjgbyDIw7U5Y};zzkt{Ez7f+A zAkESk-UzTs+z(Xnm~GK`T9_0v(+y}ss3Pg4Vqns#`5r^p|e^GdQj#poZD$bFz<#oeQo-B~{@LT=ayz#VW;vd4cP}ddE;3xJArm^xD169)e;Z4NSK5OU-qe?3)OlkM zg=X$WVS|R#HIxz}3Yb;~@-Yl2@j1X5K{G9gNE<<D?D-KQ#b z;+j-iRbm%96@#jb#YR+ITCWoQ4N9ZfG|{K+E!OzDUf3Av&yZzOo?^U-=2)~Y2A4=S zxRTQKiOYELP&hzo8tyWL1fnAXDFZJO=MXBxE(OYETDd3WZTt?yN^8)MA6MLZ<*G~R zv#egZ!`X>vzlxV36%8YQ=7AuvYBOQ103p4?#`8~eITxkf6{Zp%5g^zVE+s@1PS~5f zv>qFNPbWOWn^qHngIii<-b;K%Anu}*2uZ66J!Jy?d}+GHG*cd?>46LFJwYOmkA-o{ zd%DiXh>I+}e_iCgzymI4N!N}Y8WI%TajQWNLFA3k*d=r z?M(~1gaA_Ah|uBfhrkpb4!OK-z}2t}zZ}*vNnE)K)ieqf^2vNmX*dpzx@Mvvi7@d! z`j=2CA*1F~!>b;5)Mk3Q@+ObqEZ&o!IF!5aAt-p|8M`*k0!MkZr|G9ncTdBb4%dFI zFw-vN_r)pSy<0dPm+Pi#_%AHQbyM7M;15;si0ykJ?1Xqx$g9xmnNTXttJ+xnCvhv< z;%6uBRFcI}{#>{h(%HrZtz<+>r;w>L5IPJXoWBSJG=nQ`av8Z30(;=n1*<+mo%3;M zFA-J<7bl-<3Em+O^D7Lm{H*D65;@820eDxsG}2uS1SyiN7YGf755ubn#|Sdusi^=n zLn+c_=+)+NN)Qo_b~6sUD34{I{>doiwhW;F?}=TaSpEbBOCQF&ma!BSK1s7Me&sVs zU-1^knS@SkH%sVrh-#LW?V6?);5sp`ne;{ie&~Yd-5|TT(qvcVOt0*~m?Bt+JK=!q zXCZ}wb#)%sPj)MYT88T}>eb<`@DwKG%KRC64GzUZ(WKmn5_}{&5(lF;q0@=s2p;@A z_l0uAWsSG5rO-VDx`yi-ZS>6&) zc`eFfdyh!rmJ|-DpfGQx4ALRmk5n@hcLY(Z1LF~dJP2K_6aSVwiL6k{WO4~05++Qc zlRDrbE(#spUHEjtk}w5J8%9}Q5kB~tP<#9oIu7sf>pyWdeVJ}AkMeJJBeaO7U2LY~ zRtb}UM@o?BmVdFCfVvu{xV@7RmuvC&JEgr=c;Q*dURBl!!q-ZEQ~hrVA!Lc(3!#g6 zF!&M`-(fDKRwKHv517yk@%SOTrsyRNi;gx1>=}Z^rVC4mh0PT%H6P=<1G@RQHWZKz zt_?8@BnH(h^;^=O{h;+cMVCP5jGCNBD}-}KLfB-S(0Vo7$&@K zbQjiF`}cT@)AY3Up1|ty11a9E@KgCMOdAyOnuf7B#zJ?|sl)AIlM-~F8-0h?3ldFm zn%EXZxap2tM(|j&r3w8`WiIA3)^rbXHF1s6$ofH1*DP-lGfmqiSs9wt@JV_Wa~BP3 ze!%Hq8~aE@Z8mn^ffxIvQP_Yh&j|r~{q)A|Dpz0xZpFu=G#}x$pTb6e^Xh)Sap|3R zp5@Tm{9}u|KPr_G7KTm3>2dpeQPdKeJ@8$=uLpl=5Q}T6#|k#h(c?_}^>|CXLE`F| z_%zR}!xMb*RS%kI>dd%iOEp&|Q5G-j-8@NI?t+0IgZod&`_ftqFYR@HU z3QUJ4yfJv%QqkIT5@(XGM-Yz&rFqGhg_O6ithc5RT- za;ebfxn$T<@o$pf%!s~so$lQ|z8gV)a4biN z@7i)p3Lde)83cdVRQPilu>?gm@<{=uYtgm@PXtX9DqSG>UJxfU&0P>gHr0%7z)t+9 z8~$`7p0<-~$sE#l|Na)7b}%*rO@t`yHwb1zojW~Et*~J-vkk0CSem+R~X5w`qTle zni-yM=%E}6Y0?sZlIqQe*= zU(@n$hd{Yz@o#>>Eh2n+!T!t&pu)UK?bx>|a7$2NBIs`kbZ!`lTX22-hRg6C60|YzyVv~R zLms!2+@`>73S5fEC_&x4!t-|GWPmPN-f^ literal 0 HcmV?d00001 diff --git a/resources/profiles/Lulzbot/Lulzbot Taz Pro S_cover.png b/resources/profiles/Lulzbot/Lulzbot Taz Pro S_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..0e7622014497b9c4e6f5918fc61ec94995ee7ab5 GIT binary patch literal 315869 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 z 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

    iGJk&uF7a5>15CWQvvJEvqw8Yd3n)jzVN{`@ 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 N@#a6d^MQZ!{{hx-u8{x$ literal 0 HcmV?d00001 diff --git a/resources/profiles/Lulzbot/Lulzbot Taz Workhorse_cover.png b/resources/profiles/Lulzbot/Lulzbot Taz Workhorse_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..6fd8c128c53ac3204ad94b1893c68c276a409185 GIT binary patch literal 286116 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 literal 0 HcmV?d00001 diff --git a/resources/profiles/Lulzbot/Taz_Pro_Dual_printbed.png b/resources/profiles/Lulzbot/Taz_Pro_Dual_printbed.png new file mode 100644 index 0000000000000000000000000000000000000000..8f915f9103df63e7c3ec422a256b1938fe7a739a GIT binary patch literal 159505 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

    Q?+u${4k=ZCCa@^He>r|#ni}x-PF1b3zIMh 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 z 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 J(-b( z`OW(?Zcc3uqDx0aqel&Pyvts28L&b=L8R%j z?$RSqN~OgH=CAo;#!IvUic2DwH_w|myl+&|{ASpJO`b2}(#Pf1Es2Nybyf86HH*VL zn?10YQBNH6vmG_U3ohfFwO2;p-?=D!`O&wFIffbSyZ&6#`yK5k4%m2pbamS;;lSq( zPcf?GqMu8?*ercfm+}5EFM9pD^KJcLt=MvX4h_v2#W^*jt#_Xh{e0x;MU1LZaZ}0s z(C4-J_YkSL{H}#-};h_75MhCY)G{vaW zIh#s$3~6h7#V#Xt&g5`mr3<5i4XaZe!weoro3j~Vo3PQ_7ezMv{bm)0 zulzd3`id>*5~E@9Ro&Xx`yY;<9zJpLltmvrvA3jqH639kV~#5p@6F`D=k2OK-0ywy zbK#inI~VC_0ws~h2`=Ni8;AK9+&L%wp{PNMW0=7s09)GQKWKLoO;|%7=_$kZn9Tpk z=uXQk#<(&{k>@fWU|@l^3@E#b;&~=bDZ>ECdY5CEF?8%Eo6@yIzFA_x88pI)RvPA+ zkc^BVVZm~vdpuvFVdNmf?Yn-x1nFk%2smBVB#U8bhUhaxJgxG0?nGpOB#dMphCS*s zGUHmq;uy9`!cr0?ZODK<$qb8z#S6@+JH2kys`6L8hArvqv$dQbJfmlRPk2`S5CYbn zFwV|jsTY|ozRHiiyX=`G!v)_?TlC4hV;mV{&X8Hhnw|c;#AQ63cU%~b{IU47%WsHf zNLtMBmTW5d;_m$ApFN2jy!C=0Trsyoc+E>Ad`8W_b(6W3D}Om;xQu63e^K`6hEd_^ z-;VS-h8fTbJsivSE}7ROyuSa(;pAYTUmm41f-YnIwcqx9_@__9`Td7jJ2Wkzl<`RA zJ+>#KrQHj{=3ZqPin4FGc-GNn{JmmO>aWI&!?(P_KF2Vl_nmu6CYl*f%-kaH z^b`0%X%0#rNS%=9nu7)($QPrDq~=IiP+1J`s3!`;cYhrd%McVZ5LS2=n< zh2dFWjB)au^TuU}71EYSx~#j_ZLTZC2-tG;&fotOd;HI%qW>P-I%-hAYl>0a4{{l&nco~ZeObQsF303zNT1Q# zE)MWn25ZQ@56>HLZHuVRMJ=NpUAH@0F{%TtI+zpdO*V(u%`J?Ej^58_6!%43#=F1d zN3Gte5tY^4-&xII4P8ca@1*F?+TWLb)3=Gk;Pn<>L-M>P^G=L5ob*XqUX!NIsto*w znOn3UF5`h+2S&4p_lcraot+*T`-;8pd6!Q;C|p(N;^^k@ez0SMj>pL=3HQjjr{;Ob zR(qznUbVxbij#Z#j6$7PHp1Fgdfpd%J1iRc_+e51E=9I2Q55QY#g1*4qei(5WcN?? zT1M@s9-r0jDg*39M*kvv0^9rT&{CgU18!F&tgYyOCjOCHUveQzqQ_%S?uBVsYVCwW ziv7RG9%{?3#-NPm>ca_R=jamunlbI7b7suzsSLz0gZq!>Jm&*nrhd96ag$sejnhp0~c{Ma6^Hbc-g>F0^k0MKRlbM@{{)a_Y#h zkBGMK-^G!^V_BDx?)G--+-dEj<0`cEIffbYx9%w!_-DS&e{RDFTv4j1Ca5579x#S9xZvn^PsFu!m#?Bwv|!2_bB zCvS1;AlEyWQM=u-WnG>c6a9Ksp)lgK$}@DN?|C<^EeP9vd1Exbby&L&MTi_qy-D;g9!TX6uK>AYC3!>T_XSd*v&sF@M}uboJD$eSU9q4Ze2vo|2lA zwbwVP!qim7dBMU-M~-mn`E6(IDLM6K>3_P6?R!V0O4}BM7hZb3&oRs>ykJjB7^#f4 zT|X+m=h~yg8!O%DGm86jE~CYX^^1cpe}@N#=ldMP46X&{cf-H_B2^R(iVhBEmGMjw z*LiL+Ja5~W>i&XfPm5Nbe{PCPII~?wwU#Y>v~E|Pae~ji7xuI~*E)Fosm=YBV;^2v zF+9=9kF9$o574J_87t0e?;kL9a5(b&BV!qo7Bk#6uWR$0_*LiM7q+?I_ZiiF)t-_j zD`X|#Weh#BzW+gsIpNEbQ$EKqgX_Q9_1$=RYW=W{;oV(M^%=!^;4 zMkT#L&+8ffoJwuFAZl}4mlU@$oHuTMTz{YMzw>vS=+JI1gHi6=;K&u7{ja+8h_3(f z{^B{q&FW+wX){=!%UIm8zCZ1t=24}G5AYeqY}fK?cQo?1z1Ao?eNAdHAtd%)s%JT61enXr+4+;kPV?rGfGLeYMix^o-9K&5&RfoN-g#B)^Gtk1;@pLO{uHTdaE{mW)Y3mLU= zRn7F~zZ%)~VV8l-M*7Hej$sDMbh3*8Q2CnrLFrZ@tJpX;@Brzp&<9zsZeN!3Z=4n%q9VcDm-| z+IF|HJ{Jbd;24z$l!hhGo38q0R_X3<^4Sicn9aMUJ#S>tErVm2(f*}6=^Y2xig#cei{p=5N-D>B4&B`nW8i^&1D{b?eP4NJ16y`;GC=Y< z#$`01QpqwH1>LVZSoRcE9bb-NNcccT62pw~4eFs>Sq;stLnjwRKQ1nezCC@rxw9at zIjmua0kzWSHESI2vMD^NAlga)X0EZDnobdXiaq)258GIEK!D( zAJI_RlSVd=wTc;mft#m_AhEZC~(4JbR*B4kq ztW_dC(U4QJX~VPeCqcm`W+!cz(MB0TdDQe9n#Hv!X;+YRhGD`SQ!CAkq_qR*!H$K| z@n4~?Cz`PCHI^|OLX^QMgjGfs!;zsVmY2uju4QpbYgWpXV&k zkd_BhI9-HUUZO41hD!LBN9kJz&zWJc_9JCiW7yi^#kJCJENSAjiJ%B0$*Cj{*4L_) z9{#V!2_pbp87hO*&0-h=KIZ0O%3IdG+tym??|;=Y2B>_^`9ZR9&FI?c$vc}{OvR756x$kUCo9cPQ7x<;j8aYD1r3WG6K9r2i>sV(PeE{6%+|0l{z(QMHTpHXhQl9DiHKVBMzFP~@kYy)*kpN5%MP37tHEQaxLqLqf# z4x}UulNa&F%|T69`XbzaH1I&afzK%9LH)xTWHi(sV4S@DM`UOWGf>9b*QuY>+L)GT zrMjbTBfRj0=INmNNhL1P~nULlCs2Xiw}@KauDTJO9`jzGT2vahx!eg zXc*dB8Teym3~JXb{lZ`=Kb!|RQ;k{G48x#>!Kg-GG|sSH#hzu z{P3@rtmT2mK*p;1W?m_-sro#N;c*NzG%Sp-Zk!MvH`M;_YoIZZG5z6&>Gw9}*<91- zSqzV3n4w`|OlZF#%>QZ_dY6I5K*sD_8>BzHS!C$*EQZH1%+Rnfx_`JKTzd3CD??)- z!wc%Chwo`+?a=3049|%nhO&im_?6Y8Utd1U%Fr0d=ze>>bm#L$hCa_?7~4e?#4tm{ zG2@`T=%U|_wK6mYGWyS|oBr&{mbPWk=fXJc~mOs+X~C4Qd82pFYd zpfn|6n4H5WF#q|Af>w$`SlbnZ6&<$>q}2sCw#ejp7Q@mYgJYO6A!wP&%@{1AGUIdT z%k87v!u@jE)zO+yY`g2BcUQPqW(OFh&&7_5OiO*^N3W)C>bd3!MzMx2LydqP%up0G z)Y*iLcLT#R-@s=S=16olA}0eRA8k8kxzuub&CyWct+R{{Of%B)O?MD>D8m&jlrH3CG0{hTGE4rG(`rCp7_; zukaYDQ_v$jQiP#c44E{fFWc>*tWcD6Qv^k;TZ!;236L?qv1O zhKY;}1Nnhki*&Ws{@->0g<1;~v)Mk+JQ!#UWN!7g zdBBz%a zgt-+(-PD7BjR)ft`^7M&_0R_(V&F^=|ohZA^1VUMTsPfrNi})aT0J(yny{45w8hO5pQ7 z1A31_wpOdpyE?jj;;Uh+e$9I!53oLxT^FfyFY6VR&=2SZ{LyPc24bMQ%G0o>1cvEo6N zgIWRhQ;)cu{XY$TEwq!6{T8TPw%dpI> zLEh1EV`|vkI~OvF({&k%?J^G6*&#(~Nz~^Ve1KBVD6~;;c%q?}o-AKwY7t_Xfj7>E zX0@$-85t(v&JG}5?12OuvN1Nu$S@kodyr9(G45}(rk%y8dEmh4^qI0=%lXXdYFP5) z>Tzd9d!p+0ji@nd2V?-H&xH|NVlO#X)S%amlL(Xc-KA$-fc@11)G@N=c>9H z%Pqsm@N8ScD1@OQ*!yOvN7ZktAv2&EK7kJlQ4(Pxmn--EVOGO^T@B}$TyGr7L1F}q z(lAh(k}zJ`G|c~Y?Q0?QI(B4!=IyK~XsFM#7y+X+43x`2+U66$az$~v2xC2=M#Tf; zIw)viXj(u`S(b12N$isWqR(kD1M4FGt2J`SU=&tpI!+Rl%jiGlwbal*?TU%V^WQw* zu3_<2hfW()mzws(sAXxEvKu`g>lr8)%_>d*!2%@^{7^vH4m1j z;Vi8Jje!hKSDy<5`kPMx?`jMfERXv{iWUZ=o*R&7S4_apVptkva11kQc4}=-ueXSE z@bH83{CHKyV^l7AVh1q-Mrjx*O-UG&%L~b1QP4zDIlUVgmiY!gqqJqnX4HJ+EdQgv(o!=j7hCKgM!+Zy z1EnbmQ#@MMNAmprk98H~~}P@0l3tX`s=eH&oR34LL?juYIm0WYqR~R(W-8)>n#ANd~F#p*( z3q^4)%3`PtXT}SfsNY;)jc#;SRAE33A2de64xM|`u;j<Vj$wv|h4HQ_S4~ZO0vQ?u87LX$=i#y#o-z=_3=IndEe~2C$j}(bfPXd*Xlu)u zKF?x!9K#F^3!_zUv*P~VSyqO|*wSF;FE{_y*7lb4xiC0C*jJi2Kxx>fWYpJBGP4B~ z%9YNxpp?KSkzw$Gd|edYSE^MOBNmdBaMeV2G(ui7m+?>a18mr*b;X=4HoFG&ZJ;qg zAvg6+rq8o1x1}B90mQ&R+Gpfml=Np|WyE;mNckyQU|1scQ zW@y;S4^y_pa_;G8diU|ny|pRhEW_|~-Jq;9EXlYwp~#%RmLD!9Jg;T(Mk9HjGYT~r zJ5r!~79$qp?iOJN@+PxqCPw3*q`ay}p&`O<{rIQS4hC!Md0WkU7GFrw7@$}yeeUE3 zwDJ*y5ier2>>}*ekNKt!zSTSr?Uik*wX`!^!;tNH<2M#W7w07{waS22D^IFr-F4qs2!FI58wH)bcILlYo@8#AVt*RW;&VS(FCDvCws>U3U zo<7sCod1AV}hgcQQ*~uEC#^V z4vujdvNj5 z3~Rgn_&X+RmnI|^a9p8r#=1p{SQTOzYQnCzgly^Qj^ z=1^W;23c-3DPN-?LoG)*gAYu;Tj{7#h~XNQlVPZVuXPQYXzj{wOEOYo8CboC3^25I zxiyLzK%qAY2IQgFhcNeQGWbC4P!#OY{!UJYp}J`?1FOs05AwXiLpFvjIu48;eyL|q zUK8duXxNc?!+D#hZ47^{Y3DKmMrjy!xQy~UOy4l|8y;nOn5)5au+6<%3m1e7mJW-q z`E~e0Msd0>118HiFt<7;YvziAJoN&?21^V^VXkNID|M`fSqw`vM4w}rfmx%gCJ8$R z+kcW;i`J4)we{O&PSka(o}5Jv48eTSXGl)V@tL?RhLr#Y$1vlYg$>gCZz35P2Dj}` z9Miy@^iF0~b@tPOjYgssqj0`@@~C|&rkIw27%UHO9Q?wn zyg%qx75g4kO&FzNyi3g4!5SB&W^J_hw+9-7v~tN1MywLdFntEG12M`**gdresC)yT zQT)5FSqwwK$ES=`-Z2vLkH@O+Df=B1Mee)R*FKp%GR*e79s+XBl&^%He$fm zSsa{*88oQ9eQvQ}n6LYeLf))7Qcx~~W^t^qG+k(-@-!@#_b`2i)*TaHDGGT$<>q#x zNzBe-7{!wQ2QxG*jJVHW^Fw1`Im*(Vn?!~_&tljUBhUmf%+RnfR-bxHxZkOxtPG8T z47|_PSNc4QVNbq56T~n>!@`*SR*UfT4fdCs>WIRsAFXXj& zSgULF{BHNW%WmlJ?;chqT5@2|B1Y+3A1#B+IBWmY{c1ng#{0wL7-nc#Mt22|T<5R9 z=wDbL3^WGma*sow>v+)Ai}-_jpnDh)F2A>7)-`!%bXQ`=|4&u1qwUPT49HM6Q0Q^2 z9wj>!9EM%5)%_QWf=4xslvE%5E33$=6{FaPmJt9B2BXwkr0X&U=a>2`C;Z!9=uz4mK_Qsdid(FqUF0XB4v`PkVqCZTuv@V$|{9G)ULKyS9Btg!dF=gs~Ti*3^Q;a0DhTP@o>ulSKGD^d0N5Wt`a=i`I4xQi6-~+Y1eA~WHhV>PX zk-0s0TWUbf*L-9IS^iB1U%7A2e#I?PZ*7ua;p3QG?^=)$0hFdBjJWJZcXY3I1WQ*GEdTbYX6f@E(NYo?wMczt z?z4ag7^PvP>oUH7WkTv6IxVZE&yi=&t0pr=#IUDj)hEiZb~p@mExfBJ=#HH=DlaQP z0@wfsqp(j#&t_yXRE(2@%)ol2o+OFE_8*a9!=i9Q?pc*W9rp(*vX-D*7{r+UzojWKJ8W0Q(Nq54GSZ-+{nBkYzEvuR^_&^V8{MlYSotgaEX$X^Y+tQue71k~2M1VRak^}WJ{MmR z!|t5Z69~uJ`_K545QGLE|24a|@VPQOY<|sea@D?jWV;}>2#Py7-KHoP3G0f1g zFg7e7>mPAUYb!%zAfx?n#*X-WwLafB12N3durM|~SLz?%=~R0MgvLMyW;}3GljZH3 zAu$O<+46jxk@4jGQ!(QeXpE+t+(061VLbckFu(Vy3qq6@cv0`mK(1*m(&t$Wd)`1% z$^gn`AZ_yrP-_(htrUf@TM`8=3`QXja7Ri`24t9z+cGc%Ue}ui1S@~d3RaHtnl0m< z)F^-4l3T2=INe+tim!+fFiOKfX-dLK^a{*xhGm!VY^|<*cdUQGHF;JmwouarL!XNb zVg!uRFiuLz^d*+Vk+seTorB zWcCI#MJWSXxs1eiv0QhzKzBXo#dBHWB&2Wt^BKjnwONc$tRy1m>w-E2yo_;mmKk3X6+KU5v%m33UisOJW>NteDY zGF--e{hmqPG;O%GgJYPXVX>q7y>xTKJJ>ds~Ik1VS|DGdE+*QPb_S|h+~*B^UM774Q7ovvzn1r zN>Jjs#N;Z8wp^Ln!DNMpX9u$wMg~5~E+k0jRkHOjHcbCqo8}P`(-_EbnA)X zV_jvQT1%hG&{MejTuKQs?4AilaY=L;qLKL6MsbUyVJYpe=GBYdxv8&ZXbfcJYOnUqKnyc9 zER4Ffz6g7)9c*Q23}l?MyHR@K2{r7mz3X#f+|s3Q^wT}{EQ2j%oAkLb#&1kVAFarb zwlDA4i&1J5P%gvzSDftQKBAA`Yq%WmRFqeo43zgP-|}D0+-y{7-D9%Lf>6xXu#~Gm zei`j={d*WjEP=)#-R0ZO?@hE9dHOty;c*NzG%Sot&t2(Xc8I;}KF}D*San3h^upU4 zSUdE27Q^EhW@uO#txNm+4F^?0egql=8SAH*7IkNRD?^`WF+7f8hK7alQ027$-DhpB z42^+|QF|MvmyZw``aFx_aSSswER5!dP)_Hv{474FhX>6PBH@a4i z(kHToL0Sd5v=S6E;`9v~vJyKGR(Ull=A~;NSud7do}sA4+w#+Mf3Im#IT?l+_#DHG zO&{i`=L{FN=W&hV(ynz7d7xqVFxJWblf(eUY>e)+e$yf_S~(~#`8gRzip*JPTFl@w z?Rk6?0@gfqZw%Hvbcd;iGrc9F5k9gqq9|s=^5g_4pz<}AlMJj!{o{z<8S66xtC{+y zHmPSm$vx!ouD*9QKOC)M4tn?5x0vT-1VWMZe!Rmiir6_VHzZjt)?NnQuNk)EE50M1 zQQEVBJPl{(2m3@(Iqgu(eJvR%qgoQBymC#00YZ^kC;b%_E`3D~PKdU>q8DyMY@IHh(=N+e)cI9MG*0XY49k37%O{=HB;BO9pj<|q`*)-cJ?|nvuhY1m z?01&8t+;i%{^oXRIl*)LEtUMcr#jZZ*1zP6ydp-e8J(9N+Dp!uxD56cGZY1na(T<(t*;oR=UB2C zbH?>gz1Q?c|G*QPyv8VIyC+{}Y-ykRe9~CIW5p+n7`3gemHB14TxVs%!%s=ge*Z>) z)mwM>1nNh#Hy=J>_LxsvrBA&?o_k(}=KWK7t!}h^MMh~DY?o2+#Z4AHWB+Akih{K) z58=~d4Ly$;tb2KO!ifC~?`C%FpcbKh)V(;GA9!x@1}$$jMxjmAGpbn(OM?uKVFubq zta*!!UTxnIt863k5^n-LKPew)n z%Nd0p2lh-rlPm^kmccU6pVQw^VEX_DS{RJdRZGaoVt{2nZVWRpV%7eNU;zh%TL89$ z?Q>${lckl=2mEH5WyX(HZ zRw`S1mVC}jW57_GfYRr};GO*}owd@iFi0!gmZvLyb zVi_<#(q1ak)qWzv+9rw}?>>8_e^tljwlB)4Tx@A~nZYOxtA^UYhEB{2pk-MM~; ztE$?!GozTTVJRi?+^c114ARv%Cs6ua7%YQhRGxYoBQK<6?FhsgvyMY!GG=psKEp69 zv-%pp>5(pLmBkPdhQTq+(4K+V5yQ*Kz6} z)-YXEDr-088E%bI24t{2gk?3O+l_;xCC`3oXIMC0UBN*8(6BJ9UiMGmYYb4#W}6gm zH8Zy4(RyaG?ucF=RxLBWGDu}4D7?dUZ8M7z3j!-)u)Of^=IP}ls>hZaxRD{=Wz?D@ zTcj`OFQ}XhkbGSM6`v&Xs*Z1x9(3ygIb|fMnbVu5|EeZ3T*mO*o+`V)gPikXJ95c` z*FBFJjMA{6M7D&D0r4mBb!7}OD6hJ6067Rx3*(>G)qv8J#3N06+#2FnLm)_FfMTum z`Mw#5VTOiZ^w3?R@#uXOunm@1(b+rH|Pf z76!?%rvb~$0Lo>&y!6cCc~6TB^p=!?{*KDiaF$lKx1=ae*JT)A1>!HXK1sSPFKg!j z80Kqsd6QN^o%x9DddOmk2*cnQW}x4tJ1#sAB^~7#a*=(cdo&=_VQtk1!= z3K<*lN!ndTA-ryu*{im5{~Wbe(*o-D@r~0xK9QC)iy zFLK+i&%yRQW-v;_K)DQ~P5hDkU`sq{b3E$3%;sqYn02FxBIZ@^Dm0RProYgIffY@ zpVBy;*QIJKIyj$sB$W$j&_WyfIqPvH29^9Cs;eNoW}l)y)cLr+*sBKo@sa~mv)3(Lred&NL$ zzceSq(jbG=Vg~Qz@x1LtUW9LjxdlGA`poXWs!6*3sr$z{=pXk%c){rU(TW!f92tMy z)HHqXdxCNqAFik${Z_gAH;AY`Dv@gXLxA z2S@=JjN+2-GLEa2A9b2NJzQ_>U=*{tu6W*(<@KYNC$0{!e#W(&b$1z1Nj~OG^&e(O zbo`#+b{_rq)jR)4+V;RO%-4Mzys)xax@M<8Eh>uvg6+L>x-9RFubW!g*AySH#DFDz zFak!Ev}&0_WibG@GB}1A8vbo;WN@cn{(kXE^KP;-GzQW)FK(IM^x>{$&mY%yi9Q#` z`J3KNy>j#5=&BDIr8tHeKelU?p7h|ZWqA`%TH<+|XB0#io;|4S#Lo+yHz#X2;54)Q z;?rHr9zW(V!>HauZZ`h>XJOp?%U1hdV!ws!8=3s5vTWO)SqURhhUOqp-M0R2Q7*$c z3ZKCI=V%2PDi0-5-@%Gb7>Yuz{r-cmGVfi7VQG-TX)y!!amJR<;AF5}|`^`j9ZSEp9b zFYq~r8K||BcdCqaJ@ccFKYcj0&9sS(;`fKkSbIW#ly~^UsZ-u4@HvJVc-Kx?QZcrp z+y0%SV}2@1Ene;B2Yb|I^f~r}@YT`v{bfcg?hmqe(P}rz_hK2JEi!F;xBC7YZ@S(^ zyW3=zpj-y$AY0D);pX6(4-`bxDhw~%{ju}_w9knWqdiO5wBgT%OQr8~-Cu`A_xI`* zE?pz#N>T9DhpkuI^6D}+{CrsS+}vJaLEQJzw3uOgGIN*4GH$-YwCx8^3)dP3qmVaE zD!*k>F5|VS1<|Lgh8N%YiD=cW+Z?M2_llv_{H@Q$GUh*D5IxdrO!1oMUCU8F;00Lg zGT6JEE_|i(;9c!GTYO;tnr~q1prT;Y(zj=3S_X$z=6}o$;8|T73gB8@2Z7M?Q^9 zV)wPv!f;}KbmZgGG7O4kVCHV~*o{`6%eXo9aQOPz{OGd#3w(}YM)wn%rTa|&B9?J+ zh2rqHg3eK=`wDzUg)N(>I}BKBQ7&UZBQIKcsTaLy>Ic7z*mAVTo#wq4%a~NzirrJmfh9e^P{p$rib4d%Nd0_p=@p?Jny`< z^`liYR)=qycNC-8CYLeE^rz>W*7|MJQgaM5_H75FSe|PKTdr*eMy5Ra#q(s83Ma`| zMl2Z7gTZ6xEJiFwdKsD)GcXqU*OpS7lDTRL5th%bE{AQI2eqA-*h$tWh`OPtbxZ2wF5FVEOP*P6^BHVhJ20{#Xw_# zVr%ueFn%zjqA8`TQ%9T81Z%==E%JPL@$|T~Z+@bFlY{t4TxpAp5_9h_k7Y`G z!nnlLs7050{wtt$- z_93@~51c5cwm2;fgW+mLj35^(o3Ww&t7XmqmOXKtmWIK=`p*2VgX22L42?k^C`0N5 zGpu9d{K$p+-#N%K=5K9oHQ6U4D+gUhQ!^@(wREdf066lTQGE_Ph-8#wSelfQB!(GS zp@Xl)3j&vZ3CqZ3(~4HDGOGZ>V3dZDADU8z0W)mh$Bp4U5UnIPV>FZtlmUG;jC2v6 z^V^e4RfbL9nxiqy&@eMB7$O|+G8=vaBjc+;IKt4FO)oV|7p?!dMP)H!A?9=@rNxZe zpC6QNIq@l1hLIEaj9Pd?i*&yQA|s2Dk%7Gtp7-k#=!>vYg z9w%>9f>vPYnR7l(o|9pyaxPWxFMw7W#u^*$w&cAAGK+(CE=4f|Z6cm$@*`t8qnM5L zw(>H>4n`rYH&W(eh*nrLSFM=6Z><=`Y^>ek4obFMv|_p33gJUh9gvEl)Rev#L<=lZ`3d`9uEQlykHI(M`8wgu0b{uRfRXXuVrw_LGS z%w{jR4AzS8gJ5}<5tzT`8~BXk+a0nPmIemLFoW-H@Vrm`QPJWBvf76pq^_mdQGC4S zq0ifO#TpAU7^PvLTt=JPrO`9BUX+upw9cWZx@JVLvtJ^E8H~~}P%fiNmD1?q+ArHR zFQ9b3O;Oo0#&jGN)#x+P?s@@3XFseR@r;K)7p<7VC=ILSNJ$uH)+mkEUo$sjInQ6H zJe}9bW~g-Nu3?~DM({#GRJiAcvd3PK6|C~VD3`Iz%%uM7`Ch5wZ^VxB=|U^+IisLUJAx3; z73Z2mmbvhl5rA4Ag;{5yG$mnNd|hdj-{@BBt99QsGJB6JFFWSWSxXd!*=!99a(PK|o-F3bl zTIoEz=S}H+C2}`zHeVOfQ)u6-G(bNa$hh1iDTf``4vpn?66w7jNw6Hw7vZgMW5bk-X9Yhr`OHev8?WddzLWU)oR9VXGarS9}vCO zqEb&rF`MOiUWZeTieB4wa8$8wjb4nZy0me+S?8V0_I`5P5|=TiXJOQKaY1y)yr+9{ z3^Q)%&?G(ivz^u^&uibZWz_bLJcEnCQ_Cyr@iZkpP)>|ZOcS>iGl{AWivtoKFH z^+(n0#WBpN_-vE(jH`DoTXoXerd*A$TNn*||C!e>-D&2?NO!i$_0{a&4~KX4%lB_I zYulLd`uIIredD?Jeb1gVirKCV)NlEk-x(ztyxQk7?)#5fm0AAcq8%Lz&2K>@{$ZP3 z#<)6#(d?~J(T6+C`Um-h*)F5m-h$}0bn&7gX112s&zS8pUhgwC{OI5j(VKsETFfYB zW3Cr#cTxu%7Tg?mdtg*_-q}YMF=}T2rs;#e6qL&t-=rvP(7Cfe{j~z0{lk94Y-Hmm zf16r>9>B!cdxh_BJ=KCk4mO|DjPDZxK>6!(0*0b*2!ceVFtYJ=^om@#; zZHKYs+XDZ9PJlCAK`Yu7_U`33M3=1?l4J&nw2M#Z=e&TKa>+V8N& zsg*Z>U&JWw4WR70j5GeYJSv#8I<==piG4@udz~DWBm6qY^l~+X@UMfpXKXYOc-cgF;bX~?q)50C!ukoTX z)3!5%<)OXO66$$7wiHB*pL(_DXH87GBCXIScAB?yDc(3P;~XQS(e$!Ko{_;Z%s|Vx zeEasL^2XUdtXXu!1mWEbaSFl{hvqO4?;fbB2y{7NOC}yJu>)MnV zO|%Zm#;h!eKDkTYA1Z^_>s&_n4r9tLe!U<%=n2y@P+AV-Z|vTY^)HhP*WFNjkLkgl z{G_xcx^j5@HwR@jkrpGvsD4NI)-5Cb3zi>Z--Ehl%D%$;WBqB{;!?8XuD8MkCtl${ zm^#eK56%OZacH=rY{&;U`F-b)UBoM+c*ChYm%;hL*0Oiq{K#8Y;9q@NyJG)OQwM2X zmRDbgywoxy&)f(!ytMeZcM75|ceuXdwN&<-=dH-=m0Ej7=jfgB(za_3qD|CN;xf#t zWlC2qIffalUu!|@oO%AkscB|q^b)f^$fz1Ox6G`#x(q&*g0%_URE9ZLtPklBV+-9z%D!S}?g$gx(aU3&h*WwaVTEvz&#KRR)NtRib#%s^kOcgJe+j+AJ9ukghB zoug`|@53n6u9lYx%4Kj#)RiCguC5jGT9}!8PuA`{U84ho*&3Go$Tz;qUt8b*()bGg z=`&f@AUR!FzU%aRa_AR;t&Z_JBpXjM$C&aI zY+)E>0%!!w;VayS3jgTYCH0loO@RUq2BWy1!@CZ{(!k)=KF%9AKmN6=Z}jwabtBNQ zlB;{cv2v_?cJ;aBIWrigVW3<_zbZqb&-#CE=PXg;bXU5f>YDMHhDAoqz>2%oN_XRF zc~u6UXE6dsX;`&N7_l9;lt6dgRR~Q~o`yxn(g*rRdpx;u5iz=V3~b%EqG4fdF#UzE zPm^7y8Ux*R4+~KGTo{wi91@MK@LA%kcutq)Y54!A6;LiCb^MTMUC+-l-qrmD@RiPy zf`R8EgBaGkic*HkNEi>l&^NkkUEPd#b>D)ft2vl3kk|5&(vG_ZQFFMJa9aktsnFJQ zy#Wz*McEpbm7loQqO=DZ0~t6$e%1?etDip4Vt5?G3=Ioo#G%Vm4?ZiuIHfU=f%`K0 zTqQE}c^1Rt7-nc#7`SW6+@NIb&=|rr}lyu}B|Jun!Bl7TzOAR~)m zX<)c92?Hrz(x;(i$6))9+@`B5hkW0!d&lqb!Gv(i<#J|}Q8`ZwaBz(AF7kiJsul=Td8#!6*#_rFuM&kEp4e)p8MvM+{0h#S?JxUT!Xbt zXO(t)X9Zdu#Bfc`$*?jwh8b=hB&~ea1hrP%E`;4y6p0H<+FjgJ1Qgh~4G&?yC%|IC zFyFw+P!zPn&3HK(mIel=#SGY?x3a}x`;VMh$383ckhoW~&;0P!KWc}z?OB#*wBo%H zT2qlXZaqJ@LcM6b=>>qMwFsqzM?xBwa%JALA>N)~XpAjaG!oM1`(_}9M?xAF#(;hk z!;WUH(`rTO<{C%sn}HZ+XjmAh|2?m)(5zNNhQ`2-;d{(IB7u9CuSOT ztq|dP=QpwIhIiJkwAh^V9^5V3zUAH*#qq;>Ot@pyWUvjnLH9^+U?B#s-py;*N=ZBN# zcJmq4Z$Xpv8Q*TRnz#)0Eov=m!l-b46SMj%Y>N-fU-J!oMzM@6hNXeQG0f;NplSMr zmD^)q#c+tRTB#RVLr%%_MjqKRI=aGh;RW>y9m{z=lI3~c?6WII@BCFEnz^B?&nV2Q z=}M)`c(>ZS;Zpm2*)h3g8#Cbt|Kt)9`{XB4kNxr~>t8duhSm^sn$lbq(zw8}HE0wFW> z$C>ruAK$$-)vkq^Nu{}aF8L>3*(6;$v~sLf)t%jJlAh+h8^aEQ*?=Rmf_kVXkq9+BD9>C z#lb!)X=|I<8yzH!#N``gPLm^MKrNGNhwOs^0p=qN%oKsa^1$x6Ql1MGa4;B!`77Kl zq4E+&71|rc44#eBFy19rM*PRM1EW;TIY7p!RFm`ppQ%j-9>~|+rc0>qw?nI3jFktL z`UO9~Xm{3>*S);2ZaaF(63=4>dsM@M5-&*jj{{2myv?%z%JpL6E0rw_V?+EAJ9LIl z{iBvoZ;~rN7{&77tAue(?NNUBCb!y|369Cd5Uq$2FiOKfX-e64AkTF#7c|uUX_h_d z^|;Sq%nsx$d9Em=d)0=}qOuqnUm;!W*wV7A^1!(B$`^9TV6Bh`bAFTEW-f#GsxgD* zX*hS;RXc2{G;=_jgKCpCA!9kCPG0ruY5od<^C-5}}*0OimhY21GSdQ5!Fw~>!tFHS$lOqQi1$mm! zuqk2OTdmY@dd*9A9~q-qD-HkuEEklN7zq#GG1A}rX;Pz9I?L0rFi0y~qf~d+#APJj z3VapjHZeUi*sBB!(sXOxD;SFL~S>wkK?%s^@kw8|x8-websL&L%-IHAD*Es~iD zje(5%!c{YPl8V1T`SpV8TW{rh>r6_2K zT9EVxn1Ni=nH%J$zDwZ4siSG-$K;;mAfq5p-x)6Bfo?U&!l4!B z+o8KHV{x0P;eC|E7{zSJ*7i}Hq;@b0x!G}&$a5JZj2)%-CnZr^WJbXbJQq8d!6*#_ zJ@vnVsjeVbUOfH7lL5zS= z8U{*J5=OH#Hi!GKuIkrrc7z?{=E6|)N6#p?zdN8~h3LFP zEBL$4>E`s1na#T)Jn!0h&xfb3Y3U!9hm#hG42-Fkp6J=$y~}v&wtK?|!$bV9`*d;a zV1~PAV)ED9%P#q@i(hf<5q7Mm>0-3idEMVjG46L6OS|1tcEq3p|5S6GF!n9U z$P4+s$lT`8(9C5pN_SZRmBq+-7o}a>UCel5J{e_++c66cAP41&Q9ApTlVNFKa9YgJ z_A$HcGRpIsrN7uLT4gaZGN2XarjZtG(zXk-XaAt`mji2AOm^c zY2Iqva_Vzo04X0Si8^K>IBYLX9^TwGyMK73} zBNm!HMPTUt9?)Iq#j*bJeS9O7=l#>{Ib>)`qE+|9KM&uonXFA@WEgApu8)6asI|&~ zO$dvO)A~*fPouR7MPUsAyD^z9jJakNVAlglo@6Ft?)dHVe?#3$^gn`{MGgI z@UxmjGI@ULC3k1-(t;g$E;5K=^IWy!bX~>^bsi2sI@z2UStU8B3`J?4Cv~O%%3k55 zy@&Y=%*rUE;Hwc+@3I*9sm;y#`j6v!&N3K<`hlI@&^?Qh zk-;&{F#FBTm@}sgO1IOzgGdu*@D2#%x%NM}h0`$Fl~^JBkF1Ph#}4Lwcn-*&_o4kh z9;0->57-*c>}Lo}2|;NOGzKV~Cf6N8`aHvkRZDgrA%;=9UYo_p+~tjxTrhBVIKs-1 z6<)rRoKbocI8YiE8Q<(~nL2r`+^w!LK;bq4y)Rs!XKRJlQg7Wy>#Vz@(UXCO*tOt! zb9)tq`}OG@oo{X`WE8Ve-gMuyxu3dhT-ixW3!(>2kBm{e;*NZF8L?}T9riu|y;~i2 zXxP2Q98jRaWE65x8Lk~b%EzqNnzF0EO28VrjK&+rm0h%?AUggb*A8a0O`bRB=05T@=3a8KC(&Is1nP;2d2}{|7(p&n zHewr`dz)g{HD~ev*MWrTn}7SVqdI~{Rd?$Su@p{ zZS;`3?%ymumIYK z8JsTLq|c>BF@sSW2Fhg|XG+L~)qnJY`K+&^I0r>W>?re(tbbrV0w~oT;i8t!(hFCq z4*`{LyapM2m*u&POQ+xHS8dxjoHD55B939k{CdsOW42X_e~IRn&g1;qLmGuwzEz=! zQRw?(2LyC?8L?LQ$Ch@irDp6fYpDn$r4du-#VZXlBLKr%8>2QiH+__a3vx3I2_Io# zMG@&D|5aX285ssvb-_T%*EJ88hqM##G76;~vyotDF)R&QaSSsiKh(_hgQHkmmcc00 zBFu6^MiwI@gJYPXV;}Lz9lOW*JKK4wcgyk?vrkw%3^O#$<3ZbJ2=x9uy>|}tmvZkM&wj>sK)Hx- zs$;g^0;jjuDMuKXD=sg?Wn4Y{y5g734gcpYmi|?)*;DkQbRNa?Mz6ZI_{)ErRT(oU zgFc+j$|8*Wm(g!`8L@ZqkHbKJPUX4tzA+;JgHh<6CG$!9@Reyxk{E|!dH{Ob(MZUA z0v~+_-GR+)+&Pdi)~pO2dK@Z6(b60QhZ*vZU{G4Rg7IF*2u* z)gF{rp!Cgv`nYCvuD1cBxSe+yytd5@XsGfuELuH(=@5Tg_-Q!m(x`~jVj1q+;Qg5c z{69ac;NSn*fs45<;kK*a=w|5$(_!5D96ha#|9^~~2Y3|4`}h}x$QPuCPI@SzMIfOi zw~Kd36X`|iB2uLUgwV4ggeJWiK&ps{NC%PRc9T5;5ot>AhzLj(5ELo@d1vmueJ2-w z{O`$K=Gl2a^G+}C%)N~ov5{&JjpO0c;cuO_C!$5GU1Jt4kbtl zsts6BS07kg@#25bPJ->v~iSfT@bC`-s3oMXo7Y%Ut&7-p@jTAfS*20RX?wssAXIVi=$HT ztQUAjJm`~&!d>R6AGI2x{ru0fbm~KiJRL*HGdV`xzpqBM`9Rw;?1OkJHS=Vs?>QVY zasI`>>V%JaXjO(4iKjl4h)54*Hd*o15Jg$NDOj8ETT@MGF?=_b8n3Z+&EqFo@Wd>c zfN~HYUE0;BHAb!_^sW@Jy~3ItdKs_?!kuB%4WkbaT}K^Miqh1o?jsnb^Zh8F4rbp4 zOM&RssI^{%55G{iY#*@PB7xR=L4&CHvYwhqp_L1y{0IiXN7twiCBPu}ELpi;5jgZcgk=40*Ey;P8b@`t@taN|ych#}p5rBakex2RX$*{*)End1H^DDwlk#9j&w7v0bYdn3gE ziJb;}_r<1Bhlmvu*2P!UE7Sos2KH`2N+w=))LM*kjDYaSH)gOCn5kpNP3 z4*{=>bmT;U4<*nohzjKrWP%q3&tY+T2MLq{9Z(nWYy+3~l?RoAGQd4rKLXWgFfR$XEG#K# z1AtgT3~lSj!x3$?iPeg0dD?uJPNgUf<9t9?UhitV!qrGE<)};R@pcbB_dy*n_t{xH zfJ@1QH%jcENIC5AK}>Mo25vf2Q)5P6-q%&Pzv)3W6R~4wCLfe6qF6LE`Nfa5Q2Qi^)jR!*XQVl@>djkvWCv1XuU$W zAb7m^kFY1A4H0*KgblHRt3_fEi=obRh>v(yDwU$PMY_|31pF6!Uhv#w2nz^w!=6{3 zk>UJ0Cv*@8BD>W7k%3;RYy<$j%<1gT$YIuZc%+yk@$dyfrMzyC!jO=lPl$zitvs7V z0`7LonZWy?FkCooh;s%cSTb0u;TL_fOF^12B#;yN1pkrXG4V=Kx45g3GyF%~+lOJ% zaAC%Y=OKkCgby*JQZQ#ksT>J_e5VbehC^+~6A91?u>H$As1(jouysiU$3TZ1mVLh9 zQRVWk8;ymnSJpwpg?=7SC-@OQ9n^;s_r5Ccs+5qE4l0Fn6iA03;nP8VD1oyNpuNKU zAG9d3YQ+3O+Z*H|oE#9u-^oE*-^0y#y@I?#DN3VT^ofU`8*10oL7YGz2y4SQI3eWW zt46#o2s>V4&Vb_`_BcS(RiC1$?Adec^2VC;-r8Jy|4wFaWl#3cE=8aI&-U&Zv5OH* zmrlb%H^f9Hys^@umY@{qp!y)MFt%KtNsHP}rJ%-4dn=8{P$ph=>IM2*S{D?>l|E5j zmtxN{p!R_jmihl50qLLwy5Tx|OZxXa9jl*+z7BmvuW!#}@%qaN;bRkWO)R*1hkNle zu7l;7EhW!!#dQ%9Ay_8cK9oSWAZnFPF}f%6ywcGJ(t&eokizSNU;%qSV#R{z#pv7z zOHbXA2oWnn=u`^bLdvdVB0fjq&Uki` z9QstfE0_5y@G@`0qp~4$Uxl55SC&ttFvGBwO6S?Kn!u#FB5bnOv8oV z09LHn266Suo>Gu@O1=N6FCTHJ6!hnLc8c{mUKc&X*1RFwpyf@0P^fkqD|GutPL>Av z*ys8%CV1)|LIUfsxDKM?EAk4Z`n4&~p2{Tl?qnkSsTVv6mVMrir(sy=zK?Fw89hB& z(|t^^EB8Qgs>dhJ9J+=lcIde-aLcE{@;wbv>#{RmM}CT{gJ-!wiqiDFm!j-^7NS=4 zo(iK<=!SDdGU1Jv4za>rB*=H%j{-ODQ(<}7Gkq$RoyL7C(7*|%Ly>mLa-!*;m*^d` zOJ(0z!&r%$o?Qps(?K^Sm^@24^^x~+>~|%Bq+PG5)VhFh)=P*tvcXyn->$?7?+@s( zeJC;acDV12b3Q^Bv8up!*$bm}z!z@D!${ZW`-QyM8N;M8^|lW6%Sg7bQh-bO5e$G2 zd*TTRixRhvM!MD~WYfV3Dz#*BBpU$=avgpI*T8h}_JMBzg7$&$_JQ`1HK3UP8;&@E zQYm_ftJggtm7NeZL@1&w-U_blD`6~iPUw&jC=V(HZXqQ?k_e%K5wH$NsqDnLe|xca zpLP5=Nh{rV8h_ft&IggMgViGZ*5r6yghUB>t#9j-32$^D8N6PhbpWNnf&lgh+k)UF zbReiy^BIw@r0J17hB*>k2lb)E#(fd4sEi8U^m%n~VqN11*F#4|?z3}SxGQPBaMO^O zVA;}IgFoNZK9AYcfJ#w1^=3GGen~}_$lc>-D`^4E-qPMIo+q73-K9pFU8sRGT8tRx-!J$3Zt7+x8ZjYlFZyU}|?VQ^1 zuPSO6qAq?(#olVLFCL2;t391ics`hZ5)(Iu>5r?0BO9KS{2mk7x%$Y}Pm5cV7|c6U4?%H`H1CJ~UU|IN5-v zkfvO=K+=@cSYa-RaP1uN76tz&S`^xrC=ERv+O>oz`_-Y`sTA~ya0U)^$b^f%t?-ko z!U9QqOWKQ~TkInD8NSI~ls!iX^q>!fi|^e5H(vK6m@UJ8>k}o=Er|0cw>XC86L$}w z4}=SQ>G;klyen&lxndX9ixkh+KxUTMNcZ= zb&*%EN;%Lp7ZfEu&t`{SQ0PD()R9xZNrZv~mN^m-L%Td!398<^mv!_39r(@Egc=A@_t zawnSg#`kdSSsCg&A1R*RNM}y;En13le2c0se66-wa?_jKa_5_05t>?6*;=i{Np

    8cvk|Yv;GWrtW^ek$ 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 UyjD=}*CM!+LtEv*{_@2C0ne6Y_W%F@ literal 0 HcmV?d00001 From afab94f2313309b2bd63602cc8d326748b3a3bee Mon Sep 17 00:00:00 2001 From: kbondar80 <114664958+kbondar80@users.noreply.github.com> Date: Wed, 26 Feb 2025 12:56:38 +0100 Subject: [PATCH 121/129] Increase upload timeout for Flashforge printers to 10 minutes (#8536) Co-authored-by: kbondar80 --- src/slic3r/Utils/Flashforge.cpp | 3 +++ src/slic3r/Utils/TCPConsole.hpp | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/src/slic3r/Utils/Flashforge.cpp b/src/slic3r/Utils/Flashforge.cpp index 068b1432d7..6161623e15 100644 --- a/src/slic3r/Utils/Flashforge.cpp +++ b/src/slic3r/Utils/Flashforge.cpp @@ -67,6 +67,9 @@ bool Flashforge::upload(PrintHostUpload upload_data, ProgressFn progress_fn, Err bool res = true; Utils::TCPConsole client(m_host, m_console_port); + //sometimes FF AD5M is very slow in data upload, so timeout is increased to 10 minutes + client.set_write_timeout(std::chrono::minutes(10)); + client.set_read_timeout(std::chrono::minutes(10)); client.enqueue_cmd(controlCommand); client.enqueue_cmd(connect5MCommand); diff --git a/src/slic3r/Utils/TCPConsole.hpp b/src/slic3r/Utils/TCPConsole.hpp index 7592e9c7ec..ac11f60de5 100644 --- a/src/slic3r/Utils/TCPConsole.hpp +++ b/src/slic3r/Utils/TCPConsole.hpp @@ -33,6 +33,14 @@ public: m_read_timeout = std::chrono::milliseconds(10000); } + void set_write_timeout(std::chrono::steady_clock::duration timeout) { + m_write_timeout = timeout; + } + + void set_read_timeout(std::chrono::steady_clock::duration timeout) { + m_read_timeout = timeout; + } + void set_line_delimiter(const std::string& newline) { m_newline = newline; } From b01c1a4553549023b97be86b1287dd4c2a5675be Mon Sep 17 00:00:00 2001 From: Schildkroet Date: Wed, 26 Feb 2025 13:00:14 +0100 Subject: [PATCH 122/129] Improve folder structure for eSUN Filament in BBL. Added LW-PLA. (#8539) * Moved profiles to subfolder * Updated PLA-LW profile * Added PETG --------- Co-authored-by: SoftFever --- resources/profiles/BBL.json | 18 +++---- .../eSUN PLA+ @BBL A1 0.2 nozzle.json | 0 .../{ => eSUN}/eSUN PLA+ @BBL A1.json | 0 .../eSUN PLA+ @BBL A1M 0.2 nozzle.json | 0 .../{ => eSUN}/eSUN PLA+ @BBL A1M.json | 0 .../{ => eSUN}/eSUN PLA+ @BBL X1.json | 0 .../eSUN PLA+ @BBL X1C 0.2 nozzle.json | 0 .../{ => eSUN}/eSUN PLA+ @BBL X1C.json | 0 .../filament/{ => eSUN}/eSUN PLA+ @base.json | 0 resources/profiles/OrcaFilamentLibrary.json | 14 ++++- .../filament/eSUN/eSUN PETG @System.json | 9 ++++ .../filament/eSUN/eSUN PETG @base.json | 54 +++++++++++++++++++ .../filament/eSUN/eSUN ePLA-LW @System.json | 44 +++++++++++++++ 13 files changed, 129 insertions(+), 10 deletions(-) rename resources/profiles/BBL/filament/{ => eSUN}/eSUN PLA+ @BBL A1 0.2 nozzle.json (100%) rename resources/profiles/BBL/filament/{ => eSUN}/eSUN PLA+ @BBL A1.json (100%) rename resources/profiles/BBL/filament/{ => eSUN}/eSUN PLA+ @BBL A1M 0.2 nozzle.json (100%) rename resources/profiles/BBL/filament/{ => eSUN}/eSUN PLA+ @BBL A1M.json (100%) rename resources/profiles/BBL/filament/{ => eSUN}/eSUN PLA+ @BBL X1.json (100%) rename resources/profiles/BBL/filament/{ => eSUN}/eSUN PLA+ @BBL X1C 0.2 nozzle.json (100%) rename resources/profiles/BBL/filament/{ => eSUN}/eSUN PLA+ @BBL X1C.json (100%) rename resources/profiles/BBL/filament/{ => eSUN}/eSUN PLA+ @base.json (100%) create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PETG @System.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PETG @base.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN ePLA-LW @System.json diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index 9f4d613849..926df43021 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -995,7 +995,7 @@ }, { "name": "eSUN PLA+ @base", - "sub_path": "filament/eSUN PLA+ @base.json" + "sub_path": "filament/eSUN/eSUN PLA+ @base.json" }, { "name": "Generic PP @base", @@ -2763,19 +2763,19 @@ }, { "name": "eSUN PLA+ @BBL A1", - "sub_path": "filament/eSUN PLA+ @BBL A1.json" + "sub_path": "filament/eSUN/eSUN PLA+ @BBL A1.json" }, { "name": "eSUN PLA+ @BBL A1 0.2 nozzle", - "sub_path": "filament/eSUN PLA+ @BBL A1 0.2 nozzle.json" + "sub_path": "filament/eSUN/eSUN PLA+ @BBL A1 0.2 nozzle.json" }, { "name": "eSUN PLA+ @BBL A1M", - "sub_path": "filament/eSUN PLA+ @BBL A1M.json" + "sub_path": "filament/eSUN/eSUN PLA+ @BBL A1M.json" }, { "name": "eSUN PLA+ @BBL A1M 0.2 nozzle", - "sub_path": "filament/eSUN PLA+ @BBL A1M 0.2 nozzle.json" + "sub_path": "filament/eSUN/eSUN PLA+ @BBL A1M 0.2 nozzle.json" }, { "name": "eSUN PLA+ @BBL P1P", @@ -2787,15 +2787,15 @@ }, { "name": "eSUN PLA+ @BBL X1", - "sub_path": "filament/eSUN PLA+ @BBL X1.json" + "sub_path": "filament/eSUN/eSUN PLA+ @BBL X1.json" }, { "name": "eSUN PLA+ @BBL X1C", - "sub_path": "filament/eSUN PLA+ @BBL X1C.json" + "sub_path": "filament/eSUN/eSUN PLA+ @BBL X1C.json" }, { "name": "eSUN PLA+ @BBL X1C 0.2 nozzle", - "sub_path": "filament/eSUN PLA+ @BBL X1C 0.2 nozzle.json" + "sub_path": "filament/eSUN/eSUN PLA+ @BBL X1C 0.2 nozzle.json" }, { "name": "Generic PP @BBL A1", @@ -3404,4 +3404,4 @@ "sub_path": "machine/Bambu Lab A1 0.8 nozzle.json" } ] -} \ No newline at end of file +} diff --git a/resources/profiles/BBL/filament/eSUN PLA+ @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/filament/eSUN/eSUN PLA+ @BBL A1 0.2 nozzle.json similarity index 100% rename from resources/profiles/BBL/filament/eSUN PLA+ @BBL A1 0.2 nozzle.json rename to resources/profiles/BBL/filament/eSUN/eSUN PLA+ @BBL A1 0.2 nozzle.json diff --git a/resources/profiles/BBL/filament/eSUN PLA+ @BBL A1.json b/resources/profiles/BBL/filament/eSUN/eSUN PLA+ @BBL A1.json similarity index 100% rename from resources/profiles/BBL/filament/eSUN PLA+ @BBL A1.json rename to resources/profiles/BBL/filament/eSUN/eSUN PLA+ @BBL A1.json diff --git a/resources/profiles/BBL/filament/eSUN PLA+ @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/eSUN/eSUN PLA+ @BBL A1M 0.2 nozzle.json similarity index 100% rename from resources/profiles/BBL/filament/eSUN PLA+ @BBL A1M 0.2 nozzle.json rename to resources/profiles/BBL/filament/eSUN/eSUN PLA+ @BBL A1M 0.2 nozzle.json diff --git a/resources/profiles/BBL/filament/eSUN PLA+ @BBL A1M.json b/resources/profiles/BBL/filament/eSUN/eSUN PLA+ @BBL A1M.json similarity index 100% rename from resources/profiles/BBL/filament/eSUN PLA+ @BBL A1M.json rename to resources/profiles/BBL/filament/eSUN/eSUN PLA+ @BBL A1M.json diff --git a/resources/profiles/BBL/filament/eSUN PLA+ @BBL X1.json b/resources/profiles/BBL/filament/eSUN/eSUN PLA+ @BBL X1.json similarity index 100% rename from resources/profiles/BBL/filament/eSUN PLA+ @BBL X1.json rename to resources/profiles/BBL/filament/eSUN/eSUN PLA+ @BBL X1.json diff --git a/resources/profiles/BBL/filament/eSUN PLA+ @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/eSUN/eSUN PLA+ @BBL X1C 0.2 nozzle.json similarity index 100% rename from resources/profiles/BBL/filament/eSUN PLA+ @BBL X1C 0.2 nozzle.json rename to resources/profiles/BBL/filament/eSUN/eSUN PLA+ @BBL X1C 0.2 nozzle.json diff --git a/resources/profiles/BBL/filament/eSUN PLA+ @BBL X1C.json b/resources/profiles/BBL/filament/eSUN/eSUN PLA+ @BBL X1C.json similarity index 100% rename from resources/profiles/BBL/filament/eSUN PLA+ @BBL X1C.json rename to resources/profiles/BBL/filament/eSUN/eSUN PLA+ @BBL X1C.json diff --git a/resources/profiles/BBL/filament/eSUN PLA+ @base.json b/resources/profiles/BBL/filament/eSUN/eSUN PLA+ @base.json similarity index 100% rename from resources/profiles/BBL/filament/eSUN PLA+ @base.json rename to resources/profiles/BBL/filament/eSUN/eSUN PLA+ @base.json diff --git a/resources/profiles/OrcaFilamentLibrary.json b/resources/profiles/OrcaFilamentLibrary.json index c1a9109840..23e78e97a6 100644 --- a/resources/profiles/OrcaFilamentLibrary.json +++ b/resources/profiles/OrcaFilamentLibrary.json @@ -404,6 +404,10 @@ "name": "eSUN PLA+ @base", "sub_path": "filament/eSUN/eSUN PLA+ @base.json" }, + { + "name": "eSUN PETG @base", + "sub_path": "filament/eSUN/eSUN PETG @base.json" + }, { "name": "fdm_filament_pla_silk", "sub_path": "filament/base/fdm_filament_pla_silk.json" @@ -724,6 +728,14 @@ "name": "eSUN PLA+ @System", "sub_path": "filament/eSUN/eSUN PLA+ @System.json" }, + { + "name": "eSUN ePLA-LW @System", + "sub_path": "filament/eSUN/eSUN ePLA-LW @System.json" + }, + { + "name": "eSUN PETG @System", + "sub_path": "filament/eSUN/eSUN PETG @System.json" + }, { "name": "Generic PLA Silk @System", "sub_path": "filament/Generic PLA Silk @System.json" @@ -753,4 +765,4 @@ "sub_path": "filament/AliZ/AliZ PETG-Metal @System.json" } ] -} \ No newline at end of file +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PETG @System.json b/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PETG @System.json new file mode 100644 index 0000000000..eacb079c86 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PETG @System.json @@ -0,0 +1,9 @@ +{ + "type": "filament", + "name": "eSUN PETG @System", + "inherits": "eSUN PETG @base", + "from": "system", + "setting_id": "PET01_00", + "instantiation": "true", + "compatible_printers": [] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PETG @base.json b/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PETG @base.json new file mode 100644 index 0000000000..3a4492379e --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PETG @base.json @@ -0,0 +1,54 @@ +{ + "type": "filament", + "name": "eSUN PETG @base", + "inherits": "fdm_filament_pet", + "from": "system", + "filament_id": "ESN03", + "instantiation": "false", + "filament_vendor": [ + "eSUN" + ], + "filament_density": [ + "1.27" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "20" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "30" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "temperature_vitrification": [ + "64" + ], + "hot_plate_temp": [ + "65" + ], + "hot_plate_temp_initial_layer": [ + "65" + ], + "textured_plate_temp": [ + "65" + ], + "textured_plate_temp_initial_layer": [ + "65" + ], + "compatible_printers": [] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN ePLA-LW @System.json b/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN ePLA-LW @System.json new file mode 100644 index 0000000000..e56766f01a --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN ePLA-LW @System.json @@ -0,0 +1,44 @@ +{ + "type": "filament", + "name": "eSUN ePLA-LW @System", + "inherits": "fdm_filament_pla", + "from": "system", + "filament_id": "ESN02", + "setting_id": "LWSL02_00", + "instantiation": "true", + "filament_type": ["PLA-AERO"], + "filament_cost": [ + "33.99" + ], + "filament_density": [ + "1.2" + ], + "filament_flow_ratio": [ + "0.48" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_vendor": [ + "eSUN" + ], + "filament_scarf_seam_type": [ + "none" + ], + "nozzle_temperature": [ + "243" + ], + "nozzle_temperature_initial_layer": [ + "243" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "temperature_vitrification": [ + "53" + ], + "compatible_printers": [] +} From 171a43bdaa904fcbb405dd0987fa02a49cc98fff Mon Sep 17 00:00:00 2001 From: Ruslan Kyba Date: Wed, 26 Feb 2025 14:06:08 +0200 Subject: [PATCH 123/129] chore: more Ukrainian translations for v2.3.0 (#8543) * Update OrcaSlicer_uk.po --- localization/i18n/uk/OrcaSlicer_uk.po | 2264 +++++-------------------- 1 file changed, 460 insertions(+), 1804 deletions(-) diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 830b5598bb..d12aca70ca 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -1,33 +1,33 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# EDITOR , YEAR. -# msgid "" msgstr "" -"Project-Id-Version: \n" +"Project-Id-Version: orcaslicerua\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-02-20 21:21+0800\n" -"PO-Revision-Date: 2024-12-23 20:09+0200\n" +"PO-Revision-Date: 2025-02-26 00:03+0200\n" "Last-Translator: \n" -"Language-Team: \n" +"Language-Team: Ukrainian\n" "Language: uk_UA\n" "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=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 " +"&& n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 " +"&& n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n" +"X-Crowdin-Project: orcaslicerua\n" +"X-Crowdin-Project-ID: 748805\n" +"X-Crowdin-Language: uk\n" +"X-Crowdin-File: OrcaSlicer.pot\n" +"X-Crowdin-File-ID: 13\n" "X-Generator: Poedit 3.5\n" msgid "Supports Painting" -msgstr "Малювання підтримки" +msgstr "Малювання Підтримок" msgid "Alt + Mouse wheel" msgstr "Alt + коліщатко миші" msgid "Section view" -msgstr "Вигляд у розрізі" +msgstr "Вид у розрізі" msgid "Reset direction" msgstr "Скинути напрямок" @@ -42,43 +42,43 @@ msgid "Left mouse button" msgstr "Ліва кнопка миші" msgid "Enforce supports" -msgstr "Примусова підтримка" +msgstr "Примусові підтримки" msgid "Right mouse button" msgstr "Права кнопка миші" msgid "Block supports" -msgstr "Блокування підтримки" +msgstr "Блокувати підтримки" msgid "Shift + Left mouse button" msgstr "Shift + Ліва кнопка миші" msgid "Erase" -msgstr "Гумка" +msgstr "Стерти" msgid "Erase all painting" msgstr "Стерти всі малюнки" msgid "Highlight overhang areas" -msgstr "Виділяти виступаючі області" +msgstr "Підсвічувати області нависань" msgid "Gap fill" -msgstr "Заповнення пропусків" +msgstr "Заповнення проміжків" msgid "Perform" msgstr "Виконати" msgid "Gap area" -msgstr "Площа зазору" +msgstr "Площа проміжку" msgid "Tool type" msgstr "Тип інструменту" msgid "Smart fill angle" -msgstr "Розумний кут заповнення" +msgstr "Кут розумного заповнення" msgid "On overhangs only" -msgstr "Лише на нависаннях" +msgstr "Тільки на нависаннях" msgid "Auto support threshold angle: " msgstr "Пороговий кут автоматичної підтримки: " @@ -90,10 +90,10 @@ msgid "Sphere" msgstr "Сфера" msgid "Fill" -msgstr "Заповнити" +msgstr "Заповнення" msgid "Gap Fill" -msgstr "Заповнення пропусків" +msgstr "Заповнення проміжків" #, boost-format msgid "Allows painting only on facets selected by: \"%1%\"" @@ -124,7 +124,7 @@ msgstr "" "малювання." msgid "Color Painting" -msgstr "Кольорове малювання" +msgstr "Розфарбовування кольорами" msgid "Pen shape" msgstr "Форма пера" @@ -136,7 +136,7 @@ msgid "Key 1~9" msgstr "Клавіша 1~9" msgid "Choose filament" -msgstr "Вибір філаменту" +msgstr "Вибрати філамент" msgid "Edge detection" msgstr "Виявлення кордонів" @@ -145,13 +145,13 @@ msgid "Triangles" msgstr "Трикутники" msgid "Filaments" -msgstr "Філамент" +msgstr "Філаменти" msgid "Brush" msgstr "Пензель" msgid "Smart fill" -msgstr "Інтелектуальне заповнення" +msgstr "Розумне заповнення" msgid "Bucket fill" msgstr "Заливка" @@ -163,7 +163,7 @@ msgid "Alt + Shift + Enter" msgstr "Alt + Shift + Enter" msgid "Toggle Wireframe" -msgstr "Переключення каркасу" +msgstr "Перемикання каркасу" msgid "Shortcut Key " msgstr "Комбінація клавіш " @@ -215,7 +215,7 @@ msgid "Error: Please close all toolbar menus first" msgstr "Помилка: будь ласка, спочатку закрийте все меню панелі інструментів" msgid "in" -msgstr "in" +msgstr "" msgid "mm" msgstr "мм" @@ -239,7 +239,7 @@ msgid "Volume Operations" msgstr "Операції з об’ємом" msgid "Translate" -msgstr "Перекласти" +msgstr "Перемістити" msgid "Group Operations" msgstr "Групова орієнтація" @@ -288,7 +288,7 @@ msgid "Auto" msgstr "Авто" msgid "Manual" -msgstr "Manual" +msgstr "" msgid "Plug" msgstr "Підключи" @@ -508,6 +508,7 @@ msgid_plural "%1$d connectors are out of cut contour" msgstr[0] "%1$d зєднання виходить за контур моделі" msgstr[1] "%1$d зєднання виходить за контур моделі" msgstr[2] "%1$d зєднань виходить за контур моделі" +msgstr[3] "" #, c-format, boost-format msgid "%1$d connector is out of object" @@ -515,6 +516,7 @@ msgid_plural "%1$d connectors are out of object" msgstr[0] "%1$d зєднання знаходиться за межами моделі" msgstr[1] "%1$d зєднання знаходяться за межами моделі" msgstr[2] "%1$d зєднань знаходяться за межами моделі" +msgstr[3] "" msgid "Some connectors are overlapped" msgstr "Деякі роз'єми перекриваються" @@ -640,7 +642,7 @@ msgid "Leaving Seam painting" msgstr "Leaving Seam Painting" msgid "Paint-on seam editing" -msgstr "Paint-on seam editing" +msgstr "" #. TRN - Input label. Be short as possible #. Select look of letter shape @@ -715,7 +717,7 @@ msgid "ITALIC" msgstr "КУРСИВ" msgid "SWISS" -msgstr "SWISS" +msgstr "" msgid "MODERN" msgstr "СУЧАСНИЙ" @@ -727,7 +729,7 @@ msgid "Default font" msgstr "Типовий шрифт" msgid "Advanced" -msgstr "Додатково" +msgstr "Розширені" msgid "" "The text cannot be written using the selected font. Please try choosing a " @@ -772,7 +774,7 @@ msgid "Operation" msgstr "Операція" msgid "Join" -msgstr "Обєднання" +msgstr "Об'єднати" msgid "Click to change text into object part." msgstr "Натисніть, щоб змінити текст на частині об'єкта." @@ -989,7 +991,7 @@ msgid "Distance of the center of the text to the model surface." msgstr "Відстань від центру тексту до поверхні моделі." msgid "Undo rotation" -msgstr "Відмінити обертання" +msgstr "Скасувати обертання" msgid "Rotate text Clock-wise." msgstr "Обертати текст за годинниковою стрілкою." @@ -1106,7 +1108,7 @@ msgid "SVG actions" msgstr "Дії з SVG" msgid "SVG" -msgstr "SVG" +msgstr "" #, boost-format msgid "Opacity (%1%)" @@ -1419,7 +1421,7 @@ msgid "Rotate around center:" msgstr "Обертати навколо центру:" msgid "Parallel distance:" -msgstr "" +msgstr "Паралельна відстань:" msgid "Flip by Face 2" msgstr "Перевернути за Гранню 2" @@ -1593,7 +1595,7 @@ msgid "new or open project file is not allowed during the slicing process!" msgstr "новий або відкритий файл проекту не дозволяється в процесі нарізки!" msgid "Open Project" -msgstr "Відкрити проект" +msgstr "Відкрити проєкт" msgid "" "The version of Orca Slicer is too low and needs to be updated to the latest " @@ -1685,7 +1687,7 @@ msgid "Support" msgstr "Підтримки" msgid "Flush options" -msgstr "Параметри очищення" +msgstr "Параметри промивання" msgid "Speed" msgstr "Швидкість" @@ -1694,13 +1696,13 @@ msgid "Strength" msgstr "Міцність" msgid "Top Solid Layers" -msgstr "Верхніх суцільних шарів" +msgstr "Верхніх Суцільних Шарів" msgid "Top Minimum Shell Thickness" msgstr "Мінімальна товщина верхньої оболонки" msgid "Bottom Solid Layers" -msgstr "Нижніх суцільних шарів" +msgstr "Нижніх Суцільних Шарів" msgid "Bottom Minimum Shell Thickness" msgstr "Мінімальна товщина нижньої оболонки" @@ -1718,7 +1720,7 @@ msgid "Extrusion Width" msgstr "Ширина екструзії" msgid "Wipe options" -msgstr "Параметри очищення" +msgstr "Параметри протирання" msgid "Bed adhesion" msgstr "Прилипання до столу" @@ -1736,7 +1738,7 @@ msgid "Add support blocker" msgstr "Додати блокувальник підтримки" msgid "Add support enforcer" -msgstr "Додати примусову підтримку" +msgstr "Додати примусові підтримки" msgid "Add text" msgstr "Додати текст" @@ -1892,16 +1894,16 @@ msgid "Scale an object to fit the build volume" msgstr "Відмасштабувати під область друку" msgid "Flush Options" -msgstr "Опції очищення" +msgstr "Параметри Промивання" msgid "Flush into objects' infill" -msgstr "Очищення у заповненні моделі" +msgstr "Промивати у заповнення об'єкта" msgid "Flush into this object" -msgstr "Очищення у модель" +msgstr "Промивати в об'єкт" msgid "Flush into objects' support" -msgstr "Очищення на підтримку" +msgstr "Промивати у підтримки об'єкта" msgid "Edit in Parameter Table" msgstr "Редагування таблиці параметрів" @@ -2018,10 +2020,10 @@ msgid "delete all objects on current plate" msgstr "видалити всі об'єкти на поточній пластині" msgid "Arrange" -msgstr "Організувати" +msgstr "Впорядкувати" msgid "arrange current plate" -msgstr "упорядкувати поточну пластину" +msgstr "впорядкувати поточну пластину" msgid "Reload All" msgstr "Перезавантажити все" @@ -2051,7 +2053,7 @@ msgid "Center" msgstr "Центр" msgid "Drop" -msgstr "" +msgstr "Кинути" msgid "Edit Process Settings" msgstr "Редагувати налаштування процесу друку" @@ -2078,7 +2080,7 @@ msgid "Name" msgstr "Ім'я" msgid "Fila." -msgstr "Філа." +msgstr "Філам." #, c-format, boost-format msgid "%1$d error repaired" @@ -2086,6 +2088,7 @@ msgid_plural "%1$d errors repaired" msgstr[0] "%1$d помилка виправлена" msgstr[1] "%1$d помилки виправлені" msgstr[2] "%1$d помилки виправлені" +msgstr[3] "" #, c-format, boost-format msgid "Error: %1$d non-manifold edge." @@ -2093,6 +2096,7 @@ msgid_plural "Error: %1$d non-manifold edges." msgstr[0] "Помилка: %1$d відкрите ребро." msgstr[1] "Помилка: %1$d відкритих ребер." msgstr[2] "Помилка: %1$d відкритих ребер." +msgstr[3] "" msgid "Remaining errors" msgstr "Залишилось помилок" @@ -2103,6 +2107,7 @@ msgid_plural "%1$d non-manifold edges" msgstr[0] "%1$d відкрите ребро" msgstr[1] "%1$d відкритих ребер" msgstr[2] "%1$d відкритих ребер" +msgstr[3] "" msgid "Right click the icon to fix model object" msgstr "Клацніть правою кнопкою миші значок, щоб виправити об'єкт моделі" @@ -2275,12 +2280,14 @@ msgid_plural "Following model objects have been repaired" msgstr[0] "Наступна частина моделі успішно відремонтована" msgstr[1] "Наступні частини моделі успішно відремонтовані" msgstr[2] "Наступні частини моделі успішно відремонтовані" +msgstr[3] "" msgid "Failed to repair following model object" msgid_plural "Failed to repair following model objects" msgstr[0] "Не вдалося полагодити таку частину моделі" msgstr[1] "Не вдалося полагодити такі частини моделі" msgstr[2] "Не вдалося полагодити такі частини моделі" +msgstr[3] "" msgid "Repairing was canceled" msgstr "Ремонт було скасовано" @@ -2399,7 +2406,7 @@ msgid "Custom G-code" msgstr "G-код користувача" msgid "Enter Custom G-code used on current layer:" -msgstr "Введіть G-код користувача, що використовується в поточному шарі:" +msgstr "Введіть G-код користувача, що використовується на поточному шарі:" msgid "Jump to Layer" msgstr "Перейти до шару" @@ -2529,7 +2536,7 @@ msgid "Cancel calibration" msgstr "Скасувати калібрування" msgid "Idling..." -msgstr "Очікування…" +msgstr "Очікування..." msgid "Heat the nozzle" msgstr "Нагрійте сопло" @@ -2573,19 +2580,17 @@ msgid "" "We can not do auto-arrange on these objects." msgstr "" "Всі вибрані об'єкти знаходяться на заблокованій пластині,\n" -"Ми не можемо робити авто-розстановку на цих об'єктах." +"Ми не можемо виконати автоматичне впорядкування цих об'єктів." msgid "No arrangeable objects are selected." -msgstr "" -"Всі вибрані об'єкти знаходяться на заблокованій пластині,\\n\n" -"Ми не можемо робити авто-розстановку на цих об'єктах." +msgstr "Не вибрано жодного доступного для впорядкування об'єкта." msgid "" "This plate is locked,\n" "We can not do auto-arrange on this plate." msgstr "" "Ця пластина заблокована,\n" -"Ми не можемо зробити автоаранжування на цій пластині." +"Ми не можемо зробити автоматичне впорядкування на цій пластині." msgid "Arranging..." msgstr "Організація..." @@ -2608,7 +2613,8 @@ msgstr "Організація зроблена." msgid "" "Arrange failed. Found some exceptions when processing object geometries." msgstr "" -"Помилка розміщення. Виявлено деякі винятки під час обробки геометрії моделей." +"Помилка впорядкування. Виявлено деякі винятки під час обробки геометрії " +"моделей." #, c-format, boost-format msgid "" @@ -2616,8 +2622,8 @@ msgid "" "bed:\n" "%s" msgstr "" -"При розміщенні були проігноровані такі моделі, які не розміщуються на одному " -"столі:\n" +"При впорядкуванні були проігноровані такі моделі, які не вмістилися на " +"одному столі:\n" "%s" msgid "" @@ -2899,7 +2905,7 @@ msgid "The input value should be greater than %1% and less than %2%" msgstr "Вхідне значення має бути більше %1% і менше %2%" msgid "SN" -msgstr "SN" +msgstr "" msgid "Factors of Flow Dynamics Calibration" msgstr "Фактори Калібрування динамічного потоку" @@ -2949,8 +2955,8 @@ msgid "" "auto-filled by selecting a filament preset." msgstr "" "Температура сопла та максимальна об'ємна швидкість вплинуть на результати " -"калібрування. Будь ласка, введіть такі ж значення, як при друку. Вони можуть " -"бути автозаповнені при виборі попередньо налаштованої нитки." +"калібрування. Будь ласка, введіть такі ж значення, як при друці. Вони можуть " +"бути заповнені автоматично при виборі профілю філаменту." msgid "Nozzle Diameter" msgstr "Діаметр сопла" @@ -2968,7 +2974,7 @@ msgid "Max volumetric speed" msgstr "Максимальна об'ємна швидкість" msgid "℃" -msgstr "℃" +msgstr "°C" msgid "Bed temperature" msgstr "Температура столу" @@ -3351,7 +3357,7 @@ msgstr "" "друку" msgid "Device" -msgstr "Принтер" +msgstr "Пристрій" msgid "Task Sending" msgstr "Відправка завдання" @@ -3433,7 +3439,7 @@ msgid "Printing Pause" msgstr "Друк на паузі" msgid "Prepare" -msgstr "Підготувати" +msgstr "Підготовка" msgid "Slicing" msgstr "Нарізка" @@ -3478,7 +3484,7 @@ msgid "There are no tasks to be sent!" msgstr "Немає завдань для відправлення!" msgid "No historical tasks!" -msgstr "Істориї завдань немає!" +msgstr "Історії завдань немає!" msgid "Loading..." msgstr "Завантаження..." @@ -3663,9 +3669,6 @@ msgid "" "Please make sure whether to use the temperature to print.\n" "\n" msgstr "" -"Сопло може засмічуватися, якщо температура перевищує діапазон, що " -"рекомендується.\n" -"Будь ласка, переконайтеся, що ви задали потрібну температуру для друку.\n" #, c-format, boost-format msgid "" @@ -3697,7 +3700,7 @@ msgid "" "Reset to 0.2" msgstr "" "Надто маленька висота шару.\n" -"Скинути на 0,2" +"Скинути на 0.2" msgid "" "Too small ironing spacing.\n" @@ -3769,11 +3772,11 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height and Independent Support Layer Height" msgstr "" -"Чорнова вежа не працює, коли увімкнено функцію «Змінна висота шарів» або " -"«Незалежна висота шару підтримки»\n" -"Що хочете зберегти?\n" -"ТАК - Зберегти чорнову вежу\n" -"НІ - Зберегти змінну висоту шару та незалежну висоту шару підтримки" +"Підготовча вежа не працює, коли увімкнено функцію «Змінна висота шарів» або " +"«Незалежна висота шарів підтримки»\n" +"Яку хочете зберегти?\n" +"ТАК - Зберегти підготовчу вежу\n" +"НІ - Зберегти змінну висоту шару та незалежну висоту шарів підтримки" msgid "" "Prime tower does not work when Adaptive Layer Height is on.\n" @@ -3781,10 +3784,10 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height" msgstr "" -"Чорнова вежа не працює, коли увімкнена функція «Змінна висота шарів».\n" -"Що хочете зберегти?\n" -"Так - Зберегти чорнову вежу\n" -"Ні - Зберегти змінну висоту шарів" +"Підготовча вежа не працює, коли увімкнено функцію «Змінна висота шарів»\n" +"Яку хочете зберегти?\n" +"ТАК - Зберегти підготовчу вежу\n" +"НІ - Зберегти змінну висоту шару" msgid "" "Prime tower does not work when Independent Support Layer Height is on.\n" @@ -3792,11 +3795,11 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Independent Support Layer Height" msgstr "" -"Чорнова вежа не працює, якщо увімкнена функція «Незалежна висота шару " +"Підготовча вежа не працює, коли увімкнено функцію «Незалежна висота шарів " "підтримки»\n" -"Що хочете зберегти?\n" -"ТАК - Зберегти чорнову вежу\n" -"НІ - Зберегти незалежну висоту шару підтримки" +"Яку хочете зберегти?\n" +"ТАК - Зберегти підготовчу вежу\n" +"НІ - Зберегти незалежну висоту шарів підтримки" msgid "" "seam_slope_start_height need to be smaller than layer_height.\n" @@ -3904,7 +3907,7 @@ msgid "Paused due to AMS lost" msgstr "Пауза через втрату сигналу AMS" msgid "Paused due to low speed of the heat break fan" -msgstr "Пауза через низьку швидкість вентилятора голови" +msgstr "Пауза через низьку швидкість вентилятора термобар'єру" msgid "Paused due to chamber temperature control error" msgstr "Пауза через помилку контролю температури камери" @@ -4077,7 +4080,7 @@ msgid "Print settings" msgstr "Параметри друку" msgid "Filament settings" -msgstr "Настінні філаменти" +msgstr "Налаштування філаменту" msgid "SLA Materials settings" msgstr "Налаштування матеріалів SLA" @@ -4136,13 +4139,13 @@ msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Невірний формат. Очікуваний векторний формат: \"%1%\"" msgid "Layer Height" -msgstr "Висота шару" +msgstr "Висота Шару" msgid "Line Width" -msgstr "Ширина лінії" +msgstr "Ширина Лінії" msgid "Fan Speed" -msgstr "Швидкість вентилятора" +msgstr "Швидкість Вентилятора" msgid "Temperature" msgstr "Температура" @@ -4154,7 +4157,7 @@ msgid "Tool" msgstr "Інструмент" msgid "Layer Time" -msgstr "Час шару" +msgstr "Час Шару" msgid "Layer Time (log)" msgstr "Час шару (журнал)" @@ -4172,7 +4175,7 @@ msgid "Flow: " msgstr "Потік: " msgid "Layer Time: " -msgstr "Час шару: " +msgstr "Час Шару: " msgid "Fan: " msgstr "Швидкість вентилятора: " @@ -4235,16 +4238,16 @@ msgid "Used filament" msgstr "Філамент, що використовується" msgid "Layer Height (mm)" -msgstr "Висота шару (мм)" +msgstr "Висота Шару (мм)" msgid "Line Width (mm)" -msgstr "Ширина лінії (мм)" +msgstr "Ширина Лінії (мм)" msgid "Speed (mm/s)" msgstr "Швидкість (мм/с)" msgid "Fan Speed (%)" -msgstr "Швидкість вентилятора (%)" +msgstr "Швидкість Вентилятора (%)" msgid "Temperature (°C)" msgstr "Температура (°С)" @@ -4268,7 +4271,7 @@ msgid "Filament Changes" msgstr "Зміна філаменту" msgid "Wipe" -msgstr "Очищення" +msgstr "Протирання" msgid "Options" msgstr "Параметри" @@ -4400,7 +4403,7 @@ msgid "Orient" msgstr "Орієнтація" msgid "Arrange options" -msgstr "Упорядкувати варіанти" +msgstr "Параметри впорядкування" msgid "Spacing" msgstr "Відстань" @@ -4409,7 +4412,7 @@ msgid "0 means auto spacing." msgstr "0 означає автоматичний інтервал." msgid "Auto rotate for arrangement" -msgstr "Автоповорот для розташування" +msgstr "Автоповорот при впорядкуванні" msgid "Allow multiple materials on same plate" msgstr "Дозволити використання декількох матеріалів на одній пластині" @@ -4427,10 +4430,10 @@ msgid "Auto orient" msgstr "Автоорієнтація" msgid "Arrange all objects" -msgstr "Упорядкувати всі об'єкти" +msgstr "Розташувати всі об'єкти" msgid "Arrange objects on selected plates" -msgstr "Розставити об'єкти на вибраних пластинах" +msgstr "Впорядкувати об'єкти на вибраних пластинах" msgid "Split to objects" msgstr "Розділити на об'єкти" @@ -4442,7 +4445,7 @@ msgid "Assembly View" msgstr "Вигляд складання" msgid "Select Plate" -msgstr "Вибрати Пластину" +msgstr "Вибрати пластину" msgid "Assembly Return" msgstr "Повернення збірки" @@ -4558,7 +4561,7 @@ msgid "Resolution" msgstr "Роздільна здатність" msgid "Enable" -msgstr "Увімкнення" +msgstr "Увімкнути" msgid "Hostname or IP" msgstr "Ім'я хоста або IP-адреса" @@ -4787,7 +4790,7 @@ msgid "Export current sliced file" msgstr "Експорт поточного нарізаного файлу" msgid "Export all plate sliced file" -msgstr "Експортуйте файл нарізки всіх пластин" +msgstr "Експортувати файл нарізки всіх пластин" msgid "Export G-code" msgstr "Експорт G-коду" @@ -4862,7 +4865,7 @@ msgid "Deselect all" msgstr "Прибрати виділення з усього" msgid "Deselects all objects" -msgstr "Скасує вибір усіх об'єктів" +msgstr "Зняти виділення з усіх об'єктів" msgid "Use Perspective View" msgstr "Використовуйте вигляд у перспективі" @@ -4901,10 +4904,10 @@ msgid "Show object overhang highlight in 3D scene" msgstr "Показати підсвічування виступу об'єкта у 3D сцені" msgid "Show Selected Outline (beta)" -msgstr "" +msgstr "Показати контур виділеного (бета)" msgid "Show outline around selected object in 3D scene" -msgstr "" +msgstr "Показувати контур навколо виділеного об'єкта у 3D сцені" msgid "Preferences" msgstr "Налаштування" @@ -4928,16 +4931,16 @@ msgid "Flow rate test - Pass 2" msgstr "Тест витрати - Пройдено 2" msgid "YOLO (Recommended)" -msgstr "" +msgstr "YOLO (Рекомендоване)" msgid "Orca YOLO flowrate calibration, 0.01 step" -msgstr "" +msgstr "Калібрування потоку Orca YOLO, крок 0.01" msgid "YOLO (perfectionist version)" -msgstr "" +msgstr "YOLO (версія перфекціоніста)" msgid "Orca YOLO flowrate calibration, 0.005 step" -msgstr "" +msgstr "Калібрування потоку Orca YOLO, крок 0.005" msgid "Flow rate" msgstr "Швидкість потоку" @@ -4955,7 +4958,7 @@ msgid "Max flowrate" msgstr "Максимальний потік" msgid "VFA" -msgstr "VFA" +msgstr "ВДА (VFA)" msgid "More..." msgstr "Більше..." @@ -5041,6 +5044,7 @@ msgstr[1] "" msgstr[2] "" "Експортовано конфігураційні елементи: %d. (Тільки несистемні конфігураційні " "елементи)" +msgstr[3] "" msgid "Export result" msgstr "Експорт результату" @@ -5061,6 +5065,7 @@ msgstr[1] "" msgstr[2] "" "Імпортовано конфігураційних елементів: %d. (Тільки несистемні та сумісні " "конфігураційні елементи)" +msgstr[3] "" msgid "" "\n" @@ -5081,7 +5086,7 @@ msgid "The project is no longer available." msgstr "Проект недоступний." msgid "Filament Settings" -msgstr "Налаштування філаменту" +msgstr "Налаштування Філаменту" msgid "" "Do you want to synchronize your personal data from Bambu Cloud? \n" @@ -5253,7 +5258,7 @@ msgid "Loading file list..." msgstr "Завантаження списку файлів..." msgid "No files" -msgstr "No files" +msgstr "Немає файлів" msgid "Load failed" msgstr "Не вдалося завантажити" @@ -5291,6 +5296,7 @@ msgstr[1] "" msgstr[2] "" "Ви збираєтеся видалити %u файлів із принтера. Ви впевнені, що хочете це " "зробити?" +msgstr[3] "" msgid "Delete files" msgstr "Видалити файли" @@ -5412,7 +5418,7 @@ msgid "Printing Progress" msgstr "Хід друку" msgid "0" -msgstr "0" +msgstr "" msgid "Layer: N/A" msgstr "Шар: немає даних" @@ -5466,7 +5472,7 @@ msgid "Lamp" msgstr "Лампа" msgid "Aux" -msgstr "Aux" +msgstr "" msgid "Cham" msgstr "Камера" @@ -5801,6 +5807,7 @@ msgid_plural "%1$d Objects have custom supports." msgstr[0] "%1$d Об'єкт має опори користувача." msgstr[1] "%1$d Об'єкти мають опори користувача." msgstr[2] "%1$d Об'єкти мають опори користувача." +msgstr[3] "" #, c-format, boost-format msgid "%1$d Object has color painting." @@ -5808,6 +5815,7 @@ msgid_plural "%1$d Objects have color painting." msgstr[0] "%1$d Об'єкт має кольорове забарвлення." msgstr[1] "%1$d Об'єкти мають кольорове забарвлення." msgstr[2] "%1$d Об'єкти мають кольорове забарвлення." +msgstr[3] "" #, c-format, boost-format msgid "%1$d object was loaded as a part of cut object." @@ -5815,6 +5823,7 @@ msgid_plural "%1$d objects were loaded as parts of cut object" msgstr[0] "%1$d завантажено як частину обрізаного об'єкта." msgstr[1] "%1$d завантажено як частини обрізаних об'єктів" msgstr[2] "%1$d завантажено як частини обрізаних об'єктів" +msgstr[3] "" msgid "ERROR" msgstr "ПОМИЛКА" @@ -5865,7 +5874,7 @@ msgid "Support painting" msgstr "Підтримка малювання" msgid "Color painting" -msgstr "Кольорове малювання" +msgstr "Розфарбовування кольорами" msgid "Cut connectors" msgstr "Вирізати з'єднувачі" @@ -5957,7 +5966,7 @@ msgid "%.1f" msgstr "%.1f" msgid "Global" -msgstr "Глобальний" +msgstr "Глобальні" msgid "Objects" msgstr "Об'єкти" @@ -5966,13 +5975,13 @@ msgid "Advance" msgstr "Профі" msgid "Compare presets" -msgstr "Порівняти пресети" +msgstr "Порівняти профілі" msgid "View all object's settings" msgstr "Переглянути всі налаштування об'єкта" msgid "Material settings" -msgstr "" +msgstr "Налаштування матеріалу" msgid "Remove current plate (if not last one)" msgstr "Видалити поточну пластину (якщо вона не остання)" @@ -6027,7 +6036,7 @@ msgid "Filament changes" msgstr "Зміни нитки" msgid "Click to edit preset" -msgstr "Натисніть, щоб змінити попереднє встановлення" +msgstr "Натисніть, щоб редагувати профіль" msgid "Connection" msgstr "Зв'язок" @@ -6036,7 +6045,7 @@ msgid "Bed type" msgstr "Тип столу" msgid "Flushing volumes" -msgstr "Промивні обсяги" +msgstr "Об'єми промивання" msgid "Add one filament" msgstr "Додайте один філамент" @@ -6048,13 +6057,13 @@ msgid "Synchronize filament list from AMS" msgstr "Синхронізувати список ниток з AMS" msgid "Set filaments to use" -msgstr "Встановіть нитки для використання" +msgstr "Встановити філаменти для використання" msgid "Search plate, object and part." msgstr "Пошук пластини, об’єкта і деталі." msgid "Pellets" -msgstr "" +msgstr "Гранули" msgid "" "No AMS filaments. Please select a printer in 'Device' page to load AMS info." @@ -6473,6 +6482,8 @@ msgstr "Імпортувати лише геометрію" msgid "" "This option can be changed later in preferences, under 'Load Behaviour'." msgstr "" +"Ця опція може бути змінена у налаштуваннях пізніше, під 'Поведінка " +"завантаження'." msgid "Only one G-code file can be opened at the same time." msgstr "Водночас можна відкрити лише один файл G-коду." @@ -6576,8 +6587,8 @@ msgid "" "Suggest to use auto-arrange to avoid collisions when printing." msgstr "" "Друк за об'єктом: \n" -"Рекомендовано використовувати автоматичне розташування, щоб уникнути колізій " -"під час друку." +"Рекомендовано використовувати автоматичне впорядкування, щоб уникнути " +"колізій під час друку." msgid "Send G-code" msgstr "Надіслати G-код" @@ -6686,19 +6697,19 @@ msgid "Choose Download Directory" msgstr "Виберіть каталог завантаження" msgid "Associate" -msgstr "" +msgstr "Ассоціювати" msgid "with OrcaSlicer so that Orca can open models from" -msgstr "" +msgstr "з OrcaSlicer так що Orca могла відкривати моделі з" msgid "Current Association: " -msgstr "" +msgstr "Поточна асоціація: " msgid "Current Instance" -msgstr "" +msgstr "Поточна Інсталяція" msgid "Current Instance Path: " -msgstr "" +msgstr "Шлях Поточної Інсталяції: " msgid "General Settings" msgstr "Загальні налаштування" @@ -6831,7 +6842,8 @@ msgstr "Якщо увімкнено, під час запуску відобра msgid "Flushing volumes: Auto-calculate every time the color changed." msgstr "" -"Змивання обсягів: авто-перераховується кожного разу, коли змінюється колір." +"Об'єми промивання: автоматично перераховувати кожного разу, коли змінюється " +"колір." msgid "If enabled, auto-calculate every time the color changed." msgstr "" @@ -6840,7 +6852,8 @@ msgstr "" msgid "" "Flushing volumes: Auto-calculate every time when the filament is changed." msgstr "" -"Об’єми промивання: автоматично обчислювати кожного разу при зміні філаменту." +"Об’єми промивання: автоматично перераховувати кожного разу при зміні " +"філаменту." msgid "If enabled, auto-calculate every time when filament is changed" msgstr "" @@ -6869,10 +6882,10 @@ msgstr "" "одночасно та керувати декількома пристроями." msgid "Auto arrange plate after cloning" -msgstr "Авто орієнтування пластини після клонування" +msgstr "Автоматично впорядкувати пластину після копіювання" msgid "Auto arrange plate after object cloning" -msgstr "Авто орієнтування пластини після клонування об'єкту" +msgstr "Автоматично впорядкувати об'єкти пластини після копіювання об'єкту" msgid "Network" msgstr "Мережа" @@ -6927,22 +6940,24 @@ msgid "Associate URLs to OrcaSlicer" msgstr "Асоціювати URL-адреси з OrcaSlicer" msgid "Load All" -msgstr "" +msgstr "Завантажити все" msgid "Ask When Relevant" -msgstr "" +msgstr "Запитувати коли доречно" msgid "Always Ask" -msgstr "" +msgstr "Запитувати завжди" msgid "Load Geometry Only" -msgstr "" +msgstr "Завантажити Тільки Геометрію" msgid "Load Behaviour" -msgstr "" +msgstr "Поведінка завантаження" msgid "Should printer/filament/process settings be loaded when opening a .3mf?" msgstr "" +"Чи повинні бути завантажені налаштування принтера/філаменту/процесу при " +"відкритті файлу .3mf?" msgid "Maximum recent projects" msgstr "Максимум останніх проектів" @@ -7077,16 +7092,16 @@ msgid "Switch cloud environment, Please login again!" msgstr "Перемкніть хмарне середовище, будь ласка, увійдіть знову!" msgid "System presets" -msgstr "Системні пресети" +msgstr "Системні профілі" msgid "User presets" -msgstr "Користувацькі пресети" +msgstr "Профілі користувача" msgid "Incompatible presets" msgstr "Несумісні пресети" msgid "AMS filaments" -msgstr "AMS філамент" +msgstr "Філамент AMS" msgid "Click to pick filament color" msgstr "Натисніть, щоб вибрати колір філаменту" @@ -7110,10 +7125,10 @@ msgid "Add/Remove materials" msgstr "Додати/видалити матеріали" msgid "Select/Remove printers(system presets)" -msgstr "Вибрати/Вилучити принтери (системні налаштування)" +msgstr "Вибрати/Вилучити принтери (системні профілі)" msgid "Create printer" -msgstr "Створити" +msgstr "Створити принтер" msgid "The selected preset is null!" msgstr "Обраний пресет є порожнім!" @@ -7161,7 +7176,7 @@ msgid "By Layer" msgstr "Пошарово" msgid "By Object" -msgstr "Пооб'єктно" +msgstr "Кожен об'єкт окремо" msgid "Accept" msgstr "Приймати" @@ -7261,7 +7276,7 @@ msgid "Task canceled" msgstr "Завдання скасовано" msgid "(LAN)" -msgstr "(LAN)" +msgstr "" msgid "Search" msgstr "Пошук" @@ -7687,10 +7702,10 @@ msgid "Save current %s" msgstr "Зберегти поточний %s" msgid "Delete this preset" -msgstr "Видалити цей пресет" +msgstr "Видалити цей профіль" msgid "Search in preset" -msgstr "Пошук у пресеті" +msgstr "Пошук у профілі" msgid "Click to reset all settings to the last saved preset." msgstr "" @@ -7701,18 +7716,18 @@ msgid "" "Prime tower is required for smooth timelapse. There may be flaws on the " "model without prime tower. Are you sure you want to disable prime tower?" msgstr "" -"Prime Tower потрібно для плавного таймлапсу. Можуть бути недоліки в " -"моделібез головної вежі. Ви впевнені, що хочете вимкнути основну вежу?" +"Для плавного таймлапсу потребується підготовча вежа. Без підготовчої вежі в " +"моделі можуть бути недоліки. Ви впевнені, що хочете вимкнути підготовчу вежу?" 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 "" -"Для плавного таймлапсу потрібно Prime Tower. Можуть бути недоліки в " -"моделіБез головної вежі. Ви хочете включити головну вежу?" +"Для плавного таймлапсу потребується підготовча вежа. Без підготовчої вежі в " +"моделі можуть бути недоліки. Ви хочете включити головну вежу?" msgid "Still print by object?" -msgstr "Ви все ще друкуєте за об’єктом?" +msgstr "Все одно друкувати кожен об'єкт окремо?" msgid "" "We have added an experimental style \"Tree Slim\" that features smaller " @@ -7814,8 +7829,8 @@ 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" @@ -7842,6 +7857,8 @@ msgid "" "This action is not revertible.\n" "Do you want to proceed?" msgstr "" +"Цю дію неможливо відмінити.\n" +"\\vХочете продовжити?" msgid "Detach preset" msgstr "Від'єднати пресет" @@ -7945,7 +7962,7 @@ msgid "Bridge" msgstr "Міст" msgid "Set speed for external and internal bridges" -msgstr "Встановіть швидкість для зовнішнього та внутрішнього мостів" +msgstr "Встановіть швидкість для зовнішніх та внутрішніх мостів" msgid "Travel speed" msgstr "Швидкість переміщення" @@ -7969,10 +7986,10 @@ msgid "Multimaterial" msgstr "Мультиматеріал" msgid "Prime tower" -msgstr "Вежа Очищення" +msgstr "Підготовча вежа" msgid "Filament for Features" -msgstr "" +msgstr "Філамент для ознак" msgid "Ooze prevention" msgstr "Запобігання просочування" @@ -8013,6 +8030,7 @@ msgstr[1] "" msgstr[2] "" "Наступні рядки %s містять зарезервовані ключові слова.\n" "Видаліть їх або виконайте візуалізацію G-коду та оцінку часу друку." +msgstr[3] "" msgid "Reserved keywords found" msgstr "Знайдено зарезервовані ключові слова" @@ -8050,12 +8068,14 @@ msgid "Nozzle temperature when printing" msgstr "Температура сопла під час друку" msgid "Cool Plate (SuperTack)" -msgstr "" +msgstr "Холодна пластина (SuperTack)" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " "does not support to print on the Cool Plate SuperTack" msgstr "" +"Температура столу при встановленій холодній пластині. Значення 0 означає що " +"філамент не підтримує друк на Холодній Пластині SuperTack" msgid "Cool Plate" msgstr "Холодна пластина" @@ -8075,6 +8095,8 @@ msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " "does not support to print on the Textured Cool Plate" msgstr "" +"Температура столу при встановленій холодній пластині. Значення 0 означає що " +"філамент не підтримує друк на Холодній Пластині SuperTack" msgid "Engineering plate" msgstr "Інженерна пластина" @@ -8164,7 +8186,7 @@ msgid "Filament end G-code" msgstr "G-код кінця філаменту" msgid "Wipe tower parameters" -msgstr "Параметри вежі витирання" +msgstr "Параметри вежі протирання" msgid "Toolchange parameters with single extruder MM printers" msgstr "Параметри зміни інструменту в одно-екструдерному ММ-принтері" @@ -8217,7 +8239,7 @@ msgid "Machine end G-code" msgstr "Кінцевий G-code" msgid "Printing by object G-code" -msgstr "Друк за об’єктом за допомогою G-коду" +msgstr "G-коду друку кожного об'єкту окремо" msgid "Before layer change G-code" msgstr "G-code перед зміною шару" @@ -8276,7 +8298,7 @@ msgid "Nozzle diameter" msgstr "Діаметр сопла" msgid "Wipe tower" -msgstr "Вежа витирання" +msgstr "Вежа протирання" msgid "Single extruder multi-material parameters" msgstr "Параметри екструдеру в багато-екструдерному принтері" @@ -8285,12 +8307,14 @@ msgid "" "This is a single extruder multi-material printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" msgstr "" +"Це принтер з підтримкою декількох матеріалів одним екструдером, діаметри " +"всіх екструдерів буде замінено новим значенням. Хочете продовжити?" msgid "Layer height limits" msgstr "Обмеження висоти шару" msgid "Z-Hop" -msgstr "" +msgstr "Стрибок-Z" msgid "Retraction when switching material" msgstr "Втягування під час зміни матеріалу" @@ -8305,7 +8329,7 @@ msgstr "" "Чи я повинен відключити його, щоб включити Firmware Retraction?" msgid "Firmware Retraction" -msgstr "Firmware Retraction" +msgstr "" msgid "Detached" msgstr "Окремий" @@ -8328,6 +8352,7 @@ msgid_plural "The following preset inherits this preset." msgstr[0] "Профіль вказаний нижче, успадковується від поточного профілю." msgstr[1] "Профілі вказані нижче, успадковуються від поточного профілю." msgstr[2] "Профілі вказані нижче, успадковуються від поточного профілю." +msgstr[3] "" #. TRN Remove/Delete #, boost-format @@ -8339,6 +8364,7 @@ msgid_plural "Following presets will be deleted too." msgstr[0] "Наступне попереднє встановлення також буде видалено." msgstr[1] "Наступні стилі також будуть видалені." msgstr[2] "Наступні стилі також будуть видалені." +msgstr[3] "" msgid "" "Are you sure to delete the selected preset? \n" @@ -8372,7 +8398,7 @@ msgid "Process Settings" msgstr "Налаштування процесу" msgid "Undef" -msgstr "Undef" +msgstr "" msgid "Unsaved Changes" msgstr "Незбережені зміни" @@ -8491,10 +8517,10 @@ msgid "Capabilities" msgstr "Можливості" msgid "Show all presets (including incompatible)" -msgstr "Показати всі налаштування (включаючи несумісні)" +msgstr "Показувати всі профілі (включаючи несумісні)" msgid "Select presets to compare" -msgstr "Виберіть налаштування для порівняння" +msgstr "Виберіть профілі для порівняння" msgid "" "You can only transfer to current active profile because it has been modified." @@ -8698,7 +8724,7 @@ msgid "Re-calculate" msgstr "Перерахувати" msgid "Flushing volumes for filament change" -msgstr "Обсяги промивання для зміни Філаменту" +msgstr "Об'єми промивання для зміни філаменту" msgid "" "Orca would re-calculate your flushing volumes every time the filaments color " @@ -8709,7 +8735,7 @@ msgstr "" "Slicer > Параметри" msgid "Flushing volume (mm³) for each filament pair." -msgstr "Об'єм промивки (мм³) для кожної пари Філаменту." +msgstr "Об'єм промивання (мм³) для кожної пари філаментів." #, c-format, boost-format msgid "Suggestion: Flushing Volume in range [%d, %d]" @@ -8800,10 +8826,10 @@ msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Імпорт геометричних даних із файлів STL/STEP/3MF/OBJ/AMF" msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" +msgstr "" msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Вставити з буфера обміну" @@ -8833,10 +8859,10 @@ msgid "Zoom View" msgstr "Перегляд масштабу" msgid "Shift+A" -msgstr "Shift+A" +msgstr "" msgid "Shift+R" -msgstr "Shift+R" +msgstr "" msgid "" "Auto orientates selected objects or all objects.If there are selected " @@ -8848,7 +8874,7 @@ msgstr "" "на поточному диску." msgid "Shift+Tab" -msgstr "Shift+Tab" +msgstr "" msgid "Collapse/Expand the sidebar" msgstr "Згорнути/розгорнути бічну панель" @@ -9001,7 +9027,7 @@ msgid "Alt+Mouse wheel" msgstr "Alt+колесо миші" msgid "Gizmo" -msgstr "Gizmo" +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "Встановіть номер екструдера для об'єктів та деталей" @@ -9125,28 +9151,34 @@ msgstr "Підключити принтер за допомогою IP-адре 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 3. Please obtain the device SN from the printer side; it is usually " "found in the device information on the printer screen." msgstr "" +"Крок 3. Будь-ласка знайдіть Серійний Номер (SN) принтера; зазвичай його " +"модна знайти в інформації на екрані принтера." msgid "IP" -msgstr "IP" +msgstr "" msgid "Access Code" msgstr "Код доступу" msgid "Printer model" -msgstr "" +msgstr "Модель принтера" msgid "Printer name" -msgstr "" +msgstr "Назва принтера" msgid "Where to find your printer's IP and Access Code?" msgstr "Де знайти IP-адресу та код доступу вашого принтера?" @@ -9155,7 +9187,7 @@ msgid "Connect" msgstr "Підключити" msgid "Manual Setup" -msgstr "" +msgstr "Ручне налаштування" msgid "connecting..." msgstr "підключення…" @@ -9363,13 +9395,13 @@ msgid "Overhang wall" msgstr "Нависаюча стінка" msgid "Sparse infill" -msgstr "Заповнення" +msgstr "Часткове заповнення" msgid "Internal solid infill" msgstr "Внутрішнє суцільне заповнення" msgid "Top surface" -msgstr "Верхній шар" +msgstr "Верхня поверхня" msgid "Bottom surface" msgstr "Нижня поверхня" @@ -9518,7 +9550,7 @@ msgstr "" "колізії." msgid "Prime Tower" -msgstr "Prime Tower" +msgstr "Підготовча вежа" msgid " is too close to others, and collisions may be caused.\n" msgstr " залишається близько до інших, що може призвести до зіткнення.\n" @@ -9564,6 +9596,8 @@ msgid "" "While the object %1% itself fits the build volume, it exceeds the maximum " "build volume height because of material shrinkage compensation." msgstr "" +"Об'єкт %1% влазить в робочий об'єм, але він перевищує максимальну висоту " +"робочого об'єму із-за компенсації усадки матеріалу." #, boost-format msgid "The object %1% exceeds the maximum build volume height." @@ -9592,6 +9626,9 @@ msgid "" "well when the prime tower is enabled. It's very experimental, so please " "proceed with caution." msgstr "" +"Різні діаметри сопел та різні діаметри філаменту можуть працювати некоректно " +"коли ввімкнена підготовча вежа. Це експериментальна функція, тому " +"використовуйте її з обережністю." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9604,6 +9641,8 @@ msgid "" "Ooze prevention is only supported with the wipe tower when " "'single_extruder_multi_material' is off." msgstr "" +"Запобігання витіканню підтримується тільки для вежі протирання коли опція " +"'single_extruder_multi_material' вимкнена." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -9613,40 +9652,41 @@ msgstr "" "Sprinter, RepRapFirmware і Repetier G-code." msgid "The prime tower is not supported in \"By object\" print." -msgstr "Під час друку \"По об'єкту\" праймер не підтримується." +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 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 "Too small line width" msgstr "Надто маленька ширина лінії" @@ -9657,7 +9697,7 @@ 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 " @@ -9771,6 +9811,8 @@ msgid "" "Filament shrinkage will not be used because filament shrinkage for the used " "filaments differs significantly." msgstr "" +"Усадка філаменту не буде використовуватися, оскільки усадка філаменту, що " +"використовуються, суттєво відрізняється." msgid "Generating skirt & brim" msgstr "Генерація спідниці та кайми" @@ -9807,7 +9849,7 @@ msgid "Bed custom model" msgstr "Індивідуальна модель стола" msgid "Elephant foot compensation" -msgstr "Компенсація слонової ноги" +msgstr "Компенсація слонової стопи" msgid "" "Shrink the initial layer on build plate to compensate for elephant foot " @@ -9976,12 +10018,14 @@ msgstr "" "підтримує друк на холодному столі" msgid "°C" -msgstr "°C" +msgstr "" msgid "" "Bed temperature for layers except the initial one. Value 0 means the " "filament does not support to print on the Textured Cool Plate" msgstr "" +"Температура столу для всіх шарів, окрім початкового. Значення 0 означає, що " +"філамент не підтримує друк на Текстурованій Холодній Пластині" msgid "" "Bed temperature for layers except the initial one. Value 0 means the " @@ -10014,6 +10058,8 @@ msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Cool Plate SuperTack" msgstr "" +"Температура столу початкового шару. Значення 0 означає, що філамент не " +"підтримує друк на Холодній Пластині SuperTack" msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " @@ -10026,6 +10072,8 @@ msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Textured Cool Plate" msgstr "" +"Температура столу початкового шару. Значення 0 означає, що нитка не " +"підтримує друк на Текстурованій Холодній Пластині" msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " @@ -10147,7 +10195,7 @@ msgid "Nowhere" msgstr "Ніде" msgid "Force cooling for overhangs and bridges" -msgstr "" +msgstr "Примусове охолодження нависань та мостів" msgid "" "Enable this option to allow adjustment of the part cooling fan speed for " @@ -10155,9 +10203,13 @@ msgid "" "speed specifically for these features can improve overall print quality and " "reduce warping." msgstr "" +"Увімкніть цю опцію, щоб дозволити регулювання швидкості вентилятора " +"охолодження деталі спеціально для нависань, внутрішніх і зовнішніх мостів. " +"Налаштування швидкості вентилятора спеціально для цих елементів може " +"покращити загальну якість друку та зменшити викривлення." msgid "Overhangs and external bridges fan speed" -msgstr "" +msgstr "Швидкість вентилятора нависань та зовнішніх мостів" msgid "" "Use this part cooling fan speed when printing bridges or overhang walls with " @@ -10172,7 +10224,7 @@ msgid "" msgstr "" msgid "Overhang cooling activation threshold" -msgstr "" +msgstr "Поріг активації охолодження нависань" #, no-c-format, no-boost-format msgid "" @@ -10182,9 +10234,15 @@ msgid "" "by the layer beneath it. Setting this value to 0% forces the cooling fan to " "run for all outer walls, regardless of the overhang degree." msgstr "" +"Коли нависання перевищує вказаний поріг, змусити вентилятор працювати зі " +"швидкістю \"Швидкість вентилятора нависань\", встановленою нижче. Цей поріг " +"виражається у відсотках, вказуючи на частину ширини кожного лінії, яка не " +"підтримується шаром під нею. Встановлення цього значення на 0% змушує " +"вентилятор працювати для всіх зовнішніх периметрів, незалежно від кута " +"нависання." msgid "External bridge infill direction" -msgstr "" +msgstr "Напрямок заповнення зовнішніх мостів" #, no-c-format, no-boost-format msgid "" @@ -10197,7 +10255,7 @@ msgstr "" "зовнішніх мостів. Використовуйте 180 ° для нульового кута." msgid "Internal bridge infill direction" -msgstr "" +msgstr "Напрямок заповнення внутрішніх мостів" msgid "" "Internal bridging angle override. If left to zero, the bridging angle will " @@ -10207,9 +10265,15 @@ msgid "" "It is recommended to leave it at 0 unless there is a specific model need not " "to." msgstr "" +"Перевизначення кута мостів. Якщо залишити значення рівним нулю, кут мостів " +"буде розраховано автоматично. В іншому випадку для внутрішніх мостів буде " +"використано заданий кут. Використовуйте 180° для нульового кута.\n" +"\n" +"Рекомендується залишати його на 0, якщо тільки це не є необхідним для " +"конкретної моделі." msgid "External bridge density" -msgstr "" +msgstr "Щільність зовнішніх мостів" msgid "" "Controls the density (spacing) of external bridge lines. 100% means solid " @@ -10221,7 +10285,7 @@ msgid "" msgstr "" msgid "Internal bridge density" -msgstr "" +msgstr "Щільність внутрішніх мостів" msgid "" "Controls the density (spacing) of internal bridge lines. 100% means solid " @@ -10335,7 +10399,7 @@ msgstr "" "структурі нижнього заповнення" msgid "Extra perimeters on overhangs" -msgstr "Додаткові периметри при нависаннях" +msgstr "Додаткові периметри для нависань" msgid "" "Create additional perimeter paths over steep overhangs and areas where " @@ -10378,7 +10442,7 @@ msgid "" msgstr "" msgid "Bridge counterbore holes" -msgstr "Отвори для мостових стійок" +msgstr "Мости на цекованих отворах" msgid "" "This option creates bridges for counterbore holes, allowing them to be " @@ -10481,7 +10545,7 @@ msgid "Brim width" msgstr "Ширина кайми" msgid "Distance from model to the outermost brim line" -msgstr "Відстань від моделі до крайньої лінії кайми" +msgstr "Відстань від моделі до останньої зовнішньої лінії кайми" msgid "Brim type" msgstr "Тип кайми" @@ -10490,8 +10554,8 @@ msgid "" "This controls the generation of the brim at outer and/or inner side of " "models. Auto means the brim width is analyzed and calculated automatically." msgstr "" -"Це керує формуванням поля на зовнішній та/або внутрішній сторонімоделей. " -"Auto означає, що ширина поля аналізується та обчислюється автоматично." +"Керує генерацією кайми на зовнішніх та/або внутрішніх сторонах моделей. Авто " +"означає, що ширина кайми аналізується та визначається автоматично." msgid "Painted" msgstr "Пофарбовано" @@ -10503,14 +10567,14 @@ msgid "" "A gap between innermost brim line and object can make brim be removed more " "easily" msgstr "" -"Зазор між внутрішньою лінією кайми та предметом може сприяти легшому зняттю " -"кайми" +"Зазор між першою внутрішньою лінією кайми та об'єктом може сприяти легшому " +"відокремленню кайми" msgid "Brim ears" -msgstr "Кайма вушка" +msgstr "Вушка кайми" msgid "Only draw brim over the sharp edges of the model." -msgstr "Робить кайму вушка лише на гострих краях моделі." +msgstr "Генерувати кайму лише на гострих краях моделі." msgid "Brim ear max angle" msgstr "Максимальний кут вушка кайми" @@ -10520,9 +10584,9 @@ msgid "" "If set to 0, no brim will be created. \n" "If set to ~180, brim will be created on everything but straight sections." msgstr "" -"Максимальний кут, під яким з'являється кайма вушко. \n" -"Якщо встановлено на 0, то край не буде створено. \n" -"Якщо встановлено ~180, то край буде створено на всіх ділянках, окрім прямих." +"Максимальний кут, за якого з'являється вушко кайми.\n" +"Якщо встановлено на 0, кайма не буде створена. \n" +"Якщо встановлено ~180, то кайма буде створена на всіх ділянках, окрім прямих." msgid "Brim ear detection radius" msgstr "Радіус виявлення вушка кайма" @@ -10576,7 +10640,7 @@ msgid "By layer" msgstr "Пошарово" msgid "By object" -msgstr "Пооб'єктно" +msgstr "Кожен об'єкт окремо" msgid "Intra-layer order" msgstr "Внутрішній порядок шарів" @@ -10668,7 +10732,7 @@ msgstr "" "зазвичай можна друкувати безпосередньо без підтримки, якщо не дуже довго" msgid "Thick external bridges" -msgstr "" +msgstr "Товсті зовнішні мости" msgid "" "If enabled, bridges are more reliable, can bridge longer distances, but may " @@ -10692,7 +10756,7 @@ msgstr "" "сопла, краще вимкнути її." msgid "Extra bridge layers (beta)" -msgstr "" +msgstr "Додаткові шари мостів (бета)" msgid "" "This option enables the generation of an extra bridge layer over internal " @@ -10732,16 +10796,16 @@ msgid "Disabled" msgstr "Вимкнено" msgid "External bridge only" -msgstr "" +msgstr "Тільки зовнішні мости" msgid "Internal bridge only" -msgstr "" +msgstr "Тільки внутрішні мости" msgid "Apply to all" -msgstr "" +msgstr "Застосовувати до всіх" msgid "Filter out small internal bridges" -msgstr "" +msgstr "Відфільтровувати маленькі внутрішні мости" msgid "" "This option can help reduce pillowing on top surfaces in heavily slanted or " @@ -10842,10 +10906,10 @@ msgid "Moderate" msgstr "Помірно" msgid "Top surface pattern" -msgstr "Малюнок верхньої поверхні" +msgstr "Шаблон верхньої поверхні" msgid "Line pattern of top surface infill" -msgstr "Малюнок заповнення верхньої поверхні" +msgstr "Шаблон ліній заповнення верхньої поверхні" msgid "Concentric" msgstr "Концентричний" @@ -10872,21 +10936,21 @@ msgid "Octagram Spiral" msgstr "Спіральна октограма" msgid "Bottom surface pattern" -msgstr "Малюнок нижньої поверхні" +msgstr "Шаблон нижньої поверхні" msgid "Line pattern of bottom surface infill, not bridge infill" -msgstr "Малюнок заповнення нижньої поверхні, а не заповнення мосту" +msgstr "Шаблон ліній заповнення нижньої поверхні, крім заповнення мостів" msgid "Internal solid infill pattern" -msgstr "Внутрішній малюнок заповнення суцільними шарами" +msgstr "Шаблон внутрішнього суцільного заповнення" msgid "" "Line pattern of internal solid infill. if the detect narrow 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 " @@ -11408,30 +11472,30 @@ msgid "" msgstr "" msgid "Loading speed" -msgstr "Швидкість заведення" +msgstr "Швидкість завантаження" msgid "Speed used for loading the filament on the wipe tower." msgstr "" -"Швидкість, що використовується для заведення філаменту на вежі витирання." +"Швидкість, що використовується для видавлення філаменту на вежу протирання." msgid "Loading speed at the start" -msgstr "Швидкість заведення на старті" +msgstr "Швидкість завантаження на старті" msgid "Speed used at the very beginning of loading phase." msgstr "Швидкість, що використовується на самому початку фази заведення." msgid "Unloading speed" -msgstr "Швидкість виведення" +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 "Швидкість виведення на старті" +msgstr "Швидкість вивантаження на старті" msgid "" "Speed used for unloading the tip of the filament immediately after ramming." @@ -11484,7 +11548,7 @@ msgstr "" "Охолоджувальні рухи поступово прискорюються, починаючи з цієї швидкості." msgid "Minimal purge on wipe tower" -msgstr "Мінімальне продування на очисній вежі" +msgstr "Мінімальне очищення на вежі протирання" msgid "" "After a tool change, the exact position of the newly loaded filament inside " @@ -11600,14 +11664,14 @@ msgid "(Undefined)" msgstr "(Невизначений)" msgid "Sparse infill direction" -msgstr "Напрямок внутрішнього заповнення" +msgstr "Напрямок часткового заповнення" msgid "" "Angle for sparse infill pattern, which controls the start or main direction " "of line" msgstr "" -"Кут для внутрішнього заповнення, який контролює початок або основний " -"напрямок лінії" +"Кут для часткового заповнення, який контролює початок або основний напрямок " +"лінії" msgid "Solid infill direction" msgstr "Суцільний напрямок заповнення" @@ -11616,7 +11680,8 @@ msgid "" "Angle for solid infill pattern, which controls the start or main direction " "of line" msgstr "" -"Кут для суцільної заливки, який контролює початок або основний напрямок лінії" +"Кут шаблону суцільного заповнення, який контролює початок або основний " +"напрямок лінії" msgid "Rotate solid infill direction" msgstr "Поверніть внутрішне заповнення в напрямку" @@ -11625,28 +11690,28 @@ msgid "Rotate the solid infill direction by 90° for each layer." msgstr "Поверніть напрямок внутрішного заповнення на 90° для кожного шару." msgid "Sparse infill density" -msgstr "Щільність заповнення" +msgstr "Щільність часткового заповнення" #, no-c-format, no-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% перетворює все " -"розріджене заповнення на суцільне, і буде використовуватися внутрішній " -"шаблон внутрішнього заповнення" +"Щільність внутрішнього часткового заповнення, 100% перетворює все часткове " +"заповнення на суцільне заповнення, і буде застосовано шаблон внутрішнього " +"суцільного заповнення" msgid "Sparse infill pattern" -msgstr "Малюнок заповнення" +msgstr "Шаблон часткового заповнення" msgid "Line pattern for internal sparse infill" -msgstr "Шаблон лінії для внутрішнього заповнення" +msgstr "Шаблон ліній внутрішнього часткового заповнення" msgid "Grid" msgstr "Сітка" msgid "2D Lattice" -msgstr "" +msgstr "2D Решітка" msgid "Line" msgstr "Лінія" @@ -11679,10 +11744,10 @@ msgid "Cross Hatch" msgstr "Перехресний штрих" msgid "Quarter Cubic" -msgstr "" +msgstr "Четверть Куба" msgid "Lattice angle 1" -msgstr "" +msgstr "Кут решітки 1" msgid "" "The angle of the first set of 2D lattice elements in the Z direction. Zero " @@ -11690,7 +11755,7 @@ msgid "" msgstr "" msgid "Lattice angle 2" -msgstr "" +msgstr "Кут решітки 1" msgid "" "The angle of the second set of 2D lattice elements in the Z direction. Zero " @@ -11698,7 +11763,7 @@ msgid "" msgstr "" msgid "Sparse infill anchor length" -msgstr "Довжина прив'язки заповнення" +msgstr "Довжина прив'язки часткового заповнення" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " @@ -11900,10 +11965,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» до максимуму на рівні " @@ -11928,7 +11993,7 @@ msgid "" msgstr "" msgid "Internal bridges fan speed" -msgstr "" +msgstr "Швидкість вентилятора внутрішніх мостів" msgid "" "The part cooling fan speed used for all internal bridges. Set to -1 to use " @@ -11981,7 +12046,7 @@ msgid "Whether to apply fuzzy skin on the first layer" msgstr "Чи потрібно застосовувати Шорстку Поверхню до першого шару" msgid "Fuzzy skin noise type" -msgstr "" +msgstr "Тип шуму Шорсткої Поверхні" msgid "" "Noise type to use for fuzzy skin generation.\n" @@ -11993,24 +12058,32 @@ msgid "" "Voronoi: Divides the surface into voronoi cells, and displaces each one by a " "random amount. Creates a patchwork texture." msgstr "" +"Тип шуму для генерації Шорсткої Поверхні.\n" +"Класичний: Класичний рівномірний випадковий шум.\n" +"Перлін: Шум Перліна, який дає більш цілісну текстуру.\n" +"Хвильовий: Подібний до шуму Перліна, але більш складний.\n" +"Гребеневий мультифрактал: Гребеневий шум із різкими, нерівними рисами. " +"Створює мармурові текстури.\n" +"Вороного: Ділить поверхню на комірки Вороного та зміщує кожну з них на " +"випадкову відстань. Створює клаптеву текстуру." msgid "Classic" msgstr "Класичний" msgid "Perlin" -msgstr "" +msgstr "Перлін" msgid "Billow" -msgstr "" +msgstr "Хвильовий" msgid "Ridged Multifractal" -msgstr "" +msgstr "Гребеневий мультифрактал" msgid "Voronoi" -msgstr "" +msgstr "Вороного" msgid "Fuzzy skin feature size" -msgstr "" +msgstr "Розмір деталізації Шорсткої Поверхні" msgid "" "The base size of the coherent noise features, in mm. Higher values will " @@ -12018,7 +12091,7 @@ msgid "" msgstr "" msgid "Fuzzy Skin Noise Octaves" -msgstr "" +msgstr "Октави шуму Шорсткої поверхні" msgid "" "The number of octaves of coherent noise to use. Higher values increase the " @@ -12026,7 +12099,7 @@ msgid "" msgstr "" msgid "Fuzzy skin noise persistence" -msgstr "" +msgstr "Постійність шуму Шорсткої поверхні" msgid "" "The decay rate for higher octaves of the coherent noise. Lower values will " @@ -12137,7 +12210,7 @@ msgstr "" "нарізка." msgid "HRC" -msgstr "HRC" +msgstr "" msgid "Printer structure" msgstr "Структура принтера" @@ -12149,7 +12222,7 @@ msgid "CoreXY" msgstr "CoreXY" msgid "I3" -msgstr "I3" +msgstr "І3" msgid "Hbot" msgstr "Hbot" @@ -12256,7 +12329,7 @@ msgid "Klipper" msgstr "Klipper" msgid "Pellet Modded Printer" -msgstr "" +msgstr "Принтер модифікований гранулами" msgid "Enable this option if your printer uses pellets instead of filaments" msgstr "" @@ -12404,7 +12477,7 @@ msgid "" msgstr "" msgid "Use beam interlocking" -msgstr "" +msgstr "Використовувати зчеплення балками" msgid "" "Generate interlocking beam structure at the locations where different " @@ -12449,7 +12522,7 @@ msgid "" msgstr "" msgid "Ironing Type" -msgstr "Тип розглажування" +msgstr "Тип розгладжування" msgid "" "Ironing is using small flow to print on same height of surface again to make " @@ -12460,7 +12533,7 @@ msgstr "" "параметр визначає, який шар гладити" msgid "No ironing" -msgstr "Немає Розглажування" +msgstr "Немає Розгладжування" msgid "Top surfaces" msgstr "Верхові поверхні" @@ -12472,10 +12545,10 @@ msgid "All solid layer" msgstr "Весь суцільний шар" msgid "Ironing Pattern" -msgstr "Зразок прасування" +msgstr "Шаблон прасування" msgid "The pattern that will be used when ironing" -msgstr "Візерунок, який буде використовуватися під час прасування" +msgstr "Шаблон, який буде використовуватися під час прасування" msgid "Ironing flow" msgstr "Плавний потік" @@ -12960,7 +13033,7 @@ msgid "mm²" msgstr "мм²" msgid "Detect overhang wall" -msgstr "Виявлення стінок, що нависають" +msgstr "Виявлення нависаючих стінок" #, c-format, boost-format msgid "" @@ -12971,7 +13044,7 @@ msgstr "" "іншу швидкість. Для 100%% -ного нависання використовується швидкість моста." msgid "Filament to print walls" -msgstr "" +msgstr "Філамент для друку стінок" msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " @@ -13039,30 +13112,30 @@ msgid "Printer variant" msgstr "Варіант принтера" msgid "Raft contact Z distance" -msgstr "Відстань контакту плоту Z" +msgstr "Відстань Z контакту підкладки" msgid "Z gap between object and raft. Ignored for soluble interface" msgstr "" -"Z зазор між об'єктом та підкладкою. Ігнорується для розчинного матеріалу" +"Зазор Z між об'єктом та підкладкою. Ігнорується для розчинного інтерфейсу" msgid "Raft expansion" -msgstr "Розширення плоту" +msgstr "Розширення підкладки" msgid "Expand all raft layers in XY plane" -msgstr "Розгорнути всі шари плоту в площині XY" +msgstr "Розширити всі шари підкладки в площині XY" msgid "Initial layer density" msgstr "Початкова щільність шару" msgid "Density of the first raft or support layer" -msgstr "Щільність першого шару або опорного шару" +msgstr "Щільність першого шару підкладки або підтримки" msgid "Initial layer expansion" msgstr "Розширення початкового шару" msgid "Expand the first raft or support layer to improve bed plate adhesion" msgstr "" -"Розширити першу підкладку або шар підтримки, щоб покращити прилипання до " +"Розширити перший шар підкладки або підтримки, щоб покращити прилипання до " "робочої поверхні" msgid "Raft layers" @@ -13095,12 +13168,12 @@ msgstr "" "поріг" msgid "Retract amount before wipe" -msgstr "Втягування при розгладжуванні" +msgstr "Обсяг втягування перед протиранням" msgid "" "The length of fast retraction before wipe, relative to retraction length" msgstr "" -"Довжина швидкого втягування перед очищенням, відносно довжини втягування" +"Довжина швидкого втягування перед протиранням, відносно довжини втягування" msgid "Retract when change layer" msgstr "Втягування при зміні шару" @@ -13152,7 +13225,7 @@ msgstr "" "зміни філаменту" msgid "Z-hop height" -msgstr "" +msgstr "Висота Z-підйому" msgid "" "Whenever the retraction is done, the nozzle is lifted a little to create " @@ -13185,7 +13258,7 @@ msgstr "" "параметр “Межа зниження Z” і знаходиться нижче цього значення" msgid "Z-hop type" -msgstr "" +msgstr "Тип Z-підйому" msgid "Z hop type" msgstr "Тип Z-стрибка" @@ -13197,7 +13270,7 @@ msgid "Spiral" msgstr "Спіраль" msgid "Traveling angle" -msgstr "" +msgstr "Кут переміщення" msgid "" "Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results " @@ -13463,20 +13536,20 @@ msgid "Use scarf joint for inner walls as well." msgstr "Використовувати з’єднання з шарфом також для внутрішніх стін." msgid "Role base wipe speed" -msgstr "Швидкість очищення залежно від типу" +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 "Очищати при завершенні контуру" +msgstr "Протирати на контурах" msgid "" "To minimize the visibility of the seam in a closed loop extrusion, a small " @@ -13486,7 +13559,7 @@ msgstr "" "Невеликий рух усередину виконується до виходу екструдера з контуру." msgid "Wipe before external loop" -msgstr "Очищати перед зовнішнім контуром" +msgstr "Протирати перед зовнішнім контуром" msgid "" "To minimize visibility of potential overextrusion at the start of an " @@ -13510,7 +13583,7 @@ msgstr "" "периметр буде надруковано одразу після руху втягування." msgid "Wipe speed" -msgstr "Швидкість очищення" +msgstr "Швидкість протирання" msgid "" "The wipe speed is determined by the speed setting specified in this " @@ -13518,7 +13591,7 @@ msgid "" "be calculated based on the travel speed setting above.The default value for " "this parameter is 80%" msgstr "" -"Швидкість очищення визначається налаштуванням швидкості, зазначеної в " +"Швидкість протирання визначається налаштуванням швидкості, зазначеної в " "данійконфігурації. Якщо це значення виражено у відсотках (наприклад, 80%), " "то воно буде розраховано на основі наведеної вище установки швидкості руху. " "За замовчуванням для цього параметра - 80%" @@ -13527,7 +13600,7 @@ msgid "Skirt distance" msgstr "Відступ спідниці" msgid "Distance from skirt to brim or object" -msgstr "Відстань між спідницею/каймою або моделлю" +msgstr "Відстань між спідницею та каймою або моделлю" msgid "Skirt start point" msgstr "Початкова точка спідниці" @@ -13536,15 +13609,17 @@ msgid "" "Angle from the object center to skirt start point. Zero is the most right " "position, counter clockwise is positive angle." msgstr "" +"Кут від центру об'єкта до початкової точки спідниці. Нуль - це найбільш " +"права позиція, позитивний кут - проти годинникової стрілки." msgid "Skirt height" -msgstr "Шари спідниці" +msgstr "Висота спідниці" msgid "How many layers of skirt. Usually only one layer" -msgstr "Скільки шарів спідниці. Зазвичай лише один шар" +msgstr "Скільки буде шарів спідниці. Зазвичай лише один шар" msgid "Draft shield" -msgstr "Захисний бар’єр" +msgstr "Захисний екран" msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and " @@ -13557,6 +13632,15 @@ msgid "" "distance from the object. Therefore, if brims are active it may intersect " "with them. To avoid this, increase the skirt distance value.\n" msgstr "" +"Захисний екран буде корисним для захисту друку ABS або ASA від викривлення " +"та відлипання від столу в наслідок протягу повітря. Зазвичай він потрібен " +"для відкритих принтерів, які не мають закритої камери. \n" +"\n" +"Увімкнено = Спідниця буде тої ж висоти що і найвищий об'єкт друку. Інакше " +"буде застосовано параметр \"Висота спідниці\"\n" +"До уваги: При увімкненому захисному екрані, спідниця буде надрукована на " +"відстані від об'єкту. Тому, якщо увімкнена кайма, вони можуть перетинатися. " +"Щоб запобігти цьому, збільшіть значення відстані спідниці.\n" msgid "Enabled" msgstr "Увімкнуто" @@ -13568,6 +13652,8 @@ msgid "" "Combined - single skirt for all objects, Per object - individual object " "skirt." msgstr "" +"Об'єднана - одна спідниця для всіх об'єктів, Пооб'єктна - окрема спідниця " +"для кожного об'єкта." msgid "Combined" msgstr "Об'єднана" @@ -13586,7 +13672,7 @@ msgstr "Швидкість спідниці" msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." msgstr "" -"Швидкість спідниці, у мм/с. Нуль означає використання стандартної швидкості " +"Швидкість спідниці, у мм/с. Нуль означає використання звичайної швидкості " "екструзії шару." msgid "Skirt minimum extrusion length" @@ -13601,6 +13687,13 @@ msgid "" "Final number of loops is not taling into account whli arranging or " "validating objects distance. Increase loop number in such case. " msgstr "" +"Мінімальна довжина подачі філаменту у мм при друці спідниці. Нуль означає, " +"що ця функція буде вимкнена.\n" +"\n" +"Значення більше нуля доречно використовувати, якщо принтер налаштований без " +"підготовчої лінії. \n" +"Остаточна кількість контурів не враховується при упорядкуванні або перевірці " +"відстані об'єктів. Збільшіть кількість контурів у такому разі. " msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " @@ -13694,9 +13787,9 @@ msgid "" msgstr "" "Якщо вибрано плавний або традиційний режим, для кожного друку буде " "згенеровано відео з часовим інтервалом. Після друку кожного шару Знімок " -"камери робиться. Всі ці знімки створюються у вигляді відео з тимчасовим " +"камери робиться. Всі ці знімки створюються у вигляді відео з тимчасовим " "інтервалом після завершення друку. Якщо вибрано режим згладжування, то Після " -"друку кожного шару головка інструментів переміщається до надмірноголотку, а " +"друку кожного шару головка інструментів переміщається до надмірного лотку, а " "потім знімається знімок. Оскільки філамент може просочуватися з сопла під " "час отримання знімка, для гладкого режиму очищення сопла потрібна вежа " "очищення." @@ -13763,10 +13856,10 @@ msgstr "" "де ми використовуємо M600/PAUSE для запуску ручної заміни нитки." msgid "Purge in prime tower" -msgstr "Очищення в головній башті" +msgstr "Очищення в підготовчій вежі" msgid "Purge remaining filament into prime tower" -msgstr "Видаліть залишки нитки в башту первинного намотування" +msgstr "Очищати залишки філаменту в підготовчу вежу" msgid "Enable filament ramming" msgstr "Увімкнути накат нитки" @@ -13854,16 +13947,16 @@ msgid "" msgstr "" msgid "Normal (auto)" -msgstr "" +msgstr "Звичайні (авто)" msgid "Tree (auto)" -msgstr "" +msgstr "Дерево (авто)" msgid "Normal (manual)" -msgstr "" +msgstr "Звичайні (ручні)" msgid "Tree (manual)" -msgstr "" +msgstr "Дерево (ручні)" msgid "Support/object xy distance" msgstr "Підтримка/об'єкт XY відстань" @@ -13876,8 +13969,8 @@ msgstr "Кут шаблону" msgid "Use this setting to rotate the support pattern on the horizontal plane." msgstr "" -"Використовуйте це налаштування, щоб повернути шаблон підтримки в " -"горизонтальному площини." +"Використовуйте цей параметр, щоб повернути шаблон підтримки в горизонтальній " +"площині." msgid "On build plate only" msgstr "Тільки на робочій пластині" @@ -13914,14 +14007,14 @@ msgid "The z gap between the bottom support interface and object" msgstr "Зазор осі z між низом підтримки та об'єктом" msgid "Support/raft base" -msgstr "Підтримка/основа плоту" +msgstr "База підтримки/підкладки" msgid "" "Filament to print support base and raft. \"Default\" means no specific " "filament for support and current filament is used" msgstr "" -"Філамент для друку опорної основи та плоту. «За замовчуванням» означає " -"відсутність конкретного філаменту для опори та використання поточного " +"Філамент для друку підтримок та підкладки. «За замовчуванням» означає " +"відсутність конкретного філаменту для підтримок та використання поточного " "філаменту" msgid "Avoid interface filament for base" @@ -13941,7 +14034,7 @@ msgstr "" "діаметру сопла." msgid "Interface use loop pattern" -msgstr "Інтерфейс використовує шаблон шлейфу" +msgstr "Інтерфейс використовує шаблон контуру" msgid "" "Cover the top contact layer of the supports with loops. Disabled by default." @@ -13949,7 +14042,7 @@ msgstr "" "Накрийте петлями верхній контактний шар опор. Вимкнено за замовчуванням." msgid "Support/raft interface" -msgstr "Інтерфейс підтримки/плота" +msgstr "Інтерфейс підтримки/підкладки" msgid "" "Filament to print support interface. \"Default\" means no specific filament " @@ -13991,7 +14084,7 @@ msgid "Speed of support interface" msgstr "Швидкість друку підтримки" msgid "Base pattern" -msgstr "Базовий шаблон" +msgstr "Основний шаблон" msgid "Line pattern of support" msgstr "Лінія підтримки" @@ -14018,7 +14111,7 @@ msgid "Rectilinear Interlaced" msgstr "Прямолінійний черезрядковий" msgid "Base pattern spacing" -msgstr "Базовий інтервал шаблону" +msgstr "Інтервал основного шаблону" msgid "Spacing between support lines" msgstr "Відстань між лініями підтримки" @@ -14053,22 +14146,22 @@ msgid "Default (Grid/Organic" msgstr "За замовчуванням (Сітка/Органічна)" msgid "Snug" -msgstr "Обережний" +msgstr "Обережні" msgid "Organic" -msgstr "Органічна" +msgstr "Органічні" msgid "Tree Slim" -msgstr "Деревоподібна тонка" +msgstr "Дерево тонкі" msgid "Tree Strong" -msgstr "Деревоподібна сильна" +msgstr "Дерево міцні" msgid "Tree Hybrid" -msgstr "Деревоподібна гібридна" +msgstr "Дерево гібридні" msgid "Independent support layer height" -msgstr "Незалежна висота опорного шару" +msgstr "Незалежна висота шарів підтримки" msgid "" "Support layer uses layer height independent with object layer. This is to " @@ -14088,7 +14181,7 @@ msgid "" msgstr "Буде створена опора для нависань з кутом нахилу нижче порогу." msgid "Threshold overlap" -msgstr "" +msgstr "Поріг накладання" msgid "" "If threshold angle is zero, support will be generated for overhangs whose " @@ -14161,14 +14254,14 @@ msgid "" "Enabling this option means the width of the brim for tree support will be " "automatically calculated" msgstr "" -"Увімкнення цієї опції означає, що ширина поля для підтримки дерева " -"будерозрахована автоматично" +"Увімкнення цієї опції означає, що ширина кайми для деревоподібної підтримки " +"буде розрахована автоматично" msgid "Tree support brim width" -msgstr "Ширина кайми деревовидної підтримки" +msgstr "Ширина кайми деревоподібної підтримки" msgid "Distance from tree branch to the outermost brim line" -msgstr "Відстань від гілки дерева до зовнішньої крайньої лінії кайми" +msgstr "Відстань від гілки дерева до останньої зовнішньої лінії кайми" msgid "Tip Diameter" msgstr "Діаметр кінчика" @@ -14232,8 +14325,8 @@ msgstr "Увімкнути контроль температури" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -14335,7 +14428,7 @@ msgid "Speed of travel which is faster and without extrusion" msgstr "Швидкість переміщення, яка є швидше і без екструзії" msgid "Wipe while retracting" -msgstr "Ретракт при очищенні" +msgstr "Протирати під час втягування" msgid "" "Move nozzle along the last extrusion path when retracting to clean leaked " @@ -14346,7 +14439,7 @@ msgstr "" "двійковийоб'єкт під час друку нової деталі після переміщення" msgid "Wipe Distance" -msgstr "Відстань очищення" +msgstr "Відстань протирання" msgid "" "Describe how long the nozzle will move along the last path when " @@ -14365,9 +14458,9 @@ msgstr "" "Залежно від тривалості операції витирання, швидкості та тривалості " "втягування екструдера/нитки, може знадобитися рух накату для нитки. \n" "\n" -"Якщо встановити значення у параметрі \"Кількість втягування перед витиранням" -"\" нижче, надлишкове втягування буде виконано перед витиранням, інакше воно " -"буде виконано після нього." +"Якщо встановити значення у параметрі \"Кількість втягування перед " +"витиранням\" нижче, надлишкове втягування буде виконано перед витиранням, " +"інакше воно буде виконано після нього." msgid "" "The wiping tower can be used to clean up the residue on the nozzle and " @@ -14382,7 +14475,7 @@ msgid "Purging volumes" msgstr "Обсяг очищення" msgid "Flush multiplier" -msgstr "Множина очищення" +msgstr "Множник промивання" msgid "" "The actual flushing volumes is equal to the flush multiplier multiplied by " @@ -14392,19 +14485,19 @@ msgstr "" "обсягипромивання в таблиці." msgid "Prime volume" -msgstr "Основний обсяг" +msgstr "Об'єм підготовки" msgid "The volume of material to prime extruder on tower." -msgstr "Обсяг матеріалу для первинного екструдера на башті." +msgstr "Об'єм матеріалу для підготовки екструдера на вежі." msgid "Width of prime tower" -msgstr "Ширина основної вежі" +msgstr "Ширина підготовчої вежі" msgid "Wipe tower rotation angle" -msgstr "Кут повороту вежі витирання" +msgstr "Кут повороту вежі протирання" msgid "Wipe tower rotation angle with respect to x-axis." -msgstr "Кут повороту вежі витирання за віссю Х." +msgstr "Кут повороту вежі протирання за віссю Х." msgid "Stabilization cone apex angle" msgstr "Кут нахилу вершини стабілізаційного конуса" @@ -14413,11 +14506,11 @@ msgid "" "Angle at the apex of the cone that is used to stabilize the wipe tower. " "Larger angle means wider base." msgstr "" -"Кут на вершині конуса, який використовується для стабілізації очисної вежі. " -"Чим більший кут, тим ширша основа." +"Кут на вершині конуса, який використовується для стабілізації вежі " +"протирання. Чим більший кут, тим ширша основа." msgid "Maximum wipe tower print speed" -msgstr "Максимальна швидкість друку протиральної башти" +msgstr "Максимальна швидкість друку вежі протирання" msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe " @@ -14465,8 +14558,8 @@ 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, " -"щоб використовувати той, що є в наявності (бажано нерозчинний)." +"Екструдер використаний для друку по периметру вежі проирання. Встановіть " +"значення 0, щоб використовувати той, що є в наявності (бажано нерозчинний)." msgid "Purging volumes - load/unload volumes" msgstr "Обсяги очищення - обсяги завантаження/розвантаження" @@ -14477,8 +14570,8 @@ msgid "" "volumes below." msgstr "" "Цей вектор зберігає необхідні об'єми для заміни кожного інструменту, що " -"використовується на вежі. Ці значення використовуються для спрощення " -"створення повних об'ємів очищення нижче." +"використовується на вежі. Ці протирання значення використовуються для " +"спрощення створення повних об'ємів очищення нижче." msgid "" "Purging after filament change will be done inside objects' infills. This may " @@ -14519,10 +14612,10 @@ msgstr "" "Максимальна відстань між підтримками на ділянках часткового заповнення." msgid "Wipe tower purge lines spacing" -msgstr "Протерти відстань між лініями продувки башти" +msgstr "Відстань між лініями очищення на вежі протирання" msgid "Spacing of purge lines on the wipe tower." -msgstr "Відстань між лініями продувки на протиральній башті." +msgstr "Відстань між лініями очищення на вежі протирання." msgid "Extra flow for purging" msgstr "Додатковий потік для очищення" @@ -14902,10 +14995,10 @@ msgstr "" "даний момент." msgid "Has wipe tower" -msgstr "Має протиральну вежу" +msgstr "Має вежу протирання" msgid "Whether or not wipe tower is being generated in the print." -msgstr "Незалежно від того, чи створюється вежа витирання на відбитку чи ні." +msgstr "Незалежно від того, чи створюється вежа протирання при друці." msgid "Initial extruder" msgstr "Початковий екструдер" @@ -15076,7 +15169,7 @@ msgid "Name of the print preset used for slicing." msgstr "Назва стилю друку, яка використовується для нарізки." msgid "Filament preset name" -msgstr "Попередня назва нитки" +msgstr "Ім'я профілю філаменту" msgid "" "Names of the filament presets used for slicing. The variable is a vector " @@ -15648,7 +15741,7 @@ msgid "Input Value" msgstr "Введіть значення" msgid "Save to Filament Preset" -msgstr "Зберегти в попередньому матеріалі" +msgstr "Зберегти в Профіль Філаменту" msgid "Preset" msgstr "Шаблон" @@ -15854,7 +15947,7 @@ msgid "Extruder type" msgstr "Тип екструдера" msgid "PA Tower" -msgstr "РА башта" +msgstr "РА Вежа" msgid "PA Line" msgstr "РА лінія" @@ -16051,16 +16144,16 @@ msgid "" msgstr "" msgid "Time-lapse" -msgstr "" +msgstr "Таймлапс" msgid "Heated Bed Leveling" -msgstr "" +msgstr "Вирівнювання Нагрівального Столу" msgid "Textured Build Plate (Side A)" -msgstr "" +msgstr "Текстурована Робоча Пластина (Cторона A)" msgid "Smooth Build Plate (Side B)" -msgstr "" +msgstr "Гладка Робоча Пластина (Cторона B)" msgid "Unable to perform boolean operation on selected parts" msgstr "Не вдається виконати булеву операцію на вибраних частинах" @@ -16249,8 +16342,8 @@ msgstr "" "Чи бажаєте ви їх перезаписати?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Ми б перейменували попередні налаштування на «Вибраний вами серійний " @@ -16262,7 +16355,7 @@ msgid "Create Printer/Nozzle" msgstr "Створити Принтер/Сопло" msgid "Create Printer" -msgstr "Принтер" +msgstr "Створити Принтер" msgid "Create Nozzle for Existing Printer" msgstr "Створити сопло для існуючого принтера" @@ -16612,6 +16705,7 @@ msgid_plural "The following preset inherits this preset." msgstr[0] "Профіль вказаний нижче, успадковується від поточного профілю." msgstr[1] "Профілі вказані нижче, успадковуються від поточного профілю." msgstr[2] "Профілі вказані нижче, успадковуються від поточного профілю." +msgstr[3] "" msgid "Delete Preset" msgstr "Видалити пресет" @@ -16620,7 +16714,7 @@ msgid "Are you sure to delete the selected preset?" msgstr "Ви впевнені, що хочете видалити вибраний пресет?" msgid "Delete preset" -msgstr "Видалити пресет" +msgstr "Видалити профіль" msgid "+ Add Preset" msgstr "+ Додати пресет" @@ -17324,8 +17418,8 @@ msgid "" "Auto-Arrange\n" "Did you know that you can auto-arrange all objects in your project?" msgstr "" -"Авторозбудова\n" -"Чи знаєте ви, що можна автоматично впорядкувати всі об'єкти в проекті?" +"Автоматичне впорядкування\n" +"Чи знаєте ви, що можна автоматично розташувати всі об'єкти в проєкті?" #: resources/data/hints.ini: [hint:Auto-Orient] msgid "" @@ -17515,8 +17609,8 @@ msgid "" "the printing surface, it's recommended to use a brim?" msgstr "" "Кайма для кращого прилипання\n" -"Чи знаєте ви, що коли моделі друку мають невелику площу контакту з поверхнею " -"друку, рекомендується використовувати кайму?" +"Чи знаєте ви, що при друці моделей які мають невелику площу контакту з " +"поверхнею друку, рекомендується використовувати кайму?" #: resources/data/hints.ini: [hint:Set parameters for multiple objects] msgid "" @@ -17542,9 +17636,9 @@ msgid "" "Did you know that you can save the wasted filament by flushing them into " "support/objects/infill during filament change?" msgstr "" -"Урівень з опорою/об'єктами/заповненням\n" -"Чи знаєте ви, що ви можете зберегти втрачені нитки, промиваючи їх в опору/" -"об'єкти/заповнення під час зміни нитки?" +"Промивати в підтримки/об'єкти/заповнення\n" +"Чи знаєте ви, що ви можете зберегти витрачений філамент, промиваючи його в " +"підтримки/об'єкти/заповнення під час зміни філаменту?" #: resources/data/hints.ini: [hint:Improve strength] msgid "" @@ -17581,1441 +17675,3 @@ msgstr "" "Чи знаєте ви, що при друку матеріалами, схильними до деформації, такими як " "ABS, відповідне підвищення температури гарячого ліжка може зменшити " "ймовірність деформації." - -#~ msgid "Current Cabin humidity" -#~ msgstr "Поточна вологість у кабіні" - -#~ msgid "Stopped." -#~ msgstr "Зупинено." - -#, c-format, boost-format -#~ msgid "Connect failed [%d]!" -#~ msgstr "Помилка підключення [%d]!" - -#~ msgid "Initialize failed (Device connection not ready)!" -#~ msgstr "Ініціалізація не вдалася (З'єднання пристрою не готове)!" - -#~ msgid "Initialize failed (Storage unavailable, insert SD card.)!" -#~ msgstr "Помилка ініціалізації (Сховище недоступне, вставте SD-карту)!" - -#, c-format, boost-format -#~ msgid "Initialize failed (%s)!" -#~ msgstr "Помилка ініціалізації (%s)!" - -#~ msgid "LAN Connection Failed (Sending print file)" -#~ msgstr "Помилка з’єднання LAN (Надсилання файлу друку)" - -#~ 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 і код доступу відрізняються від " -#~ "фактичнихзначень \n" -#~ "на вашому принтері, будь ласка, виправте їх." - -#~ msgid "Step 3: Ping the IP address to check for packet loss and latency." -#~ msgstr "" -#~ "Крок 3: Виконайте пінг до IP-адреси для перевірки втрат пакетів та " -#~ "затримки." - -#~ msgid "IP and Access Code Verified! You may close the window" -#~ msgstr "IP-адреса та доступний код перевірено! Ви можете закрити вікно" - -#~ 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 "Fan speed for overhang" -#~ 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 "Поріг нависання для охолодження" - -#, c-format -#~ msgid "" -#~ "Force cooling fan to be specific speed when overhang degree of printed " -#~ "part exceeds this value. Expressed as percentage which indicates 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 "Bridge density" -#~ msgstr "Щільність мосту" - -#~ msgid "" -#~ "Density of external bridges. 100% means solid bridge. Default is 100%." -#~ msgstr "" -#~ "Щільність зовнішніх мостів. 100% означає суцільний міст. Значення по за " -#~ "замовчуванням - 100%." - -#~ msgid "" -#~ "Improve shell precision by adjusting outer wall spacing. This also " -#~ "improves layer consistency.\n" -#~ "Note: This setting will only take effect if the wall sequence is " -#~ "configured to Inner-Outer" -#~ msgstr "" -#~ "Підвищуйте точність оболонки, регулюючи відстань між зовнішніми стінками. " -#~ "Це також покращує консистенцію шару.\n" -#~ "Примітка: Цей параметр набуде чинності, лише якщо послідовність стінок " -#~ "налаштовано як Внутрішня-зовнішня" - -#~ msgid "Thick bridges" -#~ msgstr "Товсті мости" - -#~ msgid "Filter out small internal bridges (beta)" -#~ msgstr "Відфільтровувати малі Внутрішні мости (бета)" - -#~ msgid "" -#~ "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 overridden by disable_fan_first_layers." -#~ msgstr "" -#~ "Ця швидкість вентилятора забезпечується під час усіх інтерфейсів " -#~ "підтримки,щоб мати можливість послабити їхнє з'єднання з високою " -#~ "швидкістювентилятора.\n" -#~ "Встановіть -1, щоб вимкнути це перевизначення.\n" -#~ "Може бути перевизначений лише disable_fan_first_layers." - -#~ 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 "" -#~ "Менше значення забезпечує плавніші переходи швидкості екструзії. Однак це " -#~ "призводить до значно більшого розміру файлу gcode і більшої кількості " -#~ "інструкцій для обробки принтером. \n" -#~ "\n" -#~ "Значення за замовчуванням 3 добре підходить для більшості випадків. Якщо " -#~ "ваш принтер зависає, збільште це значення, щоб зменшити кількість " -#~ "інструкцій для принтера.\n" -#~ "\n" -#~ "Допустимі значення: 1-5" - -#~ msgid "" -#~ "The minimum printing speed that the printer will slow down to to attempt " -#~ "to maintain the minimum layer time above, when slow down for better layer " -#~ "cooling is enabled." -#~ 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 "" -#~ "звичайна (auto) та деревоподібна (auto) використовується для " -#~ "автоматичногостворення підтримки. Якщо вибрано звичайну (ручну) або " -#~ "деревоподібну (ручну), створюються лише засоби забезпечення підтримки" - -#~ msgid "normal(auto)" -#~ msgstr "звичайна (авто)" - -#~ msgid "tree(auto)" -#~ msgstr "деревоподібна (авто)" - -#~ msgid "normal(manual)" -#~ msgstr "звичайна (ручна)" - -#~ msgid "tree(manual)" -#~ msgstr "деревоподібна (ручна)" - -#~ msgid "ShiftLeft mouse button" -#~ msgstr "ShiftЛіва кнопка миші" - -#~ msgid "Unselect" -#~ msgstr "Зняти виділення" - -#~ msgctxt "Verb" -#~ msgid "Scale" -#~ msgstr "Масштаб" - -#~ msgid "Orca Slicer " -#~ msgstr "Orca Slicer " - -#~ msgid "Cool plate" -#~ msgstr "Холодна пластина" - -#~ msgid "Lift Z Enforcement" -#~ msgstr "Забезпечення стрибків Z" - -#~ msgid "Z hop when retract" -#~ msgstr "Z-стрибок при втягуванні" - -#~ msgid "Reverse on odd" -#~ 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 "" -#~ "Екструдуйте периметри, які мають деталі над звисом, у зворотному напрямку " -#~ "на непарних шарах. Таке чергування шаблонів може значно покращити круті " -#~ "нависання.\n" -#~ "\n" -#~ "Це налаштування також може допомогти зменшити деформацію деталі завдяки " -#~ "зменшенню напружень у стінках деталі." - -#~ 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 recommended 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 "" -#~ "Застосовуйте логіку зворотних периметрів тільки до внутрішніх " -#~ "периметрів. \n" -#~ "\n" -#~ "Це налаштування значно зменшує напруження деталі, оскільки вони " -#~ "розподіляються в різних напрямках. Це повинно зменшити викривлення " -#~ "деталі, зберігаючи при цьому якість зовнішньої стінки. Ця функція може " -#~ "бути дуже корисною для матеріалів, схильних до деформації, таких як ABS/" -#~ "ASA, а також для еластичних ниток, таких як TPU і Silk PLA. Вона також " -#~ "може допомогти зменшити деформацію на пливучих ділянках над опорами.\n" -#~ "\n" -#~ "Щоб це налаштування було найефективнішим, рекомендується встановити Поріг " -#~ "реверсу на 0, щоб усі внутрішні стінки друкувалися в поперемінному " -#~ "напрямку на непарних шарах незалежно від ступеня їхнього вильоту." - -#, no-c-format, no-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" -#~ "Значення 0 вмикає розворот на всіх непарних шарах незалежно від цього." - -#~ msgid "" -#~ "The direction which the wall loops are extruded when looking down from " -#~ "the top.\n" -#~ "\n" -#~ "By default all walls are extruded in counter-clockwise, unless Reverse on " -#~ "odd is enabled. Set this to any option other than Auto will force the " -#~ "wall direction regardless of the Reverse on odd.\n" -#~ "\n" -#~ "This option will be disabled if spiral vase mode is enabled." -#~ msgstr "" -#~ "Напрямок, в якому екструдуються периметри стінок, якщо дивитися зверху " -#~ "вниз.\n" -#~ "\n" -#~ "За замовчуванням усі стінки екструдуються проти годинникової стрілки, " -#~ "якщо тільки не увімкнено Реверс по непарних периметрах. Якщо встановити " -#~ "будь-яку іншу опцію, окрім Авто, то напрямок друку стінки буде " -#~ "визначатися незалежно від значення Реверс по непарних периметрах.\n" -#~ "\n" -#~ "Ця опція буде вимкнена, якщо увімкнено режим Спіральної вази." - -#~ msgid "" -#~ "While printing by Object, the extruder may collide skirt.\n" -#~ "Thus, reset the skirt layer to 1 to avoid that." -#~ msgstr "" -#~ "Під час друку по черзі екструдер може зіткнутися зі спідницею.\n" -#~ "Щоб уникнути цього, скиньте значення шарів спідниці до 1." - -#~ msgid "" -#~ "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" -#~ "0 для вимкнення" - -#~ 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 commands 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" -#~ "Він не буде переміщати команди вентиляторів з кодів користувача (вони " -#~ "діють як свого роду «бар'єр»).\n" -#~ "Він не переміщає команди вентиляторів у початковий gcode, якщо " -#~ "активовано«єдиний початковий gcode користувача».\n" -#~ "Використовуйте 0 для деактивації." - -#~ msgid "" -#~ "A draft shield is useful to protect an ABS or ASA print from warping and " -#~ "detaching from print bed due to wind draft. It is usually needed only " -#~ "with open frame printers, i.e. without an enclosure. \n" -#~ "\n" -#~ "Options:\n" -#~ "Enabled = skirt is as tall as the highest printed object.\n" -#~ "Limited = skirt is as tall as specified by skirt height.\n" -#~ "\n" -#~ "Note: With the draft shield active, the skirt will be printed at skirt " -#~ "distance from the object. Therefore, if brims are active it may intersect " -#~ "with them. To avoid this, increase the skirt distance value.\n" -#~ msgstr "" -#~ "Захист від протягів потрібен для захисту відбитків на ABS або ASA від " -#~ "деформації та відриву від друкарської платформи через протяги. Зазвичай " -#~ "він потрібен лише для принтерів з відкритою рамою, тобто без корпусу. \n" -#~ "\n" -#~ "Параметри:\n" -#~ "Увімкнено = висота спідниці дорівнює висоті найвищого надрукованого " -#~ "об'єкта.\n" -#~ "Обмежено = висота об'єкта не перевищує заданої висоти об'єкта.\n" -#~ "\n" -#~ "Примітка: При активному захисному екрані спідниця буде надрукована на " -#~ "відстані крайки від об'єкта. Тому, якщо активовані краї, вона може " -#~ "перетинатися з ними. Щоб уникнути цього, збільште значення відстані до " -#~ "об'єкта.\n" - -#~ msgid "Limited" -#~ msgstr "Обмежено" - -#~ msgid "" -#~ "Minimum filament extrusion length in mm when printing the skirt. Zero " -#~ "means this feature is disabled.\n" -#~ "\n" -#~ "Using a non zero value is useful if the printer is set up to print " -#~ "without a prime line." -#~ msgstr "" -#~ "Мінімальна довжина витягування нитки в мм під час друку спідниці. Нуль " -#~ "означає, що ця функція вимкнена.\n" -#~ "\n" -#~ "Використання ненульового значення корисне, якщо принтер налаштовано на " -#~ "друк без початкової лінії." - -#~ msgid "" -#~ "Adjust this value to prevent short, unclosed walls from being printed, " -#~ "which could increase print time. Higher values remove more and longer " -#~ "walls.\n" -#~ "\n" -#~ "NOTE: Bottom and top surfaces will not be affected by this value to " -#~ "prevent visual gaps on the ouside of the model. Adjust 'One wall " -#~ "threshold' in the Advanced settings below to adjust the sensitivity of " -#~ "what is considered a top-surface. 'One wall threshold' is only visible if " -#~ "this setting is set above the default value of 0.5, or if single-wall top " -#~ "surfaces is enabled." -#~ msgstr "" -#~ "Налаштуйте це значення, щоб запобігти друкуванню коротких незакритих " -#~ "стін, що може збільшити час друку. Вищі значення видаляють більше і довші " -#~ "стіни." - -#~ msgid "Don't filter out small internal bridges (beta)" -#~ msgstr "Не відфільтровувати маленькі внутрішні мости (бета)" - -#~ msgid "" -#~ "This option can help reducing pillowing on top surfaces in heavily " -#~ "slanted or curved models.\n" -#~ "\n" -#~ "By default, small internal bridges are filtered out and the internal " -#~ "solid infill is printed directly over the sparse infill. This works well " -#~ "in most cases, speeding up printing without too much compromise on top " -#~ "surface quality. \n" -#~ "\n" -#~ "However, in heavily slanted or curved models especially where too low " -#~ "sparse infill density is used, this may result in curling of the " -#~ "unsupported solid infill, causing pillowing.\n" -#~ "\n" -#~ "Enabling this option will print internal bridge layer over slightly " -#~ "unsupported internal solid infill. The options below control the amount " -#~ "of filtering, i.e. the amount of internal bridges created.\n" -#~ "\n" -#~ "Disabled - Disables this option. This is the default behavior and works " -#~ "well in most cases.\n" -#~ "\n" -#~ "Limited filtering - Creates internal bridges on heavily slanted surfaces, " -#~ "while avoiding creating unnecessary internal bridges. This works well for " -#~ "most difficult models.\n" -#~ "\n" -#~ "No filtering - Creates internal bridges on every potential internal " -#~ "overhang. This option is useful for heavily slanted top surface models. " -#~ "However, in most cases it creates too many unnecessary bridges." -#~ msgstr "" -#~ "Ця опція може допомогти зменшити подушку на верхніх поверхнях у сильно " -#~ "нахилених або вигнутих моделях.\n" -#~ "\n" -#~ "За замовчуванням невеликі внутрішні містки відфільтровуються, а внутрішня " -#~ "суцільна заливка друкується безпосередньо поверх внутрішнього заповнення. " -#~ "У більшості випадків це добре працює, прискорюючи друк без надто великого " -#~ "компромісу з якістю верхньої поверхні.\n" -#~ "\n" -#~ "Однак у сильно нахилених або вигнутих моделях, особливо якщо " -#~ "використовується надто низька щільність внутрішнього заповнення, це може " -#~ "призвести до скручування непідтримуваного суцільного заповнення, що " -#~ "спричиняє \"подушку\".\n" -#~ "\n" -#~ "Увімкнення цього параметра призведе до друку внутрішнього мостового шару " -#~ "над злегка непідтримуваним внутрішнім суцільним заповненням. Наведені " -#~ "нижче опції контролюють кількість фільтрації, тобто кількість створених " -#~ "внутрішніх мостів.\n" -#~ "\n" -#~ "Вимкнено - вимикає цей параметр. Це поведінка за замовчуванням, яка добре " -#~ "працює у більшості випадків.\n" -#~ "\n" -#~ "Обмежена фільтрація - створює внутрішні мости на сильно нахилених " -#~ "поверхнях, уникаючи створення зайвих проміжних мостів. Це добре працює " -#~ "для більшості складних моделей.\n" -#~ "\n" -#~ "Без фільтрації - створює внутрішні мости на кожному потенційному " -#~ "внутрішньому виступі. Цей параметр корисний для моделей з сильно " -#~ "нахиленою верхньою поверхнею. Однак, у більшості випадків він створює " -#~ "занадто багато непотрібних перемичок." - -#~ msgid "Shrinkage" -#~ msgstr "Усадка" - -#~ msgid "" -#~ "Enables gap fill for the selected surfaces. The minimum gap length that " -#~ "will be filled can be controlled from the filter out tiny gaps option " -#~ "below.\n" -#~ "\n" -#~ "Options:\n" -#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid " -#~ "surfaces\n" -#~ "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -#~ "only\n" -#~ "3. Nowhere: Disables gap fill\n" -#~ msgstr "" -#~ "Вмикає заповнення проміжків для вибраних поверхонь. Мінімальну довжину " -#~ "проміжку, який буде заповнено, можна контролювати за допомогою опції " -#~ "\"Відфільтрувати крихітні проміжки\" нижче.\n" -#~ "\n" -#~ "Параметри:\n" -#~ "1. Скрізь: Застосовує заповнення проміжків до верхньої, нижньої та " -#~ "внутрішніх суцільних поверхонь\n" -#~ "2. Верхня та нижня поверхні: Застосовує заповнення лише до верхньої та " -#~ "нижньої поверхонь\n" -#~ "3. Ніде: Вимикає заповнення проміжків\n" - -#~ msgid "" -#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " -#~ "material for bridge, to improve sag" -#~ msgstr "" -#~ "Трохи зменшіть це значення (наприклад, 0.9), щоб зменшити кількість " -#~ "матеріалу для мосту, щоб покращити провисання" - -#~ 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 "" -#~ "Це значення визначає товщину внутрішнього мостовидного шару. Це перший " -#~ "шар над внутрішнім заповненням. Зменшіть це значення (наприклад, до 0,9), " -#~ "щоб покращити якість поверхні над внутрішнім заповненням." - -#~ 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 bottom solid infill" -#~ msgstr "" -#~ "Цей фактор впливає на кількість матеріалу для заповнення нижнього " -#~ "твердоготіла" - -#~ msgid "" -#~ "Enable this option to slow printing down in areas where potential curled " -#~ "perimeters may exist" -#~ msgstr "" -#~ "Увімкніть цей параметр, щоб сповільнити друк у зонах, де можуть існувати " -#~ "потенційно нависаючі периметри" - -#~ msgid "Speed of bridge and completely overhang wall" -#~ 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 "Time to load new filament when switch filament. For statistics only" -#~ msgstr "" -#~ "Час завантаження нового філаменту при перемиканні філаменту. Тільки для " -#~ "статистики" - -#~ msgid "" -#~ "Time to unload old filament when switch filament. For statistics only" -#~ 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 "" -#~ "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 "Filter out gaps smaller than the threshold specified" -#~ 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 "" -#~ "Увімкніть цю опцію для керування температурою в камері. Перед " -#~ "\"machine_start_gcode\" буде додано команду M191\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)" - -#~ msgid "" -#~ "Different nozzle diameters and different filament diameters is not " -#~ "allowed when prime tower is enabled." -#~ msgstr "" -#~ "Використання різних діаметрів насадок та різних діаметрів філаментів не " -#~ "допускається, коли увімкнено вежу підготовки." - -#~ msgid "" -#~ "Ooze prevention is currently not supported with the prime tower enabled." -#~ msgstr "" -#~ "Запобігання витіканню з увімкненою вежею підготовки в даний момент не " -#~ "підтримується." - -#~ msgid "" -#~ "Interlocking depth of a segmented region. Zero disables this feature." -#~ msgstr "" -#~ "Глибина взаємного взаємодії сегментованої області. Нуль вимикає цю " -#~ "функцію." - -#~ msgid "Wipe tower extruder" -#~ msgstr "Очисна башта екструдера" - -#~ msgid "Current association: " -#~ msgstr "Поточна асоціація: " - -#~ msgid "Associate prusaslicer://" -#~ msgstr "Асоціювати prusaslicer://" - -#~ msgid "Not associated to any application" -#~ msgstr "Не пов'язаний з жодним додатком" - -#~ msgid "" -#~ "Associate OrcaSlicer with prusaslicer:// links so that Orca can open " -#~ "models from Printable.com" -#~ msgstr "" -#~ "Асоціювати OrcaSlicer з prusaslicer:// посиланнями щоб Orca могла " -#~ "відкривати моделі прямо з Printable.com" - -#~ msgid "Associate bambustudio://" -#~ msgstr "Асоціювати bambustudio://" - -#~ msgid "" -#~ "Associate OrcaSlicer with bambustudio:// links so that Orca can open " -#~ "models from makerworld.com" -#~ msgstr "" -#~ "Асоціювати OrcaSlicer з bambustudio:// посиланнями щоб Orca могла " -#~ "відкривати моделі прямо з makerworld.com" - -#~ msgid "Associate cura://" -#~ msgstr "Асоціювати cura://" - -#~ msgid "" -#~ "Associate OrcaSlicer with cura:// links so that Orca can open models from " -#~ "thingiverse.com" -#~ msgstr "" -#~ "Асоціювати OrcaSlicer з cura:// посиланнями щоб Orca могла відкривати " -#~ "моделі прямо з thingiverse.com" - -#~ msgid "" -#~ "File size exceeds the 100MB upload limit. Please upload your file through " -#~ "the panel." -#~ msgstr "" -#~ "Розмір файлу перевищує ліміт завантаження в 100 Мб. Будь ласка, " -#~ "завантажте свій файл через панель." - -#~ msgid "Please input a valid value (K in 0~0.3)" -#~ msgstr "Введіть допустиме значення (K в діапазоні 0~0.3)" - -#~ msgid "Please input a valid value (K in 0~0.3, N in 0.6~2.0)" -#~ msgstr "Будь ласка, введіть допустиме значення (K від 0~0.3, N від 0.6~2.0)" - -#~ msgid "Select connected printetrs (0/6)" -#~ msgstr "Вибір підключених принтерів (0/6)" - -#, c-format, boost-format -#~ msgid "Select Connected Printetrs (%d/6)" -#~ msgstr "Виберіть Підключені принтери (%d/6)" - -#~ msgid "PrintingPause" -#~ msgstr "Пауза друку" - -#~ msgid "Printer local connection failed, please try again." -#~ 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" -#~ "\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." -#~ msgstr "" -#~ "Будь ласка, знайдіть докладну інформацію щодо калібрування “Flow Dynamics " -#~ "Calibration” у нашому вікі.\n" -#~ "\n" -#~ "Зазвичай калібрування не є необхідним. Коли ви розпочинаєте друк з одним " -#~ "кольором/матеріалом, з опцією “калібрування динаміки потоку” включеною у " -#~ "меню початку друку, принтер буде використовувати старий спосіб " -#~ "калібрування філаменту перед початком друку; Коли ви розпочинаєте друк з " -#~ "декількома кольорами/матеріалами, принтер використовуватиме стандартні " -#~ "параметри компенсації для філаменту під час кожного перемикання " -#~ "філаменту, що в більшості випадків дає гарний результат.\n" -#~ "\n" -#~ "Зверніть увагу, що є деякі випадки, коли результат калібрування може бути " -#~ "ненадійним: використання текстурної підкладки для калібрування; слабка " -#~ "адгезія підкладки (будь ласка, вимийте підкладку або нанесіть клей!) … " -#~ "Більше інформації можна знайти у нашому вікі.\n" -#~ "\n" -#~ "Результати калібрування мають приблизно 10-відсотковий шум у наших " -#~ "тестах, що може призвести до незначних відмінностей у кожному " -#~ "калібруванні. Ми все ще вивчаємо кореневу причину, щоб внести поліпшення " -#~ "в майбутніх оновленнях." - -#~ 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 "Please find the cornor with perfect degree of extrusion" -#~ msgstr "Будь ласка, знайдіть кут із ідеальним ступенем екструзії" - -#~ msgid "" -#~ "Associate OrcaSlicer with prusaslicer:// links so that Orca can open " -#~ "PrusaSlicer links from Printable.com" -#~ msgstr "" -#~ "Зв'язати OrcaSlicer з посиланнями prusaslicer://, щоб Orca могла " -#~ "відкривати посилання PrusaSlicer з Printable.com" - -#~ msgid "" -#~ "Order of wall/infill. When the tickbox is unchecked the walls are printed " -#~ "first, which works best in most cases.\n" -#~ "\n" -#~ "Printing walls first may help with extreme overhangs as the walls have " -#~ "the neighbouring infill to adhere to. However, the infill will slightly " -#~ "push out the printed walls where it is attached to them, resulting in a " -#~ "worse external surface finish. It can also cause the infill to shine " -#~ "through the external surfaces of the part." -#~ msgstr "" -#~ "Порядок стінка/заповнення. Якщо прапорець знято, першими друкуються " -#~ "стіни, що в більшості випадків працює найкраще.\n" -#~ "\n" -#~ "Друк стінок першими може допомогти у випадку екстремальних виступів, " -#~ "оскільки стінки мають сусіднє заповнення, до якого вони прилягають. Однак " -#~ "заповнення злегка виштовхує надруковані стінки там, де воно прикріплене " -#~ "до них, що призводить до погіршення зовнішньої обробки поверхні. Це також " -#~ "може призвести до того, що заповнення просвічуватиметься крізь зовнішні " -#~ "поверхні деталі." - -#~ msgid "X" -#~ msgstr "X" - -#~ msgid "Y" -#~ msgstr "Y" - -#~ msgid "V" -#~ msgstr "V" - -#~ 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.\n" -#~ "Prusa Research. PrusaSlicer від Slic3r Алессандро Ранеллуччі і\n" -#~ "спільнота RepRap" - -#~ msgid "Export &Configs" -#~ msgstr "Експорт &конфігурації" - -#~ msgid "Infill direction" -#~ 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. А допуск припасування однаковим дозволом" - -#~ 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 "Unload Filament" -#~ msgstr "Вивантажте філамент" - -#~ msgid "" -#~ "Choose an AMS slot then press \"Load\" or \"Unload\" button to " -#~ "automatically load or unload filiament." -#~ msgstr "" -#~ "Виберіть слот AMS, потім натисніть кнопку \\Load\\ або \\Unload\\, щоб " -#~ "автоматично\n" -#~ "завантажити або вивантажити філамент." - -#~ msgid "MC" -#~ msgstr "MC" - -#~ msgid "MainBoard" -#~ msgstr "Основна плата" - -#~ msgid "TH" -#~ msgstr "TH" - -#~ msgid "XCam" -#~ msgstr "XCam" - -#~ msgid "HMS" -#~ msgstr "HMS" - -#~ msgid "active" -#~ msgstr "активно" - -#~ msgid "Jump to layer" -#~ 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 "" -#~ "Зелений означає, що вологість AMS нормальна, помаранчевий означає, " -#~ "щоВологість висока,\n" -#~ "червоний означає, що вологість занадто висока. (Гігрометр: чим нижче, тим " -#~ "краще.)" - -#~ 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 "" -#~ "Стан влагопоглинача нижче двох поділів свідчить про те, що вологопоглинач " -#~ "може бути\n" -#~ "неактивний. Будь ласка, замініть осушувач. (Смуги: чим вище, тим краще.)" - -#~ 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 "" -#~ "Примітка. Коли кришку відкрито або замінено пакет з вологопоглиначем, це " -#~ "може зайняти деякий час.\n" -#~ "годин або ночі, щоб увібрати вологу. Низькі температури також " -#~ "уповільнюють\n" -#~ "процес. У цей час індикатор може не відображати патронник.\n" -#~ "точно." - -#~ msgid "" -#~ "Note: if new filament is inserted during printing, the AMS will not " -#~ "automatically read any information until printing is completed." -#~ msgstr "" -#~ "Примітка: якщо під час друку буде вставлено новий філамент, AMS не буде " -#~ "автоматично читати будь-яку інформацію до завершення друку." - -#, boost-format -#~ msgid "Succeed to export G-code to %1%" -#~ msgstr "Успішно експортувати G-код у %1%" - -#~ msgid "Initialize failed (No Device)!" -#~ msgstr "Помилка ініціалізації (немає пристрою)!" - -#~ msgid "Initialize failed (No Camera Device)!" -#~ msgstr "Помилка ініціалізації (немає камери)!" - -#~ msgid "" -#~ "Printer is busy downloading, Please wait for the downloading to finish." -#~ msgstr "" -#~ "Принтер зайнятий завантаженням. Дочекайтеся завершення завантаження." - -#~ msgid "Initialize failed (Not accessible in LAN-only mode)!" -#~ msgstr "Ініціалізація не вдалася (недоступна лише в режимі LAN)!" - -#~ msgid "Initialize failed (Missing LAN ip of printer)!" -#~ msgstr "" -#~ "Помилка ініціалізації (відсутня IP-адреса принтера в локальній мережі)!" - -#, c-format, boost-format -#~ msgid "Stopped [%d]!" -#~ msgstr "Зупинено [%d]!" - -#, c-format, boost-format -#~ msgid "Load failed [%d]!" -#~ msgstr "Завантаження не вдалося [%d]!" - -#, 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?" -#~ msgstr "" -#~ "Ви змінили деякі налаштування попередньої установки \"%1%\". \n" -#~ "Зберегти ці змінені налаштування (нове значення) після перемикання Набір " -#~ "параметрів?" - -#~ msgid "" -#~ "You have changed some preset settings. \n" -#~ "Would you like to keep these changed settings (new value) after switching " -#~ "preset?" -#~ msgstr "" -#~ "Ви змінили деякі налаштування передустановки. \n" -#~ "Зберегти ці змінені налаштування (нове значення) після перемикання Набір " -#~ "параметрів?" - -#~ msgid "" -#~ "Add solid infill near sloping surfaces to guarantee the vertical shell " -#~ "thickness (top+bottom solid layers)" -#~ msgstr "" -#~ "Додавання заповнення твердого тіла поблизу похилих поверхонь для Гарантії " -#~ "товщини вертикальної оболонки (верхній + нижній шари твердого тіла)" - -#~ msgid "Configuration package updated to " -#~ msgstr "Пакет конфігурації оновлено до " - -#~ msgid "The Config can not be loaded." -#~ msgstr "Конфіг не завантажується." - -#~ msgid "The 3mf is generated by old Orca Slicer, load geometry data only." -#~ msgstr "" -#~ "3mf генерується старим слайсером Orca, завантажувати лише дані геометрії." - -#~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" option." -#~ "Some extruders work better with this option unchecked (absolute extrusion " -#~ "mode). Wipe tower is only compatible with relative mode. It is always " -#~ "enabled on BambuLab printers. Default is checked" -#~ msgstr "" -#~ "При використанні опції «label_objects» рекомендується відносне " -#~ "Видавлювання. Деякі екструдери працюють краще з цією опцією без " -#~ "перевірки(абсолютний режим екструзії). Обтиральна вежа сумісна лише з " -#~ "відносним режимом. Вона завжди включена на принтерах BambuLab. за " -#~ "замовчуванням встановлено прапорець" - -#~ msgid "Movement:" -#~ msgstr "Рух:" - -#~ msgid "Movement" -#~ msgstr "Рух" - -#~ msgid "Auto Segment" -#~ msgstr "Автосегмент" - -#~ msgid "Depth ratio" -#~ msgstr "Коефіцієнт глибини" - -#~ msgid "Prizm" -#~ msgstr "Призма" - -#~ msgid "connector is out of cut contour" -#~ msgstr "роз'єм виходить за контур вирізу" - -#~ msgid "connectors are out of cut contour" -#~ msgstr "роз'єми виходять за контур вирізу" - -#~ msgid "connector is out of object" -#~ msgstr "роз'єм поза об'єктом" - -#~ msgid "connectors is out of object" -#~ msgstr "з’єднання відсутні в об'єкті" - -#~ msgid "" -#~ "Invalid state. \n" -#~ "No one part is selected for keep after cut" -#~ msgstr "" -#~ "Неприпустимий стан. Жодна деталь не вибрана для збереження після вирізання" - -#~ msgid "Edit Text" -#~ msgstr "Редагувати текст" - -#~ msgid "Error! Unable to create thread!" -#~ msgstr "Помилка! Неможливо створити тему!" - -#~ msgid "Exception" -#~ msgstr "Виняток" - -#~ msgid "Choose SLA archive:" -#~ msgstr "Виберіть архів SLA:" - -#~ msgid "Import file" -#~ msgstr "Імпортувати файл" - -#~ msgid "Import model and profile" -#~ msgstr "Імпорт моделі та профілю" - -#~ msgid "Import profile only" -#~ msgstr "Імпортувати лише профіль" - -#~ msgid "Import model only" -#~ msgstr "Тільки модель імпорту" - -#~ msgid "Accurate" -#~ msgstr "Точний" - -#~ msgid "Balanced" -#~ msgstr "Збалансований" - -#~ msgid "Quick" -#~ msgstr "Швидкий" - -#~ msgid "" -#~ "Discribe how long the nozzle will move along the last path when retracting" -#~ msgstr "" -#~ "Визначте як далеко сопло рухатиметься вздовж останнього шляху при відкаті" - -#~ 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." -#~ msgstr "" -#~ "Спрощення моделі\n" -#~ "Чи знаєте ви, що можна зменшити кількість трикутників у мережі за " -#~ "допомогою Елемент Спростити мережу (Simplify mesh)? Клацніть модель " -#~ "правою кнопкою миші і виберіть «Спростити модель». Додаткову інформацію " -#~ "наведено в документації." - -#~ 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." -#~ msgstr "" -#~ "Відняти деталь\n" -#~ "Чи знаєте ви, що можна віднімати одну мережу з іншої за допомогою " -#~ "модифікаторанегативної деталі? Таким чином можна, наприклад, створити " -#~ "легкоотвори, що змінюються безпосередньо в Orca Slicer. Додаткова " -#~ "інформацію наведено в документації." - -#, 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 "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" - -#~ msgid "Tool-Lay on Face" -#~ msgstr "Інструмент-укладання на обличчя" - -#~ msgid "Export as STL" -#~ msgstr "Експортувати як STL" - -#~ 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 "Export all objects as STL" -#~ msgstr "Експортувати всі об'єкти у форматі STL" - -#~ msgid "The 3mf is not compatible, load geometry data only!" -#~ msgstr "3mf не сумісний, завантажуйте лише дані геометрії!" - -#~ msgid "Incompatible 3mf" -#~ msgstr "Несумісний 3mf" - -#~ msgid "Add/Remove printers" -#~ msgstr "Додати/видалити принтери" - -#, c-format, boost-format -#~ msgid "%s is not supported by AMS." -#~ msgstr "%s не підтримується AMS." - -#~ msgid "Don't remind me of this version again" -#~ msgstr "Не нагадуйте мені більше про цю версію" - -#~ msgid "Error: IP or Access Code are not correct" -#~ msgstr "Помилка: IP або код доступу не вірні" - -#~ 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 "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 "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 "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-disable, 1-enable, інші-auto" - -#~ msgid "Convert Unit" -#~ msgstr "Перетворити одиницю виміру" - -#~ msgid "Convert the units of 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 "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 "" -#~ "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" -#~ "Чи знаєте ви, що ви можете виправити пошкоджену 3D-модель, щоб " -#~ "уникнутивеликої кількості проблем із нарізкою?" - -#~ msgid "Embedded" -#~ msgstr "Вбудовано" - -#~ msgid "" -#~ "OrcaSlicer configuration file may be corrupted and is not abled to be " -#~ "parsed.Please delete the file and try again." -#~ msgstr "" -#~ "Файл конфігурації OrcaSlicer може бути пошкоджений і не підлягає розбору. " -#~ "Видаліть файл і спробуйте ще раз." - -#~ msgid "The minimum printing speed when slow down for cooling" -#~ msgstr "Мінімальна швидкість друку при уповільненні для охолодження" - -#~ msgid "" -#~ "The bed temperature exceeds filament's vitrification temperature. Please " -#~ "open the front door of printer before printing to avoid nozzle clog." -#~ msgstr "" -#~ "Температура шару перевищує температуру скловання нитки. Будь ласка\n" -#~ "відчиняйте передні дверцята принтера перед печаткою, щоб уникнути " -#~ "засмічення сопла." - -#~ msgid "Temperature of vitrificaiton" -#~ msgstr "Температура склування" - -#~ msgid "" -#~ "Material becomes soft at this temperature. Thus the heatbed cannot be " -#~ "hotter than this tempature" -#~ msgstr "" -#~ "При цій температурі матеріал стає м'яким. Таким чином, нагрівається шар " -#~ "не може бути гарячішим, ніж ця температура" - -#~ msgid "Enable this option if machine has auxiliary 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 "Empty layers around bottom are replaced by nearest normal layers." -#~ msgstr "" -#~ "Порожні шари навколо дна замінюються найближчими нормальними шарами." - -#~ msgid "The model has too many empty layers." -#~ msgstr "У моделі занадто багато порожніх шарів." - -#~ msgid "Cali" -#~ msgstr "Калі" - -#~ msgid "Calibration of extrusion" -#~ msgstr "АМС не підключено" - -#, 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" -#~ " Будь ласка , тримайте принтер відкритим під час друку , щоб забезпечити " -#~ "доступ повітря циркуляція або знизити температуру столу" - -#~ msgid "Total Time Estimation" -#~ msgstr "Оцінка загального часу" - -#~ msgid "Resonance frequency identification" -#~ msgstr "Ідентифікація резонансної частоти" - -#~ msgid "Bambu High Temperature Plate" -#~ msgstr "Високотемпературна пластина" - -#~ 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 "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 означає вимкнути цю функцію" - -#, c-format, boost-format -#~ msgid "" -#~ "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" -#~ msgstr "" -#~ "Max \"прискорення до уповільнення\" для Klipper буде скориговано на % o " -#~ "автоматично" - -#~ 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" -#~ "Для підтримки дерева тонкий стиль об'єднуватиме гілки більш агресивно і " -#~ "заощаджувати багато матеріалу (за замовчуванням), в той час як гібридний " -#~ "стильСтворить структуру, аналогічну звичайній підтримці при великих " -#~ "плоских звисах." - -#~ 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 "" -#~ "Не рекомендується, щоб температура шару іншого шару була нижчою, ніж " -#~ "температура вихідного шару, при перевищенні цього порога. Надто " -#~ "низькатемпература шару іншого шару може призвести до того, що модель " -#~ "будерозірвана без конструкційної пластини" - -#~ msgid "Orient the model" -#~ msgstr "Орієнтувати модель" - -#~ msgid "" -#~ "Please input valid values:\n" -#~ "start > 0 step >= 0\n" -#~ "end > start + step)" -#~ msgstr "" -#~ "Введіть допустимі значення:\n" -#~ "початок > 0 крок >= 0\n" -#~ "кінець > початок + крок)" - -#~ msgid "" -#~ "Please input valid values:\n" -#~ "start > 10 step >= 0\n" -#~ "end > start + step)" -#~ msgstr "" -#~ "Введіть допустимі значення:\n" -#~ "старт > 10 кроків >= 0\n" -#~ "кінець > початок + крок)" From 26368f5d6ce955cb5a7a39d460d470d0282a402e Mon Sep 17 00:00:00 2001 From: krmz-krmz <71175240+krmz-krmz@users.noreply.github.com> Date: Wed, 26 Feb 2025 21:08:02 +0900 Subject: [PATCH 124/129] apply adaptive pa in object mode (#8546) --- src/libslic3r/GCode.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 50c11640cb..2811dad1bb 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2898,6 +2898,12 @@ void GCode::process_layers( return in.gcode; return cooling_buffer.process_layer(std::move(in.gcode), in.layer_id, in.cooling_buffer_flush); }); + const auto pa_processor_filter = tbb::make_filter(slic3r_tbb_filtermode::serial_in_order, + [&pa_processor = *this->m_pa_processor](std::string in) -> std::string { + return pa_processor.process_layer(std::move(in)); + } + ); + const auto output = tbb::make_filter(slic3r_tbb_filtermode::serial_in_order, [&output_stream](std::string s) { output_stream.write(s); } ); @@ -2926,9 +2932,9 @@ void GCode::process_layers( else if (m_spiral_vase) tbb::parallel_pipeline(12, generator & spiral_mode & cooling & fan_mover & output); else if (m_pressure_equalizer) - tbb::parallel_pipeline(12, generator & pressure_equalizer & cooling & fan_mover & output); + tbb::parallel_pipeline(12, generator & pressure_equalizer & cooling & fan_mover & pa_processor_filter & output); else - tbb::parallel_pipeline(12, generator & cooling & fan_mover & output); + tbb::parallel_pipeline(12, generator & cooling & fan_mover & pa_processor_filter & output); } std::string GCode::placeholder_parser_process(const std::string &name, const std::string &templ, unsigned int current_extruder_id, const DynamicConfig *config_override) From c275e8474358ea93e63f0725fde7c116771597ec Mon Sep 17 00:00:00 2001 From: Alexandre Folle de Menezes Date: Wed, 26 Feb 2025 09:08:37 -0300 Subject: [PATCH 125/129] Fixing conflicts in the pt-BR translation (#8553) * Fix the pt-BR translation of "extruder" e "multi-material", * Fix pt-BR translation of "prime tower" * Fix translation of "wall", "perimeter" and "shell" --- localization/i18n/pt_BR/OrcaSlicer_pt_BR.po | 728 ++++++++++++-------- 1 file changed, 439 insertions(+), 289 deletions(-) diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index db43d910cc..d1580fd19c 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -1675,7 +1675,7 @@ msgid "Quality" msgstr "Qualidade" msgid "Shell" -msgstr "Parede" +msgstr "Casca" msgid "Infill" msgstr "Preenchimento" @@ -1696,13 +1696,13 @@ msgid "Top Solid Layers" msgstr "Camadas Sólidas Superiores" msgid "Top Minimum Shell Thickness" -msgstr "Espessura Mínima da Parede Superior" +msgstr "Espessura Mínima da Casca de Topo" msgid "Bottom Solid Layers" msgstr "Camadas Sólidas Inferiores" msgid "Bottom Minimum Shell Thickness" -msgstr "Espessura Mínima da Parede Inferior" +msgstr "Espessura Mínima da Casca de Base" msgid "Ironing" msgstr "Passar ferro" @@ -1813,9 +1813,8 @@ msgid "" "Yes - Change these settings automatically\n" "No - Do not change these settings for me" msgstr "" -"Este modelo possui texto em alto relevo na superfície superior. Para obter " -"os melhores resultados, é aconselhável definir o 'Limiar de perímetro " -"único'\n" +"Este modelo possui texto em alto relevo na superfície superior. Para melhores " +"resultados, é aconselhável definir o 'Limiar de parede única" " (min_width_top_surface)' como 0 para que 'Apenas uma Parede nas Superfícies " "Superiores' funcione melhor.\n" "Sim - Alterar essas configurações automaticamente\n" @@ -2313,7 +2312,7 @@ msgid "Layer height" msgstr "Altura da camada" msgid "Wall loops" -msgstr "Perímetros" +msgstr "Voltas da parede" msgid "Infill density(%)" msgstr "Densidade do preenchimento(%)" @@ -2337,7 +2336,7 @@ msgid "No-brim" msgstr "Sem borda" msgid "Outer wall speed" -msgstr "Velocidade do perímetro externo" +msgstr "Velocidade da parede externa" msgid "Plate" msgstr "Mesa" @@ -3750,7 +3749,7 @@ msgid "" "Alternate extra wall does't work well when ensure vertical shell thickness " "is set to All. " msgstr "" -"O perímetro extra alternado não funciona bem quando a espessura vertical da " +"A parede extra alternada não funciona bem quando a espessura vertical da casca " "está definida para Todos. " msgid "" @@ -3760,9 +3759,9 @@ msgid "" "No - Don't use alternate extra wall" msgstr "" "Alterar essas configurações automaticamente?\n" -"Sim - Alterar a espessura vertical do perímetro para Moderado e ativar o " -"perímetro extra alternado\n" -"Não - Não usar o perímetro extra alternado" +"Sim - Alterar a espessura vertical da casca garantida para Moderado e ativar a " +"parede extra alternada\n" +"Não - Não usar a parede extra alternada" msgid "" "Prime tower does not work when Adaptive Layer Height or Independent Support " @@ -3771,10 +3770,10 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height and Independent Support Layer Height" msgstr "" -"A Torre Prime não funciona quando a Altura de Camada Adaptativa ou a Altura " +"A torre de preparação não funciona quando a Altura de Camada Adaptativa ou a Altura " "de Camada de Suporte Independente está ativada.\n" "Qual você deseja manter?\n" -"SIM — Manter a Torre Prime\n" +"SIM — Manter a Torre de Preparação\n" "NÃO — Manter a Altura de Camada Adaptativa e a Altura de Camada de Suporte " "Independente" @@ -3784,9 +3783,9 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height" msgstr "" -"A Torre Prime não funciona quando a Altura de Camada Adaptativa está ativa.\n" +"A torre de preparação não funciona quando a Altura de Camada Adaptativa está ativa.\n" "Qual você deseja manter?\n" -"SIM — Manter a Torre Prime\n" +"SIM — Manter a Torre de Preparação\n" "NÃO — Manter a Altura de Camada Adaptativa" msgid "" @@ -3795,10 +3794,10 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Independent Support Layer Height" msgstr "" -"A Torre Prime não funciona quando a Altura da Camada de Suporte Independente " +"A torre de preparação não funciona quando a Altura da Camada de Suporte Independente " "está ativa.\n" "Qual você deseja manter?\n" -"SIM — Manter a Torre Prime\n" +"SIM — Manter a Torre de Preparação\n" "NÃO — Manter a Altura da Camada de Suporte Independente" msgid "" @@ -3812,9 +3811,9 @@ 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 "" -"O modo espiral só funciona quando o perímetro é igual a 1, o suporte está " -"desativado, as camadas de topo são 0, a densidade de preenchimento esparso é " -"0 e o tipo de timelapse é tradicional." +"O modo espiral só funciona quando as voltas da parede são 1, o suporte está " +"desativado, as camadas da casca de topo são 0, a densidade de preenchimento " +"esparso é 0 e o tipo de timelapse é tradicional." msgid " But machines with I3 structure will not generate timelapse videos." msgstr " Mas máquinas com estrutura I3 não gerarão vídeos de timelapse." @@ -3871,7 +3870,7 @@ msgid "Cleaning nozzle tip" msgstr "Limpando a ponta do bico" msgid "Checking extruder temperature" -msgstr "Verificando temperatura do extrusor" +msgstr "Verificando temperatura da extrusora" msgid "Printing was paused by the user" msgstr "A impressão foi pausada pelo usuário" @@ -3964,7 +3963,7 @@ msgid "" "TPU) is not allowed to be loaded." msgstr "" "A temperatura atual da câmara ou a temperatura da câmara alvo excede 45℃. " -"Para evitar obstrução do extrusor, não é permitido carregar filamento de " +"Para evitar obstrução da extrusora, não é permitido carregar filamento de " "baixa temperatura (PLA/PETG/TPU)." msgid "" @@ -3973,7 +3972,7 @@ msgid "" "above 45℃." msgstr "" "Filamento de baixa temperatura (PLA/PETG/TPU) está carregado na extrusora. " -"Para evitar obstrução do extrusor, não é permitido ajustar a temperatura da " +"Para evitar obstrução da extrusora, não é permitido ajustar a temperatura da " "câmara acima de 45℃." msgid "" @@ -7704,15 +7703,16 @@ msgid "" "Prime tower is required for smooth timelapse. There may be flaws on the " "model without prime tower. Are you sure you want to disable prime tower?" msgstr "" -"A Torre Prime é necessária para um timelapse suave. Pode haver falhas no " -"modelo sem a torre prime. Tem certeza de que deseja desativar a torre prime?" +"A torre de preparação é necessária para um timelapse suave. Pode haver falhas " +"no modelo sem a torre de preparação. Tem certeza de que deseja desativar " +"a torre de preparação?" 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 "" -"A Torre Prime é necessária para um timelapse suave. Pode haver falhas no " -"modelo sem a torre prime. Deseja ativar a torre prime?" +"A torre de preparação é necessária para um timelapse suave. Pode haver falhas " +"no modelo sem a torre de preparação. Deseja ativar a torre de preparação?" msgid "Still print by object?" msgstr "Ainda imprimir por objeto?" @@ -7916,10 +7916,10 @@ msgid "Precision" msgstr "Precisão" msgid "Wall generator" -msgstr "Gerador de perímetros" +msgstr "Gerador de paredes" msgid "Walls and surfaces" -msgstr "Perímetros e superfícies" +msgstr "Paredes e superfícies" msgid "Bridging" msgstr "Ponte" @@ -7928,10 +7928,10 @@ msgid "Overhangs" msgstr "Saliências" msgid "Walls" -msgstr "Perímetros" +msgstr "Paredes" msgid "Top/bottom shells" -msgstr "Camadas de topo/base" +msgstr "Cascas de topo/base" msgid "Initial layer speed" msgstr "Velocidade da primeira camada" @@ -7950,7 +7950,7 @@ msgstr "" "Esta é a velocidade para vários degraus de saliência. Os degraus de " "saliência são expressos como uma porcentagem da largura da linha. A " "velocidade 0 significa que não há desaceleração para o intervalo de degraus " -"de saliência e a velocidade do perímetro é usada" +"de saliência e a velocidade de parede é usada" msgid "Bridge" msgstr "Ponte" @@ -7980,7 +7980,7 @@ msgid "Multimaterial" msgstr "Multimaterial" msgid "Prime tower" -msgstr "Torre Prime" +msgstr "Torre de preparação" msgid "Filament for Features" msgstr "" @@ -8184,7 +8184,7 @@ msgstr "Configurações de moldeamento" msgid "Toolchange parameters with multi extruder MM printers" msgstr "" -"Parâmetros de troca de ferramentas com impressoras MM de múltiplas extrusoras" +"Parâmetros de troca de ferramentas com impressoras MM de extrusoras múltiplas" msgid "Dependencies" msgstr "Dependências" @@ -8210,7 +8210,7 @@ msgid "Fan speed-up time" msgstr "Tempo de aceleração do ventilador" msgid "Extruder Clearance" -msgstr "Margem da extrusora" +msgstr "Folga da extrusora" msgid "Adaptive bed mesh" msgstr "Bed Mesh adaptativo" @@ -8267,7 +8267,7 @@ msgid "Jerk limitation" msgstr "Limitação de Jerk" msgid "Single extruder multi-material setup" -msgstr "Configuração de múltiplos materiais com um único extrusor" +msgstr "Configuração multimaterial de extrusora única" msgid "Number of extruders of the printer." msgstr "Número de extrusoras da impressora." @@ -8278,7 +8278,7 @@ msgid "" "Do you want to change the diameter for all extruders to first extruder " "nozzle diameter value?" msgstr "" -"A extrusora multi material é selecionada, \n" +"A extrusora única multimaterial está selecionada, \n" "e todas as extrusoras devem ter o mesmo diâmetro.\n" "Você quer mudar o diâmetro para todas as extrusoras ao primeiro valor do " "diâmetro da ponteira da extrusora?" @@ -8290,12 +8290,14 @@ msgid "Wipe tower" msgstr "Torre de limpeza" msgid "Single extruder multi-material parameters" -msgstr "Parâmetros de múltiplos materiais com um único extrusor" +msgstr "Parâmetros multimateriais de extrusora única" msgid "" "This is a single extruder multi-material printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" msgstr "" +"Esta é uma impressora multimaterial de extrusora única, os diâmetros de todas " +"as extrusoras serão definidos para o novo valor. Você deseja prosseguir?" msgid "Layer height limits" msgstr "Limites de altura da camada" @@ -8637,10 +8639,10 @@ msgid "Append" msgstr "Adicionar" msgid "Add consumable extruder after existing extruders." -msgstr "" +msgstr "Adicione a extrusora consumível após extrusoras existentes." msgid "Reset mapped extruders." -msgstr "" +msgstr "Redefinir extrusoras mapeadas." msgid "Cluster colors" msgstr "Agrupar cores" @@ -8657,6 +8659,8 @@ msgid "" "Waring:The count of newly added and \n" " current extruders exceeds 16." msgstr "" +"Aviso: A contagem de extrusoras \n" +"novas e atuais excede 16." msgid "Ramming customization" msgstr "Customização de moldeamento" @@ -8673,16 +8677,15 @@ msgid "" "jams, extruder wheel grinding into filament etc." msgstr "" "O moldeamento denota a extrusão rápida logo antes de uma troca de " -"ferramentas em uma impressora MM de extrusão única. Seu propósito é dar " +"ferramentas em uma impressora MM de extrusora única. Seu propósito é dar " "forma adequadamente à ponta do filamento descarregado para que não impeça a " "inserção do novo filamento e possa ser reinserido posteriormente. Essa fase " "é importante e diferentes materiais podem exigir velocidades de extrusão " "diferentes para obter uma boa forma. Por esse motivo, as taxas de extrusão " "durante o moldeamento são ajustáveis.\n" "\n" -"Esta é uma configuração de nível especialista, ajustes incorretos " -"provavelmente resultarão em travamentos, moagem da roda de extrusão no " -"filamento, etc." +"Esta é uma configuração de nível especialista, ajustes incorretos provavelmente " +"resultarão em travamentos, moagem de filamento na roda da extrusora, etc." msgid "Total ramming time" msgstr "Tempo total de moldeamento" @@ -9350,13 +9353,13 @@ msgid "Generating G-code: layer %1%" msgstr "Gerando código G: camada %1%" msgid "Inner wall" -msgstr "Perímetro interno" +msgstr "Parede interna" msgid "Outer wall" -msgstr "Perímetro externo" +msgstr "Parede externa" msgid "Overhang wall" -msgstr "Perímetro saliente" +msgstr "Parede saliente" msgid "Sparse infill" msgstr "Preenchimento esparso" @@ -9515,7 +9518,7 @@ msgstr "" "impressão." msgid "Prime Tower" -msgstr "Torre Prime" +msgstr "Torre de Preparação" msgid " is too close to others, and collisions may be caused.\n" msgstr " está muito perto de outros, e colisões podem ocorrer.\n" @@ -9529,7 +9532,7 @@ msgid "" "during printing" msgstr "" "Não é possível imprimir juntos vários filamentos que têm grande diferença de " -"temperatura. Caso contrário, o extrusor e bico podem ficar bloqueados ou " +"temperatura. Caso contrário, a extrusora e bico podem ficar bloqueados ou " "danificados durante a impressão" msgid "No extrusions under current settings." @@ -9590,7 +9593,7 @@ msgid "" "proceed with caution." msgstr "" "Diferentes diâmetros de bico e diferentes diâmetros de filamento podem não " -"funcionar bem quando a torre principal estiver habilitada. É muito " +"funcionar bem quando a torre de preparação estiver habilitada. É muito " "experimental, então prossiga com cautela." msgid "" @@ -9611,47 +9614,47 @@ msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " "RepRapFirmware and Repetier G-code flavors." msgstr "" -"A Torre Prime atualmente só é suportada para os G-code do tipo Marlin, " +"A torre de preparação atualmente só é suportada para os G-code do tipo Marlin, " "RepRap/Sprinter, RepRapFirmware e Repetier." msgid "The prime tower is not supported in \"By object\" print." -msgstr "A Torre Prime não é suportada na impressão \"Por objeto\"." +msgstr "A torre de preparação não é suportada na impressão \"Por objeto\"." msgid "" "The prime tower is not supported when adaptive layer height is on. It " "requires that all objects have the same layer height." msgstr "" -"A Torre Prime não é suportada quando a altura de camada adaptativa está " +"A torre de preparação não é suportada quando a altura de camada adaptativa está " "ativa. Isso requer que todos os objetos tenham a mesma altura de camada." msgid "The prime tower requires \"support gap\" to be multiple of layer height" msgstr "" -"A Torre Prime requer que o \"lacuna de suporte\" seja múltiplo da altura da " +"A torre de preparação requer que o \"lacuna de suporte\" seja múltiplo da altura da " "camada" msgid "The prime tower requires that all objects have the same layer heights" msgstr "" -"A Torre Prime requer que todos os objetos tenham as mesmas alturas de camada" +"A torre de preparação requer que todos os objetos tenham as mesmas alturas de camada" msgid "" "The prime tower requires that all objects are printed over the same number " "of raft layers" msgstr "" -"A Torre Prime requer que todos os objetos sejam impressos sobre o mesmo " +"A torre de preparação requer que todos os objetos sejam impressos sobre o mesmo " "número de camadas da Jangada" msgid "" "The prime tower requires that all objects are sliced with the same layer " "heights." msgstr "" -"A Torre Prime requer que todos os objetos sejam fatiados com as mesmas " +"A torre de preparação requer que todos os objetos sejam fatiados com as mesmas " "alturas de camada." msgid "" "The prime tower is only supported if all objects have the same variable " "layer height" msgstr "" -"A Torre Prime só é suportada se todos os objetos tiverem a mesma altura de " +"A torre de preparação só é suportada se todos os objetos tiverem a mesma altura de " "camada variável" msgid "Too small line width" @@ -9663,7 +9666,7 @@ msgstr "Largura de linha muito grande" msgid "" "The prime tower requires that support has the same layer height with object." msgstr "" -"A Torre Prime requer que o suporte tenha a mesma altura de camada do objeto." +"A torre de preparação requer que o suporte tenha a mesma altura de camada do objeto." msgid "" "Organic support tree tip diameter must not be smaller than support material " @@ -9700,8 +9703,8 @@ msgid "" "each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " "layer_gcode." msgstr "" -"O endereçamento relativo do extrusor requer a reinicialização da posição do " -"extrusor em cada camada para evitar perda de precisão de ponto flutuante. " +"O endereçamento relativo da extrusora requer a reinicialização da posição da " +"extrusora em cada camada para evitar perda de precisão de ponto flutuante. " "Adicione \"G92 E0\" ao código de camada." msgid "" @@ -9709,14 +9712,14 @@ msgid "" "absolute extruder addressing." msgstr "" "\"G92 E0\" foi encontrado em before_layer_gcode, o que é incompatível com o " -"endereçamento absoluto do extrusor." +"endereçamento absoluto da extrusora." msgid "" "\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " "extruder addressing." msgstr "" "\"G92 E0\" foi encontrado em layer_gcode, o que é incompatível com o " -"endereçamento absoluto do extrusor." +"endereçamento absoluto da extrusora." #, c-format, boost-format msgid "Plate %d: %s does not support filament %s" @@ -9951,15 +9954,15 @@ msgid "HTTP digest" msgstr "Digest HTTP" msgid "Avoid crossing wall" -msgstr "Evitar perímetros" +msgstr "Evitar atravessar parede" msgid "Detour and avoid to travel across wall which may cause blob on surface" msgstr "" -"Desvio e evite viajar através do perímetro que pode causar irregularidade na " +"Desviar e evitar atravessar parede, que pode causar irregularidade na " "superfície" msgid "Avoid crossing wall - Max detour length" -msgstr "Evitar perímetros - Distância máximo do desvio" +msgstr "Evitar atravessar parede - Distância máximo do desvio" msgid "" "Maximum detour distance for avoiding crossing wall. Don't detour if the " @@ -9967,7 +9970,7 @@ msgid "" "either as an absolute value or as percentage (for example 50%) of a direct " "travel path. Zero to disable" msgstr "" -"Distância máxima de desvio para evitar atravessar o perímetro. Não desviar " +"Distância máxima de desvio para evitar atravessar uma parede. Não desviar " "se a distância de desvio for maior que esse valor. A distancia do desvio " "pode ser especificada como um valor absoluto ou como porcentagem (por " "exemplo, 50%) de um caminho de deslocamento direto. Zero para desativar" @@ -10089,19 +10092,19 @@ msgid "This G-code is inserted at every layer change before lifting z" msgstr "Este código G é inserido em cada mudança de camada antes de levantar z" msgid "Bottom shell layers" -msgstr "Camadas de base" +msgstr "Camadas da casca de base" 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 "" -"Este é o número de camadas sólidas da base, incluindo a primeira camada. " +"Este é o número de camadas sólidas da casca de base, incluindo a primeira camada. " "Quando a espessura calculada por este valor for mais fina do que a espessura " -"da base, o número das camadas da base serão aumentadas" +"da base, o número de camadas da casca de base será aumentado" msgid "Bottom shell thickness" -msgstr "Espessura da base" +msgstr "Espessura da casca de base" msgid "" "The number of bottom solid layers is increased when slicing if the thickness " @@ -10111,13 +10114,13 @@ msgid "" "shell layers" msgstr "" "O número de camadas sólidas da base é aumentado ao fatiar se a espessura " -"calculada pelas camadas da base for mais fina do que este valor. Isso pode " -"evitar que a base seja muito fina quando a altura da camada é pequena. 0 " -"significa que esta configuração está desativada e a espessura da base é " -"absolutamente determinada pelas camadas da base" +"calculada pelas camadas de casca de base for mais fina do que este valor. Isso " +"pode evitar que a casca de base seja muito fina quando a altura da camada é " +"pequena. 0 significa que esta configuração está desativada e a espessura da " +"casca de base é absolutamente determinada pelas camadas de casca de base" msgid "Apply gap fill" -msgstr "Preenchimento de vão" +msgstr "Aplicar preenchimento de vão" msgid "" "Enables gap fill for the selected solid surfaces. The minimum gap length " @@ -10146,6 +10149,34 @@ msgid "" "generator and use this option to control whether the cosmetic top and bottom " "surface gap fill is generated" msgstr "" +"Ativa o preenchimento de vãos para as superfícies sólidas selecionadas. O " +"comprimento mínimo do vão que será preenchido pode ser controlado na opção " +"filtrar vãos pequenos abaixo.\n" +"\n" +"Opções:\n" +"1. Sempre: aplica o preenchimento de vãos às superfícies sólidas superior, " +"inferior e interna para máxima resistência\n" +"2. Superfícies superior e inferior: aplica o preenchimento de vãos somente às " +"superfícies superior e inferior, equilibrando a velocidade de impressão, reduzindo " +"o potencial de sobreextrusão no preenchimento sólido e garantindo que as " +"superfícies superior e inferior não tenham vãos de furo de alfinete\n" +"3. Nunca: desabilita o preenchimento de vãos para todas as áreas de preenchimento " +"sólido.\n" +"\n" +"Observe que se estiver usando o gerador de perímetro clássico, o preenchimento de " +"vãos também pode ser gerado entre perímetros, se uma linha de largura total não " +"couber entre eles. Esse preenchimento de vãos de perímetro não é controlado por " +"esta configuração.\n" +"\n" +"Se você quiser que todo o preenchimento de vãos, incluindo o perímetro clássico " +"gerado, seja removido, defina o valor do filtro de pequenas lacunas para um número " +"grande, como 999999.\n" +"\n" +"No entanto, isso não é aconselhável, pois o preenchimento de vãos entre perímetros " +"está contribuindo para a resistência do modelo. Para modelos em que o preenchimento " +"de vãos excessivo é gerado entre perímetros, uma opção melhor seria alternar para " +"o gerador de parede arachne e usar esta opção para controlar se o preenchimento " +"de vãos de superfície superior e inferior cosmética é gerado" msgid "Everywhere" msgstr "Sempre" @@ -10331,17 +10362,17 @@ msgstr "" "também melhora a consistência da camada." msgid "Only one wall on top surfaces" -msgstr "Perímetro único em superfícies superiores" +msgstr "Parede única em superfícies superiores" msgid "" "Use only one wall on flat top surface, to give more space to the top infill " "pattern" msgstr "" -"Use apenas um perímetro em superfície superior, para dar mais espaço ao " +"Use apenas uma parede em superfície superior, para dar mais espaço ao " "padrão de preenchimento superior" msgid "One wall threshold" -msgstr "Limiar de perímetro único" +msgstr "Limiar de parede única" #, no-c-format, no-boost-format msgid "" @@ -10365,17 +10396,17 @@ msgstr "" "configuração para 0 para remover esses artefatos." msgid "Only one wall on first layer" -msgstr "Perímetro único na primeira camada" +msgstr "Parede única na primeira camada" msgid "" "Use only one wall on first layer, to give more space to the bottom infill " "pattern" msgstr "" -"Use apenas um perímetro na primeira camada, para dar mais espaço ao padrão " +"Use apenas uma parede na primeira camada, para dar mais espaço ao padrão " "de preenchimento inferior" msgid "Extra perimeters on overhangs" -msgstr "Perímetros extras em saliências" +msgstr "Paredes extras em saliências" msgid "" "Create additional perimeter paths over steep overhangs and areas where " @@ -10516,6 +10547,24 @@ msgid "" "overhanging, with no wall supporting them from underneath, the 100% overhang " "speed will be applied." msgstr "" +"Habilite esta opção para desacelerar a impressão em áreas onde os perímetros podem " +"ter se curvado para cima. Por exemplo, uma desaceleração adicional será aplicada " +"ao imprimir saliências em cantos afiados, como a parte frontal do casco Benchy, " +"reduzindo a curvatura que se acumula por várias camadas.\n" +"\n" +" Geralmente, é recomendável ter esta opção ativada, a menos que o resfriamento da " +"impressora seja potente o suficiente ou a velocidade de impressão lenta o " +"suficiente para que a curvatura do perímetro não aconteça. Se estiver imprimindo " +"com uma alta velocidade de perímetro externo, este parâmetro pode introduzir " +"pequenos artefatos ao desacelerar devido à grande variação nas velocidades de " +"impressão. Se você notar artefatos, certifique-se de que seu avanço de pressão " +"esteja ajustado corretamente.\n" +"\n" +"Observação: quando esta opção estiver habilitada, os perímetros de saliência são " +"tratados como saliências, o que significa que a velocidade de saliência é aplicada " +"mesmo se o perímetro de saliência for parte de uma ponte. Por exemplo, quando os " +"perímetros estiverem 100% salientes, sem nenhuma parede apoiando-os por baixo, a " +"velocidade de saliência de 100% será aplicada." msgid "mm/s or %" msgstr "mm/s ou %" @@ -10531,6 +10580,12 @@ msgid "" "are supported by less than 13%, whether they are part of a bridge or an " "overhang." msgstr "" +"Velocidade das extrusões de ponte visíveis externamente. \n" +"\n" +"Além disso, se Desacelerar para perímetros curvos estiver desabilitado ou o " +"Modo de saliência clássico estiver habilitado, será a velocidade de impressão " +"de paredes de saliência que são suportadas por menos de 13%, sejam elas parte " +"de uma ponte ou de uma saliência." msgid "mm/s" msgstr "mm/s" @@ -10796,6 +10851,36 @@ msgid "" "4. Apply to all - generates second bridge layers for both internal and " "external-facing bridges\n" msgstr "" +"Esta opção permite a geração de uma camada de ponte extra sobre pontes internas " +"e/ou externas.\n" +"\n" +"Camadas de ponte extras ajudam a melhorar a aparência e a confiabilidade da ponte, " +"pois o preenchimento sólido é melhor suportado. Isso é especialmente útil em " +"impressoras rápidas, onde as velocidades de preenchimento sólido e de ponte variam " +"muito. A camada de ponte extra resulta em redução de almofadas nas superfícies " +"superiores, bem como redução da separação da camada de ponte externa de seus " +"perímetros circundantes.\n" +"\n" +"É geralmente recomendado definir isso para pelo menos 'Somente ponte externa', a " +"menos que problemas específicos com o modelo fatiado sejam encontrados.\n" +"\n" +"Opções:\n" +"1. Desativado - não gera segundas camadas de ponte. Este é o padrão e é definido " +"para fins de compatibilidade.\n" +"2. Somente ponte externa - gera segundas camadas de ponte somente para pontes " +"voltadas para o exterior. Observe que pontes pequenas que sejam mais curtas ou " +"estreitas do que o número definido de perímetros serão ignoradas, pois não se " +"beneficiariam de uma segunda camada de ponte. Se gerada, a segunda camada de " +"ponte será extrudada paralelamente à primeira camada de ponte para reforçar a " +"resistência da ponte.\n" +"3. Somente ponte interna - gera segundas camadas de ponte somente para pontes " +"internas sobre preenchimento esparso. Observe que as pontes internas contam para " +"a contagem da camada de casca superior do seu modelo. A segunda camada de ponte " +"interna será extrudada o mais perpendicular possível da à primeira. Se várias " +"regiões na mesma ilha, com ângulos de ponte variados, estiverem presentes, " +"a última região dessa ilha será selecionada como a referência de ângulo.\n" +"4. Aplicar a todos - gera segundas camadas de ponte para pontes internas e " +"externas\n" msgid "Disabled" msgstr "Desativado" @@ -10883,7 +10968,7 @@ msgid "End G-code when finish the printing of this filament" msgstr "G-code de finalização ao terminar a impressão deste filamento" msgid "Ensure vertical shell thickness" -msgstr "Garantir a espessura vertical do perímetro" +msgstr "Garantir a espessura vertical da casca" msgid "" "Add solid infill near sloping surfaces to guarantee the vertical shell " @@ -10896,11 +10981,11 @@ msgid "" "Default value is All." msgstr "" "Adicione preenchimento sólido próximo a superfícies inclinadas para garantir " -"a espessura vertical (camadas de topo+base)\n" +"a espessura vertical da casca (camadas sólidas de topo+base)\n" "Nenhum: Nenhum preenchimento sólido será adicionado em nenhum lugar. " "Cuidado: Use esta opção com cuidado se o seu modelo tiver superfícies " "inclinadas\n" -"Apenas crítico: Evite adicionar preenchimento sólido para paredes\n" +"Apenas Crítico: Evita adicionar preenchimento sólido para paredes\n" "Moderado: Adicione preenchimento sólido apenas para superfícies fortemente " "inclinadas\n" "Todos: Adicione preenchimento sólido para todas as superfícies inclinadas " @@ -10966,15 +11051,15 @@ msgid "" "Line width of outer wall. If expressed as a %, it will be computed over the " "nozzle diameter." msgstr "" -"Largura da linha do perímetro externo. Se expresso como porcentagem, será " +"Largura da linha da parede externa. Se expresso como porcentagem, será " "calculado sobre o diâmetro do bico." 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 "" -"Velocidade do perímetro externo que é o mais externo e visível. Geralmente é " -"mais lenta que a velocidade do perímetro interno para obter melhor qualidade." +"Velocidade da parede externa que é a mais externo e visível. Geralmente é " +"mais lenta que a velocidade da parede interna para obter melhor qualidade." msgid "Small perimeters" msgstr "Pequenos perímetros" @@ -10987,8 +11072,8 @@ msgid "" msgstr "" "Essa configuração separada afetará a velocidade dos perímetros com raio <= " "small_perimeter_threshold (geralmente buracos). Se expresso como porcentagem " -"(por exemplo: 80%), será calculado com base na configuração de velocidade do " -"perímetro externo acima. Defina como zero para automático." +"(por exemplo: 80%), será calculado com base na configuração de velocidade da " +"parede externa acima. Defina como zero para automático." msgid "Small perimeters threshold" msgstr "Limiar de pequenos perímetros" @@ -11000,7 +11085,7 @@ msgstr "" "padrão é 0mm" msgid "Walls printing order" -msgstr "Ordem de impressão dos perímetros" +msgstr "Ordem de impressão das paredes" msgid "" "Print sequence of the internal (inner) and external (outer) walls. \n" @@ -11026,23 +11111,21 @@ msgid "" "\n" " " msgstr "" -"Sequência de impressão dos perímetros internos e externos. \n" +"Sequência de impressão das paredes internas e externas. \n" "\n" -"Use Interior/Exterior para melhores overhangs. Isso ocorre porque os " -"perímetros salientes podem aderir a um perímetro vizinho durante a " -"impressão. No entanto, esta opção resulta em uma qualidade superficial " -"ligeiramente reduzida, pois o perímetro externo é deformado ao ser esmagado " -"pelo perímetro interno.\n" +"Use Interior/Exterior para melhores saliências. Isso ocorre porque as paredes " +"salientes podem aderir a um perímetro vizinho durante a impressão. No entanto, " +"esta opção resulta em uma qualidade superficial ligeiramente reduzida, pois o " +"perímetro externo é deformado ao ser esmagado pelo perímetro interno.\n" "\n" -"Use Interior/Exterior/Interior para o melhor acabamento superficial externo " -"e precisão dimensional, pois o perímetro externo é impresso sem interrupções " -"a partir de um perímetro interno. No entanto, o desempenho da saliência será " -"reduzido, pois não há perímetro interno para imprimir o perímetro externo. " -"Esta opção requer um mínimo de 3 perímetros para ser eficaz, pois imprime os " -"perímetros internos a partir do terceiro perímetro em diante primeiro, " -"depois o perímetro externo e, por fim, o primeiro perímetro interno. Esta " -"opção é recomendada em relação à opção Exterior/Interior na maioria dos " -"casos. \n" +"Use Interior/Exterior/Interior para o melhor acabamento superficial externo e " +"precisão dimensional, pois a parede externa é impresso sem interrupções a partir " +"de um perímetro interno. No entanto, o desempenho da saliência será reduzido, " +"pois não há perímetro interno para suportar a impressão da parede externa. Esta " +"opção requer um mínimo de 3 paredes para ser eficaz, pois imprime as paredes " +"internas a partir do terceiro perímetro para fora primeiro, depois o perímetro " +"externo e finalmente o primeiro perímetro interno. Esta opção é recomendada em vez " +"da opção Exterior/Interior na maioria dos casos. \n" "\n" "Use Exterior/Interior para obter os mesmos benefícios de qualidade de parede " "externa e precisão dimensional da opção Interior/Exterior/Interior. No " @@ -11073,7 +11156,7 @@ msgid "" "external surface finish. It can also cause the infill to shine through the " "external surfaces of the part." msgstr "" -"Ordem de perímetro/preenchimento. Quando a caixa de seleção não desmarcada, " +"Ordem de parede/preenchimento. Quando a caixa de seleção estiver desmarcada, " "as paredes são impressas primeiro, o que funciona melhor na maioria dos " "casos.\n" "\n" @@ -11084,7 +11167,7 @@ msgstr "" "com que o preenchimento apareça através das superfícies externas da peça." msgid "Wall loop direction" -msgstr "Direção da volta do perímetro" +msgstr "Direção da volta da parede" msgid "" "The direction which the wall loops are extruded when looking down from the " @@ -11096,12 +11179,20 @@ msgid "" "\n" "This option will be disabled if spiral vase mode is enabled." msgstr "" +"A direção em que as voltas de parede são extrudados quando se olha de cima para " +"baixo.\n" +"\n" +"Por padrão, todas as paredes são extrudadas no sentido anti-horário, a menos que " +"Reverter em par esteja habilitado. Definir isso para qualquer opção diferente de " +"Auto forçará a direção da parede independentemente de Reverter em par.\n" +"\n" +"Esta opção será desabilitada se o modo vaso espiral estiver habilitado." msgid "Counter clockwise" -msgstr "Sentido anti-horário" +msgstr "Anti-horário" msgid "Clockwise" -msgstr "Sentido horário" +msgstr "Horário" msgid "Height to rod" msgstr "Altura até a haste" @@ -11127,7 +11218,7 @@ msgid "" "Clearance radius around extruder. Used for collision avoidance in by-object " "printing." msgstr "" -"Raio de folga ao redor do extrusor. Usado para evitar colisões na impressão " +"Raio de folga ao redor da extrusora. Usado para evitar colisões na impressão " "por objeto." msgid "Nozzle height" @@ -11204,16 +11295,16 @@ msgstr "" "adaptável deve ser expandida nas direções XY." msgid "Extruder Color" -msgstr "Cor do extrusor" +msgstr "Cor da Extrusora" msgid "Only used as a visual help on UI" msgstr "Usado apenas como ajuda visual na interface do usuário" msgid "Extruder offset" -msgstr "Offset da Extrusora" +msgstr "Deslocamento da extrusora" msgid "Flow ratio" -msgstr "Fluxo" +msgstr "Taxa de fluxo" msgid "" "The material may have volumetric change after switching between molten state " @@ -11311,7 +11402,33 @@ msgid "" "your filament profile\n" "\n" msgstr "" - +"Adicione conjuntos de valores de avanço de pressão (PA), as velocidades de fluxo " +"volumétrico e acelerações em que foram medidos, separados por uma vírgula. Um " +"conjunto de valores por linha. Por exemplo\n" +"0,04,3,96,3000\n" +"0,033,3,96,10000\n" +"0,029,7,91,3000\n" +"0,026,7,91,10000\n" +"\n" +"Como calibrar:\n" +"1. Execute o teste de avanço de pressão para pelo menos 3 velocidades por valor de " +"aceleração. É recomendado que o teste seja executado para pelo menos a velocidade " +"dos perímetros externos, a velocidade dos perímetros internos e a velocidade de " +"impressão de recurso mais rápida em seu perfil (geralmente é o preenchimento esparso " +"ou sólido). Em seguida, execute-os para as mesmas velocidades para as acelerações de " +"impressão mais lentas e mais rápidas, e não mais rápido do que a aceleração máxima " +"recomendada, conforme fornecido pelo modelador de entrada do Klipper.\n" +"2. Anote o valor de PA ideal para cada velocidade e aceleração de fluxo volumétrico. " +"Você pode encontrar o número do fluxo selecionando fluxo no menu suspenso do esquema " +"de cores e movendo o controle deslizante horizontal sobre as linhas do padrão de PA. " +"O número deve estar visível na parte inferior da página. O valor de PA ideal deve " +"diminuir quanto maior for o fluxo volumétrico. Se não estiver, confirme se sua " +"extrusora está funcionando corretamente. Quanto mais lento e com menos aceleração " +"você imprimir, maior será o intervalo de valores de PA aceitáveis. Se nenhuma " +"diferença for visível, use o valor de PA do teste mais rápido.\n" +"3. Insira os tripletos de valores de PA, Fluxo e Acelerações na caixa de texto aqui " +"e salve seu perfil de filamento\n" +"\n" msgid "Enable adaptive pressure advance for overhangs (beta)" msgstr "Habilitar avanço de pressão adaptável para saliências (beta)" @@ -11357,7 +11474,7 @@ msgstr "" "frequência de início e parada" msgid "Don't slow down outer walls" -msgstr "" +msgstr "Não desacelerar as paredes externas" msgid "" "If enabled, this setting will ensure external perimeters are not slowed down " @@ -11371,6 +11488,16 @@ msgid "" "external walls\n" "\n" msgstr "" +"Se habilitada, esta configuração garantirá que os perímetros externos não sejam " +"desacelerados para atender ao tempo mínimo de camada. Isso é particularmente útil " +"nos cenários abaixo:\n" +"\n" +"1. Para evitar alterações no brilho ao imprimir filamentos brilhantes \n" +"2. Para evitar alterações na velocidade da parede externa que podem criar leves " +"artefatos de parede que parecem bandas z \n" +"3. Para evitar a impressão em velocidades que causam VFAs (artefatos finos) nas " +"paredes externas\n" +"\n" msgid "Layer time" msgstr "Tempo da camada" @@ -11428,6 +11555,9 @@ msgid "" "single-extruder multi-material machines. For tool changers or multi-tool " "machines, it's typically 0. For statistics only" msgstr "" +"Tempo para carregar novo filamento ao trocar o filamento. Geralmente é aplicável " +"para máquinas multimateriais de extrusora única. Para trocadores de ferramentas " +"ou máquinas multiferramentas, é tipicamente 0. Apenas para estatísticas" msgid "Filament unload time" msgstr "Tempo de descarga do filamento" @@ -11437,6 +11567,9 @@ msgid "" "for single-extruder multi-material machines. For tool changers or multi-tool " "machines, it's typically 0. For statistics only" msgstr "" +"Tempo para descarregar o filamento antigo ao trocar o filamento. Geralmente é " +"aplicável para máquinas multimateriais de extrusora única. Para trocadores de " +"ferramentas ou máquinas multiferramentas, é tipicamente 0. Apenas para estatísticas" msgid "Tool change time" msgstr "Tempo de troca de ferramenta" @@ -11447,7 +11580,7 @@ msgid "" "typically 0. For statistics only" msgstr "" "Tempo gasto para trocar ferramentas. Geralmente é aplicável para trocadores " -"de ferramentas ou máquinas multi-ferramentas. Para máquinas multi-materiais " +"de ferramentas ou máquinas multiferramentas. Para máquinas multimateriais " "de extrusora única, é tipicamente 0. Apenas para estatísticas" msgid "" @@ -11619,8 +11752,8 @@ msgid "" "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 "" -"Realizar moldeamento usando impressora multi-extrusora (ou seja, quando a " -"opção 'Único Extrusor Multimaterial' em Configurações de Impressora está " +"Realizar moldeamento usando impressora multi-ferramenta (ou seja, quando a " +"opção 'Multimaterial de Extrusora Única' em Configurações de Impressora está " "desmarcada). Quando ativo, uma pequena quantidade de filamento é rapidamente " "extrudado na torre de limpeza logo antes da troca de ferramenta. Esta opção " "é usada apenas quando a torre de limpeza está habilitada." @@ -11876,15 +12009,14 @@ msgstr "" msgid "Acceleration of outer wall. Using a lower value can improve quality" msgstr "" -"Aceleração do perímetro externo. Usar um valor menor pode melhorar a " -"qualidade" +"Aceleração da parede externa. Usar um valor menor pode melhorar a qualidade" 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 "" "Aceleração das pontes. Se o valor for expresso como uma porcentagem (por " -"exemplo, 50%), será calculado com base na aceleração do perímetro externo." +"exemplo, 50%), será calculado com base na aceleração da parede externa." msgid "mm/s² or %" msgstr "mm/s² ou %" @@ -11935,16 +12067,16 @@ msgid "Jerk of inner walls" msgstr "Jerk nas paredes internas" msgid "Jerk for top surface" -msgstr "Jerk na superfície superior" +msgstr "Jerk para superfície superior" msgid "Jerk for infill" -msgstr "Jerk no preenchimento" +msgstr "Jerk para preenchimento" msgid "Jerk for initial layer" -msgstr "Jerk na primeira camada" +msgstr "Jerk para primeira camada" msgid "Jerk for travel" -msgstr "Jerk no deslocamento" +msgstr "Jerk para deslocamento" msgid "" "Line width of initial layer. If expressed as a %, it will be computed over " @@ -12044,9 +12176,8 @@ msgid "" "Randomly jitter while printing the wall, so that the surface has a rough " "look. This setting controls the fuzzy position" msgstr "" -"Movimento aleatório durante a impressão do perímetro, de modo que a " -"superfície tenha uma aparência áspera. Essa configuração controla a textura " -"fuzzy" +"Movimento aleatório durante a impressão da parede, de modo que a superfície " +"tenha uma aparência áspera. Essa configuração controla a posição fuzzy" msgid "Contour" msgstr "Contorno" @@ -12064,8 +12195,8 @@ msgid "" "The width within which to jitter. It's advised to be below outer wall line " "width" msgstr "" -"A largura dentro da qual tremer. É desaconselhável que seja menor do que a " -"largura da linha do perímetro externo" +"A largura dentro da qual tremer. É aconselhável que seja menor do que a " +"largura da linha da parede externa" msgid "Fuzzy skin point distance" msgstr "Distância do ponto da textura fuzzy" @@ -12389,7 +12520,7 @@ msgstr "" "Ative isso para adicionar comentários no G-Code etiquetando movimentos de " "impressão com a qual objeto eles pertencem, o que é útil para o plugin " "CancelObject do Octoprint. Esta configuração NÃO é compatível com a " -"configuração de Material Múltiplo de Extrusora Única e Limpeza no Objeto / " +"configuração de Multimaterial de Extrusora Única e Limpeza no Objeto / " "Limpeza no Preenchimento." msgid "Exclude objects" @@ -12418,7 +12549,7 @@ msgid "" "reduce time. Wall is still printed with original layer height." msgstr "" "Combina automaticamente o preenchimento esparso de várias camadas para " -"imprimir juntas e reduzir o tempo. O perímetro ainda é impresso com a altura " +"imprimir juntas e reduzir o tempo. A parede ainda é impressa com a altura " "original da camada." msgid "Infill combination - Max layer height" @@ -12448,7 +12579,7 @@ msgstr "" "calculado sobre o diâmetro do bico." msgid "Infill/Wall overlap" -msgstr "Sobreposição de preenchimento/perímetro" +msgstr "Sobreposição de preenchimento/parede" #, no-c-format, no-boost-format msgid "" @@ -12475,7 +12606,7 @@ msgid "" "sparse infill" msgstr "" "A área de preenchimento sólido é ligeiramente alargada para se sobrepor à " -"parede para melhor ligação e para minimizar a aparência de buracos onde o " +"parede para melhor adesão e para minimizar a aparência de furos onde o " "preenchimento encontra as paredes. Um valor de 25-30% é um bom ponto de " "partida, minimizando a aparência dos buracos. O valor percentual é relativo " "à largura da linha do preenchimento esparso" @@ -12484,16 +12615,16 @@ msgid "Speed of internal sparse infill" msgstr "Velocidade do preenchimento esparso interno" msgid "Interface shells" -msgstr "Paredes de interface" +msgstr "Cascas de interface" 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 "" -"Força a geração de perímetros sólidos entre materiais/volumes adjacentes. " -"Útil para impressões com múltiplos extrusores com materiais translúcidos ou " -"suporte solúvel manual" +"Força a geração de cascas sólidas entre materiais/volumes adjacentes. Útil " +"para impressões com multiextrusoras com materiais translúcidos ou suporte " +"solúvel manual" msgid "Maximum width of a segmented region" msgstr "Largura máxima de uma região segmentada" @@ -12804,7 +12935,7 @@ msgid "" "The largest printable layer height for extruder. Used tp limits the maximum " "layer hight when enable adaptive layer height" msgstr "" -"A maior altura de camada imprimível para o extrusor. Usado para limitar a " +"A maior altura de camada imprimível para a extrusora. Usado para limitar a " "altura máxima da camada quando a altura da camada adaptativa está ativada" msgid "Extrusion rate smoothing" @@ -12859,7 +12990,7 @@ msgstr "" "suficiente para ajudar o Pressure advance a alcançar uma transição de fluxo " "mais suave.\n" "\n" -"Para impressoras mais lentas sem Pressure advance, o valor deve ser definido " +"Para impressoras mais lentas sem avanço de pressão, o valor deve ser definido " "muito mais baixo. Um valor de 10-15mm3/s2 é um bom ponto de partida para " "extrusoras de acionamento direto e 5-10mm3/s2 para estilo Bowden.\n" "\n" @@ -12922,7 +13053,7 @@ msgid "" "The lowest printable layer height for extruder. Used tp limits the minimum " "layer hight when enable adaptive layer height" msgstr "" -"A menor altura de camada imprimível para o extrusor. Usado para limitar a " +"A menor altura de camada imprimível para a extrusora. Usado para limitar a " "altura mínima da camada ao habilitar a altura de camada adaptativa" msgid "Min print speed" @@ -12971,7 +13102,7 @@ msgstr "Posição do tubo de resfriamento" msgid "Distance of the center-point of the cooling tube from the extruder tip." msgstr "" -"Distância do ponto central do tubo de resfriamento da ponta do extrusor." +"Distância do ponto central do tubo de resfriamento da ponta da extrusora." msgid "Cooling tube length" msgstr "Comprimento do tubo de resfriamento" @@ -13001,7 +13132,7 @@ 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 "" -"Distância da ponta do extrusor da posição onde o filamento é estacionado " +"Distância da ponta da extrusora da posição onde o filamento é estacionado " "quando descarregado. Isso deve corresponder ao valor no firmware da " "impressora." @@ -13102,14 +13233,14 @@ msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." msgstr "" -"Largura do perímetro interno. Se expressado como %, será computado de acordo " -"com o diâmetro do bico." +"Largura de linha da parede interna. Se expressado como %, será computado de " +"acordo com o diâmetro do bico." msgid "Speed of inner wall" -msgstr "Velocidade do perímetro interno" +msgstr "Velocidade da parede interna" msgid "Number of walls of every layer" -msgstr "Número de perímetros em cada camada" +msgstr "Número de paredes em cada camada" msgid "Alternate extra wall" msgstr "Parede extra alternada" @@ -13124,12 +13255,12 @@ msgid "" "Using lightning infill together with this option is not recommended as there " "is limited infill to anchor the extra perimeters to." msgstr "" -"Esta configuração adiciona um perímetro extra a cada duas camadas. Dessa " +"Esta configuração adiciona uma parede extra a cada duas camadas. Dessa " "forma, o preenchimento fica encaixado verticalmente entre as paredes, " "resultando em impressões mais resistentes. \n" "\n" -"Quando esta opção está ativada, a opção de garantir a espessura vertical do " -"perímetro precisa ser desativada. \n" +"Quando esta opção está ativada, a opção de garantir a espessura vertical da " +"casca precisa ser desativada. \n" "\n" "Não é recomendado usar o preenchimento rápido juntamente com esta opção, " "pois há preenchimento limitado para ancorar os perímetros extras." @@ -13250,7 +13381,7 @@ msgid "" "travel. Set zero to disable retraction" msgstr "" "Alguma quantidade de material na extrusora é puxada para trás para evitar " -"vazamento durante viagens longas. Defina zero para desativar a retração" +"vazamento durante deslocamentos longos. Defina zero para desativar a retração" msgid "Long retraction when cut(beta)" msgstr "Retração longa quando cortado(beta)" @@ -13377,7 +13508,7 @@ 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 "" -"Quando a retração é compensada após o movimento de deslocamento, o extrusor " +"Quando a retração é compensada após o movimento de deslocamento, a extrusora " "empurrará essa quantidade adicional de filamento. Esta configuração é " "raramente necessária." @@ -13385,7 +13516,7 @@ msgid "" "When the retraction is compensated after changing tool, the extruder will " "push this additional amount of filament." msgstr "" -"Quando a retração é compensada após a troca de ferramenta, o extrusor " +"Quando a retração é compensada após a troca de ferramenta, a extrusora " "empurrará essa quantidade adicional de filamento." msgid "Retraction Speed" @@ -13401,7 +13532,7 @@ msgid "" "Speed for reloading filament into extruder. Zero means same speed with " "retraction" msgstr "" -"Velocidade para recarregar o filamento no extrusor. Zero significa mesma " +"Velocidade para recarregar o filamento na extrusora. Zero significa mesma " "velocidade de retração" msgid "Use firmware retraction" @@ -13431,7 +13562,7 @@ msgid "Seam position" msgstr "Posição da costura" msgid "The start position to print each part of outer wall" -msgstr "A posição inicial para imprimir cada parte do perímetro externo" +msgstr "A posição inicial para imprimir cada parte da parede externa" msgid "Nearest" msgstr "Mais próximo" @@ -13467,7 +13598,7 @@ msgstr "" "Para reduzir a visibilidade da costura em uma extrusão de loop fechado, o " "loop é interrompido e encurtado por uma quantidade especificada.\n" "Esta quantidade pode ser especificada em milímetros ou como uma porcentagem " -"do diâmetro atual do extrusor. O valor padrão para este parâmetro é 10%." +"do diâmetro atual da extrusora. O valor padrão para este parâmetro é 10%." msgid "Scarf joint seam (beta)" msgstr "Costura junta cachecol (beta)" @@ -13514,11 +13645,11 @@ msgid "" "at 40% of the external wall's width. Due to performance considerations, the " "degree of overhang is estimated." msgstr "" -"Esta opção determina o limiar de saliência para a aplicação de juntas " -"cachecol. Se a parte sem suporte do perímetro for inferior a esse limiar, as " -"costuras junta cachecol serão aplicadas. O limiar padrão é definido em 40% " -"da largura do perímetro externo. Devido a considerações de desempenho, o " -"grau de saliência é estimado." +"Esta opção determina o limiar de saliência para a aplicação de juntas cachecol. " +"Se a parte sem suporte do perímetro for inferior a esse limiar, as costuras " +"junta cachecol serão aplicadas. O limiar padrão é definido em 40% da largura da " +"parede externa. Devido a considerações de desempenho, o grau de saliência é " +"estimado." msgid "Scarf joint speed" msgstr "Velocidade da junta cachecol" @@ -13562,10 +13693,10 @@ msgstr "" "da altura atual da camada. O valor padrão para este parâmetro é 0." msgid "Scarf around entire wall" -msgstr "Cachecol em torno de todo perímetro" +msgstr "Cachecol em torno de toda a parede" msgid "The scarf extends to the entire length of the wall." -msgstr "O cachecol se estende por todo o comprimento do perímetro." +msgstr "O cachecol se estende por todo o comprimento da parede." msgid "Scarf length" msgstr "Comprimento do cachecol" @@ -13597,10 +13728,10 @@ msgid "" "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 "" -"A velocidade de limpeza é determinada pela velocidade do tipo de extrusão " -"atual. Por exemplo, se uma ação de limpeza for executada imediatamente após " -"uma extrusão de perímetro externo, a velocidade da extrusão do perímetro " -"externo será utilizada para a ação de limpeza." +"A velocidade de limpeza é determinada pela velocidade do tipo de extrusão atual. " +"Ex.: se uma ação de limpeza for executada imediatamente após uma extrusão de " +"parede externa, a velocidade da extrusão da parede externa será utilizada para " +"a ação de limpeza." msgid "Wipe on loops" msgstr "Limpeza em loops" @@ -13610,7 +13741,7 @@ msgid "" "inward movement is executed before the extruder leaves the loop." msgstr "" "Para minimizar a visibilidade da costura em uma extrusão de loop fechado, é " -"executado um pequeno movimento para dentro antes que o extrusor saia do loop." +"executado um pequeno movimento para dentro antes que a extrusora saia do loop." msgid "Wipe before external loop" msgstr "Limpeza antes do loop externo" @@ -13627,12 +13758,12 @@ msgid "" "printed immediately after a de-retraction move." msgstr "" "Para minimizar a visibilidade de sobreextrusão potencial no início de um " -"perímetro externo ao imprimir com a ordem de impressão de perímetro Externo/" -"Interno ou Interno/Externo/Interno, a desretração é executada ligeiramente " +"perímetro externo ao imprimir com a ordem de impressão de parede Externa/" +"Interna ou Interna/Externa/Interna, a desretração é executada ligeiramente " "no interior a partir do início do perímetro externo. Dessa forma, qualquer " "sobreextrusão potencial é ocultada da superfície externa. \n" "\n" -"Isso é útil ao imprimir com a ordem de impressão de perímetro Externa/" +"Isso é útil ao imprimir com a ordem de impressão de parede Externa/" "Interna ou Interna/Externa/Interna, pois nesses modos é mais provável que um " "perímetro externo seja impresso imediatamente após um movimento de " "desretração." @@ -13774,7 +13905,7 @@ msgid "" "generated model has no seam" msgstr "" "A espiralização suaviza os movimentos z do contorno externo. E transforma um " -"modelo sólido em uma impressão de perímetro único com camadas inferiores " +"modelo sólido em uma impressão de parede única com camadas inferiores " "sólidas. O modelo final gerado não tem costura" msgid "Smooth Spiral" @@ -13829,7 +13960,7 @@ msgstr "" "modo suave for selecionado, a extrusora se moverá para fora após cada camada " "ser impressa e então tirará uma captura de tela. Como o filamento derretido " "pode vazar do bico durante o processo de tirar uma captura de tela, é " -"necessário uma Torre Prime para o modo suave para limpar o bico." +"necessário uma torre de preparação para o modo suave para limpar o bico." msgid "Traditional" msgstr "Tradicional" @@ -13882,7 +14013,7 @@ msgid "Start G-code when start the printing of this filament" msgstr "Código de início ao iniciar a impressão deste filamento" msgid "Single Extruder Multi Material" -msgstr "Múltiplos Materiais com um Extrusor" +msgstr "Multimaterial com Extrusora Única" msgid "Use single nozzle to print multi filament" msgstr "Use um único bico para imprimir múltiplos filamentos" @@ -13904,10 +14035,10 @@ msgstr "" "ação de troca manual de filamento." msgid "Purge in prime tower" -msgstr "Purgar na Torre Prime" +msgstr "Purgar na torre de preparação" msgid "Purge remaining filament into prime tower" -msgstr "Purgar o filamento restante na Torre Prime" +msgstr "Purgar o filamento restante na torre de preparação" msgid "Enable filament ramming" msgstr "Ativar moldeamento de ponta de filamento" @@ -13922,18 +14053,18 @@ msgid "" "with the print." msgstr "" "Se ativado, a torre de limpeza não será impressa em camadas sem troca de " -"ferramenta. Em camadas com uma troca de ferramenta, a extrusora viajará para " +"ferramenta. Em camadas com uma troca de ferramenta, a extrusora deslocará para " "baixo para imprimir a torre de limpeza. O usuário é responsável por garantir " "que não haja colisão com a impressão." msgid "Prime all printing extruders" -msgstr "Primer todos os extrusores de impressão" +msgstr "Preparar todas as extrusoras de impressão" msgid "" "If enabled, all printing extruders will be primed at the front edge of the " "print bed at the start of the print." msgstr "" -"Se ativado, todos os extrusores de impressão serão iniciados na borda " +"Se ativado, todos as extrusoras de impressão serão preparados na borda " "frontal da mesa de impressão no início da impressão." msgid "Slice gap closing radius" @@ -14221,7 +14352,7 @@ msgid "" msgstr "" "A camada de suporte usa uma altura de camada independente da camada do " "objeto. Isso é para suportar a personalização do z-gap e economizar tempo de " -"impressão. Esta opção será inválida quando a Torre Prime estiver ativa." +"impressão. Esta opção será inválida quando a torre de preparação estiver ativa." msgid "Threshold angle" msgstr "Ângulo limiar" @@ -14354,7 +14485,7 @@ msgstr "" "pode aumentar a estabilidade do suporte orgânico." msgid "Branch Diameter with double walls" -msgstr "Diâmetro da ramificação com perí. duplo" +msgstr "Diâmetro da Ramificação com parede dupla" #. TRN PrintSettings: "Organic supports" > "Branch Diameter" msgid "" @@ -14367,7 +14498,7 @@ msgstr "" "zero para não ter paredes duplas." msgid "Support wall loops" -msgstr "Perímetros de suporte" +msgstr "Voltas de parede de suporte" msgid "This setting specify the count of walls around support" msgstr "Esta configuração especifica a contagem de paredes ao redor do suporte" @@ -14420,12 +14551,30 @@ msgid "" "desire to handle heat soaking in the print start macro if no active chamber " "heater is installed." msgstr "" +"Para materiais de alta temperatura como ABS, ASA, PC e PA, uma temperatura de " +"câmara mais alta pode ajudar a suprimir ou reduzir a deformação e potencialmente " +"levar a uma maior resistência de ligação entre camadas. No entanto, ao mesmo tempo, " +"uma temperatura de câmara mais alta reduzirá a eficiência da filtragem de ar para " +"ABS e ASA. \n" +"\n" +"Para PLA, PETG, TPU, PVA e outros materiais de baixa temperatura, esta opção deve " +"ser desabilitada (definida como 0), pois a temperatura da câmara deve ser baixa para " +"evitar o entupimento da extrusora causado pelo amolecimento do material na quebra de " +"calor.\n" +"\n" +"Se habilitado, este parâmetro também define uma variável gcode chamada " +"chamber_temperature, que pode ser usada para passar a temperatura desejada da câmara " +"para sua macro de início de impressão ou uma macro de absorção de calor como esta: " +"PRINT_START (outras variáveis) CHAMBER_TEMP=[chamber_temperature]. Isso pode ser " +"útil se sua impressora não suportar comandos M141/M191 ou se você desejar lidar com " +"a absorção de calor na macro de início de impressão se nenhum aquecedor de câmara " +"ativo estiver instalado." msgid "Nozzle temperature for layers after the initial one" msgstr "Temperatura do bico para camadas após a inicial" msgid "Detect thin wall" -msgstr "Detectar perímetro fino" +msgstr "Detectar parede fina" msgid "" "Detect thin wall which can't contain two line width. And use single line to " @@ -14456,23 +14605,23 @@ msgid "Speed of top surface infill which is solid" msgstr "Velocidade de preenchimento da superfície superior, que é sólida" msgid "Top shell layers" -msgstr "Camadas de topo" +msgstr "Camadas de topo da casca" 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 "" -"Este é o número de camadas sólidas do perímetro superior, incluindo a camada " +"Este é o número de camadas sólidas da casca do topo, incluindo a camada " "da superfície superior. Quando a espessura calculada por este valor for " -"menor do que a espessura do perímetro superior, as camadas do perímetro " -"superior serão aumentadas" +"menor do que a espessura da casca do topo, as camadas da casca do topo " +"serão aumentadas" msgid "Top solid layers" msgstr "Camadas sólidas superiores" msgid "Top shell thickness" -msgstr "Espessura da parede de topo" +msgstr "Espessura da casca do topo" msgid "" "The number of top solid layers is increased when slicing if the thickness " @@ -14482,10 +14631,10 @@ msgid "" "layers" msgstr "" "O número de camadas sólidas superiores é aumentado ao fatiar se a espessura " -"calculada pelas camadas da parede superior for menor do que este valor. Isso " -"pode evitar que a parede seja muito fina quando a altura da camada é " -"pequena. 0 significa que esta configuração está desativada e a espessura da " -"parede superior é determinada exclusivamente pelas camadas da parede superior" +"calculada pelas camadas da casca do topo for menor do que este valor. Isso " +"pode evitar que a casca seja muito fina quando a altura da camada é pequena. " +"0 significa que esta configuração está desativada e a espessura da casca do " +"topo é determinada exclusivamente pelas camadas da casca do topo" msgid "Speed of travel which is faster and without extrusion" msgstr "Velocidade de deslocamento mais rápida e sem extrusão" @@ -14519,7 +14668,7 @@ msgstr "" "retrair. \n" "\n" "Dependendo de quanto tempo dura a operação de limpeza, quão rápidas e longas " -"são as configurações de retração do extrusor/filamento, pode ser necessário " +"são as configurações de retração da extrusora/filamento, pode ser necessário " "um movimento de retração para recolher o filamento restante. \n" "\n" "Definir um valor na configuração de quantidade de retração antes da limpeza " @@ -14531,7 +14680,7 @@ msgid "" "stabilize the chamber pressure inside the nozzle, in order to avoid " "appearance defects when printing objects." msgstr "" -"A Torre Prime pode ser usada para limpar o resíduo no bico e estabilizar a " +"A torre de limpeza pode ser usada para limpar o resíduo no bico e estabilizar a " "pressão na câmara dentro do bico, a fim de evitar defeitos de aparência ao " "imprimir objetos." @@ -14549,13 +14698,13 @@ msgstr "" "pelos volumes de purga na tabela." msgid "Prime volume" -msgstr "Volume de material" +msgstr "Volume de preparação" msgid "The volume of material to prime extruder on tower." msgstr "O volume de material para preparar a extrusora na torre." msgid "Width of prime tower" -msgstr "Largura da Torre Prime" +msgstr "Largura da torre de preparação" msgid "Wipe tower rotation angle" msgstr "Ângulo de rotação da torre de limpeza" @@ -14621,7 +14770,7 @@ 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 "" -"Extrusor a ser usada ao imprimir o perímetro da torre de limpeza. Defina " +"A extrusora a ser usada ao imprimir o perímetro da torre de limpeza. Defina " "como 0 para usar a disponível (não solúvel é preferido)." msgid "Purging volumes - load/unload volumes" @@ -14646,7 +14795,7 @@ msgstr "" "objetos. Isso pode reduzir a quantidade de resíduos e diminuir o tempo de " "impressão. Se as paredes forem impressas com filamento transparente, o " "preenchimento de cor mista será visível do lado de fora. Isso não terá " -"efeito, a menos que a torre de limpeza esteja ativa." +"efeito, a menos que a torre de preparação esteja ativa." msgid "" "Purging after filament change will be done inside objects' support. This may " @@ -14655,7 +14804,7 @@ msgid "" msgstr "" "A purga após a troca de filamento será feita dentro do suporte dos objetos. " "Isso pode reduzir a quantidade de resíduos e diminuir o tempo de impressão. " -"Isso não terá efeito, a menos que a Torre Prime esteja ativa." +"Isso não terá efeito, a menos que a torre de preparação esteja ativa." msgid "" "This object will be used to purge the nozzle after a filament change to save " @@ -14665,7 +14814,7 @@ msgstr "" "Este objeto será usado para purgar o bico após uma troca de filamento para " "economizar filamento e diminuir o tempo de impressão. As cores dos objetos " "serão misturadas como resultado. Isso não terá efeito, a menos que a torre " -"de limpeza esteja ativa." +"de preparação esteja ativa." msgid "Maximal bridging distance" msgstr "Distância máxima de ponte" @@ -14807,28 +14956,27 @@ msgid "" "very thin areas is used gap-fill. Arachne engine produces walls with " "variable extrusion width" msgstr "" -"O gerador de perímetro clássico produz paredes com largura de extrusão " +"O gerador de parede clássico produz paredes com largura de extrusão " "constante e para áreas muito finas é usado preenchimento de vão. O motor " -"Arachne produz perímetros com largura de extrusão variável" +"Arachne produz paredes com largura de extrusão variável" msgid "Arachne" msgstr "Arachne" msgid "Wall transition length" -msgstr "Comprimento da transição de perímetro" +msgstr "Comprimento da transição de parede" 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 "" -"Ao fazer a transição entre diferentes números de paredes à medida que a peça " -"fica mais fina, uma certa quantidade de espaço é designada para dividir ou " -"unir os segmentos do perímetro. É expresso como uma porcentagem sobre o " -"diâmetro do bico" +"Ao fazer a transição entre diferentes números de paredes à medida que a peça fica " +"mais fina, uma certa quantidade de espaço é designada para dividir ou unir os " +"segmentos da parede. É expresso como uma porcentagem sobre o diâmetro do bico" msgid "Wall transitioning filter margin" -msgstr "Margem de filtro de transição de perímetro" +msgstr "Margem de filtro de transição de parede" msgid "" "Prevent transitioning back and forth between one extra wall and one less. " @@ -14839,16 +14987,16 @@ msgid "" "variation can lead to under- or overextrusion problems. It's expressed as a " "percentage over nozzle diameter" msgstr "" -"Evita a transição de ida e volta entre um perímetro extra e um a menos. Esta " +"Evita a transição de ida e volta entre uma parede extra e uma a menos. Esta " "margem amplia o intervalo de larguras de extrusão que seguem para [Largura " -"mínima da perímetro - margem, 2 * Largura mínima da perímetro + margem]. " +"mínima da parede - margem, 2 * Largura mínima da parede + margem]. " "Aumentar esta margem reduz o número de transições, o que reduz o número de " "inícios / paradas de extrusão e o tempo de deslocamento. No entanto, uma " "grande variação na largura de extrusão pode levar a problemas de subextrusão " "ou superextrusão. É expresso como uma porcentagem sobre o diâmetro do bico" msgid "Wall transitioning threshold angle" -msgstr "Ângulo limiar de transição de perímetro" +msgstr "Ângulo limiar de transição de parede" msgid "" "When to create transitions between even and odd numbers of walls. A wedge " @@ -14859,12 +15007,12 @@ msgid "" msgstr "" "Quando criar transições entre números pares e ímpares de paredes. Uma forma " "de cunha com um ângulo maior do que esta configuração não terá transições e " -"nenhumo perímetro será impresso no centro para preencher o espaço restante. " +"nenhuma parede será impressa no centro para preencher o espaço restante. " "Reduzir esta configuração reduz o número e o comprimento dessas paredes " "centrais, mas pode deixar vazios ou extrusão excessiva" msgid "Wall distribution count" -msgstr "Contagem de distribuição de perímetro" +msgstr "Contagem de distribuição de paredes" msgid "" "The number of walls, counted from the center, over which the variation needs " @@ -14883,13 +15031,13 @@ msgid "" "feature size will be widened to the Minimum wall width. It's expressed as a " "percentage over nozzle diameter" msgstr "" -"Espessura mínima de elementos finos. Elementos do modelo que são mais finos " -"do que este valor não serão impressos, enquanto elementos mais espessos que " -"o tamanho mínimo do elemento serão alargados até a largura mínima do " -"perímetro. É expresso como uma porcentagem sobre o diâmetro do bico" +"Espessura mínima de elementos finos. Elementos do modelo que são mais finos do " +"que este valor não serão impressos, enquanto elementos mais espessos que o " +"tamanho mínimo do elemento serão alargados até a largura mínima da parede. " +"É expresso como uma porcentagem sobre o diâmetro do bico" msgid "Minimum wall length" -msgstr "Comprimento mínimo do perímetro" +msgstr "Comprimento mínimo da parede" msgid "" "Adjust this value to prevent short, unclosed walls from being printed, which " @@ -14901,31 +15049,31 @@ msgid "" "top-surface. 'One wall threshold' is only visible if this setting is set " "above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Ajuste este valor para evitar que perímetros curtos e não fechados sejam " -"impressos, o que poderia aumentar o tempo de impressão. Valores mais altos " -"removem perímetros mais longos.\n" +"Ajuste este valor para evitar que paredes curtas e não fechados sejam impressos, " +"o que poderia aumentar o tempo de impressão. Valores mais altos removem paredes " +"mais longas.\n" "\n" -"NOTA: As superfícies inferior e superior não serão afetadas por este valor " -"para evitar lacunas visuais no exterior do modelo. Ajuste o 'Limiar de um " -"perímetro' nas configurações avançadas abaixo para ajustar a sensibilidade " -"do que é considerado uma superfície superior. 'Limiar de um perímetro' só é " -"visível se esta configuração estiver acima do valor padrão de 0,5, ou se " -"superfícies superiores de uma única parede estiverem habilitadas." +"NOTA: As superfícies inferior e superior não serão afetadas por este valor para " +"evitar lacunas visuais no exterior do modelo. Ajuste o 'Limiar de uma parede' " +"nas configurações avançadas abaixo para ajustar a sensibilidade do que é " +"considerado uma superfície superior. 'Limiar de uma parede' só é visível se " +"esta configuração estiver acima do valor padrão de 0,5, ou se superfícies " +"superiores de uma única parede estiverem habilitadas." msgid "First layer minimum wall width" -msgstr "Largura mínima do perímetro da primeira camada" +msgstr "Largura mínima de parede da primeira camada" 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 "" -"A largura mínima do perímetro que deve ser usada para a primeira camada é " +"A largura mínima de parede que deve ser usada para a primeira camada é " "recomendada para ser definida com o mesmo tamanho do bico. Este ajuste é " "esperado para melhorar a aderência." msgid "Minimum wall width" -msgstr "Largura mínima do perímetro" +msgstr "Largura mínima de parede" msgid "" "Width of the wall that will replace thin features (according to the Minimum " @@ -14933,11 +15081,10 @@ msgid "" "thickness of the feature, the wall will become as thick as the feature " "itself. It's expressed as a percentage over nozzle diameter" msgstr "" -"Largura do perímetro que substituirá elementos finos (de acordo com o " -"tamanho mínimo do elemento) do modelo. Se a Largura mínima do perímetro for " -"mais fina do que a espessura do elemento, o perímetro será tão espesso " -"quanto o próprio elemento. É expresso como uma porcentagem sobre o diâmetro " -"do bico" +"Largura da parede que substituirá elementos finos (de acordo com o tamanho " +"mínimo do elemento) do modelo. Se a Largura mínima da parede for mais fina do " +"que a espessura do elemento, a parede será tão espesso quanto o próprio elemento. " +"É expresso como uma porcentagem sobre o diâmetro do bico" msgid "Detect narrow internal solid infill" msgstr "Detectar preenchimento sólido interno estreito" @@ -15031,9 +15178,9 @@ msgid "" "custom G-code travels somewhere else, it should write to this variable so " "OrcaSlicer knows where it travels from when it gets control back." msgstr "" -"Posição do extrusor no início do bloco de G-code personalizado. Se o G-code " +"Posição da extrusora no início do bloco de G-code personalizado. Se o G-code " "personalizado se deslocar para outro lugar, ele deve escrever nesta variável " -"para que o PrusaSlicer saiba de onde se desloca quando recupera o controle." +"para que o OrcaSlicer saiba de onde se desloca quando recupera o controle." msgid "" "Retraction state at the beginning of the custom G-code block. If the custom " @@ -15041,22 +15188,24 @@ msgid "" "OrcaSlicer de-retracts correctly when it gets control back." msgstr "" "Estado de retração no início do bloco de G-code personalizado. Se o G-code " -"personalizado mover o eixo do extrusor, ele deve escrever nesta variável " -"para que o PrusaSlicer desretraia corretamente quando recupera o controle." +"personalizado mover o eixo da extrusora, ele deve escrever nesta variável " +"para que o OrcaSlicer desretraia corretamente quando recupera o controle." msgid "Extra de-retraction" msgstr "Desretração extra" msgid "Currently planned extra extruder priming after de-retraction." -msgstr "Priming de extrusora extra planejado atualmente após a desretração." +msgstr "Preparação extra de extrusora planejado atualmente após a desretração." msgid "Absolute E position" -msgstr "" +msgstr "Posição E absoluta" msgid "" "Current position of the extruder axis. Only used with absolute extruder " "addressing." msgstr "" +"Posição atual do eixo da extrusora. Usado somente com endereçamento absoluto da " +"extrusora." msgid "Current extruder" msgstr "Extrusora atual" @@ -15088,7 +15237,7 @@ msgid "" "initial_tool." msgstr "" "Índice base zero da primeira extrusora utilizada na impressão. Mesmo que " -"ferramenta_inicial." +"initial_tool." msgid "Initial tool" msgstr "Ferramenta inicial" @@ -15098,10 +15247,10 @@ msgid "" "initial_extruder." msgstr "" "Índice base zero da primeira extrusora utilizada na impressão. Mesmo que " -"extrusora_inicial." +"initial_extruder." msgid "Is extruder used?" -msgstr "Extrusora utilizada?" +msgstr "Extrusora é utilizada?" msgid "" "Vector of booleans stating whether a given extruder is used in the print." @@ -15109,10 +15258,10 @@ msgstr "" "Vetor de booleanos indicando se uma dada extrusora é utilizada na impressão." msgid "Has single extruder MM priming" -msgstr "" +msgstr "Tem preparação de extrusora MM única" msgid "Are the extra multi-material priming regions used in this print?" -msgstr "" +msgstr "As regiões de preparação multimateriais extras são usadas nesta impressão?" msgid "Volume per extruder" msgstr "Volume por extrusora" @@ -15140,8 +15289,8 @@ msgid "" "Weight per extruder extruded during the entire print. Calculated from " "filament_density value in Filament Settings." msgstr "" -"Peso por extrusora extrudido durante toda a impressão. Calculado a partir do " -"valor de densidade do filamento nas configurações de filamento." +"Peso extrudado por extrusora durante toda a impressão. Calculado a partir do " +"valor de filament_density nas Configurações de Filamento." msgid "Total weight" msgstr "Peso total" @@ -15150,8 +15299,8 @@ msgid "" "Total weight of the print. Calculated from filament_density value in " "Filament Settings." msgstr "" -"Peso total da impressão. Calculado a partir do valor de densidade do " -"filamento nas configurações de filamento." +"Peso total da impressão. Calculado a partir do valor de filament_density " +"nas Configurações de Filamento." msgid "Total layer count" msgstr "Total de camadas" @@ -15277,12 +15426,13 @@ msgid "Name of the physical printer used for slicing." msgstr "Nome da impressora física utilizada para fatiar." msgid "Number of extruders" -msgstr "" +msgstr "Número de extrusoras" msgid "" "Total number of extruders, regardless of whether they are used in the " "current print." msgstr "" +"Número total de extrusoras, independentemente de serem usadas na impressão atual." msgid "Layer number" msgstr "Número da camada" @@ -15309,16 +15459,16 @@ msgid "Height of the last layer above the print bed." msgstr "Altura da última camada acima da mesa de impressão." msgid "Filament extruder ID" -msgstr "ID do extrusor de filamento" +msgstr "ID da extrusora de filamento" msgid "The current extruder ID. The same as current_extruder." -msgstr "O ID do extrusor atual. O mesmo que extrusora_atual." +msgstr "O ID da extrusora atual. O mesmo que current_extruder." msgid "Error in zip archive" msgstr "Erro no arquivo zip" msgid "Generating walls" -msgstr "Gerando perímetros" +msgstr "Gerando paredes" msgid "Generating infill regions" msgstr "Gerando regiões de preenchimento" @@ -16003,7 +16153,7 @@ msgid "Bowden" msgstr "Tubo" msgid "Extruder type" -msgstr "Tipo de Extrusor" +msgstr "Tipo de extrusora" msgid "PA Tower" msgstr "Torre de PA" @@ -17134,8 +17284,8 @@ msgid "" "and a higher sparse infill density. So, it results in higher strength of the " "prints, but more filament consumption and longer printing time." msgstr "" -"Comparado com o perfil padrão de uma bico de 0,4 mm, tem mais paredes e uma " -"densidade de preenchimento esparso mais alta. Portanto, resulta em maior " +"Comparado com o perfil padrão de uma bico de 0,4 mm, tem mais voltas de parede e " +"uma densidade de preenchimento esparso mais alta. Portanto, resulta em maior " "resistência, mas com consumo maior de filamento e tempo de impressão mais " "longo." @@ -17219,8 +17369,8 @@ msgid "" "and a higher sparse infill density. So, it results in higher strength of the " "prints, but more filament consumption and longer printing time." msgstr "" -"Comparado com o perfil padrão de um bico de 0,6 mm, tem mais paredes e uma " -"densidade de preenchimento esparso mais alta. Portanto, resulta em uma " +"Comparado com o perfil padrão de um bico de 0,6 mm, tem mais voltas de parede e " +"uma densidade de preenchimento esparso mais alta. Portanto, resulta em uma " "resistência maior, mas com um consumo de filamento maior e um tempo de " "impressão mais longo." @@ -17357,8 +17507,8 @@ msgid "" "consistency?" msgstr "" "Parede precisa\n" -"Você sabia que ativar o Perímetro Preciso pode melhorar a precisão e a " -"consistência da camada?" +"Você sabia que ativar o Parede Precisa pode melhorar a precisão e a consistência " +"de camada?" #: resources/data/hints.ini: [hint:Sandwich mode] msgid "" @@ -17708,7 +17858,7 @@ msgid "" "density to improve the strength of the model?" msgstr "" "Melhorar a resistência\n" -"Você sabia que pode usar mais loops de perímetro e densidade de " +"Você sabia que pode usar mais voltas de parede e maior densidade de " "preenchimento esparso mais alta para melhorar a resistência do modelo?" #: resources/data/hints.ini: [hint:When need to print with the printer door @@ -17721,8 +17871,8 @@ msgid "" msgstr "" "Quando é necessário imprimir com a porta da impressora aberta\n" "Você sabia que abrir a porta da impressora pode reduzir a probabilidade de " -"entupimento do extrusor/bico aquecido ao imprimir filamento de temperatura " -"mais baixa com uma temperatura de invólucro mais alta. Mais informações " +"entupimento da extrusora/bico aquecido ao imprimir filamento de temperatura " +"mais baixa com uma temperatura de invólucro mais alta? Mais informações " "sobre isso na Wiki." #: resources/data/hints.ini: [hint:Avoid warping] @@ -17817,8 +17967,8 @@ msgstr "" #~ "Forçar o ventilador de resfriamento a ser uma velocidade específica " #~ "quando o grau de saliência da peça impressa excede este valor. Expresso " #~ "como porcentagem, que indica quanto da largura da linha sem suporte da " -#~ "camada inferior.Zero significa forçar o resfriamento para toda o " -#~ "perímetro externo, não importa quanto seja o grau de saliência" +#~ "camada inferior.Zero significa forçar o resfriamento para toda a " +#~ "parede externa, não importa quanto seja o grau de saliência" #~ msgid "Bridge infill direction" #~ msgstr "Direção de preenchimento de ponte" @@ -17838,9 +17988,9 @@ msgstr "" #~ "Note: This setting will only take effect if the wall sequence is " #~ "configured to Inner-Outer" #~ msgstr "" -#~ "Melhore a precisão da parede ajustando o espaçamento do perímetro " -#~ "externo. Isso também melhora a consistência da camada.\n" -#~ "Nota: Esta configuração só terá efeito se a sequência do perímetro " +#~ "Melhora a precisão da casca ajustando o espaçamento da parede " +#~ "externa. Isso também melhora a consistência da camada.\n" +#~ "Nota: Esta configuração só terá efeito se a sequência da parede " #~ "estiver configurada para Interior-Exterior" #~ msgid "Thick bridges" @@ -17941,9 +18091,9 @@ msgstr "" #~ "This setting can also help reduce part warping due to the reduction of " #~ "stresses in the part walls." #~ msgstr "" -#~ "Extruir perímetros, que tenham uma parte sobre um overhang, na direção " -#~ "reversa em camadas ímpares. Este padrão alternado pode melhorar " -#~ "drasticamente perímetros íngremes.\n" +#~ "Extrudar perímetros que tenham uma parte sobre uma saliência, na direção " +#~ "reversa em camadas ímpares. Este padrão alternado pode melhorar drasticamente " +#~ "saliências íngremes.\n" #~ "\n" #~ "Este ajuste também pode ajudar a reduzir a deformação da peça devido à " #~ "redução das tensões nas paredes da peça." @@ -17966,13 +18116,13 @@ msgstr "" #~ "\n" #~ "Este ajuste reduz muito as tensões na peça, já que agora são distribuídas " #~ "em direções alternadas. Isso deve reduzir a deformação da peça, mantendo " -#~ "a qualidade do perímetro externo. Este recurso pode ser muito útil para " +#~ "a qualidade da parede externa. Este recurso pode ser muito útil para " #~ "materiais propensos a deformações, como ABS/ASA, e também para filamentos " #~ "elásticos, como TPU e Silk PLA. Também pode ajudar a reduzir a deformação " #~ "em regiões salientes sobre suportes.\n" #~ "\n" #~ "Para que este ajuste seja mais eficaz, recomenda-se definir o Limiar " -#~ "Reverso como 0 para que todos os perímetros internos sejam impressos em " +#~ "Reverso como 0 para que todas as paredes internas sejam impressos em " #~ "direções alternadas em camadas ímpares, independentemente de seu grau de " #~ "saliência." @@ -17997,12 +18147,12 @@ msgstr "" #~ "\n" #~ "This option will be disabled if spiral vase mode is enabled." #~ msgstr "" -#~ "A direção na qual os loops da perímetro são extrudados quando vistos de " +#~ "A direção na qual as voltas de parede são extrudados quando vistos de " #~ "cima.\n" #~ "\n" #~ "Por padrão, todas as paredes são extrudadas no sentido anti-horário, a " #~ "menos que o Reverso em ímpar esteja ativado. Definir isso como qualquer " -#~ "opção que não seja Automático forçará a direção do perímetro, " +#~ "opção que não seja Automático forçará a direção da parede, " #~ "independentemente do Reverso em ímpar.\n" #~ "\n" #~ "Esta opção será desativada se o modo de vaso espiral estiver ativado." @@ -18011,7 +18161,7 @@ msgstr "" #~ "While printing by Object, the extruder may collide skirt.\n" #~ "Thus, reset the skirt layer to 1 to avoid that." #~ msgstr "" -#~ "Ao imprimir por Objeto, o extrusor pode colidir com a saia.\n" +#~ "Ao imprimir por Objeto, a extrusora pode colidir com a saia.\n" #~ "Portanto, redefina a camada da saia para 1 para evitar isso." #~ msgid "" @@ -18085,7 +18235,7 @@ msgstr "" #~ "Zero significa que esta característica está desabilitada.\n" #~ "\n" #~ "Usar um valor não zero é útil se a impressora estiver configurada para " -#~ "imprimir sem uma linha de limpeza." +#~ "imprimir sem uma linha de preparação." #~ msgid "" #~ "Adjust this value to prevent short, unclosed walls from being printed, " @@ -18099,16 +18249,16 @@ msgstr "" #~ "this setting is set above the default value of 0.5, or if single-wall top " #~ "surfaces is enabled." #~ msgstr "" -#~ "Ajuste este valor para evitar que perímetros curtos e não fechados sejam " -#~ "impressos, o que poderia aumentar o tempo de impressão. Valores mais " -#~ "altos removem perímetros mais longos.\n" +#~ "Ajuste este valor para evitar que paredes curtas e não fechadas sejam " +#~ "impressas, o que poderia aumentar o tempo de impressão. Valores mais " +#~ "altos removem paredes mais longas.\n" #~ "\n" #~ "NOTA: As superfícies inferior e superior não serão afetadas por este " #~ "valor para evitar lacunas visuais no exterior do modelo. Ajuste o 'Limiar " -#~ "de um perímetro' nas configurações avançadas abaixo para ajustar a " -#~ "sensibilidade do que é considerado uma superfície superior. 'Limiar de um " -#~ "perímetro' só é visível se esta configuração estiver acima do valor " -#~ "padrão de 0,5, ou se superfícies superiores de uma única parede estiverem " +#~ "de uma parede' nas configurações avançadas abaixo para ajustar a " +#~ "sensibilidade do que é considerado uma superfície superior. 'Limiar de uma " +#~ "parede' só é visível se esta configuração estiver acima do valor " +#~ "padrão de 0,5, ou se superfícies superiores de parede única estiverem " #~ "habilitadas." #~ msgid "Don't filter out small internal bridges (beta)" @@ -18310,13 +18460,13 @@ msgstr "" #~ "allowed when prime tower is enabled." #~ msgstr "" #~ "Diâmetros de bico diferentes e diâmetros de filamento diferentes não são " -#~ "permitidos quando a torre de limpeza está ativa." +#~ "permitidos quando a torre de preparação está ativa." #~ msgid "" #~ "Ooze prevention is currently not supported with the prime tower enabled." #~ msgstr "" #~ "A prevenção de vazamento atualmente não é suportada com a torre de " -#~ "limpeza ativa." +#~ "preparação ativa." #~ msgid "" #~ "Interlocking depth of a segmented region. Zero disables this feature." From f9e644bb2486b8e107a66e0e59ce33ee3e0c9429 Mon Sep 17 00:00:00 2001 From: klylabs <198387982+klylabs@users.noreply.github.com> Date: Wed, 26 Feb 2025 12:11:30 +0000 Subject: [PATCH 126/129] Cleanup the logic for Zink Override (#8571) Simplify logic for AppRun --- src/platform/unix/BuildLinuxImage.sh.in | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/platform/unix/BuildLinuxImage.sh.in b/src/platform/unix/BuildLinuxImage.sh.in index a7d6a76c11..77ab1431a7 100644 --- a/src/platform/unix/BuildLinuxImage.sh.in +++ b/src/platform/unix/BuildLinuxImage.sh.in @@ -47,17 +47,12 @@ if [ "\$XDG_SESSION_TYPE" = "wayland" ] && [ "\$ZINK_DISABLE_OVERRIDE" != "1" ]; if command -v glxinfo >/dev/null 2>&1; then RENDERER=\$(glxinfo | grep "OpenGL renderer string:" | sed 's/.*: //') if echo "\$RENDERER" | grep -qi "NVIDIA"; then - if [ "\$ZINK_FORCE_OVERRIDE" = "1" ]; then - APPLY_OVERRIDE=1 - else - if command -v nvidia-smi >/dev/null 2>&1; then - DRIVER_VERSION=\$(nvidia-smi --query-gpu=driver_version --format=csv,noheader | head -n1) - DRIVER_MAJOR=\$(echo "\$DRIVER_VERSION" | cut -d. -f1) - [ "\$DRIVER_MAJOR" -gt 555 ] && APPLY_OVERRIDE=1 - fi + if command -v nvidia-smi >/dev/null 2>&1; then + DRIVER_VERSION=\$(nvidia-smi --query-gpu=driver_version --format=csv,noheader | head -n1) + DRIVER_MAJOR=\$(echo "\$DRIVER_VERSION" | cut -d. -f1) + [ "\$DRIVER_MAJOR" -gt 555 ] && ZINK_FORCE_OVERRIDE=1 fi - - if [ "\$APPLY_OVERRIDE" = "1" ]; then + if [ "\$ZINK_FORCE_OVERRIDE" = "1" ]; then export __GLX_VENDOR_LIBRARY_NAME=mesa export __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json export MESA_LOADER_DRIVER_OVERRIDE=zink From e6f71774fda8445d0f1b0bba85bed8b413d48e74 Mon Sep 17 00:00:00 2001 From: VOLUMIC <31067164+VOLUMIC@users.noreply.github.com> Date: Wed, 26 Feb 2025 13:15:40 +0100 Subject: [PATCH 127/129] EXO/SH profils updates (#8566) * Add new machines * profils fixes * Update VS30ULTRA (0.4 nozzle).json * accelerations removing * Fixes * Acceleration fixes * Update .gitignore * EXO/SH profils updates * Update .gitignore --------- Co-authored-by: SoftFever --- resources/profiles/Volumic/machine/EXO42 (0.4 nozzle).json | 2 +- resources/profiles/Volumic/machine/EXO65 (0.6 nozzle).json | 2 +- resources/profiles/Volumic/machine/SH65 (0.4 nozzle).json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/profiles/Volumic/machine/EXO42 (0.4 nozzle).json b/resources/profiles/Volumic/machine/EXO42 (0.4 nozzle).json index bf9ae1a33a..4b3c5b76a0 100644 --- a/resources/profiles/Volumic/machine/EXO42 (0.4 nozzle).json +++ b/resources/profiles/Volumic/machine/EXO42 (0.4 nozzle).json @@ -24,5 +24,5 @@ "deretraction_speed": ["30"], "machine_start_gcode": "M117 Demarrage\nM106 S0\nM140 S[first_layer_bed_temperature]\nM104 T0 S[first_layer_temperature]\nG28\nG90\nM82\nG92 E0\nG1 Z5 F600\nG1 X1 Y419 F6000\nM109 T0 S[first_layer_temperature]\nM300 P350\nG92 E0\nM117 Impression", "before_layer_change_gcode": "G92 E0", - "machine_end_gcode": "M107\nM104 S0\nM140 S0\nG0 X1 Y419 F5000\nM84\nM300" + "machine_end_gcode": "G90\nG0 X1 Y419 F5000\nG0 X1 Y419 F5000\nM107\nG91\nT0\nG1 E-1\nM104 T0 S0\nG92 E0\nM140 S0\nM84\nM300" } \ No newline at end of file diff --git a/resources/profiles/Volumic/machine/EXO65 (0.6 nozzle).json b/resources/profiles/Volumic/machine/EXO65 (0.6 nozzle).json index c4cd50d7f3..0a7ce8e46e 100644 --- a/resources/profiles/Volumic/machine/EXO65 (0.6 nozzle).json +++ b/resources/profiles/Volumic/machine/EXO65 (0.6 nozzle).json @@ -24,5 +24,5 @@ "deretraction_speed": ["30"], "machine_start_gcode": "M117 Demarrage\nM106 S0\nM140 S[first_layer_bed_temperature]\nM104 T0 S[first_layer_temperature]\nG28\nG90\nM82\nG92 E0\nG1 Z5 F600\nG1 X1 Y649 F6000\nM109 T0 S[first_layer_temperature]\nM300 P350\nG92 E0\nM117 Impression", "before_layer_change_gcode": "G92 E0", - "machine_end_gcode": "M107\nM104 S0\nM140 S0\nG0 X1 Y649 F5000\nM84\nM300" + "machine_end_gcode": "G90\nG0 X1 Y419 F5000\nG0 X1 Y419 F5000\nM107\nG91\nT0\nG1 E-1\nM104 T0 S0\nG92 E0\nM140 S0\nM84\nM300" } \ No newline at end of file diff --git a/resources/profiles/Volumic/machine/SH65 (0.4 nozzle).json b/resources/profiles/Volumic/machine/SH65 (0.4 nozzle).json index f18af9f2fb..1285c59a48 100644 --- a/resources/profiles/Volumic/machine/SH65 (0.4 nozzle).json +++ b/resources/profiles/Volumic/machine/SH65 (0.4 nozzle).json @@ -24,5 +24,5 @@ "deretraction_speed": ["30"], "machine_start_gcode": "M117 Demarrage\nM106 S0\nM140 S[first_layer_bed_temperature]\nM104 T0 S[first_layer_temperature]\nG28\nG90\nM82\nG92 E0\nG1 Z5 F600\nG1 X1 Y299 F6000\nM109 T0 S[first_layer_temperature]\nM300 P350\nG92 E0\nM117 Impression", "before_layer_change_gcode": "G92 E0", - "machine_end_gcode": "M107\nM104 S0\nM140 S0\nG0 X1 Y299 F5000\nM84\nM300" + "machine_end_gcode": "G90\nG0 X1 Y419 F5000\nG0 X1 Y419 F5000\nM107\nG91\nT0\nG1 E-1\nM104 T0 S0\nG92 E0\nM140 S0\nM84\nM300" } \ No newline at end of file From 99b6033a1bcb2b84cb3ad34f9ef1058eeb04ee06 Mon Sep 17 00:00:00 2001 From: Aleksander Alekseev Date: Wed, 26 Feb 2025 15:16:45 +0300 Subject: [PATCH 128/129] Correct Flying Bear S1 / Ghost 6 extruder clearance radius (#8560) --- .../FlyingBear/machine/FlyingBear Ghost 6 0.4 nozzle.json | 4 ++-- .../FlyingBear/machine/S1/FlyingBear S1 0.4 nozzle.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/profiles/FlyingBear/machine/FlyingBear Ghost 6 0.4 nozzle.json b/resources/profiles/FlyingBear/machine/FlyingBear Ghost 6 0.4 nozzle.json index acf5abe257..cfe5ed26b6 100644 --- a/resources/profiles/FlyingBear/machine/FlyingBear Ghost 6 0.4 nozzle.json +++ b/resources/profiles/FlyingBear/machine/FlyingBear Ghost 6 0.4 nozzle.json @@ -110,7 +110,7 @@ ], "extruder_clearance_height_to_lid": "80", "extruder_clearance_height_to_rod": "64", - "extruder_clearance_radius": "40", + "extruder_clearance_radius": "55", "z_hop": [ "0.2" ], @@ -131,4 +131,4 @@ "100x100", "320x320" ] -} \ No newline at end of file +} diff --git a/resources/profiles/FlyingBear/machine/S1/FlyingBear S1 0.4 nozzle.json b/resources/profiles/FlyingBear/machine/S1/FlyingBear S1 0.4 nozzle.json index ffc1a0bbe7..02d20e37f1 100644 --- a/resources/profiles/FlyingBear/machine/S1/FlyingBear S1 0.4 nozzle.json +++ b/resources/profiles/FlyingBear/machine/S1/FlyingBear S1 0.4 nozzle.json @@ -29,7 +29,7 @@ "extra_loading_move": "-2", "extruder_clearance_height_to_lid": "69", "extruder_clearance_height_to_rod": "69", - "extruder_clearance_radius": "49", + "extruder_clearance_radius": "55", "extruder_colour": [ "#FCE94F" ], From 51916ff058abdf6a08ce801321491ffc2269bd41 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Wed, 26 Feb 2025 23:07:23 +0800 Subject: [PATCH 129/129] Avoid using `auto` as type of Eigen expressions. (#8577) According to https://eigen.tuxfamily.org/dox/TopicPitfalls.html one should just avoid using `auto` as the type of an Eigen expression. This PR fixes most of them I could found in the project. There might be cases that I missed, and I might update those later if I noticed. This should prevent issues like #7741 and hopefully fix some mysterious crashes happened inside Eigen calls. --- src/libslic3r/Algorithm/LineSplit.cpp | 4 ++-- src/libslic3r/Arachne/utils/ExtrusionLine.cpp | 2 +- src/libslic3r/CutSurface.cpp | 2 +- src/libslic3r/Emboss.cpp | 2 +- src/libslic3r/Fill/FillAdaptive.cpp | 8 ++++---- src/libslic3r/GCode/ExtrusionProcessor.hpp | 4 ++-- src/libslic3r/Geometry.cpp | 10 +++++----- src/libslic3r/Line.cpp | 2 +- src/libslic3r/Measure.cpp | 6 +++--- src/libslic3r/Model.cpp | 8 ++++---- src/libslic3r/Orient.cpp | 14 +++++++------- src/libslic3r/Point.cpp | 2 +- src/libslic3r/Support/TreeSupport.cpp | 4 ++-- src/libslic3r/Support/TreeSupport3D.cpp | 6 +++--- src/slic3r/GUI/2DBed.cpp | 4 ++-- src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp | 6 +++--- src/slic3r/GUI/SurfaceDrag.cpp | 4 ++-- src/slic3r/Utils/RaycastManager.cpp | 2 +- 18 files changed, 45 insertions(+), 45 deletions(-) diff --git a/src/libslic3r/Algorithm/LineSplit.cpp b/src/libslic3r/Algorithm/LineSplit.cpp index f63033c026..53ef00e0a5 100644 --- a/src/libslic3r/Algorithm/LineSplit.cpp +++ b/src/libslic3r/Algorithm/LineSplit.cpp @@ -48,8 +48,8 @@ using SplitNode = std::vector; static bool point_on_line(const Point& p, const Line& l) { // Check collinear - const auto d1 = l.b - l.a; - const auto d2 = p - l.a; + const Vec2crd d1 = l.b - l.a; + const Vec2crd d2 = p - l.a; if (d1.x() * d2.y() != d1.y() * d2.x()) { return false; } diff --git a/src/libslic3r/Arachne/utils/ExtrusionLine.cpp b/src/libslic3r/Arachne/utils/ExtrusionLine.cpp index 0ee40b2b42..1f8ed702c2 100644 --- a/src/libslic3r/Arachne/utils/ExtrusionLine.cpp +++ b/src/libslic3r/Arachne/utils/ExtrusionLine.cpp @@ -156,7 +156,7 @@ void ExtrusionLine::simplify(const int64_t smallest_line_segment_squared, const Point intersection_point; bool has_intersection = Line(previous_previous.p, previous.p).intersection_infinite(Line(current.p, next.p), &intersection_point); const auto dist_greater = [](const Point& p1, const Point& p2, const int64_t threshold) { - const auto vec = (p1 - p2).cwiseAbs().cast(); + const auto vec = (p1 - p2).cwiseAbs().cast().eval(); if(vec.x() > threshold || vec.y() > threshold) { // If this condition is true, the distance is definitely greater than the threshold. // We don't need to calculate the squared norm at all, which avoid potential arithmetic overflow. diff --git a/src/libslic3r/CutSurface.cpp b/src/libslic3r/CutSurface.cpp index 619e5e9f72..01a5a8383a 100644 --- a/src/libslic3r/CutSurface.cpp +++ b/src/libslic3r/CutSurface.cpp @@ -1887,7 +1887,7 @@ uint32_t priv::get_closest_point_index(const SearchData &sd, const Polygon &poly = (id.polygon_index == 0) ? shape.contour : shape.holes[id.polygon_index - 1]; - auto p_ = p.cast(); + Vec2crd p_ = p.cast(); return p_ == poly[id.point_index]; }; diff --git a/src/libslic3r/Emboss.cpp b/src/libslic3r/Emboss.cpp index 82015c4827..ef144b48d3 100644 --- a/src/libslic3r/Emboss.cpp +++ b/src/libslic3r/Emboss.cpp @@ -1672,7 +1672,7 @@ Vec3d Emboss::suggest_up(const Vec3d normal, double up_limit) std::optional Emboss::calc_up(const Transform3d &tr, double up_limit) { - auto tr_linear = tr.linear(); + auto tr_linear = tr.linear().eval(); // z base of transformation ( tr * UnitZ ) Vec3d normal = tr_linear.col(2); // scaled matrix has base with different size diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index bc1b24a81d..8f28697eb8 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -1447,7 +1447,7 @@ static std::vector make_cubes_properties(double max_cube_edge_le static inline bool is_overhang_triangle(const Vec3d &a, const Vec3d &b, const Vec3d &c, const Vec3d &up) { // Calculate triangle normal. - auto n = (b - a).cross(c - b); + Vec3d n = (b - a).cross(c - b); return n.dot(up) > 0.707 * n.norm(); } @@ -1493,9 +1493,9 @@ OctreePtr build_octree( }; auto up_vector = support_overhangs_only ? Vec3d(transform_to_octree() * Vec3d(0., 0., 1.)) : Vec3d(); for (auto &tri : triangle_mesh.indices) { - auto a = triangle_mesh.vertices[tri[0]].cast(); - auto b = triangle_mesh.vertices[tri[1]].cast(); - auto c = triangle_mesh.vertices[tri[2]].cast(); + Vec3d a = triangle_mesh.vertices[tri[0]].cast(); + Vec3d b = triangle_mesh.vertices[tri[1]].cast(); + Vec3d c = triangle_mesh.vertices[tri[2]].cast(); if (! support_overhangs_only || is_overhang_triangle(a, b, c, up_vector)) process_triangle(a, b, c); } diff --git a/src/libslic3r/GCode/ExtrusionProcessor.hpp b/src/libslic3r/GCode/ExtrusionProcessor.hpp index a8fd775e2a..dd0065247d 100644 --- a/src/libslic3r/GCode/ExtrusionProcessor.hpp +++ b/src/libslic3r/GCode/ExtrusionProcessor.hpp @@ -144,7 +144,7 @@ std::vector estimate_points_properties(const POINTS double t1 = std::max(a0, a1); if (t0 < 1.0) { - auto p0 = curr.position + t0 * (next.position - curr.position); + Vec2d p0 = curr.position + t0 * (next.position - curr.position); auto [p0_dist, p0_near_l, p0_x] = unscaled_prev_layer.template distance_from_lines_extra(p0.cast()); ExtendedPoint new_p{}; @@ -161,7 +161,7 @@ std::vector estimate_points_properties(const POINTS } } if (t1 > 0.0) { - auto p1 = curr.position + t1 * (next.position - curr.position); + Vec2d p1 = curr.position + t1 * (next.position - curr.position); auto [p1_dist, p1_near_l, p1_x] = unscaled_prev_layer.template distance_from_lines_extra(p1.cast()); ExtendedPoint new_p{}; diff --git a/src/libslic3r/Geometry.cpp b/src/libslic3r/Geometry.cpp index 7c89a5c00a..90e65f5103 100644 --- a/src/libslic3r/Geometry.cpp +++ b/src/libslic3r/Geometry.cpp @@ -693,10 +693,10 @@ Transformation Transformation::volume_to_bed_transformation(const Transformation pts(7, 0) = bbox.max.x(); pts(7, 1) = bbox.max.y(); pts(7, 2) = bbox.max.z(); // Corners of the bounding box transformed into the modifier mesh coordinate space, with inverse rotation applied to the modifier. - auto qs = pts * + auto qs = (pts * (instance_rotation_trafo * Eigen::Scaling(instance_transformation.get_scaling_factor().cwiseProduct(instance_transformation.get_mirror())) * - volume_rotation_trafo).inverse().transpose(); + volume_rotation_trafo).inverse().transpose()).eval(); // Fill in scaling based on least squares fitting of the bounding box corners. Vec3d scale; for (int i = 0; i < 3; ++i) @@ -767,7 +767,7 @@ double rotation_diff_z(const Vec3d &rot_xyz_from, const Vec3d &rot_xyz_to) TransformationSVD::TransformationSVD(const Transform3d& trafo) { - const auto &m0 = trafo.matrix().block<3, 3>(0, 0); + const Matrix3d m0 = trafo.matrix().block<3, 3>(0, 0); mirror = m0.determinant() < 0.0; Matrix3d m; @@ -832,8 +832,8 @@ TransformationSVD::TransformationSVD(const Transform3d& trafo) qua_world.normalize(); Transform3d cur_matrix_world; temp_world.set_matrix(cur_matrix_world.fromPositionOrientationScale(pt, qua_world, Vec3d(1., 1., 1.))); - auto temp_xyz = temp_world.get_matrix().inverse() * xyz; - auto new_pos = temp_world.get_matrix() * (rotateMat4.get_matrix() * temp_xyz); + Vec3d temp_xyz = temp_world.get_matrix().inverse() * xyz; + Vec3d new_pos = temp_world.get_matrix() * (rotateMat4.get_matrix() * temp_xyz); curMat.set_offset(new_pos); return curMat; diff --git a/src/libslic3r/Line.cpp b/src/libslic3r/Line.cpp index 7e75d56322..20591f0377 100644 --- a/src/libslic3r/Line.cpp +++ b/src/libslic3r/Line.cpp @@ -114,7 +114,7 @@ void Line::extend(double offset) Vec3d Linef3::intersect_plane(double z) const { - auto v = (this->b - this->a).cast(); + Vec3d v = (this->b - this->a).cast(); double t = (z - this->a(2)) / v(2); return Vec3d(this->a(0) + v(0) * t, this->a(1) + v(1) * t, z); } diff --git a/src/libslic3r/Measure.cpp b/src/libslic3r/Measure.cpp index 43e20a0373..ad34752685 100644 --- a/src/libslic3r/Measure.cpp +++ b/src/libslic3r/Measure.cpp @@ -15,8 +15,8 @@ namespace Slic3r { namespace Measure { bool get_point_projection_to_plane(const Vec3d &pt, const Vec3d &plane_origin, const Vec3d &plane_normal, Vec3d &intersection_pt) { - auto normal = plane_normal.normalized(); - auto BA = plane_origin - pt; + Vec3d normal = plane_normal.normalized(); + Vec3d BA = plane_origin - pt; auto length = BA.dot(normal); intersection_pt = pt + length * normal; return true; @@ -29,7 +29,7 @@ Vec3d get_one_point_in_plane(const Vec3d &plane_origin, const Vec3d &plane_norma if (abs(plane_normal.dot(dir)) > 1 - eps) { dir = Vec3d(0, 1, 0); } - auto new_pt = plane_origin + dir; + Vec3d new_pt = plane_origin + dir; Vec3d retult; get_point_projection_to_plane(new_pt, plane_origin, plane_normal, retult); return retult; diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index d7b23b6b7e..a047d1db48 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -2991,11 +2991,11 @@ bool Model::obj_import_vertex_color_deal(const std::vector &verte auto v0 = volume->mesh().its.vertices[face[0]]; auto v1 = volume->mesh().its.vertices[face[1]]; auto v2 = volume->mesh().its.vertices[face[2]]; - auto dir_0_1 = (v1 - v0).normalized(); - auto dir_0_2 = (v2 - v0).normalized(); + auto dir_0_1 = (v1 - v0).normalized().eval(); + auto dir_0_2 = (v2 - v0).normalized().eval(); float sita0 = acos(dir_0_1.dot(dir_0_2)); - auto dir_1_0 = -dir_0_1; - auto dir_1_2 = (v2 - v1).normalized(); + auto dir_1_0 = (-dir_0_1).eval(); + auto dir_1_2 = (v2 - v1).normalized().eval(); float sita1 = acos(dir_1_0.dot(dir_1_2)); float sita2 = PI - sita0 - sita1; std::array sitas = {sita0, sita1, sita2}; diff --git a/src/libslic3r/Orient.cpp b/src/libslic3r/Orient.cpp index ce448fc7e6..c09ccf1fae 100644 --- a/src/libslic3r/Orient.cpp +++ b/src/libslic3r/Orient.cpp @@ -132,7 +132,7 @@ public: BOOST_LOG_TRIVIAL(info) << CostItems::field_names(); std::cout << CostItems::field_names() << std::endl; for (int i = 0; i < orientations.size();i++) { - auto orientation = -orientations[i]; + Vec3f orientation = -orientations[i]; project_vertices(orientation); @@ -382,9 +382,9 @@ public: float total_min_z = z_projected.minCoeff(); // filter bottom area - auto bottom_condition = z_max.array() < total_min_z + this->params.FIRST_LAY_H - EPSILON; - auto bottom_condition_hull = z_max_hull.array() < total_min_z + this->params.FIRST_LAY_H - EPSILON; - auto bottom_condition_2nd = z_max.array() < total_min_z + this->params.FIRST_LAY_H/2.f - EPSILON; + auto bottom_condition = (z_max.array() < total_min_z + this->params.FIRST_LAY_H - EPSILON).eval(); + auto bottom_condition_hull = (z_max_hull.array() < total_min_z + this->params.FIRST_LAY_H - EPSILON).eval(); + auto bottom_condition_2nd = (z_max.array() < total_min_z + this->params.FIRST_LAY_H / 2.f - EPSILON).eval(); //The first layer is sliced on half of the first layer height. //The bottom area is measured by accumulating first layer area with the facets area below first layer height. //By combining these two factors, we can avoid the wrong orientation of large planar faces while not influence the @@ -397,8 +397,8 @@ public: { normal_projection(i) = normals.row(i).dot(orientation); } - auto areas_appearance = areas.cwiseProduct((is_apperance * params.APPERANCE_FACE_SUPP + Eigen::VectorXf::Ones(is_apperance.rows(), is_apperance.cols()))); - auto overhang_areas = ((normal_projection.array() < params.ASCENT) * (!bottom_condition_2nd)).select(areas_appearance, 0); + auto areas_appearance = areas.cwiseProduct((is_apperance * params.APPERANCE_FACE_SUPP + Eigen::VectorXf::Ones(is_apperance.rows(), is_apperance.cols()))).eval(); + auto overhang_areas = ((normal_projection.array() < params.ASCENT) * (!bottom_condition_2nd)).select(areas_appearance, 0).eval(); Eigen::MatrixXf inner = normal_projection.array() - params.ASCENT; inner = inner.cwiseMin(0).cwiseAbs(); if (min_volume) @@ -437,7 +437,7 @@ public: costs.bottom_hull = (bottom_condition_hull).select(areas_hull, 0).sum(); // low angle faces - auto normal_projection_abs = normal_projection.cwiseAbs(); + auto normal_projection_abs = normal_projection.cwiseAbs().eval(); Eigen::MatrixXf laf_areas = ((normal_projection_abs.array() < params.LAF_MAX) * (normal_projection_abs.array() > params.LAF_MIN) * (z_max.array() > total_min_z + params.FIRST_LAY_H)).select(areas, 0); costs.area_laf = laf_areas.sum(); diff --git a/src/libslic3r/Point.cpp b/src/libslic3r/Point.cpp index e06b3d5ca6..80c4d9815a 100644 --- a/src/libslic3r/Point.cpp +++ b/src/libslic3r/Point.cpp @@ -50,7 +50,7 @@ void Point::rotate(double angle, const Point ¢er) Vec2d cur = this->cast(); double s = ::sin(angle); double c = ::cos(angle); - auto d = cur - center.cast(); + Vec2d d = cur - center.cast(); this->x() = fast_round_up(center.x() + c * d.x() - s * d.y()); this->y() = fast_round_up(center.y() + s * d.x() + c * d.y()); } diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 139ae42597..9404d56e2d 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -3296,8 +3296,8 @@ void TreeSupport::generate_contact_points() int nSize = points.size(); for (int i = 0; i < nSize; i++) { auto pt = points[i]; - auto v1 = (pt - points[(i - 1 + nSize) % nSize]).cast().normalized(); - auto v2 = (pt - points[(i + 1) % nSize]).cast().normalized(); + Vec2d v1 = (pt - points[(i - 1 + nSize) % nSize]).cast().normalized(); + Vec2d v2 = (pt - points[(i + 1) % nSize]).cast().normalized(); if (v1.dot(v2) > -0.7) { // angle smaller than 135 degrees SupportNode *contact_node = insert_point(pt, overhang, radius, false, add_interface); if (contact_node) { diff --git a/src/libslic3r/Support/TreeSupport3D.cpp b/src/libslic3r/Support/TreeSupport3D.cpp index e1971e9b4c..4301b0ac0c 100644 --- a/src/libslic3r/Support/TreeSupport3D.cpp +++ b/src/libslic3r/Support/TreeSupport3D.cpp @@ -1480,8 +1480,8 @@ static unsigned int move_inside(const Polygons &polygons, Point &from, int dista const Point& a = p1; const Point& b = p2; const Point& p = from; - auto ab = (b - a).cast(); - auto ap = (p - a).cast(); + Vec2i64 ab = (b - a).cast(); + Vec2i64 ap = (p - a).cast(); int64_t ab_length2 = ab.squaredNorm(); if (ab_length2 <= 0) { //A = B, i.e. the input polygon had two adjacent points on top of each other. p1 = p2; //Skip only one of the points. @@ -1506,7 +1506,7 @@ static unsigned int move_inside(const Polygons &polygons, Point &from, int dista double lab = abd.norm(); double lp1p2 = p1p2.norm(); // inward direction irrespective of sign of [distance] - auto inward_dir = perp(abd * (scaled(10.0) / lab) + p1p2 * (scaled(10.0) / lp1p2)); + Vec2d inward_dir = perp(abd * (scaled(10.0) / lab) + p1p2 * (scaled(10.0) / lp1p2)); // MM2INT(10.0) to retain precision for the eventual normalization ret = x + (inward_dir * (distance / inward_dir.norm())).cast(); is_already_on_correct_side_of_boundary = inward_dir.dot((p - x).cast()) * distance >= 0; diff --git a/src/slic3r/GUI/2DBed.cpp b/src/slic3r/GUI/2DBed.cpp index e0feac0605..2921e064cf 100644 --- a/src/slic3r/GUI/2DBed.cpp +++ b/src/slic3r/GUI/2DBed.cpp @@ -121,7 +121,7 @@ void Bed_2D::repaint(const std::vector& shape) auto x_end = Vec2d(origin_px(0) + axes_len, origin_px(1)); dc.DrawLine(wxPoint(origin_px(0), origin_px(1)), wxPoint(x_end(0), x_end(1))); for (auto angle : { -arrow_angle, arrow_angle }) { - auto end = Eigen::Translation2d(x_end) * Eigen::Rotation2Dd(angle) * Eigen::Translation2d(- x_end) * Eigen::Vector2d(x_end(0) - arrow_len, x_end(1)); + Vec2d end = Eigen::Translation2d(x_end) * Eigen::Rotation2Dd(angle) * Eigen::Translation2d(- x_end) * Eigen::Vector2d(x_end(0) - arrow_len, x_end(1)); dc.DrawLine(wxPoint(x_end(0), x_end(1)), wxPoint(end(0), end(1))); } @@ -129,7 +129,7 @@ void Bed_2D::repaint(const std::vector& shape) auto y_end = Vec2d(origin_px(0), origin_px(1) - axes_len); dc.DrawLine(wxPoint(origin_px(0), origin_px(1)), wxPoint(y_end(0), y_end(1))); for (auto angle : { -arrow_angle, arrow_angle }) { - auto end = Eigen::Translation2d(y_end) * Eigen::Rotation2Dd(angle) * Eigen::Translation2d(- y_end) * Eigen::Vector2d(y_end(0), y_end(1) + arrow_len); + Vec2d end = Eigen::Translation2d(y_end) * Eigen::Rotation2Dd(angle) * Eigen::Translation2d(- y_end) * Eigen::Vector2d(y_end(0), y_end(1) + arrow_len); dc.DrawLine(wxPoint(y_end(0), y_end(1)), wxPoint(end(0), end(1))); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp index e513fdb03f..68fc3deeef 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp @@ -2470,11 +2470,11 @@ void GLGizmoMeasure::set_distance(bool same_model_object, const Vec3d &displacem selection->set_mode(same_model_object ? Selection::Volume : Selection::Instance); m_pending_scale ++; if (same_model_object == false) { - auto object_displacement = v->get_instance_transformation().get_matrix_no_offset().inverse() * displacement; + Vec3d object_displacement = v->get_instance_transformation().get_matrix_no_offset().inverse() * displacement; v->set_instance_transformation(v->get_instance_transformation().get_matrix() * Geometry::translation_transform(object_displacement)); } else { Geometry::Transformation tran(v->world_matrix()); - auto local_displacement = tran.get_matrix_no_offset().inverse() * displacement; + Vec3d local_displacement = tran.get_matrix_no_offset().inverse() * displacement; v->set_volume_transformation(v->get_volume_transformation().get_matrix() * Geometry::translation_transform(local_displacement)); } wxGetApp().plater()->canvas3D()->do_move(""); @@ -2647,7 +2647,7 @@ void GLGizmoMeasure::set_parallel_distance(bool same_model_object, float dist) const auto [idx2, normal2, pt2] = m_selected_features.second.feature->get_plane(); Vec3d proj_pt2; Measure::get_point_projection_to_plane(pt2, pt1, normal1, proj_pt2); - auto new_pt2 = proj_pt2 + normal1 * dist; + Vec3d new_pt2 = proj_pt2 + normal1 * dist; Vec3d displacement = new_pt2 - pt2; diff --git a/src/slic3r/GUI/SurfaceDrag.cpp b/src/slic3r/GUI/SurfaceDrag.cpp index 6547c8d8c5..025b1d71c6 100644 --- a/src/slic3r/GUI/SurfaceDrag.cpp +++ b/src/slic3r/GUI/SurfaceDrag.cpp @@ -596,7 +596,7 @@ Transform3d get_volume_transformation( std::optional current_angle, const std::optional &up_limit) { - auto world_linear = world.linear(); + auto world_linear = world.linear().eval(); // Calculate offset: transformation to wanted position { // Reset skew of the text Z axis: @@ -609,7 +609,7 @@ Transform3d get_volume_transformation( Vec3d text_z_world = world_linear.col(2); // world_linear * Vec3d::UnitZ() auto z_rotation = Eigen::Quaternion::FromTwoVectors(text_z_world, world_dir); Transform3d world_new = z_rotation * world; - auto world_new_linear = world_new.linear(); + auto world_new_linear = world_new.linear().eval(); // Fix direction of up vector to zero initial rotation if(up_limit.has_value()){ diff --git a/src/slic3r/Utils/RaycastManager.cpp b/src/slic3r/Utils/RaycastManager.cpp index e3200a1317..c51a19ebd9 100644 --- a/src/slic3r/Utils/RaycastManager.cpp +++ b/src/slic3r/Utils/RaycastManager.cpp @@ -149,7 +149,7 @@ std::optional RaycastManager::first_hit(const Vec3d& point, // NOTE: Anisotropic transformation of normal is not perpendiculat to triangle const Vec3i32 tri = hit_mesh->indices(hit_face); std::array pts; - auto tr = hit_tramsformation->linear(); + auto tr = hit_tramsformation->linear().eval(); for (int i = 0; i < 3; ++i) pts[i] = tr * hit_mesh->vertices(tri[i]).cast(); Vec3d normal_world = (pts[1] - pts[0]).cross(pts[2] - pts[1]);

    yBDkM9Y2Y273d-vcz@|fiZLe{ix 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 >1&ZU5S#mcgXv`E;CQ^{Bc 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 ekJ$gNAW7z$aY(i|!!M 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 literal 0 HcmV?d00001 diff --git a/resources/profiles/Lulzbot/machine/Lulzbot Taz 6 0.5 nozzle.json b/resources/profiles/Lulzbot/machine/Lulzbot Taz 6 0.5 nozzle.json new file mode 100644 index 0000000000..f4bb1a75f7 --- /dev/null +++ b/resources/profiles/Lulzbot/machine/Lulzbot Taz 6 0.5 nozzle.json @@ -0,0 +1,112 @@ +{ + "type": "machine", + "setting_id": "LZ006", + "name": "Lulzbot Taz 6 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "Lulzbot Taz 6", + "default_print_profile": "0.25mm Standard @Lulzbot Taz 6", + "nozzle_diameter": [ + "0.5" + ], + "printable_area": [ + "0x0", + "280x0", + "280x280", + "0x280" + ], + "printable_height": "250", + "nozzle_type": "undefine", + "auxiliary_fan": "0", + "emit_machine_limits_to_gcode": "0", + "machine_max_acceleration_extruding": [ + "500", + "500" + ], + "machine_max_acceleration_retracting": [ + "1000", + "1000" + ], + "machine_max_acceleration_travel": [ + "1250", + "1250" + ], + "machine_max_acceleration_x": [ + "500", + "500" + ], + "machine_max_acceleration_y": [ + "500", + "500" + ], + "machine_max_acceleration_z": [ + "100", + "100" + ], + "machine_max_speed_e": [ + "60", + "60" + ], + "machine_max_speed_x": [ + "500", + "500" + ], + "machine_max_speed_y": [ + "500", + "500" + ], + "machine_max_speed_z": [ + "10", + "10" + ], + "machine_max_jerk_e": [ + "5", + "5" + ], + "machine_max_jerk_x": [ + "8", + "8" + ], + "machine_max_jerk_y": [ + "8", + "8" + ], + "machine_max_jerk_z": [ + "0.4", + "0.4" + ], + "max_layer_height": [ + "0.4" + ], + "min_layer_height": [ + "0.08" + ], + "printer_settings_id": "Lulzbot", + "retraction_minimum_travel": [ + "2" + ], + "retract_before_wipe": [ + "70%" + ], + "retraction_length": [ + "5" + ], + "retract_length_toolchange": [ + "1" + ], + "deretraction_speed": [ + "40" + ], + "single_extruder_multi_material": "1", + "default_filament_profile": [ + "Lulzbot 2.85mm PLA" + ], + "machine_start_gcode": ";This G-Code has been translated from LulzBot's CuraLE (v4.13.10) startup GCODE for Taz 6 Single Extruder by Wrathernaut\nM73 P0; clear GLCD progress bar\nM75; start GLCD timer\nM107; disable fans\nM420 S; disable leveling matrix\nG90; absolute positioning\nM82; set extruder to absolute mode\nG92 E0; set extruder position to 0\nM140 S{bed_temperature_initial_layer[0]}; start bed heating up (w)\nG28 XY; home X and Y\nG1 X-19 Y258 F1000; move to safe homing position\nM109 {if filament_type[0] == \"PLA\"}R180\n{elsif filament_type[0] == \"ABS\"}R190\n{elsif filament_type[0] == \"ABS-GF\"}R190\n{elsif filament_type[0] == \"ASA\"}R190\n{elsif filament_type[0] == \"ASA-Aero\"}R190\n{elsif filament_type[0] == \"BVOH\"}R170\n{elsif filament_type[0] == \"EVA\"}R170\n{elsif filament_type[0] == \"PA\"}R220\n{elsif filament_type[0] == \"PA-CF\"}R220\n{elsif filament_type[0] == \"PA-GF\"}R220\n{elsif filament_type[0] == \"PA6-CF\"}R220\n{elsif filament_type[0] == \"PA11-CF\"}R220\n{elsif filament_type[0] == \"ASA-Aero\"}R170\n{elsif filament_type[0] == \"PC\"}R220\n{elsif filament_type[0] == \"PC-CF\"}R220\n{elsif filament_type[0] == \"PCTG\"}R180\n{elsif filament_type[0] == \"PE\"}R190\n{elsif filament_type[0] == \"PE-CF\"}R190\n{elsif filament_type[0] == \"PET-CF\"}R190\n{elsif filament_type[0] == \"PETG\"}R190\n{elsif filament_type[0] == \"PETG-CF10\"}R190\n{elsif filament_type[0] == \"PHA\"}R180\n{elsif filament_type[0] == \"PLA-AERO\"}R180\n{elsif filament_type[0] == \"PLA-CF\"}R180\n{elsif filament_type[0] == \"PP\"}R180\n{elsif filament_type[0] == \"PP-CF\"}R180\n{elsif filament_type[0] == \"PP-GF\"}R180\n{elsif filament_type[0] == \"PPS\"}R180\n{elsif filament_type[0] == \"PPS-CF\"}R180\n{elsif filament_type[0] == \"PVA\"}R180\n{elsif filament_type[0] == \"PVB\"}R180\n{elsif filament_type[0] == \"SBS\"}R180\n{elsif filament_type[0] == \"TPU\"}R180\n{elsif filament_type[0] == \"FLEX\"}R180\n{elsif filament_type[0] == \"PET\"}R170\n{elsif filament_type[0] == \"HIPS\"}R170\n{elsif filament_type[0] == \"NYLON\"}R220\n{else}R190; unknown filament type soften temp before homing Z{endif}\nG28 Z; home Z\nG1 E-15 F100; retract filament\nM109 {if filament_type[0] == \"PLA\"}R180\n{elsif filament_type[0] == \"ABS\"}R190\n{elsif filament_type[0] == \"ABS-GF\"}R190\n{elsif filament_type[0] == \"ASA\"}R190\n{elsif filament_type[0] == \"ASA-Aero\"}R190\n{elsif filament_type[0] == \"BVOH\"}R170\n{elsif filament_type[0] == \"EVA\"}R170\n{elsif filament_type[0] == \"PA\"}R220\n{elsif filament_type[0] == \"PA-CF\"}R220\n{elsif filament_type[0] == \"PA-GF\"}R220\n{elsif filament_type[0] == \"PA6-CF\"}R220\n{elsif filament_type[0] == \"PA11-CF\"}R220\n{elsif filament_type[0] == \"ASA-Aero\"}R170\n{elsif filament_type[0] == \"PC\"}R220\n{elsif filament_type[0] == \"PC-CF\"}R220\n{elsif filament_type[0] == \"PCTG\"}R190\n{elsif filament_type[0] == \"PE\"}R190\n{elsif filament_type[0] == \"PE-CF\"}R190\n{elsif filament_type[0] == \"PET-CF\"}R190\n{elsif filament_type[0] == \"PETG\"}R190\n{elsif filament_type[0] == \"PETG-CF10\"}R190\n{elsif filament_type[0] == \"PHA\"}R180\n{elsif filament_type[0] == \"PLA-AERO\"}R180\n{elsif filament_type[0] == \"PLA-CF\"}R180\n{elsif filament_type[0] == \"PP\"}R180\n{elsif filament_type[0] == \"PP-CF\"}R180\n{elsif filament_type[0] == \"PP-GF\"}R180\n{elsif filament_type[0] == \"PPS\"}R180\n{elsif filament_type[0] == \"PPS-CF\"}R180\n{elsif filament_type[0] == \"PVA\"}R180\n{elsif filament_type[0] == \"PVB\"}R180\n{elsif filament_type[0] == \"SBS\"}R180\n{elsif filament_type[0] == \"TPU\"}R180\n{elsif filament_type[0] == \"FLEX\"}R180\n{elsif filament_type[0] == \"PET\"}R170\n{elsif filament_type[0] == \"HIPS\"}R180\n{elsif filament_type[0] == \"NYLON\"}R220\n{else}R170; unknown filament type wipe temp{endif}\n;M206 X0 Y0 Z0; uncomment to adjust wipe position (+X ~ nozzle moves left)(+Y ~ nozzle moves forward)(+Z ~ nozzle moves down)\nG12; wiping sequence\nM206 X0 Y0 Z0; reseting stock nozzle position ### CAUTION: changing this line can affect print quality ###\nG1 Z10 F5000; raise nozzle after wipe\nM109 {if filament_type[0] == \"PLA\"}R160\n{elsif filament_type[0] == \"ABS\"}R170\n{elsif filament_type[0] == \"ABS-GF\"}R170\n{elsif filament_type[0] == \"ASA\"}R170\n{elsif filament_type[0] == \"ASA-Aero\"}R170\n{elsif filament_type[0] == \"BVOH\"}R170\n{elsif filament_type[0] == \"EVA\"}R170\n{elsif filament_type[0] == \"PA\"}R200\n{elsif filament_type[0] == \"PA-CF\"}R200\n{elsif filament_type[0] == \"PA-GF\"}R170\n{elsif filament_type[0] == \"PA6-CF\"}R170\n{elsif filament_type[0] == \"PA11-CF\"}R200\n{elsif filament_type[0] == \"ASA-Aero\"}R170\n{elsif filament_type[0] == \"PC\"}R200\n{elsif filament_type[0] == \"PC-CF\"}R200\n{elsif filament_type[0] == \"PCTG\"}R180\n{elsif filament_type[0] == \"PE\"}R180\n{elsif filament_type[0] == \"PE-CF\"}R180\n{elsif filament_type[0] == \"PET-CF\"}R170\n{elsif filament_type[0] == \"PETG\"}R170\n{elsif filament_type[0] == \"PETG-CF10\"}R170\n{elsif filament_type[0] == \"PHA\"}R180\n{elsif filament_type[0] == \"PLA-AERO\"}R180\n{elsif filament_type[0] == \"PLA-CF\"}R180\n{elsif filament_type[0] == \"PP\"}R180\n{elsif filament_type[0] == \"PP-CF\"}R180\n{elsif filament_type[0] == \"PP-GF\"}R180\n{elsif filament_type[0] == \"PPS\"}R180\n{elsif filament_type[0] == \"PPS-CF\"}R180\n{elsif filament_type[0] == \"PVA\"}R160\n{elsif filament_type[0] == \"PVB\"}R160\n{elsif filament_type[0] == \"SBS\"}R180\n{elsif filament_type[0] == \"TPU\"}R160\n{elsif filament_type[0] == \"FLEX\"}R160\n{elsif filament_type[0] == \"PET\"}R170\n{elsif filament_type[0] == \"HIPS\"}R160\n{elsif filament_type[0] == \"NYLON\"}R200\n{else}R170; unknown filament type probe temp{endif}\nG1 X-10 Y293 F4000; move above first probe point\nM204 S100; set probing acceleration\nG29; start auto-leveling sequence\nM420 S1; enable leveling matrix\nM204 S500; restore standard acceleration\nG1 X0 Y0 Z15 F5000; move up off last probe point\nG4 S1; pause\nM400; wait for moves to finish\nM117 Heating...; progress indicator message on LCD\nM109 R{nozzle_temperature_initial_layer[0]}; wait for extruder to reach printing temp (w)\nM190 R{bed_temperature_initial_layer[0]}; wait for bed to reach printing temp\nG1 Z2 E0 F75; prime tiny bit of filament into the nozzle\nM117 TAZ 6 Printing...; progress indicator message on LCD\n;Start G-Code End", + "machine_end_gcode": ";End G-Code Begin\nM400; wait for moves to finish\nM140 S0; start bed cooling\nM104 S0; disable hotend\nM107; disable fans\nG91; relative positioning\nG1 E-1 F300; filament retraction to release pressure\nG1 Z20 E-5 X-20 Y-20 F3000; lift up and retract even more filament\nG1 E6; re-prime extruder\nG90; absolute positioning\nG1 Y280 F3000; present finished print\nM77; stop GLCD timer\nM84; disable steppers\nG90; absolute positioning\nM117 Print Complete.; print complete message\n;End G-Code End", + "before_layer_change_gcode": "G92 E0; reset relative extrusion", + "layer_change_gcode": "; LAYER:{layer_num}\nM117 Layer: {layer_num +1} / [total_layer_count]", + "change_filament_gcode": "M400\nM600 B10 X115 Y-10 Z10\nM190 S{bed_temperature[0]}\nM109 S{temperature[0]}", + "machine_pause_gcode": "M600 B10", + "scan_first_layer": "0" +} diff --git a/resources/profiles/Lulzbot/machine/Lulzbot Taz 6.json b/resources/profiles/Lulzbot/machine/Lulzbot Taz 6.json new file mode 100644 index 0000000000..a4e68708c5 --- /dev/null +++ b/resources/profiles/Lulzbot/machine/Lulzbot Taz 6.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "Lulzbot Taz 6", + "model_id": "Lulzbot-Taz-6", + "nozzle_diameter": "0.5", + "machine_tech": "FFF", + "family": "Lulzbot", + "bed_model": "taz_6_build_plate.stl", + "bed_texture": "lulzbot_logo.png", + "hotend_model": "", + "default_materials": "Lulzbot 2.85mm ABS;Lulzbot 2.85mm PETG;Lulzbot 2.85mm PLA" +} diff --git a/resources/profiles/Lulzbot/machine/fdm_machine_common.json b/resources/profiles/Lulzbot/machine/fdm_machine_common.json new file mode 100644 index 0000000000..a461d93f61 --- /dev/null +++ b/resources/profiles/Lulzbot/machine/fdm_machine_common.json @@ -0,0 +1,118 @@ +{ + "type": "machine", + "name": "fdm_machine_common", + "from": "system", + "instantiation": "false", + "printer_technology": "FFF", + "deretraction_speed": [ + "40" + ], + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "gcode_flavor": "marlin2", + "silent_mode": "0", + "machine_max_acceleration_e": [ + "5000" + ], + "machine_max_acceleration_extruding": [ + "500" + ], + "machine_max_acceleration_retracting": [ + "1000" + ], + "machine_max_acceleration_x": [ + "500" + ], + "machine_max_acceleration_y": [ + "500" + ], + "machine_max_acceleration_z": [ + "100" + ], + "machine_max_speed_e": [ + "60" + ], + "machine_max_speed_x": [ + "500" + ], + "machine_max_speed_y": [ + "500" + ], + "machine_max_speed_z": [ + "10" + ], + "machine_max_jerk_e": [ + "5" + ], + "machine_max_jerk_x": [ + "8" + ], + "machine_max_jerk_y": [ + "8" + ], + "machine_max_jerk_z": [ + "0.4" + ], + "machine_min_extruding_rate": [ + "0" + ], + "machine_min_travel_rate": [ + "0" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "printable_height": "250", + "extruder_clearance_radius": "65", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_height_to_lid": "140", + "nozzle_diameter": [ + "0.5" + ], + "printer_settings_id": "", + "printer_variant": "0.5", + "retraction_minimum_travel": [ + "2" + ], + "retract_before_wipe": [ + "70%" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_length": [ + "5" + ], + "retract_length_toolchange": [ + "1" + ], + "z_hop": [ + "0" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retraction_speed": [ + "60" + ], + "single_extruder_multi_material": "1", + "change_filament_gcode": "", + "wipe": [ + "1" + ], + "z_lift_type": "NormalLift", + "default_print_profile": "", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", + "machine_start_gcode": "", + "machine_end_gcode": "" +} diff --git a/resources/profiles/Lulzbot/process/0.18mm High Detail @Lulzbot Taz 6.json b/resources/profiles/Lulzbot/process/0.18mm High Detail @Lulzbot Taz 6.json new file mode 100644 index 0000000000..87132b9ada --- /dev/null +++ b/resources/profiles/Lulzbot/process/0.18mm High Detail @Lulzbot Taz 6.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "LZH06", + "name": "0.18mm High Detail @Lulzbot Taz 6", + "from": "system", + "inherits": "0.25mm Standard @Lulzbot Taz 6", + "instantiation": "true", + "layer_height": "0.18", + "compatible_printers": [ + "Lulzbot Taz 6 0.5 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Lulzbot/process/0.25mm Standard @Lulzbot Taz 6.json b/resources/profiles/Lulzbot/process/0.25mm Standard @Lulzbot Taz 6.json new file mode 100644 index 0000000000..cae9291ebd --- /dev/null +++ b/resources/profiles/Lulzbot/process/0.25mm Standard @Lulzbot Taz 6.json @@ -0,0 +1,109 @@ +{ + "type": "process", + "setting_id": "LZS06", + "name": "0.25mm Standard @Lulzbot Taz 6", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "adaptive_layer_height": "1", + "reduce_crossing_wall": "0", + "layer_height": "0.25", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0", + "bridge_flow": "0.85", + "bridge_speed": "25", + "brim_width": "0", + "brim_object_gap": "0", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "0", + "outer_wall_acceleration": "0", + "top_surface_acceleration": "0", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.5", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.5", + "infill_direction": "45", + "sparse_infill_density": "20%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_acceleration": "0", + "travel_acceleration": "0", + "inner_wall_acceleration": "0", + "initial_layer_line_width": "0.50", + "initial_layer_print_height": "0.425", + "infill_combination": "0", + "sparse_infill_line_width": "0.50", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_speed": "15", + "ironing_type": "no ironing", + "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", + "inner_wall_line_width": "0.50", + "wall_loops": "2", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "3", + "skirt_height": "1", + "skirt_loops": "2", + "minimum_sparse_infill_area": "10", + "internal_solid_infill_line_width": "0", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "grid", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.19", + "support_filament": "0", + "support_line_width": "0.5", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "3", + "support_interface_bottom_layers": "-1", + "support_interface_spacing": "0.2", + "support_interface_speed": "100%", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "0.2", + "support_speed": "40", + "support_threshold_angle": "30", + "support_object_xy_distance": "60%", + "tree_support_branch_angle": "40", + "tree_support_wall_count": "0", + "detect_thin_wall": "1", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.5", + "top_shell_layers": "5", + "top_shell_thickness": "1.0", + "initial_layer_speed": "35%", + "initial_layer_infill_speed": "35%", + "outer_wall_speed": "40", + "inner_wall_speed": "40", + "internal_solid_infill_speed": "40", + "top_surface_speed": "30", + "gap_infill_speed": "30", + "sparse_infill_speed": "60", + "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": [ + "Lulzbot Taz 6 0.5 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Lulzbot/process/fdm_process_common.json b/resources/profiles/Lulzbot/process/fdm_process_common.json new file mode 100644 index 0000000000..e0ef5198a8 --- /dev/null +++ b/resources/profiles/Lulzbot/process/fdm_process_common.json @@ -0,0 +1,70 @@ +{ + "type": "process", + "name": "fdm_process_common", + "from": "system", + "instantiation": "false", + "adaptive_layer_height": "0", + "reduce_crossing_wall": "0", + "bridge_flow": "0.95", + "bridge_speed": "25", + "brim_width": "5", + "compatible_printers": [], + "print_sequence": "by layer", + "default_acceleration": "0", + "bridge_no_support": "0", + "elefant_foot_compensation": "0.1", + "outer_wall_line_width": "0.4", + "outer_wall_speed": "120", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "alignedrectilinear", + "initial_layer_line_width": "0.42", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "20", + "gap_infill_speed": "30", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "25%", + "sparse_infill_speed": "50", + "interface_shells": "0", + "detect_overhang_wall": "0", + "reduce_infill_retraction": "0", + "filename_format": "{input_filename_base}.gcode", + "wall_loops": "3", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "40", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "nearest", + "skirt_distance": "2", + "skirt_height": "2", + "minimum_sparse_infill_area": "0", + "internal_solid_infill_line_width": "0.45", + "internal_solid_infill_speed": "40", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "support_filament": "0", + "support_line_width": "0.42", + "support_interface_filament": "0", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.15", + "support_interface_loop_pattern": "0", + "support_interface_top_layers": "2", + "support_interface_spacing": "0", + "support_interface_speed": "80", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "2", + "support_speed": "40", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.5", + "detect_thin_wall": "0", + "top_surface_line_width": "0.4", + "top_surface_speed": "30", + "travel_speed": "400", + "enable_prime_tower": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0" +} diff --git a/resources/profiles/Lulzbot/taz_6_build_plate.stl b/resources/profiles/Lulzbot/taz_6_build_plate.stl new file mode 100644 index 0000000000000000000000000000000000000000..8a16131b2f094b714fd94ad0a631c178aefd2f27 GIT binary patch literal 1128984 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

  • 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%0D<%6bN)-5=l}XBFYkRp9oZth<2wv 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 LrCekghsXZ|vh`2m diff --git a/resources/profiles/Flashforge/flashforge_g4pro_buildplate_texture.png b/resources/profiles/Flashforge/flashforge_g4pro_buildplate_texture.png deleted file mode 100644 index 6154334c6f5b20e8586ba31a9f73fd3f90d83163..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89099 zcmeFa2{e@N|2IA)(S~FxA{DZXeP2UTA!SMSW$cVKTMQ~u2%l)|hGgHju@8wsLqp2G zMGV=pFJt+S=o{bv?|;t!oadb9`Tf4n-8mX_ch6k+{d&LNulI6Y_tmTW_ms|@ym%4> z0-d>Y`=&YwbXJ$}(@sW8IP&5X8;pziqN3;+@U5|P!1KLID~+ZVtAz~PUl@4W(i0Qdm#0R#f##XbuF8~_{+>jA(AfDZs4 z{*%%qYOYX&KWhO1%l;=>7O*B@%>xbqW!*jy|J!kBKwTo+8=7pfjOoWB;a6kje_I)a zym@q;6L7-5sQ?@R9QF|aZ~$-sfdHM{X90i%fWu)u0Qdm#0pJ6WS08WyNSpV80B`_s zI4p|*9{@f8d^jkhF0ans*aPE6cg4*bs)G(f}v5d%aF5HUc+4tv3W zdp_Kl>3_O+!G4#0r{#FUe*X&ow+*9u&i&gSRKN+pZR`i&0O0T&f&IS#J^(lzq5}xv z1HcD>40Qdm#0Z5Y$H~^%J`#=CV063Wb*PBi40R!xduul&F zhyN5Dv?p?}{aFhDFnr&t01f~Sz|MldIq<*zNqWMlKycZ2KL7^+hkXP98~_}EO>Pc2 z0EDD{AOIWy91hDOz=!`!`0)SQY-;bmf&C%&tq3XiuLgg~2Y?U2wkQW20JeYF2LiwW zz~Qhg0(=1Y0Pq3WRq+o8fV6oZ2>=HGhd(~C_xk_AhyQZ3DZ=T%Q=$9d0XP6S>>~i+ z0O0VSxsgWMFFUV4YXJb||HE=X`2ofI!-c(9fDZs406zR@MnJ&3|1cX+IY8z9aAEHi z-~+&i|C4-pS%Vi3N>N@T@&4*WSDb<-4nM9w&(33W>ZTqD`gF1}hePLb!42aN?53wF zx!Ei{Sx=GBJ~knuzOa_-Wqt9%M&hTOPdVO+WTP6v5*s+PaTbYSgb(3{>deS>i4Wfx zD1z0B{Kx?ncoOT81AIEq;71MsUjhO!0RcP#doTY}?pa z3Kz-WvkP?GFOfuFEUSm#pg4P%qgJAC2B-dMK#|zES?F+{VE2#??4%sn5lY^k%Jcjm zOR519zYkxI+=6(qRq?>IW7wL!%8kHS_`v)nwMi|G@dmj-`-%=lJ)XVRM3;RTq8p7ZtLbR@1r zNqOK);zQ-6V>s!1qb4NcM8=Ls23*d!cEY2cZdZd-2PzV8ykN`OPQ|^d3R^V*(Vsu^ zUEA5##noB#otCz21yvR_(@hE-;}YT)MtB~O!nMP9+n%4I{>j9dLe*pHedMB`_?%du zAdx`quQ5aCR?i#_iWa9OGB@Hn<7!WD@5jP_Zws{PLI<|L-~iF5j@?RR^y0E3zs4A; z?!(GHBZGcRb}x~&$+xTSR9(1L$ssFEVyzXM7q7^}U&oQ%vtYax%yxr8_-Ru*SF&C4m%&{VOD8HvPM%3z+LC=o3SK72mbEJB!+T%FUM0H)(M@DF} z7BJI!cfo#PW`6EUcw`|n{)9(cB^0h4l^Tg?nPse{>>=^XZ9jrRO`hKMDw`&fM-rT= zTmQtro~B=Wlh?;jWIT2R{>S;*@bXl}5(A4F>rxWKe+)D}1qqL{J&U*ym`@@~WDGfa zc6R>5vb1lDN*w006|-d>0ptZ=N!V(yS&qF^^r)H^F#`3F9kJQq&&oDu>y9zx)2V2! zoKqCwCZXiH>>tRr(s|+n=#k8IP@FTBk*&b31S$Snul;qEl_kc5VXV(aK4LfmUrvK0xyx}PHPWc% zRe6}x1y#pIZt;m?QbQ0@G38JWeM9sfmpq)VCEWbgDyIKO^hc|HlC)g5=0}1PQpB+r zENPzJ15NthI_$+OZCCgzqI$k4_y^I_cnxcET`G_i84U1Jzq=93=t46FGEO-HTh6@D zg(B{b^@r3&+*CiS?}qkCvKwCx(A z*OaCwM3fZtZ|7CA+FMiQMqlvK1)IDnvQ?b2$}N92Vum(3L8Jz{-Eo)}_Z|A7P}S`5 zF!fJ9&IA2cA4%MdsH3;uNMVA{D)jc-Y#;aQI&$e>`ya-Qe=!9$flhbljQaRadc3xh zAJlH)$M?At^;|n5ZW2nVksp6FPpf}YZCZlq+}(&_bQv(oX5-UWedNUJ`4~qvI`_qz zL`-mk>iluPp&Ekw31R*k5aj9JQ3+oVLA&OXtNN(fFFouz=hi33F|NHxG7r&bjve`- z<6MOh{zY6se(~_*p^Lu_DE)$4xx{RUt%>m#7kfdR4RH`G;3D>FbBt3LLXywFU9cq=OQ6XwoR)K| zPdr6|UO<;c#pC@Ot$s>iCG}B9uSqVub+!~r-4jm`B<7YHgQjv-dYgVW5OvxSL8wVa zHh{tJqy-^r*{m~>GZ*iRRFe+ebQBnKd@gq%#CH40rAR_-Ol)<*YY~tkw3u;qY~7Ej zA00+^EOye%ZpI+Cqt`8|;83jZUfVD6Fo~f!2)}NkytZRNA|<#=aKLuDBj)=SdY2=x z#j}zpb->Qro;O8RaLhw_HtvRKEaj-7vobCgewR`XgEq2eK@~lq+}few??-zqy1NiLKs5Wh zre>8O`NHB81Qor(euT+eLj)7{iZS1AF1mSp`HHxO>}Ll0z(S-BkHM{9gj>BK_Wt9tUfN_6Mgo2p+s)%_BB+QQqCQc3Ul@`<*tKM_645e40~ z(eC3$^fkIX%Z$|;Ku{d3O`pF)7F(DPqx0h-JDdh=75@%<_wtlEM2{hwFjj-DVoV;& z>?&H+JOj#!cux*<{$CrhN|%KsExI}vKzvjVOw7y%wtqd)Z`X|uY`tf|cHun(LaJ$y z{&M2iQ@8FiwZlRfp0kO0!lgcAFM1F?3Os_;uA44ZQ8oP?0=Cl=uFkC{CEmmz?^9oA z)F5+W`p_OyOm+MY5&h+(cVN? zvI%So@YhTK5FFkA4(}VtD#XWcwr@oQlZqjGX~7uAcmHJFjU%x++7L6Q*(YfdwU?pX zPQ@RhlY0NmvXMQP+{DI&a4w(vWMw3uHCEmo>&5>Kdi}nwWnaK_#sioSl>Aa$B;dx21rmJq5wdnPct&_k1M)PCkd$_#(76$k@aqth>)jwf!X zKJuaSzhj};S|Hghx0@rXWa7gwtGI1T)pES8vkLVU*`N425WVcbeI$aAVzxO~(G$X< zM9uBc-rd3AAG403oaKH~c!FolaeTUX<#3n^?#QCuj?P#F}?Yl5_uB zb2B!4T*sMKnHT&TtYvu|RJ}8*pp731#Q~HmtIX$FK z;zJ>G{1?O5}h82FG_#V;yBd&kxtG~r+MEXiaq%*GVS615Wl7#pKU!USr zU-%gkIQ)AH+xvA^l>Ml$d#3o@nEIzMCI(wx2y`c+% zq5`A)D`bo8Xtf|dL&s(7G$^`!kD3~YV}GNCv3tCdqz-zxjIzjDUSWRBb~We19E>Cc zK8GlQ@>~%s-I`y-#%T&RA&&EWuN{ygr$(+s(XYi?%&vzGd+$m-do!Iw=U!`l3Kcfd z!hA`8bhxbz#<-g${-`veyCenza*I6N>n`BhtAXF(oSDZqS7quWnMbj_FW%Y=Dv4Qb zxOOj9w3;$|feovcDVM6J?q5HxN=>^JE0vZF&y6HhNn_fmUCMsz&X5iLxG_V~``awK z0!A)W_(!GilHM+tGOYYONaf|x;bMQaH~pyCDiwJA6^$ojzvRl8qdzY5d8#NSpdw00 zF1`3iG}~p@zRrcZM_YL`i^2|iBpHHoOWEagf*)`eV9)MRS6RqlwvJaH@;(yUp0g42 ztL%{^Q8fKgo}Esuv7=>4={yt2<(p0}ouD+5F)h-9B8C)X+Yo<(>RpM$Z)sqlLrRp@ zv$5d@M!V;dTSDxvI>m)=h3kb9(MQWxT>fj6y0cc)H=pELw9Yf$Jf%y0WlJEOkg<|h z<~!*xkv(%uwb=PwB`r<=T1PQuT46L%{EnS_;%P%mButB{h`Xht0@{1in@+Xz0{+sj z9mx3Fkw6A3;S~q>I!WaedOV&yqIfcEnnNE&RezcRsfmbW3V&*=b!S zLcq1EXp2RoEpmHoH~RXz`cxF`EzZO=BKw(qU%4(O1=1RWNL3C?1D{*JRdIZyh)>9M zGo34Tk7+-o*i{WFBL}aYggD+ObeXVjY*+Bw|-S&GqVm^UngEEe@+>EaptwuP;`p%rwdrdMLU zmc14=37rOpm{}uDpdmr@j<) ztHqPhU?Lax(YyL}opQ`!v{tz3ejbVH^P-G$U)y4LkARs@p{QG55GEH{k5R`eA=C?xVod<+rk zedlqG<(*wd@lC-H_lVhde5AtQAZ`A<+&K964+yIG zR;#Xmc)>=y$Sdy+-ncB|tU!6++^en=Zit=kFoMakt0kR5{5UG&PXXNdS3H(Yo)fZz z>IiKai8LDGqn^}$-H?H%o{7K9BXqs2EHvFLS0R$$3DgqKH}m? z$XOm0G7v4?QZLO@@MHMRqQ6$UF~h& zcw-@5O~`)ekR&~@BbOW|b z6fN6Bqk7$e*OR9$TG3ghU!-S7TIbE08I(+*)1rTTQzEQXa!iQ01T=H~h~%hj+84L_ zbNk++x3+s7vSc-E*KZ$lM$i78)A@ibatfcjO#QHNi7&{GBDVKEBAOmXRFnpN58Is| z@DF=+arh0g?FYL$`sy$WDK&lY9y|T+*vj+ZTga{Y80K|RBGg4&vRADOw-T5awrZfA zgHEI3uugmT1gS&?#Ib^_HpCI>Z_|fFPWQT<@y>$2EVk%ZhCYYOcK0;Rw^ExdrK+_! z5}0z(wXJKf2{UT8+IicP@6+--(={%#pfPzLcyn^<8dZ_q7M|>wC`MdApqQ45w#G&r z<$2Hd>td?_P8(@&+t$p(NB|qUX ztGH(Odvcc#tXeRyu^2M1Clc1yWfj5jq-W8(ZgHkXaBYmP-XIG65$^ShP`G7Vp{=is z99Q__?dBRSm6-iVVe=t%0OOa+F3V__&hL*vq<0U#o#hGm@3&uq5=USYkluslLL6Ne zO?wt$@!hhC$GH&_Uf;#N`U}RZ;N4~qsBZUBo0`54VC^2rv2V!8;d4rlAOpN^<3gyqQ$=Vg{$vqbBsHH*J?5g#s%~} z>1N*|I1%|#^zIw-V}o~s**+oVQXD!2ViyX{A#8Sfaiu>hJeB0oc6xT`Fs8DE(pMn7 zCyBA(z0w!NGiMK+EWkJ+eEdzp?-pa-+*Eek;^q2R`PRguN(iczY;QsIn+lHOcgv|a?;9|SBIT)P{gkC72nu9)3#nh z()h1|kh#H!28z}uA(t&X&18V|Xlp5kLOJckgGatdAs6UBeB$j`>}gzDj;i)DG4yGO zM_J^XTg|Zb-4Z-2y=FPG=Z$(|sj*4pZ1UkyJ;CBObm?ar+pu(8fOLbC}rLvAhz! z@fA<@rfdOslh5UnYQ#Kq%R)Dp!Hc(k` zE0jyISa9rx?lXFZXqOqSrlK8oj1>!3QafCb~6zS*vhE%}M`1qdLr zDrDMIbsD`yJ0tZ{pzYrIqdoohRd&~{Dq1d&8IYI>t`a7j(8>pTr#i{`FTE@9inS~c zY$>k1>;L$naIyhwKQ|)F(_WgSd*Sr15(ZLX+mYD4sKbMQpKU0x>=NfrM;+)&2{ZXlqI)_m~SwNZ%uxohr2w36uplVHn}W zw?=tZ9{pk16Mf~cAT46c@d$7W$=Rr)WVCLK-O$G2d~kjX35~LVR4++iK6O4q+y69OONE3oNoCc2>Y16Umh*n02TPgS165!A z3oG<=^{D5f)H88t?#Z2RLf>-xhIZ#X;tbY%A5iN@$ziIj*!RTS?4ymmOPqHY&zmNX zXem@Ha?SL0G%GqXXd|mvDc6B2zHL2P{}fSA(OylOx8Hy^_{nAF*+2TRIfCrI#a3>h zQPS_@NeO8yGuqC1a}iK$RZ1LlzV~i&dckMH{6`fNQg50i@%ylAL2e%IF>TY^4ZH6w zLnmVDz+W>qwlae!dU9g%lliaMTH?&IE!!A{5WSb!4TpuGOss1UvNz%vy`1ghu%blt zf2O=1TX(9$vDW)Rj6N#XmyEZ+dEKXR&EZLO;nGt=+fwS({1rlJGqAq&c7C4qV?l6` zNR@Oh+^#NX5r%xdW`X=x)NpZN)vztG(@Bv`peiivQt2|%iTZm-hyp@^I3)1Ep$vN6 z{_=xS=30Np-IC{}P$NBEnv$)K1v_EfO6C|eZ@SWS=%EhHeFNcnY=V*=p@C&rqheJ;-&J)C%jcw?-R>B*Cw8qOqLYVR!Tv}|j|7b1j++!FYyG?yzl2=cjvClM`5=)v#WOP7N1o_8SUjZ+X~UbCY_aj0|OIhD+5k;&}rR`F61)qo+I3^`!CoL4uSay!<;J&%mFr zN97}Yb8UX-0LEgmd|01FE15E@`&$X!v4X|3uWCD`5E9c?dIlHAis#~jD7z)GD^oq@ zjT3#OG@{Am$C$Jjefzr_CrV|h`|~Q4it#C|m9cDyRra zD2-p=*UH^z{^Ik;gsGl&#c=cR#Zse}dNw|V-<5J640o-MOYWV%$scSf5`)7~P~FRf zCVJ1(rFFwrs~>k3wJmZke@n4%}DduID$?fv3AQMDCA?9w}2%`*3Qwb>U=on)5m>B6o@rMgea$h`Ej z=^Yh^ueDomjSkw{Kj~YWpPQAb4qMY_-b8g(A>G`+kKBo{?`@Cgo`24~@Xg)08jEm> zE1D9Y?h9m}&wYN$N~EU&o7x+JcmatmQ{9mw2GJK`tX4j)<70PytLBr;`|o!xdM+6# zrdW1We*cPmcwA*Tr*PI&QQ3;^8fop4uHU-*&X=*JHrLWK&!U2oOhuYEaJ1N02n^}P z-HW@FV{B##Hd{^f#S2$grWfq!oY~XHu6)*&#<}ED0*}!upo~BZlJbng0%eTNDRlG>j&x^YC0rZN5h!TWg zmp6&JdF}@B?eIHWi?erqG+gfX2>9kOyj!cfPV!?Dbti+@)yR%l&-=l>%D8g!EX)|r zAigPkJ?5wCLs6%XL*MGY`B#0t7T?wFDe^;=EBMt49o>sD+pO-jytR3)Jj?Mh zOKQ=8@wZQ^P;zc(yUPurBIq?oj2POU&3ow5^PQ6*V+-@;^ z+$ISdmwiFgO<(aPm$}r88(aV9g_4cx9rGWE4f`ttJwNm%!kmKBS54)EKoj4K z8ofr-iL&0fE{L0SueV`e_)Xo{TFbZ4>~NydQq|Cpd;bz{ujfs=J@CM|$|0M~MD(AF z0p1}ym9L7+nchE9JuP%r{JUwtV_u>3zZ%8Hh(dqvDip`fo}wDl6*(flzE60#nv%_j z=|?+_&8x)4i_CbTDnVn2718TnxOU0l$V5-0#3Q zxj=rsHX7!RFFBoHp%gFur$B665ycn8{+#9kwwq5Bv;^Fb!$c0sv$F*V&UrNF#0E=EgqTx=0F-lJ7B^!mD8 zOrVnwm2uh$(W~M(w3%?kuYR3n1`3NhhZ$~8hP6QpPZ|t`G!GqV63=OO|9m-qM7Q-50a<*mMSb53{!0eEz)kzkVaX84~}AW7kO4-ZfJdJ6tO4H^5^L- zYgle__&NQN+)tVQ+%ENS{9svm3+NM?wy5=zpq*#(U2f?w?!LC%-yY)y(l~207I^IW zW(cxhaCvGrt(F)Ro!?JZ{eFGG>3Fljhj%QpN~xL=$_up#b(Zx_v~u6v*(I#6O!dXb zm7QS{yrudv9Lkn%v)KnVl2y*>lYERQze`p$k>?dlcG{2jAR=CuEDblm*He_pFg*2X z`{l70mW4hFpB)ndxwYorQEbjRycV7uEalgnN{Hp@Z}sdBbvp)%E>jHV`;r!T(x^&4 zP9d~S%1wW~aFQNDz6Q>oUf4#yeGtgF1bM=vr_#C-Nzcg`LC_bGF)I$1X5{z!$WJv* zWPC{SkyV=d6PN!v$YB)IFBY|y66&*+vb#z+w0mVyO~uH^X1yf?Ok8Q-qlVXF^6+K3 z;ce}7O>vRh!YCIbq{M|>8<(5<@KV3X1JqJ&)q zZ$sp{mo}rqSqW)k2*+``fDX1E>91nW%#}H``l;56O$zeis>i0A$aG~&$iCJxuS<~J zICDU4=X55*RgvorVN0C9<`NKUHkB7m^k$q42xuyAIaSFvv!V^jOY4s+Za7K2)yrO% zd(-JcghTi(-{T-YUkvU1#?X@tix^=t+B4!PJpI^6=FV_H7_)#~g~J6HN#(-_D?*LA zcs8P&41Ex+bk^25LjT3X575OX89^n`0ax-%I+o$M%6nLHp6>c z<0D)FdrroG7P%#mGW)%}Pm@P14W*Fm&Q8B+N>5jB=;kvRNB4i0yG6_ngvRXZZhFTF*h@D=ub^N9-5$G~S%|c9nSy6bOD_GRg4?)6&Qbwc zs6uttJTc<|lj^Lgiw0&jKf=qhW;>EIKi3UtuaF4hI-?k1Yeoa)&f9@L>;|18{U{t> zER6>7GLBYs;24Nc8Y&aKtiw9zs>V0(T}L_ePVPmUw?Q_#3w;hbKz9%J(V7rRRjR3ZLSk32f<|pM9d8(`@ ztnLnP=ca-Nb|;JP&g%<91x2-yDSIAWD-uBjv!;}h`iknVy=aUTx)9|X)RfSu_6--o z?+;!p)gHz#B`ZdETADd$(^5Z%%3||MN3N@+O3ZSiPN+I%XR+2T{288&1tXMx9$Brv z9emcH;dHCUx0N>6XROQP7Na;_=GLtp@U~hdtf^hy14Xk<1FG99O=yO`#Dek9d|_(z zNC$l%NyD9UTJ5nR9ZZsTo-;}2U5n-X)@S>%%iXVXe~F|(*jeBAOi0;ZJm(Ev=&Q&i z0e6EpGX=NL|GfsL^NaCKf7Sx9VBGGp+Hpk7M+IaMx2N-1meDmQt8LEJ#@YxEqN)+? zXRIKF`9+0Gc?p@dqJ-WIG8!*qD_!H`pmr{STJdHr`U~Q$W7H+U&bp|;sGb$XHSl4=rdrBi5>L({5r3g zc}7U=a=?@c?G^)H9dqts1tj@TBss}3$IJWb;@8Py*85sK5S-2w1ktAz%pB?Y z=E)MSV8p2BJO1RMYH8?WS6sJZ@JZ=OLSk|6LsnyhsQWQ(#(p~esUjPLh}lhX^rzri z_zAAsYdP3(6O5v!UcY(s{XSbwMO7!6;*&3gy4iXL*;*wnRI%G4FqgZvUsk>9BMWO; zvRFkID4!0VpMUK_d|GW^T1JFISj}P@Rd+Pb=uAvpL_S`UH28@p^_x|-8g8s8pK=m6 zNT72eOAxqckKEvbs;iE7K6ZtbL2@q5l7jdgFr?qBipq$xbtYDigRv6v8EMryrt6MX zv%X=oyn*MKAv0XA(g7#+=1yI=552$b@Xa*j*F!B#giEKX_YdWGE|)LMOP+DF_7aIh zX}T79Q=1OA&X=_6lDY+=ZV|^6M(W zY|D)u*ODLqE;4K`d`VFJhgVUW$>%~C-CEDcrp7AIW(H(A8^nHR-x9_{gnS@AuHpqa z&ZlAstvBE&xU4e4sD_|X$24`o!sIaS9Z^i@`X0HJ%V;HzTAcd+y7T?~&ck7%@+hka zRDF;r`8-$OWR)x@!6kg#Op@I#|RV5hwe~1wtSY<8jyY&tH1n zfQ?)8dd7nTKLfA5zy_@ej|ol3VyW|A{7f{^)?{rvFj)IZe&5Mt@^#)4byz_qEVC#?Abhff8!5VjVi}?I#5=U*)STHis(H`0&5|CJ;$cIV@ zY940C2QRrBZ^oMcuvetSz1QgmzxhDrRP;)boG>O|i7DMigY}!`s|{QASEY6?4egFb zwB#(cQM4aWkv|KdP2K8neza3tH!Z{$r<4UcSv5<)|+TMkm*XjMU7d zK;L@n5W<^e>~5Ek`mf7l&F5IMQqw$S7Z+sDcK_%BSH*p|Y>O-~w7KmR!^i(k86)Em zLwO!%`zUpd{vp*5Ri`-mofAn1YhwI1sEW3_8gD$kWrBHJIlAuFl8w#n_6`fQ(Plg6m(#{i6bR9v&&~Zi-## zpMBK9th9LtT9sE1?_WSscqQ%%y;;LSL-Q-Ncz)EX*Lzl!#XKyY5wwbN9x6>RvwIm7 zqwuI~GX3+i2I%8K^C+5*1><0F)9bV_CcA)jD-&yMI(X(BEI{M4*I5Um$TKuQHc9>@A+RM|BzSokv!>tc-|OYi(h=FlvuqCJDMVW{69yIw&uBQnXgL)QW}^3HwCfj)Z{^@>I?{amQ8 z6~E^XJe99D5#OnU36V~AvyEIx;9ivxpC!X3J9kQbRlIYZMU=NBCb=q8&7%JV;Q~mJ zDyM7A9+=pLye*F7a-8a8rT;fx(KPkmVn48gq zkn2n=^1AriuCGhkd5RbFE;+CXeVl_l=VPu)Z8aRU*qvEq6jfjDI1%6IG%&F~Nnn;@ z&!Wg?Jj&k23%sq;W`08Sib!d^F*I+tdD#%Xvl+|97!f_)l&(f%<^}cI-G-6S=@R21o5y1fs*X=D=#TzP? z_C~s1g#4=d3?cE>VB__mgME!8P6b6AJZHpbKp@gZy=DP+yBL|O?ZS$Uni`pG9h9&X zI}^3#3NEAa;Y(pgEFvjy?o_7b0-U!gcga;NGS3P<^iajGijB5r-^3!zRqJzdm@ zpHC;Rrl_>$LrJ9<_VW-rZi!9DstSV0KdC>{?WQ7&8#RM$akwHZopM^85Jrvk_7SV= zZ+b|}7KYgnnEr>ts4$tb76B3J+*OZmQ@b&q!p-ZTGqC*R-yIsZJ9}Ugf;iHMWHE-gXfp){nfzwWQmQ)sl509<8&oC5k9c%g_O--0DOjmt5 zj{E=#ovrx(+d{hfz+r^VI9*{3VbX3>d_f#XU4bN43Ei*q>XylLd~9b}Fayw!ym16#s&vpl zgTo#wc`(Bq8C+1}(=bh0kAxdE$BYxtR_G9xpjgeNHI^?&k!$%@JBS5v*=<-}&%lyn zE0-y?v^1*cJ#!*j|)867gwiqV_dtRT`MJ*Yj_h_EM4!ZnU$$w`xn{ z=PW?fF4S6Xc!9SJgooOa9D-?C;B6$&c}34~)|&IX;qyJVzCw@P-&Ly@@s1hsffl1& zavjAi`}td@8)m&E|2dg99epkTr({;t+0Ro_B?dIKGg*tHZWny>b!N#sCAs=k<8IiR{r4sw`b-)c@CdqZr*FlxA zC$6UnkEZ($psy)&Jfw!H!Fu`ZVj3;q;K{XV^co)Z?e_j!;Jp-(7O)&G#)D{d=SP>N zr4rU*eqCK~^YYDGH=vtK+2tl>@tyNHmyHWD-y*Q}Yp$-!6;J3F1wZ@kBKW<5VqBn*fsvsFRleCsJ=V2uo?1AXTZvXzawtm zZ>I)vo55?IptZiCYUw_xVU_YPT@vWZ*w7ZECi>>K1{nqYTYOp8eygmB5dtiI(F3I! zZXR@UUo-8OI4bP;yM75p_!(wtF?QCj(EEG8OoB0YKgE&JP2lbCjbZzt8 zq$BS$_Lsi!`4Aj7_DQoqdJ(HjCys6-lZF#tEk3d3ci|ngT1J-n90U{dg9ttHb<++6 z$|$zsXY!IX% zdL5`tFDmN|G;D6Y5kv2o-y*c(kXK!=lnAnpVU`%7vU36<$|AtA5$$KF^JjDW%sN4$a&iBUv@i68UB@)%~u~sd6C(LGA%{icgH2q#SWPP?<6J zPbSKQ1c+Qm;1=v*@c`qaUiVfla2akvE6k*w-%IQRlr(L8`ZU)s5a>o$Ttgv-8(m0o z0Tc5K`fGfi|6xBmFoS2K_Fe8n{##$&OtXS}w6o>Q7o%wLJZtCj#n%?%2%$Q56o!Q) zzt<~W-RRYFs7m!{n<7eOf(vc*r-cuxZ!HGX`PO z5BsZs8c!_Y#PV@{-QRjY=fLP>L6Bm8yetT`Ww|A=;)0*>mzl;vB+4G}7v;JyEEWFR zilRSe*zNytDQQ>${iyPd_J(BYLhS4gUVGH#;R%1!sji|%cMAvVER{;>ZeQjPPvYNU zuTGun?oiu?|B5f3Oz+d2Juc=MbD(wag9*4 z=Z9tE`z(`j8TGM?354nD>`ecaiJUeWN*RdF+?Z~Jvnomib-aCOt&c!CLc>Abel&Pj zT(6;xLmuvXuE?yFRyyz)#Ti``ntL2Jl@*J#jmH^z>30{3Yw(|?Pv*U($wdnC%hW4b zZ$*iJU;ERsfBjsVh~X*oz4W0Cp*JuftYr~?0{ue~#0UcI zK)#uttJZ@=?~<2tv!5&X4qB?WRY114!hLx#GHR9QoEo8yJP#!bhKDc3mi6)*0^@t=-no_idJ0Gugr(B zq+$mPv+EwWao7>82^Pf*(!f5y+~UU+$x5tmhg1*52aa2L;n|8e%d2}-HUc}1Vk#%V;f=WNmuBN@N%mP`l9P|{DiJlHze-)gZkoOl93%``m0 zwpqBBAwEuNTfb#PQ>PIX$g>pW-N>KlEszztHl?;;xL)yVOxn_`AN#VFT?RjN)AYFx za?(YFGfd#>hVT!KdbWfn&y*~#8wv*kw8Ym~kQzQ-Hlg3L*wwmP{DbtJ?4^`Ti*dMs z@Dq3NIfhU8>sALSJOo?JgX0#_w};yX#zkY>#se_j4L)=Bx8#)fGVAa5y56h10we1U z`m+pU9AT2VrJngrSF2+eb*5l5?1(#??%nTV$8&A+T3fRe&Aav9z9x#r8|wYe8Cub* z0|Nrb_kyuY^P7!xC0m`IVKl5wBm5S@zSB+yw4K&xjVTo;Fri%@b zDW&EjUuafIR&-BoFfH|KRB6uFQxK$mhg!l^Iw)3S|EUpU!?gRo>c3@8r9&~e_akm* zk;MLS|B%#%o?3p*%#+mi9G#4dZWkDrgu5>chTJ#u z?elN2zbIwViiFMJUO9Z!d|e|y3k$JK)qIBv#g)4qoB2})$U-OxvjIX$1b^bFC@QOU z@+20NU-LW`ki_b!!aR8GEU1oL4;k%YmLfna=uS6=;24J3A(o7DYU%n5yVqXvZV5dt z7?8>5JW>2{wQ6LTnqgArGdsxbPraPZ9|#UStAjdy-}+wj8;vo{x&w^9^V9N8qvIcS z<8OGSYnqq;thl&2c$(87Uf?MV=k==O0@T$rdhlwC|Y=AOk+A!{Jawd^; zbZisZ`E>vA;U;%U4GNZH%LnUEjZtXBUS~1|{|hg;#lJe6YL(D}EhuG=yVS}hV=04C z;XEszQfFu;be9=98G|F^)Rr#)aFEW$yK;~9bVH~wl(_IWz9j|GKMkgZG&z73)cAz6 z$);0D{&5)dL|0b2P_uNMHzJMprbZk0e*q#vRQ&u-!k@q2y)YV9M;VR#4mbH@Z_ zYPFvu&U6z-zx{b1QCwHG@ap%--;A;=??b%=*VLp@JM>wh)d(k7Gz#0MkwJV4)Ltqw z|5WQ4PBTZ(TShjRl6vsYY`RERkh6TEp7)8Z&!vpUq6g*ohUA_Huo_IeAYidQr|X}= zzfBDAh-O9C``Tfj2PQsuq?0}YPTyfNV?cWUoGQ&fSN{Z-t3W%?i}O&OTI!JucGDm< zuaYWeaj_JyW>?P7SB+>6DA9DE=Rkmab5(^g(DoIrDrfn*E5`Bl*Bn5STS-p8@A00z zjO5e`xm`{;D{QiAbf~t78^7|hsR>g5+Sw(4pr@;9k|B2HBS%{nigBbb`5h~v+v>4N z*}a5k+MH3Wwv?P+cMYC!L=B={i)}4Cc2u*%mOX2RhHh?p!Oe}lhK!oXTu`OucaWLx zPWs*#HdISF<_Z5b@8(wvZzaCx8jq%I)q8`lJBO>FNCgxO!Z#Q*G2UZl7 zTQBy&-1J-slVwV*2{N3sLn752OBISM2u)_vN9gv%6CTX`FR&5>{i&mWPZ~WmD$X`C zdLDX?U9s|f$;{24Byw2d@9`NTT8~#WK*9$dwR@QOk8r~Lp7qO-&*vFaHoryc3!m0q zG|JNX64*qYIhyd({MNkEoYzU+M9~=x^NR^R&v+A$^C06a_^WByoHU;h{E5$kc5s8E zE$tWyEQF?xk)RPa-uWi`miR1Uw_$F<05)r(B$*@uuXV^w#cMCim6qGM*hJx@LCF-V zSw>Q~6sf;VE)jvyV_(^+kD+JlcZfita(|lRzvEiV{khU*-z@J3^8+gFE&leC&&RU* z2J#>9?8s~F=Rw5?Vm-5c~@DY%${%O1J{?{Q4omZ~4zXcq*P1`O*n+F%`OUm{jc zXS*~11m{6qiherj&0Um2lboJit{C2{d?TC6{TAZ-=?UF+sslYwhwdem%Av`3ewpU+ zTylDCl|JDQos1Zp)^n-$S-Fr=6SVfU%5M0o%u30Yc>hDM(A9aD zPt<%RrL_J8mw$1his;GM*3SSpe;>PeBhbo$6`R>;2_g7LkG3L+v5zH224kJUSibMJ=h5d+_`aU^ z4`$5!{l53ybI(2J+_PPir)0kf{M3~!ni3vu0&4(S9qU-Zvt6JOd8T6L{1Z7wR8hQ) zJFD2INlt_ZreR70r32K=VO9|6%B0%i`-HD{Lw?a79}T?vjtV>kSVi#AuQ8kw^y*y% zfBKudS&Nr^5^cDi+p&7!Qr5dXe-7(xCo}4|tBjevnm%wkAWWrw+Rb^GOgK8HBbrdAMAZTn)ZiD?y&CEkn_WZecF}%^!?u_< z#3Q)TAEL>MER!Oomd8_svSWCQ17ec)t*0R;$`m|cosOOynS3#%_yPMV*9_@C$369BS;qcSv1&Ar1h;~9(M-Tu9bjef z7Td1B8eoBI%R?-GGg$~MY-V5#{k8|w;iH2yUUmS!y#1r;MP&;jzIP9v&RP*jtrA6C zIh%!>N{9~)oE{4)6-_kf2mC1D`)vQzmYX?8PihR6`c^*(41ULq+mxzfUy z8f}Xs=Wpz*AeXbbqaLCRx#aU7Om`8+)I7S7ul-hrW7Tr;mJ_yk3{4CKYRh|Hf1=j3 zMk3(yUeMLWn#rFTF0n~j2mZRC8Grwq(j7wJYug;!;bK*qYYT!!jc}|3-hydbICi`F z)z^op{PP26WIcqHCt3;zU_pSGF?_r0W}z)2m9Z%^%U^^0B|?B zgjh}7YhxWFTx>}{5;J@LgYumLn@+;b=3A-F0(s-B8-5a($_bs;`{d~+eq_~{ z*I(cj$={B1AS&_b8JrY;c(Us0_trsCzhf=HZGcDi_BB%Ju7_BP)-Qt6HpJTFAT{UDF_msy(#p=8Pd+#;+%nE_67Wj` zm(AB-tLLiR%6DO_+NhQYxuQkCd{BCK4^3si8h9`nWCgv37eiyo)B^E`-M zIz%3DuykKFwuVTP9L-8y*9IY~^rBh^dkQNznVbPcngG{ZlV8m5L!xu-UmZCy#Fc<}L7OirIb7H>+U_S>@&G=&;#CkP$^vCS5iSGM?w zykv_S^)u5Vx77aP;&dau*m~*EXEIuMdC|+u%n5Kk1J~3bSK^`XUxNAE#!eG??y3UJ z7AADCJUZ3khy`A=@srNjf>H=z_;tH%96EbiGH%6|lb5`R%%$|klcx+1h zPSpf8b5Zv_A|>fN1fbSIpP-F}Fa%)P1FQoUbfzcLspc%$5UC$(HSk;3N=?R(?<1fK zH|3mi|Gm@u%aItY6)g|U^pE8TyijZP3zPS4UB8Qw?+t&y1b+u5ov~*FMAZ-C27d1N zo$LTr_689DJ8d)g`0rL`P5)^{zpY+muY@y0c<6IGlZ{kh!O0&jPu0n+r`7$A1prrn zUAY*2<|jO7MfuY~qb?g9cU9UELiPkYz(-<>;boN7(@oW7u;l}kfhNg*%xXVwc+O!| zB}|Hj8&APii*&Hum=KRCii{YK_U7|QNx?Cr=)7c_k#w4<@|oOiQp`PJrlZdzerACz zJ7l#00`3Pa{4t^`>ge4quf7pE&3pI1$*czlH7&rQ?8oWST*o;pTEzx+KAnqH*i@?@ z_PPfk?@nP2C@T4UTCitfPXn zHAf*}P*L_Q-H5PX#9ydxMJj&VB7h)2fy|2(hSBpANf#EN8aYX>kehAi%8=PD`)aTL z(iP8!puTGiKM{)FzhBM4jD{&N78O5LEV+TY)|+oRF`r?pIDvV5@hjR+iUA9`gvZ~q zaJ)IR*cC&LQgiYvbKERiWnggCu}Cim15N#tE)WmQ5j%g>W?=17l1L=vVN3P7F(V+b z7h*K_CK9hk3dQ7?O8^n5zsQawJ?A@<`3^#@A}pu6CLZaxdC3bhHgoAoU9!xh z5FcKw1#ttjkKTDFyUEm+XR1dhWKlidY6ZG1l%OJMuYLm6>=_LD3JZIIjsZi`+cSF& z8euZlJi7$Af9@PWPwqSYrh1#|9y!hp!e_zZD>hCuNTk^vIf*ytWZsMw>U1p9YA=4# zi7HEo3ou5KrN zE_sLC_CGb7Dn%P|xvqI*W5C|hefd4;*e@e$ZAbri%gv7!-sCQ%u$Ji17gnE$i9A4n zp02)?dBl0`bHO9~q?TtoxU7S(E8FoA(}@$bid@#~yg3MzpfO+GKAp|pn=3a2S~fq$ z^nF>{Qm>DX<+a6VF>1stjg0(T4`OjSjFkCwovh-gV+)=Z4+8uw=FY5tvEBzcL)G2< zW>$@%p51kMvPxrXwL$$SuMwEz%5v=s`85F^Qpap=aWK~$H!6`bF=kkD%gppcbWXI3 z1tb(iA>Vdp7#)Uj!>n_C*IZ7YTJAmTWOfoTKAE4$9~2qz*dp!QMk({P#QII2_T7Uk zje2H1y!R{Fd+o@Srpe}<4*24I9?GWWQgs?a3@?M(C$-lFle1>AW?uS6V5E$NvT`Fa z`0bnr=*aKoenfAeB_6zL_k&f9_*&`lR=4otZaof66%1M7WZNU1)-v9kC;8~|h4jMt zD!^>u5d2K?diMc{Oclo_rin5^fuf2P72tr~dL0FXQsrh)2aJ}35ap6JcM207AfM1~ zHExpiX;h<9W`W<8nPReI|Dnf)JaOh_Q-OUVIi8AgIa%h$5IK}(U*VCXo967_J{bE* zRpuYo!%Bzdwe0HA5ffOps~c(Y=y7r`4a&9_CmN~e?c7Q>-T_%d*?m@aBGM+A`I%_m0_u zAb4;_K#RnGNQK1ncYqA@)0Rt}s;B&~Ui_=ulYmZS8CO5FwSBGQZ??+Fr9j4#*J-12 zw|Qu9R|+-(emDyg;f0a}0*R&%v9RC1GoM$i#j^vwL3hx}a;Q#Sltoj|BGJjBAbj?6;^_O#|1{ZL-O?Odd{)J?=xC z2{T9?&qT^@eJ;=>V+tl9jVpVCAO2=;d|@HKS6s}vr@>otiTLpfSsT;98e+<$lU%%` zpUQ5{%SMjqRd|{!y){GKc@4LG?J6{~Rx?JIl~b_dWS;1rsbob6cV+0P$Vdq4POQ#x z&A7}dE0bFgH~1jtIIER=`T$*xnJ>Sa^e|hlJB@3v99#F|+YC?&=B&N=OOFzGq3~O> z29H+^^5ptO%zsu0FLy4FpJ<7_@U*+nO^EsVoXhT;5Z-Y&-R)r`W@$Wy?rq~xjmEK( zEML~Emo1ce)}FRb)ljw!v-fqo`I?HBc*)K%+LK}Ul7T8krC~QrA8b`=_M(x3?l+xn ziX-9Hjg?e(WvqPGjlp!S^-;SMh!8Sn$yn zKOLQBC?DW|Gd$0-Ss~tw&dsu;-H?-kaxxk3QRCY0G1N#vA)UR7oVbfsi{B_gu~AO= zrP@`b(b_%6_BJ4dGu0k8+8Y%?ack>>l!~V$UIvxO262(1sZn}QCWOweRXnzz%=8_y zQ(TFBcB0nf_mo`**Z-DB#U7A_7giX?sX<;nV*6(ZPj%jZntkVO<{HD;t zeqLa6`y=;RAdJX*dXkU#U4vA;rUqwm6QuiiBuf0t-?19l?hsj7$)>DSNh>UJ%ueZS zZ$kBhade$>bSJGU*x-uOg;x<|MS`d zmKEo6vhSI39;(st&2U;EX2R1@iTy^%i}7cM;+WEsSnB%Fl?Add5f`5GHRp(^Hx+J{ z9MTO;?kGJ3(~76!ij;#qL=l0*25)dB$FP%7?fFH_J%mM*{OCDJqpkN67gMYsM-Wqx zE}S5yUtR{AnTUS~_FL7razTp$-8&b!BTk2j7x~tBf~K;?r7EM&f^R~yGIEeGXw@lK zLqA~?IT34A{A=f%ti|yI$lPj9f;7^rClq1Z(&OPuimgtZ7#xg4norhkKu(`Zp}!w+ z!QnoS=b+g9f|trz+fkPl4)3bH_8SCtx3S9!alho!SLrK8jk!R^X>PWq*-90%whPfn zMSd`Lo@wZdL3lVpJ`HF>$|Q!8?C|S@y%OQJy4`5^gE`)`4!DMc6vMleeY#p5w zZDk>~2K+qxwvONjSk&|PVYlVB{9AAIL3LD&*91pDgt68mBvmKhOuw8LO^~m{MT!uf zXYySlBfR&3tq&r3@^x+JF%r(uE20q2C@gRN-;SMoNw}@k+j*AV=p&fH>!&){&$|3l zi+%u5E2nnC*v}$fGZZQr=7VOfGYSoIJM$<6-Yu1&mPhp}hAMHuuXb0XRR8KVNCg+O zMh{-@b>|`XY+h|&lF8#K&CXXZ(XIGA=P>g)Hk~xF8PrV@(cPAL@ChWa=a*jeqoa{m zB0LS=32J+!sV-LZj5Kp|h&*2EQ6l6C$DUa)A&Rvz=j$y?Lx;S(6D7D?{%%Zm`Mj5m z6*ENrExi-sB$nGIj}196_IWl>vbfeb0*?10==i@+LFBO~0QVrBuh zKYMkPlnj`?#d}cI2>NM}n0TNSDL%E7F8-_n@3NPI;NF%Fd+lA~2)%)>o+G56C5i_o zx{YfUcWI51-3&TBtE#EA>N(N$pl!v5mOu_ic3iuTPLN^Qa8kX}7G}9DbCp_(Rg~S> zI?+zi;kq=n#1eb08z*m*@Etsb;X^dM8MCCQBT9wQyYwDkl zQ%QP|n^jBH?y~9a3ZXMKIC*XCe>cbvPJaZ1vEpXXQClZn3fwDMQ6^?HtO*+NkK#>2 z4>(n5;I&>&P@>&_E`zBS}jOuPUgX4 zseFcBB(c}(y!zZKBjbk0V#2E5Q}wOU;OVLhDm0i#@gR#NNjJ7CYOAn1wkOm%K}k&S zpB$~9cvweEg#fW4i7$cRpr>(y{CjgLrN~})`Je$vGx~@^D*`4Ef7;}OKg!P%NMhyP zjr2*!PGG6xPHU#@JT+&GV3f}o1+y>A&>~YTg3?vmrUWhX*NpZNeq&$tGUup*QV-6? z9}{>g?@E#vz#N>`_<}5SQlZsPsv`rpR)TL#+k;cLjoA|uM19Ow8HTx9!=l?&%jN*e ze(x)O!nr(AZ8S?krU}}u$szh#5P?Wmz#nafIV71q>v{ETv6I<4{h4i!C!`{WRS}+T zIh&V@N^|0a1)RCw%n_$GWynT`ydl7P5dQkxrt3ZsjUk9el7H3|Jyo*w43|0ISRO%Zq9k!rx1ZK>8_4KKp+dtdUu7( zZ1F)&R4NNv1v(A|EPh#$k&3=sZ=svc=PTS!?Ttu5m-hku@Xw5^2;M^yD(#7fr-n{BQ>$NIK2a5 z<<*Dyg^iUqjk@$Tri(x^e-!ST(uF)j37}n%adk3-a&MCe%&#*BcI$ZuE|n$k>srjG1*K6$%l4jERAD zy+-?`+6jwd@Yeg!C*XmqZyjXD6$8VA?Yh?zKJPWIxg0o1opx#W*{GSL!|PVYT-4+_ z^o-RqP|gcpIzh{r_v*T)+`+g1U=JoJU0y8avH%M9>0DV(gsDkg#cbtv={WWKCU3Wv zJNNbeOtAmUobkBFiTR=4reBydrypHO(p)Krw{4U2x37%)RqcM>xH8CFY>9gy&t|Nq zGZ06oOZF^bGByeO-r>Q;Tt-UAlgoyAf(MTqqw|oQ$$}js{ZMdiF{=Jf*HLdISaS~; zv?}^1Sf!WJ3EYb7w+u(mbt~^qg4bbCk_j-a>sVvvpccp>A2qDZUoZCt8B0HU$Dcm` z8FQdhOEtqXZt2|tSId)6FrJN@^FRSE=(|o_BK&lI7wYYV1#^ivY{}jTR2_N4d1%q7 z;=L@Rz9;A7gpA&HVA4hT9^?uGJznh}4Pu}q>$4SvLm4@_$L5DJ)q8}3pZp=jWQKHt zGw>01T!6Zhz&dsRa7tBltr6fa7V58X70|Wh)jZdDbbRUI=|hbgjjGmjqK8GWC%K1qeA5DVOrP#inNX~ZBvwXj%Z3dzOMf#|a;dr@8;1x3qOk@1Nz1nMP_K2VQY)^=)?^nF4Z2wYo1zM35hMy5nFy`-n?YmvP<`!YcS6rrRr6T$y;rqHbA9W&aM zMnXF6wx(N=lz%JQ^^HTHSG)t4Sv<7&VceW^yB|nmZm-ILe>wr8d5*)F;;@GlHlQ1> zP^IG_Mc$o|o!vihwpH8~Y(2i$#tFXJ?PUa>=}OBGe6L<;J_L90o8e^&7TY=8+P`wq zQvM`6FiCuH`4!;)dD}T9<+2+bE1W;&&`4z_OyQwG3b>>dL$s4?<(mQ?ZNQtq?X~>A zwhW2l(h5o2by?@<_VFi-le4OUrSCGW0c-5ROUHLbc$87U# zlpcave4e+e4>xZBK4oU&joY3xyAJhnqrB3ml`5c{P=J$x2iC>g zscB;CB>@$%*s{e!`S_)R{1r)RW?_n6<9H!uJZq4}zH)2#^}lxxyp`x8c6IHB;pn0Q zAhZtWmu*tlVsJHp>WB#&!6C)Jt{xdEjM}#9&Lv6od_(E83m^4Af|%JJUhzmyKDfe?3nmYyQl>_mH&`hk`EI?FOYziU--0E_r+U+ zj;fnULAu*vA9>sOS*pefj8%L=ei7^V#<1OCjUMKgZgv*lq1SV&8@+rW$vGCpO89A{ ziU@5Ft$*e*l9*>f4>AgwqSes4LvkJ(_pz95Ll+oOMrL#1n%|YHu27FCj8TY3WPkD* ztODy&4-D_)zh!L1ySgeDlUJ$R=wPsawUgW!F*KS%8$Ty!wi8C zaXS5@i%u6@>FYW}o_4Jwx(cHXYOSYx|J=F$7;|z6BxD#l!=5hf9ip1FDnPJa?)}8i z1_;VWru6+i-^6>=PiJ7$%CL`WI%mNGH5@#_+<;cZ-pX-^ z8FB%q7Ujs^y;V{&Cx=h8FOIe8#WC&nzpz&%C@18ZgThE*$@I5ZLDvI@e6Ao5Bnf`n z{xagLvAoW(4W`J}y6)Uu)PBp_w>gWX(GJwbX;o9+M)bCLgbndJR22Z2Te8PdOqTdw8l=t3IGx?4 zk=-8-+o-tH2d;^?dhd+YfEY2(P*W>ueIH54{z_*v$AwjUlhQ$6#Rrj_l`#l^Zrn=a zF0m5uyXZxtUkPVFX_Kg{zw!;;|2Mpl^^r9T;b`4UK8Yvv7abY1jtT$-Q??IC3CYsAV zbT&wOITAu_Tv7}~()3b^Bne`eEHBQ1M05{+zf+0@cirSiXYVubfdp)njJZ=-6I3t1 zeJ^Qb$e;DCUZP$KGT_U<>$xZEqEu;(r0T7*l+#0{e$7| zkh`4w2fm|1^6FB#qY}S7g~m5v$XPk@Fuz*3WfmbkTdCh0BNNBuUjaT+G*Nm=R4=<* z0^4*hav({RX~26u9jIApB7DSLR|k)T1x0zwhLL52SmcvJ1XAh64Cs+E2!ryh<*D^} zxeHHVz*DaR=Ydj0CzTg#U2Lk4MB1yH__PxD+@@&uB}HsvWtMYtSouU62!$JIVVb9E zWbRwSIljPx_0+s^oJkhCzCjtk21G_oVs0fQmSH@dzf-w+q>x4A#_Z~ z)i~t*pab|Q)kWtMda6YHwqZb9b_LRm)ExtY8UyyGJYjE`!3!G~UHP&y;fF;5uaiQE zNytjCb0?h4OlI?&0i&_LVQyN4jR|Ik^$GRG-u;vq9FEm4Uict8EUj5?JAVEF9MRa8 zviU#=vC@H=nc6NACcdo%xk7?U`npVJE4O-9f0F0gL6|_GLUYR zWn^kRoPbZfcRzu5t@1%$rf@fVl4!mTj?)3Y#QOw9Sq*f^c%Hug*m1rr7>>tgxHFf^9Niu>= z^kfXYK*kc2k(C|Ra#u}E+RjCi6B_X3bmw9?4g%C9Lmd&EfuX@T#jQlC^A0uB?L>)n zRs(96LlP1CIPr;mQnDB5<;L4f|4RK}_Ar)n8J2nZk+4*|0`yD=`v+MyV>xh1uHS~h zV_&Z#*mx}O!2O$3C%yMbFKut%SZ6qh-7xWKpQD78;(%f~*g1jI>ZSW|th-_w-`ReA zNolbFn|iTNKWYG<?otb{~xs*ShIlbu%Cp7fy zRUaoEe6B->r^!kKtg#jn??9xHPYDbD)tZ){=-h#pUB478yiEg6>C ziw80*haAF;Ka4L|_ZacFHaw4vXvwtJ+eRT(%{j&)kY{;0#+6Y^YpsQ!o&p>3-ckSP zA8{4GDEK{c+5#zKWgo$8wDm#Q>AhrDa@a9CpmL3^O(4-^57nNPYXE=o7t_;!`Bt@- zbEgt?PZ{N0S}gO-$iX8Gr&l3J$_Bu_RXbHaz5WXS8JW@S;~jzs=$WdBRD!+JC!U)=)gLT_^x?OHq05i|jiUSk<;ZbYCQqWg zkU0c4*KzSO#MfEU%B9{kvtU-oeJ{&(uDcDWZec>bX+zeuJ=$q|aSfgAx1kU~f45vU z>qX>^MP!><4ORHX2`G{k6KQ#oPfeurRIC#}=kF?ho3@k3KY_FvyJ>;Bc(M8WGP)s+ zQaSq`91%QvSW|Ssiho0}2}R3<3~k9KW5QpXyH8~3 zFQ+`6wne~Sf3@lBGZ+?`{lS?3UbaiDoY8TW55m(TFAgsE5m`*0@?OX(b*##FT6}rZQ=;N%DK}aO4*AtKG2k$sudY6=ECS9rfNy3} zjOH z?%8~I@4D>RE31#^%0~03=28h7@@yKIxb_@0PPlGCBL60xQKg89Ab)d6CSH)oo!_h^ zbtdGF4N6h-lRiq8*?W@~RxYfpdkB;DhE{gjc>l3x|Jv+7>gyqDTZx>u5fx-kiNHu0 zzg8)&Vl{(=2BQ|k%gAROB;xqr1|u}~t}bU0pA?-Gz(v+dZpw0O_XPuQog zn{xohFfB@cSvu?>eCb0a(I0#4!^hD?qb~#WS7BLBy)^mhEpIEYWG~gKc4E<#EOI@n zqF01sAdk3}M4_UV#wam2$S4X^ZEk?O&%fK*+G~AJ)&nCzP#!=n(5n7Ox!&xeDKxv7 ze(3~3OcF82t~9rJVBlU>DvcRNH5YM|eHx36oIlv$4=aeJ?*V*fb`vsHF-1hy*JaNi z#cvw$BYFfl;G1u5mD~*;{zId?+pE3$RlM-rm_qS=zl)!yPN!f~Y|gk3d=uTv z3=M<{oQ3W`Fs6LmrgZ2DK{_>QuRmSbi^5u(QM^KCeUwqD{8n1A6?4>qA0kWN+(b35 z(Oj18Ib=(=*Ur`11ic|XL}6pswLv?D->dgvW~mhMx9I)*WR3+a_S^ZV9(%iHs3~8Y zzp$G9M9Pb+(>qn@33TxyC6ju=WCGRdPJC@ZvrNh-TF+zpC^xu9d*xd*SY(S~v3 z*g3yJVsA{T7h|37-FCkp;kAHq5#oc-zd9m{G^rPYz zbPbIw+mJ!`wG|nvk9!&c^?7pL$5jgvTK7yq#ZQTrXN1uW1H{VW=Myaclgtjb_0 z)S-&V`B=4)HoFLqj1RqdYdX;4qq4Ez+)+yl`a0}U99YUHq-fn-V*ExKb(a1O2p$Q_ zF=dE4qOHTqw?sSfpfvpHfr1gS8Nm>JwGOJ zr0yc~u`2}FBxUKQrM50vRY3YwhgXHCsnJIoh%xsy(Rv(b9&kR$^F9Rkio*&Sy%Y7v3$F zJ4WxbJpqyx`*YAdF9O<(1G_?F$_}gTuGLq%Z@Kf$sCy#ZL~f7ItJ6c~0c;?Z(OS73 zdLw8)Bqw~;>nNHz_|1two4tA=eeu2UZX0W1WwV_PvIGdM&bUob_a(8`$~>UY&yS4k zyzTTY(qQh`n589Kt-9j9h@H3oY89kfM@sGL<=6ZtJ@XVPG~II`Q2%X7L@UP;MTb8VnZNG7OicBrA@@v$Ap zG=cQz;}&Ut5LB+9&H%buZAd>8N{&T7vI-dm2VY2UUo049+nqY zk@`MS0wTjH;ji3%x99xSUGJ%DoNIAaY6l{DW^dx5b3?Ce_=2VFcS?CsZGp^sRqwsn z_+yx*ocp^*$8ey2FdRukEidCMIde=g0{1T;A1dC-Daz7nh_} zh;kR2`n#`x{O}QWuSUypQ|Y8$XB$H!#;AGy?)+=IPPcL7v{2x;m9Egj4 zMs?Azoax%U!^e%69_m^-JFmy`5Ff>)LN!sxx?W!nz|yGi$Zs6at_hr$S!BG3;tk7q zV#WCprNtw={eoT%^>a_8C(F0HE1wl!GPD<7YUF&@rS`NH;4e#o{X^gZolx{UFqhq(o`hfi+rC7ziNc?3K$53kw#=8U zo=pm2uZ=(WCp0d5yoW-X#)XH9M44U)1(h_i&{O{c0906i`67jY(@sjt6$+NVKXv1G zH{U-KE6*-C%{D}aE5?Q=aV)r%x+;HtW?j+KeDUaEp{5*1HR@2!NS`^+IScNI>7wEu zwSmV#-pC2o9fy5^K>d|$PeuLJ)mlc-{+ry~B+t(i0r>a$HG^v6@k~eWy3ub2!&*z1QfQNQBTJ0r^*+bMchg?N*tM=rZ1=THdE3zz@+O!FPUVryJg@)xjM*Vq*iQa=c;=A``gdY zS5Yf!C3yH8{XLlxh2v#WH?6%|>`8$JR`+UpUbao>TJEb&`EypQTNh7;_{u(I4a&g4 zhoh>uC2XCo1^mvPy}6`Bj8tQ{0nVfQ1JKo#6n5r(pRZBtcFl4N;||)%Zue4+tJiEF zyW}$Zmxguhbx(r)wg2E}9qtOAX`^5Fyf`EZRha7zja&*}gRcNBb}_eCjReu& zC>%wYznd`A=NFDRcCvzGpYNx#xLx;GYP!5IPp~w6%4X+qAHY3^a2q2Q+EV8$E#!s6 zk22C4R!ADk5#di4vSmML!&hu0+Vz~)@n6&2iRZX-3 zFN0QX#uEH{e20osa77h_C5!#1V@*;flnA^2cO|OM{)LrO2&fi)^=$R-i4jYm(#IYX zz?Q9g%5VGj$m>+fxnnKHBfh0HvSB4?xdBMQebH33t6-e-$k82O*XFE0e<5grT2e_W zCuAoMpn$>{D~DZXXyf=N*tHbfuP%ui_QIeU#Xm%7Eu|td+)Urx)ojwI>B$Syxj|R( zr$L1Tp{Dqu6mZH~090U&U=nkqYGs>pSZ?Nhm5Jp(kVf4*@Q>)^U)@j16SAK|nH8hM z$D8Q!O3e!rSdAv}e81QEMJ1#`vX7gmaA)~8Y}{%{SzUgZq)l1Zia-3MeX*~StO{jp zLDfkCCv>69xqht=MCqRK^f!|fr&)ixUrl2;Igvc9p^p1NjuN+T)v=;0SSQWNfv~+* zVPSh6cZ?qR`ttrr@6L4z3Py(f3}pWO+(olLxGj)+AoT|_K%g7(J6#ySd#CjNpf#YE zKgBr+)bc0EgFp^!f3O!&F#10*e$N1)$^D0of06MYHvU|&|Ix;OwDAiA|8dbBr0}0i z*@=w*u<;)@eq-Q2?dvxtzJLCQjsG9m0CO*B5XH~|ZW-LR-$!&!M_(JIY4hm+0PDW9 AN&o-= diff --git a/resources/profiles/Flashforge/machine/FlashForge AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/machine/FlashForge AD5X 0.25 nozzle.json deleted file mode 100644 index 121167183f..0000000000 --- a/resources/profiles/Flashforge/machine/FlashForge AD5X 0.25 nozzle.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "type": "machine", - "name": "Flashforge AD5X 0.25 nozzle", - "inherits": "Flashforge Adventurer 5M 0.25 Nozzle", - "from": "system", - "setting_id": "GM006", - "instantiation": "true", - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": ["0x0"], - "bed_mesh_max": "99999,99999", - "bed_mesh_min": "-99999,-99999", - "bed_mesh_probe_distance": "50,50", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "default_filament_profile": ["Flashforge Generic PLA"], - "default_print_profile": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "deretraction_speed": ["45"], - "disable_m73": "0", - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "130", - "extruder_clearance_height_to_rod": "26", - "extruder_clearance_radius": "58", - "extruder_colour": ["#FCE94F"], - "extruder_offset": ["0x0"], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "gcode_flavor": "klipper", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "is_custom_defined": "0", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "long_retractions_when_cut": ["0"], - "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", - "machine_load_filament_time": "39", - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["20000", "20000"], - "machine_max_acceleration_retracting": ["5000", "5000"], - "machine_max_acceleration_travel": ["20000", "20000"], - "machine_max_acceleration_x": ["20000", "20000"], - "machine_max_acceleration_y": ["20000", "20000"], - "machine_max_acceleration_z": ["500", "500"], - "machine_max_jerk_e": ["2.5", "2.5"], - "machine_max_jerk_x": ["9", "9"], - "machine_max_jerk_y": ["9", "9"], - "machine_max_jerk_z": ["3", "3"], - "machine_max_speed_e": ["30", "30"], - "machine_max_speed_x": ["600", "600"], - "machine_max_speed_y": ["600", "600"], - "machine_max_speed_z": ["20", "20"], - "machine_min_extruding_rate": ["0", "0"], - "machine_min_travel_rate": ["0", "0"], - "machine_pause_gcode": "M25", - "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X50 Y220 Z0.25 F4800\nG1 X70 E1.8 F900\nG1 X200 E6 F1800\nG0 Y219.6\nG1 X130 E3 F1800\nG92 E0", - "machine_tool_change_time": "0", - "machine_unload_filament_time": "39", - "manual_filament_change": "0", - "max_layer_height": ["0.14"], - "min_layer_height": ["0.08"], - "nozzle_diameter": ["0.25"], - "nozzle_height": "2.5", - "nozzle_hrc": "0", - "nozzle_type": "stainless_steel", - "nozzle_volume": "0", - "parking_pos_retraction": "0", - "pellet_modded_printer": "0", - "preferred_orientation": "0", - "printable_area": ["0x0", "220x0", "220x220", "0x220"], - "printable_height": "220", - "printer_model": "Flashforge AD5X", - "printer_notes": "", - "printer_settings_id": "FlashForge AD5X 0.25 nozzle", - "printer_structure": "undefine", - "printer_technology": "FFF", - "printer_variant": "0.25", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": ["100%"], - "retract_length_toolchange": ["5"], - "retract_lift_above": ["0"], - "retract_lift_below": ["0"], - "retract_lift_enforce": ["All Surfaces"], - "retract_restart_extra": ["0"], - "retract_restart_extra_toolchange": ["-3"], - "retract_when_changing_layer": ["1"], - "retraction_distances_when_cut": ["18"], - "retraction_length": ["1"], - "retraction_minimum_travel": ["1"], - "retraction_speed": ["45"], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "1", - "template_custom_gcode": "", - "thumbnails": "140x110/PNG", - "thumbnails_format": "PNG", - "time_cost": "0", - "time_lapse_gcode": "", - "travel_slope": ["3"], - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "version": "2.1.1.0", - "wipe": ["1"], - "wipe_distance": ["2"], - "z_hop": ["0.3"], - "z_hop_types": ["Auto Lift"], - "z_offset": "0" -} diff --git a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.4 nozzle.json deleted file mode 100644 index 2e1e26e6d0..0000000000 --- a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.4 nozzle.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "type": "machine", - "name": "Flashforge AD5X 0.4 nozzle", - "inherits": "Flashforge Adventurer 5M Pro 0.4 Nozzle", - "from": "system", - "setting_id": "GM001", - "instantiation": "true", - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": ["0x0"], - "bed_mesh_max": "99999,99999", - "bed_mesh_min": "-99999,-99999", - "bed_mesh_probe_distance": "50,50", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "default_filament_profile": ["Flashforge Generic PLA"], - "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", - "deretraction_speed": ["45"], - "disable_m73": "0", - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "130", - "extruder_clearance_height_to_rod": "26", - "extruder_clearance_radius": "58", - "extruder_colour": ["#FCE94F"], - "extruder_offset": ["0x0"], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "gcode_flavor": "klipper", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "is_custom_defined": "0", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "long_retractions_when_cut": ["0"], - "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", - "machine_load_filament_time": "39", - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["20000", "20000"], - "machine_max_acceleration_retracting": ["5000", "5000"], - "machine_max_acceleration_travel": ["20000", "20000"], - "machine_max_acceleration_x": ["20000", "20000"], - "machine_max_acceleration_y": ["20000", "20000"], - "machine_max_acceleration_z": ["500", "500"], - "machine_max_jerk_e": ["2.5", "2.5"], - "machine_max_jerk_x": ["9", "9"], - "machine_max_jerk_y": ["9", "9"], - "machine_max_jerk_z": ["3", "3"], - "machine_max_speed_e": ["30", "30"], - "machine_max_speed_x": ["600", "600"], - "machine_max_speed_y": ["600", "600"], - "machine_max_speed_z": ["20", "20"], - "machine_min_extruding_rate": ["0", "0"], - "machine_min_travel_rate": ["0", "0"], - "machine_pause_gcode": "M25", - "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X50 Y220 Z0.25 F4800\nG1 X70 E3 F900\nG1 X200 E10 F1800\nG0 Y219.6\nG1 X130 E5 F1800\nG92 E0", - "machine_tool_change_time": "0", - "machine_unload_filament_time": "39", - "manual_filament_change": "0", - "max_layer_height": ["0.28"], - "min_layer_height": ["0.08"], - "nozzle_diameter": ["0.4"], - "nozzle_height": "4", - "nozzle_hrc": "0", - "nozzle_type": "hardened_steel", - "nozzle_volume": "0", - "parking_pos_retraction": "0", - "pellet_modded_printer": "0", - "preferred_orientation": "0", - "printable_area": ["0x0", "220x0", "220x220", "0x220"], - "printable_height": "220", - "printer_model": "Flashforge AD5X", - "printer_notes": "", - "printer_settings_id": "Flashforge AD5X 0.4 nozzle", - "printer_structure": "undefine", - "printer_technology": "FFF", - "printer_variant": "0.4", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": ["100%"], - "retract_length_toolchange": ["5"], - "retract_lift_above": ["0"], - "retract_lift_below": ["0"], - "retract_lift_enforce": ["All Surfaces"], - "retract_restart_extra": ["0"], - "retract_restart_extra_toolchange": ["-3"], - "retract_when_changing_layer": ["1"], - "retraction_distances_when_cut": ["18"], - "retraction_length": ["2"], - "retraction_minimum_travel": ["1"], - "retraction_speed": ["45"], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "1", - "template_custom_gcode": "", - "thumbnails": "140x110/PNG", - "thumbnails_format": "PNG", - "time_cost": "0", - "time_lapse_gcode": "", - "travel_slope": ["3"], - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "version": "2.1.1.0", - "wipe": ["1"], - "wipe_distance": ["2"], - "z_hop": ["0.4"], - "z_hop_types": ["Auto Lift"], - "z_offset": "0" -} diff --git a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.6 nozzle.json deleted file mode 100644 index 307911a9de..0000000000 --- a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.6 nozzle.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "type": "machine", - "name": "Flashforge AD5X 0.6 nozzle", - "inherits": "Flashforge Adventurer 5M Pro 0.6 Nozzle", - "from": "system", - "setting_id": "GM001", - "instantiation": "true", - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": ["0x0"], - "bed_mesh_max": "99999,99999", - "bed_mesh_min": "-99999,-99999", - "bed_mesh_probe_distance": "50,50", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "default_filament_profile": ["Flashforge Generic PLA"], - "default_print_profile": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", - "deretraction_speed": ["35"], - "disable_m73": "0", - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "130", - "extruder_clearance_height_to_rod": "26", - "extruder_clearance_radius": "58", - "extruder_colour": ["#FCE94F"], - "extruder_offset": ["0x0"], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "gcode_flavor": "klipper", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "is_custom_defined": "0", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "long_retractions_when_cut": ["0"], - "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", - "machine_load_filament_time": "39", - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["20000", "20000"], - "machine_max_acceleration_retracting": ["5000", "5000"], - "machine_max_acceleration_travel": ["20000", "20000"], - "machine_max_acceleration_x": ["20000", "20000"], - "machine_max_acceleration_y": ["20000", "20000"], - "machine_max_acceleration_z": ["500", "500"], - "machine_max_jerk_e": ["2.5", "2.5"], - "machine_max_jerk_x": ["9", "9"], - "machine_max_jerk_y": ["9", "9"], - "machine_max_jerk_z": ["3", "3"], - "machine_max_speed_e": ["35", "30"], - "machine_max_speed_x": ["600", "600"], - "machine_max_speed_y": ["600", "600"], - "machine_max_speed_z": ["20", "20"], - "machine_min_extruding_rate": ["0", "0"], - "machine_min_travel_rate": ["0", "0"], - "machine_pause_gcode": "M25", - "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X50 Y220 Z0.25 F4800\nG1 X70 E3 F900\nG1 X200 E10 F1800\nG0 Y219.6\nG1 X130 E5 F1800\nG92 E0", - "machine_tool_change_time": "0", - "machine_unload_filament_time": "39", - "manual_filament_change": "0", - "max_layer_height": ["0.42"], - "min_layer_height": ["0.15"], - "nozzle_diameter": ["0.6"], - "nozzle_height": "4", - "nozzle_hrc": "0", - "nozzle_type": "hardened_steel", - "nozzle_volume": "0", - "parking_pos_retraction": "0", - "pellet_modded_printer": "0", - "preferred_orientation": "0", - "printable_area": ["0x0", "220x0", "220x220", "0x220"], - "printable_height": "220", - "printer_model": "Flashforge AD5X", - "printer_notes": "", - "printer_settings_id": "Flashforge AD5X 0.6 nozzle", - "printer_structure": "undefine", - "printer_technology": "FFF", - "printer_variant": "0.6", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": ["100%"], - "retract_length_toolchange": ["3"], - "retract_lift_above": ["0"], - "retract_lift_below": ["0"], - "retract_lift_enforce": ["All Surfaces"], - "retract_restart_extra": ["0"], - "retract_restart_extra_toolchange": ["0"], - "retract_when_changing_layer": ["1"], - "retraction_distances_when_cut": ["18"], - "retraction_length": ["1.4"], - "retraction_minimum_travel": ["1"], - "retraction_speed": ["35"], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "1", - "template_custom_gcode": "", - "thumbnails": "140x110/PNG", - "thumbnails_format": "PNG", - "time_cost": "0", - "time_lapse_gcode": "", - "travel_slope": ["3"], - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "version": "2.1.1.0", - "wipe": ["1"], - "wipe_distance": ["2"], - "z_hop": ["0.4"], - "z_hop_types": ["Auto Lift"], - "z_offset": "0" -} diff --git a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.8 nozzle.json deleted file mode 100644 index 30d39190eb..0000000000 --- a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.8 nozzle.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "type": "machine", - "name": "Flashforge AD5X 0.8 nozzle", - "inherits": "Flashforge Adventurer 5M Pro 0.8 Nozzle", - "from": "system", - "setting_id": "GM009", - "instantiation": "true", - "printer_model": "Flashforge AD5X", - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": ["0x0"], - "bed_mesh_max": "99999,99999", - "bed_mesh_min": "-99999,-99999", - "bed_mesh_probe_distance": "50,50", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "default_filament_profile": ["Flashforge Generic PLA"], - "default_print_profile": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", - "deretraction_speed": ["35"], - "disable_m73": "0", - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "130", - "extruder_clearance_height_to_rod": "26", - "extruder_clearance_radius": "58", - "extruder_colour": ["#FCE94F"], - "extruder_offset": ["0x0"], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "gcode_flavor": "klipper", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "is_custom_defined": "0", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "long_retractions_when_cut": ["0"], - "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", - "machine_load_filament_time": "39", - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["20000", "20000"], - "machine_max_acceleration_retracting": ["5000", "5000"], - "machine_max_acceleration_travel": ["20000", "20000"], - "machine_max_acceleration_x": ["20000", "20000"], - "machine_max_acceleration_y": ["20000", "20000"], - "machine_max_acceleration_z": ["500", "500"], - "machine_max_jerk_e": ["2.5", "2.5"], - "machine_max_jerk_x": ["9", "9"], - "machine_max_jerk_y": ["9", "9"], - "machine_max_jerk_z": ["3", "3"], - "machine_max_speed_e": ["30", "30"], - "machine_max_speed_x": ["600", "600"], - "machine_max_speed_y": ["600", "600"], - "machine_max_speed_z": ["20", "20"], - "machine_min_extruding_rate": ["0", "0"], - "machine_min_travel_rate": ["0", "0"], - "machine_pause_gcode": "M25", - "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X50 Y220 Z0.25 F4800\nG1 X70 E3 F900\nG1 X200 E10 F1800\nG0 Y219.6\nG1 X130 E5 F1800\nG92 E0", - "machine_tool_change_time": "0", - "machine_unload_filament_time": "39", - "manual_filament_change": "0", - "max_layer_height": ["0.56"], - "min_layer_height": ["0.24"], - "nozzle_diameter": ["0.8"], - "nozzle_height": "4", - "nozzle_hrc": "0", - "nozzle_type": "hardened_steel", - "nozzle_volume": "0", - "parking_pos_retraction": "0", - "pellet_modded_printer": "0", - "preferred_orientation": "0", - "printable_area": ["0x0", "220x0", "220x220", "0x220"], - "printable_height": "220", - "printer_notes": "", - "printer_settings_id": "Flashforge AD5X 0.8 nozzle", - "printer_structure": "undefine", - "printer_technology": "FFF", - "printer_variant": "0.8", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": ["100%"], - "retract_length_toolchange": ["3"], - "retract_lift_above": ["0"], - "retract_lift_below": ["0"], - "retract_lift_enforce": ["All Surfaces"], - "retract_restart_extra": ["0"], - "retract_restart_extra_toolchange": ["0"], - "retract_when_changing_layer": ["1"], - "retraction_distances_when_cut": ["18"], - "retraction_length": ["1.5"], - "retraction_minimum_travel": ["2"], - "retraction_speed": ["35"], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "1", - "template_custom_gcode": "", - "thumbnails": "140x110/PNG", - "thumbnails_format": "PNG", - "time_cost": "0", - "time_lapse_gcode": "", - "travel_slope": ["3"], - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "version": "2.1.1.0", - "wipe": ["1"], - "wipe_distance": ["2"], - "z_hop": ["0.4"], - "z_hop_types": ["Auto Lift"], - "z_offset": "0" -} diff --git a/resources/profiles/Flashforge/machine/Flashforge AD5X.json b/resources/profiles/Flashforge/machine/Flashforge AD5X.json deleted file mode 100644 index 0875a00fda..0000000000 --- a/resources/profiles/Flashforge/machine/Flashforge AD5X.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "machine_model", - "name": "Flashforge AD5X", - "model_id": "Flashforge-AD5X", - "nozzle_diameter": "0.25;0.4;0.6;0.8", - "machine_tech": "FFF", - "family": "Flashforge", - "bed_model": "flashforge_adventurer5m_series_buildplate_model.STL", - "bed_texture": "flashforge_ad5x_buildplate_texture.png", - "hotend_model": "flashforge_adventurer_5m_series_hotend.STL", - "url": "", - "default_materials": "Flashforge Generic ABS;Flashforge Generic PETG;Flashforge Generic PLA" -} diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series 0.4 nozzle.json index deb1d52b13..d45dacd016 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series 0.4 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series 0.4 nozzle.json @@ -1,14 +1,14 @@ { - "type": "machine", - "setting_id": "GM001", - "name": "Flashforge Adventurer 3 Series 0.4 Nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_adventurer3_common", - "printer_model": "Flashforge Adventurer 3 Series", - "default_print_profile": "0.20mm Standard @Flashforge AD3 0.4 Nozzle", - "nozzle_diameter": ["0.4", "0.4"], - "printer_variant": "0.4", - "max_layer_height": ["0.4", "0.4"], - "min_layer_height": ["0.01", "0.01"] + "type": "machine", + "setting_id": "GM001", + "name": "Flashforge Adventurer 3 Series 0.4 Nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_adventurer3_common", + "printer_model": "Flashforge Adventurer 3 Series", + "default_print_profile": "0.20mm Standard @Flashforge AD3 0.4 Nozzle", + "nozzle_diameter": [ "0.4", "0.4" ], + "printer_variant": "0.4", + "max_layer_height": [ "0.4", "0.4" ], + "min_layer_height": [ "0.01", "0.01" ] } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series 0.6 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series 0.6 nozzle.json index cc45649dde..39153a5aab 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series 0.6 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series 0.6 nozzle.json @@ -1,14 +1,14 @@ { - "type": "machine", - "setting_id": "GM001", - "name": "Flashforge Adventurer 3 Series 0.6 Nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_adventurer3_common", - "printer_model": "Flashforge Adventurer 3 Series", - "default_print_profile": "0.20mm Standard @Flashforge AD3 0.6 Nozzle", - "nozzle_diameter": ["0.6", "0.6"], - "printer_variant": "0.6", - "max_layer_height": ["0.6", "0.6"], - "min_layer_height": ["0.01", "0.01"] + "type": "machine", + "setting_id": "GM001", + "name": "Flashforge Adventurer 3 Series 0.6 Nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_adventurer3_common", + "printer_model": "Flashforge Adventurer 3 Series", + "default_print_profile": "0.20mm Standard @Flashforge AD3 0.6 Nozzle", + "nozzle_diameter": [ "0.6", "0.6" ], + "printer_variant": "0.6", + "max_layer_height": [ "0.6", "0.6" ], + "min_layer_height": [ "0.01", "0.01" ] } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series.json index ef1159312a..e99dcb7406 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series.json @@ -1,13 +1,12 @@ { - "type": "machine_model", - "name": "Flashforge Adventurer 3 Series", - "model_id": "Flashforge-Adventurer-3Series", - "nozzle_diameter": "0.4;0.6", - "machine_tech": "FFF", - "family": "Flashforge", - "bed_model": "flashforge_adventurer3_series_buildplate_model.STL", - "bed_texture": "flashforge_adventurer3_buildplate_texture.png", - "default_bed_type": "Textured PEI Plate", - "hotend_model": "", - "default_materials": "Flashforge ABS;Flashforge PETG;Flashforge PLA" + "type": "machine_model", + "name": "Flashforge Adventurer 3 Series", + "model_id": "Flashforge-Adventurer-3Series", + "nozzle_diameter": "0.4;0.6", + "machine_tech": "FFF", + "family": "Flashforge", + "bed_model": "flashforge_adventurer3_series_buildplate_model.STL", + "bed_texture": "flashforge_adventurer3_buildplate_texture.png", + "hotend_model": "", + "default_materials": "Flashforge ABS;Flashforge PETG;Flashforge PLA" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.25 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.25 Nozzle.json index 79ed5bcec5..02d4534ca7 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.25 Nozzle.json @@ -1,18 +1,18 @@ { - "type": "machine", - "setting_id": "GM006", - "name": "Flashforge Adventurer 5M 0.25 Nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_adventurer5m_common", - "printer_model": "Flashforge Adventurer 5M", - "default_print_profile": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "nozzle_diameter": ["0.25"], - "printer_variant": "0.25", - "max_layer_height": ["0.14"], - "min_layer_height": ["0.08"], - "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG90 E0\nM83\nG1 E-1 F600\nG1 E8 F300\nG1 X85 Y110 Z0.2 F1200\nG1 X-110 E15 F2400\nG1 Y0 E4 F2400\nG1 X-109.6 F2400\nG1 Y110 E5 F2400\nG92 E0", - "retraction_length": ["1"], - "z_hop": ["0.3"], - "nozzle_type": "stainless_steel" -} + "type": "machine", + "setting_id": "GM006", + "name": "Flashforge Adventurer 5M 0.25 Nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_adventurer5m_common", + "printer_model": "Flashforge Adventurer 5M", + "default_print_profile": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", + "nozzle_diameter": [ "0.25" ], + "printer_variant": "0.25", + "max_layer_height": [ "0.14" ], + "min_layer_height": [ "0.08" ], + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG90 E0\nM83\nG1 E-1 F600\nG1 E8 F300\nG1 X85 Y110 Z0.2 F1200\nG1 X-110 E15 F2400\nG1 Y0 E4 F2400\nG1 X-109.6 F2400\nG1 Y110 E5 F2400\nG92 E0", + "retraction_length": [ "1" ], + "z_hop": [ "0.3" ], + "nozzle_type": "stainless_steel" +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.4 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.4 Nozzle.json index b182693c4e..5d8d6652d6 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.4 Nozzle.json @@ -1,16 +1,16 @@ { - "type": "machine", - "setting_id": "GM001", - "name": "Flashforge Adventurer 5M 0.4 Nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_adventurer5m_common", - "printer_model": "Flashforge Adventurer 5M", - "default_print_profile": "0.20mm Standard @Flashforge AD5M 0.4 Nozzle", - "nozzle_diameter": ["0.4"], - "printer_variant": "0.4", - "max_layer_height": ["0.28"], - "min_layer_height": ["0.08"], - "retraction_length": ["0.8"], - "nozzle_type": "stainless_steel" + "type": "machine", + "setting_id": "GM001", + "name": "Flashforge Adventurer 5M 0.4 Nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_adventurer5m_common", + "printer_model": "Flashforge Adventurer 5M", + "default_print_profile": "0.20mm Standard @Flashforge AD5M 0.4 Nozzle", + "nozzle_diameter": [ "0.4" ], + "printer_variant": "0.4", + "max_layer_height": [ "0.28" ], + "min_layer_height": [ "0.08" ], + "retraction_length": [ "0.8" ], + "nozzle_type": "stainless_steel" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.6 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.6 Nozzle.json index c9eb2f8c1d..f7aeea7f53 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.6 Nozzle.json @@ -1,16 +1,18 @@ { - "type": "machine", - "setting_id": "GM001", - "name": "Flashforge Adventurer 5M 0.6 Nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_adventurer5m_common", - "printer_model": "Flashforge Adventurer 5M", - "default_print_profile": "0.30mm Standard @Flashforge AD5M 0.6 Nozzle", - "nozzle_diameter": ["0.6"], - "printer_variant": "0.6", - "max_layer_height": ["0.42"], - "min_layer_height": ["0.15"], - "retraction_length": ["1.2"], - "nozzle_type": "hardened_steel" + "type": "machine", + "setting_id": "GM001", + "name": "Flashforge Adventurer 5M 0.6 Nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_adventurer5m_common", + "printer_model": "Flashforge Adventurer 5M", + "default_print_profile": "0.30mm Standard @Flashforge AD5M 0.6 Nozzle", + "nozzle_diameter": [ "0.6" ], + "printer_variant": "0.6", + "max_layer_height": [ "0.42" ], + "min_layer_height": [ "0.15" ], + "retraction_length": [ "1.2" ], + "nozzle_type": "hardened_steel" + + } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.8 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.8 Nozzle.json index ec46d07d1f..002249e4c8 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.8 Nozzle.json @@ -1,18 +1,18 @@ { - "type": "machine", - "setting_id": "GM005", - "name": "Flashforge Adventurer 5M 0.8 Nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_adventurer5m_common", - "printer_model": "Flashforge Adventurer 5M", - "default_print_profile": "0.40mm Standard @Flashforge AD5M 0.8 Nozzle", - "nozzle_diameter": ["0.8"], - "printer_variant": "0.8", - "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG1 E-1.5 F600\nG1 E12 F800\nG1 X85 Y110 Z0.3 F1200\nG1 X-110 E30 F2400\nG1 Y0 E8 F2400\nG1 X-109.6 F2400\nG1 Y110 E10 F2400\nG92 E0", - "max_layer_height": ["0.56"], - "min_layer_height": ["0.24"], - "retraction_length": ["1.5"], - "nozzle_type": "hardened_steel", - "z_hop": ["0"] + "type": "machine", + "setting_id": "GM005", + "name": "Flashforge Adventurer 5M 0.8 Nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_adventurer5m_common", + "printer_model": "Flashforge Adventurer 5M", + "default_print_profile": "0.40mm Standard @Flashforge AD5M 0.8 Nozzle", + "nozzle_diameter": [ "0.8" ], + "printer_variant": "0.8", + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG1 E-1.5 F600\nG1 E12 F800\nG1 X85 Y110 Z0.3 F1200\nG1 X-110 E30 F2400\nG1 Y0 E8 F2400\nG1 X-109.6 F2400\nG1 Y110 E10 F2400\nG92 E0", + "max_layer_height": [ "0.56" ], + "min_layer_height": [ "0.24" ], + "retraction_length": [ "1.5" ], + "nozzle_type": "hardened_steel", + "z_hop": ["0"] } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.25 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.25 Nozzle.json index bf2ae5cd8e..021520222c 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.25 Nozzle.json @@ -1,18 +1,18 @@ { - "type": "machine", - "setting_id": "GM010", - "name": "Flashforge Adventurer 5M Pro 0.25 Nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_adventurer5m_common", - "printer_model": "Flashforge Adventurer 5M Pro", - "default_print_profile": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "nozzle_diameter": ["0.25"], - "printer_variant": "0.25", - "max_layer_height": ["0.14"], - "min_layer_height": ["0.08"], - "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG90 E0\nM83\nG1 E-1 F600\nG1 E8 F300\nG1 X85 Y110 Z0.2 F1200\nG1 X-110 E15 F2400\nG1 Y0 E4 F2400\nG1 X-109.6 F2400\nG1 Y110 E5 F2400\nG92 E0", - "retraction_length": ["1"], - "z_hop": ["0.3"], - "nozzle_type": "stainless_steel" -} + "type": "machine", + "setting_id": "GM010", + "name": "Flashforge Adventurer 5M Pro 0.25 Nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_adventurer5m_common", + "printer_model": "Flashforge Adventurer 5M Pro", + "default_print_profile": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "nozzle_diameter": [ "0.25" ], + "printer_variant": "0.25", + "max_layer_height": [ "0.14" ], + "min_layer_height": [ "0.08" ], + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG90 E0\nM83\nG1 E-1 F600\nG1 E8 F300\nG1 X85 Y110 Z0.2 F1200\nG1 X-110 E15 F2400\nG1 Y0 E4 F2400\nG1 X-109.6 F2400\nG1 Y110 E5 F2400\nG92 E0", + "retraction_length": [ "1" ], + "z_hop": [ "0.3" ], + "nozzle_type": "stainless_steel" +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.4 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.4 Nozzle.json index c634d59675..eaad7c2df1 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.4 Nozzle.json @@ -1,16 +1,16 @@ { - "type": "machine", - "setting_id": "GM001", - "name": "Flashforge Adventurer 5M Pro 0.4 Nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_adventurer5m_common", - "printer_model": "Flashforge Adventurer 5M Pro", - "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", - "nozzle_diameter": ["0.4"], - "printer_variant": "0.4", - "max_layer_height": ["0.28"], - "min_layer_height": ["0.08"], - "retraction_length": ["0.8"], - "nozzle_type": "stainless_steel" + "type": "machine", + "setting_id": "GM001", + "name": "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_adventurer5m_common", + "printer_model": "Flashforge Adventurer 5M Pro", + "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "nozzle_diameter": [ "0.4" ], + "printer_variant": "0.4", + "max_layer_height": [ "0.28" ], + "min_layer_height": [ "0.08" ], + "retraction_length": [ "0.8" ], + "nozzle_type": "stainless_steel" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.6 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.6 Nozzle.json index 81d2575fd0..9c7b55acbc 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.6 Nozzle.json @@ -1,16 +1,18 @@ { - "type": "machine", - "setting_id": "GM001", - "name": "Flashforge Adventurer 5M Pro 0.6 Nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_adventurer5m_common", - "printer_model": "Flashforge Adventurer 5M Pro", - "default_print_profile": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", - "nozzle_diameter": ["0.6"], - "printer_variant": "0.6", - "max_layer_height": ["0.42"], - "min_layer_height": ["0.15"], - "retraction_length": ["1.2"], - "nozzle_type": "hardened_steel" + "type": "machine", + "setting_id": "GM001", + "name": "Flashforge Adventurer 5M Pro 0.6 Nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_adventurer5m_common", + "printer_model": "Flashforge Adventurer 5M Pro", + "default_print_profile": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", + "nozzle_diameter": [ "0.6" ], + "printer_variant": "0.6", + "max_layer_height": [ "0.42" ], + "min_layer_height": [ "0.15" ], + "retraction_length": [ "1.2" ], + "nozzle_type": "hardened_steel" + + } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.8 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.8 Nozzle.json index 06d358adce..262696fc3c 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.8 Nozzle.json @@ -1,18 +1,18 @@ { - "type": "machine", - "setting_id": "GM009", - "name": "Flashforge Adventurer 5M Pro 0.8 Nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_adventurer5m_common", - "printer_model": "Flashforge Adventurer 5M Pro", - "default_print_profile": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", - "nozzle_diameter": ["0.8"], - "printer_variant": "0.8", - "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG1 E-1.5 F600\nG1 E12 F800\nG1 X85 Y110 Z0.3 F1200\nG1 X-110 E30 F2400\nG1 Y0 E8 F2400\nG1 X-109.6 F2400\nG1 Y110 E10 F2400\nG92 E0", - "max_layer_height": ["0.56"], - "min_layer_height": ["0.24"], - "retraction_length": ["1.5"], - "nozzle_type": "hardened_steel", - "z_hop": ["0"] + "type": "machine", + "setting_id": "GM009", + "name": "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_adventurer5m_common", + "printer_model": "Flashforge Adventurer 5M Pro", + "default_print_profile": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", + "nozzle_diameter": [ "0.8" ], + "printer_variant": "0.8", + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG1 E-1.5 F600\nG1 E12 F800\nG1 X85 Y110 Z0.3 F1200\nG1 X-110 E30 F2400\nG1 Y0 E8 F2400\nG1 X-109.6 F2400\nG1 Y110 E10 F2400\nG92 E0", + "max_layer_height": [ "0.56" ], + "min_layer_height": [ "0.24" ], + "retraction_length": [ "1.5" ], + "nozzle_type": "hardened_steel", + "z_hop": ["0"] } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro.json index 8d0ed280fa..a9e9fc036a 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro.json @@ -1,13 +1,12 @@ { "type": "machine_model", "name": "Flashforge Adventurer 5M Pro", - "model_id": "Flashforge-Adventurer-5M-Pro", + "model_id": "Flashforge Adventurer 5M Pro", "nozzle_diameter": "0.25;0.4;0.6;0.8", "machine_tech": "FFF", "family": "Flashforge", "bed_model": "flashforge_adventurer5m_series_buildplate_model.STL", "bed_texture": "flashforge_adventurer5m_buildplate_texture.png", - "default_bed_type": "Textured PEI Plate", "hotend_model": "flashforge_adventurer_5m_series_hotend.STL", "default_materials": "Flashforge Generic ABS;Flashforge Generic PETG;Flashforge Generic PLA" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M.json index f28f67d9b9..2211a634bb 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M.json @@ -1,13 +1,12 @@ { - "type": "machine_model", - "name": "Flashforge Adventurer 5M", - "model_id": "Flashforge-Adventurer-5M", - "nozzle_diameter": "0.25;0.4;0.6;0.8", - "machine_tech": "FFF", - "family": "Flashforge", - "bed_model": "flashforge_adventurer5m_series_buildplate_model.STL", - "bed_texture": "flashforge_adventurer5m_buildplate_texture.png", - "default_bed_type": "Textured PEI Plate", - "hotend_model": "flashforge_adventurer_5m_series_hotend.STL", - "default_materials": "Flashforge Generic ABS;Flashforge Generic PETG;Flashforge Generic PLA" + "type": "machine_model", + "name": "Flashforge Adventurer 5M", + "model_id": "Flashforge-Adventurer-5M", + "nozzle_diameter": "0.25;0.4;0.6;0.8", + "machine_tech": "FFF", + "family": "Flashforge", + "bed_model": "flashforge_adventurer5m_series_buildplate_model.STL", + "bed_texture": "flashforge_adventurer5m_buildplate_texture.png", + "hotend_model": "flashforge_adventurer_5m_series_hotend.STL", + "default_materials": "Flashforge Generic ABS;Flashforge Generic PETG;Flashforge Generic PLA" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider 2s 0.4 nozzle.json index fc0d075308..b45d8289b5 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 2s 0.4 nozzle.json @@ -1,55 +1,60 @@ { - "type": "machine", - "setting_id": "GM001", - "name": "Flashforge Guider 2s 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_flashforge_common", - "printer_model": "Flashforge Guider 2s", - "gcode_flavor": "marlin", - "default_print_profile": "0.20mm Standard @Flashforge Guider 2s 0.4 nozzle", - "nozzle_diameter": ["0.4"], - "printer_variant": "0.4", - "printable_area": ["-140x-125", "140x-125", "140x125", "-140x125"], - "printable_height": "300", - "extruder_offset": ["-20", "10"], - "extruder_clearance_height_to_lid": "70", - "extruder_clearance_height_to_rod": "23", - "extruder_clearance_radius": "40", - "use_relative_e_distances": "0", - "auxiliary_fan": "1", - "machine_max_acceleration_e": ["200", "200"], - "machine_max_acceleration_extruding": ["200", "200"], - "machine_max_acceleration_retracting": ["200", "200"], - "machine_max_acceleration_travel": ["200", "200"], - "machine_max_acceleration_x": ["200", "200"], - "machine_max_acceleration_y": ["200", "200"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_speed_e": ["100", "100"], - "machine_max_speed_x": ["200", "200"], - "machine_max_speed_y": ["200", "200"], - "machine_max_speed_z": ["20", "20"], - "machine_max_jerk_e": ["2.5", "2.5"], - "machine_max_jerk_x": ["9", "9"], - "machine_max_jerk_y": ["9", "9"], - "machine_max_jerk_z": ["3", "3"], - "max_layer_height": ["0.8"], - "min_layer_height": ["0.02"], - "printer_settings_id": "Flashforge", - "retraction_minimum_travel": ["1"], - "retract_before_wipe": ["100%"], - "retraction_length": ["1"], - "retract_length_toolchange": ["2"], - "retraction_speed": ["100"], - "z_hop": ["0"], - "single_extruder_multi_material": "0", - "change_filament_gcode": "", - "machine_pause_gcode": "M25", - "default_filament_profile": ["Flashforge Generic PLA"], - "machine_start_gcode": "M118 X10 Y10 Z10\nM140 S[bed_temperature_initial_layer_single]; set initial bed temp\nM104 S[nozzle_temperature_initial_layer] T0; set initial extruder temp\nM107; disable cooling fan\nG90; set to absolute positioning\nG28; home axes\nM132 X Y A B; recall home offsets from EPROM\nG1 Z50.0 F420; adjust Z\nG161 X Y F3300\nM7; wait for bed to stabilize\nM6 T0; wait for extruder to stabilize\nM651 S255; start case fan\nG1 Z0.3 F3600; move down to purge\nG92 E0; zero extruders\nG1 X120 Y-125 E20 F2000; extrude a line of filament across the front edge of the bed\nG1 X130 Y-125 F180; wait for ooze\nG1 X140 Y-125 F5000; fast wipe\nG1 Z1 F100; lift\nG92 E0; zero extruders again\nG1 E-1.0000 F1800", - "machine_end_gcode": "M104 S0 T0; cool down extruder\nM140 S0 T0; cool down bed\nG162 Z F1800\nG28 X Y; home axes\nM132 X Y A B; recall home offsets from EPROM\nM652; turn off rear fan\nG91; set to relative positioning\nM18; disable stepper motors", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "wipe_distance": "2", - "nozzle_type": "undefine" + "type": "machine", + "setting_id": "GM001", + "name": "Flashforge Guider 2s 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_flashforge_common", + "printer_model": "Flashforge Guider 2s", + "gcode_flavor": "marlin", + "default_print_profile": "0.20mm Standard @Flashforge Guider 2s 0.4 nozzle", + "nozzle_diameter": [ "0.4" ], + "printer_variant": "0.4", + "printable_area": [ + "-140x-125", + "140x-125", + "140x125", + "-140x125" + ], + "printable_height": "300", + "extruder_offset": [ "-20", "10" ], + "extruder_clearance_height_to_lid": "70", + "extruder_clearance_height_to_rod": "23", + "extruder_clearance_radius": "40", + "use_relative_e_distances": "0", + "auxiliary_fan": "1", + "machine_max_acceleration_e": [ "200", "200" ], + "machine_max_acceleration_extruding": [ "200", "200" ], + "machine_max_acceleration_retracting": [ "200", "200" ], + "machine_max_acceleration_travel": [ "200", "200" ], + "machine_max_acceleration_x": [ "200", "200" ], + "machine_max_acceleration_y": [ "200", "200" ], + "machine_max_acceleration_z": [ "200", "200" ], + "machine_max_speed_e": [ "100", "100" ], + "machine_max_speed_x": [ "200", "200" ], + "machine_max_speed_y": [ "200", "200" ], + "machine_max_speed_z": [ "20", "20" ], + "machine_max_jerk_e": [ "2.5", "2.5" ], + "machine_max_jerk_x": [ "9", "9" ], + "machine_max_jerk_y": [ "9", "9" ], + "machine_max_jerk_z": [ "3", "3" ], + "max_layer_height": [ "0.8" ], + "min_layer_height": [ "0.02" ], + "printer_settings_id": "Flashforge", + "retraction_minimum_travel": [ "1" ], + "retract_before_wipe": [ "100%" ], + "retraction_length": [ "1" ], + "retract_length_toolchange": [ "2" ], + "retraction_speed": [ "100" ], + "z_hop": [ "0" ], + "single_extruder_multi_material": "0", + "change_filament_gcode": "", + "machine_pause_gcode": "M25", + "default_filament_profile": [ "Flashforge Generic PLA" ], + "machine_start_gcode": "M118 X10 Y10 Z10\nM140 S[bed_temperature_initial_layer_single]; set initial bed temp\nM104 S[nozzle_temperature_initial_layer] T0; set initial extruder temp\nM107; disable cooling fan\nG90; set to absolute positioning\nG28; home axes\nM132 X Y A B; recall home offsets from EPROM\nG1 Z50.0 F420; adjust Z\nG161 X Y F3300\nM7; wait for bed to stabilize\nM6 T0; wait for extruder to stabilize\nM651 S255; start case fan\nG1 Z0.3 F3600; move down to purge\nG92 E0; zero extruders\nG1 X120 Y-125 E20 F2000; extrude a line of filament across the front edge of the bed\nG1 X130 Y-125 F180; wait for ooze\nG1 X140 Y-125 F5000; fast wipe\nG1 Z1 F100; lift\nG92 E0; zero extruders again\nG1 E-1.0000 F1800", + "machine_end_gcode": "M104 S0 T0; cool down extruder\nM140 S0 T0; cool down bed\nG162 Z F1800\nG28 X Y; home axes\nM132 X Y A B; recall home offsets from EPROM\nM652; turn off rear fan\nG91; set to relative positioning\nM18; disable stepper motors", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "wipe_distance": "2", + "nozzle_type": "undefine" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json index c4c7fc1537..6f30c8ede5 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json @@ -1,70 +1,140 @@ { "type": "machine", - "setting_id": "GM001", - "from": "system", - "instantiation": "true", + "setting_id": "GM001", + "from": "system", + "instantiation": "true", "auxiliary_fan": "1", "bed_custom_model": "", "bed_custom_texture": "", - "bed_exclude_area": ["0x0"], + "bed_exclude_area": [ + "0x0" + ], "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0", "best_object_pos": "0.5,0.5", "change_extrusion_role_gcode": "", "change_filament_gcode": "; change filament start\n{if total_toolchanges == 0 and current_extruder == 1}\nM104 S0 T0\n{elsif total_toolchanges > 0 and current_extruder == 0}\nM104 S{nozzle_temperature[0]}\n{if layer_z == initial_layer_print_height}\nT1\nM109 S{nozzle_temperature_initial_layer[1]} T1\n{else}\nT1\nM109 S{nozzle_temperature[1]} T1\n{endif}\n{elsif total_toolchanges > 0 and current_extruder == 1}\nM104 S{nozzle_temperature[1]}\n{if layer_z == initial_layer_print_height}\nT0\nM109 S{nozzle_temperature_initial_layer[0]} T0\n{else}\nT0\nM109 S{nozzle_temperature[0]} T0\n{endif}\n{endif}\n", "cooling_tube_length": "0", "cooling_tube_retraction": "0", - "default_filament_profile": ["Flashforge Generic PLA @G3U"], + "default_filament_profile": [ "Flashforge Generic PLA @G3U" ], "default_print_profile": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", - "deretraction_speed": ["35"], + "deretraction_speed": [ + "35" + ], "enable_filament_ramming": "0", "extra_loading_move": "0", "extruder_clearance_height_to_lid": "150", "extruder_clearance_height_to_rod": "50", "extruder_clearance_radius": "57", - "extruder_colour": ["#FCE94F"], - "extruder_offset": ["0x0"], + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], "fan_kickstart": "0", "fan_speedup_overhangs": "1", "fan_speedup_time": "0", - "gcode_flavor": "klipper", + "gcode_flavor": "marlin", "high_current_on_filament_swap": "0", "host_type": "octoprint", "inherits": "fdm_guider3_common", "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 T0\nM104 S0 T1", "machine_load_filament_time": "0", - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["20000", "20000"], - "machine_max_acceleration_retracting": ["5000", "5000"], - "machine_max_acceleration_travel": ["20000", "20000"], - "machine_max_acceleration_x": ["20000", "20000"], - "machine_max_acceleration_y": ["20000", "20000"], - "machine_max_acceleration_z": ["500", "500"], - "machine_max_jerk_e": ["2.5", "2.5"], - "machine_max_jerk_x": ["9", "9"], - "machine_max_jerk_y": ["9", "9"], - "machine_max_jerk_z": ["3", "3"], - "machine_max_speed_e": ["30", "30"], - "machine_max_speed_x": ["600", "600"], - "machine_max_speed_y": ["600", "600"], - "machine_max_speed_z": ["20", "20"], - "machine_min_extruding_rate": ["0", "0"], - "machine_min_travel_rate": ["0", "0"], + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "20000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "20000", + "20000" + ], + "machine_max_acceleration_y": [ + "20000", + "20000" + ], + "machine_max_acceleration_z": [ + "500", + "500" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_max_speed_e": [ + "30", + "30" + ], + "machine_max_speed_x": [ + "600", + "600" + ], + "machine_max_speed_y": [ + "600", + "600" + ], + "machine_max_speed_z": [ + "20", + "20" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], "machine_pause_gcode": "M25", "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\n{if total_toolchanges < 1}\nM109 S[nozzle_temperature_initial_layer] T[initial_extruder]\nT[initial_extruder]\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\n{else}\nM109 S{nozzle_temperature_initial_layer[0] - 30} T0\nM109 S{nozzle_temperature_initial_layer[1] - 30} T1\n{if initial_extruder==0}\nM109 S{nozzle_temperature_initial_layer[1]} T1\nT1\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG1 E-15 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\nM104 S{nozzle_temperature_initial_layer[1]-30} T1\nM109 S{nozzle_temperature_initial_layer[0]} T0\nT0\nG1 Z0.3 F400\nG1 X145 Y{random(-160,-152)} F4800\nG1 X95 Y{random(-160,-152)} E30 F400\nG1 E-0.8 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X80 F4800 ; move away from purge line\nG92 E0\n{elsif current_extruder == 1}\nM109 S{nozzle_temperature_initial_layer[0]} T0\nT0\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG1 E-15 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\nM104 S{nozzle_temperature_initial_layer[0]-30} T0\nM109 S{nozzle_temperature_initial_layer[1]} T1\nT1\nG1 Z0.3 F400\nG1 X145 Y{random(-160,-152)} F4800\nG1 X95 Y{random(-160,-152)} E30 F400\nG1 E-0.8 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X80 F4800 ; move away from purge line\nG92 E0\n{endif}\n{endif}\n\n", "machine_unload_filament_time": "0", "manual_filament_change": "0", - "max_layer_height": ["0.28"], - "min_layer_height": ["0.08"], + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], "name": "Flashforge Guider 3 Ultra 0.4 Nozzle", - "nozzle_diameter": ["0.4"], + "nozzle_diameter": [ + "0.4" + ], "nozzle_hrc": "0", "nozzle_type": "stainless_steel", "nozzle_volume": "0", "parking_pos_retraction": "0", "print_host": "", "print_host_webui": "", - "printable_area": ["-150x-165", "150x-165", "150x165", "-150x165"], + "printable_area": [ + "-150x-165", + "150x-165", + "150x165", + "-150x165" + ], "printable_height": "600", "printer_model": "Flashforge Guider 3 Ultra", "printer_notes": "", @@ -80,33 +150,65 @@ "printhost_ssl_ignore_revoke": "0", "printhost_user": "", "purge_in_prime_tower": "0", - "retract_before_wipe": ["100%"], - "retract_length_toolchange": ["15"], - "retract_lift_above": ["0"], - "retract_lift_below": ["0"], - "retract_lift_enforce": ["All Surfaces"], - "retract_restart_extra": ["0"], - "retract_restart_extra_toolchange": ["-0.8"], - "retract_when_changing_layer": ["1"], - "retraction_length": ["0.8"], - "retraction_minimum_travel": ["1"], - "retraction_speed": ["35"], + "retract_before_wipe": [ + "100%" + ], + "retract_length_toolchange": [ + "15" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "0" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "-0.8" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_length": [ + "0.8" + ], + "retraction_minimum_travel": [ + "1" + ], + "retraction_speed": [ + "35" + ], "scan_first_layer": "0", "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", "template_custom_gcode": "", - "thumbnails": ["140x110"], + "thumbnails": [ + "140x110" + ], "thumbnails_format": "PNG", "time_cost": "0", "time_lapse_gcode": "", "upward_compatible_machine": [], "use_firmware_retraction": "0", "use_relative_e_distances": "1", - "wipe": ["1"], - "wipe_distance": ["2"], - "z_hop": ["0.4"], - "z_hop_types": ["Normal Lift"], + "wipe": [ + "1" + ], + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0.4" + ], + "z_hop_types": [ + "Normal Lift" + ], "z_offset": "0" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json index 2e7744c675..7d76aea8eb 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json @@ -11,27 +11,52 @@ "change_filament_gcode": "; change filament start\n{if total_toolchanges == 0 and current_extruder == 1}\nM104 S0 T0\n{elsif total_toolchanges > 0 and current_extruder == 0}\nM104 S{nozzle_temperature[0]}\n{if layer_z == initial_layer_print_height}\nT1\nM109 S{nozzle_temperature_initial_layer[1]} T1\n{else}\nT1\nM109 S{nozzle_temperature[1]} T1\n{endif}\n{elsif total_toolchanges > 0 and current_extruder == 1}\nM104 S{nozzle_temperature[1]}\n{if layer_z == initial_layer_print_height}\nT0\nM109 S{nozzle_temperature_initial_layer[0]} T0\n{else}\nT0\nM109 S{nozzle_temperature[0]} T0\n{endif}\n{endif}\n", "cooling_tube_length": "0", "cooling_tube_retraction": "0", - "default_filament_profile": ["Flashforge Generic PLA @G3U 0.6 Nozzle"], + "default_filament_profile": [ "Flashforge Generic PLA @G3U 0.6 Nozzle" ], "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "deretraction_speed": ["30"], + "deretraction_speed": [ + "30" + ], "extra_loading_move": "0", "extruder_clearance_height_to_rod": "50", "extruder_clearance_radius": "57", "is_custom_defined": "0", "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 T0\nM104 S0 T1", "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\n{if total_toolchanges < 1}\nM109 S[nozzle_temperature_initial_layer] T[initial_extruder]\nT[initial_extruder]\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\n{else}\nM109 S{nozzle_temperature_initial_layer[0] - 30} T0\nM109 S{nozzle_temperature_initial_layer[1] - 30} T1\n{if initial_extruder==0}\nM109 S{nozzle_temperature_initial_layer[1]} T1\nT1\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG1 E-15 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\nM104 S{nozzle_temperature_initial_layer[1]-30} T1\nM109 S{nozzle_temperature_initial_layer[0]} T0\nT0\nG1 Z0.3 F400\nG1 X145 Y{random(-160,-152)} F4800\nG1 X95 Y{random(-160,-152)} E30 F400\nG1 E-0.8 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X80 F4800 ; move away from purge line\nG92 E0\n{elsif current_extruder == 1}\nM109 S{nozzle_temperature_initial_layer[0]} T0\nT0\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG1 E-15 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\nM104 S{nozzle_temperature_initial_layer[0]-30} T0\nM109 S{nozzle_temperature_initial_layer[1]} T1\nT1\nG1 Z0.3 F400\nG1 X145 Y{random(-160,-152)} F4800\nG1 X95 Y{random(-160,-152)} E30 F400\nG1 E-0.8 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X80 F4800 ; move away from purge line\nG92 E0\n{endif}\n{endif}\n\n", - "max_layer_height": ["0.42"], - "min_layer_height": ["0.18"], - "nozzle_diameter": ["0.6"], + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.18" + ], + "nozzle_diameter": [ + "0.6" + ], "parking_pos_retraction": "0", - "printable_area": ["-150x-165", "150x-165", "150x165", "-150x165"], + "printable_area": [ + "-150x-165", + "150x-165", + "150x165", + "-150x165" + ], "printable_height": "600", "printer_settings_id": "Flashforge Guider 3 Ultra 0.6 Nozzle", - "retract_length_toolchange": ["15"], - "retract_restart_extra_toolchange": ["-0.8"], - "retraction_length": ["1.2"], - "retraction_speed": ["40"], + "retract_length_toolchange": [ + "15" + ], + "retract_restart_extra_toolchange": [ + "-0.8" + ], + "retraction_length": [ + "1.2" + ], + "retraction_speed": [ + "40" + ], "version": "1.8.0.0", - "z_hop": ["0.6"], - "z_hop_types": ["Spiral Lift"] + "z_hop": [ + "0.6" + ], + "z_hop_types": [ + "Spiral Lift" + ] } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json index 214d4337d1..f51e0392aa 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json @@ -11,27 +11,52 @@ "change_filament_gcode": "; change filament start\n{if total_toolchanges == 0 and current_extruder == 1}\nM104 S0 T0\n{elsif total_toolchanges > 0 and current_extruder == 0}\nM104 S{nozzle_temperature[0]}\n{if layer_z == initial_layer_print_height}\nT1\nM109 S{nozzle_temperature_initial_layer[1]} T1\n{else}\nT1\nM109 S{nozzle_temperature[1]} T1\n{endif}\n{elsif total_toolchanges > 0 and current_extruder == 1}\nM104 S{nozzle_temperature[1]}\n{if layer_z == initial_layer_print_height}\nT0\nM109 S{nozzle_temperature_initial_layer[0]} T0\n{else}\nT0\nM109 S{nozzle_temperature[0]} T0\n{endif}\n{endif}\n", "cooling_tube_length": "0", "cooling_tube_retraction": "0", - "default_filament_profile": ["Flashforge Generic PLA @G3U 0.8 Nozzle"], + "default_filament_profile": [ "Flashforge Generic PLA @G3U 0.8 Nozzle" ], "default_print_profile": "0.40mm Standard @Flashforge G3U 0.8 Nozzle", - "deretraction_speed": ["40"], + "deretraction_speed": [ + "40" + ], "extra_loading_move": "0", "extruder_clearance_height_to_rod": "50", "extruder_clearance_radius": "57", "is_custom_defined": "0", "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 T0\nM104 S0 T1", "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\n{if total_toolchanges < 1}\nM109 S[nozzle_temperature_initial_layer] T[initial_extruder]\nT[initial_extruder]\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\n{else}\nM109 S{nozzle_temperature_initial_layer[0] - 30} T0\nM109 S{nozzle_temperature_initial_layer[1] - 30} T1\n{if initial_extruder==0}\nM109 S{nozzle_temperature_initial_layer[1]} T1\nT1\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG1 E-15 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\nM104 S{nozzle_temperature_initial_layer[1]-30} T1\nM109 S{nozzle_temperature_initial_layer[0]} T0\nT0\nG1 Z0.3 F400\nG1 X145 Y{random(-160,-152)} F4800\nG1 X95 Y{random(-160,-152)} E30 F400\nG1 E-0.8 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X80 F4800 ; move away from purge line\nG92 E0\n{elsif current_extruder == 1}\nM109 S{nozzle_temperature_initial_layer[0]} T0\nT0\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG1 E-15 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\nM104 S{nozzle_temperature_initial_layer[0]-30} T0\nM109 S{nozzle_temperature_initial_layer[1]} T1\nT1\nG1 Z0.3 F400\nG1 X145 Y{random(-160,-152)} F4800\nG1 X95 Y{random(-160,-152)} E30 F400\nG1 E-0.8 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X80 F4800 ; move away from purge line\nG92 E0\n{endif}\n{endif}\n\n", - "max_layer_height": ["0.5"], - "min_layer_height": ["0.3"], - "nozzle_diameter": ["0.8"], + "max_layer_height": [ + "0.5" + ], + "min_layer_height": [ + "0.3" + ], + "nozzle_diameter": [ + "0.8" + ], "parking_pos_retraction": "0", - "printable_area": ["-150x-165", "150x-165", "150x165", "-150x165"], + "printable_area": [ + "-150x-165", + "150x-165", + "150x165", + "-150x165" + ], "printable_height": "600", "printer_settings_id": "Flashforge Guider 3 Ultra 0.8 Nozzle", - "retract_length_toolchange": ["15"], - "retract_restart_extra_toolchange": ["-0.8"], - "retraction_length": ["1.5"], - "retraction_speed": ["50"], + "retract_length_toolchange": [ + "15" + ], + "retract_restart_extra_toolchange": [ + "-0.8" + ], + "retraction_length": [ + "1.5" + ], + "retraction_speed": [ + "50" + ], "version": "1.8.0.0", - "z_hop": ["1"], - "z_hop_types": ["Spiral Lift"] + "z_hop": [ + "1" + ], + "z_hop_types": [ + "Spiral Lift" + ] } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.25 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.25 nozzle.json deleted file mode 100644 index 1630afd09d..0000000000 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.25 nozzle.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": ["0x0"], - "bed_mesh_max": "99999,99999", - "bed_mesh_min": "-99999,-99999", - "bed_mesh_probe_distance": "50,50", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "default_filament_profile": ["Flashforge Generic PLA"], - "default_print_profile": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "deretraction_speed": ["45"], - "disable_m73": "0", - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "165", - "extruder_clearance_height_to_rod": "42", - "extruder_clearance_radius": "75", - "extruder_colour": ["#FCE94F"], - "extruder_offset": ["0x0"], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "from": "system", - "instantiation": "true", - "gcode_flavor": "klipper", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "inherits": "Flashforge Adventurer 5M Pro 0.25 Nozzle", - "is_custom_defined": "0", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "long_retractions_when_cut": ["0"], - "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", - "machine_load_filament_time": "0", - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["30000", "20000"], - "machine_max_acceleration_retracting": ["5000", "5000"], - "machine_max_acceleration_travel": ["20000", "20000"], - "machine_max_acceleration_x": ["30000", "20000"], - "machine_max_acceleration_y": ["30000", "20000"], - "machine_max_acceleration_z": ["500", "500"], - "machine_max_jerk_e": ["2.5", "2.5"], - "machine_max_jerk_x": ["9", "9"], - "machine_max_jerk_y": ["9", "9"], - "machine_max_jerk_z": ["3", "3"], - "machine_max_speed_e": ["30", "30"], - "machine_max_speed_x": ["700", "600"], - "machine_max_speed_y": ["700", "600"], - "machine_max_speed_z": ["20", "20"], - "machine_min_extruding_rate": ["0", "0"], - "machine_min_travel_rate": ["0", "0"], - "machine_pause_gcode": "M25", - "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", - "machine_unload_filament_time": "0", - "manual_filament_change": "0", - "max_layer_height": ["0.14"], - "min_layer_height": ["0.08"], - "name": "Flashforge Guider4 Pro 0.25 nozzle", - "nozzle_diameter": ["0.25"], - "nozzle_height": "2.5", - "nozzle_hrc": "0", - "nozzle_type": "hardened_steel", - "nozzle_volume": "0", - "parking_pos_retraction": "0", - "preferred_orientation": "0", - "printable_area": ["0x0", "300x0", "300x300", "0x300"], - "printable_height": "300", - "printer_model": "Flashforge Guider4 Pro", - "printer_notes": "", - "printer_settings_id": "Flashforge Guider4 Pro 0.25 nozzle", - "printer_structure": "undefine", - "printer_technology": "FFF", - "printer_variant": "0.25", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": ["100%"], - "retract_length_toolchange": ["5"], - "retract_lift_above": ["0"], - "retract_lift_below": ["0"], - "retract_lift_enforce": ["All Surfaces"], - "retract_restart_extra": ["0"], - "retract_restart_extra_toolchange": ["-5"], - "retract_when_changing_layer": ["1"], - "retraction_distances_when_cut": ["18"], - "retraction_length": ["2.5"], - "retraction_minimum_travel": ["1"], - "retraction_speed": ["45"], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "0", - "template_custom_gcode": "", - "thumbnails": "140x110/PNG", - "thumbnails_format": "PNG", - "time_cost": "0", - "time_lapse_gcode": "", - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "version": "2.2.0.0", - "wipe": ["1"], - "wipe_distance": ["2"], - "z_hop": ["0.3"], - "z_hop_types": ["Auto Lift"], - "z_offset": "0" -} diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 HF nozzle.json deleted file mode 100644 index f6ebf42e44..0000000000 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 HF nozzle.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": ["0x0"], - "bed_mesh_max": "99999,99999", - "bed_mesh_min": "-99999,-99999", - "bed_mesh_probe_distance": "50,50", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "default_filament_profile": ["Flashforge Generic PLA @G3U"], - "default_print_profile": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", - "deretraction_speed": ["45"], - "disable_m73": "0", - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "165", - "extruder_clearance_height_to_rod": "42", - "extruder_clearance_radius": "75", - "extruder_colour": ["#FCE94F"], - "extruder_offset": ["0x0"], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "from": "system", - "instantiation": "true", - "gcode_flavor": "klipper", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "inherits": "Flashforge Guider 3 Ultra 0.4 Nozzle", - "is_custom_defined": "0", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "long_retractions_when_cut": ["0"], - "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", - "machine_load_filament_time": "0", - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["30000", "20000"], - "machine_max_acceleration_retracting": ["5000", "5000"], - "machine_max_acceleration_travel": ["20000", "20000"], - "machine_max_acceleration_x": ["30000", "20000"], - "machine_max_acceleration_y": ["30000", "20000"], - "machine_max_acceleration_z": ["500", "500"], - "machine_max_jerk_e": ["2.5", "2.5"], - "machine_max_jerk_x": ["9", "9"], - "machine_max_jerk_y": ["9", "9"], - "machine_max_jerk_z": ["3", "3"], - "machine_max_speed_e": ["30", "30"], - "machine_max_speed_x": ["700", "600"], - "machine_max_speed_y": ["700", "600"], - "machine_max_speed_z": ["20", "20"], - "machine_min_extruding_rate": ["0", "0"], - "machine_min_travel_rate": ["0", "0"], - "machine_pause_gcode": "M25", - "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", - "machine_unload_filament_time": "0", - "manual_filament_change": "0", - "max_layer_height": ["0.28"], - "min_layer_height": ["0.08"], - "name": "Flashforge Guider4 Pro 0.4 HF nozzle", - "nozzle_diameter": ["0.4"], - "nozzle_height": "4", - "nozzle_hrc": "0", - "nozzle_type": "stainless_steel", - "nozzle_volume": "0", - "parking_pos_retraction": "0", - "preferred_orientation": "0", - "printable_area": ["0x0", "300x0", "300x300", "0x300"], - "printable_height": "300", - "printer_model": "Flashforge Guider4 Pro", - "printer_notes": "", - "printer_settings_id": "Flashforge Guider4 Pro 0.4 HF nozzle", - "printer_structure": "undefine", - "printer_technology": "FFF", - "printer_variant": "0.4", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": ["100%"], - "retract_length_toolchange": ["5"], - "retract_lift_above": ["0"], - "retract_lift_below": ["0"], - "retract_lift_enforce": ["All Surfaces"], - "retract_restart_extra": ["0"], - "retract_restart_extra_toolchange": ["-5"], - "retract_when_changing_layer": ["1"], - "retraction_distances_when_cut": ["18"], - "retraction_length": ["2.5"], - "retraction_minimum_travel": ["1"], - "retraction_speed": ["45"], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "0", - "template_custom_gcode": "", - "thumbnails": "140x110/PNG", - "thumbnails_format": "PNG", - "time_cost": "0", - "time_lapse_gcode": "", - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "version": "2.1.1.0", - "wipe": ["1"], - "wipe_distance": ["2"], - "z_hop": ["0.4"], - "z_hop_types": ["Auto Lift"], - "z_offset": "0" -} diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 nozzle.json deleted file mode 100644 index 078a7b0220..0000000000 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 nozzle.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": ["0x0"], - "bed_mesh_max": "99999,99999", - "bed_mesh_min": "-99999,-99999", - "bed_mesh_probe_distance": "50,50", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "default_filament_profile": ["Flashforge Generic PLA"], - "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", - "deretraction_speed": ["45"], - "disable_m73": "0", - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "165", - "extruder_clearance_height_to_rod": "42", - "extruder_clearance_radius": "75", - "extruder_colour": ["#FCE94F"], - "extruder_offset": ["0x0"], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "from": "system", - "instantiation": "true", - "gcode_flavor": "klipper", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "inherits": "Flashforge Adventurer 5M Pro 0.4 Nozzle", - "is_custom_defined": "0", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "long_retractions_when_cut": ["0"], - "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", - "machine_load_filament_time": "0", - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["30000", "20000"], - "machine_max_acceleration_retracting": ["5000", "5000"], - "machine_max_acceleration_travel": ["20000", "20000"], - "machine_max_acceleration_x": ["30000", "20000"], - "machine_max_acceleration_y": ["30000", "20000"], - "machine_max_acceleration_z": ["500", "500"], - "machine_max_jerk_e": ["2.5", "2.5"], - "machine_max_jerk_x": ["9", "9"], - "machine_max_jerk_y": ["9", "9"], - "machine_max_jerk_z": ["3", "3"], - "machine_max_speed_e": ["30", "30"], - "machine_max_speed_x": ["700", "600"], - "machine_max_speed_y": ["700", "600"], - "machine_max_speed_z": ["20", "20"], - "machine_min_extruding_rate": ["0", "0"], - "machine_min_travel_rate": ["0", "0"], - "machine_pause_gcode": "M25", - "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", - "machine_unload_filament_time": "0", - "manual_filament_change": "0", - "max_layer_height": ["0.28"], - "min_layer_height": ["0.08"], - "name": "Flashforge Guider4 Pro 0.4 nozzle", - "nozzle_diameter": ["0.4"], - "nozzle_height": "4", - "nozzle_hrc": "0", - "nozzle_type": "hardened_steel", - "nozzle_volume": "0", - "parking_pos_retraction": "0", - "preferred_orientation": "0", - "printable_area": ["0x0", "300x0", "300x300", "0x300"], - "printable_height": "300", - "printer_model": "Flashforge Guider4 Pro", - "printer_notes": "", - "printer_settings_id": "Flashforge Guider4 Pro 0.4 nozzle", - "printer_structure": "undefine", - "printer_technology": "FFF", - "printer_variant": "0.4", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": ["100%"], - "retract_length_toolchange": ["5"], - "retract_lift_above": ["0"], - "retract_lift_below": ["0"], - "retract_lift_enforce": ["All Surfaces"], - "retract_restart_extra": ["0"], - "retract_restart_extra_toolchange": ["-5"], - "retract_when_changing_layer": ["1"], - "retraction_distances_when_cut": ["18"], - "retraction_length": ["2.5"], - "retraction_minimum_travel": ["1"], - "retraction_speed": ["45"], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "0", - "template_custom_gcode": "", - "thumbnails": "140x110/PNG", - "thumbnails_format": "PNG", - "time_cost": "0", - "time_lapse_gcode": "", - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "version": "2.1.1.0", - "wipe": ["1"], - "wipe_distance": ["2"], - "z_hop": ["0.4"], - "z_hop_types": ["Auto Lift"], - "z_offset": "0" -} diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 HF nozzle.json deleted file mode 100644 index c8bdbc50de..0000000000 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 HF nozzle.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": ["0x0"], - "bed_mesh_max": "99999,99999", - "bed_mesh_min": "-99999,-99999", - "bed_mesh_probe_distance": "50,50", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "default_filament_profile": ["Flashforge Generic PLA @G3U 0.6 Nozzle"], - "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "deretraction_speed": ["30"], - "disable_m73": "0", - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "165", - "extruder_clearance_height_to_rod": "42", - "extruder_clearance_radius": "75", - "extruder_colour": ["#FCE94F"], - "extruder_offset": ["0x0"], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "from": "system", - "instantiation": "true", - "gcode_flavor": "klipper", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "inherits": "Flashforge Guider 3 Ultra 0.6 Nozzle", - "is_custom_defined": "0", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "long_retractions_when_cut": ["0"], - "machine_end_gcode": "M104 S0\nM140 S0\nG1 E-2 F3600\nG0 X50 Y50 F30000\nM106 P101 S0\nM106 S0", - "machine_load_filament_time": "0", - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["30000", "20000"], - "machine_max_acceleration_retracting": ["5000", "5000"], - "machine_max_acceleration_travel": ["20000", "20000"], - "machine_max_acceleration_x": ["30000", "20000"], - "machine_max_acceleration_y": ["30000", "20000"], - "machine_max_acceleration_z": ["50", "500"], - "machine_max_jerk_e": ["2.5", "2.5"], - "machine_max_jerk_x": ["9", "9"], - "machine_max_jerk_y": ["9", "9"], - "machine_max_jerk_z": ["3", "3"], - "machine_max_speed_e": ["40", "30"], - "machine_max_speed_x": ["600", "600"], - "machine_max_speed_y": ["600", "600"], - "machine_max_speed_z": ["20", "20"], - "machine_min_extruding_rate": ["0", "0"], - "machine_min_travel_rate": ["0", "0"], - "machine_pause_gcode": "M25", - "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", - "machine_unload_filament_time": "0", - "manual_filament_change": "0", - "max_layer_height": ["0.42"], - "min_layer_height": ["0.15"], - "name": "Flashforge Guider4 Pro 0.6 HF nozzle", - "nozzle_diameter": ["0.6"], - "nozzle_height": "4", - "nozzle_hrc": "0", - "nozzle_type": "stainless_steel", - "nozzle_volume": "0", - "parking_pos_retraction": "0", - "preferred_orientation": "0", - "printable_area": ["0x0", "300x0", "300x300", "0x300"], - "printable_height": "301", - "printer_model": "Flashforge Guider4 Pro", - "printer_notes": "", - "printer_settings_id": "Flashforge Guider4 Pro 0.6 HF nozzle", - "printer_structure": "undefine", - "printer_technology": "FFF", - "printer_variant": "0.6", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": ["100%"], - "retract_length_toolchange": ["3"], - "retract_lift_above": ["0"], - "retract_lift_below": ["0"], - "retract_lift_enforce": ["All Surfaces"], - "retract_restart_extra": ["0"], - "retract_restart_extra_toolchange": ["0"], - "retract_when_changing_layer": ["1"], - "retraction_distances_when_cut": ["18"], - "retraction_length": ["1.2"], - "retraction_minimum_travel": ["2"], - "retraction_speed": ["30"], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "0", - "template_custom_gcode": "", - "thumbnails": "140x110/PNG", - "thumbnails_format": "PNG", - "time_cost": "0", - "time_lapse_gcode": "", - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "version": "2.1.1.0", - "wipe": ["1"], - "wipe_distance": ["2.2"], - "z_hop": ["0.4"], - "z_hop_types": ["Auto Lift"], - "z_offset": "0" -} diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 nozzle.json deleted file mode 100644 index fde018c6bb..0000000000 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 nozzle.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": ["0x0"], - "bed_mesh_max": "99999,99999", - "bed_mesh_min": "-99999,-99999", - "bed_mesh_probe_distance": "50,50", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "; change filament start", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "default_filament_profile": ["Flashforge Generic PLA @G3U 0.6 Nozzle"], - "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "deretraction_speed": ["30"], - "disable_m73": "0", - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "165", - "extruder_clearance_height_to_rod": "42", - "extruder_clearance_radius": "75", - "extruder_colour": ["#FCE94F"], - "extruder_offset": ["0x0"], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "from": "system", - "instantiation": "true", - "gcode_flavor": "klipper", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "inherits": "Flashforge Guider 3 Ultra 0.6 Nozzle", - "is_custom_defined": "0", - "layer_change_gcode": "", - "long_retractions_when_cut": ["0"], - "machine_end_gcode": "M104 S0\nM140 S0\nG1 E-2 F3600\nG0 X50 Y50 F30000\nM106 P101 S0\nM106 S0", - "machine_load_filament_time": "0", - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["30000", "20000"], - "machine_max_acceleration_retracting": ["5000", "5000"], - "machine_max_acceleration_travel": ["20000", "20000"], - "machine_max_acceleration_x": ["30000", "20000"], - "machine_max_acceleration_y": ["30000", "20000"], - "machine_max_acceleration_z": ["50", "500"], - "machine_max_jerk_e": ["2.5", "2.5"], - "machine_max_jerk_x": ["9", "9"], - "machine_max_jerk_y": ["9", "9"], - "machine_max_jerk_z": ["3", "3"], - "machine_max_speed_e": ["35", "30"], - "machine_max_speed_x": ["600", "600"], - "machine_max_speed_y": ["600", "600"], - "machine_max_speed_z": ["20", "20"], - "machine_min_extruding_rate": ["0", "0"], - "machine_min_travel_rate": ["0", "0"], - "machine_pause_gcode": "M25", - "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", - "machine_unload_filament_time": "0", - "manual_filament_change": "0", - "max_layer_height": ["0.42"], - "min_layer_height": ["0.15"], - "name": "Flashforge Guider4 Pro 0.6 nozzle", - "nozzle_diameter": ["0.6"], - "nozzle_height": "4", - "nozzle_hrc": "0", - "nozzle_type": "hardened_steel", - "nozzle_volume": "0", - "parking_pos_retraction": "0", - "preferred_orientation": "0", - "printable_area": ["0x0", "300x0", "300x300", "0x300"], - "printable_height": "301", - "printer_model": "Flashforge Guider4 Pro", - "printer_notes": "", - "printer_settings_id": "Flashforge Guider4 Pro 0.6 nozzle", - "printer_structure": "undefine", - "printer_technology": "FFF", - "printer_variant": "0.6", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": ["0%"], - "retract_length_toolchange": ["3"], - "retract_lift_above": ["0"], - "retract_lift_below": ["0"], - "retract_lift_enforce": ["All Surfaces"], - "retract_restart_extra": ["0"], - "retract_restart_extra_toolchange": ["0"], - "retract_when_changing_layer": ["1"], - "retraction_distances_when_cut": ["18"], - "retraction_length": ["1.3"], - "retraction_minimum_travel": ["3"], - "retraction_speed": ["30"], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "0", - "template_custom_gcode": "", - "thumbnails": "140x110/PNG", - "thumbnails_format": "PNG", - "time_cost": "0", - "time_lapse_gcode": "", - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "version": "2.1.1.0", - "wipe": ["1"], - "wipe_distance": ["2"], - "z_hop": ["0.4"], - "z_hop_types": ["Auto Lift"], - "z_offset": "0" -} diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.8 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.8 HF nozzle.json deleted file mode 100644 index fd3c4d9cf1..0000000000 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.8 HF nozzle.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": ["0x0"], - "bed_mesh_max": "99999,99999", - "bed_mesh_min": "-99999,-99999", - "bed_mesh_probe_distance": "50,50", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "; change filament start", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "default_filament_profile": ["Flashforge Generic PLA @G3U 0.6 Nozzle"], - "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "deretraction_speed": ["30"], - "disable_m73": "0", - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "165", - "extruder_clearance_height_to_rod": "42", - "extruder_clearance_radius": "75", - "extruder_colour": ["#FCE94F"], - "extruder_offset": ["0x0"], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "from": "system", - "instantiation": "true", - "gcode_flavor": "klipper", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "inherits": "Flashforge Guider 3 Ultra 0.6 Nozzle", - "is_custom_defined": "0", - "layer_change_gcode": "", - "long_retractions_when_cut": ["0"], - "machine_end_gcode": "M104 S0\nM140 S0\nG1 E-2 F3600\nG0 X50 Y50 F30000\nM106 P101 S0\nM106 S0", - "machine_load_filament_time": "0", - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["30000", "20000"], - "machine_max_acceleration_retracting": ["5000", "5000"], - "machine_max_acceleration_travel": ["20000", "20000"], - "machine_max_acceleration_x": ["30000", "20000"], - "machine_max_acceleration_y": ["30000", "20000"], - "machine_max_acceleration_z": ["50", "500"], - "machine_max_jerk_e": ["2.5", "2.5"], - "machine_max_jerk_x": ["9", "9"], - "machine_max_jerk_y": ["9", "9"], - "machine_max_jerk_z": ["3", "3"], - "machine_max_speed_e": ["35", "30"], - "machine_max_speed_x": ["600", "600"], - "machine_max_speed_y": ["600", "600"], - "machine_max_speed_z": ["20", "20"], - "machine_min_extruding_rate": ["0", "0"], - "machine_min_travel_rate": ["0", "0"], - "machine_pause_gcode": "M25", - "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", - "machine_unload_filament_time": "0", - "manual_filament_change": "0", - "max_layer_height": ["0.56"], - "min_layer_height": ["0.24"], - "name": "Flashforge Guider4 Pro 0.8 HF nozzle", - "nozzle_diameter": ["0.8"], - "nozzle_height": "4", - "nozzle_hrc": "0", - "nozzle_type": "stainless_steel", - "nozzle_volume": "0", - "parking_pos_retraction": "0", - "preferred_orientation": "0", - "printable_area": ["0x0", "300x0", "300x300", "0x300"], - "printable_height": "301", - "printer_model": "Flashforge Guider4 Pro", - "printer_notes": "", - "printer_settings_id": "Flashforge Guider4 Pro 0.8 HF nozzle", - "printer_structure": "undefine", - "printer_technology": "FFF", - "printer_variant": "0.6", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": ["0%"], - "retract_length_toolchange": ["3"], - "retract_lift_above": ["0"], - "retract_lift_below": ["0"], - "retract_lift_enforce": ["All Surfaces"], - "retract_restart_extra": ["0"], - "retract_restart_extra_toolchange": ["0"], - "retract_when_changing_layer": ["1"], - "retraction_distances_when_cut": ["18"], - "retraction_length": ["1.5"], - "retraction_minimum_travel": ["3"], - "retraction_speed": ["30"], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "0", - "template_custom_gcode": "", - "thumbnails": "140x110/PNG", - "thumbnails_format": "PNG", - "time_cost": "0", - "time_lapse_gcode": "", - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "version": "2.1.1.0", - "wipe": ["1"], - "wipe_distance": ["2"], - "z_hop": ["0.4"], - "z_hop_types": ["Auto Lift"], - "z_offset": "0" -} diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro.json deleted file mode 100644 index 2673618b07..0000000000 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "machine_model", - "name": "Flashforge Guider4 Pro", - "model_id": "Flashforge-Guider4-Pro", - "nozzle_diameter": "0.25;0.4;0.4HF;0.6;0.6HF;0.8HF", - "machine_tech": "FFF", - "family": "Flashforge", - "bed_model": "flashforge_g4pro_buildplate_model.stl", - "bed_texture": "flashforge_g4pro_buildplate_texture.png", - "hotend_model": "", - "default_materials": "Flashforge Generic PVA;Flashforge Generic HIPS;Flashforge Generic PETG-CF @G3U;Flashforge Generic PETG @G3U;Flashforge Generic PLA-CF @G3U;Flashforge Generic PLA @G3U;Flashforge Generic ASA @G3U;Flashforge Generic ABS @G3U;FusRock Generic PET-CF;FusRock Generic PAHT-CF;FusRock Generic NexPA-CF25;FusRock Generic S-Multi;FusRock Generic S-PAHT;Polymaker Generic CoPA;Polymaker Generic S1" -} diff --git a/resources/profiles/Flashforge/machine/fdm_adventurer3_common.json b/resources/profiles/Flashforge/machine/fdm_adventurer3_common.json index 19e0547bd5..33f7d08b35 100644 --- a/resources/profiles/Flashforge/machine/fdm_adventurer3_common.json +++ b/resources/profiles/Flashforge/machine/fdm_adventurer3_common.json @@ -1,59 +1,64 @@ { - "type": "machine", - "name": "fdm_adventurer3_common", - "from": "system", - "instantiation": "false", - "inherits": "fdm_flashforge_common", - "gcode_flavor": "marlin", - "printable_area": ["-75x-75", "75x-75", "75x75", "-75x75"], - "printable_height": "150", - "machine_max_acceleration_e": ["500"], - "machine_max_acceleration_extruding": ["500"], - "machine_max_acceleration_retracting": ["500"], - "machine_max_acceleration_travel": ["500"], - "machine_max_acceleration_x": ["500"], - "machine_max_acceleration_y": ["500"], - "machine_max_acceleration_z": ["100"], - "machine_max_speed_e": ["30"], - "machine_max_speed_x": ["150"], - "machine_max_speed_y": ["150"], - "machine_max_speed_z": ["20"], - "machine_max_jerk_e": ["2.5"], - "machine_max_jerk_x": ["8"], - "machine_max_jerk_y": ["8"], - "machine_max_jerk_z": ["0.4"], - "printer_settings_id": "Flashforge", - "retraction_minimum_travel": ["1"], - "retract_before_wipe": ["100%"], - "retraction_length": ["5"], - "retract_length_toolchange": ["2"], - "retraction_speed": ["25"], - "deretraction_speed": ["25"], - "z_hop": ["0.4"], - "single_extruder_multi_material": "1", - "enable_filament_ramming": "0", - "purge_in_prime_tower": "0", - "change_filament_gcode": "M600", - "machine_pause_gcode": "M25", - "default_filament_profile": ["Flashforge PLA"], - "machine_start_gcode": "M140 S[bed_temperature_initial_layer] T0\nM104 S[nozzle_temperature_initial_layer] T0\nM104 S0 T1\nM107\nM900 K[pressure_advance] T0\nG90\nG28\nM132 X Y Z A B\nG1 Z50.000 F420\nG161 X Y F3300\nM7 T0\nM6 T0\nM651 S255\n;pre-extrude\nM108 T0\nG1 X-37.50 Y-75.00 F6000\nM106\nG1 Z0.200 F420\nG1 X-37.50 Y-74.50 F6000\nG1 X37.50 Y-74.50 E9.5 F1200\n", - "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F9000\nM104 S0 T0\nM140 S0 T0\nG162 Z F1800\nG28 X Y\nM132 X Y A B\nM652\nG91\nM18", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "scan_first_layer": "0", - "thumbnails": "80x60", - "use_relative_e_distances": "0", - "z_hop_types": "Auto Lift", - "wipe_distance": "2", - "extruder_clearance_radius": "42.3", - "extruder_clearance_height_to_rod": "24.93", - "extruder_clearance_height_to_lid": "150", - "manual_filament_change": "1", - "nozzle_type": "stainless_steel", - "auxiliary_fan": "1", - "parking_pos_retraction": "0", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "extra_loading_move": "0", - "version": "2.0.2.0" + "type": "machine", + "name": "fdm_adventurer3_common", + "from": "system", + "instantiation": "false", + "inherits": "fdm_flashforge_common", + "gcode_flavor": "marlin", + "printable_area": [ + "-75x-75", + "75x-75", + "75x75", + "-75x75" + ], + "printable_height": "150", + "machine_max_acceleration_e": [ "500" ], + "machine_max_acceleration_extruding": [ "500" ], + "machine_max_acceleration_retracting": [ "500" ], + "machine_max_acceleration_travel": [ "500" ], + "machine_max_acceleration_x": [ "500" ], + "machine_max_acceleration_y": [ "500" ], + "machine_max_acceleration_z": [ "100" ], + "machine_max_speed_e": [ "30" ], + "machine_max_speed_x": [ "150" ], + "machine_max_speed_y": [ "150" ], + "machine_max_speed_z": [ "20" ], + "machine_max_jerk_e": [ "2.5" ], + "machine_max_jerk_x": [ "8" ], + "machine_max_jerk_y": [ "8" ], + "machine_max_jerk_z": [ "0.4" ], + "printer_settings_id": "Flashforge", + "retraction_minimum_travel": [ "1" ], + "retract_before_wipe": [ "100%" ], + "retraction_length": [ "5" ], + "retract_length_toolchange": [ "2" ], + "retraction_speed": [ "25"], + "deretraction_speed": [ "25" ], + "z_hop": [ "0.4" ], + "single_extruder_multi_material": "1", + "enable_filament_ramming": "0", + "purge_in_prime_tower": "0", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M25", + "default_filament_profile": [ "Flashforge PLA" ], + "machine_start_gcode": "M140 S[bed_temperature_initial_layer] T0\nM104 S[nozzle_temperature_initial_layer] T0\nM104 S0 T1\nM107\nM900 K[pressure_advance] T0\nG90\nG28\nM132 X Y Z A B\nG1 Z50.000 F420\nG161 X Y F3300\nM7 T0\nM6 T0\nM651 S255\n;pre-extrude\nM108 T0\nG1 X-37.50 Y-75.00 F6000\nM106\nG1 Z0.200 F420\nG1 X-37.50 Y-74.50 F6000\nG1 X37.50 Y-74.50 E9.5 F1200\n", + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F9000\nM104 S0 T0\nM140 S0 T0\nG162 Z F1800\nG28 X Y\nM132 X Y A B\nM652\nG91\nM18", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "scan_first_layer": "0", + "thumbnails": "80x60", + "use_relative_e_distances": "0", + "z_hop_types": "Auto Lift", + "wipe_distance": "2", + "extruder_clearance_radius": "42.3", + "extruder_clearance_height_to_rod": "24.93", + "extruder_clearance_height_to_lid": "150", + "manual_filament_change": "1", + "nozzle_type": "stainless_steel", + "auxiliary_fan": "1", + "parking_pos_retraction": "0", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "extra_loading_move": "0", + "version": "2.0.2.0" } diff --git a/resources/profiles/Flashforge/machine/fdm_adventurer5m_common.json b/resources/profiles/Flashforge/machine/fdm_adventurer5m_common.json index 482071926e..a37d2586fa 100644 --- a/resources/profiles/Flashforge/machine/fdm_adventurer5m_common.json +++ b/resources/profiles/Flashforge/machine/fdm_adventurer5m_common.json @@ -1,51 +1,57 @@ { - "type": "machine", - "name": "fdm_adventurer5m_common", - "from": "system", - "instantiation": "false", - "inherits": "fdm_flashforge_common", - "gcode_flavor": "klipper", - "printable_area": ["-110x-110", "110x-110", "110x110", "-110x110"], - "printable_height": "220", - "auxiliary_fan": "1", - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["20000", "20000"], - "machine_max_acceleration_retracting": ["5000", "5000"], - "machine_max_acceleration_travel": ["20000", "20000"], - "machine_max_acceleration_x": ["20000", "20000"], - "machine_max_acceleration_y": ["20000", "20000"], - "machine_max_acceleration_z": ["500", "500"], - "machine_max_speed_e": ["30", "30"], - "machine_max_speed_x": ["600", "600"], - "machine_max_speed_y": ["600", "600"], - "machine_max_speed_z": ["20", "20"], - "machine_max_jerk_e": ["2.5", "2.5"], - "machine_max_jerk_x": ["9", "9"], - "machine_max_jerk_y": ["9", "9"], - "machine_max_jerk_z": ["3", "3"], - "printer_settings_id": "Flashforge", - "retraction_minimum_travel": ["1"], - "retract_before_wipe": ["100%"], - "retract_length_toolchange": ["2"], - "deretraction_speed": ["35"], - "z_hop": ["0.4"], - "single_extruder_multi_material": "0", - "change_filament_gcode": "", - "machine_pause_gcode": "M25", - "support_multi_bed_types": "1", - "default_filament_profile": ["Flashforge Generic PLA"], - "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z5 F6000\nG1 E-0.2 F800\nG1 X110 Y-110 F6000\nG1 E2 F800\nG1 Y-110 X55 Z0.25 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG1 Y-110 X55 Z0.45 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG92 E0", - "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "scan_first_layer": "0", - "thumbnails": ["140x110"], - "use_relative_e_distances": "1", - "z_hop_types": "Auto Lift", - "retraction_speed": ["35"], - "wipe_distance": "2", - "extruder_clearance_radius": ["76"], - "extruder_clearance_height_to_rod": ["27"], - "extruder_clearance_height_to_lid": ["150"], - "version": "1.8.0.0" + "type": "machine", + "name": "fdm_adventurer5m_common", + "from": "system", + "instantiation": "false", + "inherits": "fdm_flashforge_common", + "gcode_flavor": "klipper", + "printable_area": [ + "-110x-110", + "110x-110", + "110x110", + "-110x110" + ], + "printable_height": "220", + "auxiliary_fan": "1", + "machine_max_acceleration_e": [ "5000", "5000" ], + "machine_max_acceleration_extruding": [ "20000", "20000" ], + "machine_max_acceleration_retracting": [ "5000", "5000" ], + "machine_max_acceleration_travel": [ "20000", "20000" ], + "machine_max_acceleration_x": [ "20000", "20000" ], + "machine_max_acceleration_y": [ "20000", "20000" ], + "machine_max_acceleration_z": [ "500", "500" ], + "machine_max_speed_e": [ "30", "30" ], + "machine_max_speed_x": [ "600", "600" ], + "machine_max_speed_y": [ "600", "600" ], + "machine_max_speed_z": [ "20", "20" ], + "machine_max_jerk_e": [ "2.5", "2.5" ], + "machine_max_jerk_x": [ "9", "9" ], + "machine_max_jerk_y": [ "9", "9" ], + "machine_max_jerk_z": [ "3", "3" ], + "printer_settings_id": "Flashforge", + "retraction_minimum_travel": [ "1" ], + "retract_before_wipe": [ "100%" ], + "retract_length_toolchange": [ "2" ], + "deretraction_speed": [ "35" ], + "z_hop": [ "0.4" ], + "single_extruder_multi_material": "0", + "change_filament_gcode": "", + "machine_pause_gcode": "M25", + "default_filament_profile": [ "Flashforge Generic PLA" ], + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z5 F6000\nG1 E-0.2 F800\nG1 X110 Y-110 F6000\nG1 E2 F800\nG1 Y-110 X55 Z0.25 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG1 Y-110 X55 Z0.45 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG92 E0", + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "scan_first_layer": "0", + "thumbnails": [ + "140x110" + ], + "use_relative_e_distances": "1", + "z_hop_types": "Auto Lift", + "retraction_speed": [ "35" ], + "wipe_distance": "2", + "extruder_clearance_radius": [ "76" ], + "extruder_clearance_height_to_rod": [ "27" ], + "extruder_clearance_height_to_lid": [ "150" ], + "version": "1.8.0.0" } diff --git a/resources/profiles/Flashforge/machine/fdm_flashforge_common.json b/resources/profiles/Flashforge/machine/fdm_flashforge_common.json index 03c5d5c6f5..d8b455ab79 100644 --- a/resources/profiles/Flashforge/machine/fdm_flashforge_common.json +++ b/resources/profiles/Flashforge/machine/fdm_flashforge_common.json @@ -5,25 +5,80 @@ "instantiation": "false", "inherits": "fdm_machine_common", "gcode_flavor": "marlin", - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["500", "500"], - "machine_max_acceleration_retracting": ["1000", "1000"], - "machine_max_acceleration_travel": ["500", "500"], - "machine_max_acceleration_x": ["500", "500"], - "machine_max_acceleration_y": ["500", "500"], - "machine_max_acceleration_z": ["100", "100"], - "machine_max_speed_e": ["60", "60"], - "machine_max_speed_x": ["500", "500"], - "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["10", "10"], - "machine_max_jerk_e": ["5", "5"], - "machine_max_jerk_x": ["8", "8"], - "machine_max_jerk_y": ["8", "8"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_min_extruding_rate": ["0", "0"], - "machine_min_travel_rate": ["0", "0"], - "max_layer_height": ["0.32"], - "min_layer_height": ["0.08"], + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "500", + "500" + ], + "machine_max_acceleration_retracting": [ + "1000", + "1000" + ], + "machine_max_acceleration_travel": [ + "500", + "500" + ], + "machine_max_acceleration_x": [ + "500", + "500" + ], + "machine_max_acceleration_y": [ + "500", + "500" + ], + "machine_max_acceleration_z": [ + "100", + "100" + ], + "machine_max_speed_e": [ + "60", + "60" + ], + "machine_max_speed_x": [ + "500", + "500" + ], + "machine_max_speed_y": [ + "500", + "500" + ], + "machine_max_speed_z": [ + "10", + "10" + ], + "machine_max_jerk_e": [ + "5", + "5" + ], + "machine_max_jerk_x": [ + "8", + "8" + ], + "machine_max_jerk_y": [ + "8", + "8" + ], + "machine_max_jerk_z": [ + "0.4", + "0.4" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], "printable_height": "250", "extruder_clearance_radius": "47", "extruder_clearance_height_to_rod": "34", @@ -31,24 +86,50 @@ "printer_settings_id": "", "printer_technology": "FFF", "printer_variant": "0.4", - "retraction_minimum_travel": ["2"], - "retract_before_wipe": ["70%"], - "retract_when_changing_layer": ["1"], - "retraction_length": ["5"], - "retract_length_toolchange": ["2"], - "z_hop": ["0.4"], - "retract_restart_extra": ["0"], - "retract_restart_extra_toolchange": ["0"], - "retraction_speed": ["60"], - "deretraction_speed": ["40"], + "retraction_minimum_travel": [ + "2" + ], + "retract_before_wipe": [ + "70%" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_length": [ + "5" + ], + "retract_length_toolchange": [ + "2" + ], + "z_hop": [ + "0.4" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retraction_speed": [ + "60" + ], + "deretraction_speed": [ + "40" + ], "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "M25", - "wipe": ["1"], - "default_filament_profile": ["Flashforge Generic PLA"], + "wipe": [ + "1" + ], + "default_filament_profile": [ + "Flashforge Generic PLA" + ], "default_print_profile": "0.20mm Standard @Flashforge AD5M", - "bed_exclude_area": ["0x0"], + "bed_exclude_area": [ + "0x0" + ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < printable_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", "layer_change_gcode": "", diff --git a/resources/profiles/Flashforge/machine/fdm_guider3_common.json b/resources/profiles/Flashforge/machine/fdm_guider3_common.json index 84adba7f2d..1a39d50e82 100644 --- a/resources/profiles/Flashforge/machine/fdm_guider3_common.json +++ b/resources/profiles/Flashforge/machine/fdm_guider3_common.json @@ -1,23 +1,68 @@ { - "type": "machine", - "name": "fdm_guider3_common", - "from": "system", - "instantiation": "false", - "inherits": "fdm_flashforge_common", - "gcode_flavor": "klipper", - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["20000", "20000"], - "machine_max_acceleration_retracting": ["5000", "5000"], - "machine_max_acceleration_travel": ["20000", "20000"], - "machine_max_acceleration_x": ["20000", "20000"], - "machine_max_acceleration_y": ["20000", "20000"], - "machine_max_acceleration_z": ["500", "500"], - "machine_max_jerk_e": ["2.5", "2.5"], - "machine_max_jerk_x": ["9", "9"], - "machine_max_jerk_y": ["9", "9"], - "machine_max_jerk_z": ["3", "3"], - "machine_max_speed_e": ["30", "30"], - "machine_max_speed_x": ["600", "600"], - "machine_max_speed_y": ["600", "600"], - "machine_max_speed_z": ["20", "20"] + "type": "machine", + "name": "fdm_guider3_common", + "from": "system", + "instantiation": "false", + "inherits": "fdm_flashforge_common", + "gcode_flavor": "klipper", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "20000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "20000", + "20000" + ], + "machine_max_acceleration_y": [ + "20000", + "20000" + ], + "machine_max_acceleration_z": [ + "500", + "500" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_max_speed_e": [ + "30", + "30" + ], + "machine_max_speed_x": [ + "600", + "600" + ], + "machine_max_speed_y": [ + "600", + "600" + ], + "machine_max_speed_z": [ + "20", + "20" + ] } diff --git a/resources/profiles/Flashforge/machine/fdm_klipper_common.json b/resources/profiles/Flashforge/machine/fdm_klipper_common.json index b2229abfe8..843090ed1f 100644 --- a/resources/profiles/Flashforge/machine/fdm_klipper_common.json +++ b/resources/profiles/Flashforge/machine/fdm_klipper_common.json @@ -5,25 +5,80 @@ "instantiation": "false", "inherits": "fdm_machine_common", "gcode_flavor": "klipper", - "machine_max_acceleration_e": ["20000", "20000"], - "machine_max_acceleration_extruding": ["50000", "50000"], - "machine_max_acceleration_retracting": ["10000", "10000"], - "machine_max_acceleration_travel": ["50000", "50000"], - "machine_max_acceleration_x": ["50000", "50000"], - "machine_max_acceleration_y": ["50000", "50000"], - "machine_max_acceleration_z": ["1000", "500"], - "machine_max_speed_e": ["100", "100"], - "machine_max_speed_x": ["2000", "2000"], - "machine_max_speed_y": ["2000", "2000"], - "machine_max_speed_z": ["15", "15"], - "machine_max_jerk_e": ["0", "0"], - "machine_max_jerk_x": ["0", "0"], - "machine_max_jerk_y": ["0", "0"], - "machine_max_jerk_z": ["0", "0"], - "machine_min_extruding_rate": ["0", "0"], - "machine_min_travel_rate": ["0", "0"], - "max_layer_height": ["0.32"], - "min_layer_height": ["0.08"], + "machine_max_acceleration_e": [ + "20000", + "20000" + ], + "machine_max_acceleration_extruding": [ + "50000", + "50000" + ], + "machine_max_acceleration_retracting": [ + "10000", + "10000" + ], + "machine_max_acceleration_travel": [ + "50000", + "50000" + ], + "machine_max_acceleration_x": [ + "50000", + "50000" + ], + "machine_max_acceleration_y": [ + "50000", + "50000" + ], + "machine_max_acceleration_z": [ + "1000", + "500" + ], + "machine_max_speed_e": [ + "100", + "100" + ], + "machine_max_speed_x": [ + "2000", + "2000" + ], + "machine_max_speed_y": [ + "2000", + "2000" + ], + "machine_max_speed_z": [ + "15", + "15" + ], + "machine_max_jerk_e": [ + "0", + "0" + ], + "machine_max_jerk_x": [ + "0", + "0" + ], + "machine_max_jerk_y": [ + "0", + "0" + ], + "machine_max_jerk_z": [ + "0", + "0" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], "printable_height": "200", "extruder_clearance_radius": "45", "extruder_clearance_height_to_rod": "36", @@ -31,25 +86,51 @@ "printer_settings_id": "", "printer_technology": "FFF", "printer_variant": "0.4", - "retraction_minimum_travel": ["1"], - "retract_before_wipe": ["70%"], - "retract_when_changing_layer": ["1"], - "retraction_length": ["0.5"], - "retract_length_toolchange": ["2"], - "z_hop": ["0"], - "retract_restart_extra": ["0"], - "retract_restart_extra_toolchange": ["0"], - "retraction_speed": ["30"], - "deretraction_speed": ["80"], + "retraction_minimum_travel": [ + "1" + ], + "retract_before_wipe": [ + "70%" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_length": [ + "0.5" + ], + "retract_length_toolchange": [ + "2" + ], + "z_hop": [ + "0" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retraction_speed": [ + "30" + ], + "deretraction_speed": [ + "80" + ], "z_lift_type": "NormalLift", "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "M25", - "wipe": ["1"], - "default_filament_profile": ["Flashforge Generic ABS"], + "wipe": [ + "1" + ], + "default_filament_profile": [ + "Flashforge Generic ABS" + ], "default_print_profile": "0.20mm Standard @Flashforge AD5M", - "bed_exclude_area": ["0x0"], + "bed_exclude_area": [ + "0x0" + ], "machine_start_gcode": "BED_MESH_PROFILE LOAD=default \nM190 S[bed_temperature_initial_layer_single] ;set bed temp \nG28; \nG1 X2 Y2 Z0 F9000 ; move to corner \nM109 S[nozzle_temperature_initial_layer] ; set nozzle temp \nG1 Z0.2 F300 ; raise nozzle to 0.2\nG92 E0.0 ; reset extruder distance position\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E21.5 F1000.0 ; intro line\nG0 Z2\n\nG92 E0.0 ; reset extruder distance position", "machine_end_gcode": "G91; //rel pos\nG1 E-5 f2000\nG1 Z10 F600 ; lift nozzle 10mm/s\nG1 E-29 f600\nM104 S0\nM140 S0 ; turn off bed\n\nM107\nG90\nG0 X117 Y200 F6000; move to back\nM84 ; disable motors\nDSLR_SNAPSHOT\nRSCS_off\n\nexhaustfan_on\nTIMELAPSE_RENDER\n\nG4 P60000 ; //Dwell for 1min\nM107 \nexhaustfan_off\n\nG4 P120000\n\npower_off ; //this is with moonraker", "layer_change_gcode": ";DSLR_SNAPSHOT\nTIMELAPSE_TAKE_FRAME", diff --git a/resources/profiles/Flashforge/machine/fdm_machine_common.json b/resources/profiles/Flashforge/machine/fdm_machine_common.json index ca8a839436..69a2698dff 100644 --- a/resources/profiles/Flashforge/machine/fdm_machine_common.json +++ b/resources/profiles/Flashforge/machine/fdm_machine_common.json @@ -1,54 +1,118 @@ { - "type": "machine", - "name": "fdm_machine_common", - "from": "system", - "instantiation": "false", - "printer_technology": "FFF", - "deretraction_speed": ["40"], - "extruder_colour": ["#FCE94F"], - "extruder_offset": ["0x0"], - "gcode_flavor": "klipper", - "silent_mode": "0", - "machine_max_acceleration_e": ["5000"], - "machine_max_acceleration_extruding": ["500"], - "machine_max_acceleration_retracting": ["1000"], - "machine_max_acceleration_x": ["500"], - "machine_max_acceleration_y": ["500"], - "machine_max_acceleration_z": ["100"], - "machine_max_speed_e": ["60"], - "machine_max_speed_x": ["500"], - "machine_max_speed_y": ["500"], - "machine_max_speed_z": ["10"], - "machine_max_jerk_e": ["5"], - "machine_max_jerk_x": ["8"], - "machine_max_jerk_y": ["8"], - "machine_max_jerk_z": ["0.4"], - "machine_min_extruding_rate": ["0"], - "machine_min_travel_rate": ["0"], - "max_layer_height": ["0.32"], - "min_layer_height": ["0.08"], - "printable_height": "250", - "extruder_clearance_radius": "65", - "extruder_clearance_height_to_rod": "36", - "extruder_clearance_height_to_lid": "140", - "nozzle_diameter": ["0.4"], - "printer_settings_id": "", - "printer_variant": "0.4", - "retraction_minimum_travel": ["2"], - "retract_before_wipe": ["70%"], - "retract_when_changing_layer": ["1"], - "retraction_length": ["1"], - "retract_length_toolchange": ["1"], - "z_hop": ["0"], - "retract_restart_extra": ["0"], - "retract_restart_extra_toolchange": ["0"], - "retraction_speed": ["60"], - "single_extruder_multi_material": "1", - "change_filament_gcode": "", - "wipe": ["1"], - "z_lift_type": "NormalLift", - "default_print_profile": "0.20mm Standard @Flashforge AD5M", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", - "machine_start_gcode": "", - "machine_end_gcode": "" + "type": "machine", + "name": "fdm_machine_common", + "from": "system", + "instantiation": "false", + "printer_technology": "FFF", + "deretraction_speed": [ + "40" + ], + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "gcode_flavor": "klipper", + "silent_mode": "0", + "machine_max_acceleration_e": [ + "5000" + ], + "machine_max_acceleration_extruding": [ + "500" + ], + "machine_max_acceleration_retracting": [ + "1000" + ], + "machine_max_acceleration_x": [ + "500" + ], + "machine_max_acceleration_y": [ + "500" + ], + "machine_max_acceleration_z": [ + "100" + ], + "machine_max_speed_e": [ + "60" + ], + "machine_max_speed_x": [ + "500" + ], + "machine_max_speed_y": [ + "500" + ], + "machine_max_speed_z": [ + "10" + ], + "machine_max_jerk_e": [ + "5" + ], + "machine_max_jerk_x": [ + "8" + ], + "machine_max_jerk_y": [ + "8" + ], + "machine_max_jerk_z": [ + "0.4" + ], + "machine_min_extruding_rate": [ + "0" + ], + "machine_min_travel_rate": [ + "0" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "printable_height": "250", + "extruder_clearance_radius": "65", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_height_to_lid": "140", + "nozzle_diameter": [ + "0.4" + ], + "printer_settings_id": "", + "printer_variant": "0.4", + "retraction_minimum_travel": [ + "2" + ], + "retract_before_wipe": [ + "70%" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_length": [ + "1" + ], + "retract_length_toolchange": [ + "1" + ], + "z_hop": [ + "0" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retraction_speed": [ + "60" + ], + "single_extruder_multi_material": "1", + "change_filament_gcode": "", + "wipe": [ + "1" + ], + "z_lift_type": "NormalLift", + "default_print_profile": "0.20mm Standard @Flashforge AD5M", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", + "machine_start_gcode": "", + "machine_end_gcode": "" } diff --git a/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M 0.25 Nozzle.json index 21846fd769..99a2e5d71c 100644 --- a/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M 0.25 Nozzle.json @@ -4,7 +4,9 @@ "setting_id": "GP001", "instantiation": "true", "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "compatible_printers": ["Flashforge Adventurer 5M 0.25 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 5M 0.25 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "is_custom_defined": "0", diff --git a/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json index 6dabeb6af8..cbfd927d4d 100644 --- a/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json @@ -4,7 +4,9 @@ "setting_id": "GP001", "instantiation": "true", "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "compatible_printers": ["Flashforge Adventurer 5M Pro 0.25 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.25 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "is_custom_defined": "0", diff --git a/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M 0.25 Nozzle.json index 2cb1599383..001e36e7fa 100644 --- a/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M 0.25 Nozzle.json @@ -4,7 +4,9 @@ "setting_id": "GP001", "instantiation": "true", "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "compatible_printers": ["Flashforge Adventurer 5M 0.25 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 5M 0.25 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "is_custom_defined": "0", diff --git a/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json index 7f10a6966b..a531a1ec31 100644 --- a/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json @@ -4,7 +4,9 @@ "setting_id": "GP001", "instantiation": "true", "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "compatible_printers": ["Flashforge Adventurer 5M Pro 0.25 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.25 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "is_custom_defined": "0", diff --git a/resources/profiles/Flashforge/process/0.10mm Standard @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.10mm Standard @FF AD5X 0.25 nozzle.json deleted file mode 100644 index 9e58c48477..0000000000 --- a/resources/profiles/Flashforge/process/0.10mm Standard @FF AD5X 0.25 nozzle.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "process", - "brim_type": "auto_brim", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "setting_id": "GP012", - "instantiation": "true", - "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "layer_height": "0.1", - "name": "0.10mm Standard @FF AD5X 0.25 nozzle", - "only_one_wall_top": "1", - "prime_tower_width": "45", - "print_settings_id": "0.10mm Standard @FF AD5X 0.25 nozzle", - "support_interface_spacing": "0.2", - "support_type": "tree(auto)", - "version": "2.2.0.0", - "wall_loops": "3" -} diff --git a/resources/profiles/Flashforge/process/0.10mm Standard @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.10mm Standard @FF G4P 0.25 nozzle.json deleted file mode 100644 index 168b5c1bfb..0000000000 --- a/resources/profiles/Flashforge/process/0.10mm Standard @FF G4P 0.25 nozzle.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "bridge_acceleration": "10%", - "bridge_speed": "15", - "elefant_foot_compensation": "0.1", - "enable_prime_tower": "1", - "filter_out_gap_fill": "0.1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], - "gap_fill_target": "topbottom", - "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "initial_layer_infill_speed": "80", - "initial_layer_speed": "50", - "is_custom_defined": "0", - "layer_height": "0.1", - "name": "0.10mm Standard @FF G4P 0.25 nozzle", - "only_one_wall_top": "1", - "print_settings_id": "0.10mm Standard @FF G4P 0.25 nozzle", - "resolution": "0.005", - "seam_gap": "5%", - "small_perimeter_speed": "10", - "support_interface_spacing": "0.2", - "support_type": "tree(auto)", - "travel_acceleration": "30000", - "version": "2.2.0.0", - "wall_loops": "3" -} diff --git a/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M 0.25 Nozzle.json index 4f0e1b1bea..0cb95b1361 100644 --- a/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M 0.25 Nozzle.json @@ -4,7 +4,9 @@ "setting_id": "GP001", "instantiation": "true", "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "compatible_printers": ["Flashforge Adventurer 5M 0.25 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 5M 0.25 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "is_custom_defined": "0", diff --git a/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json index 329cb836d0..a1ac228b1b 100644 --- a/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json @@ -4,7 +4,9 @@ "setting_id": "GP001", "instantiation": "true", "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "compatible_printers": ["Flashforge Adventurer 5M Pro 0.25 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.25 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "is_custom_defined": "0", diff --git a/resources/profiles/Flashforge/process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json index cd7bf0f701..23d6db2099 100644 --- a/resources/profiles/Flashforge/process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json @@ -104,5 +104,7 @@ "wall_loops": "3", "wall_infill_order": "inner wall/outer wall/infill", "wall_generator": "arachne", - "compatible_printers": ["Flashforge Guider 2s 0.4 nozzle"] + "compatible_printers": [ + "Flashforge Guider 2s 0.4 nozzle" + ] } diff --git a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json index 126e533b18..27c21d2514 100644 --- a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json @@ -4,7 +4,9 @@ "inherits": "0.20mm Standard @Flashforge AD5M 0.4 Nozzle", "from": "system", "instantiation": "true", - "compatible_printers": ["Flashforge Adventurer 5M 0.4 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 5M 0.4 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "layer_height": "0.12", @@ -19,6 +21,5 @@ "support_interface_top_layers": "3", "support_speed": "100", "support_top_z_distance": "0.15", - "skirt_loops": "0", - "version": "2.1.1.0" + "version": "2.0.2.0" } diff --git a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json index 43822156c8..0b62ba6e66 100644 --- a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json @@ -4,7 +4,9 @@ "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", "from": "system", "instantiation": "true", - "compatible_printers": ["Flashforge Adventurer 5M Pro 0.4 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.4 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "layer_height": "0.12", @@ -19,6 +21,5 @@ "support_interface_spacing": "0.3", "support_line_width": "0.4", "support_top_z_distance": "0.15", - "skirt_loops": "0", - "version": "2.1.1.0" + "version": "2.0.2.0" } diff --git a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json index 1399061d20..471a857516 100644 --- a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json @@ -3,7 +3,9 @@ "from": "system", "setting_id": "GP001", "instantiation": "true", - "compatible_printers": ["Flashforge Guider 3 Ultra 0.4 Nozzle"], + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.4 Nozzle" + ], "bridge_flow": "0.96", "bridge_speed": "20", "infill_wall_overlap": "25%", @@ -18,8 +20,7 @@ "support_interface_spacing": "0.18", "support_line_width": "0.4", "support_speed": "80", + "version": "2.0.2.0", "filename_format": "{input_filename_base}.gcode", - "post_process": "", - "prime_tower_brim_width": "5", - "version": "2.1.1.0" + "post_process": "" } diff --git a/resources/profiles/Flashforge/process/0.12mm Standard @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.12mm Standard @FF AD5X 0.25 nozzle.json deleted file mode 100644 index 3bf65fa919..0000000000 --- a/resources/profiles/Flashforge/process/0.12mm Standard @FF AD5X 0.25 nozzle.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "process", - "brim_type": "auto_brim", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "setting_id": "GP012", - "instantiation": "true", - "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "0.12mm Standard @FF AD5X 0.25 nozzle", - "only_one_wall_top": "1", - "prime_tower_width": "45", - "print_settings_id": "0.12mm Standard @FF AD5X 0.25 nozzle", - "support_interface_spacing": "0.2", - "support_type": "tree(auto)", - "version": "2.2.0.0", - "wall_loops": "3" -} diff --git a/resources/profiles/Flashforge/process/0.12mm Standard @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.12mm Standard @FF G4P 0.25 nozzle.json deleted file mode 100644 index 71f052dc38..0000000000 --- a/resources/profiles/Flashforge/process/0.12mm Standard @FF G4P 0.25 nozzle.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "bridge_acceleration": "10%", - "bridge_speed": "15", - "elefant_foot_compensation": "0.1", - "enable_prime_tower": "1", - "filter_out_gap_fill": "0.1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], - "gap_fill_target": "topbottom", - "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "initial_layer_infill_speed": "80", - "initial_layer_speed": "50", - "is_custom_defined": "0", - "name": "0.12mm Standard @FF G4P 0.25 nozzle", - "only_one_wall_top": "1", - "print_settings_id": "0.12mm Standard @FF G4P 0.25 nozzle", - "resolution": "0.005", - "seam_gap": "5%", - "small_perimeter_speed": "10", - "support_interface_spacing": "0.2", - "support_type": "tree(auto)", - "travel_acceleration": "30000", - "version": "2.2.0.0", - "wall_loops": "3" -} diff --git a/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M 0.25 Nozzle.json index 603254233f..efc3b98d34 100644 --- a/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M 0.25 Nozzle.json @@ -1,45 +1,45 @@ { - "type": "process", - "name": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "inherits": "0.20mm Standard @Flashforge AD5M 0.4 Nozzle", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Adventurer 5M 0.25 Nozzle"], - "filename_format": "{input_filename_base}.gcode", - "post_process": "", - "setting_id": "GP012", - "print_settings_id": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "bottom_shell_layers": "4", - "brim_width": "3", - "elefant_foot_compensation": "0", - "gap_infill_speed": "150", - "initial_layer_acceleration": "1000", - "initial_layer_infill_speed": "70", - "initial_layer_line_width": "0.3", - "initial_layer_print_height": "0.15", - "initial_layer_speed": "35", - "inner_wall_line_width": "0.3", - "inner_wall_speed": "150", - "internal_solid_infill_line_width": "0.3", - "internal_solid_infill_speed": "150", - "layer_height": "0.12", - "line_width": "0.25", - "outer_wall_line_width": "0.25", - "outer_wall_speed": "60", - "skirt_loops": "0", - "sparse_infill_line_width": "0.3", - "sparse_infill_speed": "100", - "support_bottom_z_distance": "0.12", - "support_interface_spacing": "0.25", - "support_line_width": "0.25", - "support_object_xy_distance": "0.2", - "support_speed": "80", - "support_top_z_distance": "0.12", - "top_shell_layers": "7", - "top_shell_thickness": "0.8", - "top_surface_line_width": "0.3", - "top_surface_speed": "150", - "tree_support_tip_diameter": "1.2", - "version": "1.8.0.0", - "wipe_speed": "80%" -} + "type": "process", + "name": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", + "inherits": "0.20mm Standard @Flashforge AD5M 0.4 Nozzle", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.25 Nozzle" + ], + "setting_id": "GP012", + "print_settings_id": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", + "bottom_shell_layers": "4", + "brim_width": "3", + "elefant_foot_compensation": "0", + "gap_infill_speed": "150", + "initial_layer_acceleration": "1000", + "initial_layer_infill_speed": "70", + "initial_layer_line_width": "0.3", + "initial_layer_print_height": "0.15", + "initial_layer_speed": "35", + "inner_wall_line_width": "0.3", + "inner_wall_speed": "150", + "internal_solid_infill_line_width": "0.3", + "internal_solid_infill_speed": "150", + "layer_height": "0.12", + "line_width": "0.25", + "outer_wall_line_width": "0.25", + "outer_wall_speed": "60", + "skirt_loops": "0", + "sparse_infill_line_width": "0.3", + "sparse_infill_speed": "100", + "support_bottom_z_distance": "0.12", + "support_interface_spacing": "0.25", + "support_line_width": "0.25", + "support_object_xy_distance": "0.2", + "support_speed": "80", + "support_top_z_distance": "0.12", + "top_shell_layers": "7", + "top_shell_thickness": "0.8", + "top_surface_line_width": "0.3", + "top_surface_speed": "150", + "tree_support_tip_diameter": "1.2", + "version": "1.8.0.0", + "wipe_speed": "80%" +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json index 4b2b1aafba..2ea5c5c4e4 100644 --- a/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json @@ -1,45 +1,45 @@ { - "type": "process", - "name": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Adventurer 5M Pro 0.25 Nozzle"], - "filename_format": "{input_filename_base}.gcode", - "post_process": "", - "setting_id": "GP011", - "print_settings_id": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "bottom_shell_layers": "4", - "brim_width": "3", - "elefant_foot_compensation": "0", - "gap_infill_speed": "150", - "initial_layer_acceleration": "1000", - "initial_layer_infill_speed": "70", - "initial_layer_line_width": "0.3", - "initial_layer_print_height": "0.15", - "initial_layer_speed": "35", - "inner_wall_line_width": "0.3", - "inner_wall_speed": "150", - "internal_solid_infill_line_width": "0.3", - "internal_solid_infill_speed": "150", - "layer_height": "0.12", - "line_width": "0.25", - "outer_wall_line_width": "0.25", - "outer_wall_speed": "60", - "skirt_loops": "0", - "sparse_infill_line_width": "0.3", - "sparse_infill_speed": "100", - "support_bottom_z_distance": "0.12", - "support_interface_spacing": "0.25", - "support_line_width": "0.25", - "support_object_xy_distance": "0.2", - "support_speed": "80", - "support_top_z_distance": "0.12", - "top_shell_layers": "7", - "top_shell_thickness": "0.8", - "top_surface_line_width": "0.3", - "top_surface_speed": "150", - "tree_support_tip_diameter": "1.2", - "version": "1.8.0.0", - "wipe_speed": "80%" -} + "type": "process", + "name": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.25 Nozzle" + ], + "setting_id": "GP011", + "print_settings_id": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "bottom_shell_layers": "4", + "brim_width": "3", + "elefant_foot_compensation": "0", + "gap_infill_speed": "150", + "initial_layer_acceleration": "1000", + "initial_layer_infill_speed": "70", + "initial_layer_line_width": "0.3", + "initial_layer_print_height": "0.15", + "initial_layer_speed": "35", + "inner_wall_line_width": "0.3", + "inner_wall_speed": "150", + "internal_solid_infill_line_width": "0.3", + "internal_solid_infill_speed": "150", + "layer_height": "0.12", + "line_width": "0.25", + "outer_wall_line_width": "0.25", + "outer_wall_speed": "60", + "skirt_loops": "0", + "sparse_infill_line_width": "0.3", + "sparse_infill_speed": "100", + "support_bottom_z_distance": "0.12", + "support_interface_spacing": "0.25", + "support_line_width": "0.25", + "support_object_xy_distance": "0.2", + "support_speed": "80", + "support_top_z_distance": "0.12", + "top_shell_layers": "7", + "top_shell_thickness": "0.8", + "top_surface_line_width": "0.3", + "top_surface_speed": "150", + "tree_support_tip_diameter": "1.2", + "version": "1.8.0.0", + "wipe_speed": "80%" +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/process/0.14mm Standard @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.14mm Standard @FF AD5X 0.25 nozzle.json deleted file mode 100644 index 199869de5d..0000000000 --- a/resources/profiles/Flashforge/process/0.14mm Standard @FF AD5X 0.25 nozzle.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "process", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "setting_id": "GP012", - "instantiation": "true", - "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "layer_height": "0.14", - "name": "0.14mm Standard @FF AD5X 0.25 nozzle", - "only_one_wall_top": "1", - "prime_tower_width": "45", - "print_settings_id": "0.14mm Standard @FF AD5X 0.25 nozzle", - "support_interface_spacing": "0.2", - "support_type": "tree(auto)", - "version": "2.2.0.0", - "wall_loops": "3" -} diff --git a/resources/profiles/Flashforge/process/0.14mm Standard @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.14mm Standard @FF G4P 0.25 nozzle.json deleted file mode 100644 index ce0fc037ba..0000000000 --- a/resources/profiles/Flashforge/process/0.14mm Standard @FF G4P 0.25 nozzle.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "bridge_acceleration": "10%", - "bridge_speed": "15", - "elefant_foot_compensation": "0.1", - "enable_prime_tower": "1", - "filter_out_gap_fill": "0.1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], - "gap_fill_target": "topbottom", - "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "initial_layer_infill_speed": "80", - "initial_layer_speed": "50", - "is_custom_defined": "0", - "layer_height": "0.14", - "name": "0.14mm Standard @FF G4P 0.25 nozzle", - "only_one_wall_top": "1", - "print_settings_id": "0.14mm Standard @FF G4P 0.25 nozzle", - "resolution": "0.005", - "seam_gap": "5%", - "small_perimeter_speed": "10", - "support_interface_spacing": "0.2", - "support_type": "tree(auto)", - "travel_acceleration": "30000", - "version": "2.2.0.0", - "wall_loops": "3" -} diff --git a/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json index d91eca2a2e..c2a9c695e8 100644 --- a/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json @@ -3,7 +3,9 @@ "from": "system", "setting_id": "GP001", "instantiation": "true", - "compatible_printers": ["Flashforge Adventurer 5M 0.25 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 5M 0.25 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", diff --git a/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json index 8201f71eae..dce626df67 100644 --- a/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json @@ -3,7 +3,9 @@ "from": "system", "setting_id": "GP001", "instantiation": "true", - "compatible_printers": ["Flashforge Adventurer 5M Pro 0.25 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.25 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", diff --git a/resources/profiles/Flashforge/process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json index 5a39041870..2ee3d79d14 100644 --- a/resources/profiles/Flashforge/process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json @@ -104,5 +104,7 @@ "wall_loops": "2", "wall_infill_order": "inner wall/outer wall/infill", "wall_generator": "arachne", - "compatible_printers": ["Flashforge Guider 2s 0.4 nozzle"] + "compatible_printers": [ + "Flashforge Guider 2s 0.4 nozzle" + ] } diff --git a/resources/profiles/Flashforge/process/0.16mm Standard @FF AD5X.json b/resources/profiles/Flashforge/process/0.16mm Standard @FF AD5X.json deleted file mode 100644 index 25d74fc796..0000000000 --- a/resources/profiles/Flashforge/process/0.16mm Standard @FF AD5X.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "type": "process", - "brim_type": "auto_brim", - "elefant_foot_compensation": "0.1", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "setting_id": "GP002", - "instantiation": "true", - "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", - "internal_solid_infill_speed": "300", - "is_custom_defined": "0", - "layer_height": "0.16", - "name": "0.16mm Standard @FF AD5X", - "only_one_wall_top": "1", - "prime_tower_width": "45", - "print_settings_id": "0.16mm Standard @FF AD5X", - "skirt_loops": "0", - "sparse_infill_speed": "330", - "support_bottom_z_distance": "0.14", - "support_interface_spacing": "0.2", - "support_top_z_distance": "0.14", - "support_type": "tree(auto)", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/process/0.16mm Standard @FF G4P HF.json b/resources/profiles/Flashforge/process/0.16mm Standard @FF G4P HF.json deleted file mode 100644 index 76d32da92b..0000000000 --- a/resources/profiles/Flashforge/process/0.16mm Standard @FF G4P HF.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "bridge_speed": "15", - "elefant_foot_compensation": "0.1", - "enable_support": "0", - "filter_out_gap_fill": "0.1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], - "gap_fill_target": "topbottom", - "infill_wall_overlap": "50%", - "inherits": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", - "initial_layer_infill_speed": "80", - "initial_layer_print_height": "0.2", - "initial_layer_speed": "60", - "inner_wall_speed": "300", - "internal_solid_infill_speed": "300", - "is_custom_defined": "0", - "layer_height": "0.16", - "name": "0.16mm Standard @FF G4P HF", - "only_one_wall_first_layer": "1", - "print_settings_id": "0.16mm Standard @FF G4P HF", - "resolution": "0.005", - "seam_gap": "5%", - "skirt_loops": "0", - "small_perimeter_speed": "10", - "sparse_infill_speed": "330", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.14", - "support_interface_filament": "0", - "support_interface_spacing": "0.2", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.42", - "support_speed": "150", - "support_top_z_distance": "0.14", - "support_type": "tree(auto)", - "travel_acceleration": "30000", - "travel_speed": "600", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/process/0.16mm Standard @FF G4P.json b/resources/profiles/Flashforge/process/0.16mm Standard @FF G4P.json deleted file mode 100644 index 94562568de..0000000000 --- a/resources/profiles/Flashforge/process/0.16mm Standard @FF G4P.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "bridge_speed": "15", - "elefant_foot_compensation": "0.1", - "enable_prime_tower": "1", - "filter_out_gap_fill": "0.1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], - "gap_fill_target": "topbottom", - "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", - "initial_layer_speed": "60", - "internal_solid_infill_speed": "300", - "is_custom_defined": "0", - "layer_height": "0.16", - "max_travel_detour_distance": "300", - "name": "0.16mm Standard @FF G4P", - "only_one_wall_top": "1", - "print_settings_id": "0.16mm Standard @FF G4P", - "resolution": "0.005", - "seam_gap": "5%", - "skirt_loops": "0", - "small_perimeter_speed": "10", - "sparse_infill_speed": "330", - "support_bottom_z_distance": "0.16", - "support_interface_bottom_layers": "0", - "support_interface_spacing": "0.2", - "support_top_z_distance": "0.16", - "support_type": "tree(auto)", - "top_shell_layers": "6", - "travel_acceleration": "30000", - "travel_speed": "600", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/process/0.18mm Fine @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.18mm Fine @FF AD5X 0.6 nozzle.json deleted file mode 100644 index 66e67f73e0..0000000000 --- a/resources/profiles/Flashforge/process/0.18mm Fine @FF AD5X 0.6 nozzle.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "process", - "brim_type": "auto_brim", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "infill_wall_overlap": "20%", - "inherits": "0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle", - "is_custom_defined": "0", - "name": "0.18mm Fine @FF AD5X 0.6 nozzle", - "only_one_wall_top": "1", - "prime_tower_brim_width": "5", - "prime_tower_width": "45", - "print_settings_id": "0.18mm Fine @FF AD5X 0.6 nozzle", - "skirt_loops": "0", - "support_bottom_z_distance": "0.22", - "support_top_z_distance": "0.22", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json index 1494f1ddd0..ec8626f715 100644 --- a/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json @@ -4,7 +4,9 @@ "inherits": "0.30mm Standard @Flashforge AD5M 0.6 Nozzle", "from": "system", "instantiation": "true", - "compatible_printers": ["Flashforge Adventurer 5M 0.6 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 5M 0.6 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "layer_height": "0.18", @@ -16,6 +18,5 @@ "support_bottom_z_distance": "0.2", "support_speed": "100", "support_top_z_distance": "0.2", - "skirt_loops": "0", - "version": "2.1.1.0" + "version": "2.0.2.0" } diff --git a/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json index 2717caae39..10ef9c64e8 100644 --- a/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json @@ -4,7 +4,9 @@ "inherits": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", "from": "system", "instantiation": "true", - "compatible_printers": ["Flashforge Adventurer 5M Pro 0.6 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.6 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "layer_height": "0.18", @@ -19,6 +21,5 @@ "support_interface_speed": "40", "support_object_xy_distance": "0.4", "support_speed": "100", - "skirt_loops": "0", - "version": "2.1.1.0" + "version": "2.0.2.0" } diff --git a/resources/profiles/Flashforge/process/0.18mm Standard @Flashforge G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.18mm Standard @Flashforge G3U 0.6 Nozzle.json index 9f77dcfae1..9f263a4da9 100644 --- a/resources/profiles/Flashforge/process/0.18mm Standard @Flashforge G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.18mm Standard @Flashforge G3U 0.6 Nozzle.json @@ -4,7 +4,9 @@ "setting_id": "GP001", "instantiation": "true", "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "compatible_printers": ["Flashforge Guider 3 Ultra 0.6 Nozzle"], + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.6 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "is_custom_defined": "0", diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @FF AD5X.json b/resources/profiles/Flashforge/process/0.20mm Standard @FF AD5X.json deleted file mode 100644 index 1bd8facdbf..0000000000 --- a/resources/profiles/Flashforge/process/0.20mm Standard @FF AD5X.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "process", - "brim_type": "auto_brim", - "elefant_foot_compensation": "0.1", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "setting_id": "GP002", - "instantiation": "true", - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", - "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], - "initial_layer_print_height": "0.25", - "is_custom_defined": "0", - "name": "0.20mm Standard @FF AD5X", - "only_one_wall_top": "1", - "prime_tower_width": "45", - "print_settings_id": "0.20mm Standard @FF AD5X", - "skirt_loops": "0", - "support_bottom_z_distance": "0.16", - "support_interface_spacing": "0.2", - "support_top_z_distance": "0.16", - "support_type": "tree(auto)", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P HF.json b/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P HF.json deleted file mode 100644 index de53a8fe9d..0000000000 --- a/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P HF.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "bridge_speed": "15", - "elefant_foot_compensation": "0.1", - "enable_support": "0", - "filter_out_gap_fill": "0.1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], - "gap_fill_target": "topbottom", - "infill_wall_overlap": "50%", - "inherits": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", - "initial_layer_infill_speed": "80", - "initial_layer_speed": "60", - "inner_wall_speed": "300", - "is_custom_defined": "0", - "name": "0.20mm Standard @FF G4P HF", - "only_one_wall_first_layer": "1", - "print_settings_id": "0.20mm Standard @FF G4P HF", - "resolution": "0.005", - "seam_gap": "5%", - "skirt_loops": "0", - "small_perimeter_speed": "10", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.16", - "support_interface_filament": "0", - "support_interface_spacing": "0.2", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.42", - "support_speed": "150", - "support_top_z_distance": "0.16", - "support_type": "tree(auto)", - "travel_acceleration": "30000", - "travel_speed": "600", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P PLA600.json b/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P PLA600.json deleted file mode 100644 index 2d4705eeac..0000000000 --- a/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P PLA600.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "bridge_speed": "15", - "elefant_foot_compensation": "0.1", - "enable_support": "0", - "filter_out_gap_fill": "0.1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], - "gap_fill_target": "topbottom", - "gap_infill_speed": "250", - "infill_wall_overlap": "50%", - "inherits": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", - "initial_layer_infill_speed": "80", - "initial_layer_speed": "60", - "inner_wall_speed": "600", - "internal_solid_infill_speed": "600", - "is_custom_defined": "0", - "name": "0.20mm Standard @FF G4P PLA600", - "only_one_wall_first_layer": "1", - "print_settings_id": "0.20mm Standard @FF G4P PLA600", - "resolution": "0.005", - "seam_gap": "5%", - "skirt_loops": "0", - "sparse_infill_speed": "600", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.16", - "support_interface_filament": "0", - "support_interface_spacing": "0.2", - "support_interface_speed": "100", - "support_interface_top_layers": "2", - "support_line_width": "0.42", - "support_speed": "200", - "support_top_z_distance": "0.16", - "support_type": "tree(auto)", - "top_surface_speed": "300", - "travel_acceleration": "30000", - "travel_speed": "600", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P.json b/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P.json deleted file mode 100644 index cbec21e6fe..0000000000 --- a/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "bridge_speed": "15", - "elefant_foot_compensation": "0.1", - "enable_prime_tower": "1", - "exclude_object": "1", - "filter_out_gap_fill": "0.1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], - "gap_fill_target": "topbottom", - "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", - "initial_layer_print_height": "0.25", - "initial_layer_speed": "60", - "is_custom_defined": "0", - "max_travel_detour_distance": "300", - "name": "0.20mm Standard @FF G4P", - "only_one_wall_top": "1", - "print_settings_id": "0.20mm Standard @FF G4P", - "resolution": "0.005", - "seam_gap": "5%", - "skirt_loops": "0", - "small_perimeter_speed": "10", - "support_interface_bottom_layers": "0", - "support_interface_spacing": "0.2", - "support_type": "tree(auto)", - "travel_acceleration": "30000", - "travel_speed": "600", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD3 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD3 0.4 Nozzle.json index c2aff0cfa3..a60d3b2227 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD3 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD3 0.4 Nozzle.json @@ -6,7 +6,7 @@ "setting_id": "GP001", "instantiation": "true", "layer_height": "0.2", - "initial_layer_print_height": "0.2", + "initial_layer_print_height" : "0.2", "line_width": "0.4", "initial_layer_line_width": "0.4", "outer_wall_line_width": "0.4", @@ -54,7 +54,9 @@ "wipe_speed": "200", "reduce_crossing_wall": "1", "max_travel_detour_distance": "50", - "compatible_printers": ["Flashforge Adventurer 3 Series 0.4 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 3 Series 0.4 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "" } diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M 0.4 Nozzle.json index e87fb47da4..12a4806553 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M 0.4 Nozzle.json @@ -5,13 +5,9 @@ "from": "system", "setting_id": "GP001", "instantiation": "true", - "compatible_printers": ["Flashforge Adventurer 5M 0.4 Nozzle"], - "filename_format": "{input_filename_base}.gcode", - "post_process": "", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.4 Nozzle" + ], "only_one_wall_top": "0", - "infill_wall_overlap": "50%", - "is_custom_defined": "0", - "print_settings_id": "0.20mm Standard @Flashforge AD5M 0.4 Nozzle", - "skirt_loops": "0", - "version": "2.1.1.0" -} + "infill_wall_overlap": "50%" +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle.json index 2ca9f7202a..65baa249cf 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle.json @@ -5,13 +5,9 @@ "from": "system", "setting_id": "GP002", "instantiation": "true", - "compatible_printers": ["Flashforge Adventurer 5M Pro 0.4 Nozzle"], - "filename_format": "{input_filename_base}.gcode", - "post_process": "", + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.4 Nozzle" + ], "only_one_wall_top": "0", - "infill_wall_overlap": "50%", - "is_custom_defined": "0", - "print_settings_id": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", - "skirt_loops": "0", - "version": "2.1.1.0" -} + "infill_wall_overlap": "50%" +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json index ced4e26924..15f4fa3add 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json @@ -20,7 +20,9 @@ "brim_object_gap": "0.1", "brim_type": "no_brim", "brim_width": "5", - "compatible_printers": ["Flashforge Guider 3 Ultra 0.4 Nozzle"], + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.4 Nozzle" + ], "compatible_printers_condition": "", "default_acceleration": "10000", "default_jerk": "0", @@ -117,7 +119,7 @@ "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", - "prime_tower_brim_width": "5", + "prime_tower_brim_width": "8", "prime_tower_width": "12", "prime_volume": "40", "print_flow_ratio": "1", @@ -134,7 +136,7 @@ "role_based_wipe_speed": "1", "seam_gap": "10%", "seam_position": "aligned", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "2", @@ -150,7 +152,7 @@ "sparse_infill_density": "15%", "sparse_infill_filament": "1", "sparse_infill_line_width": "0.45", - "sparse_infill_pattern": "grid", + "sparse_infill_pattern": "crosshatch", "sparse_infill_speed": "270", "spiral_mode": "0", "staggered_inner_seams": "0", @@ -174,7 +176,7 @@ "support_object_xy_distance": "0.3", "support_on_build_plate_only": "0", "support_remove_small_overhang": "1", - "support_speed": "80", + "support_speed": "120", "support_style": "default", "support_threshold_angle": "30", "support_top_z_distance": "0.2", @@ -238,6 +240,5 @@ "70" ], "xy_contour_compensation": "0", - "xy_hole_compensation": "0", - "version": "2.1.1.0" + "xy_hole_compensation": "0" } diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json index 9f7b928750..6783df37eb 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json @@ -105,5 +105,7 @@ "wall_loops": "2", "wall_infill_order": "inner wall/outer wall/infill", "wall_generator": "arachne", - "compatible_printers": ["Flashforge Guider 2s 0.4 nozzle"] + "compatible_printers": [ + "Flashforge Guider 2s 0.4 nozzle" + ] } diff --git a/resources/profiles/Flashforge/process/0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle.json deleted file mode 100644 index af9fd1e4b2..0000000000 --- a/resources/profiles/Flashforge/process/0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "type": "process", - "name": "0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle", - "inherits": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", - "from": "system", - "setting_id": "GP003", - "instantiation": "true", - "bottom_shell_layers": "4", - "bridge_flow": "0.96", - "bridge_speed": "20", - "gap_infill_speed": "100", - "infill_wall_overlap": "35%", - "initial_layer_speed": "30", - "initial_layer_travel_speed": "70%", - "inner_wall_speed": "100", - "internal_bridge_speed": "40", - "internal_solid_infill_speed": "100", - "is_custom_defined": "0", - "outer_wall_acceleration": "3000", - "outer_wall_speed": "100", - "print_settings_id": "0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle", - "prime_tower_brim_width": "5", - "sparse_infill_acceleration": "70%", - "sparse_infill_density": "50%", - "sparse_infill_pattern": "zig-zag", - "sparse_infill_speed": "100", - "support_bottom_interface_spacing": "0.2", - "support_bottom_z_distance": "0.15", - "support_interface_spacing": "0.2", - "support_interface_top_layers": "2", - "support_line_width": "0.4", - "support_on_build_plate_only": "1", - "support_speed": "80", - "support_type": "tree(auto)", - "top_bottom_infill_wall_overlap": "50%", - "top_surface_speed": "100", - "version": "2.1.0.0", - "wall_loops": "3", - "xy_hole_compensation": "0.06" -} diff --git a/resources/profiles/Flashforge/process/0.24mm Draft @FF AD5X.json b/resources/profiles/Flashforge/process/0.24mm Draft @FF AD5X.json deleted file mode 100644 index c55dcfaa1a..0000000000 --- a/resources/profiles/Flashforge/process/0.24mm Draft @FF AD5X.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "type": "process", - "brim_type": "auto_brim", - "elefant_foot_compensation": "0.1", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "setting_id": "GP002", - "instantiation": "true", - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "gap_infill_speed": "180", - "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", - "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], - "initial_layer_print_height": "0.25", - "internal_solid_infill_speed": "230", - "is_custom_defined": "0", - "layer_height": "0.24", - "name": "0.24mm Draft @FF AD5X", - "only_one_wall_top": "1", - "prime_tower_width": "45", - "print_settings_id": "0.24mm Draft @FF AD5X", - "skirt_loops": "0", - "sparse_infill_speed": "230", - "support_interface_spacing": "0.2", - "support_type": "tree(auto)", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json index 549ea237c2..6622afae72 100644 --- a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json @@ -16,9 +16,10 @@ "support_interface_speed": "40", "support_speed": "100", "support_top_z_distance": "0.15", - "compatible_printers": ["Flashforge Adventurer 5M 0.4 Nozzle"], + "version": "2.0.2.0", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.4 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", - "post_process": "", - "skirt_loops": "0", - "version": "2.1.1.0" + "post_process": "" } diff --git a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json index e3d2aa8fc2..ff585d7b37 100644 --- a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json @@ -17,9 +17,10 @@ "support_interface_spacing": "0.3", "support_line_width": "0.4", "top_surface_line_width": "0.4", - "compatible_printers": ["Flashforge Adventurer 5M Pro 0.4 Nozzle"], + "version": "2.0.2.0", + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.4 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", - "post_process": "", - "skirt_loops": "0", - "version": "2.1.1.0" + "post_process": "" } diff --git a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json index 3c51b1d96a..9097bf247e 100644 --- a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json @@ -7,7 +7,9 @@ "bridge_speed": "15", "infill_wall_overlap": "25%", "inherits": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", - "compatible_printers": ["Flashforge Guider 3 Ultra 0.4 Nozzle"], + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.4 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "internal_bridge_speed": "30", @@ -21,6 +23,5 @@ "support_line_width": "0.4", "support_object_xy_distance": "0.4", "support_speed": "80", - "prime_tower_brim_width": "5", - "version": "2.1.1.0" + "version": "2.0.2.0" } diff --git a/resources/profiles/Flashforge/process/0.24mm Fine @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/process/0.24mm Fine @FF AD5X 0.8 nozzle.json deleted file mode 100644 index 83b9d71866..0000000000 --- a/resources/profiles/Flashforge/process/0.24mm Fine @FF AD5X 0.8 nozzle.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "process", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "infill_wall_overlap": "20%", - "inherits": "0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle", - "internal_bridge_speed": "35", - "is_custom_defined": "0", - "name": "0.24mm Fine @FF AD5X 0.8 nozzle", - "only_one_wall_top": "1", - "prime_tower_brim_width": "5", - "prime_tower_width": "45", - "prime_volume": "100", - "print_settings_id": "0.24mm Fine @FF AD5X 0.8 nozzle", - "solid_infill_direction": "0", - "thick_internal_bridges": "0", - "top_shell_layers": "4", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M 0.8 Nozzle.json index 586d7f65bd..9abb2828b5 100644 --- a/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M 0.8 Nozzle.json @@ -5,7 +5,9 @@ "from": "system", "instantiation": "true", "layer_height": "0.24", - "compatible_printers": ["Flashforge Adventurer 5M 0.8 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 5M 0.8 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "bottom_shell_layers": "2", diff --git a/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle.json index bccd740625..3808a1adda 100644 --- a/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle.json @@ -5,7 +5,9 @@ "from": "system", "instantiation": "true", "layer_height": "0.24", - "compatible_printers": ["Flashforge Adventurer 5M Pro 0.8 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.8 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "bottom_shell_layers": "2", diff --git a/resources/profiles/Flashforge/process/0.24mm Standard @FF G4P HF.json b/resources/profiles/Flashforge/process/0.24mm Standard @FF G4P HF.json deleted file mode 100644 index a3a1a605f1..0000000000 --- a/resources/profiles/Flashforge/process/0.24mm Standard @FF G4P HF.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "bridge_speed": "15", - "elefant_foot_compensation": "0.1", - "enable_support": "0", - "filter_out_gap_fill": "0.1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], - "gap_fill_target": "topbottom", - "gap_infill_speed": "180", - "infill_wall_overlap": "50%", - "inherits": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", - "initial_layer_infill_speed": "80", - "initial_layer_speed": "60", - "inner_wall_speed": "300", - "internal_solid_infill_speed": "230", - "is_custom_defined": "0", - "layer_height": "0.24", - "name": "0.24mm Standard @FF G4P HF", - "only_one_wall_first_layer": "1", - "print_settings_id": "0.24mm Standard @FF G4P HF", - "resolution": "0.005", - "seam_gap": "5%", - "skirt_loops": "0", - "small_perimeter_speed": "10", - "sparse_infill_speed": "230", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.18", - "support_interface_filament": "0", - "support_interface_spacing": "0.2", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.42", - "support_speed": "150", - "support_top_z_distance": "0.18", - "support_type": "tree(auto)", - "travel_acceleration": "30000", - "travel_speed": "600", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/process/0.24mm Standard @FF G4P.json b/resources/profiles/Flashforge/process/0.24mm Standard @FF G4P.json deleted file mode 100644 index 45b0ddef64..0000000000 --- a/resources/profiles/Flashforge/process/0.24mm Standard @FF G4P.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "bridge_speed": "15", - "elefant_foot_compensation": "0.1", - "enable_prime_tower": "1", - "filter_out_gap_fill": "0.1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], - "gap_fill_target": "topbottom", - "gap_infill_speed": "180", - "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", - "initial_layer_print_height": "0.25", - "initial_layer_speed": "60", - "internal_solid_infill_speed": "230", - "is_custom_defined": "0", - "layer_height": "0.24", - "max_travel_detour_distance": "300", - "name": "0.24mm Standard @FF G4P", - "only_one_wall_top": "1", - "print_settings_id": "0.24mm Standard @FF G4P", - "resolution": "0.005", - "seam_gap": "5%", - "skirt_loops": "0", - "small_perimeter_speed": "10", - "sparse_infill_speed": "230", - "support_interface_bottom_layers": "0", - "support_interface_spacing": "0.2", - "support_type": "tree(auto)", - "top_shell_layers": "4", - "travel_acceleration": "30000", - "travel_speed": "600", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 HF nozzle.json deleted file mode 100644 index c2ef996bb2..0000000000 --- a/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 HF nozzle.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "bottom_solid_infill_flow_ratio": "0.96", - "bridge_acceleration": "3000", - "bridge_flow": "0.98", - "brim_type": "auto_brim", - "default_acceleration": "20000", - "enable_arc_fitting": "1", - "enable_prime_tower": "1", - "exclude_object": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_support": "1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], - "gap_infill_speed": "70", - "infill_wall_overlap": "15%", - "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "initial_layer_acceleration": "800", - "initial_layer_infill_speed": "60", - "initial_layer_line_width": "0.62", - "initial_layer_print_height": "0.3", - "initial_layer_speed": "40", - "inner_wall_acceleration": "10000", - "inner_wall_line_width": "0.62", - "inner_wall_speed": "200", - "internal_bridge_flow": "0.98", - "internal_bridge_speed": "35", - "internal_solid_infill_acceleration": "10000", - "internal_solid_infill_line_width": "0.62", - "internal_solid_infill_speed": "150", - "is_custom_defined": "0", - "layer_height": "0.25", - "line_width": "0.62", - "name": "0.25mm Standard @FF G4P 0.6 HF nozzle", - "outer_wall_acceleration": "5000", - "outer_wall_line_width": "0.62", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "12", - "overhang_speed_classic": "1", - "prime_tower_width": "45", - "prime_volume": "45", - "print_settings_id": "0.25mm Standard @FF G4P 0.6 HF nozzle", - "reduce_infill_retraction": "0", - "role_based_wipe_speed": "0", - "seam_gap": "10%", - "skirt_loops": "0", - "small_perimeter_speed": "35", - "small_perimeter_threshold": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_line_width": "0.62", - "sparse_infill_speed": "300", - "support_bottom_z_distance": "0.22", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_speed": "80", - "support_interface_top_layers": "3", - "support_line_width": "0.62", - "support_speed": "105", - "support_top_z_distance": "0.25", - "thick_internal_bridges": "0", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "0.96", - "top_surface_acceleration": "3000", - "top_surface_line_width": "0.62", - "travel_acceleration": "30000", - "travel_speed": "550", - "version": "2.1.1.0", - "wipe_speed": "500", - "wipe_tower_bridging": "10" -} diff --git a/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 nozzle.json deleted file mode 100644 index 08e845b639..0000000000 --- a/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 nozzle.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "bottom_solid_infill_flow_ratio": "0.96", - "bridge_acceleration": "3000", - "bridge_flow": "0.98", - "brim_type": "auto_brim", - "default_acceleration": "20000", - "enable_prime_tower": "1", - "exclude_object": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_support": "1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], - "infill_wall_overlap": "15%", - "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "initial_layer_acceleration": "800", - "initial_layer_infill_speed": "60", - "initial_layer_line_width": "0.62", - "initial_layer_print_height": "0.3", - "initial_layer_speed": "40", - "initial_layer_travel_speed": "600", - "inner_wall_acceleration": "10000", - "inner_wall_line_width": "0.62", - "inner_wall_speed": "200", - "internal_bridge_flow": "0.98", - "internal_bridge_speed": "35", - "internal_solid_infill_acceleration": "8000", - "internal_solid_infill_line_width": "0.62", - "internal_solid_infill_speed": "150", - "is_custom_defined": "0", - "layer_height": "0.25", - "line_width": "0.62", - "name": "0.25mm Standard @FF G4P 0.6 nozzle", - "only_one_wall_first_layer": "1", - "outer_wall_line_width": "0.62", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "12", - "overhang_speed_classic": "1", - "prime_tower_width": "45", - "prime_volume": "45", - "print_settings_id": "0.25mm Standard @FF G4P 0.6 nozzle", - "role_based_wipe_speed": "0", - "seam_gap": "10%", - "skirt_loops": "0", - "small_perimeter_speed": "35", - "sparse_infill_acceleration": "100%", - "sparse_infill_line_width": "0.62", - "sparse_infill_speed": "220", - "support_bottom_z_distance": "0.25", - "support_interface_filament": "0", - "support_line_width": "0.62", - "support_speed": "70", - "support_top_z_distance": "0.3", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "0.96", - "top_surface_acceleration": "3000", - "top_surface_line_width": "0.62", - "travel_acceleration": "20000", - "travel_speed": "550", - "version": "2.1.1.0", - "wipe_speed": "50", - "wipe_tower_bridging": "10", - "wipe_tower_max_purge_speed": "120" -} diff --git a/resources/profiles/Flashforge/process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json index dce9643a6c..bb8196f007 100644 --- a/resources/profiles/Flashforge/process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json @@ -105,5 +105,7 @@ "wall_loops": "2", "wall_infill_order": "inner wall/outer wall/infill", "wall_generator": "arachne", - "compatible_printers": ["Flashforge Guider 2s 0.4 nozzle"] + "compatible_printers": [ + "Flashforge Guider 2s 0.4 nozzle" + ] } diff --git a/resources/profiles/Flashforge/process/0.30mm Fast @Flashforge AD3 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.30mm Fast @Flashforge AD3 0.4 Nozzle.json index 3b47dca5ef..9fb5571ceb 100644 --- a/resources/profiles/Flashforge/process/0.30mm Fast @Flashforge AD3 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Fast @Flashforge AD3 0.4 Nozzle.json @@ -6,7 +6,7 @@ "setting_id": "GP001", "instantiation": "true", "layer_height": "0.3", - "initial_layer_print_height": "0.3", + "initial_layer_print_height" : "0.3", "line_width": "0.4", "initial_layer_line_width": "0.4", "outer_wall_line_width": "0.4", @@ -54,7 +54,9 @@ "wipe_speed": "200", "reduce_crossing_wall": "1", "max_travel_detour_distance": "50", - "compatible_printers": ["Flashforge Adventurer 3 Series 0.4 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 3 Series 0.4 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "" } diff --git a/resources/profiles/Flashforge/process/0.30mm Standard @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.30mm Standard @FF AD5X 0.6 nozzle.json deleted file mode 100644 index 62c632a7a3..0000000000 --- a/resources/profiles/Flashforge/process/0.30mm Standard @FF AD5X 0.6 nozzle.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "process", - "brim_type": "auto_brim", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "setting_id": "GP004", - "instantiation": "true", - "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "infill_wall_overlap": "20%", - "inherits": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", - "is_custom_defined": "0", - "name": "0.30mm Standard @FF AD5X 0.6 nozzle", - "only_one_wall_top": "1", - "prime_tower_width": "45", - "print_settings_id": "0.30mm Standard @FF AD5X 0.6 nozzle", - "skirt_loops": "0", - "support_bottom_z_distance": "0.3", - "support_top_z_distance": "0.3", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/process/0.30mm Standard @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.30mm Standard @FF G4P 0.6 nozzle.json deleted file mode 100644 index 01c3582bb9..0000000000 --- a/resources/profiles/Flashforge/process/0.30mm Standard @FF G4P 0.6 nozzle.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "bottom_solid_infill_flow_ratio": "0.96", - "bridge_acceleration": "3000", - "brim_type": "auto_brim", - "enable_prime_tower": "1", - "exclude_object": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_support": "1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], - "infill_wall_overlap": "15%", - "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "initial_layer_acceleration": "800", - "initial_layer_infill_speed": "60", - "initial_layer_line_width": "0.62", - "initial_layer_print_height": "0.3", - "initial_layer_speed": "40", - "initial_layer_travel_speed": "600", - "inner_wall_acceleration": "10000", - "inner_wall_line_width": "0.62", - "internal_bridge_flow": "0.96", - "internal_bridge_speed": "35", - "internal_solid_infill_acceleration": "8000", - "internal_solid_infill_line_width": "0.62", - "internal_solid_infill_speed": "120", - "is_custom_defined": "0", - "line_width": "0.62", - "name": "0.30mm Standard @FF G4P 0.6 nozzle", - "outer_wall_line_width": "0.62", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "12", - "overhang_speed_classic": "1", - "prime_tower_width": "45", - "prime_volume": "45", - "print_settings_id": "0.30mm Standard @FF G4P 0.6 nozzle", - "role_based_wipe_speed": "0", - "seam_gap": "10%", - "skirt_loops": "0", - "small_perimeter_speed": "35", - "sparse_infill_acceleration": "100%", - "sparse_infill_line_width": "0.62", - "sparse_infill_speed": "220", - "support_bottom_z_distance": "0.25", - "support_interface_filament": "0", - "support_line_width": "0.62", - "support_speed": "70", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "0.96", - "top_surface_acceleration": "3000", - "top_surface_line_width": "0.62", - "top_surface_speed": "100", - "travel_acceleration": "20000", - "travel_speed": "550", - "version": "2.1.1.0", - "wipe_speed": "50", - "wipe_tower_bridging": "10", - "wipe_tower_max_purge_speed": "120" -} diff --git a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD3 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD3 0.6 Nozzle.json index 894ebeefab..972ad604de 100644 --- a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD3 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD3 0.6 Nozzle.json @@ -6,7 +6,7 @@ "setting_id": "GP003", "instantiation": "true", "layer_height": "0.3", - "initial_layer_print_height": "0.3", + "initial_layer_print_height" : "0.3", "line_width": "0.6", "initial_layer_line_width": "0.6", "outer_wall_line_width": "0.6", @@ -54,7 +54,9 @@ "wipe_speed": "200", "reduce_crossing_wall": "1", "max_travel_detour_distance": "50", - "compatible_printers": ["Flashforge Adventurer 3 Series 0.6 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 3 Series 0.6 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "" -} +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M 0.6 Nozzle.json index 0e9a01da0d..23deef5f13 100644 --- a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M 0.6 Nozzle.json @@ -5,13 +5,9 @@ "from": "system", "setting_id": "GP003", "instantiation": "true", - "compatible_printers": ["Flashforge Adventurer 5M 0.6 Nozzle"], - "filename_format": "{input_filename_base}.gcode", - "post_process": "", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.6 Nozzle" + ], "only_one_wall_top": "0", - "infill_wall_overlap": "50%", - "is_custom_defined": "0", - "print_settings_id": "0.30mm Standard @Flashforge AD5M 0.6 Nozzle", - "skirt_loops": "0", - "version": "2.1.1.0" -} + "infill_wall_overlap": "50%" +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle.json index 13c43a8167..8e1b3f5ecc 100644 --- a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle.json @@ -5,13 +5,9 @@ "from": "system", "setting_id": "GP004", "instantiation": "true", - "compatible_printers": ["Flashforge Adventurer 5M Pro 0.6 Nozzle"], - "filename_format": "{input_filename_base}.gcode", - "post_process": "", + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.6 Nozzle" + ], "only_one_wall_top": "0", - "infill_wall_overlap": "50%", - "is_custom_defined": "0", - "print_settings_id": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", - "skirt_loops": "0", - "version": "2.1.1.0" -} + "infill_wall_overlap": "50%" +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge G3U 0.6 Nozzle.json index c6bbabb0b9..d969d92eed 100644 --- a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge G3U 0.6 Nozzle.json @@ -6,7 +6,9 @@ "setting_id": "GP003", "instantiation": "true", "layer_height": "0.3", - "compatible_printers": ["Flashforge Guider 3 Ultra 0.6 Nozzle"], + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.6 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "bottom_solid_infill_flow_ratio": "1.02", diff --git a/resources/profiles/Flashforge/process/0.32mm Standard @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/process/0.32mm Standard @FF G4P 0.8 HF nozzle.json deleted file mode 100644 index 06a606afff..0000000000 --- a/resources/profiles/Flashforge/process/0.32mm Standard @FF G4P 0.8 HF nozzle.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "bottom_solid_infill_flow_ratio": "0.96", - "bridge_acceleration": "3000", - "bridge_flow": "0.98", - "brim_type": "auto_brim", - "default_acceleration": "20000", - "enable_prime_tower": "1", - "exclude_object": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_support": "1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], - "infill_wall_overlap": "15%", - "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "initial_layer_acceleration": "800", - "initial_layer_infill_speed": "60", - "initial_layer_line_width": "0.82", - "initial_layer_print_height": "0.3", - "initial_layer_speed": "40", - "initial_layer_travel_speed": "600", - "inner_wall_acceleration": "10000", - "inner_wall_line_width": "0.82", - "inner_wall_speed": "200", - "internal_bridge_flow": "0.98", - "internal_bridge_speed": "35", - "internal_solid_infill_acceleration": "8000", - "internal_solid_infill_line_width": "0.82", - "internal_solid_infill_speed": "150", - "is_custom_defined": "0", - "layer_height": "0.32", - "line_width": "0.82", - "name": "0.32mm Standard @FF G4P 0.8 HF nozzle", - "outer_wall_line_width": "0.82", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "12", - "overhang_speed_classic": "1", - "prime_tower_width": "45", - "prime_volume": "100", - "print_settings_id": "0.32mm Standard @FF G4P 0.8 HF nozzle", - "role_based_wipe_speed": "0", - "skirt_loops": "0", - "small_perimeter_speed": "35", - "sparse_infill_acceleration": "100%", - "sparse_infill_line_width": "0.82", - "sparse_infill_speed": "220", - "support_bottom_z_distance": "0.25", - "support_interface_filament": "0", - "support_line_width": "0.82", - "support_speed": "70", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "0.96", - "top_surface_acceleration": "3000", - "top_surface_line_width": "0.82", - "travel_acceleration": "20000", - "travel_speed": "550", - "version": "2.1.1.0", - "wipe_speed": "50", - "wipe_tower_bridging": "10", - "wipe_tower_max_purge_speed": "120" -} diff --git a/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 HF nozzle.json deleted file mode 100644 index d12a29d263..0000000000 --- a/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 HF nozzle.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "bottom_solid_infill_flow_ratio": "0.96", - "bridge_acceleration": "3000", - "bridge_flow": "0.98", - "brim_type": "auto_brim", - "enable_arc_fitting": "1", - "enable_prime_tower": "1", - "exclude_object": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_support": "1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], - "gap_infill_speed": "70", - "infill_wall_overlap": "15%", - "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "initial_layer_acceleration": "800", - "initial_layer_infill_speed": "60", - "initial_layer_line_width": "0.62", - "initial_layer_print_height": "0.3", - "initial_layer_speed": "40", - "inner_wall_acceleration": "10000", - "inner_wall_line_width": "0.62", - "internal_bridge_flow": "0.98", - "internal_bridge_speed": "35", - "internal_solid_infill_acceleration": "10000", - "internal_solid_infill_line_width": "0.62", - "internal_solid_infill_speed": "150", - "is_custom_defined": "0", - "layer_height": "0.36", - "line_width": "0.62", - "name": "0.36mm Standard @FF G4P 0.6 HF nozzle", - "outer_wall_acceleration": "5000", - "outer_wall_line_width": "0.62", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "12", - "overhang_speed_classic": "1", - "prime_tower_width": "45", - "prime_volume": "45", - "print_settings_id": "0.36mm Standard @FF G4P 0.6 HF nozzle", - "reduce_infill_retraction": "0", - "role_based_wipe_speed": "0", - "seam_gap": "10%", - "skirt_loops": "0", - "small_perimeter_speed": "35", - "small_perimeter_threshold": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_line_width": "0.62", - "sparse_infill_speed": "220", - "support_bottom_z_distance": "0.25", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_speed": "80", - "support_interface_top_layers": "3", - "support_line_width": "0.62", - "support_speed": "105", - "thick_internal_bridges": "0", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "0.96", - "top_surface_acceleration": "3000", - "top_surface_line_width": "0.62", - "travel_acceleration": "30000", - "travel_speed": "550", - "version": "2.1.1.0", - "wipe_speed": "500", - "wipe_tower_bridging": "10", - "wipe_tower_max_purge_speed": "120" -} diff --git a/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 nozzle.json deleted file mode 100644 index 9b7f89c97e..0000000000 --- a/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 nozzle.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "bottom_solid_infill_flow_ratio": "0.96", - "bridge_acceleration": "3000", - "brim_type": "auto_brim", - "enable_prime_tower": "1", - "exclude_object": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_support": "1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], - "infill_wall_overlap": "15%", - "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "initial_layer_acceleration": "800", - "initial_layer_infill_speed": "60", - "initial_layer_line_width": "0.62", - "initial_layer_print_height": "0.3", - "initial_layer_speed": "40", - "initial_layer_travel_speed": "600", - "inner_wall_acceleration": "10000", - "inner_wall_line_width": "0.62", - "internal_bridge_flow": "0.96", - "internal_bridge_speed": "35", - "internal_solid_infill_acceleration": "8000", - "internal_solid_infill_line_width": "0.62", - "internal_solid_infill_speed": "120", - "is_custom_defined": "0", - "layer_height": "0.36", - "line_width": "0.62", - "name": "0.36mm Standard @FF G4P 0.6 nozzle", - "outer_wall_line_width": "0.62", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "12", - "overhang_speed_classic": "1", - "prime_tower_width": "45", - "prime_volume": "45", - "print_settings_id": "0.36mm Standard @FF G4P 0.6 nozzle", - "role_based_wipe_speed": "0", - "seam_gap": "10%", - "skirt_loops": "0", - "small_perimeter_speed": "35", - "sparse_infill_acceleration": "100%", - "sparse_infill_line_width": "0.62", - "sparse_infill_speed": "220", - "support_bottom_z_distance": "0.25", - "support_interface_filament": "0", - "support_line_width": "0.62", - "support_speed": "70", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "0.96", - "top_surface_acceleration": "3000", - "top_surface_line_width": "0.62", - "top_surface_speed": "100", - "travel_acceleration": "20000", - "travel_speed": "550", - "version": "2.1.1.0", - "wipe_speed": "50", - "wipe_tower_bridging": "10", - "wipe_tower_max_purge_speed": "120" -} diff --git a/resources/profiles/Flashforge/process/0.3mm Standard @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/process/0.3mm Standard @FF G4P 0.6 HF nozzle.json deleted file mode 100644 index 217751fbdf..0000000000 --- a/resources/profiles/Flashforge/process/0.3mm Standard @FF G4P 0.6 HF nozzle.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "bottom_solid_infill_flow_ratio": "0.96", - "bridge_acceleration": "3000", - "bridge_flow": "0.98", - "brim_type": "auto_brim", - "enable_arc_fitting": "1", - "enable_prime_tower": "1", - "exclude_object": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_support": "1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], - "gap_infill_speed": "70", - "infill_wall_overlap": "15%", - "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "initial_layer_acceleration": "800", - "initial_layer_infill_speed": "60", - "initial_layer_line_width": "0.62", - "initial_layer_print_height": "0.3", - "initial_layer_speed": "40", - "inner_wall_acceleration": "10000", - "inner_wall_line_width": "0.62", - "internal_bridge_flow": "0.98", - "internal_bridge_speed": "35", - "internal_solid_infill_acceleration": "10000", - "internal_solid_infill_line_width": "0.62", - "internal_solid_infill_speed": "150", - "is_custom_defined": "0", - "line_width": "0.62", - "name": "0.3mm Standard @FF G4P 0.6 HF nozzle", - "outer_wall_acceleration": "5000", - "outer_wall_line_width": "0.62", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "12", - "overhang_speed_classic": "1", - "prime_tower_width": "45", - "prime_volume": "45", - "print_settings_id": "0.3mm Standard @FF G4P 0.6 HF nozzle", - "reduce_infill_retraction": "0", - "role_based_wipe_speed": "0", - "seam_gap": "10%", - "skirt_loops": "0", - "small_perimeter_speed": "35", - "small_perimeter_threshold": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_line_width": "0.62", - "sparse_infill_speed": "220", - "support_bottom_z_distance": "0.25", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_speed": "80", - "support_interface_top_layers": "3", - "support_line_width": "0.62", - "support_speed": "105", - "support_top_z_distance": "0.3", - "thick_internal_bridges": "0", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "0.96", - "top_surface_acceleration": "3000", - "top_surface_line_width": "0.62", - "travel_acceleration": "30000", - "travel_speed": "550", - "version": "2.1.1.0", - "wipe_speed": "500", - "wipe_tower_bridging": "10", - "wipe_tower_max_purge_speed": "120" -} diff --git a/resources/profiles/Flashforge/process/0.40mm Standard @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/process/0.40mm Standard @FF AD5X 0.8 nozzle.json deleted file mode 100644 index 5e437fc14b..0000000000 --- a/resources/profiles/Flashforge/process/0.40mm Standard @FF AD5X 0.8 nozzle.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "process", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "infill_wall_overlap": "20%", - "inherits": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", - "internal_bridge_speed": "35", - "is_custom_defined": "0", - "name": "0.40mm Standard @FF AD5X 0.8 nozzle", - "only_one_wall_top": "1", - "prime_tower_width": "45", - "prime_volume": "100", - "print_settings_id": "0.40mm Standard @FF AD5X 0.8 nozzle", - "solid_infill_direction": "0", - "support_bottom_z_distance": "0.3", - "support_top_z_distance": "0.3", - "thick_internal_bridges": "0", - "top_shell_thickness": "0", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/process/0.40mm Standard @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/process/0.40mm Standard @FF G4P 0.8 HF nozzle.json deleted file mode 100644 index 38f4b2cca9..0000000000 --- a/resources/profiles/Flashforge/process/0.40mm Standard @FF G4P 0.8 HF nozzle.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "bottom_solid_infill_flow_ratio": "0.96", - "bridge_acceleration": "3000", - "brim_type": "auto_brim", - "enable_prime_tower": "1", - "exclude_object": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_support": "1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], - "infill_wall_overlap": "15%", - "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "initial_layer_acceleration": "800", - "initial_layer_infill_speed": "60", - "initial_layer_line_width": "0.82", - "initial_layer_print_height": "0.3", - "initial_layer_speed": "40", - "initial_layer_travel_speed": "600", - "inner_wall_acceleration": "10000", - "inner_wall_line_width": "0.82", - "internal_bridge_flow": "0.96", - "internal_bridge_speed": "35", - "internal_solid_infill_acceleration": "8000", - "internal_solid_infill_line_width": "0.82", - "internal_solid_infill_speed": "120", - "is_custom_defined": "0", - "layer_height": "0.4", - "line_width": "0.82", - "name": "0.40mm Standard @FF G4P 0.8 HF nozzle", - "outer_wall_line_width": "0.82", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "12", - "overhang_speed_classic": "1", - "prime_tower_width": "45", - "prime_volume": "100", - "print_settings_id": "0.40mm Standard @FF G4P 0.8 HF nozzle", - "role_based_wipe_speed": "0", - "seam_gap": "10%", - "skirt_loops": "0", - "small_perimeter_speed": "35", - "sparse_infill_acceleration": "100%", - "sparse_infill_line_width": "0.82", - "sparse_infill_speed": "220", - "support_bottom_z_distance": "0.25", - "support_interface_filament": "0", - "support_line_width": "0.82", - "support_speed": "70", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "0.96", - "top_surface_acceleration": "3000", - "top_surface_line_width": "0.82", - "top_surface_speed": "100", - "travel_acceleration": "20000", - "travel_speed": "550", - "version": "2.1.1.0", - "wipe_speed": "50", - "wipe_tower_bridging": "10", - "wipe_tower_max_purge_speed": "120" -} diff --git a/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M 0.8 Nozzle.json index ead830f46e..4c50751066 100644 --- a/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M 0.8 Nozzle.json @@ -1,36 +1,36 @@ { - "type": "process", - "name": "0.40mm Standard @Flashforge AD5M 0.8 Nozzle", - "inherits": "0.30mm Standard @Flashforge AD5M 0.6 Nozzle", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Adventurer 5M 0.8 Nozzle"], - "filename_format": "{input_filename_base}.gcode", - "post_process": "", - "setting_id": "GP002", - "print_settings_id": "0.40mm Standard @Flashforge AD5M 0.8 Nozzle", - "elefant_foot_compensation": "0", - "initial_layer_infill_speed": "55", - "initial_layer_line_width": "0.85", - "initial_layer_speed": "35", - "inner_wall_line_width": "0.85", - "internal_solid_infill_acceleration": "5000", - "internal_solid_infill_line_width": "0.82", - "layer_height": "0.4", - "line_width": "0.82", - "outer_wall_line_width": "0.82", - "skirt_loops": "0", - "sparse_infill_line_width": "0.85", - "support_bottom_interface_spacing": "0.4", - "support_bottom_z_distance": "0.22", - "support_interface_spacing": "0.4", - "support_line_width": "0.82", - "support_object_xy_distance": "0.4", - "support_top_z_distance": "0.22", - "top_shell_layers": "4", - "top_shell_thickness": "0.8", - "top_surface_line_width": "0.82", - "tree_support_tip_diameter": "1.2", - "version": "1.8.0.0", - "wipe_speed": "60%" -} + "type": "process", + "name": "0.40mm Standard @Flashforge AD5M 0.8 Nozzle", + "inherits": "0.30mm Standard @Flashforge AD5M 0.6 Nozzle", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.8 Nozzle" + ], + "setting_id": "GP002", + "print_settings_id": "0.40mm Standard @Flashforge AD5M 0.8 Nozzle", + "elefant_foot_compensation": "0", + "initial_layer_infill_speed": "55", + "initial_layer_line_width": "0.85", + "initial_layer_speed": "35", + "inner_wall_line_width": "0.85", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.82", + "layer_height": "0.4", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "skirt_loops": "0", + "sparse_infill_line_width": "0.85", + "support_bottom_interface_spacing": "0.4", + "support_bottom_z_distance": "0.22", + "support_interface_spacing": "0.4", + "support_line_width": "0.82", + "support_object_xy_distance": "0.4", + "support_top_z_distance": "0.22", + "top_shell_layers": "4", + "top_shell_thickness": "0.8", + "top_surface_line_width": "0.82", + "tree_support_tip_diameter": "1.2", + "version": "1.8.0.0", + "wipe_speed": "60%" +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle.json index 6facad3f97..28323aba75 100644 --- a/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle.json @@ -1,36 +1,36 @@ { - "type": "process", - "name": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", - "inherits": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Adventurer 5M Pro 0.8 Nozzle"], - "filename_format": "{input_filename_base}.gcode", - "post_process": "", - "setting_id": "GP001", - "print_settings_id": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", - "elefant_foot_compensation": "0", - "initial_layer_infill_speed": "55", - "initial_layer_line_width": "0.85", - "initial_layer_speed": "35", - "inner_wall_line_width": "0.85", - "internal_solid_infill_acceleration": "5000", - "internal_solid_infill_line_width": "0.82", - "layer_height": "0.4", - "line_width": "0.82", - "outer_wall_line_width": "0.82", - "skirt_loops": "0", - "sparse_infill_line_width": "0.85", - "support_bottom_interface_spacing": "0.4", - "support_bottom_z_distance": "0.22", - "support_interface_spacing": "0.4", - "support_line_width": "0.82", - "support_object_xy_distance": "0.4", - "support_top_z_distance": "0.22", - "top_shell_layers": "4", - "top_shell_thickness": "0.8", - "top_surface_line_width": "0.82", - "tree_support_tip_diameter": "1.2", - "version": "1.8.0.0", - "wipe_speed": "60%" -} + "type": "process", + "name": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", + "inherits": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.8 Nozzle" + ], + "setting_id": "GP001", + "print_settings_id": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", + "elefant_foot_compensation": "0", + "initial_layer_infill_speed": "55", + "initial_layer_line_width": "0.85", + "initial_layer_speed": "35", + "inner_wall_line_width": "0.85", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.82", + "layer_height": "0.4", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "skirt_loops": "0", + "sparse_infill_line_width": "0.85", + "support_bottom_interface_spacing": "0.4", + "support_bottom_z_distance": "0.22", + "support_interface_spacing": "0.4", + "support_line_width": "0.82", + "support_object_xy_distance": "0.4", + "support_top_z_distance": "0.22", + "top_shell_layers": "4", + "top_shell_thickness": "0.8", + "top_surface_line_width": "0.82", + "tree_support_tip_diameter": "1.2", + "version": "1.8.0.0", + "wipe_speed": "60%" +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge G3U 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge G3U 0.8 Nozzle.json index a7a54bca75..5f444a2ed9 100644 --- a/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge G3U 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge G3U 0.8 Nozzle.json @@ -6,7 +6,9 @@ "setting_id": "GP003", "instantiation": "true", "layer_height": "0.4", - "compatible_printers": ["Flashforge Guider 3 Ultra 0.8 Nozzle"], + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.8 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "bridge_flow": "0.96", diff --git a/resources/profiles/Flashforge/process/0.42mm Draft @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.42mm Draft @FF AD5X 0.6 nozzle.json deleted file mode 100644 index c3f8e12cd4..0000000000 --- a/resources/profiles/Flashforge/process/0.42mm Draft @FF AD5X 0.6 nozzle.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "process", - "brim_type": "auto_brim", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "infill_wall_overlap": "20%", - "inherits": "0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle", - "is_custom_defined": "0", - "name": "0.42mm Draft @FF AD5X 0.6 nozzle", - "only_one_wall_top": "1", - "prime_tower_brim_width": "5", - "prime_tower_width": "45", - "print_settings_id": "0.42mm Draft @FF AD5X 0.6 nozzle", - "skirt_loops": "0", - "support_bottom_z_distance": "0.3", - "support_top_z_distance": "0.3", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json index 5045909831..3f27e98251 100644 --- a/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json @@ -5,7 +5,9 @@ "from": "system", "instantiation": "true", "layer_height": "0.42", - "compatible_printers": ["Flashforge Adventurer 5M 0.6 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 5M 0.6 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "infill_wall_overlap": "40%", @@ -24,6 +26,5 @@ "support_speed": "100", "support_top_z_distance": "0.22", "top_surface_line_width": "0.6", - "skirt_loops": "0", - "version": "2.1.1.0" + "version": "2.0.2.0" } diff --git a/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json index 4a12f316fa..4ee2fab87d 100644 --- a/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json @@ -5,7 +5,9 @@ "from": "system", "instantiation": "true", "layer_height": "0.42", - "compatible_printers": ["Flashforge Adventurer 5M Pro 0.6 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.6 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "bridge_flow": "0.96", @@ -26,6 +28,5 @@ "support_speed": "100", "support_top_z_distance": "0.22", "top_surface_line_width": "0.6", - "skirt_loops": "0", - "version": "2.1.1.0" + "version": "2.0.2.0" } diff --git a/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 HF nozzle.json deleted file mode 100644 index 5def134a83..0000000000 --- a/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 HF nozzle.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "bottom_solid_infill_flow_ratio": "0.96", - "bridge_acceleration": "3000", - "bridge_flow": "0.98", - "brim_type": "auto_brim", - "enable_arc_fitting": "1", - "enable_prime_tower": "1", - "exclude_object": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_support": "1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], - "gap_infill_speed": "70", - "infill_wall_overlap": "15%", - "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "initial_layer_acceleration": "800", - "initial_layer_infill_speed": "60", - "initial_layer_line_width": "0.62", - "initial_layer_print_height": "0.3", - "initial_layer_speed": "40", - "inner_wall_acceleration": "10000", - "inner_wall_line_width": "0.62", - "internal_bridge_flow": "0.98", - "internal_bridge_speed": "35", - "internal_solid_infill_acceleration": "10000", - "internal_solid_infill_line_width": "0.62", - "internal_solid_infill_speed": "150", - "is_custom_defined": "0", - "layer_height": "0.42", - "line_width": "0.62", - "name": "0.42mm Standard @FF G4P 0.6 HF nozzle", - "outer_wall_acceleration": "5000", - "outer_wall_line_width": "0.62", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "12", - "overhang_speed_classic": "1", - "prime_tower_width": "45", - "prime_volume": "45", - "print_settings_id": "0.42mm Standard @FF G4P 0.6 HF nozzle", - "reduce_infill_retraction": "0", - "role_based_wipe_speed": "0", - "seam_gap": "10%", - "skirt_loops": "0", - "small_perimeter_speed": "35", - "small_perimeter_threshold": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_line_width": "0.62", - "sparse_infill_speed": "220", - "support_bottom_z_distance": "0.3", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_speed": "80", - "support_interface_top_layers": "3", - "support_line_width": "0.62", - "support_speed": "105", - "thick_internal_bridges": "0", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "0.96", - "top_surface_acceleration": "3000", - "top_surface_line_width": "0.62", - "travel_acceleration": "30000", - "travel_speed": "550", - "version": "2.1.1.0", - "wipe_speed": "500", - "wipe_tower_bridging": "10", - "wipe_tower_max_purge_speed": "120" -} diff --git a/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 nozzle.json deleted file mode 100644 index 78fa5ddce5..0000000000 --- a/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 nozzle.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "bottom_solid_infill_flow_ratio": "0.96", - "bridge_acceleration": "3000", - "brim_type": "auto_brim", - "enable_prime_tower": "1", - "exclude_object": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_support": "1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], - "infill_wall_overlap": "15%", - "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "initial_layer_acceleration": "800", - "initial_layer_infill_speed": "60", - "initial_layer_line_width": "0.62", - "initial_layer_print_height": "0.3", - "initial_layer_speed": "40", - "initial_layer_travel_speed": "600", - "inner_wall_acceleration": "10000", - "inner_wall_line_width": "0.62", - "internal_bridge_flow": "0.96", - "internal_bridge_speed": "35", - "internal_solid_infill_acceleration": "8000", - "internal_solid_infill_line_width": "0.62", - "internal_solid_infill_speed": "120", - "is_custom_defined": "0", - "layer_height": "0.42", - "line_width": "0.62", - "name": "0.42mm Standard @FF G4P 0.6 nozzle", - "outer_wall_line_width": "0.62", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "12", - "overhang_speed_classic": "1", - "prime_tower_width": "45", - "prime_volume": "45", - "print_settings_id": "0.42mm Standard @FF G4P 0.6 nozzle", - "role_based_wipe_speed": "0", - "seam_gap": "10%", - "skirt_loops": "0", - "small_perimeter_speed": "35", - "sparse_infill_acceleration": "100%", - "sparse_infill_line_width": "0.62", - "sparse_infill_speed": "220", - "support_bottom_z_distance": "0.3", - "support_interface_filament": "0", - "support_line_width": "0.62", - "support_speed": "70", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "0.96", - "top_surface_acceleration": "3000", - "top_surface_line_width": "0.62", - "top_surface_speed": "100", - "travel_acceleration": "20000", - "travel_speed": "550", - "version": "2.1.1.0", - "wipe_speed": "50", - "wipe_tower_bridging": "10", - "wipe_tower_max_purge_speed": "120" -} diff --git a/resources/profiles/Flashforge/process/0.42mm Standard @Flashforge G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.42mm Standard @Flashforge G3U 0.6 Nozzle.json index 531e8c9b41..2ee142fabd 100644 --- a/resources/profiles/Flashforge/process/0.42mm Standard @Flashforge G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.42mm Standard @Flashforge G3U 0.6 Nozzle.json @@ -4,7 +4,9 @@ "setting_id": "GP001", "instantiation": "true", "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "compatible_printers": ["Flashforge Guider 3 Ultra 0.6 Nozzle"], + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.6 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "initial_layer_print_height": "0.3", diff --git a/resources/profiles/Flashforge/process/0.48mm Standard @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/process/0.48mm Standard @FF G4P 0.8 HF nozzle.json deleted file mode 100644 index 739d0f1565..0000000000 --- a/resources/profiles/Flashforge/process/0.48mm Standard @FF G4P 0.8 HF nozzle.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "bottom_solid_infill_flow_ratio": "0.96", - "bridge_acceleration": "3000", - "brim_type": "auto_brim", - "enable_prime_tower": "1", - "exclude_object": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_support": "1", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], - "infill_wall_overlap": "15%", - "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "initial_layer_acceleration": "800", - "initial_layer_infill_speed": "60", - "initial_layer_line_width": "0.82", - "initial_layer_print_height": "0.3", - "initial_layer_speed": "40", - "initial_layer_travel_speed": "600", - "inner_wall_acceleration": "10000", - "inner_wall_line_width": "0.82", - "internal_bridge_flow": "0.96", - "internal_bridge_speed": "35", - "internal_solid_infill_acceleration": "8000", - "internal_solid_infill_line_width": "0.82", - "internal_solid_infill_speed": "120", - "is_custom_defined": "0", - "layer_height": "0.48", - "line_width": "0.82", - "name": "0.48mm Standard @FF G4P 0.8 HF nozzle", - "outer_wall_line_width": "0.82", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "12", - "overhang_speed_classic": "1", - "prime_tower_width": "45", - "prime_volume": "100", - "print_settings_id": "0.48mm Standard @FF G4P 0.8 HF nozzle", - "role_based_wipe_speed": "0", - "seam_gap": "8%", - "skirt_loops": "0", - "small_perimeter_speed": "35", - "sparse_infill_acceleration": "100%", - "sparse_infill_line_width": "0.82", - "sparse_infill_speed": "220", - "support_bottom_z_distance": "0.25", - "support_interface_filament": "0", - "support_line_width": "0.82", - "support_speed": "70", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "0.96", - "top_surface_acceleration": "3000", - "top_surface_line_width": "0.82", - "top_surface_speed": "100", - "travel_acceleration": "20000", - "travel_speed": "550", - "version": "2.1.1.0", - "wipe_speed": "50", - "wipe_tower_bridging": "10", - "wipe_tower_max_purge_speed": "120" -} diff --git a/resources/profiles/Flashforge/process/0.56mm Draft @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/process/0.56mm Draft @FF AD5X 0.8 nozzle.json deleted file mode 100644 index 7503df7d7c..0000000000 --- a/resources/profiles/Flashforge/process/0.56mm Draft @FF AD5X 0.8 nozzle.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "type": "process", - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], - "enable_prime_tower": "1", - "exclude_object": "1", - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "infill_wall_overlap": "20%", - "inherits": "0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle", - "internal_bridge_speed": "35", - "is_custom_defined": "0", - "name": "0.56mm Draft @FF AD5X 0.8 nozzle", - "only_one_wall_top": "1", - "prime_tower_brim_width": "5", - "prime_tower_width": "45", - "prime_volume": "100", - "print_settings_id": "0.56mm Draft @FF AD5X 0.8 nozzle", - "solid_infill_direction": "0", - "support_bottom_z_distance": "0.3", - "support_top_z_distance": "0.3", - "thick_internal_bridges": "0", - "top_shell_layers": "4", - "top_shell_thickness": "0", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M 0.8 Nozzle.json index 0b9b9cac23..c25b1e78e0 100644 --- a/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M 0.8 Nozzle.json @@ -5,7 +5,9 @@ "from": "system", "instantiation": "true", "layer_height": "0.56", - "compatible_printers": ["Flashforge Adventurer 5M 0.8 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 5M 0.8 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "bottom_shell_layers": "2", diff --git a/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle.json index d77299f69c..9f61cb79c6 100644 --- a/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle.json @@ -5,7 +5,9 @@ "from": "system", "instantiation": "true", "layer_height": "0.56", - "compatible_printers": ["Flashforge Adventurer 5M Pro 0.8 Nozzle"], + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.8 Nozzle" + ], "filename_format": "{input_filename_base}.gcode", "post_process": "", "bottom_shell_layers": "2", diff --git a/resources/profiles/Flashforge/process/fdm_process_common.json b/resources/profiles/Flashforge/process/fdm_process_common.json index 7f095277da..3712c915a4 100644 --- a/resources/profiles/Flashforge/process/fdm_process_common.json +++ b/resources/profiles/Flashforge/process/fdm_process_common.json @@ -1,71 +1,71 @@ { - "type": "process", - "name": "fdm_process_common", - "from": "system", - "instantiation": "false", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", - "bridge_flow": "0.95", - "bridge_speed": "25", - "brim_width": "5", - "print_sequence": "by layer", - "default_acceleration": "10000", - "bridge_no_support": "0", - "elefant_foot_compensation": "0.1", - "outer_wall_line_width": "0.42", - "outer_wall_speed": "120", - "line_width": "0.45", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "grid", - "initial_layer_line_width": "0.42", - "initial_layer_print_height": "0.2", - "initial_layer_speed": "20", - "gap_infill_speed": "30", - "infill_combination": "0", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "15%", - "sparse_infill_speed": "50", - "interface_shells": "0", - "detect_overhang_wall": "0", - "reduce_infill_retraction": "0", - "filename_format": "{input_filename_base}.gcode", - "wall_loops": "2", - "inner_wall_line_width": "0.45", - "inner_wall_speed": "40", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "nearest", - "skirt_distance": "2", - "skirt_height": "2", - "minimum_sparse_infill_area": "0", - "internal_solid_infill_line_width": "0.45", - "internal_solid_infill_speed": "40", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "support_filament": "0", - "support_line_width": "0.42", - "support_interface_filament": "0", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.15", - "support_interface_loop_pattern": "0", - "support_interface_top_layers": "2", - "support_interface_spacing": "0", - "support_interface_speed": "80", - "support_interface_pattern": "auto", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2", - "support_speed": "40", - "support_threshold_angle": "30", - "support_object_xy_distance": "0.5", - "detect_thin_wall": "0", - "top_surface_line_width": "0.42", - "top_surface_speed": "30", - "travel_speed": "400", - "enable_prime_tower": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [] -} + "type": "process", + "name": "fdm_process_common", + "from": "system", + "instantiation": "false", + "adaptive_layer_height": "0", + "reduce_crossing_wall": "0", + "bridge_flow": "0.95", + "bridge_speed": "25", + "brim_width": "5", + "print_sequence": "by layer", + "default_acceleration": "10000", + "bridge_no_support": "0", + "elefant_foot_compensation": "0.1", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "120", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "grid", + "initial_layer_line_width": "0.42", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "20", + "gap_infill_speed": "30", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "15%", + "sparse_infill_speed": "50", + "interface_shells": "0", + "detect_overhang_wall": "0", + "reduce_infill_retraction": "0", + "filename_format": "{input_filename_base}.gcode", + "wall_loops": "2", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "40", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "nearest", + "skirt_distance": "2", + "skirt_height": "2", + "minimum_sparse_infill_area": "0", + "internal_solid_infill_line_width": "0.45", + "internal_solid_infill_speed": "40", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "support_filament": "0", + "support_line_width": "0.42", + "support_interface_filament": "0", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.15", + "support_interface_loop_pattern": "0", + "support_interface_top_layers": "2", + "support_interface_spacing": "0", + "support_interface_speed": "80", + "support_interface_pattern": "auto", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2", + "support_speed": "40", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.5", + "detect_thin_wall": "0", + "top_surface_line_width": "0.42", + "top_surface_speed": "30", + "travel_speed": "400", + "enable_prime_tower": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [] +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/process/fdm_process_flashforge_0.20.json b/resources/profiles/Flashforge/process/fdm_process_flashforge_0.20.json index 6f82923fa3..506873d376 100644 --- a/resources/profiles/Flashforge/process/fdm_process_flashforge_0.20.json +++ b/resources/profiles/Flashforge/process/fdm_process_flashforge_0.20.json @@ -19,4 +19,4 @@ "gcode_label_objects": "0", "slow_down_layers": "1", "wipe_speed": "200" -} +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/process/fdm_process_flashforge_0.30.json b/resources/profiles/Flashforge/process/fdm_process_flashforge_0.30.json index 39c3522e31..6a3cfe566f 100644 --- a/resources/profiles/Flashforge/process/fdm_process_flashforge_0.30.json +++ b/resources/profiles/Flashforge/process/fdm_process_flashforge_0.30.json @@ -27,4 +27,4 @@ "gcode_label_objects": "0", "slow_down_layers": "1", "wipe_speed": "200" -} +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/process/fdm_process_flashforge_0.40.json b/resources/profiles/Flashforge/process/fdm_process_flashforge_0.40.json index afca287cde..09cb998b1e 100644 --- a/resources/profiles/Flashforge/process/fdm_process_flashforge_0.40.json +++ b/resources/profiles/Flashforge/process/fdm_process_flashforge_0.40.json @@ -27,4 +27,4 @@ "gcode_label_objects": "0", "slow_down_layers": "1", "wipe_speed": "200" -} +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/process/fdm_process_flashforge_common.json b/resources/profiles/Flashforge/process/fdm_process_flashforge_common.json index 6013168c22..79824795e5 100644 --- a/resources/profiles/Flashforge/process/fdm_process_flashforge_common.json +++ b/resources/profiles/Flashforge/process/fdm_process_flashforge_common.json @@ -1,72 +1,72 @@ { - "type": "process", - "name": "fdm_process_flashforge_common", - "inherits": "fdm_process_common", - "from": "system", - "instantiation": "false", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bridge_flow": "1", - "brim_object_gap": "0.1", - "compatible_printers_condition": "", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.15", - "enable_arc_fitting": "0", - "outer_wall_acceleration": "5000", - "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.42", - "internal_bridge_support_thickness": "0.8", - "initial_layer_acceleration": "500", - "travel_acceleration": "10000", - "inner_wall_acceleration": "5000", - "initial_layer_line_width": "0.50", - "sparse_infill_speed": "100", - "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": "40", - "overhang_3_4_speed": "20", - "overhang_4_4_speed": "10", - "only_one_wall_top": "1", - "seam_position": "aligned", - "skirt_height": "1", - "skirt_loops": "2", - "brim_type": "no_brim", - "exclude_object": "0", - "wall_generator": "classic", - "minimum_sparse_infill_area": "15", - "internal_solid_infill_line_width": "0.42", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "default", - "support_top_z_distance": "0.18", - "support_bottom_z_distance": "0.18", - "support_interface_bottom_layers": "2", - "support_interface_spacing": "0.5", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "2.5", - "support_speed": "150", - "support_threshold_angle": "30", - "support_object_xy_distance": "0.3", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "top_surface_pattern": "monotonicline", - "top_surface_acceleration": "2000", - "top_shell_layers": "5", - "top_shell_thickness": "1", - "initial_layer_speed": "50", - "initial_layer_infill_speed": "65", - "internal_solid_infill_speed": "150", - "top_surface_speed": "200", - "travel_speed": "500", - "wipe_tower_no_sparse_layers": "0", - "compatible_printers": [] + "type": "process", + "name": "fdm_process_flashforge_common", + "inherits": "fdm_process_common", + "from": "system", + "instantiation": "false", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bridge_flow": "1", + "brim_object_gap": "0.1", + "compatible_printers_condition": "", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.15", + "enable_arc_fitting": "0", + "outer_wall_acceleration": "5000", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.42", + "internal_bridge_support_thickness": "0.8", + "initial_layer_acceleration": "500", + "travel_acceleration": "10000", + "inner_wall_acceleration": "5000", + "initial_layer_line_width": "0.50", + "sparse_infill_speed": "100", + "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": "40", + "overhang_3_4_speed": "20", + "overhang_4_4_speed": "10", + "only_one_wall_top": "1", + "seam_position": "aligned", + "skirt_height": "1", + "skirt_loops": "2", + "brim_type": "no_brim", + "exclude_object": "0", + "wall_generator": "classic", + "minimum_sparse_infill_area": "15", + "internal_solid_infill_line_width": "0.42", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "default", + "support_top_z_distance": "0.18", + "support_bottom_z_distance": "0.18", + "support_interface_bottom_layers": "2", + "support_interface_spacing": "0.5", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "2.5", + "support_speed": "150", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.3", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "top_surface_pattern": "monotonicline", + "top_surface_acceleration": "2000", + "top_shell_layers": "5", + "top_shell_thickness": "1", + "initial_layer_speed": "50", + "initial_layer_infill_speed": "65", + "internal_solid_infill_speed": "150", + "top_surface_speed": "200", + "travel_speed": "500", + "wipe_tower_no_sparse_layers": "0", + "compatible_printers": [] } From 24522fdaf7f3c22fae78a150154be6a8ee282857 Mon Sep 17 00:00:00 2001 From: Steve Dougherty Date: Sun, 23 Feb 2025 00:40:19 -0500 Subject: [PATCH 103/129] Mention orcaslicer.com as an official platform (#8502) As added in the 2.3.0-beta release: > Orca Slicer has it's own official website now! https://www.OrcaSlicer.com https://github.com/SoftFever/OrcaSlicer/releases/tag/v2.3.0-beta --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 22f8d26f32..bed40f3b23 100644 --- a/README.md +++ b/README.md @@ -10,12 +10,12 @@ Join our Discord community here:

    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%0D<%6bN)-5=l}XBFYkRp9oZth<2wv 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 LrCekghsXZ|vh`2m literal 0 HcmV?d00001 diff --git a/resources/profiles/Flashforge/flashforge_g4pro_buildplate_texture.png b/resources/profiles/Flashforge/flashforge_g4pro_buildplate_texture.png new file mode 100644 index 0000000000000000000000000000000000000000..6154334c6f5b20e8586ba31a9f73fd3f90d83163 GIT binary patch literal 89099 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 AN&o-= literal 0 HcmV?d00001 diff --git a/resources/profiles/Flashforge/machine/FlashForge AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/machine/FlashForge AD5X 0.25 nozzle.json new file mode 100644 index 0000000000..44211143c7 --- /dev/null +++ b/resources/profiles/Flashforge/machine/FlashForge AD5X 0.25 nozzle.json @@ -0,0 +1,233 @@ +{ + "type": "machine", + "name": "Flashforge AD5X 0.25 nozzle", + "inherits": "Flashforge Adventurer 5M 0.25 Nozzle", + "from": "system", + "setting_id": "GM006", + "instantiation": "true", + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": [ + "0x0" + ], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": [ + "Flashforge Generic PLA" + ], + "default_print_profile": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", + "deretraction_speed": [ + "45" + ], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "130", + "extruder_clearance_height_to_rod": "26", + "extruder_clearance_radius": "58", + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "is_custom_defined": "0", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": [ + "0" + ], + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", + "machine_load_filament_time": "39", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "20000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "20000", + "20000" + ], + "machine_max_acceleration_y": [ + "20000", + "20000" + ], + "machine_max_acceleration_z": [ + "500", + "500" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_max_speed_e": [ + "30", + "30" + ], + "machine_max_speed_x": [ + "600", + "600" + ], + "machine_max_speed_y": [ + "600", + "600" + ], + "machine_max_speed_z": [ + "20", + "20" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "machine_pause_gcode": "M25", + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X50 Y220 Z0.25 F4800\nG1 X70 E1.8 F900\nG1 X200 E6 F1800\nG0 Y219.6\nG1 X130 E3 F1800\nG92 E0", + "machine_tool_change_time": "0", + "machine_unload_filament_time": "39", + "manual_filament_change": "0", + "max_layer_height": [ + "0.14" + ], + "min_layer_height": [ + "0.08" + ], + "nozzle_diameter": [ + "0.25" + ], + "nozzle_height": "2.5", + "nozzle_hrc": "0", + "nozzle_type": "stainless_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "pellet_modded_printer": "0", + "preferred_orientation": "0", + "printable_area": [ + "0x0", + "220x0", + "220x220", + "0x220" + ], + "printable_height": "220", + "printer_model": "Flashforge AD5X", + "printer_notes": "", + "printer_settings_id": "FlashForge AD5X 0.25 nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.25", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": [ + "100%" + ], + "retract_length_toolchange": [ + "5" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "0" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "-3" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_distances_when_cut": [ + "18" + ], + "retraction_length": [ + "1" + ], + "retraction_minimum_travel": [ + "1" + ], + "retraction_speed": [ + "45" + ], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "1", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "travel_slope": [ + "3" + ], + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "2.1.1.0", + "wipe": [ + "1" + ], + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0.3" + ], + "z_hop_types": [ + "Auto Lift" + ], + "z_offset": "0" +} diff --git a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.4 nozzle.json new file mode 100644 index 0000000000..f33c6e5339 --- /dev/null +++ b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.4 nozzle.json @@ -0,0 +1,233 @@ +{ + "type": "machine", + "name": "Flashforge AD5X 0.4 nozzle", + "inherits": "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "from": "system", + "setting_id": "GM001", + "instantiation": "true", + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": [ + "0x0" + ], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": [ + "Flashforge Generic PLA" + ], + "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "deretraction_speed": [ + "45" + ], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "130", + "extruder_clearance_height_to_rod": "26", + "extruder_clearance_radius": "58", + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "is_custom_defined": "0", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": [ + "0" + ], + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", + "machine_load_filament_time": "39", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "20000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "20000", + "20000" + ], + "machine_max_acceleration_y": [ + "20000", + "20000" + ], + "machine_max_acceleration_z": [ + "500", + "500" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_max_speed_e": [ + "30", + "30" + ], + "machine_max_speed_x": [ + "600", + "600" + ], + "machine_max_speed_y": [ + "600", + "600" + ], + "machine_max_speed_z": [ + "20", + "20" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "machine_pause_gcode": "M25", + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X50 Y220 Z0.25 F4800\nG1 X70 E3 F900\nG1 X200 E10 F1800\nG0 Y219.6\nG1 X130 E5 F1800\nG92 E0", + "machine_tool_change_time": "0", + "machine_unload_filament_time": "39", + "manual_filament_change": "0", + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], + "nozzle_diameter": [ + "0.4" + ], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "pellet_modded_printer": "0", + "preferred_orientation": "0", + "printable_area": [ + "0x0", + "220x0", + "220x220", + "0x220" + ], + "printable_height": "220", + "printer_model": "Flashforge AD5X", + "printer_notes": "", + "printer_settings_id": "Flashforge AD5X 0.4 nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.4", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": [ + "100%" + ], + "retract_length_toolchange": [ + "5" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "0" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "-3" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_distances_when_cut": [ + "18" + ], + "retraction_length": [ + "2" + ], + "retraction_minimum_travel": [ + "1" + ], + "retraction_speed": [ + "45" + ], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "1", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "travel_slope": [ + "3" + ], + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "2.1.1.0", + "wipe": [ + "1" + ], + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0.4" + ], + "z_hop_types": [ + "Auto Lift" + ], + "z_offset": "0" +} diff --git a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.6 nozzle.json new file mode 100644 index 0000000000..74b63fbe01 --- /dev/null +++ b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.6 nozzle.json @@ -0,0 +1,233 @@ +{ + "type": "machine", + "name": "Flashforge AD5X 0.6 nozzle", + "inherits": "Flashforge Adventurer 5M Pro 0.6 Nozzle", + "from": "system", + "setting_id": "GM001", + "instantiation": "true", + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": [ + "0x0" + ], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": [ + "Flashforge Generic PLA" + ], + "default_print_profile": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", + "deretraction_speed": [ + "35" + ], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "130", + "extruder_clearance_height_to_rod": "26", + "extruder_clearance_radius": "58", + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "is_custom_defined": "0", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": [ + "0" + ], + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", + "machine_load_filament_time": "39", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "20000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "20000", + "20000" + ], + "machine_max_acceleration_y": [ + "20000", + "20000" + ], + "machine_max_acceleration_z": [ + "500", + "500" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_max_speed_e": [ + "35", + "30" + ], + "machine_max_speed_x": [ + "600", + "600" + ], + "machine_max_speed_y": [ + "600", + "600" + ], + "machine_max_speed_z": [ + "20", + "20" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "machine_pause_gcode": "M25", + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X50 Y220 Z0.25 F4800\nG1 X70 E3 F900\nG1 X200 E10 F1800\nG0 Y219.6\nG1 X130 E5 F1800\nG92 E0", + "machine_tool_change_time": "0", + "machine_unload_filament_time": "39", + "manual_filament_change": "0", + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.15" + ], + "nozzle_diameter": [ + "0.6" + ], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "pellet_modded_printer": "0", + "preferred_orientation": "0", + "printable_area": [ + "0x0", + "220x0", + "220x220", + "0x220" + ], + "printable_height": "220", + "printer_model": "Flashforge AD5X", + "printer_notes": "", + "printer_settings_id": "Flashforge AD5X 0.6 nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.6", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": [ + "100%" + ], + "retract_length_toolchange": [ + "3" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "0" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_distances_when_cut": [ + "18" + ], + "retraction_length": [ + "1.4" + ], + "retraction_minimum_travel": [ + "1" + ], + "retraction_speed": [ + "35" + ], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "1", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "travel_slope": [ + "3" + ], + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "2.1.1.0", + "wipe": [ + "1" + ], + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0.4" + ], + "z_hop_types": [ + "Auto Lift" + ], + "z_offset": "0" +} diff --git a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.8 nozzle.json new file mode 100644 index 0000000000..b17fe35803 --- /dev/null +++ b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.8 nozzle.json @@ -0,0 +1,233 @@ +{ + "type": "machine", + "name": "Flashforge AD5X 0.8 nozzle", + "inherits": "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "from": "system", + "setting_id": "GM009", + "instantiation": "true", + "printer_model": "Flashforge AD5X", + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": [ + "0x0" + ], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": [ + "Flashforge Generic PLA" + ], + "default_print_profile": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", + "deretraction_speed": [ + "35" + ], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "130", + "extruder_clearance_height_to_rod": "26", + "extruder_clearance_radius": "58", + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "is_custom_defined": "0", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": [ + "0" + ], + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", + "machine_load_filament_time": "39", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "20000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "20000", + "20000" + ], + "machine_max_acceleration_y": [ + "20000", + "20000" + ], + "machine_max_acceleration_z": [ + "500", + "500" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_max_speed_e": [ + "30", + "30" + ], + "machine_max_speed_x": [ + "600", + "600" + ], + "machine_max_speed_y": [ + "600", + "600" + ], + "machine_max_speed_z": [ + "20", + "20" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "machine_pause_gcode": "M25", + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X50 Y220 Z0.25 F4800\nG1 X70 E3 F900\nG1 X200 E10 F1800\nG0 Y219.6\nG1 X130 E5 F1800\nG92 E0", + "machine_tool_change_time": "0", + "machine_unload_filament_time": "39", + "manual_filament_change": "0", + "max_layer_height": [ + "0.56" + ], + "min_layer_height": [ + "0.24" + ], + "nozzle_diameter": [ + "0.8" + ], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "pellet_modded_printer": "0", + "preferred_orientation": "0", + "printable_area": [ + "0x0", + "220x0", + "220x220", + "0x220" + ], + "printable_height": "220", + "printer_notes": "", + "printer_settings_id": "Flashforge AD5X 0.8 nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.8", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": [ + "100%" + ], + "retract_length_toolchange": [ + "3" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "0" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_distances_when_cut": [ + "18" + ], + "retraction_length": [ + "1.5" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "35" + ], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "1", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "travel_slope": [ + "3" + ], + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "2.1.1.0", + "wipe": [ + "1" + ], + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0.4" + ], + "z_hop_types": [ + "Auto Lift" + ], + "z_offset": "0" +} diff --git a/resources/profiles/Flashforge/machine/Flashforge AD5X.json b/resources/profiles/Flashforge/machine/Flashforge AD5X.json new file mode 100644 index 0000000000..bbe5d692d8 --- /dev/null +++ b/resources/profiles/Flashforge/machine/Flashforge AD5X.json @@ -0,0 +1,14 @@ +{ + "type": "machine_model", + "name": "Flashforge AD5X", + "model_id": "Flashforge-AD5X", + "nozzle_diameter": "0.25;0.4;0.6;0.8", + "machine_tech": "FFF", + "family": "Flashforge", + "bed_model": "flashforge_adventurer5m_series_buildplate_model.STL", + "bed_texture": "flashforge_ad5x_buildplate_texture.png", + "hotend_model": "flashforge_adventurer_5m_series_hotend.STL", + "url":"", + "default_materials": "Flashforge Generic ABS;Flashforge Generic PETG;Flashforge Generic PLA" + } + \ No newline at end of file diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series.json index e99dcb7406..0c5096f0ed 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series.json @@ -7,6 +7,7 @@ "family": "Flashforge", "bed_model": "flashforge_adventurer3_series_buildplate_model.STL", "bed_texture": "flashforge_adventurer3_buildplate_texture.png", + "default_bed_type": "Textured PEI Plate", "hotend_model": "", "default_materials": "Flashforge ABS;Flashforge PETG;Flashforge PLA" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro.json index a9e9fc036a..8d0ed280fa 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro.json @@ -1,12 +1,13 @@ { "type": "machine_model", "name": "Flashforge Adventurer 5M Pro", - "model_id": "Flashforge Adventurer 5M Pro", + "model_id": "Flashforge-Adventurer-5M-Pro", "nozzle_diameter": "0.25;0.4;0.6;0.8", "machine_tech": "FFF", "family": "Flashforge", "bed_model": "flashforge_adventurer5m_series_buildplate_model.STL", "bed_texture": "flashforge_adventurer5m_buildplate_texture.png", + "default_bed_type": "Textured PEI Plate", "hotend_model": "flashforge_adventurer_5m_series_hotend.STL", "default_materials": "Flashforge Generic ABS;Flashforge Generic PETG;Flashforge Generic PLA" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M.json index 2211a634bb..1f408ba734 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M.json @@ -7,6 +7,7 @@ "family": "Flashforge", "bed_model": "flashforge_adventurer5m_series_buildplate_model.STL", "bed_texture": "flashforge_adventurer5m_buildplate_texture.png", + "default_bed_type": "Textured PEI Plate", "hotend_model": "flashforge_adventurer_5m_series_hotend.STL", "default_materials": "Flashforge Generic ABS;Flashforge Generic PETG;Flashforge Generic PLA" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json index 6f30c8ede5..a9c6e73634 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json @@ -34,7 +34,7 @@ "fan_kickstart": "0", "fan_speedup_overhangs": "1", "fan_speedup_time": "0", - "gcode_flavor": "marlin", + "gcode_flavor": "klipper", "high_current_on_filament_swap": "0", "host_type": "octoprint", "inherits": "fdm_guider3_common", diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.25 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.25 nozzle.json new file mode 100644 index 0000000000..0350efee3c --- /dev/null +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.25 nozzle.json @@ -0,0 +1,226 @@ +{ + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": [ + "0x0" + ], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": [ + "Flashforge Generic PLA" + ], + "default_print_profile": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "deretraction_speed": [ + "45" + ], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "165", + "extruder_clearance_height_to_rod": "42", + "extruder_clearance_radius": "75", + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "from": "system", + "instantiation": "true", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "inherits": "Flashforge Adventurer 5M Pro 0.25 Nozzle", + "is_custom_defined": "0", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": [ + "0" + ], + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "30000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "30000", + "20000" + ], + "machine_max_acceleration_y": [ + "30000", + "20000" + ], + "machine_max_acceleration_z": [ + "500", + "500" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_max_speed_e": [ + "30", + "30" + ], + "machine_max_speed_x": [ + "700", + "600" + ], + "machine_max_speed_y": [ + "700", + "600" + ], + "machine_max_speed_z": [ + "20", + "20" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "machine_pause_gcode": "M25", + "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": [ + "0.14" + ], + "min_layer_height": [ + "0.08" + ], + "name": "Flashforge Guider4 Pro 0.25 nozzle", + "nozzle_diameter": [ + "0.25" + ], + "nozzle_height": "2.5", + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "preferred_orientation": "0", + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "printable_height": "300", + "printer_model": "Flashforge Guider4 Pro", + "printer_notes": "", + "printer_settings_id": "Flashforge Guider4 Pro 0.25 nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.25", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": [ + "100%" + ], + "retract_length_toolchange": [ + "5" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "0" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "-5" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_distances_when_cut": [ + "18" + ], + "retraction_length": [ + "2.5" + ], + "retraction_minimum_travel": [ + "1" + ], + "retraction_speed": [ + "45" + ], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "0", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "2.2.0.0", + "wipe": [ + "1" + ], + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0.3" + ], + "z_hop_types": [ + "Auto Lift" + ], + "z_offset": "0" +} diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 HF nozzle.json new file mode 100644 index 0000000000..f251863d49 --- /dev/null +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 HF nozzle.json @@ -0,0 +1,226 @@ +{ + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": [ + "0x0" + ], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": [ + "Flashforge Generic PLA @G3U" + ], + "default_print_profile": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", + "deretraction_speed": [ + "45" + ], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "165", + "extruder_clearance_height_to_rod": "42", + "extruder_clearance_radius": "75", + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "from": "system", + "instantiation": "true", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "inherits": "Flashforge Guider 3 Ultra 0.4 Nozzle", + "is_custom_defined": "0", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": [ + "0" + ], + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "30000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "30000", + "20000" + ], + "machine_max_acceleration_y": [ + "30000", + "20000" + ], + "machine_max_acceleration_z": [ + "500", + "500" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_max_speed_e": [ + "30", + "30" + ], + "machine_max_speed_x": [ + "700", + "600" + ], + "machine_max_speed_y": [ + "700", + "600" + ], + "machine_max_speed_z": [ + "20", + "20" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "machine_pause_gcode": "M25", + "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], + "name": "Flashforge Guider4 Pro 0.4 HF nozzle", + "nozzle_diameter": [ + "0.4" + ], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "stainless_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "preferred_orientation": "0", + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "printable_height": "300", + "printer_model": "Flashforge Guider4 Pro", + "printer_notes": "", + "printer_settings_id": "Flashforge Guider4 Pro 0.4 HF nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.4", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": [ + "100%" + ], + "retract_length_toolchange": [ + "5" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "0" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "-5" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_distances_when_cut": [ + "18" + ], + "retraction_length": [ + "2.5" + ], + "retraction_minimum_travel": [ + "1" + ], + "retraction_speed": [ + "45" + ], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "0", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "2.1.1.0", + "wipe": [ + "1" + ], + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0.4" + ], + "z_hop_types": [ + "Auto Lift" + ], + "z_offset": "0" +} diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 nozzle.json new file mode 100644 index 0000000000..602f90049d --- /dev/null +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 nozzle.json @@ -0,0 +1,226 @@ +{ + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": [ + "0x0" + ], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": [ + "Flashforge Generic PLA" + ], + "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "deretraction_speed": [ + "45" + ], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "165", + "extruder_clearance_height_to_rod": "42", + "extruder_clearance_radius": "75", + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "from": "system", + "instantiation": "true", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "inherits": "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "is_custom_defined": "0", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": [ + "0" + ], + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "30000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "30000", + "20000" + ], + "machine_max_acceleration_y": [ + "30000", + "20000" + ], + "machine_max_acceleration_z": [ + "500", + "500" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_max_speed_e": [ + "30", + "30" + ], + "machine_max_speed_x": [ + "700", + "600" + ], + "machine_max_speed_y": [ + "700", + "600" + ], + "machine_max_speed_z": [ + "20", + "20" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "machine_pause_gcode": "M25", + "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], + "name": "Flashforge Guider4 Pro 0.4 nozzle", + "nozzle_diameter": [ + "0.4" + ], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "preferred_orientation": "0", + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "printable_height": "300", + "printer_model": "Flashforge Guider4 Pro", + "printer_notes": "", + "printer_settings_id": "Flashforge Guider4 Pro 0.4 nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.4", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": [ + "100%" + ], + "retract_length_toolchange": [ + "5" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "0" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "-5" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_distances_when_cut": [ + "18" + ], + "retraction_length": [ + "2.5" + ], + "retraction_minimum_travel": [ + "1" + ], + "retraction_speed": [ + "45" + ], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "0", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "2.1.1.0", + "wipe": [ + "1" + ], + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0.4" + ], + "z_hop_types": [ + "Auto Lift" + ], + "z_offset": "0" +} diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 HF nozzle.json new file mode 100644 index 0000000000..284dbdeaeb --- /dev/null +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 HF nozzle.json @@ -0,0 +1,226 @@ +{ + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": [ + "0x0" + ], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": [ + "Flashforge Generic PLA @G3U 0.6 Nozzle" + ], + "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "deretraction_speed": [ + "30" + ], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "165", + "extruder_clearance_height_to_rod": "42", + "extruder_clearance_radius": "75", + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "from": "system", + "instantiation": "true", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "inherits": "Flashforge Guider 3 Ultra 0.6 Nozzle", + "is_custom_defined": "0", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": [ + "0" + ], + "machine_end_gcode": "M104 S0\nM140 S0\nG1 E-2 F3600\nG0 X50 Y50 F30000\nM106 P101 S0\nM106 S0", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "30000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "30000", + "20000" + ], + "machine_max_acceleration_y": [ + "30000", + "20000" + ], + "machine_max_acceleration_z": [ + "50", + "500" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_max_speed_e": [ + "40", + "30" + ], + "machine_max_speed_x": [ + "600", + "600" + ], + "machine_max_speed_y": [ + "600", + "600" + ], + "machine_max_speed_z": [ + "20", + "20" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "machine_pause_gcode": "M25", + "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.15" + ], + "name": "Flashforge Guider4 Pro 0.6 HF nozzle", + "nozzle_diameter": [ + "0.6" + ], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "stainless_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "preferred_orientation": "0", + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "printable_height": "301", + "printer_model": "Flashforge Guider4 Pro", + "printer_notes": "", + "printer_settings_id": "Flashforge Guider4 Pro 0.6 HF nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.6", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": [ + "100%" + ], + "retract_length_toolchange": [ + "3" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "0" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_distances_when_cut": [ + "18" + ], + "retraction_length": [ + "1.2" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "30" + ], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "0", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "2.1.1.0", + "wipe": [ + "1" + ], + "wipe_distance": [ + "2.2" + ], + "z_hop": [ + "0.4" + ], + "z_hop_types": [ + "Auto Lift" + ], + "z_offset": "0" +} diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 nozzle.json new file mode 100644 index 0000000000..346087619d --- /dev/null +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 nozzle.json @@ -0,0 +1,226 @@ +{ + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": [ + "0x0" + ], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "; change filament start", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": [ + "Flashforge Generic PLA @G3U 0.6 Nozzle" + ], + "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "deretraction_speed": [ + "30" + ], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "165", + "extruder_clearance_height_to_rod": "42", + "extruder_clearance_radius": "75", + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "from": "system", + "instantiation": "true", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "inherits": "Flashforge Guider 3 Ultra 0.6 Nozzle", + "is_custom_defined": "0", + "layer_change_gcode": "", + "long_retractions_when_cut": [ + "0" + ], + "machine_end_gcode": "M104 S0\nM140 S0\nG1 E-2 F3600\nG0 X50 Y50 F30000\nM106 P101 S0\nM106 S0", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "30000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "30000", + "20000" + ], + "machine_max_acceleration_y": [ + "30000", + "20000" + ], + "machine_max_acceleration_z": [ + "50", + "500" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_max_speed_e": [ + "35", + "30" + ], + "machine_max_speed_x": [ + "600", + "600" + ], + "machine_max_speed_y": [ + "600", + "600" + ], + "machine_max_speed_z": [ + "20", + "20" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "machine_pause_gcode": "M25", + "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.15" + ], + "name": "Flashforge Guider4 Pro 0.6 nozzle", + "nozzle_diameter": [ + "0.6" + ], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "preferred_orientation": "0", + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "printable_height": "301", + "printer_model": "Flashforge Guider4 Pro", + "printer_notes": "", + "printer_settings_id": "Flashforge Guider4 Pro 0.6 nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.6", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": [ + "0%" + ], + "retract_length_toolchange": [ + "3" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "0" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_distances_when_cut": [ + "18" + ], + "retraction_length": [ + "1.3" + ], + "retraction_minimum_travel": [ + "3" + ], + "retraction_speed": [ + "30" + ], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "0", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "2.1.1.0", + "wipe": [ + "1" + ], + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0.4" + ], + "z_hop_types": [ + "Auto Lift" + ], + "z_offset": "0" +} diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.8 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.8 HF nozzle.json new file mode 100644 index 0000000000..739fc618a7 --- /dev/null +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.8 HF nozzle.json @@ -0,0 +1,226 @@ +{ + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": [ + "0x0" + ], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "; change filament start", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": [ + "Flashforge Generic PLA @G3U 0.6 Nozzle" + ], + "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "deretraction_speed": [ + "30" + ], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "165", + "extruder_clearance_height_to_rod": "42", + "extruder_clearance_radius": "75", + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "from": "system", + "instantiation": "true", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "inherits": "Flashforge Guider 3 Ultra 0.6 Nozzle", + "is_custom_defined": "0", + "layer_change_gcode": "", + "long_retractions_when_cut": [ + "0" + ], + "machine_end_gcode": "M104 S0\nM140 S0\nG1 E-2 F3600\nG0 X50 Y50 F30000\nM106 P101 S0\nM106 S0", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "30000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "30000", + "20000" + ], + "machine_max_acceleration_y": [ + "30000", + "20000" + ], + "machine_max_acceleration_z": [ + "50", + "500" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_max_speed_e": [ + "35", + "30" + ], + "machine_max_speed_x": [ + "600", + "600" + ], + "machine_max_speed_y": [ + "600", + "600" + ], + "machine_max_speed_z": [ + "20", + "20" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "machine_pause_gcode": "M25", + "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": [ + "0.56" + ], + "min_layer_height": [ + "0.24" + ], + "name": "Flashforge Guider4 Pro 0.8 HF nozzle", + "nozzle_diameter": [ + "0.8" + ], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "stainless_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "preferred_orientation": "0", + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "printable_height": "301", + "printer_model": "Flashforge Guider4 Pro", + "printer_notes": "", + "printer_settings_id": "Flashforge Guider4 Pro 0.8 HF nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.6", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": [ + "0%" + ], + "retract_length_toolchange": [ + "3" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "0" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_distances_when_cut": [ + "18" + ], + "retraction_length": [ + "1.5" + ], + "retraction_minimum_travel": [ + "3" + ], + "retraction_speed": [ + "30" + ], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "0", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "2.1.1.0", + "wipe": [ + "1" + ], + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0.4" + ], + "z_hop_types": [ + "Auto Lift" + ], + "z_offset": "0" +} diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro.json new file mode 100644 index 0000000000..2673618b07 --- /dev/null +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "Flashforge Guider4 Pro", + "model_id": "Flashforge-Guider4-Pro", + "nozzle_diameter": "0.25;0.4;0.4HF;0.6;0.6HF;0.8HF", + "machine_tech": "FFF", + "family": "Flashforge", + "bed_model": "flashforge_g4pro_buildplate_model.stl", + "bed_texture": "flashforge_g4pro_buildplate_texture.png", + "hotend_model": "", + "default_materials": "Flashforge Generic PVA;Flashforge Generic HIPS;Flashforge Generic PETG-CF @G3U;Flashforge Generic PETG @G3U;Flashforge Generic PLA-CF @G3U;Flashforge Generic PLA @G3U;Flashforge Generic ASA @G3U;Flashforge Generic ABS @G3U;FusRock Generic PET-CF;FusRock Generic PAHT-CF;FusRock Generic NexPA-CF25;FusRock Generic S-Multi;FusRock Generic S-PAHT;Polymaker Generic CoPA;Polymaker Generic S1" +} diff --git a/resources/profiles/Flashforge/machine/fdm_adventurer5m_common.json b/resources/profiles/Flashforge/machine/fdm_adventurer5m_common.json index a37d2586fa..d6e5d7490e 100644 --- a/resources/profiles/Flashforge/machine/fdm_adventurer5m_common.json +++ b/resources/profiles/Flashforge/machine/fdm_adventurer5m_common.json @@ -37,6 +37,7 @@ "single_extruder_multi_material": "0", "change_filament_gcode": "", "machine_pause_gcode": "M25", + "support_multi_bed_types": "1", "default_filament_profile": [ "Flashforge Generic PLA" ], "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z5 F6000\nG1 E-0.2 F800\nG1 X110 Y-110 F6000\nG1 E2 F800\nG1 Y-110 X55 Z0.25 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG1 Y-110 X55 Z0.45 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG92 E0", "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", diff --git a/resources/profiles/Flashforge/machine/fdm_guider3_common.json b/resources/profiles/Flashforge/machine/fdm_guider3_common.json index 1a39d50e82..f87391b63b 100644 --- a/resources/profiles/Flashforge/machine/fdm_guider3_common.json +++ b/resources/profiles/Flashforge/machine/fdm_guider3_common.json @@ -65,4 +65,5 @@ "20", "20" ] + } diff --git a/resources/profiles/Flashforge/process/0.10mm Standard @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.10mm Standard @FF AD5X 0.25 nozzle.json new file mode 100644 index 0000000000..9afc3deaf1 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.10mm Standard @FF AD5X 0.25 nozzle.json @@ -0,0 +1,25 @@ +{ + "type": "process", + "brim_type": "auto_brim", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "setting_id": "GP012", + "instantiation": "true", + "compatible_printers": [ + "Flashforge AD5X 0.25 nozzle" + ], + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "layer_height": "0.1", + "name": "0.10mm Standard @FF AD5X 0.25 nozzle", + "only_one_wall_top": "1", + "prime_tower_width": "45", + "print_settings_id": "0.10mm Standard @FF AD5X 0.25 nozzle", + "support_interface_spacing": "0.2", + "support_type": "tree(auto)", + "version": "2.2.0.0", + "wall_loops": "3" +} diff --git a/resources/profiles/Flashforge/process/0.10mm Standard @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.10mm Standard @FF G4P 0.25 nozzle.json new file mode 100644 index 0000000000..cec8bd4a69 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.10mm Standard @FF G4P 0.25 nozzle.json @@ -0,0 +1,29 @@ +{ + "bridge_acceleration": "10%", + "bridge_speed": "15", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "filter_out_gap_fill": "0.1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.25 nozzle" + ], + "gap_fill_target": "topbottom", + "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "initial_layer_infill_speed": "80", + "initial_layer_speed": "50", + "is_custom_defined": "0", + "layer_height": "0.1", + "name": "0.10mm Standard @FF G4P 0.25 nozzle", + "only_one_wall_top": "1", + "print_settings_id": "0.10mm Standard @FF G4P 0.25 nozzle", + "resolution": "0.005", + "seam_gap": "5%", + "small_perimeter_speed": "10", + "support_interface_spacing": "0.2", + "support_type": "tree(auto)", + "travel_acceleration": "30000", + "version": "2.2.0.0", + "wall_loops": "3" +} diff --git a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json index 27c21d2514..60eaa01aec 100644 --- a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json @@ -21,5 +21,6 @@ "support_interface_top_layers": "3", "support_speed": "100", "support_top_z_distance": "0.15", - "version": "2.0.2.0" + "skirt_loops": "0", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json index 0b62ba6e66..c318b9ffb6 100644 --- a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json @@ -21,5 +21,6 @@ "support_interface_spacing": "0.3", "support_line_width": "0.4", "support_top_z_distance": "0.15", - "version": "2.0.2.0" + "skirt_loops": "0", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json index 471a857516..dd2eb087d5 100644 --- a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json @@ -20,7 +20,8 @@ "support_interface_spacing": "0.18", "support_line_width": "0.4", "support_speed": "80", - "version": "2.0.2.0", "filename_format": "{input_filename_base}.gcode", - "post_process": "" + "post_process": "", + "prime_tower_brim_width": "5", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/process/0.12mm Standard @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.12mm Standard @FF AD5X 0.25 nozzle.json new file mode 100644 index 0000000000..f9c9dfca6b --- /dev/null +++ b/resources/profiles/Flashforge/process/0.12mm Standard @FF AD5X 0.25 nozzle.json @@ -0,0 +1,24 @@ +{ + "type": "process", + "brim_type": "auto_brim", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "setting_id": "GP012", + "instantiation": "true", + "compatible_printers": [ + "Flashforge AD5X 0.25 nozzle" + ], + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "0.12mm Standard @FF AD5X 0.25 nozzle", + "only_one_wall_top": "1", + "prime_tower_width": "45", + "print_settings_id": "0.12mm Standard @FF AD5X 0.25 nozzle", + "support_interface_spacing": "0.2", + "support_type": "tree(auto)", + "version": "2.2.0.0", + "wall_loops": "3" +} diff --git a/resources/profiles/Flashforge/process/0.12mm Standard @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.12mm Standard @FF G4P 0.25 nozzle.json new file mode 100644 index 0000000000..737c6d1357 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.12mm Standard @FF G4P 0.25 nozzle.json @@ -0,0 +1,28 @@ +{ + "bridge_acceleration": "10%", + "bridge_speed": "15", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "filter_out_gap_fill": "0.1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.25 nozzle" + ], + "gap_fill_target": "topbottom", + "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "initial_layer_infill_speed": "80", + "initial_layer_speed": "50", + "is_custom_defined": "0", + "name": "0.12mm Standard @FF G4P 0.25 nozzle", + "only_one_wall_top": "1", + "print_settings_id": "0.12mm Standard @FF G4P 0.25 nozzle", + "resolution": "0.005", + "seam_gap": "5%", + "small_perimeter_speed": "10", + "support_interface_spacing": "0.2", + "support_type": "tree(auto)", + "travel_acceleration": "30000", + "version": "2.2.0.0", + "wall_loops": "3" +} diff --git a/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M 0.25 Nozzle.json index efc3b98d34..4830b0deb1 100644 --- a/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M 0.25 Nozzle.json @@ -1,45 +1,47 @@ { - "type": "process", - "name": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "inherits": "0.20mm Standard @Flashforge AD5M 0.4 Nozzle", - "from": "system", - "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.25 Nozzle" - ], - "setting_id": "GP012", - "print_settings_id": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "bottom_shell_layers": "4", - "brim_width": "3", - "elefant_foot_compensation": "0", - "gap_infill_speed": "150", - "initial_layer_acceleration": "1000", - "initial_layer_infill_speed": "70", - "initial_layer_line_width": "0.3", - "initial_layer_print_height": "0.15", - "initial_layer_speed": "35", - "inner_wall_line_width": "0.3", - "inner_wall_speed": "150", - "internal_solid_infill_line_width": "0.3", - "internal_solid_infill_speed": "150", - "layer_height": "0.12", - "line_width": "0.25", - "outer_wall_line_width": "0.25", - "outer_wall_speed": "60", - "skirt_loops": "0", - "sparse_infill_line_width": "0.3", - "sparse_infill_speed": "100", - "support_bottom_z_distance": "0.12", - "support_interface_spacing": "0.25", - "support_line_width": "0.25", - "support_object_xy_distance": "0.2", - "support_speed": "80", - "support_top_z_distance": "0.12", - "top_shell_layers": "7", - "top_shell_thickness": "0.8", - "top_surface_line_width": "0.3", - "top_surface_speed": "150", - "tree_support_tip_diameter": "1.2", - "version": "1.8.0.0", - "wipe_speed": "80%" + "type": "process", + "name": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", + "inherits": "0.20mm Standard @Flashforge AD5M 0.4 Nozzle", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.25 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "setting_id": "GP012", + "print_settings_id": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", + "bottom_shell_layers": "4", + "brim_width": "3", + "elefant_foot_compensation": "0", + "gap_infill_speed": "150", + "initial_layer_acceleration": "1000", + "initial_layer_infill_speed": "70", + "initial_layer_line_width": "0.3", + "initial_layer_print_height": "0.15", + "initial_layer_speed": "35", + "inner_wall_line_width": "0.3", + "inner_wall_speed": "150", + "internal_solid_infill_line_width": "0.3", + "internal_solid_infill_speed": "150", + "layer_height": "0.12", + "line_width": "0.25", + "outer_wall_line_width": "0.25", + "outer_wall_speed": "60", + "skirt_loops": "0", + "sparse_infill_line_width": "0.3", + "sparse_infill_speed": "100", + "support_bottom_z_distance": "0.12", + "support_interface_spacing": "0.25", + "support_line_width": "0.25", + "support_object_xy_distance": "0.2", + "support_speed": "80", + "support_top_z_distance": "0.12", + "top_shell_layers": "7", + "top_shell_thickness": "0.8", + "top_surface_line_width": "0.3", + "top_surface_speed": "150", + "tree_support_tip_diameter": "1.2", + "version": "1.8.0.0", + "wipe_speed": "80%" } \ No newline at end of file diff --git a/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json index 2ea5c5c4e4..a7868314b1 100644 --- a/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json @@ -1,45 +1,47 @@ { - "type": "process", - "name": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", - "from": "system", - "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M Pro 0.25 Nozzle" - ], - "setting_id": "GP011", - "print_settings_id": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "bottom_shell_layers": "4", - "brim_width": "3", - "elefant_foot_compensation": "0", - "gap_infill_speed": "150", - "initial_layer_acceleration": "1000", - "initial_layer_infill_speed": "70", - "initial_layer_line_width": "0.3", - "initial_layer_print_height": "0.15", - "initial_layer_speed": "35", - "inner_wall_line_width": "0.3", - "inner_wall_speed": "150", - "internal_solid_infill_line_width": "0.3", - "internal_solid_infill_speed": "150", - "layer_height": "0.12", - "line_width": "0.25", - "outer_wall_line_width": "0.25", - "outer_wall_speed": "60", - "skirt_loops": "0", - "sparse_infill_line_width": "0.3", - "sparse_infill_speed": "100", - "support_bottom_z_distance": "0.12", - "support_interface_spacing": "0.25", - "support_line_width": "0.25", - "support_object_xy_distance": "0.2", - "support_speed": "80", - "support_top_z_distance": "0.12", - "top_shell_layers": "7", - "top_shell_thickness": "0.8", - "top_surface_line_width": "0.3", - "top_surface_speed": "150", - "tree_support_tip_diameter": "1.2", - "version": "1.8.0.0", - "wipe_speed": "80%" + "type": "process", + "name": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.25 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "setting_id": "GP011", + "print_settings_id": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "bottom_shell_layers": "4", + "brim_width": "3", + "elefant_foot_compensation": "0", + "gap_infill_speed": "150", + "initial_layer_acceleration": "1000", + "initial_layer_infill_speed": "70", + "initial_layer_line_width": "0.3", + "initial_layer_print_height": "0.15", + "initial_layer_speed": "35", + "inner_wall_line_width": "0.3", + "inner_wall_speed": "150", + "internal_solid_infill_line_width": "0.3", + "internal_solid_infill_speed": "150", + "layer_height": "0.12", + "line_width": "0.25", + "outer_wall_line_width": "0.25", + "outer_wall_speed": "60", + "skirt_loops": "0", + "sparse_infill_line_width": "0.3", + "sparse_infill_speed": "100", + "support_bottom_z_distance": "0.12", + "support_interface_spacing": "0.25", + "support_line_width": "0.25", + "support_object_xy_distance": "0.2", + "support_speed": "80", + "support_top_z_distance": "0.12", + "top_shell_layers": "7", + "top_shell_thickness": "0.8", + "top_surface_line_width": "0.3", + "top_surface_speed": "150", + "tree_support_tip_diameter": "1.2", + "version": "1.8.0.0", + "wipe_speed": "80%" } \ No newline at end of file diff --git a/resources/profiles/Flashforge/process/0.14mm Standard @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.14mm Standard @FF AD5X 0.25 nozzle.json new file mode 100644 index 0000000000..0eefa4840e --- /dev/null +++ b/resources/profiles/Flashforge/process/0.14mm Standard @FF AD5X 0.25 nozzle.json @@ -0,0 +1,24 @@ +{ + "type": "process", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "setting_id": "GP012", + "instantiation": "true", + "compatible_printers": [ + "Flashforge AD5X 0.25 nozzle" + ], + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "layer_height": "0.14", + "name": "0.14mm Standard @FF AD5X 0.25 nozzle", + "only_one_wall_top": "1", + "prime_tower_width": "45", + "print_settings_id": "0.14mm Standard @FF AD5X 0.25 nozzle", + "support_interface_spacing": "0.2", + "support_type": "tree(auto)", + "version": "2.2.0.0", + "wall_loops": "3" +} diff --git a/resources/profiles/Flashforge/process/0.14mm Standard @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.14mm Standard @FF G4P 0.25 nozzle.json new file mode 100644 index 0000000000..920fe51485 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.14mm Standard @FF G4P 0.25 nozzle.json @@ -0,0 +1,29 @@ +{ + "bridge_acceleration": "10%", + "bridge_speed": "15", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "filter_out_gap_fill": "0.1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.25 nozzle" + ], + "gap_fill_target": "topbottom", + "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "initial_layer_infill_speed": "80", + "initial_layer_speed": "50", + "is_custom_defined": "0", + "layer_height": "0.14", + "name": "0.14mm Standard @FF G4P 0.25 nozzle", + "only_one_wall_top": "1", + "print_settings_id": "0.14mm Standard @FF G4P 0.25 nozzle", + "resolution": "0.005", + "seam_gap": "5%", + "small_perimeter_speed": "10", + "support_interface_spacing": "0.2", + "support_type": "tree(auto)", + "travel_acceleration": "30000", + "version": "2.2.0.0", + "wall_loops": "3" +} diff --git a/resources/profiles/Flashforge/process/0.16mm Standard @FF AD5X.json b/resources/profiles/Flashforge/process/0.16mm Standard @FF AD5X.json new file mode 100644 index 0000000000..79b79b0537 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.16mm Standard @FF AD5X.json @@ -0,0 +1,30 @@ +{ + "type": "process", + "brim_type": "auto_brim", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "setting_id": "GP002", + "instantiation": "true", + "compatible_printers": [ + "Flashforge AD5X 0.4 nozzle" + ], + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "internal_solid_infill_speed": "300", + "is_custom_defined": "0", + "layer_height": "0.16", + "name": "0.16mm Standard @FF AD5X", + "only_one_wall_top": "1", + "prime_tower_width": "45", + "print_settings_id": "0.16mm Standard @FF AD5X", + "skirt_loops": "0", + "sparse_infill_speed": "330", + "support_bottom_z_distance": "0.14", + "support_interface_spacing": "0.2", + "support_top_z_distance": "0.14", + "support_type": "tree(auto)", + "version": "2.1.1.0" +} diff --git a/resources/profiles/Flashforge/process/0.16mm Standard @FF G4P HF.json b/resources/profiles/Flashforge/process/0.16mm Standard @FF G4P HF.json new file mode 100644 index 0000000000..133e7fa327 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.16mm Standard @FF G4P HF.json @@ -0,0 +1,43 @@ +{ + "bridge_speed": "15", + "elefant_foot_compensation": "0.1", + "enable_support": "0", + "filter_out_gap_fill": "0.1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.4 HF nozzle" + ], + "gap_fill_target": "topbottom", + "infill_wall_overlap": "50%", + "inherits": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", + "initial_layer_infill_speed": "80", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "60", + "inner_wall_speed": "300", + "internal_solid_infill_speed": "300", + "is_custom_defined": "0", + "layer_height": "0.16", + "name": "0.16mm Standard @FF G4P HF", + "only_one_wall_first_layer": "1", + "print_settings_id": "0.16mm Standard @FF G4P HF", + "resolution": "0.005", + "seam_gap": "5%", + "skirt_loops": "0", + "small_perimeter_speed": "10", + "sparse_infill_speed": "330", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.14", + "support_interface_filament": "0", + "support_interface_spacing": "0.2", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.42", + "support_speed": "150", + "support_top_z_distance": "0.14", + "support_type": "tree(auto)", + "travel_acceleration": "30000", + "travel_speed": "600", + "version": "2.1.1.0" +} diff --git a/resources/profiles/Flashforge/process/0.16mm Standard @FF G4P.json b/resources/profiles/Flashforge/process/0.16mm Standard @FF G4P.json new file mode 100644 index 0000000000..ba3083e659 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.16mm Standard @FF G4P.json @@ -0,0 +1,35 @@ +{ + "bridge_speed": "15", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "filter_out_gap_fill": "0.1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.4 nozzle" + ], + "gap_fill_target": "topbottom", + "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "initial_layer_speed": "60", + "internal_solid_infill_speed": "300", + "is_custom_defined": "0", + "layer_height": "0.16", + "max_travel_detour_distance": "300", + "name": "0.16mm Standard @FF G4P", + "only_one_wall_top": "1", + "print_settings_id": "0.16mm Standard @FF G4P", + "resolution": "0.005", + "seam_gap": "5%", + "skirt_loops": "0", + "small_perimeter_speed": "10", + "sparse_infill_speed": "330", + "support_bottom_z_distance": "0.16", + "support_interface_bottom_layers": "0", + "support_interface_spacing": "0.2", + "support_top_z_distance": "0.16", + "support_type": "tree(auto)", + "top_shell_layers": "6", + "travel_acceleration": "30000", + "travel_speed": "600", + "version": "2.1.1.0" +} diff --git a/resources/profiles/Flashforge/process/0.18mm Fine @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.18mm Fine @FF AD5X 0.6 nozzle.json new file mode 100644 index 0000000000..1734f42ad1 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.18mm Fine @FF AD5X 0.6 nozzle.json @@ -0,0 +1,25 @@ +{ + "type": "process", + "brim_type": "auto_brim", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge AD5X 0.6 nozzle" + ], + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "infill_wall_overlap": "20%", + "inherits": "0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle", + "is_custom_defined": "0", + "name": "0.18mm Fine @FF AD5X 0.6 nozzle", + "only_one_wall_top": "1", + "prime_tower_brim_width": "5", + "prime_tower_width": "45", + "print_settings_id": "0.18mm Fine @FF AD5X 0.6 nozzle", + "skirt_loops": "0", + "support_bottom_z_distance": "0.22", + "support_top_z_distance": "0.22", + "version": "2.1.1.0" +} diff --git a/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json index ec8626f715..caa6ab0dc7 100644 --- a/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json @@ -18,5 +18,6 @@ "support_bottom_z_distance": "0.2", "support_speed": "100", "support_top_z_distance": "0.2", - "version": "2.0.2.0" + "skirt_loops": "0", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json index 10ef9c64e8..002e743952 100644 --- a/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json @@ -21,5 +21,6 @@ "support_interface_speed": "40", "support_object_xy_distance": "0.4", "support_speed": "100", - "version": "2.0.2.0" + "skirt_loops": "0", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @FF AD5X.json b/resources/profiles/Flashforge/process/0.20mm Standard @FF AD5X.json new file mode 100644 index 0000000000..705834eb2b --- /dev/null +++ b/resources/profiles/Flashforge/process/0.20mm Standard @FF AD5X.json @@ -0,0 +1,28 @@ +{ + "type": "process", + "brim_type": "auto_brim", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "setting_id": "GP002", + "instantiation": "true", + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "compatible_printers": [ + "Flashforge AD5X 0.4 nozzle" + ], + "initial_layer_print_height": "0.25", + "is_custom_defined": "0", + "name": "0.20mm Standard @FF AD5X", + "only_one_wall_top": "1", + "prime_tower_width": "45", + "print_settings_id": "0.20mm Standard @FF AD5X", + "skirt_loops": "0", + "support_bottom_z_distance": "0.16", + "support_interface_spacing": "0.2", + "support_top_z_distance": "0.16", + "support_type": "tree(auto)", + "version": "2.1.1.0" +} diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P HF.json b/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P HF.json new file mode 100644 index 0000000000..3ef4833b2d --- /dev/null +++ b/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P HF.json @@ -0,0 +1,39 @@ +{ + "bridge_speed": "15", + "elefant_foot_compensation": "0.1", + "enable_support": "0", + "filter_out_gap_fill": "0.1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.4 HF nozzle" + ], + "gap_fill_target": "topbottom", + "infill_wall_overlap": "50%", + "inherits": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", + "initial_layer_infill_speed": "80", + "initial_layer_speed": "60", + "inner_wall_speed": "300", + "is_custom_defined": "0", + "name": "0.20mm Standard @FF G4P HF", + "only_one_wall_first_layer": "1", + "print_settings_id": "0.20mm Standard @FF G4P HF", + "resolution": "0.005", + "seam_gap": "5%", + "skirt_loops": "0", + "small_perimeter_speed": "10", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.16", + "support_interface_filament": "0", + "support_interface_spacing": "0.2", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.42", + "support_speed": "150", + "support_top_z_distance": "0.16", + "support_type": "tree(auto)", + "travel_acceleration": "30000", + "travel_speed": "600", + "version": "2.1.1.0" +} diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P PLA600.json b/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P PLA600.json new file mode 100644 index 0000000000..75abf8887a --- /dev/null +++ b/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P PLA600.json @@ -0,0 +1,42 @@ +{ + "bridge_speed": "15", + "elefant_foot_compensation": "0.1", + "enable_support": "0", + "filter_out_gap_fill": "0.1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.4 HF nozzle" + ], + "gap_fill_target": "topbottom", + "gap_infill_speed": "250", + "infill_wall_overlap": "50%", + "inherits": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", + "initial_layer_infill_speed": "80", + "initial_layer_speed": "60", + "inner_wall_speed": "600", + "internal_solid_infill_speed": "600", + "is_custom_defined": "0", + "name": "0.20mm Standard @FF G4P PLA600", + "only_one_wall_first_layer": "1", + "print_settings_id": "0.20mm Standard @FF G4P PLA600", + "resolution": "0.005", + "seam_gap": "5%", + "skirt_loops": "0", + "sparse_infill_speed": "600", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.16", + "support_interface_filament": "0", + "support_interface_spacing": "0.2", + "support_interface_speed": "100", + "support_interface_top_layers": "2", + "support_line_width": "0.42", + "support_speed": "200", + "support_top_z_distance": "0.16", + "support_type": "tree(auto)", + "top_surface_speed": "300", + "travel_acceleration": "30000", + "travel_speed": "600", + "version": "2.1.1.0" +} diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P.json b/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P.json new file mode 100644 index 0000000000..d5f499b1bb --- /dev/null +++ b/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P.json @@ -0,0 +1,31 @@ +{ + "bridge_speed": "15", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "exclude_object": "1", + "filter_out_gap_fill": "0.1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.4 nozzle" + ], + "gap_fill_target": "topbottom", + "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "initial_layer_print_height": "0.25", + "initial_layer_speed": "60", + "is_custom_defined": "0", + "max_travel_detour_distance": "300", + "name": "0.20mm Standard @FF G4P", + "only_one_wall_top": "1", + "print_settings_id": "0.20mm Standard @FF G4P", + "resolution": "0.005", + "seam_gap": "5%", + "skirt_loops": "0", + "small_perimeter_speed": "10", + "support_interface_bottom_layers": "0", + "support_interface_spacing": "0.2", + "support_type": "tree(auto)", + "travel_acceleration": "30000", + "travel_speed": "600", + "version": "2.1.1.0" +} diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M 0.4 Nozzle.json index 12a4806553..a8538c7449 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M 0.4 Nozzle.json @@ -8,6 +8,14 @@ "compatible_printers": [ "Flashforge Adventurer 5M 0.4 Nozzle" ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", "only_one_wall_top": "0", - "infill_wall_overlap": "50%" -} \ No newline at end of file + "infill_wall_overlap": "50%", + "is_custom_defined": "0", + "print_settings_id": "0.20mm Standard @Flashforge AD5M 0.4 Nozzle", + "skirt_loops": "0", + "version": "2.1.1.0" +} + + diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle.json index 65baa249cf..604690da88 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle.json @@ -8,6 +8,13 @@ "compatible_printers": [ "Flashforge Adventurer 5M Pro 0.4 Nozzle" ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", "only_one_wall_top": "0", - "infill_wall_overlap": "50%" -} \ No newline at end of file + "infill_wall_overlap": "50%", + "is_custom_defined": "0", + "print_settings_id": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "skirt_loops": "0", + "version": "2.1.1.0" +} + diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json index 15f4fa3add..c2024336d4 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json @@ -119,7 +119,7 @@ "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", - "prime_tower_brim_width": "8", + "prime_tower_brim_width": "5", "prime_tower_width": "12", "prime_volume": "40", "print_flow_ratio": "1", @@ -136,7 +136,7 @@ "role_based_wipe_speed": "1", "seam_gap": "10%", "seam_position": "aligned", - "single_extruder_multi_material_priming": "0", + "single_extruder_multi_material_priming": "1", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "2", @@ -152,7 +152,7 @@ "sparse_infill_density": "15%", "sparse_infill_filament": "1", "sparse_infill_line_width": "0.45", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "grid", "sparse_infill_speed": "270", "spiral_mode": "0", "staggered_inner_seams": "0", @@ -176,7 +176,7 @@ "support_object_xy_distance": "0.3", "support_on_build_plate_only": "0", "support_remove_small_overhang": "1", - "support_speed": "120", + "support_speed": "80", "support_style": "default", "support_threshold_angle": "30", "support_top_z_distance": "0.2", @@ -240,5 +240,6 @@ "70" ], "xy_contour_compensation": "0", - "xy_hole_compensation": "0" + "xy_hole_compensation": "0", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/process/0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle.json new file mode 100644 index 0000000000..af0b4da185 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle.json @@ -0,0 +1,40 @@ +{ + "type": "process", + "name": "0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle", + "inherits": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", + "from": "system", + "setting_id": "GP003", + "instantiation": "true", + "bottom_shell_layers": "4", + "bridge_flow": "0.96", + "bridge_speed": "20", + "gap_infill_speed": "100", + "infill_wall_overlap": "35%", + "initial_layer_speed": "30", + "initial_layer_travel_speed": "70%", + "inner_wall_speed": "100", + "internal_bridge_speed": "40", + "internal_solid_infill_speed": "100", + "is_custom_defined": "0", + "outer_wall_acceleration": "3000", + "outer_wall_speed": "100", + "print_settings_id": "0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle", + "prime_tower_brim_width": "5", + "sparse_infill_acceleration": "70%", + "sparse_infill_density": "50%", + "sparse_infill_pattern": "zig-zag", + "sparse_infill_speed": "100", + "support_bottom_interface_spacing": "0.2", + "support_bottom_z_distance": "0.15", + "support_interface_spacing": "0.2", + "support_interface_top_layers": "2", + "support_line_width": "0.4", + "support_on_build_plate_only": "1", + "support_speed": "80", + "support_type": "tree(auto)", + "top_bottom_infill_wall_overlap": "50%", + "top_surface_speed": "100", + "version": "2.1.0.0", + "wall_loops": "3", + "xy_hole_compensation": "0.06" +} diff --git a/resources/profiles/Flashforge/process/0.24mm Draft @FF AD5X.json b/resources/profiles/Flashforge/process/0.24mm Draft @FF AD5X.json new file mode 100644 index 0000000000..feb9c96f75 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.24mm Draft @FF AD5X.json @@ -0,0 +1,30 @@ +{ + "type": "process", + "brim_type": "auto_brim", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "setting_id": "GP002", + "instantiation": "true", + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "gap_infill_speed": "180", + "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "compatible_printers": [ + "Flashforge AD5X 0.4 nozzle" + ], + "initial_layer_print_height": "0.25", + "internal_solid_infill_speed": "230", + "is_custom_defined": "0", + "layer_height": "0.24", + "name": "0.24mm Draft @FF AD5X", + "only_one_wall_top": "1", + "prime_tower_width": "45", + "print_settings_id": "0.24mm Draft @FF AD5X", + "skirt_loops": "0", + "sparse_infill_speed": "230", + "support_interface_spacing": "0.2", + "support_type": "tree(auto)", + "version": "2.1.1.0" +} diff --git a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json index 6622afae72..334adc4f9d 100644 --- a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json @@ -16,10 +16,11 @@ "support_interface_speed": "40", "support_speed": "100", "support_top_z_distance": "0.15", - "version": "2.0.2.0", "compatible_printers": [ "Flashforge Adventurer 5M 0.4 Nozzle" ], "filename_format": "{input_filename_base}.gcode", - "post_process": "" + "post_process": "", + "skirt_loops": "0", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json index ff585d7b37..df1aa8afe7 100644 --- a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json @@ -17,10 +17,11 @@ "support_interface_spacing": "0.3", "support_line_width": "0.4", "top_surface_line_width": "0.4", - "version": "2.0.2.0", "compatible_printers": [ "Flashforge Adventurer 5M Pro 0.4 Nozzle" ], "filename_format": "{input_filename_base}.gcode", - "post_process": "" + "post_process": "", + "skirt_loops": "0", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json index 9097bf247e..7f6d35ca17 100644 --- a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json @@ -23,5 +23,6 @@ "support_line_width": "0.4", "support_object_xy_distance": "0.4", "support_speed": "80", - "version": "2.0.2.0" + "prime_tower_brim_width": "5", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/process/0.24mm Fine @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/process/0.24mm Fine @FF AD5X 0.8 nozzle.json new file mode 100644 index 0000000000..5ff42fb4c5 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.24mm Fine @FF AD5X 0.8 nozzle.json @@ -0,0 +1,26 @@ +{ + "type": "process", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge AD5X 0.8 nozzle" + ], + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "infill_wall_overlap": "20%", + "inherits": "0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle", + "internal_bridge_speed": "35", + "is_custom_defined": "0", + "name": "0.24mm Fine @FF AD5X 0.8 nozzle", + "only_one_wall_top": "1", + "prime_tower_brim_width": "5", + "prime_tower_width": "45", + "prime_volume": "100", + "print_settings_id": "0.24mm Fine @FF AD5X 0.8 nozzle", + "solid_infill_direction": "0", + "thick_internal_bridges": "0", + "top_shell_layers": "4", + "version": "2.1.1.0" +} diff --git a/resources/profiles/Flashforge/process/0.24mm Standard @FF G4P HF.json b/resources/profiles/Flashforge/process/0.24mm Standard @FF G4P HF.json new file mode 100644 index 0000000000..a28f8fe4d9 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.24mm Standard @FF G4P HF.json @@ -0,0 +1,43 @@ +{ + "bridge_speed": "15", + "elefant_foot_compensation": "0.1", + "enable_support": "0", + "filter_out_gap_fill": "0.1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.4 HF nozzle" + ], + "gap_fill_target": "topbottom", + "gap_infill_speed": "180", + "infill_wall_overlap": "50%", + "inherits": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", + "initial_layer_infill_speed": "80", + "initial_layer_speed": "60", + "inner_wall_speed": "300", + "internal_solid_infill_speed": "230", + "is_custom_defined": "0", + "layer_height": "0.24", + "name": "0.24mm Standard @FF G4P HF", + "only_one_wall_first_layer": "1", + "print_settings_id": "0.24mm Standard @FF G4P HF", + "resolution": "0.005", + "seam_gap": "5%", + "skirt_loops": "0", + "small_perimeter_speed": "10", + "sparse_infill_speed": "230", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.18", + "support_interface_filament": "0", + "support_interface_spacing": "0.2", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.42", + "support_speed": "150", + "support_top_z_distance": "0.18", + "support_type": "tree(auto)", + "travel_acceleration": "30000", + "travel_speed": "600", + "version": "2.1.1.0" +} diff --git a/resources/profiles/Flashforge/process/0.24mm Standard @FF G4P.json b/resources/profiles/Flashforge/process/0.24mm Standard @FF G4P.json new file mode 100644 index 0000000000..d5410f829d --- /dev/null +++ b/resources/profiles/Flashforge/process/0.24mm Standard @FF G4P.json @@ -0,0 +1,35 @@ +{ + "bridge_speed": "15", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "filter_out_gap_fill": "0.1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.4 nozzle" + ], + "gap_fill_target": "topbottom", + "gap_infill_speed": "180", + "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "initial_layer_print_height": "0.25", + "initial_layer_speed": "60", + "internal_solid_infill_speed": "230", + "is_custom_defined": "0", + "layer_height": "0.24", + "max_travel_detour_distance": "300", + "name": "0.24mm Standard @FF G4P", + "only_one_wall_top": "1", + "print_settings_id": "0.24mm Standard @FF G4P", + "resolution": "0.005", + "seam_gap": "5%", + "skirt_loops": "0", + "small_perimeter_speed": "10", + "sparse_infill_speed": "230", + "support_interface_bottom_layers": "0", + "support_interface_spacing": "0.2", + "support_type": "tree(auto)", + "top_shell_layers": "4", + "travel_acceleration": "30000", + "travel_speed": "600", + "version": "2.1.1.0" +} diff --git a/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 HF nozzle.json new file mode 100644 index 0000000000..6790550e5b --- /dev/null +++ b/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 HF nozzle.json @@ -0,0 +1,74 @@ +{ + "bottom_solid_infill_flow_ratio": "0.96", + "bridge_acceleration": "3000", + "bridge_flow": "0.98", + "brim_type": "auto_brim", + "default_acceleration": "20000", + "enable_arc_fitting": "1", + "enable_prime_tower": "1", + "exclude_object": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_support": "1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.6 HF nozzle" + ], + "gap_infill_speed": "70", + "infill_wall_overlap": "15%", + "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "initial_layer_acceleration": "800", + "initial_layer_infill_speed": "60", + "initial_layer_line_width": "0.62", + "initial_layer_print_height": "0.3", + "initial_layer_speed": "40", + "inner_wall_acceleration": "10000", + "inner_wall_line_width": "0.62", + "inner_wall_speed": "200", + "internal_bridge_flow": "0.98", + "internal_bridge_speed": "35", + "internal_solid_infill_acceleration": "10000", + "internal_solid_infill_line_width": "0.62", + "internal_solid_infill_speed": "150", + "is_custom_defined": "0", + "layer_height": "0.25", + "line_width": "0.62", + "name": "0.25mm Standard @FF G4P 0.6 HF nozzle", + "outer_wall_acceleration": "5000", + "outer_wall_line_width": "0.62", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "12", + "overhang_speed_classic": "1", + "prime_tower_width": "45", + "prime_volume": "45", + "print_settings_id": "0.25mm Standard @FF G4P 0.6 HF nozzle", + "reduce_infill_retraction": "0", + "role_based_wipe_speed": "0", + "seam_gap": "10%", + "skirt_loops": "0", + "small_perimeter_speed": "35", + "small_perimeter_threshold": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_line_width": "0.62", + "sparse_infill_speed": "300", + "support_bottom_z_distance": "0.22", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_speed": "80", + "support_interface_top_layers": "3", + "support_line_width": "0.62", + "support_speed": "105", + "support_top_z_distance": "0.25", + "thick_internal_bridges": "0", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "0.96", + "top_surface_acceleration": "3000", + "top_surface_line_width": "0.62", + "travel_acceleration": "30000", + "travel_speed": "550", + "version": "2.1.1.0", + "wipe_speed": "500", + "wipe_tower_bridging": "10" +} diff --git a/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 nozzle.json new file mode 100644 index 0000000000..543b4de6a5 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 nozzle.json @@ -0,0 +1,68 @@ +{ + "bottom_solid_infill_flow_ratio": "0.96", + "bridge_acceleration": "3000", + "bridge_flow": "0.98", + "brim_type": "auto_brim", + "default_acceleration": "20000", + "enable_prime_tower": "1", + "exclude_object": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_support": "1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.6 nozzle" + ], + "infill_wall_overlap": "15%", + "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "initial_layer_acceleration": "800", + "initial_layer_infill_speed": "60", + "initial_layer_line_width": "0.62", + "initial_layer_print_height": "0.3", + "initial_layer_speed": "40", + "initial_layer_travel_speed": "600", + "inner_wall_acceleration": "10000", + "inner_wall_line_width": "0.62", + "inner_wall_speed": "200", + "internal_bridge_flow": "0.98", + "internal_bridge_speed": "35", + "internal_solid_infill_acceleration": "8000", + "internal_solid_infill_line_width": "0.62", + "internal_solid_infill_speed": "150", + "is_custom_defined": "0", + "layer_height": "0.25", + "line_width": "0.62", + "name": "0.25mm Standard @FF G4P 0.6 nozzle", + "only_one_wall_first_layer": "1", + "outer_wall_line_width": "0.62", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "12", + "overhang_speed_classic": "1", + "prime_tower_width": "45", + "prime_volume": "45", + "print_settings_id": "0.25mm Standard @FF G4P 0.6 nozzle", + "role_based_wipe_speed": "0", + "seam_gap": "10%", + "skirt_loops": "0", + "small_perimeter_speed": "35", + "sparse_infill_acceleration": "100%", + "sparse_infill_line_width": "0.62", + "sparse_infill_speed": "220", + "support_bottom_z_distance": "0.25", + "support_interface_filament": "0", + "support_line_width": "0.62", + "support_speed": "70", + "support_top_z_distance": "0.3", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "0.96", + "top_surface_acceleration": "3000", + "top_surface_line_width": "0.62", + "travel_acceleration": "20000", + "travel_speed": "550", + "version": "2.1.1.0", + "wipe_speed": "50", + "wipe_tower_bridging": "10", + "wipe_tower_max_purge_speed": "120" +} diff --git a/resources/profiles/Flashforge/process/0.30mm Standard @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.30mm Standard @FF AD5X 0.6 nozzle.json new file mode 100644 index 0000000000..813424e0f3 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.30mm Standard @FF AD5X 0.6 nozzle.json @@ -0,0 +1,25 @@ +{ + "type": "process", + "brim_type": "auto_brim", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "setting_id": "GP004", + "instantiation": "true", + "compatible_printers": [ + "Flashforge AD5X 0.6 nozzle" + ], + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "infill_wall_overlap": "20%", + "inherits": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", + "is_custom_defined": "0", + "name": "0.30mm Standard @FF AD5X 0.6 nozzle", + "only_one_wall_top": "1", + "prime_tower_width": "45", + "print_settings_id": "0.30mm Standard @FF AD5X 0.6 nozzle", + "skirt_loops": "0", + "support_bottom_z_distance": "0.3", + "support_top_z_distance": "0.3", + "version": "2.1.1.0" +} diff --git a/resources/profiles/Flashforge/process/0.30mm Standard @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.30mm Standard @FF G4P 0.6 nozzle.json new file mode 100644 index 0000000000..453cb1b33b --- /dev/null +++ b/resources/profiles/Flashforge/process/0.30mm Standard @FF G4P 0.6 nozzle.json @@ -0,0 +1,63 @@ +{ + "bottom_solid_infill_flow_ratio": "0.96", + "bridge_acceleration": "3000", + "brim_type": "auto_brim", + "enable_prime_tower": "1", + "exclude_object": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_support": "1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.6 nozzle" + ], + "infill_wall_overlap": "15%", + "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "initial_layer_acceleration": "800", + "initial_layer_infill_speed": "60", + "initial_layer_line_width": "0.62", + "initial_layer_print_height": "0.3", + "initial_layer_speed": "40", + "initial_layer_travel_speed": "600", + "inner_wall_acceleration": "10000", + "inner_wall_line_width": "0.62", + "internal_bridge_flow": "0.96", + "internal_bridge_speed": "35", + "internal_solid_infill_acceleration": "8000", + "internal_solid_infill_line_width": "0.62", + "internal_solid_infill_speed": "120", + "is_custom_defined": "0", + "line_width": "0.62", + "name": "0.30mm Standard @FF G4P 0.6 nozzle", + "outer_wall_line_width": "0.62", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "12", + "overhang_speed_classic": "1", + "prime_tower_width": "45", + "prime_volume": "45", + "print_settings_id": "0.30mm Standard @FF G4P 0.6 nozzle", + "role_based_wipe_speed": "0", + "seam_gap": "10%", + "skirt_loops": "0", + "small_perimeter_speed": "35", + "sparse_infill_acceleration": "100%", + "sparse_infill_line_width": "0.62", + "sparse_infill_speed": "220", + "support_bottom_z_distance": "0.25", + "support_interface_filament": "0", + "support_line_width": "0.62", + "support_speed": "70", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "0.96", + "top_surface_acceleration": "3000", + "top_surface_line_width": "0.62", + "top_surface_speed": "100", + "travel_acceleration": "20000", + "travel_speed": "550", + "version": "2.1.1.0", + "wipe_speed": "50", + "wipe_tower_bridging": "10", + "wipe_tower_max_purge_speed": "120" +} diff --git a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M 0.6 Nozzle.json index 23deef5f13..4b21d1c81f 100644 --- a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M 0.6 Nozzle.json @@ -8,6 +8,12 @@ "compatible_printers": [ "Flashforge Adventurer 5M 0.6 Nozzle" ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", "only_one_wall_top": "0", - "infill_wall_overlap": "50%" -} \ No newline at end of file + "infill_wall_overlap": "50%", + "is_custom_defined": "0", + "print_settings_id": "0.30mm Standard @Flashforge AD5M 0.6 Nozzle", + "skirt_loops": "0", + "version": "2.1.1.0" +} diff --git a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle.json index 8e1b3f5ecc..adfe5c29a3 100644 --- a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle.json @@ -8,6 +8,12 @@ "compatible_printers": [ "Flashforge Adventurer 5M Pro 0.6 Nozzle" ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", "only_one_wall_top": "0", - "infill_wall_overlap": "50%" -} \ No newline at end of file + "infill_wall_overlap": "50%", + "is_custom_defined": "0", + "print_settings_id": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", + "skirt_loops": "0", + "version": "2.1.1.0" +} diff --git a/resources/profiles/Flashforge/process/0.32mm Standard @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/process/0.32mm Standard @FF G4P 0.8 HF nozzle.json new file mode 100644 index 0000000000..216e9d4929 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.32mm Standard @FF G4P 0.8 HF nozzle.json @@ -0,0 +1,65 @@ +{ + "bottom_solid_infill_flow_ratio": "0.96", + "bridge_acceleration": "3000", + "bridge_flow": "0.98", + "brim_type": "auto_brim", + "default_acceleration": "20000", + "enable_prime_tower": "1", + "exclude_object": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_support": "1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.8 HF nozzle" + ], + "infill_wall_overlap": "15%", + "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "initial_layer_acceleration": "800", + "initial_layer_infill_speed": "60", + "initial_layer_line_width": "0.82", + "initial_layer_print_height": "0.3", + "initial_layer_speed": "40", + "initial_layer_travel_speed": "600", + "inner_wall_acceleration": "10000", + "inner_wall_line_width": "0.82", + "inner_wall_speed": "200", + "internal_bridge_flow": "0.98", + "internal_bridge_speed": "35", + "internal_solid_infill_acceleration": "8000", + "internal_solid_infill_line_width": "0.82", + "internal_solid_infill_speed": "150", + "is_custom_defined": "0", + "layer_height": "0.32", + "line_width": "0.82", + "name": "0.32mm Standard @FF G4P 0.8 HF nozzle", + "outer_wall_line_width": "0.82", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "12", + "overhang_speed_classic": "1", + "prime_tower_width": "45", + "prime_volume": "100", + "print_settings_id": "0.32mm Standard @FF G4P 0.8 HF nozzle", + "role_based_wipe_speed": "0", + "skirt_loops": "0", + "small_perimeter_speed": "35", + "sparse_infill_acceleration": "100%", + "sparse_infill_line_width": "0.82", + "sparse_infill_speed": "220", + "support_bottom_z_distance": "0.25", + "support_interface_filament": "0", + "support_line_width": "0.82", + "support_speed": "70", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "0.96", + "top_surface_acceleration": "3000", + "top_surface_line_width": "0.82", + "travel_acceleration": "20000", + "travel_speed": "550", + "version": "2.1.1.0", + "wipe_speed": "50", + "wipe_tower_bridging": "10", + "wipe_tower_max_purge_speed": "120" +} diff --git a/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 HF nozzle.json new file mode 100644 index 0000000000..ea7b9c5764 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 HF nozzle.json @@ -0,0 +1,72 @@ +{ + "bottom_solid_infill_flow_ratio": "0.96", + "bridge_acceleration": "3000", + "bridge_flow": "0.98", + "brim_type": "auto_brim", + "enable_arc_fitting": "1", + "enable_prime_tower": "1", + "exclude_object": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_support": "1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.6 HF nozzle" + ], + "gap_infill_speed": "70", + "infill_wall_overlap": "15%", + "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "initial_layer_acceleration": "800", + "initial_layer_infill_speed": "60", + "initial_layer_line_width": "0.62", + "initial_layer_print_height": "0.3", + "initial_layer_speed": "40", + "inner_wall_acceleration": "10000", + "inner_wall_line_width": "0.62", + "internal_bridge_flow": "0.98", + "internal_bridge_speed": "35", + "internal_solid_infill_acceleration": "10000", + "internal_solid_infill_line_width": "0.62", + "internal_solid_infill_speed": "150", + "is_custom_defined": "0", + "layer_height": "0.36", + "line_width": "0.62", + "name": "0.36mm Standard @FF G4P 0.6 HF nozzle", + "outer_wall_acceleration": "5000", + "outer_wall_line_width": "0.62", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "12", + "overhang_speed_classic": "1", + "prime_tower_width": "45", + "prime_volume": "45", + "print_settings_id": "0.36mm Standard @FF G4P 0.6 HF nozzle", + "reduce_infill_retraction": "0", + "role_based_wipe_speed": "0", + "seam_gap": "10%", + "skirt_loops": "0", + "small_perimeter_speed": "35", + "small_perimeter_threshold": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_line_width": "0.62", + "sparse_infill_speed": "220", + "support_bottom_z_distance": "0.25", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_speed": "80", + "support_interface_top_layers": "3", + "support_line_width": "0.62", + "support_speed": "105", + "thick_internal_bridges": "0", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "0.96", + "top_surface_acceleration": "3000", + "top_surface_line_width": "0.62", + "travel_acceleration": "30000", + "travel_speed": "550", + "version": "2.1.1.0", + "wipe_speed": "500", + "wipe_tower_bridging": "10", + "wipe_tower_max_purge_speed": "120" +} diff --git a/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 nozzle.json new file mode 100644 index 0000000000..2a265062bd --- /dev/null +++ b/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 nozzle.json @@ -0,0 +1,64 @@ +{ + "bottom_solid_infill_flow_ratio": "0.96", + "bridge_acceleration": "3000", + "brim_type": "auto_brim", + "enable_prime_tower": "1", + "exclude_object": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_support": "1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.6 nozzle" + ], + "infill_wall_overlap": "15%", + "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "initial_layer_acceleration": "800", + "initial_layer_infill_speed": "60", + "initial_layer_line_width": "0.62", + "initial_layer_print_height": "0.3", + "initial_layer_speed": "40", + "initial_layer_travel_speed": "600", + "inner_wall_acceleration": "10000", + "inner_wall_line_width": "0.62", + "internal_bridge_flow": "0.96", + "internal_bridge_speed": "35", + "internal_solid_infill_acceleration": "8000", + "internal_solid_infill_line_width": "0.62", + "internal_solid_infill_speed": "120", + "is_custom_defined": "0", + "layer_height": "0.36", + "line_width": "0.62", + "name": "0.36mm Standard @FF G4P 0.6 nozzle", + "outer_wall_line_width": "0.62", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "12", + "overhang_speed_classic": "1", + "prime_tower_width": "45", + "prime_volume": "45", + "print_settings_id": "0.36mm Standard @FF G4P 0.6 nozzle", + "role_based_wipe_speed": "0", + "seam_gap": "10%", + "skirt_loops": "0", + "small_perimeter_speed": "35", + "sparse_infill_acceleration": "100%", + "sparse_infill_line_width": "0.62", + "sparse_infill_speed": "220", + "support_bottom_z_distance": "0.25", + "support_interface_filament": "0", + "support_line_width": "0.62", + "support_speed": "70", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "0.96", + "top_surface_acceleration": "3000", + "top_surface_line_width": "0.62", + "top_surface_speed": "100", + "travel_acceleration": "20000", + "travel_speed": "550", + "version": "2.1.1.0", + "wipe_speed": "50", + "wipe_tower_bridging": "10", + "wipe_tower_max_purge_speed": "120" +} diff --git a/resources/profiles/Flashforge/process/0.3mm Standard @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/process/0.3mm Standard @FF G4P 0.6 HF nozzle.json new file mode 100644 index 0000000000..409afa7be1 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.3mm Standard @FF G4P 0.6 HF nozzle.json @@ -0,0 +1,72 @@ +{ + "bottom_solid_infill_flow_ratio": "0.96", + "bridge_acceleration": "3000", + "bridge_flow": "0.98", + "brim_type": "auto_brim", + "enable_arc_fitting": "1", + "enable_prime_tower": "1", + "exclude_object": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_support": "1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.6 HF nozzle" + ], + "gap_infill_speed": "70", + "infill_wall_overlap": "15%", + "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "initial_layer_acceleration": "800", + "initial_layer_infill_speed": "60", + "initial_layer_line_width": "0.62", + "initial_layer_print_height": "0.3", + "initial_layer_speed": "40", + "inner_wall_acceleration": "10000", + "inner_wall_line_width": "0.62", + "internal_bridge_flow": "0.98", + "internal_bridge_speed": "35", + "internal_solid_infill_acceleration": "10000", + "internal_solid_infill_line_width": "0.62", + "internal_solid_infill_speed": "150", + "is_custom_defined": "0", + "line_width": "0.62", + "name": "0.3mm Standard @FF G4P 0.6 HF nozzle", + "outer_wall_acceleration": "5000", + "outer_wall_line_width": "0.62", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "12", + "overhang_speed_classic": "1", + "prime_tower_width": "45", + "prime_volume": "45", + "print_settings_id": "0.3mm Standard @FF G4P 0.6 HF nozzle", + "reduce_infill_retraction": "0", + "role_based_wipe_speed": "0", + "seam_gap": "10%", + "skirt_loops": "0", + "small_perimeter_speed": "35", + "small_perimeter_threshold": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_line_width": "0.62", + "sparse_infill_speed": "220", + "support_bottom_z_distance": "0.25", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_speed": "80", + "support_interface_top_layers": "3", + "support_line_width": "0.62", + "support_speed": "105", + "support_top_z_distance": "0.3", + "thick_internal_bridges": "0", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "0.96", + "top_surface_acceleration": "3000", + "top_surface_line_width": "0.62", + "travel_acceleration": "30000", + "travel_speed": "550", + "version": "2.1.1.0", + "wipe_speed": "500", + "wipe_tower_bridging": "10", + "wipe_tower_max_purge_speed": "120" +} diff --git a/resources/profiles/Flashforge/process/0.40mm Standard @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/process/0.40mm Standard @FF AD5X 0.8 nozzle.json new file mode 100644 index 0000000000..31ef008b84 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.40mm Standard @FF AD5X 0.8 nozzle.json @@ -0,0 +1,27 @@ +{ + "type": "process", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge AD5X 0.8 nozzle" + ], + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "infill_wall_overlap": "20%", + "inherits": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", + "internal_bridge_speed": "35", + "is_custom_defined": "0", + "name": "0.40mm Standard @FF AD5X 0.8 nozzle", + "only_one_wall_top": "1", + "prime_tower_width": "45", + "prime_volume": "100", + "print_settings_id": "0.40mm Standard @FF AD5X 0.8 nozzle", + "solid_infill_direction": "0", + "support_bottom_z_distance": "0.3", + "support_top_z_distance": "0.3", + "thick_internal_bridges": "0", + "top_shell_thickness": "0", + "version": "2.1.1.0" +} diff --git a/resources/profiles/Flashforge/process/0.40mm Standard @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/process/0.40mm Standard @FF G4P 0.8 HF nozzle.json new file mode 100644 index 0000000000..714d21ffc8 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.40mm Standard @FF G4P 0.8 HF nozzle.json @@ -0,0 +1,64 @@ +{ + "bottom_solid_infill_flow_ratio": "0.96", + "bridge_acceleration": "3000", + "brim_type": "auto_brim", + "enable_prime_tower": "1", + "exclude_object": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_support": "1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.8 HF nozzle" + ], + "infill_wall_overlap": "15%", + "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "initial_layer_acceleration": "800", + "initial_layer_infill_speed": "60", + "initial_layer_line_width": "0.82", + "initial_layer_print_height": "0.3", + "initial_layer_speed": "40", + "initial_layer_travel_speed": "600", + "inner_wall_acceleration": "10000", + "inner_wall_line_width": "0.82", + "internal_bridge_flow": "0.96", + "internal_bridge_speed": "35", + "internal_solid_infill_acceleration": "8000", + "internal_solid_infill_line_width": "0.82", + "internal_solid_infill_speed": "120", + "is_custom_defined": "0", + "layer_height": "0.4", + "line_width": "0.82", + "name": "0.40mm Standard @FF G4P 0.8 HF nozzle", + "outer_wall_line_width": "0.82", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "12", + "overhang_speed_classic": "1", + "prime_tower_width": "45", + "prime_volume": "100", + "print_settings_id": "0.40mm Standard @FF G4P 0.8 HF nozzle", + "role_based_wipe_speed": "0", + "seam_gap": "10%", + "skirt_loops": "0", + "small_perimeter_speed": "35", + "sparse_infill_acceleration": "100%", + "sparse_infill_line_width": "0.82", + "sparse_infill_speed": "220", + "support_bottom_z_distance": "0.25", + "support_interface_filament": "0", + "support_line_width": "0.82", + "support_speed": "70", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "0.96", + "top_surface_acceleration": "3000", + "top_surface_line_width": "0.82", + "top_surface_speed": "100", + "travel_acceleration": "20000", + "travel_speed": "550", + "version": "2.1.1.0", + "wipe_speed": "50", + "wipe_tower_bridging": "10", + "wipe_tower_max_purge_speed": "120" +} diff --git a/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M 0.8 Nozzle.json index 4c50751066..b9664ae7cc 100644 --- a/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M 0.8 Nozzle.json @@ -1,36 +1,38 @@ { - "type": "process", - "name": "0.40mm Standard @Flashforge AD5M 0.8 Nozzle", - "inherits": "0.30mm Standard @Flashforge AD5M 0.6 Nozzle", - "from": "system", - "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.8 Nozzle" - ], - "setting_id": "GP002", - "print_settings_id": "0.40mm Standard @Flashforge AD5M 0.8 Nozzle", - "elefant_foot_compensation": "0", - "initial_layer_infill_speed": "55", - "initial_layer_line_width": "0.85", - "initial_layer_speed": "35", - "inner_wall_line_width": "0.85", - "internal_solid_infill_acceleration": "5000", - "internal_solid_infill_line_width": "0.82", - "layer_height": "0.4", - "line_width": "0.82", - "outer_wall_line_width": "0.82", - "skirt_loops": "0", - "sparse_infill_line_width": "0.85", - "support_bottom_interface_spacing": "0.4", - "support_bottom_z_distance": "0.22", - "support_interface_spacing": "0.4", - "support_line_width": "0.82", - "support_object_xy_distance": "0.4", - "support_top_z_distance": "0.22", - "top_shell_layers": "4", - "top_shell_thickness": "0.8", - "top_surface_line_width": "0.82", - "tree_support_tip_diameter": "1.2", - "version": "1.8.0.0", - "wipe_speed": "60%" + "type": "process", + "name": "0.40mm Standard @Flashforge AD5M 0.8 Nozzle", + "inherits": "0.30mm Standard @Flashforge AD5M 0.6 Nozzle", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.8 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "setting_id": "GP002", + "print_settings_id": "0.40mm Standard @Flashforge AD5M 0.8 Nozzle", + "elefant_foot_compensation": "0", + "initial_layer_infill_speed": "55", + "initial_layer_line_width": "0.85", + "initial_layer_speed": "35", + "inner_wall_line_width": "0.85", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.82", + "layer_height": "0.4", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "skirt_loops": "0", + "sparse_infill_line_width": "0.85", + "support_bottom_interface_spacing": "0.4", + "support_bottom_z_distance": "0.22", + "support_interface_spacing": "0.4", + "support_line_width": "0.82", + "support_object_xy_distance": "0.4", + "support_top_z_distance": "0.22", + "top_shell_layers": "4", + "top_shell_thickness": "0.8", + "top_surface_line_width": "0.82", + "tree_support_tip_diameter": "1.2", + "version": "1.8.0.0", + "wipe_speed": "60%" } \ No newline at end of file diff --git a/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle.json index 28323aba75..6688f655b6 100644 --- a/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle.json @@ -1,36 +1,38 @@ { - "type": "process", - "name": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", - "inherits": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", - "from": "system", - "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M Pro 0.8 Nozzle" - ], - "setting_id": "GP001", - "print_settings_id": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", - "elefant_foot_compensation": "0", - "initial_layer_infill_speed": "55", - "initial_layer_line_width": "0.85", - "initial_layer_speed": "35", - "inner_wall_line_width": "0.85", - "internal_solid_infill_acceleration": "5000", - "internal_solid_infill_line_width": "0.82", - "layer_height": "0.4", - "line_width": "0.82", - "outer_wall_line_width": "0.82", - "skirt_loops": "0", - "sparse_infill_line_width": "0.85", - "support_bottom_interface_spacing": "0.4", - "support_bottom_z_distance": "0.22", - "support_interface_spacing": "0.4", - "support_line_width": "0.82", - "support_object_xy_distance": "0.4", - "support_top_z_distance": "0.22", - "top_shell_layers": "4", - "top_shell_thickness": "0.8", - "top_surface_line_width": "0.82", - "tree_support_tip_diameter": "1.2", - "version": "1.8.0.0", - "wipe_speed": "60%" + "type": "process", + "name": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", + "inherits": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.8 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "setting_id": "GP001", + "print_settings_id": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", + "elefant_foot_compensation": "0", + "initial_layer_infill_speed": "55", + "initial_layer_line_width": "0.85", + "initial_layer_speed": "35", + "inner_wall_line_width": "0.85", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.82", + "layer_height": "0.4", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "skirt_loops": "0", + "sparse_infill_line_width": "0.85", + "support_bottom_interface_spacing": "0.4", + "support_bottom_z_distance": "0.22", + "support_interface_spacing": "0.4", + "support_line_width": "0.82", + "support_object_xy_distance": "0.4", + "support_top_z_distance": "0.22", + "top_shell_layers": "4", + "top_shell_thickness": "0.8", + "top_surface_line_width": "0.82", + "tree_support_tip_diameter": "1.2", + "version": "1.8.0.0", + "wipe_speed": "60%" } \ No newline at end of file diff --git a/resources/profiles/Flashforge/process/0.42mm Draft @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.42mm Draft @FF AD5X 0.6 nozzle.json new file mode 100644 index 0000000000..4f2757e8d8 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.42mm Draft @FF AD5X 0.6 nozzle.json @@ -0,0 +1,25 @@ +{ + "type": "process", + "brim_type": "auto_brim", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge AD5X 0.6 nozzle" + ], + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "infill_wall_overlap": "20%", + "inherits": "0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle", + "is_custom_defined": "0", + "name": "0.42mm Draft @FF AD5X 0.6 nozzle", + "only_one_wall_top": "1", + "prime_tower_brim_width": "5", + "prime_tower_width": "45", + "print_settings_id": "0.42mm Draft @FF AD5X 0.6 nozzle", + "skirt_loops": "0", + "support_bottom_z_distance": "0.3", + "support_top_z_distance": "0.3", + "version": "2.1.1.0" +} diff --git a/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json index 3f27e98251..6e046e419b 100644 --- a/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json @@ -26,5 +26,6 @@ "support_speed": "100", "support_top_z_distance": "0.22", "top_surface_line_width": "0.6", - "version": "2.0.2.0" + "skirt_loops": "0", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json index 4ee2fab87d..cd435f1fec 100644 --- a/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json @@ -28,5 +28,6 @@ "support_speed": "100", "support_top_z_distance": "0.22", "top_surface_line_width": "0.6", - "version": "2.0.2.0" + "skirt_loops": "0", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 HF nozzle.json new file mode 100644 index 0000000000..2fc024a3ac --- /dev/null +++ b/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 HF nozzle.json @@ -0,0 +1,72 @@ +{ + "bottom_solid_infill_flow_ratio": "0.96", + "bridge_acceleration": "3000", + "bridge_flow": "0.98", + "brim_type": "auto_brim", + "enable_arc_fitting": "1", + "enable_prime_tower": "1", + "exclude_object": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_support": "1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.6 HF nozzle" + ], + "gap_infill_speed": "70", + "infill_wall_overlap": "15%", + "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "initial_layer_acceleration": "800", + "initial_layer_infill_speed": "60", + "initial_layer_line_width": "0.62", + "initial_layer_print_height": "0.3", + "initial_layer_speed": "40", + "inner_wall_acceleration": "10000", + "inner_wall_line_width": "0.62", + "internal_bridge_flow": "0.98", + "internal_bridge_speed": "35", + "internal_solid_infill_acceleration": "10000", + "internal_solid_infill_line_width": "0.62", + "internal_solid_infill_speed": "150", + "is_custom_defined": "0", + "layer_height": "0.42", + "line_width": "0.62", + "name": "0.42mm Standard @FF G4P 0.6 HF nozzle", + "outer_wall_acceleration": "5000", + "outer_wall_line_width": "0.62", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "12", + "overhang_speed_classic": "1", + "prime_tower_width": "45", + "prime_volume": "45", + "print_settings_id": "0.42mm Standard @FF G4P 0.6 HF nozzle", + "reduce_infill_retraction": "0", + "role_based_wipe_speed": "0", + "seam_gap": "10%", + "skirt_loops": "0", + "small_perimeter_speed": "35", + "small_perimeter_threshold": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_line_width": "0.62", + "sparse_infill_speed": "220", + "support_bottom_z_distance": "0.3", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_speed": "80", + "support_interface_top_layers": "3", + "support_line_width": "0.62", + "support_speed": "105", + "thick_internal_bridges": "0", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "0.96", + "top_surface_acceleration": "3000", + "top_surface_line_width": "0.62", + "travel_acceleration": "30000", + "travel_speed": "550", + "version": "2.1.1.0", + "wipe_speed": "500", + "wipe_tower_bridging": "10", + "wipe_tower_max_purge_speed": "120" +} diff --git a/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 nozzle.json new file mode 100644 index 0000000000..86e29d4206 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 nozzle.json @@ -0,0 +1,64 @@ +{ + "bottom_solid_infill_flow_ratio": "0.96", + "bridge_acceleration": "3000", + "brim_type": "auto_brim", + "enable_prime_tower": "1", + "exclude_object": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_support": "1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.6 nozzle" + ], + "infill_wall_overlap": "15%", + "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "initial_layer_acceleration": "800", + "initial_layer_infill_speed": "60", + "initial_layer_line_width": "0.62", + "initial_layer_print_height": "0.3", + "initial_layer_speed": "40", + "initial_layer_travel_speed": "600", + "inner_wall_acceleration": "10000", + "inner_wall_line_width": "0.62", + "internal_bridge_flow": "0.96", + "internal_bridge_speed": "35", + "internal_solid_infill_acceleration": "8000", + "internal_solid_infill_line_width": "0.62", + "internal_solid_infill_speed": "120", + "is_custom_defined": "0", + "layer_height": "0.42", + "line_width": "0.62", + "name": "0.42mm Standard @FF G4P 0.6 nozzle", + "outer_wall_line_width": "0.62", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "12", + "overhang_speed_classic": "1", + "prime_tower_width": "45", + "prime_volume": "45", + "print_settings_id": "0.42mm Standard @FF G4P 0.6 nozzle", + "role_based_wipe_speed": "0", + "seam_gap": "10%", + "skirt_loops": "0", + "small_perimeter_speed": "35", + "sparse_infill_acceleration": "100%", + "sparse_infill_line_width": "0.62", + "sparse_infill_speed": "220", + "support_bottom_z_distance": "0.3", + "support_interface_filament": "0", + "support_line_width": "0.62", + "support_speed": "70", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "0.96", + "top_surface_acceleration": "3000", + "top_surface_line_width": "0.62", + "top_surface_speed": "100", + "travel_acceleration": "20000", + "travel_speed": "550", + "version": "2.1.1.0", + "wipe_speed": "50", + "wipe_tower_bridging": "10", + "wipe_tower_max_purge_speed": "120" +} diff --git a/resources/profiles/Flashforge/process/0.48mm Standard @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/process/0.48mm Standard @FF G4P 0.8 HF nozzle.json new file mode 100644 index 0000000000..f9392951c9 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.48mm Standard @FF G4P 0.8 HF nozzle.json @@ -0,0 +1,64 @@ +{ + "bottom_solid_infill_flow_ratio": "0.96", + "bridge_acceleration": "3000", + "brim_type": "auto_brim", + "enable_prime_tower": "1", + "exclude_object": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_support": "1", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.8 HF nozzle" + ], + "infill_wall_overlap": "15%", + "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "initial_layer_acceleration": "800", + "initial_layer_infill_speed": "60", + "initial_layer_line_width": "0.82", + "initial_layer_print_height": "0.3", + "initial_layer_speed": "40", + "initial_layer_travel_speed": "600", + "inner_wall_acceleration": "10000", + "inner_wall_line_width": "0.82", + "internal_bridge_flow": "0.96", + "internal_bridge_speed": "35", + "internal_solid_infill_acceleration": "8000", + "internal_solid_infill_line_width": "0.82", + "internal_solid_infill_speed": "120", + "is_custom_defined": "0", + "layer_height": "0.48", + "line_width": "0.82", + "name": "0.48mm Standard @FF G4P 0.8 HF nozzle", + "outer_wall_line_width": "0.82", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "12", + "overhang_speed_classic": "1", + "prime_tower_width": "45", + "prime_volume": "100", + "print_settings_id": "0.48mm Standard @FF G4P 0.8 HF nozzle", + "role_based_wipe_speed": "0", + "seam_gap": "8%", + "skirt_loops": "0", + "small_perimeter_speed": "35", + "sparse_infill_acceleration": "100%", + "sparse_infill_line_width": "0.82", + "sparse_infill_speed": "220", + "support_bottom_z_distance": "0.25", + "support_interface_filament": "0", + "support_line_width": "0.82", + "support_speed": "70", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "0.96", + "top_surface_acceleration": "3000", + "top_surface_line_width": "0.82", + "top_surface_speed": "100", + "travel_acceleration": "20000", + "travel_speed": "550", + "version": "2.1.1.0", + "wipe_speed": "50", + "wipe_tower_bridging": "10", + "wipe_tower_max_purge_speed": "120" +} diff --git a/resources/profiles/Flashforge/process/0.56mm Draft @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/process/0.56mm Draft @FF AD5X 0.8 nozzle.json new file mode 100644 index 0000000000..d716b779e9 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.56mm Draft @FF AD5X 0.8 nozzle.json @@ -0,0 +1,29 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge AD5X 0.8 nozzle" + ], + "enable_prime_tower": "1", + "exclude_object": "1", + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "infill_wall_overlap": "20%", + "inherits": "0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle", + "internal_bridge_speed": "35", + "is_custom_defined": "0", + "name": "0.56mm Draft @FF AD5X 0.8 nozzle", + "only_one_wall_top": "1", + "prime_tower_brim_width": "5", + "prime_tower_width": "45", + "prime_volume": "100", + "print_settings_id": "0.56mm Draft @FF AD5X 0.8 nozzle", + "solid_infill_direction": "0", + "support_bottom_z_distance": "0.3", + "support_top_z_distance": "0.3", + "thick_internal_bridges": "0", + "top_shell_layers": "4", + "top_shell_thickness": "0", + "version": "2.1.1.0" +} From 1fede3fa346c34b6cfe5e5ec238045ecd25d2715 Mon Sep 17 00:00:00 2001 From: RikshaDriver Date: Thu, 20 Feb 2025 12:00:34 +1100 Subject: [PATCH 082/129] Reorganized Filaments into Vendor specific folders --- resources/profiles/Flashforge.json | 300 +++++++++--------- .../FlashForge PC @FF G4P 0.6 HF nozzle.json | 0 .../FlashForge PC @FF G4P 0.6 nozzle.json | 0 .../FlashForge PC @FF G4P 0.8 HF nozzle.json | 0 .../FlashForge PPS @FF G4P 0.6 nozzle.json | 0 .../FlashForge PPS @FF G4P 0.8 HF nozzle.json | 0 .../FlashForge PPS-CF @FF G4P 0.6 nozzle.json | 0 .../Flashforge ABS @FF AD3.json | 0 ...hforge ABS Basic @FF AD5M 0.25 nozzle.json | 0 ...hforge ABS Basic @FF AD5X 0.25 nozzle.json | 0 ...shforge ABS Basic @FF AD5X 0.6 nozzle.json | 0 ...shforge ABS Basic @FF AD5X 0.8 nozzle.json | 0 .../Flashforge ABS Basic @FF AD5X.json | 0 ...shforge ABS Basic @FF G4P 0.25 nozzle.json | 0 ...forge ABS Basic @FF G4P 0.6 HF nozzle.json | 0 ...ashforge ABS Basic @FF G4P 0.6 nozzle.json | 0 ...forge ABS Basic @FF G4P 0.8 HF nozzle.json | 0 .../Flashforge ABS Basic @FF G4P HF.json | 0 .../Flashforge ABS Basic @FF G4P.json | 0 .../Flashforge ABS Basic @G3U.json | 0 .../Flashforge ABS Basic.json | 0 .../Flashforge ABS-CF @FF G4P 0.6 nozzle.json | 0 .../Flashforge ABS-CF @FF G4P.json | 0 ...hforge ASA Basic @FF AD5M 0.25 nozzle.json | 0 ...hforge ASA Basic @FF AD5X 0.25 nozzle.json | 0 ...shforge ASA Basic @FF AD5X 0.6 nozzle.json | 0 ...shforge ASA Basic @FF AD5X 0.8 nozzle.json | 0 .../Flashforge ASA Basic @FF AD5X.json | 0 ...shforge ASA Basic @FF G4P 0.25 nozzle.json | 0 ...forge ASA Basic @FF G4P 0.6 HF nozzle.json | 0 ...ashforge ASA Basic @FF G4P 0.6 nozzle.json | 0 ...forge ASA Basic @FF G4P 0.8 HF nozzle.json | 0 .../Flashforge ASA Basic @FF G4P HF.json | 0 .../Flashforge ASA Basic @FF G4P.json | 0 .../Flashforge ASA Basic @G3U.json | 0 .../Flashforge ASA Basic.json | 0 .../{ => Flashforge}/Flashforge ASA-CF.json | 0 .../Flashforge HIPS @FF G4P 0.6 nozzle.json | 0 ...Flashforge HIPS @FF G4P 0.8 HF nozzle.json | 0 .../Flashforge HIPS @FF G4P HF.json | 0 .../Flashforge HIPS @FF G4P.json | 0 .../Flashforge HIPS @G3U.json | 0 ...ashforge HS PETG @FF AD5M 0.25 nozzle.json | 0 ...ashforge HS PETG @FF AD5X 0.25 nozzle.json | 0 ...lashforge HS PETG @FF AD5X 0.6 nozzle.json | 0 ...lashforge HS PETG @FF AD5X 0.8 nozzle.json | 0 .../Flashforge HS PETG @FF AD5X.json | 0 ...lashforge HS PETG @FF G4P 0.25 nozzle.json | 0 ...shforge HS PETG @FF G4P 0.6 HF nozzle.json | 0 ...Flashforge HS PETG @FF G4P 0.6 nozzle.json | 0 ...shforge HS PETG @FF G4P 0.8 HF nozzle.json | 0 .../Flashforge HS PETG @FF G4P HF.json | 0 .../Flashforge HS PETG @FF G4P.json | 0 .../Flashforge HS PETG @G3U.json | 0 .../{ => Flashforge}/Flashforge HS PETG.json | 0 ...lashforge HS PLA @FF AD5X 0.25 nozzle.json | 0 ...Flashforge HS PLA @FF AD5X 0.6 nozzle.json | 0 ...Flashforge HS PLA @FF AD5X 0.8 nozzle.json | 0 .../Flashforge HS PLA @FF AD5X.json | 0 ...Flashforge HS PLA @FF G4P 0.25 nozzle.json | 0 ...ashforge HS PLA @FF G4P 0.6 HF nozzle.json | 0 .../Flashforge HS PLA @FF G4P 0.6 nozzle.json | 0 ...ashforge HS PLA @FF G4P 0.8 HF nozzle.json | 0 .../Flashforge HS PLA @FF G4P HF.json | 0 .../Flashforge HS PLA @FF G4P.json | 0 .../Flashforge HS PLA @G3U.json | 0 ...HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json | 0 ...Flashforge HS PLA Burnt Ti @FF G4P HF.json | 0 ...rge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json | 0 ... HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json | 0 .../{ => Flashforge}/Flashforge HS PLA.json | 0 .../Flashforge PA @FF G4P 0.6 HF nozzle.json | 0 .../Flashforge PA @FF G4P HF.json | 0 .../Flashforge PA @FF G4P.json | 0 .../Flashforge PA-CF @FF G4P.json | 0 .../{ => Flashforge}/Flashforge PA12-CF.json | 0 .../{ => Flashforge}/Flashforge PA6-CF.json | 0 .../{ => Flashforge}/Flashforge PA66-CF.json | 0 .../Flashforge PAHT-CF @FF G4P.json | 0 .../Flashforge PET @FF G4P.json | 0 .../Flashforge PET-CF @FF G4P.json | 0 .../{ => Flashforge}/Flashforge PET-CF.json | 0 .../Flashforge PETG @FF AD3.json | 0 ...forge PETG Basic @FF AD5M 0.25 nozzle.json | 0 .../Flashforge PETG Basic @G3U.json | 0 .../Flashforge PETG Basic.json | 0 ...shforge PETG Pro @FF AD5M 0.25 nozzle.json | 0 ...shforge PETG Pro @FF AD5X 0.25 nozzle.json | 0 ...ashforge PETG Pro @FF AD5X 0.6 nozzle.json | 0 ...ashforge PETG Pro @FF AD5X 0.8 nozzle.json | 0 .../Flashforge PETG Pro @FF AD5X.json | 0 ...ashforge PETG Pro @FF G4P 0.25 nozzle.json | 0 ...hforge PETG Pro @FF G4P 0.6 HF nozzle.json | 0 ...lashforge PETG Pro @FF G4P 0.6 nozzle.json | 0 ...hforge PETG Pro @FF G4P 0.8 HF nozzle.json | 0 .../Flashforge PETG Pro @FF G4P HF.json | 0 .../Flashforge PETG Pro @FF G4P.json | 0 .../Flashforge PETG Pro @G3U.json | 0 .../{ => Flashforge}/Flashforge PETG Pro.json | 0 ...PETG Transparent @FF AD5M 0.25 nozzle.json | 0 ...PETG Transparent @FF AD5X 0.25 nozzle.json | 0 ... PETG Transparent @FF AD5X 0.6 nozzle.json | 0 ... PETG Transparent @FF AD5X 0.8 nozzle.json | 0 .../Flashforge PETG Transparent @FF AD5X.json | 0 ... PETG Transparent @FF G4P 0.25 nozzle.json | 0 ...ETG Transparent @FF G4P 0.6 HF nozzle.json | 0 ...e PETG Transparent @FF G4P 0.6 nozzle.json | 0 ...ETG Transparent @FF G4P 0.8 HF nozzle.json | 0 ...lashforge PETG Transparent @FF G4P HF.json | 0 .../Flashforge PETG Transparent @FF G4P.json | 0 .../Flashforge PETG Transparent @G3U.json | 0 .../Flashforge PETG Transparent.json | 0 ...lashforge PETG-CF @FF AD5X 0.6 nozzle.json | 0 ...lashforge PETG-CF @FF AD5X 0.8 nozzle.json | 0 .../Flashforge PETG-CF @FF AD5X.json | 0 ...Flashforge PETG-CF @FF G4P 0.6 nozzle.json | 0 .../Flashforge PETG-CF @FF G4P.json | 0 .../Flashforge PETG-CF @G3U.json | 0 .../{ => Flashforge}/Flashforge PETG-CF.json | 0 .../Flashforge PLA @FF AD3.json | 0 ...hforge PLA Basic @FF AD5M 0.25 nozzle.json | 0 ...hforge PLA Basic @FF AD5X 0.25 nozzle.json | 0 ...shforge PLA Basic @FF AD5X 0.6 nozzle.json | 0 ...shforge PLA Basic @FF AD5X 0.8 nozzle.json | 0 .../Flashforge PLA Basic @FF AD5X.json | 0 ...shforge PLA Basic @FF G4P 0.25 nozzle.json | 0 ...forge PLA Basic @FF G4P 0.6 HF nozzle.json | 0 ...ashforge PLA Basic @FF G4P 0.6 nozzle.json | 0 ...forge PLA Basic @FF G4P 0.8 HF nozzle.json | 0 .../Flashforge PLA Basic @FF G4P HF.json | 0 .../Flashforge PLA Basic @FF G4P.json | 0 .../Flashforge PLA Basic @G3U.json | 0 .../Flashforge PLA Basic.json | 0 ...forge PLA Buint Ti @FF G4P 0.6 nozzle.json | 0 ...forge PLA Buint Ti @FF G4P 0.8 nozzle.json | 0 ...PLA Color Change @FF AD5M 0.25 nozzle.json | 0 ...PLA Color Change @FF AD5X 0.25 nozzle.json | 0 ... PLA Color Change @FF AD5X 0.6 nozzle.json | 0 ... PLA Color Change @FF AD5X 0.8 nozzle.json | 0 .../Flashforge PLA Color Change @FF AD5X.json | 0 ... PLA Color Change @FF G4P 0.25 nozzle.json | 0 ...LA Color Change @FF G4P 0.6 HF nozzle.json | 0 ...lashforge PLA Color Change @FF G4P HF.json | 0 .../Flashforge PLA Color Change @FF G4P.json | 0 .../Flashforge PLA Color Change @G3U.json | 0 .../Flashforge PLA Color Change.json | 0 ...forge PLA Galaxy @FF AD5M 0.25 nozzle.json | 0 ...forge PLA Galaxy @FF AD5X 0.25 nozzle.json | 0 ...hforge PLA Galaxy @FF AD5X 0.6 nozzle.json | 0 ...hforge PLA Galaxy @FF AD5X 0.8 nozzle.json | 0 .../Flashforge PLA Galaxy @FF AD5X.json | 0 ...hforge PLA Galaxy @FF G4P 0.25 nozzle.json | 0 ...orge PLA Galaxy @FF G4P 0.6 HF nozzle.json | 0 ...shforge PLA Galaxy @FF G4P 0.6 nozzle.json | 0 ...orge PLA Galaxy @FF G4P 0.8 HF nozzle.json | 0 .../Flashforge PLA Galaxy @FF G4P HF.json | 0 .../Flashforge PLA Galaxy @FF G4P.json | 0 .../Flashforge PLA Galaxy @G3U.json | 0 .../Flashforge PLA Galaxy.json | 0 ...rge PLA Luminous @FF AD5M 0.25 nozzle.json | 0 ...rge PLA Luminous @FF AD5X 0.25 nozzle.json | 0 ...orge PLA Luminous @FF AD5X 0.6 nozzle.json | 0 ...orge PLA Luminous @FF AD5X 0.8 nozzle.json | 0 .../Flashforge PLA Luminous @FF AD5X.json | 0 ...orge PLA Luminous @FF G4P 0.25 nozzle.json | 0 ...ge PLA Luminous @FF G4P 0.6 HF nozzle.json | 0 .../Flashforge PLA Luminous @FF G4P HF.json | 0 .../Flashforge PLA Luminous @FF G4P.json | 0 .../Flashforge PLA Luminous @G3U.json | 0 .../Flashforge PLA Luminous.json | 0 ...hforge PLA Matte @FF AD5M 0.25 nozzle.json | 0 ...hforge PLA Matte @FF AD5X 0.25 nozzle.json | 0 ...shforge PLA Matte @FF AD5X 0.6 nozzle.json | 0 ...shforge PLA Matte @FF AD5X 0.8 nozzle.json | 0 .../Flashforge PLA Matte @FF AD5X.json | 0 ...shforge PLA Matte @FF G4P 0.25 nozzle.json | 0 ...forge PLA Matte @FF G4P 0.6 HF nozzle.json | 0 ...ashforge PLA Matte @FF G4P 0.6 nozzle.json | 0 ...forge PLA Matte @FF G4P 0.8 HF nozzle.json | 0 .../Flashforge PLA Matte @FF G4P HF.json | 0 .../Flashforge PLA Matte @FF G4P.json | 0 .../Flashforge PLA Matte @G3U.json | 0 .../Flashforge PLA Matte.json | 0 ...hforge PLA Metal @FF AD5M 0.25 nozzle.json | 0 ...hforge PLA Metal @FF AD5X 0.25 nozzle.json | 0 ...shforge PLA Metal @FF AD5X 0.6 nozzle.json | 0 ...shforge PLA Metal @FF AD5X 0.8 nozzle.json | 0 .../Flashforge PLA Metal @FF AD5X.json | 0 ...shforge PLA Metal @FF G4P 0.25 nozzle.json | 0 ...forge PLA Metal @FF G4P 0.6 HF nozzle.json | 0 ...ashforge PLA Metal @FF G4P 0.6 nozzle.json | 0 ...forge PLA Metal @FF G4P 0.8 HF nozzle.json | 0 .../Flashforge PLA Metal @FF G4P HF.json | 0 .../Flashforge PLA Metal @FF G4P.json | 0 .../Flashforge PLA Metal @G3U.json | 0 .../Flashforge PLA Metal.json | 0 ...ashforge PLA Pro @FF AD5M 0.25 nozzle.json | 0 ...ashforge PLA Pro @FF AD5X 0.25 nozzle.json | 0 ...lashforge PLA Pro @FF AD5X 0.6 nozzle.json | 0 ...lashforge PLA Pro @FF AD5X 0.8 nozzle.json | 0 .../Flashforge PLA Pro @FF AD5X.json | 0 ...lashforge PLA Pro @FF G4P 0.25 nozzle.json | 0 ...shforge PLA Pro @FF G4P 0.6 HF nozzle.json | 0 ...Flashforge PLA Pro @FF G4P 0.6 nozzle.json | 0 ...shforge PLA Pro @FF G4P 0.8 HF nozzle.json | 0 .../Flashforge PLA Pro @FF G4P HF.json | 0 .../Flashforge PLA Pro @FF G4P.json | 0 .../Flashforge PLA Pro @G3U.json | 0 .../{ => Flashforge}/Flashforge PLA Pro.json | 0 .../Flashforge PLA Silk @G3U.json | 0 ...shforge PLA Silk @FF AD5M 0.25 nozzle.json | 0 ...shforge PLA Silk @FF AD5X 0.25 nozzle.json | 0 ...ashforge PLA Silk @FF AD5X 0.6 nozzle.json | 0 ...ashforge PLA Silk @FF AD5X 0.8 nozzle.json | 0 .../Flashforge PLA Silk @FF AD5X.json | 0 ...ashforge PLA Silk @FF G4P 0.25 nozzle.json | 0 ...hforge PLA Silk @FF G4P 0.6 HF nozzle.json | 0 ...lashforge PLA Silk @FF G4P 0.6 nozzle.json | 0 ...hforge PLA Silk @FF G4P 0.8 HF nozzle.json | 0 .../Flashforge PLA Silk @FF G4P HF.json | 0 .../Flashforge PLA Silk @FF G4P.json | 0 .../{ => Flashforge}/Flashforge PLA Silk.json | 0 ...orge PLA Sparkle @FF AD5M 0.25 nozzle.json | 0 ...orge PLA Sparkle @FF AD5X 0.25 nozzle.json | 0 ...forge PLA Sparkle @FF AD5X 0.6 nozzle.json | 0 ...forge PLA Sparkle @FF AD5X 0.8 nozzle.json | 0 .../Flashforge PLA Sparkle @FF AD5X.json | 0 ...forge PLA Sparkle @FF G4P 0.25 nozzle.json | 0 ...rge PLA Sparkle @FF G4P 0.6 HF nozzle.json | 0 .../Flashforge PLA Sparkle @FF G4P HF.json | 0 .../Flashforge PLA Sparkle @FF G4P.json | 0 .../Flashforge PLA Sparkle @G3U.json | 0 .../Flashforge PLA Sparkle.json | 0 ...Flashforge PLA-CF @FF AD5X 0.6 nozzle.json | 0 ...Flashforge PLA-CF @FF AD5X 0.8 nozzle.json | 0 .../Flashforge PLA-CF @FF AD5X.json | 0 .../Flashforge PLA-CF @FF G4P 0.6 nozzle.json | 0 .../Flashforge PLA-CF @FF G4P.json | 0 .../Flashforge PLA-CF @G3U.json | 0 .../{ => Flashforge}/Flashforge PLA-CF.json | 0 .../{ => Flashforge}/Flashforge PPA-CF.json | 0 .../{ => Flashforge}/Flashforge PPA-GF.json | 0 .../Flashforge PPS @FF G4P.json | 0 .../Flashforge PPS-CF @FF G4P.json | 0 .../{ => Flashforge}/Flashforge PPS-CF.json | 0 .../{ => Flashforge}/Flashforge PVA @G3U.json | 0 ...lashforge TPU 64D @FF AD5X 0.6 nozzle.json | 0 ...lashforge TPU 64D @FF AD5X 0.8 nozzle.json | 0 .../Flashforge TPU 64D @FF AD5X.json | 0 ...lashforge TPU 95A @FF AD5X 0.6 nozzle.json | 0 ...lashforge TPU 95A @FF AD5X 0.8 nozzle.json | 0 .../Flashforge TPU 95A @FF AD5X.json | 0 ...shforge TPU 95A @FF G4P 0.6 HF nozzle.json | 0 ...Flashforge TPU 95A @FF G4P 0.6 nozzle.json | 0 ...shforge TPU 95A @FF G4P 0.8 HF nozzle.json | 0 .../Flashforge TPU 95A @FF G4P.json | 0 .../{ => Flashforge}/Flashforge TPU 95A.json | 0 .../FusRock Generic NexPA-CF25.json | 0 ...sRock Generic PAHT-CF @G3U 0.6 Nozzle.json | 0 .../FusRock Generic PAHT-CF.json | 0 .../FusRock Generic PAHT-GF.json | 0 ...usRock Generic PET-CF @G3U 0.6 Nozzle.json | 0 .../{ => FusRock}/FusRock Generic PET-CF.json | 0 .../{ => FusRock}/FusRock Generic PET-GF.json | 0 ...sRock Generic S-Multi @G3U 0.6 Nozzle.json | 0 .../FusRock Generic S-Multi.json | 0 ...usRock Generic S-PAHT @G3U 0.6 Nozzle.json | 0 .../{ => FusRock}/FusRock Generic S-PAHT.json | 0 .../FusRock PAHT @FF G4P 0.6 nozzle.json | 0 .../FusRock PAHT @FF G4P 0.8 HF nozzle.json | 0 .../FusRock PAHT-CF @FF G4P 0.6 nozzle.json | 0 .../FusRock PET @FF G4P 0.6 HF nozzle.json | 0 .../FusRock PET @FF G4P 0.6 nozzle.json | 0 .../FusRock PET @FF G4P 0.8 HF nozzle.json | 0 .../FusRock PET-CF @FF G4P 0.6 nozzle.json | 0 .../Polymaker CoPA @FF G4P 0.6 HF nozzle.json | 0 .../Polymaker CoPA @FF G4P 0.6 nozzle.json | 0 .../Polymaker CoPA @FF G4P 0.8 HF nozzle.json | 0 .../Polymaker Generic CoPA.json | 0 .../{ => Polymaker}/Polymaker Generic S1.json | 0 280 files changed, 150 insertions(+), 150 deletions(-) rename resources/profiles/Flashforge/filament/{ => Flashforge}/FlashForge PC @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/FlashForge PC @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/FlashForge PC @FF G4P 0.8 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/FlashForge PPS @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/FlashForge PPS @FF G4P 0.8 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/FlashForge PPS-CF @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ABS @FF AD3.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ABS Basic @FF AD5X.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ABS Basic @FF G4P 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ABS Basic @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ABS Basic @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ABS Basic @FF G4P 0.8 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ABS Basic @FF G4P HF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ABS Basic @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ABS Basic @G3U.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ABS Basic.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ABS-CF @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ABS-CF @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ASA Basic @FF AD5X.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ASA Basic @FF G4P 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ASA Basic @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ASA Basic @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ASA Basic @FF G4P 0.8 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ASA Basic @FF G4P HF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ASA Basic @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ASA Basic @G3U.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ASA Basic.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge ASA-CF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HIPS @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HIPS @FF G4P 0.8 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HIPS @FF G4P HF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HIPS @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HIPS @G3U.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PETG @FF AD5M 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PETG @FF AD5X 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PETG @FF AD5X 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PETG @FF AD5X 0.8 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PETG @FF AD5X.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PETG @FF G4P 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PETG @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PETG @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PETG @FF G4P 0.8 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PETG @FF G4P HF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PETG @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PETG @G3U.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PETG.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PLA @FF AD5X 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PLA @FF AD5X 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PLA @FF AD5X 0.8 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PLA @FF AD5X.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PLA @FF G4P 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PLA @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PLA @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PLA @FF G4P 0.8 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PLA @FF G4P HF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PLA @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PLA @G3U.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PLA Burnt Ti @FF G4P HF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge HS PLA.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PA @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PA @FF G4P HF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PA @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PA-CF @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PA12-CF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PA6-CF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PA66-CF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PAHT-CF @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PET @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PET-CF @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PET-CF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG @FF AD3.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Basic @G3U.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Basic.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Pro @FF AD5X.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Pro @FF G4P 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Pro @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Pro @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Pro @FF G4P 0.8 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Pro @FF G4P HF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Pro @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Pro @G3U.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Pro.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Transparent @FF AD5X.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Transparent @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Transparent @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Transparent @FF G4P 0.8 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Transparent @FF G4P HF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Transparent @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Transparent @G3U.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG Transparent.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG-CF @FF AD5X.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG-CF @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG-CF @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG-CF @G3U.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PETG-CF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA @FF AD3.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Basic @FF AD5X.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Basic @FF G4P 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Basic @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Basic @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Basic @FF G4P 0.8 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Basic @FF G4P HF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Basic @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Basic @G3U.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Basic.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Buint Ti @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Buint Ti @FF G4P 0.8 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Color Change @FF AD5X.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Color Change @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Color Change @FF G4P HF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Color Change @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Color Change @G3U.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Color Change.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Galaxy @FF AD5X.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Galaxy @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Galaxy @FF G4P HF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Galaxy @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Galaxy @G3U.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Galaxy.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Luminous @FF AD5X.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Luminous @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Luminous @FF G4P HF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Luminous @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Luminous @G3U.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Luminous.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Matte @FF AD5X.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Matte @FF G4P 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Matte @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Matte @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Matte @FF G4P 0.8 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Matte @FF G4P HF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Matte @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Matte @G3U.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Matte.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Metal @FF AD5X.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Metal @FF G4P 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Metal @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Metal @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Metal @FF G4P 0.8 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Metal @FF G4P HF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Metal @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Metal @G3U.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Metal.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Pro @FF AD5X.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Pro @FF G4P 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Pro @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Pro @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Pro @FF G4P 0.8 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Pro @FF G4P HF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Pro @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Pro @G3U.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Pro.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Silk @G3U.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Silk @FF AD5X.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Silk @FF G4P 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Silk @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Silk @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Silk @FF G4P 0.8 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Silk @FF G4P HF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Silk @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Silk.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Sparkle @FF AD5X.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Sparkle @FF G4P HF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Sparkle @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Sparkle @G3U.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA Sparkle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA-CF @FF AD5X.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA-CF @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA-CF @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA-CF @G3U.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PLA-CF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PPA-CF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PPA-GF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PPS @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PPS-CF @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PPS-CF.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge PVA @G3U.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge TPU 64D @FF AD5X 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge TPU 64D @FF AD5X 0.8 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge TPU 64D @FF AD5X.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge TPU 95A @FF AD5X.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge TPU 95A @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge TPU 95A @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge TPU 95A @FF G4P 0.8 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge TPU 95A @FF G4P.json (100%) rename resources/profiles/Flashforge/filament/{ => Flashforge}/Flashforge TPU 95A.json (100%) rename resources/profiles/Flashforge/filament/{ => FusRock}/FusRock Generic NexPA-CF25.json (100%) rename resources/profiles/Flashforge/filament/{ => FusRock}/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => FusRock}/FusRock Generic PAHT-CF.json (100%) rename resources/profiles/Flashforge/filament/{ => FusRock}/FusRock Generic PAHT-GF.json (100%) rename resources/profiles/Flashforge/filament/{ => FusRock}/FusRock Generic PET-CF @G3U 0.6 Nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => FusRock}/FusRock Generic PET-CF.json (100%) rename resources/profiles/Flashforge/filament/{ => FusRock}/FusRock Generic PET-GF.json (100%) rename resources/profiles/Flashforge/filament/{ => FusRock}/FusRock Generic S-Multi @G3U 0.6 Nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => FusRock}/FusRock Generic S-Multi.json (100%) rename resources/profiles/Flashforge/filament/{ => FusRock}/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => FusRock}/FusRock Generic S-PAHT.json (100%) rename resources/profiles/Flashforge/filament/{ => FusRock}/FusRock PAHT @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => FusRock}/FusRock PAHT @FF G4P 0.8 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => FusRock}/FusRock PAHT-CF @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => FusRock}/FusRock PET @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => FusRock}/FusRock PET @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => FusRock}/FusRock PET @FF G4P 0.8 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => FusRock}/FusRock PET-CF @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Polymaker}/Polymaker CoPA @FF G4P 0.6 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Polymaker}/Polymaker CoPA @FF G4P 0.6 nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Polymaker}/Polymaker CoPA @FF G4P 0.8 HF nozzle.json (100%) rename resources/profiles/Flashforge/filament/{ => Polymaker}/Polymaker Generic CoPA.json (100%) rename resources/profiles/Flashforge/filament/{ => Polymaker}/Polymaker Generic S1.json (100%) diff --git a/resources/profiles/Flashforge.json b/resources/profiles/Flashforge.json index 24a53d97c6..3407adb643 100644 --- a/resources/profiles/Flashforge.json +++ b/resources/profiles/Flashforge.json @@ -359,67 +359,67 @@ }, { "name": "Flashforge ABS", - "sub_path": "filament/Flashforge ABS @FF AD3.json" + "sub_path": "filament/Flashforge/Flashforge ABS @FF AD3.json" }, { "name": "Flashforge PETG", - "sub_path": "filament/Flashforge PETG @FF AD3.json" + "sub_path": "filament/Flashforge/Flashforge PETG @FF AD3.json" }, { "name": "Flashforge PLA", - "sub_path": "filament/Flashforge PLA @FF AD3.json" + "sub_path": "filament/Flashforge/Flashforge PLA @FF AD3.json" }, { "name": "Polymaker Generic S1", - "sub_path": "filament/Polymaker Generic S1.json" + "sub_path": "filament/Polymaker/Polymaker Generic S1.json" }, { "name": "Polymaker Generic CoPA", - "sub_path": "filament/Polymaker Generic CoPA.json" + "sub_path": "filament/Polymaker/Polymaker Generic CoPA.json" }, { "name": "FusRock Generic S-PAHT", - "sub_path": "filament/FusRock Generic S-PAHT.json" + "sub_path": "filament/FusRock/FusRock Generic S-PAHT.json" }, { "name": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", - "sub_path": "filament/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json" + "sub_path": "filament/FusRock/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json" }, { "name": "FusRock Generic S-Multi", - "sub_path": "filament/FusRock Generic S-Multi.json" + "sub_path": "filament/FusRock/FusRock Generic S-Multi.json" }, { "name": "FusRock Generic S-Multi @G3U 0.6 Nozzle", - "sub_path": "filament/FusRock Generic S-Multi @G3U 0.6 Nozzle.json" + "sub_path": "filament/FusRock/FusRock Generic S-Multi @G3U 0.6 Nozzle.json" }, { "name": "FusRock Generic NexPA-CF25", - "sub_path": "filament/FusRock Generic NexPA-CF25.json" + "sub_path": "filament/FusRock/FusRock Generic NexPA-CF25.json" }, { "name": "FusRock Generic PAHT-CF", - "sub_path": "filament/FusRock Generic PAHT-CF.json" + "sub_path": "filament/FusRock/FusRock Generic PAHT-CF.json" }, { "name": "FusRock Generic PAHT-GF", - "sub_path": "filament/FusRock Generic PAHT-GF.json" + "sub_path": "filament/FusRock/FusRock Generic PAHT-GF.json" }, { "name": "FusRock Generic PAHT-CF @G3U 0.6 Nozzle", - "sub_path": "filament/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json" + "sub_path": "filament/FusRock/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json" }, { "name": "FusRock Generic PET-CF", - "sub_path": "filament/FusRock Generic PET-CF.json" + "sub_path": "filament/FusRock/FusRock Generic PET-CF.json" }, { "name": "FusRock Generic PET-GF", - "sub_path": "filament/FusRock Generic PET-GF.json" + "sub_path": "filament/FusRock/FusRock Generic PET-GF.json" }, { "name": "FusRock Generic PET-CF @G3U 0.6 Nozzle", - "sub_path": "filament/FusRock Generic PET-CF @G3U 0.6 Nozzle.json" + "sub_path": "filament/FusRock/FusRock Generic PET-CF @G3U 0.6 Nozzle.json" }, { "name": "Flashforge Generic ABS @G3U", @@ -499,539 +499,539 @@ }, { "name": "Flashforge HS PETG", - "sub_path":"filament/Flashforge HS PETG.json" + "sub_path":"filament/Flashforge/Flashforge HS PETG.json" }, { "name": "Flashforge HS PLA", - "sub_path":"filament/Flashforge HS PLA.json" + "sub_path":"filament/Flashforge/Flashforge HS PLA.json" }, { "name": "Flashforge PETG Basic", - "sub_path":"filament/Flashforge PETG Basic.json" + "sub_path":"filament/Flashforge/Flashforge PETG Basic.json" }, { "name": "Flashforge PETG Pro", - "sub_path":"filament/Flashforge PETG Pro.json" + "sub_path":"filament/Flashforge/Flashforge PETG Pro.json" }, { "name": "Flashforge PETG Transparent", - "sub_path":"filament/Flashforge PETG Transparent.json" + "sub_path":"filament/Flashforge/Flashforge PETG Transparent.json" }, { "name": "Flashforge PETG-CF", - "sub_path":"filament/Flashforge PETG-CF.json" + "sub_path":"filament/Flashforge/Flashforge PETG-CF.json" }, { "name": "Flashforge PLA Basic", - "sub_path":"filament/Flashforge PLA Basic.json" + "sub_path":"filament/Flashforge/Flashforge PLA Basic.json" }, { "name": "Flashforge PLA Color Change", - "sub_path":"filament/Flashforge PLA Color Change.json" + "sub_path":"filament/Flashforge/Flashforge PLA Color Change.json" }, { "name": "Flashforge PLA Galaxy", - "sub_path":"filament/Flashforge PLA Galaxy.json" + "sub_path":"filament/Flashforge/Flashforge PLA Galaxy.json" }, { "name": "Flashforge PLA Luminous", - "sub_path":"filament/Flashforge PLA Luminous.json" + "sub_path":"filament/Flashforge/Flashforge PLA Luminous.json" }, { "name": "Flashforge PLA Matte", - "sub_path":"filament/Flashforge PLA Matte.json" + "sub_path":"filament/Flashforge/Flashforge PLA Matte.json" }, { "name": "Flashforge PLA Metal", - "sub_path":"filament/Flashforge PLA Metal.json" + "sub_path":"filament/Flashforge/Flashforge PLA Metal.json" }, { "name": "Flashforge PLA Pro", - "sub_path":"filament/Flashforge PLA Pro.json" + "sub_path":"filament/Flashforge/Flashforge PLA Pro.json" }, { "name": "Flashforge PLA Silk", - "sub_path":"filament/Flashforge PLA Silk.json" + "sub_path":"filament/Flashforge/Flashforge PLA Silk.json" }, { "name": "Flashforge PLA Sparkle", - "sub_path":"filament/Flashforge PLA Sparkle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Sparkle.json" }, { "name": "Flashforge PLA-CF", - "sub_path":"filament/Flashforge PLA-CF.json" + "sub_path":"filament/Flashforge/Flashforge PLA-CF.json" }, { "name": "Flashforge TPU 95A", - "sub_path":"filament/Flashforge TPU 95A.json" + "sub_path":"filament/Flashforge/Flashforge TPU 95A.json" }, { "name": "Flashforge ABS Basic @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json" }, { "name": "Flashforge ABS Basic", - "sub_path":"filament/Flashforge ABS Basic.json" + "sub_path":"filament/Flashforge/Flashforge ABS Basic.json" }, { "name": "Flashforge ASA Basic @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json" }, { "name": "Flashforge ASA Basic", - "sub_path":"filament/Flashforge ASA Basic.json" + "sub_path":"filament/Flashforge/Flashforge ASA Basic.json" }, { "name": "Flashforge HS PETG @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge HS PETG @FF AD5M 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge HS PETG @FF AD5M 0.25 nozzle.json" }, { "name": "Flashforge PETG Basic @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json" }, { "name": "Flashforge PETG Pro @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json" }, { "name": "Flashforge PETG Transparent @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json" }, { "name": "Flashforge PLA Basic @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json" }, { "name": "Flashforge PLA Color Change @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json" }, { "name": "Flashforge PLA Galaxy @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json" }, { "name": "Flashforge PLA Luminous @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json" }, { "name": "Flashforge PLA Matte @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json" }, { "name": "Flashforge PLA Metal @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json" }, { "name": "Flashforge PLA Pro @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json" }, { "name": "Flashforge PLA Silk @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json" }, { "name": "Flashforge PLA Sparkle @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json" }, { "name": "Flashforge ASA-CF", - "sub_path":"filament/Flashforge ASA-CF.json" + "sub_path":"filament/Flashforge/Flashforge ASA-CF.json" }, { "name": "Flashforge PA6-CF", - "sub_path":"filament/Flashforge PA6-CF.json" + "sub_path":"filament/Flashforge/Flashforge PA6-CF.json" }, { "name": "Flashforge PA12-CF", - "sub_path":"filament/Flashforge PA12-CF.json" + "sub_path":"filament/Flashforge/Flashforge PA12-CF.json" }, { "name": "Flashforge PA66-CF", - "sub_path":"filament/Flashforge PA66-CF.json" + "sub_path":"filament/Flashforge/Flashforge PA66-CF.json" }, { "name": "Flashforge PET-CF", - "sub_path":"filament/Flashforge PET-CF.json" + "sub_path":"filament/Flashforge/Flashforge PET-CF.json" }, { "name": "Flashforge PPA-CF", - "sub_path":"filament/Flashforge PPA-CF.json" + "sub_path":"filament/Flashforge/Flashforge PPA-CF.json" }, { "name": "Flashforge PPA-GF", - "sub_path":"filament/Flashforge PPA-GF.json" + "sub_path":"filament/Flashforge/Flashforge PPA-GF.json" }, { "name": "Flashforge PPS-CF", - "sub_path":"filament/Flashforge PPS-CF.json" + "sub_path":"filament/Flashforge/Flashforge PPS-CF.json" }, { "name": "Flashforge ABS Basic @G3U", - "sub_path":"filament/Flashforge ABS Basic @G3U.json" + "sub_path":"filament/Flashforge/Flashforge ABS Basic @G3U.json" }, { "name": "Flashforge ASA Basic @G3U", - "sub_path":"filament/Flashforge ASA Basic @G3U.json" + "sub_path":"filament/Flashforge/Flashforge ASA Basic @G3U.json" }, { "name": "Flashforge HIPS @G3U", - "sub_path":"filament/Flashforge HIPS @G3U.json" + "sub_path":"filament/Flashforge/Flashforge HIPS @G3U.json" }, { "name": "Flashforge HS PETG @G3U", - "sub_path":"filament/Flashforge HS PETG @G3U.json" + "sub_path":"filament/Flashforge/Flashforge HS PETG @G3U.json" }, { "name": "Flashforge HS PLA @G3U", - "sub_path":"filament/Flashforge HS PLA @G3U.json" + "sub_path":"filament/Flashforge/Flashforge HS PLA @G3U.json" }, { "name": "Flashforge PETG Basic @G3U", - "sub_path":"filament/Flashforge PETG Basic @G3U.json" + "sub_path":"filament/Flashforge/Flashforge PETG Basic @G3U.json" }, { "name": "Flashforge PETG Pro @G3U", - "sub_path":"filament/Flashforge PETG Pro @G3U.json" + "sub_path":"filament/Flashforge/Flashforge PETG Pro @G3U.json" }, { "name": "Flashforge PETG Transparent @G3U", - "sub_path":"filament/Flashforge PETG Transparent @G3U.json" + "sub_path":"filament/Flashforge/Flashforge PETG Transparent @G3U.json" }, { "name": "Flashforge PETG-CF @G3U", - "sub_path":"filament/Flashforge PETG-CF @G3U.json" + "sub_path":"filament/Flashforge/Flashforge PETG-CF @G3U.json" }, { "name": "Flashforge PLA Basic @G3U", - "sub_path":"filament/Flashforge PLA Basic @G3U.json" + "sub_path":"filament/Flashforge/Flashforge PLA Basic @G3U.json" }, { "name": "Flashforge PLA Color Change @G3U", - "sub_path":"filament/Flashforge PLA Color Change @G3U.json" + "sub_path":"filament/Flashforge/Flashforge PLA Color Change @G3U.json" }, { "name": "Flashforge PLA Galaxy @G3U", - "sub_path":"filament/Flashforge PLA Galaxy @G3U.json" + "sub_path":"filament/Flashforge/Flashforge PLA Galaxy @G3U.json" }, { "name": "Flashforge PLA Luminous @G3U", - "sub_path":"filament/Flashforge PLA Luminous @G3U.json" + "sub_path":"filament/Flashforge/Flashforge PLA Luminous @G3U.json" }, { "name": "Flashforge PLA Matte @G3U", - "sub_path":"filament/Flashforge PLA Matte @G3U.json" + "sub_path":"filament/Flashforge/Flashforge PLA Matte @G3U.json" }, { "name": "Flashforge PLA Metal @G3U", - "sub_path":"filament/Flashforge PLA Metal @G3U.json" + "sub_path":"filament/Flashforge/Flashforge PLA Metal @G3U.json" }, { "name": "Flashforge PLA Pro @G3U", - "sub_path":"filament/Flashforge PLA Pro @G3U.json" + "sub_path":"filament/Flashforge/Flashforge PLA Pro @G3U.json" }, { "name": "Flashforge PLA Silk @G3U", - "sub_path":"filament/Flashforge PLA Silk @G3U.json" + "sub_path":"filament/Flashforge/Flashforge PLA Silk @G3U.json" }, { "name": "Flashforge PLA Sparkle @G3U", - "sub_path":"filament/Flashforge PLA Sparkle @G3U.json" + "sub_path":"filament/Flashforge/Flashforge PLA Sparkle @G3U.json" }, { "name": "Flashforge PLA-CF @G3U", - "sub_path":"filament/Flashforge PLA-CF @G3U.json" + "sub_path":"filament/Flashforge/Flashforge PLA-CF @G3U.json" }, { "name": "Flashforge PVA @G3U", - "sub_path":"filament/Flashforge PVA @G3U.json" + "sub_path":"filament/Flashforge/Flashforge PVA @G3U.json" }, { "name": "Flashforge ABS Basic @FF AD5X", - "sub_path":"filament/Flashforge ABS Basic @FF AD5X.json" + "sub_path":"filament/Flashforge/Flashforge ABS Basic @FF AD5X.json" }, { "name": "Flashforge ASA Basic @FF AD5X", - "sub_path":"filament/Flashforge ASA Basic @FF AD5X.json" + "sub_path":"filament/Flashforge/Flashforge ASA Basic @FF AD5X.json" }, { "name": "Flashforge HS PETG @FF AD5X", - "sub_path":"filament/Flashforge HS PETG @FF AD5X.json" + "sub_path":"filament/Flashforge/Flashforge HS PETG @FF AD5X.json" }, { "name": "Flashforge HS PLA @FF AD5X", - "sub_path":"filament/Flashforge HS PLA @FF AD5X.json" + "sub_path":"filament/Flashforge/Flashforge HS PLA @FF AD5X.json" }, { "name": "Flashforge PETG Pro @FF AD5X", - "sub_path":"filament/Flashforge PETG Pro @FF AD5X.json" + "sub_path":"filament/Flashforge/Flashforge PETG Pro @FF AD5X.json" }, { "name": "Flashforge PETG Transparent @FF AD5X", - "sub_path":"filament/Flashforge PETG Transparent @FF AD5X.json" + "sub_path":"filament/Flashforge/Flashforge PETG Transparent @FF AD5X.json" }, { "name": "Flashforge PETG-CF @FF AD5X", - "sub_path":"filament/Flashforge PETG-CF @FF AD5X.json" + "sub_path":"filament/Flashforge/Flashforge PETG-CF @FF AD5X.json" }, { "name": "Flashforge PLA Basic @FF AD5X", - "sub_path":"filament/Flashforge PLA Basic @FF AD5X.json" + "sub_path":"filament/Flashforge/Flashforge PLA Basic @FF AD5X.json" }, { "name": "Flashforge PLA Color Change @FF AD5X", - "sub_path":"filament/Flashforge PLA Color Change @FF AD5X.json" + "sub_path":"filament/Flashforge/Flashforge PLA Color Change @FF AD5X.json" }, { "name": "Flashforge PLA Galaxy @FF AD5X", - "sub_path":"filament/Flashforge PLA Galaxy @FF AD5X.json" + "sub_path":"filament/Flashforge/Flashforge PLA Galaxy @FF AD5X.json" }, { "name": "Flashforge PLA Luminous @FF AD5X", - "sub_path":"filament/Flashforge PLA Luminous @FF AD5X.json" + "sub_path":"filament/Flashforge/Flashforge PLA Luminous @FF AD5X.json" }, { "name": "Flashforge PLA Matte @FF AD5X", - "sub_path":"filament/Flashforge PLA Matte @FF AD5X.json" + "sub_path":"filament/Flashforge/Flashforge PLA Matte @FF AD5X.json" }, { "name": "Flashforge PLA Metal @FF AD5X", - "sub_path":"filament/Flashforge PLA Metal @FF AD5X.json" + "sub_path":"filament/Flashforge/Flashforge PLA Metal @FF AD5X.json" }, { "name": "Flashforge PLA Pro @FF AD5X", - "sub_path":"filament/Flashforge PLA Pro @FF AD5X.json" + "sub_path":"filament/Flashforge/Flashforge PLA Pro @FF AD5X.json" }, { "name": "Flashforge PLA Silk @FF AD5X", - "sub_path":"filament/Flashforge PLA Silk @FF AD5X.json" + "sub_path":"filament/Flashforge/Flashforge PLA Silk @FF AD5X.json" }, { "name": "Flashforge PLA Sparkle @FF AD5X", - "sub_path":"filament/Flashforge PLA Sparkle @FF AD5X.json" + "sub_path":"filament/Flashforge/Flashforge PLA Sparkle @FF AD5X.json" }, { "name": "Flashforge PLA-CF @FF AD5X", - "sub_path":"filament/Flashforge PLA-CF @FF AD5X.json" + "sub_path":"filament/Flashforge/Flashforge PLA-CF @FF AD5X.json" }, { "name": "Flashforge TPU 95A @FF AD5X", - "sub_path":"filament/Flashforge TPU 95A @FF AD5X.json" + "sub_path":"filament/Flashforge/Flashforge TPU 95A @FF AD5X.json" }, { "name": "Flashforge ABS Basic @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json" }, { "name": "Flashforge ASA Basic @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json" }, { "name": "Flashforge HS PETG @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge HS PETG @FF AD5X 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge HS PETG @FF AD5X 0.25 nozzle.json" }, { "name": "Flashforge HS PLA @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge HS PLA @FF AD5X 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge HS PLA @FF AD5X 0.25 nozzle.json" }, { "name": "Flashforge PETG Pro @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json" }, { "name": "Flashforge PETG Transparent @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json" }, { "name": "Flashforge PLA Basic @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json" }, { "name": "Flashforge PLA Color Change @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json" }, { "name": "Flashforge PLA Galaxy @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json" }, { "name": "Flashforge PLA Luminous @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json" }, { "name": "Flashforge PLA Matte @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json" }, { "name": "Flashforge PLA Metal @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json" }, { "name": "Flashforge PLA Pro @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json" }, { "name": "Flashforge PLA Silk @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json" }, { "name": "Flashforge PLA Sparkle @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json" }, { "name": "Flashforge ABS Basic @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json" }, { "name": "Flashforge ASA Basic @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json" }, { "name": "Flashforge HS PETG @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge HS PETG @FF AD5X 0.6 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge HS PETG @FF AD5X 0.6 nozzle.json" }, { "name": "Flashforge HS PLA @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge HS PLA @FF AD5X 0.6 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge HS PLA @FF AD5X 0.6 nozzle.json" }, { "name": "Flashforge PETG Pro @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json" }, { "name": "Flashforge PETG Transparent @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json" }, { "name": "Flashforge PETG-CF @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json" }, { "name": "Flashforge PLA Basic @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json" }, { "name": "Flashforge PLA Color Change @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json" }, { "name": "Flashforge PLA Galaxy @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json" }, { "name": "Flashforge PLA Luminous @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json" }, { "name": "Flashforge PLA Matte @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json" }, { "name": "Flashforge PLA Metal @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json" }, { "name": "Flashforge PLA Pro @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json" }, { "name": "Flashforge PLA Silk @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json" }, { "name": "Flashforge PLA Sparkle @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json" }, { "name": "Flashforge PLA-CF @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json" }, { "name": "Flashforge TPU 95A @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json" }, { "name": "Flashforge ABS Basic @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json" }, { "name": "Flashforge ASA Basic @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json" }, { "name": "Flashforge HS PETG @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge HS PETG @FF AD5X 0.8 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge HS PETG @FF AD5X 0.8 nozzle.json" }, { "name": "Flashforge HS PLA @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge HS PLA @FF AD5X 0.8 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge HS PLA @FF AD5X 0.8 nozzle.json" }, { "name": "Flashforge PETG Pro @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json" }, { "name": "Flashforge PETG Transparent @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json" }, { "name": "Flashforge PETG-CF @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json" }, { "name": "Flashforge PLA Basic @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json" }, { "name": "Flashforge PLA Color Change @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json" }, { "name": "Flashforge PLA Galaxy @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json" }, { "name": "Flashforge PLA Luminous @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json" }, { "name": "Flashforge PLA Matte @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json" }, { "name": "Flashforge PLA Metal @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json" }, { "name": "Flashforge PLA Pro @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json" }, { "name": "Flashforge PLA Silk @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json" }, { "name": "Flashforge PLA Sparkle @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json" }, { "name": "Flashforge PLA-CF @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json" }, { "name": "Flashforge TPU 95A @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json" }, { "name": "Flashforge TPU 64D @FF AD5X", - "sub_path":"filament/Flashforge TPU 64D @FF AD5X.json" + "sub_path":"filament/Flashforge/Flashforge TPU 64D @FF AD5X.json" }, { "name": "Flashforge TPU 64D @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge TPU 64D @FF AD5X 0.8 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.8 nozzle.json" }, { "name": "Flashforge TPU 64D @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge TPU 64D @FF AD5X 0.6 nozzle.json" + "sub_path":"filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.6 nozzle.json" } ], "machine_list": [ diff --git a/resources/profiles/Flashforge/filament/FlashForge PC @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/FlashForge PC @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/FlashForge PC @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/FlashForge PC @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/FlashForge PC @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.8 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/FlashForge PC @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.8 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/FlashForge PPS @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/FlashForge PPS @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/FlashForge PPS @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS @FF G4P 0.8 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/FlashForge PPS @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS @FF G4P 0.8 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/FlashForge PPS-CF @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS-CF @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/FlashForge PPS-CF @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS-CF @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS @FF AD3.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS @FF AD3.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ABS @FF AD3.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS @FF AD3.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.8 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.8 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P HF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P HF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P HF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @G3U.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ABS Basic @G3U.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @G3U.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ABS Basic.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS-CF @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS-CF @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS-CF @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS-CF @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.8 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.8 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P HF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P HF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P HF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @G3U.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ASA Basic @G3U.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @G3U.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ASA Basic.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic.json diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA-CF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge ASA-CF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA-CF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P 0.8 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P 0.8 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P HF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P HF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P HF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HIPS @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @G3U.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HIPS @G3U.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @G3U.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5M 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5M 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5M 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.8 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.8 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.8 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.8 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P HF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P HF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P HF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @G3U.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PETG @G3U.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @G3U.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PETG.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.8 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.8 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.8 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.8 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P HF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P HF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P HF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @G3U.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PLA @G3U.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @G3U.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti @FF G4P HF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4P HF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti @FF G4P HF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge HS PLA.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PA @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PA @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PA @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P HF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PA @FF G4P HF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P HF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PA @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PA @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PA-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA-CF @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PA-CF @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PA-CF @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PA12-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA12-CF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PA12-CF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PA12-CF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PA6-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA6-CF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PA6-CF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PA6-CF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PA66-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA66-CF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PA66-CF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PA66-CF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PAHT-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PAHT-CF @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PAHT-CF @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PAHT-CF @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PET @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PET @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PET @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PET @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PET-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PET-CF @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PET-CF @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PET-CF @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PET-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PET-CF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PET-CF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PET-CF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG @FF AD3.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG @FF AD3.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG @FF AD3.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG @FF AD3.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Basic @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic @G3U.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Basic @G3U.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic @G3U.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Basic.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Basic.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.8 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.8 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P HF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P HF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P HF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @G3U.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Pro @G3U.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @G3U.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Pro.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.8 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.8 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P HF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P HF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P HF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @G3U.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Transparent @G3U.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @G3U.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG Transparent.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @G3U.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG-CF @G3U.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @G3U.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PETG-CF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA @FF AD3.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA @FF AD3.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA @FF AD3.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA @FF AD3.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.8 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.8 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P HF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P HF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P HF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @G3U.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Basic @G3U.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @G3U.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Basic.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Buint Ti @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Buint Ti @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Buint Ti @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Buint Ti @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Buint Ti @FF G4P 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Buint Ti @FF G4P 0.8 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Buint Ti @FF G4P 0.8 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Buint Ti @FF G4P 0.8 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P HF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P HF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P HF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @G3U.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Color Change @G3U.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @G3U.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Color Change.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P HF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P HF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P HF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @G3U.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @G3U.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @G3U.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Galaxy.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P HF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P HF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P HF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @G3U.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Luminous @G3U.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @G3U.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Luminous.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.8 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.8 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P HF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P HF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P HF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @G3U.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Matte @G3U.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @G3U.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Matte.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.8 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.8 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P HF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P HF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P HF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @G3U.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Metal @G3U.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @G3U.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Metal.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.8 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.8 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P HF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P HF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P HF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @G3U.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Pro @G3U.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @G3U.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Pro.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @G3U.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Silk @G3U.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @G3U.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.8 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.8 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P HF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P HF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P HF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Silk.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P HF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P HF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P HF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @G3U.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @G3U.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @G3U.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA Sparkle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @G3U.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA-CF @G3U.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @G3U.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PLA-CF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PPA-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-CF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PPA-CF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-CF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PPA-GF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-GF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PPA-GF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-GF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PPS @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS-CF @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS-CF @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PPS-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS-CF.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PPS-CF.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS-CF.json diff --git a/resources/profiles/Flashforge/filament/Flashforge PVA @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PVA @G3U.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge PVA @G3U.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge PVA @G3U.json diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 64D @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge TPU 64D @FF AD5X 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 64D @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.8 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge TPU 64D @FF AD5X 0.8 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 64D @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge TPU 64D @FF AD5X.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X.json diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X.json diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.8 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.8 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P.json diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A.json similarity index 100% rename from resources/profiles/Flashforge/filament/Flashforge TPU 95A.json rename to resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A.json diff --git a/resources/profiles/Flashforge/filament/FusRock Generic NexPA-CF25.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic NexPA-CF25.json similarity index 100% rename from resources/profiles/Flashforge/filament/FusRock Generic NexPA-CF25.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock Generic NexPA-CF25.json diff --git a/resources/profiles/Flashforge/filament/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json diff --git a/resources/profiles/Flashforge/filament/FusRock Generic PAHT-CF.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-CF.json similarity index 100% rename from resources/profiles/Flashforge/filament/FusRock Generic PAHT-CF.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-CF.json diff --git a/resources/profiles/Flashforge/filament/FusRock Generic PAHT-GF.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-GF.json similarity index 100% rename from resources/profiles/Flashforge/filament/FusRock Generic PAHT-GF.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-GF.json diff --git a/resources/profiles/Flashforge/filament/FusRock Generic PET-CF @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-CF @G3U 0.6 Nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/FusRock Generic PET-CF @G3U 0.6 Nozzle.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-CF @G3U 0.6 Nozzle.json diff --git a/resources/profiles/Flashforge/filament/FusRock Generic PET-CF.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-CF.json similarity index 100% rename from resources/profiles/Flashforge/filament/FusRock Generic PET-CF.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-CF.json diff --git a/resources/profiles/Flashforge/filament/FusRock Generic PET-GF.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-GF.json similarity index 100% rename from resources/profiles/Flashforge/filament/FusRock Generic PET-GF.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-GF.json diff --git a/resources/profiles/Flashforge/filament/FusRock Generic S-Multi @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-Multi @G3U 0.6 Nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/FusRock Generic S-Multi @G3U 0.6 Nozzle.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-Multi @G3U 0.6 Nozzle.json diff --git a/resources/profiles/Flashforge/filament/FusRock Generic S-Multi.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-Multi.json similarity index 100% rename from resources/profiles/Flashforge/filament/FusRock Generic S-Multi.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-Multi.json diff --git a/resources/profiles/Flashforge/filament/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json diff --git a/resources/profiles/Flashforge/filament/FusRock Generic S-PAHT.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-PAHT.json similarity index 100% rename from resources/profiles/Flashforge/filament/FusRock Generic S-PAHT.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-PAHT.json diff --git a/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/FusRock PAHT @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock PAHT @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT @FF G4P 0.8 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/FusRock PAHT @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock PAHT @FF G4P 0.8 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT-CF @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock PAHT-CF @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/FusRock PET @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/FusRock PET @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/FusRock PET @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/FusRock PET @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/FusRock PET @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.8 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/FusRock PET @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.8 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/FusRock PET-CF @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PET-CF @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/FusRock PET-CF @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock PET-CF @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.6 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.6 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.6 nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.6 nozzle.json diff --git a/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.8 HF nozzle.json similarity index 100% rename from resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.8 HF nozzle.json diff --git a/resources/profiles/Flashforge/filament/Polymaker Generic CoPA.json b/resources/profiles/Flashforge/filament/Polymaker/Polymaker Generic CoPA.json similarity index 100% rename from resources/profiles/Flashforge/filament/Polymaker Generic CoPA.json rename to resources/profiles/Flashforge/filament/Polymaker/Polymaker Generic CoPA.json diff --git a/resources/profiles/Flashforge/filament/Polymaker Generic S1.json b/resources/profiles/Flashforge/filament/Polymaker/Polymaker Generic S1.json similarity index 100% rename from resources/profiles/Flashforge/filament/Polymaker Generic S1.json rename to resources/profiles/Flashforge/filament/Polymaker/Polymaker Generic S1.json From 5e7c8678fb475aa25148c7faeef7f56dc3b8e477 Mon Sep 17 00:00:00 2001 From: RikshaDriver Date: Thu, 20 Feb 2025 18:35:13 +1100 Subject: [PATCH 083/129] Prettified json formatting prettified/simplified json formatting using jj --- ...orge Generic ABS @FF AD5M 0.25 Nozzle.json | 52 +-- ...lashforge Generic ABS @G3U 0.6 Nozzle.json | 68 +--- .../filament/Flashforge Generic ABS @G3U.json | 342 +++++------------ .../filament/Flashforge Generic ABS.json | 56 +-- ...orge Generic ASA @FF AD5M 0.25 Nozzle.json | 58 ++- ...lashforge Generic ASA @G3U 0.6 Nozzle.json | 80 +--- .../filament/Flashforge Generic ASA @G3U.json | 340 +++++------------ .../filament/Flashforge Generic ASA.json | 226 +++-------- ...ashforge Generic HIPS @G3U 0.6 Nozzle.json | 80 +--- .../filament/Flashforge Generic HIPS.json | 342 +++++------------ ...e Generic HS PLA @FF AD5M 0.25 Nozzle.json | 78 ++-- .../filament/Flashforge Generic HS PLA.json | 302 ++++----------- ...rge Generic PETG @FF AD5M 0.25 Nozzle.json | 48 +-- ...ashforge Generic PETG @G3U 0.6 Nozzle.json | 68 +--- ...ashforge Generic PETG @G3U 0.8 Nozzle.json | 68 +--- .../Flashforge Generic PETG @G3U.json | 340 +++++------------ ...forge Generic PETG-CF @G3U 0.6 Nozzle.json | 76 +--- ...forge Generic PETG-CF @G3U 0.8 Nozzle.json | 76 +--- .../Flashforge Generic PETG-CF @G3U.json | 340 +++++------------ .../Flashforge Generic PETG-CF10.json | 228 +++-------- .../filament/Flashforge Generic PETG.json | 96 ++--- ...orge Generic PLA @FF AD5M 0.25 Nozzle.json | 74 ++-- ...lashforge Generic PLA @G3U 0.6 Nozzle.json | 60 +-- ...lashforge Generic PLA @G3U 0.8 Nozzle.json | 68 +--- .../filament/Flashforge Generic PLA @G3U.json | 340 +++++------------ ...hforge Generic PLA-CF @G3U 0.6 Nozzle.json | 72 +--- ...hforge Generic PLA-CF @G3U 0.8 Nozzle.json | 72 +--- .../Flashforge Generic PLA-CF @G3U.json | 340 +++++------------ .../filament/Flashforge Generic PLA-CF10.json | 301 ++++----------- ...Generic PLA-SILK @FF AD5M 0.25 Nozzle.json | 80 ++-- .../filament/Flashforge Generic PLA-Silk.json | 68 +--- .../filament/Flashforge Generic PLA.json | 68 +--- .../filament/Flashforge Generic PVA.json | 342 +++++------------ .../filament/Flashforge Generic TPU.json | 228 +++-------- .../FlashForge PC @FF G4P 0.6 HF nozzle.json | 112 ++---- .../FlashForge PC @FF G4P 0.6 nozzle.json | 112 ++---- .../FlashForge PC @FF G4P 0.8 HF nozzle.json | 112 ++---- .../FlashForge PPS @FF G4P 0.6 nozzle.json | 140 ++----- .../FlashForge PPS @FF G4P 0.8 HF nozzle.json | 140 ++----- .../FlashForge PPS-CF @FF G4P 0.6 nozzle.json | 132 ++----- .../Flashforge/Flashforge ABS @FF AD3.json | 64 +--- ...hforge ABS Basic @FF AD5M 0.25 nozzle.json | 18 +- ...hforge ABS Basic @FF AD5X 0.25 nozzle.json | 88 ++--- ...shforge ABS Basic @FF AD5X 0.6 nozzle.json | 58 +-- ...shforge ABS Basic @FF AD5X 0.8 nozzle.json | 66 +--- .../Flashforge ABS Basic @FF AD5X.json | 70 ++-- ...shforge ABS Basic @FF G4P 0.25 nozzle.json | 48 +-- ...forge ABS Basic @FF G4P 0.6 HF nozzle.json | 124 ++---- ...ashforge ABS Basic @FF G4P 0.6 nozzle.json | 128 ++----- ...forge ABS Basic @FF G4P 0.8 HF nozzle.json | 128 ++----- .../Flashforge ABS Basic @FF G4P HF.json | 88 ++--- .../Flashforge ABS Basic @FF G4P.json | 36 +- .../Flashforge/Flashforge ABS Basic @G3U.json | 20 +- .../Flashforge/Flashforge ABS Basic.json | 20 +- .../Flashforge ABS-CF @FF G4P 0.6 nozzle.json | 128 ++----- .../Flashforge/Flashforge ABS-CF @FF G4P.json | 64 +--- ...hforge ASA Basic @FF AD5M 0.25 nozzle.json | 18 +- ...hforge ASA Basic @FF AD5X 0.25 nozzle.json | 92 ++--- ...shforge ASA Basic @FF AD5X 0.6 nozzle.json | 58 +-- ...shforge ASA Basic @FF AD5X 0.8 nozzle.json | 58 +-- .../Flashforge ASA Basic @FF AD5X.json | 70 ++-- ...shforge ASA Basic @FF G4P 0.25 nozzle.json | 52 +-- ...forge ASA Basic @FF G4P 0.6 HF nozzle.json | 128 ++----- ...ashforge ASA Basic @FF G4P 0.6 nozzle.json | 132 ++----- ...forge ASA Basic @FF G4P 0.8 HF nozzle.json | 132 ++----- .../Flashforge ASA Basic @FF G4P HF.json | 92 ++--- .../Flashforge ASA Basic @FF G4P.json | 40 +- .../Flashforge/Flashforge ASA Basic @G3U.json | 20 +- .../Flashforge/Flashforge ASA Basic.json | 20 +- .../Flashforge/Flashforge ASA-CF.json | 72 ++-- .../Flashforge HIPS @FF G4P 0.6 nozzle.json | 128 ++----- ...Flashforge HIPS @FF G4P 0.8 HF nozzle.json | 128 ++----- .../Flashforge HIPS @FF G4P HF.json | 56 +-- .../Flashforge/Flashforge HIPS @FF G4P.json | 108 ++---- .../Flashforge/Flashforge HIPS @G3U.json | 20 +- ...ashforge HS PETG @FF AD5M 0.25 nozzle.json | 18 +- ...ashforge HS PETG @FF AD5X 0.25 nozzle.json | 88 ++--- ...lashforge HS PETG @FF AD5X 0.6 nozzle.json | 74 ++-- ...lashforge HS PETG @FF AD5X 0.8 nozzle.json | 74 ++-- .../Flashforge HS PETG @FF AD5X.json | 76 ++-- ...lashforge HS PETG @FF G4P 0.25 nozzle.json | 72 +--- ...shforge HS PETG @FF G4P 0.6 HF nozzle.json | 80 +--- ...Flashforge HS PETG @FF G4P 0.6 nozzle.json | 104 ++--- ...shforge HS PETG @FF G4P 0.8 HF nozzle.json | 104 ++--- .../Flashforge HS PETG @FF G4P HF.json | 112 ++---- .../Flashforge HS PETG @FF G4P.json | 56 +-- .../Flashforge/Flashforge HS PETG @G3U.json | 20 +- .../Flashforge/Flashforge HS PETG.json | 18 +- ...lashforge HS PLA @FF AD5X 0.25 nozzle.json | 84 ++--- ...Flashforge HS PLA @FF AD5X 0.6 nozzle.json | 62 +-- ...Flashforge HS PLA @FF AD5X 0.8 nozzle.json | 62 +-- .../Flashforge HS PLA @FF AD5X.json | 64 +--- ...Flashforge HS PLA @FF G4P 0.25 nozzle.json | 68 +--- ...ashforge HS PLA @FF G4P 0.6 HF nozzle.json | 80 +--- .../Flashforge HS PLA @FF G4P 0.6 nozzle.json | 84 ++--- ...ashforge HS PLA @FF G4P 0.8 HF nozzle.json | 84 ++--- .../Flashforge HS PLA @FF G4P HF.json | 124 ++---- .../Flashforge/Flashforge HS PLA @FF G4P.json | 56 +-- .../Flashforge/Flashforge HS PLA @G3U.json | 20 +- ...HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json | 84 ++--- ...Flashforge HS PLA Burnt Ti @FF G4P HF.json | 124 ++---- ...rge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json | 84 ++--- ... HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json | 84 ++--- .../Flashforge/Flashforge HS PLA.json | 18 +- .../Flashforge PA @FF G4P 0.6 HF nozzle.json | 144 ++----- .../Flashforge/Flashforge PA @FF G4P HF.json | 104 ++--- .../Flashforge/Flashforge PA @FF G4P.json | 80 +--- .../Flashforge/Flashforge PA-CF @FF G4P.json | 104 ++--- .../Flashforge/Flashforge PA12-CF.json | 76 ++-- .../Flashforge/Flashforge PA6-CF.json | 72 ++-- .../Flashforge/Flashforge PA66-CF.json | 72 ++-- .../Flashforge PAHT-CF @FF G4P.json | 104 ++--- .../Flashforge/Flashforge PET @FF G4P.json | 96 ++--- .../Flashforge/Flashforge PET-CF @FF G4P.json | 96 ++--- .../Flashforge/Flashforge PET-CF.json | 64 +--- .../Flashforge/Flashforge PETG @FF AD3.json | 100 ++--- ...forge PETG Basic @FF AD5M 0.25 nozzle.json | 18 +- .../Flashforge PETG Basic @G3U.json | 20 +- .../Flashforge/Flashforge PETG Basic.json | 44 +-- ...shforge PETG Pro @FF AD5M 0.25 nozzle.json | 18 +- ...shforge PETG Pro @FF AD5X 0.25 nozzle.json | 84 ++--- ...ashforge PETG Pro @FF AD5X 0.6 nozzle.json | 66 +--- ...ashforge PETG Pro @FF AD5X 0.8 nozzle.json | 66 +--- .../Flashforge PETG Pro @FF AD5X.json | 72 ++-- ...ashforge PETG Pro @FF G4P 0.25 nozzle.json | 64 +--- ...hforge PETG Pro @FF G4P 0.6 HF nozzle.json | 56 +-- ...lashforge PETG Pro @FF G4P 0.6 nozzle.json | 104 ++--- ...hforge PETG Pro @FF G4P 0.8 HF nozzle.json | 104 ++--- .../Flashforge PETG Pro @FF G4P HF.json | 116 ++---- .../Flashforge PETG Pro @FF G4P.json | 48 +-- .../Flashforge/Flashforge PETG Pro @G3U.json | 20 +- .../Flashforge/Flashforge PETG Pro.json | 44 +-- ...PETG Transparent @FF AD5M 0.25 nozzle.json | 18 +- ...PETG Transparent @FF AD5X 0.25 nozzle.json | 84 ++--- ... PETG Transparent @FF AD5X 0.6 nozzle.json | 66 +--- ... PETG Transparent @FF AD5X 0.8 nozzle.json | 66 +--- .../Flashforge PETG Transparent @FF AD5X.json | 72 ++-- ... PETG Transparent @FF G4P 0.25 nozzle.json | 64 +--- ...ETG Transparent @FF G4P 0.6 HF nozzle.json | 56 +-- ...e PETG Transparent @FF G4P 0.6 nozzle.json | 104 ++--- ...ETG Transparent @FF G4P 0.8 HF nozzle.json | 104 ++--- ...lashforge PETG Transparent @FF G4P HF.json | 116 ++---- .../Flashforge PETG Transparent @FF G4P.json | 48 +-- .../Flashforge PETG Transparent @G3U.json | 20 +- .../Flashforge PETG Transparent.json | 44 +-- ...lashforge PETG-CF @FF AD5X 0.6 nozzle.json | 60 +-- ...lashforge PETG-CF @FF AD5X 0.8 nozzle.json | 60 +-- .../Flashforge PETG-CF @FF AD5X.json | 64 ++-- ...Flashforge PETG-CF @FF G4P 0.6 nozzle.json | 104 ++--- .../Flashforge PETG-CF @FF G4P.json | 60 +-- .../Flashforge/Flashforge PETG-CF @G3U.json | 20 +- .../Flashforge/Flashforge PETG-CF.json | 18 +- .../Flashforge/Flashforge PLA @FF AD3.json | 68 +--- ...hforge PLA Basic @FF AD5M 0.25 nozzle.json | 18 +- ...hforge PLA Basic @FF AD5X 0.25 nozzle.json | 84 ++--- ...shforge PLA Basic @FF AD5X 0.6 nozzle.json | 70 ++-- ...shforge PLA Basic @FF AD5X 0.8 nozzle.json | 70 ++-- .../Flashforge PLA Basic @FF AD5X.json | 64 +--- ...shforge PLA Basic @FF G4P 0.25 nozzle.json | 68 +--- ...forge PLA Basic @FF G4P 0.6 HF nozzle.json | 84 ++--- ...ashforge PLA Basic @FF G4P 0.6 nozzle.json | 84 ++--- ...forge PLA Basic @FF G4P 0.8 HF nozzle.json | 84 ++--- .../Flashforge PLA Basic @FF G4P HF.json | 120 ++---- .../Flashforge PLA Basic @FF G4P.json | 60 +-- .../Flashforge/Flashforge PLA Basic @G3U.json | 22 +- .../Flashforge/Flashforge PLA Basic.json | 24 +- ...forge PLA Buint Ti @FF G4P 0.6 nozzle.json | 92 ++--- ...forge PLA Buint Ti @FF G4P 0.8 nozzle.json | 92 ++--- ...PLA Color Change @FF AD5M 0.25 nozzle.json | 18 +- ...PLA Color Change @FF AD5X 0.25 nozzle.json | 84 ++--- ... PLA Color Change @FF AD5X 0.6 nozzle.json | 70 ++-- ... PLA Color Change @FF AD5X 0.8 nozzle.json | 70 ++-- .../Flashforge PLA Color Change @FF AD5X.json | 64 +--- ... PLA Color Change @FF G4P 0.25 nozzle.json | 68 +--- ...LA Color Change @FF G4P 0.6 HF nozzle.json | 84 ++--- ...lashforge PLA Color Change @FF G4P HF.json | 120 ++---- .../Flashforge PLA Color Change @FF G4P.json | 60 +-- .../Flashforge PLA Color Change @G3U.json | 20 +- .../Flashforge PLA Color Change.json | 18 +- ...forge PLA Galaxy @FF AD5M 0.25 nozzle.json | 18 +- ...forge PLA Galaxy @FF AD5X 0.25 nozzle.json | 84 ++--- ...hforge PLA Galaxy @FF AD5X 0.6 nozzle.json | 70 ++-- ...hforge PLA Galaxy @FF AD5X 0.8 nozzle.json | 70 ++-- .../Flashforge PLA Galaxy @FF AD5X.json | 64 +--- ...hforge PLA Galaxy @FF G4P 0.25 nozzle.json | 68 +--- ...orge PLA Galaxy @FF G4P 0.6 HF nozzle.json | 84 ++--- ...shforge PLA Galaxy @FF G4P 0.6 nozzle.json | 92 ++--- ...orge PLA Galaxy @FF G4P 0.8 HF nozzle.json | 92 ++--- .../Flashforge PLA Galaxy @FF G4P HF.json | 120 ++---- .../Flashforge PLA Galaxy @FF G4P.json | 60 +-- .../Flashforge PLA Galaxy @G3U.json | 20 +- .../Flashforge/Flashforge PLA Galaxy.json | 18 +- ...rge PLA Luminous @FF AD5M 0.25 nozzle.json | 18 +- ...rge PLA Luminous @FF AD5X 0.25 nozzle.json | 84 ++--- ...orge PLA Luminous @FF AD5X 0.6 nozzle.json | 70 ++-- ...orge PLA Luminous @FF AD5X 0.8 nozzle.json | 70 ++-- .../Flashforge PLA Luminous @FF AD5X.json | 64 +--- ...orge PLA Luminous @FF G4P 0.25 nozzle.json | 68 +--- ...ge PLA Luminous @FF G4P 0.6 HF nozzle.json | 84 ++--- .../Flashforge PLA Luminous @FF G4P HF.json | 120 ++---- .../Flashforge PLA Luminous @FF G4P.json | 60 +-- .../Flashforge PLA Luminous @G3U.json | 20 +- .../Flashforge/Flashforge PLA Luminous.json | 18 +- ...hforge PLA Matte @FF AD5M 0.25 nozzle.json | 18 +- ...hforge PLA Matte @FF AD5X 0.25 nozzle.json | 84 ++--- ...shforge PLA Matte @FF AD5X 0.6 nozzle.json | 70 ++-- ...shforge PLA Matte @FF AD5X 0.8 nozzle.json | 70 ++-- .../Flashforge PLA Matte @FF AD5X.json | 64 +--- ...shforge PLA Matte @FF G4P 0.25 nozzle.json | 68 +--- ...forge PLA Matte @FF G4P 0.6 HF nozzle.json | 84 ++--- ...ashforge PLA Matte @FF G4P 0.6 nozzle.json | 92 ++--- ...forge PLA Matte @FF G4P 0.8 HF nozzle.json | 92 ++--- .../Flashforge PLA Matte @FF G4P HF.json | 120 ++---- .../Flashforge PLA Matte @FF G4P.json | 60 +-- .../Flashforge/Flashforge PLA Matte @G3U.json | 20 +- .../Flashforge/Flashforge PLA Matte.json | 22 +- ...hforge PLA Metal @FF AD5M 0.25 nozzle.json | 18 +- ...hforge PLA Metal @FF AD5X 0.25 nozzle.json | 84 ++--- ...shforge PLA Metal @FF AD5X 0.6 nozzle.json | 70 ++-- ...shforge PLA Metal @FF AD5X 0.8 nozzle.json | 70 ++-- .../Flashforge PLA Metal @FF AD5X.json | 64 +--- ...shforge PLA Metal @FF G4P 0.25 nozzle.json | 68 +--- ...forge PLA Metal @FF G4P 0.6 HF nozzle.json | 84 ++--- ...ashforge PLA Metal @FF G4P 0.6 nozzle.json | 92 ++--- ...forge PLA Metal @FF G4P 0.8 HF nozzle.json | 92 ++--- .../Flashforge PLA Metal @FF G4P HF.json | 120 ++---- .../Flashforge PLA Metal @FF G4P.json | 60 +-- .../Flashforge/Flashforge PLA Metal @G3U.json | 20 +- .../Flashforge/Flashforge PLA Metal.json | 18 +- ...ashforge PLA Pro @FF AD5M 0.25 nozzle.json | 18 +- ...ashforge PLA Pro @FF AD5X 0.25 nozzle.json | 84 ++--- ...lashforge PLA Pro @FF AD5X 0.6 nozzle.json | 70 ++-- ...lashforge PLA Pro @FF AD5X 0.8 nozzle.json | 70 ++-- .../Flashforge PLA Pro @FF AD5X.json | 64 +--- ...lashforge PLA Pro @FF G4P 0.25 nozzle.json | 68 +--- ...shforge PLA Pro @FF G4P 0.6 HF nozzle.json | 84 ++--- ...Flashforge PLA Pro @FF G4P 0.6 nozzle.json | 92 ++--- ...shforge PLA Pro @FF G4P 0.8 HF nozzle.json | 92 ++--- .../Flashforge PLA Pro @FF G4P HF.json | 120 ++---- .../Flashforge PLA Pro @FF G4P.json | 60 +-- .../Flashforge/Flashforge PLA Pro @G3U.json | 20 +- .../Flashforge/Flashforge PLA Pro.json | 18 +- .../Flashforge/Flashforge PLA Silk @G3U.json | 20 +- ...shforge PLA Silk @FF AD5M 0.25 nozzle.json | 18 +- ...shforge PLA Silk @FF AD5X 0.25 nozzle.json | 88 ++--- ...ashforge PLA Silk @FF AD5X 0.6 nozzle.json | 70 ++-- ...ashforge PLA Silk @FF AD5X 0.8 nozzle.json | 70 ++-- .../Flashforge PLA Silk @FF AD5X.json | 72 ++-- ...ashforge PLA Silk @FF G4P 0.25 nozzle.json | 68 +--- ...hforge PLA Silk @FF G4P 0.6 HF nozzle.json | 76 +--- ...lashforge PLA Silk @FF G4P 0.6 nozzle.json | 88 ++--- ...hforge PLA Silk @FF G4P 0.8 HF nozzle.json | 88 ++--- .../Flashforge PLA Silk @FF G4P HF.json | 120 ++---- .../Flashforge PLA Silk @FF G4P.json | 56 +-- .../Flashforge/Flashforge PLA Silk.json | 18 +- ...orge PLA Sparkle @FF AD5M 0.25 nozzle.json | 18 +- ...orge PLA Sparkle @FF AD5X 0.25 nozzle.json | 84 ++--- ...forge PLA Sparkle @FF AD5X 0.6 nozzle.json | 70 ++-- ...forge PLA Sparkle @FF AD5X 0.8 nozzle.json | 70 ++-- .../Flashforge PLA Sparkle @FF AD5X.json | 64 +--- ...forge PLA Sparkle @FF G4P 0.25 nozzle.json | 68 +--- ...rge PLA Sparkle @FF G4P 0.6 HF nozzle.json | 84 ++--- .../Flashforge PLA Sparkle @FF G4P HF.json | 120 ++---- .../Flashforge PLA Sparkle @FF G4P.json | 60 +-- .../Flashforge PLA Sparkle @G3U.json | 20 +- .../Flashforge/Flashforge PLA Sparkle.json | 18 +- ...Flashforge PLA-CF @FF AD5X 0.6 nozzle.json | 44 +-- ...Flashforge PLA-CF @FF AD5X 0.8 nozzle.json | 44 +-- .../Flashforge PLA-CF @FF AD5X.json | 44 +-- .../Flashforge PLA-CF @FF G4P 0.6 nozzle.json | 96 ++--- .../Flashforge/Flashforge PLA-CF @FF G4P.json | 56 +-- .../Flashforge/Flashforge PLA-CF @G3U.json | 20 +- .../Flashforge/Flashforge PLA-CF.json | 18 +- .../Flashforge/Flashforge PPA-CF.json | 72 ++-- .../Flashforge/Flashforge PPA-GF.json | 80 ++-- .../Flashforge/Flashforge PPS @FF G4P.json | 112 ++---- .../Flashforge/Flashforge PPS-CF @FF G4P.json | 112 ++---- .../Flashforge/Flashforge PPS-CF.json | 72 ++-- .../Flashforge/Flashforge PVA @G3U.json | 20 +- ...lashforge TPU 64D @FF AD5X 0.6 nozzle.json | 54 +-- ...lashforge TPU 64D @FF AD5X 0.8 nozzle.json | 56 +-- .../Flashforge TPU 64D @FF AD5X.json | 64 +--- ...lashforge TPU 95A @FF AD5X 0.6 nozzle.json | 66 +--- ...lashforge TPU 95A @FF AD5X 0.8 nozzle.json | 66 +--- .../Flashforge TPU 95A @FF AD5X.json | 72 ++-- ...shforge TPU 95A @FF G4P 0.6 HF nozzle.json | 128 ++----- ...Flashforge TPU 95A @FF G4P 0.6 nozzle.json | 88 ++--- ...shforge TPU 95A @FF G4P 0.8 HF nozzle.json | 88 ++--- .../Flashforge TPU 95A @FF G4P.json | 56 +-- .../Flashforge/Flashforge TPU 95A.json | 18 +- .../FusRock/FusRock Generic NexPA-CF25.json | 312 ++++----------- ...sRock Generic PAHT-CF @G3U 0.6 Nozzle.json | 104 ++--- .../FusRock/FusRock Generic PAHT-CF.json | 312 ++++----------- .../FusRock/FusRock Generic PAHT-GF.json | 32 +- ...usRock Generic PET-CF @G3U 0.6 Nozzle.json | 104 ++--- .../FusRock/FusRock Generic PET-CF.json | 312 ++++----------- .../FusRock/FusRock Generic PET-GF.json | 24 +- ...sRock Generic S-Multi @G3U 0.6 Nozzle.json | 96 ++--- .../FusRock/FusRock Generic S-Multi.json | 312 ++++----------- ...usRock Generic S-PAHT @G3U 0.6 Nozzle.json | 96 ++--- .../FusRock/FusRock Generic S-PAHT.json | 312 ++++----------- .../FusRock PAHT @FF G4P 0.6 nozzle.json | 44 +-- .../FusRock PAHT @FF G4P 0.8 HF nozzle.json | 44 +-- .../FusRock PAHT-CF @FF G4P 0.6 nozzle.json | 52 +-- .../FusRock PET @FF G4P 0.6 HF nozzle.json | 56 +-- .../FusRock PET @FF G4P 0.6 nozzle.json | 56 +-- .../FusRock PET @FF G4P 0.8 HF nozzle.json | 56 +-- .../FusRock PET-CF @FF G4P 0.6 nozzle.json | 40 +- .../Polymaker CoPA @FF G4P 0.6 HF nozzle.json | 104 ++--- .../Polymaker CoPA @FF G4P 0.6 nozzle.json | 80 +--- .../Polymaker CoPA @FF G4P 0.8 HF nozzle.json | 80 +--- .../Polymaker/Polymaker Generic CoPA.json | 340 +++++------------ .../Polymaker/Polymaker Generic S1.json | 340 +++++------------ .../Flashforge/filament/fdm_filament_abs.json | 108 ++---- .../Flashforge/filament/fdm_filament_asa.json | 110 ++---- .../filament/fdm_filament_common.json | 192 +++------- .../Flashforge/filament/fdm_filament_pet.json | 110 ++---- .../Flashforge/filament/fdm_filament_pla.json | 122 ++---- .../Flashforge/filament/fdm_filament_tpu.json | 110 ++---- .../machine/FlashForge AD5X 0.25 nozzle.json | 354 ++++++------------ .../machine/Flashforge AD5X 0.4 nozzle.json | 354 ++++++------------ .../machine/Flashforge AD5X 0.6 nozzle.json | 354 ++++++------------ .../machine/Flashforge AD5X 0.8 nozzle.json | 354 ++++++------------ .../Flashforge/machine/Flashforge AD5X.json | 25 +- ...hforge Adventurer 3 Series 0.4 nozzle.json | 24 +- ...hforge Adventurer 3 Series 0.6 nozzle.json | 24 +- .../Flashforge Adventurer 3 Series.json | 22 +- .../Flashforge Adventurer 5M 0.25 Nozzle.json | 34 +- .../Flashforge Adventurer 5M 0.4 Nozzle.json | 28 +- .../Flashforge Adventurer 5M 0.6 Nozzle.json | 30 +- .../Flashforge Adventurer 5M 0.8 Nozzle.json | 32 +- ...shforge Adventurer 5M Pro 0.25 Nozzle.json | 34 +- ...ashforge Adventurer 5M Pro 0.4 Nozzle.json | 28 +- ...ashforge Adventurer 5M Pro 0.6 Nozzle.json | 30 +- ...ashforge Adventurer 5M Pro 0.8 Nozzle.json | 32 +- .../machine/Flashforge Adventurer 5M.json | 22 +- .../Flashforge Guider 2s 0.4 nozzle.json | 111 +++--- .../Flashforge Guider 3 Ultra 0.4 Nozzle.json | 192 +++------- .../Flashforge Guider 3 Ultra 0.6 Nozzle.json | 49 +-- .../Flashforge Guider 3 Ultra 0.8 Nozzle.json | 49 +-- .../Flashforge Guider4 Pro 0.25 nozzle.json | 342 ++++++----------- .../Flashforge Guider4 Pro 0.4 HF nozzle.json | 342 ++++++----------- .../Flashforge Guider4 Pro 0.4 nozzle.json | 342 ++++++----------- .../Flashforge Guider4 Pro 0.6 HF nozzle.json | 342 ++++++----------- .../Flashforge Guider4 Pro 0.6 nozzle.json | 342 ++++++----------- .../Flashforge Guider4 Pro 0.8 HF nozzle.json | 192 +++------- .../machine/fdm_adventurer3_common.json | 119 +++--- .../machine/fdm_adventurer5m_common.json | 105 +++--- .../machine/fdm_flashforge_common.json | 145 ++----- .../machine/fdm_guider3_common.json | 88 ++--- .../machine/fdm_klipper_common.json | 145 ++----- .../machine/fdm_machine_common.json | 168 +++------ ...Standard @Flashforge AD5M 0.25 Nozzle.json | 4 +- ...dard @Flashforge AD5M Pro 0.25 Nozzle.json | 4 +- ...Standard @Flashforge AD5M 0.25 Nozzle.json | 4 +- ...dard @Flashforge AD5M Pro 0.25 Nozzle.json | 4 +- .../0.10mm Standard @FF AD5X 0.25 nozzle.json | 44 ++- .../0.10mm Standard @FF G4P 0.25 nozzle.json | 4 +- ...Standard @Flashforge AD5M 0.25 Nozzle.json | 4 +- ...dard @Flashforge AD5M Pro 0.25 Nozzle.json | 4 +- ...tail @Flashforge Guider 2s 0.4 nozzle.json | 4 +- ...12mm Fine @Flashforge AD5M 0.4 Nozzle.json | 4 +- ... Fine @Flashforge AD5M Pro 0.4 Nozzle.json | 4 +- ....12mm Fine @Flashforge G3U 0.4 Nozzle.json | 4 +- .../0.12mm Standard @FF AD5X 0.25 nozzle.json | 42 +-- .../0.12mm Standard @FF G4P 0.25 nozzle.json | 4 +- ...Standard @Flashforge AD5M 0.25 Nozzle.json | 6 +- ...dard @Flashforge AD5M Pro 0.25 Nozzle.json | 6 +- .../0.14mm Standard @FF AD5X 0.25 nozzle.json | 42 +-- .../0.14mm Standard @FF G4P 0.25 nozzle.json | 4 +- ...Standard @Flashforge AD5M 0.25 Nozzle.json | 4 +- ...dard @Flashforge AD5M Pro 0.25 Nozzle.json | 4 +- ...imal @Flashforge Guider 2s 0.4 nozzle.json | 4 +- .../process/0.16mm Standard @FF AD5X.json | 54 ++- .../process/0.16mm Standard @FF G4P HF.json | 4 +- .../process/0.16mm Standard @FF G4P.json | 4 +- .../0.18mm Fine @FF AD5X 0.6 nozzle.json | 44 ++- ...18mm Fine @Flashforge AD5M 0.6 Nozzle.json | 4 +- ... Fine @Flashforge AD5M Pro 0.6 Nozzle.json | 4 +- ...m Standard @Flashforge G3U 0.6 Nozzle.json | 4 +- .../process/0.20mm Standard @FF AD5X.json | 50 ++- .../process/0.20mm Standard @FF G4P HF.json | 4 +- .../0.20mm Standard @FF G4P PLA600.json | 4 +- .../process/0.20mm Standard @FF G4P.json | 4 +- ...m Standard @Flashforge AD3 0.4 Nozzle.json | 6 +- ... Standard @Flashforge AD5M 0.4 Nozzle.json | 6 +- ...ndard @Flashforge AD5M Pro 0.4 Nozzle.json | 7 +- ...m Standard @Flashforge G3U 0.4 Nozzle.json | 4 +- ...dard @Flashforge Guider 2s 0.4 nozzle.json | 4 +- ...ng plastic @Flashforge G3U 0.4 Nozzle.json | 76 ++-- .../process/0.24mm Draft @FF AD5X.json | 54 ++- ...4mm Draft @Flashforge AD5M 0.4 Nozzle.json | 4 +- ...Draft @Flashforge AD5M Pro 0.4 Nozzle.json | 4 +- ...24mm Draft @Flashforge G3U 0.4 Nozzle.json | 4 +- .../0.24mm Fine @FF AD5X 0.8 nozzle.json | 46 ++- ...24mm Fine @Flashforge AD5M 0.8 Nozzle.json | 4 +- ... Fine @Flashforge AD5M Pro 0.8 Nozzle.json | 4 +- .../process/0.24mm Standard @FF G4P HF.json | 4 +- .../process/0.24mm Standard @FF G4P.json | 4 +- ...0.25mm Standard @FF G4P 0.6 HF nozzle.json | 4 +- .../0.25mm Standard @FF G4P 0.6 nozzle.json | 4 +- ...raft @Flashforge Guider 2s 0.4 nozzle.json | 4 +- ....30mm Fast @Flashforge AD3 0.4 Nozzle.json | 6 +- .../0.30mm Standard @FF AD5X 0.6 nozzle.json | 44 ++- .../0.30mm Standard @FF G4P 0.6 nozzle.json | 4 +- ...m Standard @Flashforge AD3 0.6 Nozzle.json | 8 +- ... Standard @Flashforge AD5M 0.6 Nozzle.json | 4 +- ...ndard @Flashforge AD5M Pro 0.6 Nozzle.json | 4 +- ...m Standard @Flashforge G3U 0.6 Nozzle.json | 4 +- ...0.32mm Standard @FF G4P 0.8 HF nozzle.json | 4 +- ...0.36mm Standard @FF G4P 0.6 HF nozzle.json | 4 +- .../0.36mm Standard @FF G4P 0.6 nozzle.json | 4 +- .../0.3mm Standard @FF G4P 0.6 HF nozzle.json | 4 +- .../0.40mm Standard @FF AD5X 0.8 nozzle.json | 48 ++- ...0.40mm Standard @FF G4P 0.8 HF nozzle.json | 4 +- ... Standard @Flashforge AD5M 0.8 Nozzle.json | 6 +- ...ndard @Flashforge AD5M Pro 0.8 Nozzle.json | 6 +- ...m Standard @Flashforge G3U 0.8 Nozzle.json | 4 +- .../0.42mm Draft @FF AD5X 0.6 nozzle.json | 44 ++- ...2mm Draft @Flashforge AD5M 0.6 Nozzle.json | 4 +- ...Draft @Flashforge AD5M Pro 0.6 Nozzle.json | 4 +- ...0.42mm Standard @FF G4P 0.6 HF nozzle.json | 4 +- .../0.42mm Standard @FF G4P 0.6 nozzle.json | 4 +- ...m Standard @Flashforge G3U 0.6 Nozzle.json | 4 +- ...0.48mm Standard @FF G4P 0.8 HF nozzle.json | 4 +- .../0.56mm Draft @FF AD5X 0.8 nozzle.json | 52 ++- ...6mm Draft @Flashforge AD5M 0.8 Nozzle.json | 4 +- ...Draft @Flashforge AD5M Pro 0.8 Nozzle.json | 4 +- .../process/fdm_process_common.json | 140 +++---- .../process/fdm_process_flashforge_0.20.json | 2 +- .../process/fdm_process_flashforge_0.30.json | 2 +- .../process/fdm_process_flashforge_0.40.json | 2 +- .../fdm_process_flashforge_common.json | 140 +++---- 433 files changed, 9642 insertions(+), 23624 deletions(-) diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic ABS @FF AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic ABS @FF AD5M 0.25 Nozzle.json index 0f3acd8031..891fbd3d72 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic ABS @FF AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic ABS @FF AD5M 0.25 Nozzle.json @@ -1,34 +1,22 @@ { - "type": "filament", - "name": "Flashforge Generic ABS @FF AD5M 0.25 Nozzle", - "inherits": "Flashforge Generic ABS", - "renamed_from":"Flashforge ABS @FF AD5M 0.25 Nozzle", - "from": "system", - "setting_id": "GFSA04_02", - "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.25 Nozzle", - "Flashforge Adventurer 5M Pro 0.25 Nozzle", - "Flashforge AD5X 0.25 nozzle" - ], - "filament_id": "GFB99", - "filament_settings_id": [ - "Flashforge Generic ABS @FF AD5M 0.25 Nozzle" - ], - "fan_max_speed": [ - "50" - ], - "filament_cost": [ - "40" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "pressure_advance": [ - "0.1" - ], - "version": "1.8.0.0" + "type": "filament", + "name": "Flashforge Generic ABS @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge Generic ABS", + "renamed_from": "Flashforge ABS @FF AD5M 0.25 Nozzle", + "from": "system", + "setting_id": "GFSA04_02", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.25 Nozzle", + "Flashforge Adventurer 5M Pro 0.25 Nozzle", + "Flashforge AD5X 0.25 nozzle" + ], + "filament_id": "GFB99", + "filament_settings_id": ["Flashforge Generic ABS @FF AD5M 0.25 Nozzle"], + "fan_max_speed": ["50"], + "filament_cost": ["40"], + "filament_flow_ratio": ["1"], + "filament_max_volumetric_speed": ["2"], + "pressure_advance": ["0.1"], + "version": "1.8.0.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U 0.6 Nozzle.json index 7ea9300733..a075be9fa9 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U 0.6 Nozzle.json @@ -6,57 +6,23 @@ "setting_id": "GFSA04", "instantiation": "true", "from": "system", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.6 Nozzle" - ], - "fan_cooling_layer_time": [ - "20" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "20" - ], - "filament_flow_ratio": [ - "1.03" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_settings_id": [ - "Flashforge Generic ABS @G3U 0.6 Nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.6 Nozzle"], + "fan_cooling_layer_time": ["20"], + "fan_max_speed": ["50"], + "fan_min_speed": ["20"], + "filament_flow_ratio": ["1.03"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_settings_id": ["Flashforge Generic ABS @G3U 0.6 Nozzle"], + "filament_start_gcode": ["; filament start gcode\n"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], "is_custom_defined": "0", - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "235" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "50" - ], - "slow_down_min_speed": [ - "12" - ], - "support_material_interface_fan_speed": [ - "40" - ], + "nozzle_temperature": ["230"], + "nozzle_temperature_initial_layer": ["235"], + "nozzle_temperature_range_high": ["260"], + "nozzle_temperature_range_low": ["220"], + "overhang_fan_speed": ["50"], + "slow_down_min_speed": ["12"], + "support_material_interface_fan_speed": ["40"], "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U.json b/resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U.json index 9d72211187..11dc7aa4f4 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U.json @@ -1,256 +1,100 @@ { - "type": "filament", - "filament_id": "GFB99", - "setting_id": "GFSA04", - "instantiation": "true", - "from": "system", - "activate_air_filtration": [ - "0" - ], - "activate_chamber_temp_control": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "2" - ], + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "activate_air_filtration": ["0"], + "activate_chamber_temp_control": ["0"], + "additional_cooling_fan_speed": ["0"], + "chamber_temperature": ["0"], + "close_fan_the_first_x_layers": ["2"], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", "Flashforge Guider 3 Ultra 0.6 Nozzle", "Flashforge Guider 3 Ultra 0.8 Nozzle", - "Flashforge Guider 2s 0.4 nozzle" + "Flashforge Guider 2s 0.4 nozzle" ], - "compatible_printers_condition": "", - "compatible_prints": [], - "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "default_filament_colour": [ - "" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "80" - ], - "eng_plate_temp_initial_layer": [ - "80" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "10" - ], - "filament_cooling_final_speed": [ - "3.4" - ], - "filament_cooling_initial_speed": [ - "2.2" - ], - "filament_cooling_moves": [ - "4" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.04" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_flow_ratio": [ - "1.03" - ], - "filament_is_support": [ - "0" - ], - "filament_load_time": [ - "0" - ], - "filament_loading_speed": [ - "28" - ], - "filament_loading_speed_start": [ - "3" - ], - "filament_max_volumetric_speed": [ - "15" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "10" - ], - "filament_multitool_ramming_volume": [ - "10" - ], - "filament_notes": [ - "" - ], - "filament_ramming_parameters": [ - "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "Flashforge Generic ABS @G3U" - ], - "filament_shrink": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_type": [ - "ABS" - ], - "filament_unload_time": [ - "0" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "105" - ], - "hot_plate_temp_initial_layer": [ - "105" - ], - "inherits": "Flashforge Generic ABS", - "name": "Flashforge Generic ABS @G3U", - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "235" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "50" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.036" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "40" - ], - "temperature_vitrification": [ - "100" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "version": "1.9.0.2" + "compatible_printers_condition": "", + "compatible_prints": [], + "compatible_prints_condition": "", + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp": ["80"], + "cool_plate_temp_initial_layer": ["80"], + "default_filament_colour": [""], + "during_print_exhaust_fan_speed": ["60"], + "enable_overhang_bridge_fan": ["1"], + "enable_pressure_advance": ["1"], + "eng_plate_temp": ["80"], + "eng_plate_temp_initial_layer": ["80"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["30"], + "fan_min_speed": ["10"], + "filament_cooling_final_speed": ["3.4"], + "filament_cooling_initial_speed": ["2.2"], + "filament_cooling_moves": ["4"], + "filament_cost": ["20"], + "filament_density": ["1.04"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_flow_ratio": ["1.03"], + "filament_is_support": ["0"], + "filament_load_time": ["0"], + "filament_loading_speed": ["28"], + "filament_loading_speed_start": ["3"], + "filament_max_volumetric_speed": ["15"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_multitool_ramming": ["0"], + "filament_multitool_ramming_flow": ["10"], + "filament_multitool_ramming_volume": ["10"], + "filament_notes": [""], + "filament_ramming_parameters": [ + "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" + ], + "filament_retract_before_wipe": ["nil"], + "filament_retract_lift_above": ["nil"], + "filament_retract_lift_below": ["nil"], + "filament_retract_lift_enforce": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["nil"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": ["Flashforge Generic ABS @G3U"], + "filament_shrink": ["100%"], + "filament_soluble": ["0"], + "filament_start_gcode": ["; filament start gcode\n"], + "filament_toolchange_delay": ["0"], + "filament_type": ["ABS"], + "filament_unload_time": ["0"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "full_fan_speed_layer": ["0"], + "hot_plate_temp": ["105"], + "hot_plate_temp_initial_layer": ["105"], + "inherits": "Flashforge Generic ABS", + "name": "Flashforge Generic ABS @G3U", + "nozzle_temperature": ["230"], + "nozzle_temperature_initial_layer": ["235"], + "nozzle_temperature_range_high": ["260"], + "nozzle_temperature_range_low": ["220"], + "overhang_fan_speed": ["50"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.036"], + "reduce_fan_stop_start_freq": ["1"], + "required_nozzle_HRC": ["0"], + "slow_down_for_layer_cooling": ["1"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["40"], + "temperature_vitrification": ["100"], + "textured_plate_temp": ["80"], + "textured_plate_temp_initial_layer": ["80"], + "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic ABS.json b/resources/profiles/Flashforge/filament/Flashforge Generic ABS.json index fc7820bcec..42f0d80cf9 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic ABS.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic ABS.json @@ -6,55 +6,29 @@ "from": "system", "instantiation": "true", "inherits": "fdm_filament_abs", - "filament_flow_ratio": [ - "0.98" - ], - "filament_max_volumetric_speed": [ - "15" - ], - "slow_down_layer_time": [ - "8" - ], - "support_material_interface_fan_speed": [ - "80" - ], - "slow_down_min_speed": [ - "20" - ], + "filament_flow_ratio": ["0.98"], + "filament_max_volumetric_speed": ["15"], + "slow_down_layer_time": ["8"], + "support_material_interface_fan_speed": ["80"], + "slow_down_min_speed": ["20"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: ABS\n" ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_diameter": [ - "1.75" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.04" - ], - "filament_density": [ - "1.04" - ], - "temperature_vitrification": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "105" - ], - "hot_plate_temp": [ - "105" - ], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_diameter": ["1.75"], + "enable_pressure_advance": ["1"], + "pressure_advance": ["0.04"], + "filament_density": ["1.04"], + "temperature_vitrification": ["100"], + "hot_plate_temp_initial_layer": ["105"], + "hot_plate_temp": ["105"], "compatible_printers": [ "Flashforge Adventurer 5M 0.4 Nozzle", "Flashforge Adventurer 5M 0.6 Nozzle", - "Flashforge Adventurer 5M 0.8 Nozzle", + "Flashforge Adventurer 5M 0.8 Nozzle", "Flashforge Adventurer 5M Pro 0.4 Nozzle", "Flashforge Adventurer 5M Pro 0.6 Nozzle", - "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "Flashforge Adventurer 5M Pro 0.8 Nozzle", "Flashforge AD5X 0.4 nozzle", "Flashforge AD5X 0.6 nozzle", "Flashforge AD5X 0.8 nozzle" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic ASA @FF AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic ASA @FF AD5M 0.25 Nozzle.json index 65585fce05..84d08932eb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic ASA @FF AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic ASA @FF AD5M 0.25 Nozzle.json @@ -1,37 +1,25 @@ { - "type": "filament", - "name": "Flashforge Generic ASA @FF AD5M 0.25 Nozzle", - "inherits": "Flashforge Generic ASA", - "renamed_from":"Flashforge ASA @FF AD5M 0.25 Nozzle", - "from": "system", - "setting_id": "GFSA04_05", - "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.25 Nozzle", - "Flashforge Adventurer 5M Pro 0.25 Nozzle", - "Flashforge AD5X 0.25 nozzle" - ], - "filament_id": "GFL99", - "filament_settings_id": [ - "Flashforge Generic ASA @FF AD5M 0.25 Nozzle" - ], - "fan_max_speed": [ - "50" - ], - "filament_cost": [ - "40" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "filament_start_gcode": [ - "; filament start gcode\n;right_extruder_material: ASA\n" - ], - "pressure_advance": [ - "0.1" - ], - "version": "1.8.0.0" + "type": "filament", + "name": "Flashforge Generic ASA @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge Generic ASA", + "renamed_from": "Flashforge ASA @FF AD5M 0.25 Nozzle", + "from": "system", + "setting_id": "GFSA04_05", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.25 Nozzle", + "Flashforge Adventurer 5M Pro 0.25 Nozzle", + "Flashforge AD5X 0.25 nozzle" + ], + "filament_id": "GFL99", + "filament_settings_id": ["Flashforge Generic ASA @FF AD5M 0.25 Nozzle"], + "fan_max_speed": ["50"], + "filament_cost": ["40"], + "filament_flow_ratio": ["1"], + "filament_max_volumetric_speed": ["2"], + "filament_start_gcode": [ + "; filament start gcode\n;right_extruder_material: ASA\n" + ], + "pressure_advance": ["0.1"], + "version": "1.8.0.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U 0.6 Nozzle.json index 4f9efca486..1c0c5b3375 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U 0.6 Nozzle.json @@ -6,66 +6,26 @@ "setting_id": "GFSA04", "instantiation": "true", "from": "system", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.6 Nozzle" - ], - "fan_cooling_layer_time": [ - "20" - ], - "fan_max_speed": [ - "40" - ], - "fan_min_speed": [ - "20" - ], - "filament_density": [ - "1.09" - ], - "filament_flow_ratio": [ - "1.03" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "10" - ], - "filament_settings_id": [ - "Flashforge Generic ASA @G3U 0.6 Nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], - "filament_type": [ - "ASA" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.6 Nozzle"], + "fan_cooling_layer_time": ["20"], + "fan_max_speed": ["40"], + "fan_min_speed": ["20"], + "filament_density": ["1.09"], + "filament_flow_ratio": ["1.03"], + "filament_max_volumetric_speed": ["18"], + "filament_minimal_purge_on_wipe_tower": ["10"], + "filament_settings_id": ["Flashforge Generic ASA @G3U 0.6 Nozzle"], + "filament_start_gcode": ["; filament start gcode\n"], + "filament_type": ["ASA"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], "is_custom_defined": "0", - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "50" - ], - "slow_down_min_speed": [ - "12" - ], - "support_material_interface_fan_speed": [ - "40" - ], + "nozzle_temperature": ["240"], + "nozzle_temperature_initial_layer": ["240"], + "nozzle_temperature_range_high": ["260"], + "nozzle_temperature_range_low": ["220"], + "overhang_fan_speed": ["50"], + "slow_down_min_speed": ["12"], + "support_material_interface_fan_speed": ["40"], "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U.json b/resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U.json index 4e0abca7ea..9a4f943057 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U.json @@ -1,256 +1,100 @@ { - "type": "filament", - "filament_id": "GFB99", - "setting_id": "GFSA04", - "instantiation": "true", - "from": "system", - "activate_air_filtration": [ - "0" - ], - "activate_chamber_temp_control": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "2" - ], + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "activate_air_filtration": ["0"], + "activate_chamber_temp_control": ["0"], + "additional_cooling_fan_speed": ["0"], + "chamber_temperature": ["0"], + "close_fan_the_first_x_layers": ["2"], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", "Flashforge Guider 3 Ultra 0.6 Nozzle", "Flashforge Guider 3 Ultra 0.8 Nozzle", "Flashforge Guider 2s 0.4 nozzle" ], - "compatible_printers_condition": "", - "compatible_prints": [], - "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "default_filament_colour": [ - "" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "80" - ], - "eng_plate_temp_initial_layer": [ - "80" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "10" - ], - "filament_cooling_final_speed": [ - "3.4" - ], - "filament_cooling_initial_speed": [ - "2.2" - ], - "filament_cooling_moves": [ - "4" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.04" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_flow_ratio": [ - "1.02" - ], - "filament_is_support": [ - "0" - ], - "filament_load_time": [ - "0" - ], - "filament_loading_speed": [ - "28" - ], - "filament_loading_speed_start": [ - "3" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "10" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "10" - ], - "filament_multitool_ramming_volume": [ - "10" - ], - "filament_notes": [ - "" - ], - "filament_ramming_parameters": [ - "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "Flashforge Generic ASA @G3U" - ], - "filament_shrink": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_type": [ - "ASA" - ], - "filament_unload_time": [ - "0" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "105" - ], - "hot_plate_temp_initial_layer": [ - "105" - ], - "inherits": "Flashforge Generic ABS", - "name": "Flashforge Generic ASA @G3U", - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "50" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.036" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "40" - ], - "temperature_vitrification": [ - "100" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "version": "1.9.0.2" + "compatible_printers_condition": "", + "compatible_prints": [], + "compatible_prints_condition": "", + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp": ["80"], + "cool_plate_temp_initial_layer": ["80"], + "default_filament_colour": [""], + "during_print_exhaust_fan_speed": ["60"], + "enable_overhang_bridge_fan": ["1"], + "enable_pressure_advance": ["1"], + "eng_plate_temp": ["80"], + "eng_plate_temp_initial_layer": ["80"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["30"], + "fan_min_speed": ["10"], + "filament_cooling_final_speed": ["3.4"], + "filament_cooling_initial_speed": ["2.2"], + "filament_cooling_moves": ["4"], + "filament_cost": ["20"], + "filament_density": ["1.04"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_flow_ratio": ["1.02"], + "filament_is_support": ["0"], + "filament_load_time": ["0"], + "filament_loading_speed": ["28"], + "filament_loading_speed_start": ["3"], + "filament_max_volumetric_speed": ["18"], + "filament_minimal_purge_on_wipe_tower": ["10"], + "filament_multitool_ramming": ["0"], + "filament_multitool_ramming_flow": ["10"], + "filament_multitool_ramming_volume": ["10"], + "filament_notes": [""], + "filament_ramming_parameters": [ + "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" + ], + "filament_retract_before_wipe": ["nil"], + "filament_retract_lift_above": ["nil"], + "filament_retract_lift_below": ["nil"], + "filament_retract_lift_enforce": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["nil"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": ["Flashforge Generic ASA @G3U"], + "filament_shrink": ["100%"], + "filament_soluble": ["0"], + "filament_start_gcode": ["; filament start gcode\n"], + "filament_toolchange_delay": ["0"], + "filament_type": ["ASA"], + "filament_unload_time": ["0"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "full_fan_speed_layer": ["0"], + "hot_plate_temp": ["105"], + "hot_plate_temp_initial_layer": ["105"], + "inherits": "Flashforge Generic ABS", + "name": "Flashforge Generic ASA @G3U", + "nozzle_temperature": ["240"], + "nozzle_temperature_initial_layer": ["240"], + "nozzle_temperature_range_high": ["260"], + "nozzle_temperature_range_low": ["220"], + "overhang_fan_speed": ["50"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.036"], + "reduce_fan_stop_start_freq": ["1"], + "required_nozzle_HRC": ["0"], + "slow_down_for_layer_cooling": ["1"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["40"], + "temperature_vitrification": ["100"], + "textured_plate_temp": ["80"], + "textured_plate_temp_initial_layer": ["80"], + "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic ASA.json b/resources/profiles/Flashforge/filament/Flashforge Generic ASA.json index 4d585c8b8b..9ab093e604 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic ASA.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic ASA.json @@ -6,20 +6,14 @@ "from": "system", "instantiation": "true", "inherits": "fdm_filament_asa", - "additional_cooling_fan_speed": [ - "0" - ], - "bed_temperature_difference": [ - "10" - ], + "additional_cooling_fan_speed": ["0"], + "bed_temperature_difference": ["10"], "chamber_temperature": "0", - "close_fan_the_first_x_layers": [ - "2" - ], + "close_fan_the_first_x_layers": ["2"], "compatible_printers": [ "Flashforge Adventurer 5M 0.4 Nozzle", "Flashforge Adventurer 5M 0.6 Nozzle", - "Flashforge Adventurer 5M 0.8 Nozzle", + "Flashforge Adventurer 5M 0.8 Nozzle", "Flashforge Adventurer 5M Pro 0.4 Nozzle", "Flashforge Adventurer 5M Pro 0.6 Nozzle", "Flashforge Adventurer 5M Pro 0.8 Nozzle", @@ -30,166 +24,60 @@ "compatible_printers_condition": "", "compatible_prints": [], "compatible_prints_condition": "", - "cool_plate_temp": [ - "60" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "default_filament_colour": [ - "" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "20" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.04" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "Flashforge ASA" - ], - "filament_shrink": [ - "100%" - ], - "filament_soluble": [ - "0" - ], + "cool_plate_temp": ["60"], + "cool_plate_temp_initial_layer": ["60"], + "default_filament_colour": [""], + "enable_overhang_bridge_fan": ["1"], + "enable_pressure_advance": ["1"], + "eng_plate_temp": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["20"], + "fan_min_speed": ["10"], + "filament_cost": ["20"], + "filament_density": ["1.04"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_flow_ratio": ["0.98"], + "filament_is_support": ["0"], + "filament_max_volumetric_speed": ["18"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_retract_before_wipe": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["nil"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": ["Flashforge ASA"], + "filament_shrink": ["100%"], + "filament_soluble": ["0"], "filament_start_gcode": [ "; filament start gcode \n;right_extruder_material:ASA" ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_type": [ - "ASA" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "105" - ], - "hot_plate_temp_initial_layer": [ - "105" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.04" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "5" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "80" - ], - "temperature_vitrification": [ - "100" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "60" - ] + "filament_end_gcode": ["; filament end gcode\n"], + "filament_type": ["ASA"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "full_fan_speed_layer": ["0"], + "hot_plate_temp": ["105"], + "hot_plate_temp_initial_layer": ["105"], + "nozzle_temperature": ["260"], + "nozzle_temperature_initial_layer": ["260"], + "nozzle_temperature_range_high": ["270"], + "nozzle_temperature_range_low": ["230"], + "overhang_fan_speed": ["80"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.04"], + "reduce_fan_stop_start_freq": ["1"], + "required_nozzle_HRC": ["0"], + "slow_down_for_layer_cooling": ["1"], + "slow_down_layer_time": ["5"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["80"], + "temperature_vitrification": ["100"], + "textured_plate_temp": ["60"], + "textured_plate_temp_initial_layer": ["60"] } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic HIPS @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic HIPS @G3U 0.6 Nozzle.json index c7f9f3f1a9..27ea6c4f55 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic HIPS @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic HIPS @G3U 0.6 Nozzle.json @@ -6,66 +6,26 @@ "setting_id": "GFSA04", "instantiation": "true", "from": "system", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.6 Nozzle" - ], - "fan_cooling_layer_time": [ - "15" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "20" - ], - "filament_density": [ - "1.05" - ], - "filament_flow_ratio": [ - "1.01" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_settings_id": [ - "Flashforge Generic HIPS @G3U 0.6 Nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], - "filament_type": [ - "HIPS" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.6 Nozzle"], + "fan_cooling_layer_time": ["15"], + "fan_max_speed": ["50"], + "fan_min_speed": ["20"], + "filament_density": ["1.05"], + "filament_flow_ratio": ["1.01"], + "filament_max_volumetric_speed": ["12"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_settings_id": ["Flashforge Generic HIPS @G3U 0.6 Nozzle"], + "filament_start_gcode": ["; filament start gcode\n"], + "filament_type": ["HIPS"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], "is_custom_defined": "0", - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "50" - ], - "slow_down_min_speed": [ - "12" - ], - "support_material_interface_fan_speed": [ - "40" - ], + "nozzle_temperature": ["240"], + "nozzle_temperature_initial_layer": ["240"], + "nozzle_temperature_range_high": ["250"], + "nozzle_temperature_range_low": ["220"], + "overhang_fan_speed": ["50"], + "slow_down_min_speed": ["12"], + "support_material_interface_fan_speed": ["40"], "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic HIPS.json b/resources/profiles/Flashforge/filament/Flashforge Generic HIPS.json index a6f4f50509..771810579a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic HIPS.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic HIPS.json @@ -1,256 +1,100 @@ { - "type": "filament", - "filament_id": "GFB99", - "setting_id": "GFSA04", - "instantiation": "true", - "from": "system", - "activate_air_filtration": [ - "0" - ], - "activate_chamber_temp_control": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "2" - ], + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "activate_air_filtration": ["0"], + "activate_chamber_temp_control": ["0"], + "additional_cooling_fan_speed": ["0"], + "chamber_temperature": ["0"], + "close_fan_the_first_x_layers": ["2"], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", "Flashforge Guider 3 Ultra 0.6 Nozzle", "Flashforge Guider 3 Ultra 0.8 Nozzle", - "Flashforge Guider 2s 0.4 nozzle" + "Flashforge Guider 2s 0.4 nozzle" ], - "compatible_printers_condition": "", - "compatible_prints": [], - "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "default_filament_colour": [ - "" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "80" - ], - "eng_plate_temp_initial_layer": [ - "80" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "10" - ], - "filament_cooling_final_speed": [ - "3.4" - ], - "filament_cooling_initial_speed": [ - "2.2" - ], - "filament_cooling_moves": [ - "4" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.04" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_flow_ratio": [ - "1.01" - ], - "filament_is_support": [ - "0" - ], - "filament_load_time": [ - "0" - ], - "filament_loading_speed": [ - "28" - ], - "filament_loading_speed_start": [ - "3" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "10" - ], - "filament_multitool_ramming_volume": [ - "10" - ], - "filament_notes": [ - "" - ], - "filament_ramming_parameters": [ - "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "Flashforge Generic HIPS" - ], - "filament_shrink": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_type": [ - "HIPS" - ], - "filament_unload_time": [ - "0" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "105" - ], - "hot_plate_temp_initial_layer": [ - "105" - ], - "inherits": "Flashforge Generic ABS", - "name": "Flashforge Generic HIPS", - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "50" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.036" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "40" - ], - "temperature_vitrification": [ - "100" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "version": "1.9.0.2" + "compatible_printers_condition": "", + "compatible_prints": [], + "compatible_prints_condition": "", + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp": ["80"], + "cool_plate_temp_initial_layer": ["80"], + "default_filament_colour": [""], + "during_print_exhaust_fan_speed": ["60"], + "enable_overhang_bridge_fan": ["1"], + "enable_pressure_advance": ["1"], + "eng_plate_temp": ["80"], + "eng_plate_temp_initial_layer": ["80"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["30"], + "fan_min_speed": ["10"], + "filament_cooling_final_speed": ["3.4"], + "filament_cooling_initial_speed": ["2.2"], + "filament_cooling_moves": ["4"], + "filament_cost": ["20"], + "filament_density": ["1.04"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_flow_ratio": ["1.01"], + "filament_is_support": ["0"], + "filament_load_time": ["0"], + "filament_loading_speed": ["28"], + "filament_loading_speed_start": ["3"], + "filament_max_volumetric_speed": ["12"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_multitool_ramming": ["0"], + "filament_multitool_ramming_flow": ["10"], + "filament_multitool_ramming_volume": ["10"], + "filament_notes": [""], + "filament_ramming_parameters": [ + "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" + ], + "filament_retract_before_wipe": ["nil"], + "filament_retract_lift_above": ["nil"], + "filament_retract_lift_below": ["nil"], + "filament_retract_lift_enforce": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["nil"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": ["Flashforge Generic HIPS"], + "filament_shrink": ["100%"], + "filament_soluble": ["0"], + "filament_start_gcode": ["; filament start gcode\n"], + "filament_toolchange_delay": ["0"], + "filament_type": ["HIPS"], + "filament_unload_time": ["0"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "full_fan_speed_layer": ["0"], + "hot_plate_temp": ["105"], + "hot_plate_temp_initial_layer": ["105"], + "inherits": "Flashforge Generic ABS", + "name": "Flashforge Generic HIPS", + "nozzle_temperature": ["240"], + "nozzle_temperature_initial_layer": ["240"], + "nozzle_temperature_range_high": ["250"], + "nozzle_temperature_range_low": ["220"], + "overhang_fan_speed": ["50"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.036"], + "reduce_fan_stop_start_freq": ["1"], + "required_nozzle_HRC": ["0"], + "slow_down_for_layer_cooling": ["1"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["40"], + "temperature_vitrification": ["100"], + "textured_plate_temp": ["80"], + "textured_plate_temp_initial_layer": ["80"], + "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle.json index beda94eda7..b579db167b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle.json @@ -1,52 +1,30 @@ { - "type": "filament", - "name": "Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle", - "inherits": "Flashforge Generic HS PLA", - "renamed_from":"Flashforge HS PLA @FF AD5M 0.25 Nozzle", - "from": "system", - "setting_id": "GFSA04_09", - "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.25 Nozzle", - "Flashforge Adventurer 5M Pro 0.25 Nozzle", - "Flashforge AD5X 0.25 nozzle" - ], - "filament_id": "GFL99", - "filament_settings_id": [ - "Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle" - ], - "activate_air_filtration": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "100" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "filament_start_gcode": [ - "; filament start gcode\n;right_extruder_material: HS PLA\n" - ], - "hot_plate_temp": [ - "45" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "210" - ], - "pressure_advance": [ - "0.1" - ], - "slow_down_min_speed": [ - "15" - ], - "version": "1.8.0.0" + "type": "filament", + "name": "Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge Generic HS PLA", + "renamed_from": "Flashforge HS PLA @FF AD5M 0.25 Nozzle", + "from": "system", + "setting_id": "GFSA04_09", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.25 Nozzle", + "Flashforge Adventurer 5M Pro 0.25 Nozzle", + "Flashforge AD5X 0.25 nozzle" + ], + "filament_id": "GFL99", + "filament_settings_id": ["Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle"], + "activate_air_filtration": ["1"], + "complete_print_exhaust_fan_speed": ["100"], + "during_print_exhaust_fan_speed": ["100"], + "filament_flow_ratio": ["1"], + "filament_max_volumetric_speed": ["2"], + "filament_start_gcode": [ + "; filament start gcode\n;right_extruder_material: HS PLA\n" + ], + "hot_plate_temp": ["45"], + "hot_plate_temp_initial_layer": ["50"], + "nozzle_temperature": ["210"], + "pressure_advance": ["0.1"], + "slow_down_min_speed": ["15"], + "version": "1.8.0.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic HS PLA.json b/resources/profiles/Flashforge/filament/Flashforge Generic HS PLA.json index 3fc0c0b222..888160ac03 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic HS PLA.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic HS PLA.json @@ -6,246 +6,98 @@ "from": "system", "instantiation": "true", "inherits": "fdm_filament_pla", - "bed_temperature_difference": [ - "10" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], + "bed_temperature_difference": ["10"], + "chamber_temperature": ["0"], + "close_fan_the_first_x_layers": ["1"], "compatible_printers": [ "Flashforge Adventurer 5M 0.4 Nozzle", "Flashforge Adventurer 5M 0.6 Nozzle", - "Flashforge Adventurer 5M 0.8 Nozzle", + "Flashforge Adventurer 5M 0.8 Nozzle", "Flashforge Adventurer 5M Pro 0.4 Nozzle", "Flashforge Adventurer 5M Pro 0.6 Nozzle", - "Flashforge Adventurer 5M Pro 0.8 Nozzle", - "Flashforge AD5X 0.4 nozzle", + "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "Flashforge AD5X 0.4 nozzle", "Flashforge AD5X 0.6 nozzle", "Flashforge AD5X 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], "compatible_prints_condition": "", - "cool_plate_temp": [ - "60" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "default_filament_colour": [ - "" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cooling_final_speed": [ - "3.4" - ], - "filament_cooling_initial_speed": [ - "2.2" - ], - "filament_cooling_moves": [ - "4" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_load_time": [ - "0" - ], - "filament_loading_speed": [ - "28" - ], - "filament_loading_speed_start": [ - "3" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "10" - ], - "filament_multitool_ramming_volume": [ - "10" - ], - "filament_notes": [ - "" - ], + "cool_plate_temp": ["60"], + "cool_plate_temp_initial_layer": ["60"], + "default_filament_colour": [""], + "enable_overhang_bridge_fan": ["1"], + "enable_pressure_advance": ["1"], + "eng_plate_temp": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "fan_cooling_layer_time": ["100"], + "fan_max_speed": ["100"], + "fan_min_speed": ["100"], + "filament_cooling_final_speed": ["3.4"], + "filament_cooling_initial_speed": ["2.2"], + "filament_cooling_moves": ["4"], + "filament_cost": ["20"], + "filament_density": ["1.24"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_end_gcode": ["; filament end gcode \n"], + "filament_flow_ratio": ["0.98"], + "filament_is_support": ["0"], + "filament_load_time": ["0"], + "filament_loading_speed": ["28"], + "filament_loading_speed_start": ["3"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_multitool_ramming": ["0"], + "filament_multitool_ramming_flow": ["10"], + "filament_multitool_ramming_volume": ["10"], + "filament_notes": [""], "filament_ramming_parameters": [ "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "Flashforge HS PLA" - ], - "filament_shrink": [ - "100%" - ], - "filament_soluble": [ - "0" - ], + "filament_retract_before_wipe": ["nil"], + "filament_retract_lift_above": ["nil"], + "filament_retract_lift_below": ["nil"], + "filament_retract_lift_enforce": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["nil"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": ["Flashforge HS PLA"], + "filament_shrink": ["100%"], + "filament_soluble": ["0"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:HS PLA\n" ], - "filament_toolchange_delay": [ - "0" - ], - "filament_type": [ - "PLA" - ], - "filament_unload_time": [ - "0" - ], - "filament_unloading_speed": [ - "90" - ], - "filament_unloading_speed_start": [ - "100" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "hot_plate_temp": [ - "50" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "230" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.025" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "slow_down_layer_time": [ - "6" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "additional_cooling_fan_speed": [ - "100" - ] + "filament_toolchange_delay": ["0"], + "filament_type": ["PLA"], + "filament_unload_time": ["0"], + "filament_unloading_speed": ["90"], + "filament_unloading_speed_start": ["100"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "full_fan_speed_layer": ["0"], + "hot_plate_temp_initial_layer": ["55"], + "hot_plate_temp": ["50"], + "nozzle_temperature": ["220"], + "nozzle_temperature_initial_layer": ["220"], + "nozzle_temperature_range_high": ["230"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_speed": ["100"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.025"], + "reduce_fan_stop_start_freq": ["1"], + "required_nozzle_HRC": ["0"], + "slow_down_for_layer_cooling": ["1"], + "temperature_vitrification": ["60"], + "textured_plate_temp": ["60"], + "textured_plate_temp_initial_layer": ["60"], + "slow_down_layer_time": ["6"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], + "additional_cooling_fan_speed": ["100"] } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @FF AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic PETG @FF AD5M 0.25 Nozzle.json index 972945be50..1446d9c507 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @FF AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PETG @FF AD5M 0.25 Nozzle.json @@ -1,31 +1,21 @@ { - "type": "filament", - "name": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", - "inherits": "Flashforge Generic PETG", - "renamed_from":"Flashforge PETG @FF AD5M 0.25 Nozzle", - "from": "system", - "setting_id": "GFSA04_12", - "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.25 Nozzle", - "Flashforge Adventurer 5M Pro 0.25 Nozzle", - "Flashforge AD5X 0.25 nozzle" - ], - "filament_id": "GFG99", - "filament_settings_id": [ - "Flashforge Generic PETG @FF AD5M 0.25 Nozzle" - ], - "fan_max_speed": [ - "80" - ], - "filament_max_volumetric_speed": [ - "1.5" - ], - "pressure_advance": [ - "0.1" - ], - "slow_down_min_speed": [ - "15" - ], - "version": "1.8.0.0" + "type": "filament", + "name": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge Generic PETG", + "renamed_from": "Flashforge PETG @FF AD5M 0.25 Nozzle", + "from": "system", + "setting_id": "GFSA04_12", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.25 Nozzle", + "Flashforge Adventurer 5M Pro 0.25 Nozzle", + "Flashforge AD5X 0.25 nozzle" + ], + "filament_id": "GFG99", + "filament_settings_id": ["Flashforge Generic PETG @FF AD5M 0.25 Nozzle"], + "fan_max_speed": ["80"], + "filament_max_volumetric_speed": ["1.5"], + "pressure_advance": ["0.1"], + "slow_down_min_speed": ["15"], + "version": "1.8.0.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.6 Nozzle.json index 04900a249f..1efd5abd4c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.6 Nozzle.json @@ -6,57 +6,23 @@ "setting_id": "GFSA04", "instantiation": "true", "from": "system", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.6 Nozzle" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "80" - ], - "filament_flow_ratio": [ - "1.01" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_settings_id": [ - "Flashforge Generic PETG @G3U 0.6 Nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.6 Nozzle"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["100"], + "fan_min_speed": ["80"], + "filament_flow_ratio": ["1.01"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_settings_id": ["Flashforge Generic PETG @G3U 0.6 Nozzle"], + "filament_start_gcode": ["; filament start gcode"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], "is_custom_defined": "0", - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "pressure_advance": [ - "0.042" - ], - "slow_down_min_speed": [ - "12" - ], + "nozzle_temperature": ["250"], + "nozzle_temperature_initial_layer": ["250"], + "nozzle_temperature_range_low": ["230"], + "pressure_advance": ["0.042"], + "slow_down_min_speed": ["12"], "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.8 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.8 Nozzle.json index 668dcd9c55..7f40e41675 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.8 Nozzle.json @@ -6,57 +6,23 @@ "setting_id": "GFSA04", "instantiation": "true", "from": "system", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.8 Nozzle" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "80" - ], - "filament_flow_ratio": [ - "0.99" - ], - "filament_max_volumetric_speed": [ - "15" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_settings_id": [ - "Flashforge Generic PETG @G3U 0.8 Nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.8 Nozzle"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["100"], + "fan_min_speed": ["80"], + "filament_flow_ratio": ["0.99"], + "filament_max_volumetric_speed": ["15"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_settings_id": ["Flashforge Generic PETG @G3U 0.8 Nozzle"], + "filament_start_gcode": ["; filament start gcode"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], "is_custom_defined": "0", - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "slow_down_min_speed": [ - "12" - ], + "nozzle_temperature": ["250"], + "nozzle_temperature_initial_layer": ["250"], + "nozzle_temperature_range_low": ["230"], + "slow_down_min_speed": ["12"], "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U.json b/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U.json index 7daa86d2cf..e8714f2ed1 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U.json @@ -1,256 +1,100 @@ { - "type": "filament", - "filament_id": "GFB99", - "setting_id": "GFSA04", - "instantiation": "true", - "from": "system", - "activate_air_filtration": [ - "0" - ], - "activate_chamber_temp_control": [ - "0" - ], - "additional_cooling_fan_speed": [ - "50" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "activate_air_filtration": ["0"], + "activate_chamber_temp_control": ["0"], + "additional_cooling_fan_speed": ["50"], + "chamber_temperature": ["0"], + "close_fan_the_first_x_layers": ["1"], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", "Flashforge Guider 3 Ultra 0.6 Nozzle", "Flashforge Guider 3 Ultra 0.8 Nozzle", "Flashforge Guider 2s 0.4 nozzle" ], - "compatible_printers_condition": "", - "compatible_prints": [], - "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "85" - ], - "cool_plate_temp_initial_layer": [ - "85" - ], - "default_filament_colour": [ - "" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "85" - ], - "eng_plate_temp_initial_layer": [ - "85" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "80" - ], - "filament_cooling_final_speed": [ - "3.4" - ], - "filament_cooling_initial_speed": [ - "2.2" - ], - "filament_cooling_moves": [ - "4" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_load_time": [ - "0" - ], - "filament_loading_speed": [ - "28" - ], - "filament_loading_speed_start": [ - "3" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "10" - ], - "filament_multitool_ramming_volume": [ - "10" - ], - "filament_notes": [ - "" - ], - "filament_ramming_parameters": [ - "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "Flashforge Generic PETG @G3U" - ], - "filament_shrink": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_type": [ - "PETG" - ], - "filament_unload_time": [ - "0" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], - "inherits": "Flashforge Generic PETG", - "name": "Flashforge Generic PETG @G3U", - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.036" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "90" - ], - "temperature_vitrification": [ - "70" - ], - "textured_plate_temp": [ - "85" - ], - "textured_plate_temp_initial_layer": [ - "85" - ], - "version": "1.9.0.2" + "compatible_printers_condition": "", + "compatible_prints": [], + "compatible_prints_condition": "", + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp": ["85"], + "cool_plate_temp_initial_layer": ["85"], + "default_filament_colour": [""], + "during_print_exhaust_fan_speed": ["60"], + "enable_overhang_bridge_fan": ["1"], + "enable_pressure_advance": ["1"], + "eng_plate_temp": ["85"], + "eng_plate_temp_initial_layer": ["85"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["100"], + "fan_min_speed": ["80"], + "filament_cooling_final_speed": ["3.4"], + "filament_cooling_initial_speed": ["2.2"], + "filament_cooling_moves": ["4"], + "filament_cost": ["30"], + "filament_density": ["1.27"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_flow_ratio": ["0.97"], + "filament_is_support": ["0"], + "filament_load_time": ["0"], + "filament_loading_speed": ["28"], + "filament_loading_speed_start": ["3"], + "filament_max_volumetric_speed": ["12"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_multitool_ramming": ["0"], + "filament_multitool_ramming_flow": ["10"], + "filament_multitool_ramming_volume": ["10"], + "filament_notes": [""], + "filament_ramming_parameters": [ + "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" + ], + "filament_retract_before_wipe": ["nil"], + "filament_retract_lift_above": ["nil"], + "filament_retract_lift_below": ["nil"], + "filament_retract_lift_enforce": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["nil"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": ["Flashforge Generic PETG @G3U"], + "filament_shrink": ["100%"], + "filament_soluble": ["0"], + "filament_start_gcode": ["; filament start gcode"], + "filament_toolchange_delay": ["0"], + "filament_type": ["PETG"], + "filament_unload_time": ["0"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "full_fan_speed_layer": ["0"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], + "inherits": "Flashforge Generic PETG", + "name": "Flashforge Generic PETG @G3U", + "nozzle_temperature": ["250"], + "nozzle_temperature_initial_layer": ["250"], + "nozzle_temperature_range_high": ["260"], + "nozzle_temperature_range_low": ["230"], + "overhang_fan_speed": ["80"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.036"], + "reduce_fan_stop_start_freq": ["1"], + "required_nozzle_HRC": ["0"], + "slow_down_for_layer_cooling": ["1"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["90"], + "temperature_vitrification": ["70"], + "textured_plate_temp": ["85"], + "textured_plate_temp_initial_layer": ["85"], + "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.6 Nozzle.json index 25628fda40..8de454657d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.6 Nozzle.json @@ -6,63 +6,25 @@ "setting_id": "GFSA04", "instantiation": "true", "from": "system", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.6 Nozzle" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "80" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_settings_id": [ - "Flashforge Generic PETG-CF @G3U 0.6 Nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_type": [ - "PETG-CF" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.6 Nozzle"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["100"], + "fan_min_speed": ["80"], + "filament_flow_ratio": ["0.95"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_settings_id": ["Flashforge Generic PETG-CF @G3U 0.6 Nozzle"], + "filament_start_gcode": ["; filament start gcode"], + "filament_type": ["PETG-CF"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], + "hot_plate_temp_initial_layer": ["75"], "is_custom_defined": "0", - "nozzle_temperature": [ - "225" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "pressure_advance": [ - "0.042" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "12" - ], + "nozzle_temperature": ["225"], + "nozzle_temperature_initial_layer": ["230"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["210"], + "pressure_advance": ["0.042"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["12"], "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.8 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.8 Nozzle.json index 507086f424..fb3d01c321 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.8 Nozzle.json @@ -6,63 +6,25 @@ "setting_id": "GFSA04", "instantiation": "true", "from": "system", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.8 Nozzle" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "80" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_max_volumetric_speed": [ - "15" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_settings_id": [ - "Flashforge Generic PETG-CF @G3U 0.8 Nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_type": [ - "PETG-CF" - ], - "filament_unloading_speed": [ - "40" - ], - "filament_unloading_speed_start": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.8 Nozzle"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["100"], + "fan_min_speed": ["80"], + "filament_flow_ratio": ["0.96"], + "filament_max_volumetric_speed": ["15"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_settings_id": ["Flashforge Generic PETG-CF @G3U 0.8 Nozzle"], + "filament_start_gcode": ["; filament start gcode"], + "filament_type": ["PETG-CF"], + "filament_unloading_speed": ["40"], + "filament_unloading_speed_start": ["40"], + "hot_plate_temp_initial_layer": ["75"], "is_custom_defined": "0", - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "12" - ], + "nozzle_temperature": ["230"], + "nozzle_temperature_initial_layer": ["230"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["210"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["12"], "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U.json b/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U.json index bc5cc30683..53fddd7a56 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U.json @@ -1,256 +1,100 @@ { - "type": "filament", - "filament_id": "GFB99", - "setting_id": "GFSA04", - "instantiation": "true", - "from": "system", - "activate_air_filtration": [ - "0" - ], - "activate_chamber_temp_control": [ - "0" - ], - "additional_cooling_fan_speed": [ - "50" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "activate_air_filtration": ["0"], + "activate_chamber_temp_control": ["0"], + "additional_cooling_fan_speed": ["50"], + "chamber_temperature": ["0"], + "close_fan_the_first_x_layers": ["1"], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", "Flashforge Guider 3 Ultra 0.6 Nozzle", "Flashforge Guider 3 Ultra 0.8 Nozzle", "Flashforge Guider 2s 0.4 nozzle" ], - "compatible_printers_condition": "", - "compatible_prints": [], - "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "85" - ], - "cool_plate_temp_initial_layer": [ - "85" - ], - "default_filament_colour": [ - "" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "85" - ], - "eng_plate_temp_initial_layer": [ - "85" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "80" - ], - "filament_cooling_final_speed": [ - "3.4" - ], - "filament_cooling_initial_speed": [ - "2.2" - ], - "filament_cooling_moves": [ - "4" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_load_time": [ - "0" - ], - "filament_loading_speed": [ - "28" - ], - "filament_loading_speed_start": [ - "3" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "10" - ], - "filament_multitool_ramming_volume": [ - "10" - ], - "filament_notes": [ - "" - ], - "filament_ramming_parameters": [ - "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "Flashforge Generic PETG-CF @G3U" - ], - "filament_shrink": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_type": [ - "PETG-CF" - ], - "filament_unload_time": [ - "0" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], - "inherits": "Flashforge Generic PETG", - "name": "Flashforge Generic PETG-CF @G3U", - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "225" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.036" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "90" - ], - "temperature_vitrification": [ - "70" - ], - "textured_plate_temp": [ - "85" - ], - "textured_plate_temp_initial_layer": [ - "85" - ], - "version": "1.9.0.2" + "compatible_printers_condition": "", + "compatible_prints": [], + "compatible_prints_condition": "", + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp": ["85"], + "cool_plate_temp_initial_layer": ["85"], + "default_filament_colour": [""], + "during_print_exhaust_fan_speed": ["60"], + "enable_overhang_bridge_fan": ["1"], + "enable_pressure_advance": ["1"], + "eng_plate_temp": ["85"], + "eng_plate_temp_initial_layer": ["85"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["100"], + "fan_min_speed": ["80"], + "filament_cooling_final_speed": ["3.4"], + "filament_cooling_initial_speed": ["2.2"], + "filament_cooling_moves": ["4"], + "filament_cost": ["30"], + "filament_density": ["1.27"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_flow_ratio": ["0.95"], + "filament_is_support": ["0"], + "filament_load_time": ["0"], + "filament_loading_speed": ["28"], + "filament_loading_speed_start": ["3"], + "filament_max_volumetric_speed": ["12"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_multitool_ramming": ["0"], + "filament_multitool_ramming_flow": ["10"], + "filament_multitool_ramming_volume": ["10"], + "filament_notes": [""], + "filament_ramming_parameters": [ + "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" + ], + "filament_retract_before_wipe": ["nil"], + "filament_retract_lift_above": ["nil"], + "filament_retract_lift_below": ["nil"], + "filament_retract_lift_enforce": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["nil"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": ["Flashforge Generic PETG-CF @G3U"], + "filament_shrink": ["100%"], + "filament_soluble": ["0"], + "filament_start_gcode": ["; filament start gcode"], + "filament_toolchange_delay": ["0"], + "filament_type": ["PETG-CF"], + "filament_unload_time": ["0"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "full_fan_speed_layer": ["0"], + "hot_plate_temp": ["70"], + "hot_plate_temp_initial_layer": ["75"], + "inherits": "Flashforge Generic PETG", + "name": "Flashforge Generic PETG-CF @G3U", + "nozzle_temperature": ["220"], + "nozzle_temperature_initial_layer": ["225"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["210"], + "overhang_fan_speed": ["80"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.036"], + "reduce_fan_stop_start_freq": ["1"], + "required_nozzle_HRC": ["0"], + "slow_down_for_layer_cooling": ["1"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["90"], + "temperature_vitrification": ["70"], + "textured_plate_temp": ["85"], + "textured_plate_temp_initial_layer": ["85"], + "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF10.json b/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF10.json index ebbaa365c0..d0015cdaca 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF10.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF10.json @@ -6,187 +6,75 @@ "from": "system", "instantiation": "true", "inherits": "fdm_filament_pet", - "additional_cooling_fan_speed": [ - "100" - ], - "bed_temperature_difference": [ - "10" - ], + "additional_cooling_fan_speed": ["100"], + "bed_temperature_difference": ["10"], "chamber_temperature": "0", - "close_fan_the_first_x_layers": [ - "1" - ], + "close_fan_the_first_x_layers": ["1"], "compatible_printers": [ "Flashforge Adventurer 5M 0.4 Nozzle", "Flashforge Adventurer 5M 0.6 Nozzle", - "Flashforge Adventurer 5M 0.8 Nozzle", + "Flashforge Adventurer 5M 0.8 Nozzle", "Flashforge Adventurer 5M Pro 0.4 Nozzle", "Flashforge Adventurer 5M Pro 0.6 Nozzle", - "Flashforge Adventurer 5M Pro 0.8 Nozzle" + "Flashforge Adventurer 5M Pro 0.8 Nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], "compatible_prints_condition": "", - "cool_plate_temp": [ - "60" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "default_filament_colour": [ - "" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "80" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "Flashforge PETG-CF10" - ], - "filament_shrink": [ - "100%" - ], - "filament_soluble": [ - "0" - ], + "cool_plate_temp": ["60"], + "cool_plate_temp_initial_layer": ["60"], + "default_filament_colour": [""], + "enable_overhang_bridge_fan": ["1"], + "enable_pressure_advance": ["1"], + "eng_plate_temp": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["100"], + "fan_min_speed": ["80"], + "filament_cost": ["30"], + "filament_density": ["1.27"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_end_gcode": ["; filament end gcode \n"], + "filament_flow_ratio": ["1"], + "filament_is_support": ["0"], + "filament_max_volumetric_speed": ["12"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_retract_before_wipe": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["nil"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": ["Flashforge PETG-CF10"], + "filament_shrink": ["100%"], + "filament_soluble": ["0"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PETG-CF10\n" ], - "filament_type": [ - "PETG-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "245" - ], - "nozzle_temperature_initial_layer": [ - "245" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.035" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "temperature_vitrification": [ - "70" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "60" - ] + "filament_type": ["PETG-CF"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "full_fan_speed_layer": ["0"], + "hot_plate_temp": ["70"], + "hot_plate_temp_initial_layer": ["70"], + "nozzle_temperature": ["245"], + "nozzle_temperature_initial_layer": ["245"], + "nozzle_temperature_range_high": ["260"], + "nozzle_temperature_range_low": ["220"], + "overhang_fan_speed": ["90"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.035"], + "reduce_fan_stop_start_freq": ["1"], + "required_nozzle_HRC": ["0"], + "slow_down_for_layer_cooling": ["1"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], + "temperature_vitrification": ["70"], + "textured_plate_temp": ["60"], + "textured_plate_temp_initial_layer": ["60"] } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG.json b/resources/profiles/Flashforge/filament/Flashforge Generic PETG.json index a3ed81aea1..3421864e2f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PETG.json @@ -6,81 +6,33 @@ "from": "system", "instantiation": "true", "inherits": "fdm_filament_pet", - "filament_flow_ratio": [ - "1" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "temperature_vitrification": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "hot_plate_temp": [ - "70" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "slow_down_min_speed": [ - "30" - ], - "overhang_fan_speed": [ - "80" - ], - "support_material_interface_fan_speed": [ - "90" - ], - "additional_cooling_fan_speed": [ - "50" - ], + "filament_flow_ratio": ["1"], + "filament_max_volumetric_speed": ["12"], + "temperature_vitrification": ["70"], + "hot_plate_temp_initial_layer": ["70"], + "hot_plate_temp": ["70"], + "close_fan_the_first_x_layers": ["1"], + "slow_down_min_speed": ["30"], + "overhang_fan_speed": ["80"], + "support_material_interface_fan_speed": ["90"], + "additional_cooling_fan_speed": ["50"], "filament_start_gcode": [ "; filament start gcode \n;right_extruder_material:PETG" ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_diameter": [ - "1.75" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.046" - ], - "filament_density": [ - "1.27" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "255" - ], - "nozzle_temperature": [ - "255" - ], - "fan_cooling_layer_time": [ - "30" - ], - "slow_down_layer_time": [ - "8" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_diameter": ["1.75"], + "enable_pressure_advance": ["1"], + "pressure_advance": ["0.046"], + "filament_density": ["1.27"], + "nozzle_temperature_range_low": ["220"], + "nozzle_temperature_range_high": ["260"], + "nozzle_temperature_initial_layer": ["255"], + "nozzle_temperature": ["255"], + "fan_cooling_layer_time": ["30"], + "slow_down_layer_time": ["8"], + "fan_max_speed": ["100"], + "fan_min_speed": ["80"], + "overhang_fan_threshold": ["25%"], "compatible_printers": [ "Flashforge Adventurer 5M 0.4 Nozzle", "Flashforge Adventurer 5M 0.6 Nozzle", diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA @FF AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic PLA @FF AD5M 0.25 Nozzle.json index 5516ac9026..b8f88dd31d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA @FF AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PLA @FF AD5M 0.25 Nozzle.json @@ -1,51 +1,27 @@ { - "type": "filament", - "name": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "inherits": "Flashforge Generic PLA", - "renamed_from":"Flashforge PLA @FF AD5M 0.25 Nozzle", - "from": "system", - "setting_id": "FFGP01_01", - "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.25 Nozzle", - "Flashforge Adventurer 5M Pro 0.25 Nozzle", - "Flashforge AD5X 0.25 nozzle" - ], - "filament_settings_id": [ - "Flashforge Generic PLA @FF AD5M 0.25 Nozzle" - ], - "activate_air_filtration": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "100" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_max_volumetric_speed": [ - "2.8" - ], - "hot_plate_temp": [ - "45" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "15" - ], - "version": "1.8.0.0" + "type": "filament", + "name": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge Generic PLA", + "renamed_from": "Flashforge PLA @FF AD5M 0.25 Nozzle", + "from": "system", + "setting_id": "FFGP01_01", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.25 Nozzle", + "Flashforge Adventurer 5M Pro 0.25 Nozzle", + "Flashforge AD5X 0.25 nozzle" + ], + "filament_settings_id": ["Flashforge Generic PLA @FF AD5M 0.25 Nozzle"], + "activate_air_filtration": ["1"], + "complete_print_exhaust_fan_speed": ["100"], + "during_print_exhaust_fan_speed": ["100"], + "filament_flow_ratio": ["1"], + "filament_max_volumetric_speed": ["2.8"], + "hot_plate_temp": ["45"], + "hot_plate_temp_initial_layer": ["50"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.1"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["15"], + "version": "1.8.0.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.6 Nozzle.json index 2fbc4b9eff..601e94464d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.6 Nozzle.json @@ -5,51 +5,21 @@ "setting_id": "FFGP02_01", "instantiation": "false", "from": "system", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.6 Nozzle" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "fan_cooling_layer_time": [ - "50" - ], - "filament_flow_ratio": [ - "0.99" - ], - "filament_max_volumetric_speed": [ - "20" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_settings_id": [ - "Flashforge Generic PLA @G3U 0.6 Nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode\n\n\n" - ], - "filament_unloading_speed": [ - "40" - ], - "filament_unloading_speed_start": [ - "40" - ], - "hot_plate_temp": [ - "55" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.6 Nozzle"], + "additional_cooling_fan_speed": ["80"], + "fan_cooling_layer_time": ["50"], + "filament_flow_ratio": ["0.99"], + "filament_max_volumetric_speed": ["20"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_settings_id": ["Flashforge Generic PLA @G3U 0.6 Nozzle"], + "filament_start_gcode": ["; filament start gcode\n\n\n"], + "filament_unloading_speed": ["40"], + "filament_unloading_speed_start": ["40"], + "hot_plate_temp": ["55"], "is_custom_defined": "0", - "nozzle_temperature_range_low": [ - "200" - ], - "pressure_advance": [ - "0.042" - ], - "slow_down_layer_time": [ - "15" - ], - "slow_down_min_speed": [ - "15" - ], + "nozzle_temperature_range_low": ["200"], + "pressure_advance": ["0.042"], + "slow_down_layer_time": ["15"], + "slow_down_min_speed": ["15"], "version": "1.8.0.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.8 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.8 Nozzle.json index 7406e8b9da..ca0deb9c81 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.8 Nozzle.json @@ -5,57 +5,23 @@ "setting_id": "FFGP02_01", "instantiation": "false", "from": "system", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.8 Nozzle" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "fan_cooling_layer_time": [ - "50" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_settings_id": [ - "Flashforge Generic PLA @G3U 0.8 Nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode\n\n\n" - ], - "filament_unloading_speed": [ - "40" - ], - "filament_unloading_speed_start": [ - "40" - ], - "hot_plate_temp": [ - "55" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.8 Nozzle"], + "additional_cooling_fan_speed": ["80"], + "fan_cooling_layer_time": ["50"], + "filament_flow_ratio": ["0.97"], + "filament_max_volumetric_speed": ["23"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_settings_id": ["Flashforge Generic PLA @G3U 0.8 Nozzle"], + "filament_start_gcode": ["; filament start gcode\n\n\n"], + "filament_unloading_speed": ["40"], + "filament_unloading_speed_start": ["40"], + "hot_plate_temp": ["55"], "is_custom_defined": "0", - "nozzle_temperature": [ - "225" - ], - "nozzle_temperature_initial_layer": [ - "225" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "pressure_advance": [ - "0.042" - ], - "slow_down_layer_time": [ - "15" - ], - "slow_down_min_speed": [ - "15" - ], + "nozzle_temperature": ["225"], + "nozzle_temperature_initial_layer": ["225"], + "nozzle_temperature_range_low": ["200"], + "pressure_advance": ["0.042"], + "slow_down_layer_time": ["15"], + "slow_down_min_speed": ["15"], "version": "1.8.0.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U.json b/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U.json index b4e7f7560a..0108ace46a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U.json @@ -1,256 +1,100 @@ { - "type": "filament", - "filament_id": "FFG01", - "setting_id": "FFGP02", - "instantiation": "true", - "from": "system", - "activate_air_filtration": [ - "0" - ], - "activate_chamber_temp_control": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], + "type": "filament", + "filament_id": "FFG01", + "setting_id": "FFGP02", + "instantiation": "true", + "from": "system", + "activate_air_filtration": ["0"], + "activate_chamber_temp_control": ["0"], + "additional_cooling_fan_speed": ["80"], + "chamber_temperature": ["0"], + "close_fan_the_first_x_layers": ["1"], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", "Flashforge Guider 3 Ultra 0.6 Nozzle", "Flashforge Guider 3 Ultra 0.8 Nozzle", "Flashforge Guider 2s 0.4 nozzle" ], - "compatible_printers_condition": "", - "compatible_prints": [], - "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "60" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "default_filament_colour": [ - "" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cooling_final_speed": [ - "3.4" - ], - "filament_cooling_initial_speed": [ - "2.2" - ], - "filament_cooling_moves": [ - "4" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_load_time": [ - "0" - ], - "filament_loading_speed": [ - "28" - ], - "filament_loading_speed_start": [ - "3" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "10" - ], - "filament_multitool_ramming_volume": [ - "10" - ], - "filament_notes": [ - "" - ], - "filament_ramming_parameters": [ - "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "Flashforge Generic PLA @G3U" - ], - "filament_shrink": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode\n\n\n" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_type": [ - "PLA" - ], - "filament_unload_time": [ - "0" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "inherits": "Flashforge Generic PLA", - "name": "Flashforge Generic PLA @G3U", - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "230" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.03" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "6" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "version": "1.8.0.0" + "compatible_printers_condition": "", + "compatible_prints": [], + "compatible_prints_condition": "", + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp": ["60"], + "cool_plate_temp_initial_layer": ["55"], + "default_filament_colour": [""], + "during_print_exhaust_fan_speed": ["60"], + "enable_overhang_bridge_fan": ["1"], + "enable_pressure_advance": ["1"], + "eng_plate_temp": ["60"], + "eng_plate_temp_initial_layer": ["55"], + "fan_cooling_layer_time": ["100"], + "fan_max_speed": ["100"], + "fan_min_speed": ["100"], + "filament_cooling_final_speed": ["3.4"], + "filament_cooling_initial_speed": ["2.2"], + "filament_cooling_moves": ["4"], + "filament_cost": ["20"], + "filament_density": ["1.24"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_flow_ratio": ["1"], + "filament_is_support": ["0"], + "filament_load_time": ["0"], + "filament_loading_speed": ["28"], + "filament_loading_speed_start": ["3"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_multitool_ramming": ["0"], + "filament_multitool_ramming_flow": ["10"], + "filament_multitool_ramming_volume": ["10"], + "filament_notes": [""], + "filament_ramming_parameters": [ + "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" + ], + "filament_retract_before_wipe": ["nil"], + "filament_retract_lift_above": ["nil"], + "filament_retract_lift_below": ["nil"], + "filament_retract_lift_enforce": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["nil"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": ["Flashforge Generic PLA @G3U"], + "filament_shrink": ["100%"], + "filament_soluble": ["0"], + "filament_start_gcode": ["; filament start gcode\n\n\n"], + "filament_toolchange_delay": ["0"], + "filament_type": ["PLA"], + "filament_unload_time": ["0"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "full_fan_speed_layer": ["0"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["55"], + "inherits": "Flashforge Generic PLA", + "name": "Flashforge Generic PLA @G3U", + "nozzle_temperature": ["220"], + "nozzle_temperature_initial_layer": ["220"], + "nozzle_temperature_range_high": ["230"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_speed": ["100"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.03"], + "reduce_fan_stop_start_freq": ["1"], + "required_nozzle_HRC": ["0"], + "slow_down_for_layer_cooling": ["1"], + "slow_down_layer_time": ["6"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], + "temperature_vitrification": ["60"], + "textured_plate_temp": ["60"], + "textured_plate_temp_initial_layer": ["55"], + "version": "1.8.0.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.6 Nozzle.json index 0fac41e168..67ac79dd1e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.6 Nozzle.json @@ -6,60 +6,24 @@ "setting_id": "GFSA04", "instantiation": "true", "from": "system", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.6 Nozzle" - ], - "fan_cooling_layer_time": [ - "50" - ], - "fan_min_speed": [ - "70" - ], - "filament_density": [ - "1.28" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_max_volumetric_speed": [ - "20" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_settings_id": [ - "Flashforge Generic PLA-CF @G3U 0.6 Nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_unloading_speed": [ - "40" - ], - "filament_unloading_speed_start": [ - "40" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.6 Nozzle"], + "fan_cooling_layer_time": ["50"], + "fan_min_speed": ["70"], + "filament_density": ["1.28"], + "filament_flow_ratio": ["1"], + "filament_max_volumetric_speed": ["20"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_settings_id": ["Flashforge Generic PLA-CF @G3U 0.6 Nozzle"], + "filament_start_gcode": ["; filament start gcode\n"], + "filament_type": ["PLA-CF"], + "filament_unloading_speed": ["40"], + "filament_unloading_speed_start": ["40"], "is_custom_defined": "0", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "pressure_advance": [ - "0.044" - ], - "slow_down_layer_time": [ - "15" - ], - "slow_down_min_speed": [ - "15" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "nozzle_temperature_range_low": ["200"], + "pressure_advance": ["0.044"], + "slow_down_layer_time": ["15"], + "slow_down_min_speed": ["15"], "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.8 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.8 Nozzle.json index 9351a015c8..77abd036ae 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.8 Nozzle.json @@ -6,60 +6,24 @@ "setting_id": "GFSA04", "instantiation": "true", "from": "system", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.8 Nozzle" - ], - "fan_cooling_layer_time": [ - "50" - ], - "fan_min_speed": [ - "90" - ], - "filament_density": [ - "1.28" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_max_volumetric_speed": [ - "22" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_settings_id": [ - "Flashforge Generic PLA-CF @G3U 0.8 Nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_unloading_speed": [ - "40" - ], - "filament_unloading_speed_start": [ - "40" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.8 Nozzle"], + "fan_cooling_layer_time": ["50"], + "fan_min_speed": ["90"], + "filament_density": ["1.28"], + "filament_flow_ratio": ["0.97"], + "filament_max_volumetric_speed": ["22"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_settings_id": ["Flashforge Generic PLA-CF @G3U 0.8 Nozzle"], + "filament_start_gcode": ["; filament start gcode\n"], + "filament_type": ["PLA-CF"], + "filament_unloading_speed": ["40"], + "filament_unloading_speed_start": ["40"], "is_custom_defined": "0", - "nozzle_temperature": [ - "215" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "pressure_advance": [ - "0.044" - ], - "slow_down_layer_time": [ - "15" - ], - "slow_down_min_speed": [ - "15" - ], + "nozzle_temperature": ["215"], + "nozzle_temperature_initial_layer": ["215"], + "nozzle_temperature_range_low": ["200"], + "pressure_advance": ["0.044"], + "slow_down_layer_time": ["15"], + "slow_down_min_speed": ["15"], "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U.json b/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U.json index 0b7f6ab313..adecfc75db 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U.json @@ -1,256 +1,100 @@ { - "type": "filament", - "filament_id": "GFB99", - "setting_id": "GFSA04", - "instantiation": "true", - "from": "system", - "activate_air_filtration": [ - "0" - ], - "activate_chamber_temp_control": [ - "0" - ], - "additional_cooling_fan_speed": [ - "100" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "activate_air_filtration": ["0"], + "activate_chamber_temp_control": ["0"], + "additional_cooling_fan_speed": ["100"], + "chamber_temperature": ["0"], + "close_fan_the_first_x_layers": ["1"], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", "Flashforge Guider 3 Ultra 0.6 Nozzle", "Flashforge Guider 3 Ultra 0.8 Nozzle", "Flashforge Guider 2s 0.4 nozzle" ], - "compatible_printers_condition": "", - "compatible_prints": [], - "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "60" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "default_filament_colour": [ - "" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "50" - ], - "filament_cooling_final_speed": [ - "3.4" - ], - "filament_cooling_initial_speed": [ - "2.2" - ], - "filament_cooling_moves": [ - "4" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_flow_ratio": [ - "1.02" - ], - "filament_is_support": [ - "0" - ], - "filament_load_time": [ - "0" - ], - "filament_loading_speed": [ - "28" - ], - "filament_loading_speed_start": [ - "3" - ], - "filament_max_volumetric_speed": [ - "20" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "10" - ], - "filament_multitool_ramming_volume": [ - "10" - ], - "filament_notes": [ - "" - ], - "filament_ramming_parameters": [ - "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "Flashforge Generic PLA-CF @G3U" - ], - "filament_shrink": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_unload_time": [ - "0" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "inherits": "Flashforge Generic PLA", - "name": "Flashforge Generic PLA-CF @G3U", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "nozzle_temperature_range_high": [ - "230" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.026" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "6" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "version": "1.9.0.2" + "compatible_printers_condition": "", + "compatible_prints": [], + "compatible_prints_condition": "", + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp": ["60"], + "cool_plate_temp_initial_layer": ["55"], + "default_filament_colour": [""], + "during_print_exhaust_fan_speed": ["60"], + "enable_overhang_bridge_fan": ["1"], + "enable_pressure_advance": ["1"], + "eng_plate_temp": ["60"], + "eng_plate_temp_initial_layer": ["55"], + "fan_cooling_layer_time": ["100"], + "fan_max_speed": ["100"], + "fan_min_speed": ["50"], + "filament_cooling_final_speed": ["3.4"], + "filament_cooling_initial_speed": ["2.2"], + "filament_cooling_moves": ["4"], + "filament_cost": ["20"], + "filament_density": ["1.24"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_flow_ratio": ["1.02"], + "filament_is_support": ["0"], + "filament_load_time": ["0"], + "filament_loading_speed": ["28"], + "filament_loading_speed_start": ["3"], + "filament_max_volumetric_speed": ["20"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_multitool_ramming": ["0"], + "filament_multitool_ramming_flow": ["10"], + "filament_multitool_ramming_volume": ["10"], + "filament_notes": [""], + "filament_ramming_parameters": [ + "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" + ], + "filament_retract_before_wipe": ["nil"], + "filament_retract_lift_above": ["nil"], + "filament_retract_lift_below": ["nil"], + "filament_retract_lift_enforce": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["nil"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": ["Flashforge Generic PLA-CF @G3U"], + "filament_shrink": ["100%"], + "filament_soluble": ["0"], + "filament_start_gcode": ["; filament start gcode\n"], + "filament_toolchange_delay": ["0"], + "filament_type": ["PLA-CF"], + "filament_unload_time": ["0"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "full_fan_speed_layer": ["0"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["55"], + "inherits": "Flashforge Generic PLA", + "name": "Flashforge Generic PLA-CF @G3U", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "nozzle_temperature_range_high": ["230"], + "nozzle_temperature_range_low": ["200"], + "overhang_fan_speed": ["100"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.026"], + "reduce_fan_stop_start_freq": ["1"], + "required_nozzle_HRC": ["0"], + "slow_down_for_layer_cooling": ["1"], + "slow_down_layer_time": ["6"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], + "temperature_vitrification": ["60"], + "textured_plate_temp": ["60"], + "textured_plate_temp_initial_layer": ["55"], + "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF10.json b/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF10.json index 9889e78ce3..a861703169 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF10.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF10.json @@ -6,244 +6,95 @@ "from": "system", "instantiation": "true", "inherits": "fdm_filament_pla", - "additional_cooling_fan_speed": [ - "100" - ], - "bed_temperature_difference": [ - "10" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], + "additional_cooling_fan_speed": ["100"], + "bed_temperature_difference": ["10"], + "chamber_temperature": ["0"], + "close_fan_the_first_x_layers": ["1"], "compatible_printers": [ "Flashforge Adventurer 5M 0.4 Nozzle", "Flashforge Adventurer 5M 0.6 Nozzle", - "Flashforge Adventurer 5M 0.8 Nozzle", + "Flashforge Adventurer 5M 0.8 Nozzle", "Flashforge Adventurer 5M Pro 0.4 Nozzle", "Flashforge Adventurer 5M Pro 0.6 Nozzle", - "Flashforge Adventurer 5M Pro 0.8 Nozzle" + "Flashforge Adventurer 5M Pro 0.8 Nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], "compatible_prints_condition": "", - "cool_plate_temp": [ - "60" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "default_filament_colour": [ - "" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cooling_final_speed": [ - "3.4" - ], - "filament_cooling_initial_speed": [ - "2.2" - ], - "filament_cooling_moves": [ - "4" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_load_time": [ - "0" - ], - "filament_loading_speed": [ - "28" - ], - "filament_loading_speed_start": [ - "3" - ], - "filament_max_volumetric_speed": [ - "20" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "10" - ], - "filament_multitool_ramming_volume": [ - "10" - ], - "filament_notes": [ - "" - ], + "cool_plate_temp": ["60"], + "cool_plate_temp_initial_layer": ["60"], + "default_filament_colour": [""], + "enable_overhang_bridge_fan": ["1"], + "enable_pressure_advance": ["1"], + "eng_plate_temp": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "fan_cooling_layer_time": ["100"], + "fan_max_speed": ["100"], + "fan_min_speed": ["100"], + "filament_cooling_final_speed": ["3.4"], + "filament_cooling_initial_speed": ["2.2"], + "filament_cooling_moves": ["4"], + "filament_cost": ["20"], + "filament_density": ["1.24"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_end_gcode": ["; filament end gcode \n"], + "filament_flow_ratio": ["1"], + "filament_is_support": ["0"], + "filament_load_time": ["0"], + "filament_loading_speed": ["28"], + "filament_loading_speed_start": ["3"], + "filament_max_volumetric_speed": ["20"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_multitool_ramming": ["0"], + "filament_multitool_ramming_flow": ["10"], + "filament_multitool_ramming_volume": ["10"], + "filament_notes": [""], "filament_ramming_parameters": [ "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "Flashforge PLA" - ], - "filament_shrink": [ - "100%" - ], - "filament_soluble": [ - "0" - ], + "filament_retract_before_wipe": ["nil"], + "filament_retract_lift_above": ["nil"], + "filament_retract_lift_below": ["nil"], + "filament_retract_lift_enforce": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["nil"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": ["Flashforge PLA"], + "filament_shrink": ["100%"], + "filament_soluble": ["0"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA-CF10\n" ], - "filament_toolchange_delay": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_unload_time": [ - "0" - ], - "filament_unloading_speed": [ - "90" - ], - "filament_unloading_speed_start": [ - "100" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "hot_plate_temp": [ - "50" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "230" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.025" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "60" - ] + "filament_toolchange_delay": ["0"], + "filament_type": ["PLA-CF"], + "filament_unload_time": ["0"], + "filament_unloading_speed": ["90"], + "filament_unloading_speed_start": ["100"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "full_fan_speed_layer": ["0"], + "hot_plate_temp_initial_layer": ["55"], + "hot_plate_temp": ["50"], + "nozzle_temperature": ["220"], + "nozzle_temperature_initial_layer": ["220"], + "nozzle_temperature_range_high": ["230"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_speed": ["100"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.025"], + "reduce_fan_stop_start_freq": ["1"], + "required_nozzle_HRC": ["0"], + "slow_down_for_layer_cooling": ["1"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], + "temperature_vitrification": ["60"], + "textured_plate_temp": ["60"], + "textured_plate_temp_initial_layer": ["60"] } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle.json index ec58634c26..f258beca8d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle.json @@ -1,54 +1,30 @@ { - "type": "filament", - "name": "Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle", - "inherits": "Flashforge Generic PLA-Silk", - "renamed_from":"Flashforge PLA-SILK @FF AD5M 0.25 Nozzle", - "from": "system", - "setting_id": "GFSA04_25", - "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.25 Nozzle", - "Flashforge Adventurer 5M Pro 0.25 Nozzle" - ], - "filament_id": "GFL99", - "filament_settings_id": [ - "Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle" - ], - "activate_air_filtration": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "100" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_max_volumetric_speed": [ - "2.8" - ], - "filament_start_gcode": [ - "; filament start gcode\n;right_extruder_material: PLA-Silk\n" - ], - "hot_plate_temp": [ - "45" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "217" - ], - "pressure_advance": [ - "0.1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "15" - ], - "version": "1.8.0.0" + "type": "filament", + "name": "Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge Generic PLA-Silk", + "renamed_from": "Flashforge PLA-SILK @FF AD5M 0.25 Nozzle", + "from": "system", + "setting_id": "GFSA04_25", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.25 Nozzle", + "Flashforge Adventurer 5M Pro 0.25 Nozzle" + ], + "filament_id": "GFL99", + "filament_settings_id": ["Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle"], + "activate_air_filtration": ["1"], + "complete_print_exhaust_fan_speed": ["100"], + "during_print_exhaust_fan_speed": ["100"], + "filament_flow_ratio": ["1"], + "filament_max_volumetric_speed": ["2.8"], + "filament_start_gcode": [ + "; filament start gcode\n;right_extruder_material: PLA-Silk\n" + ], + "hot_plate_temp": ["45"], + "hot_plate_temp_initial_layer": ["50"], + "nozzle_temperature": ["217"], + "pressure_advance": ["0.1"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["15"], + "version": "1.8.0.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-Silk.json b/resources/profiles/Flashforge/filament/Flashforge Generic PLA-Silk.json index 112518827c..2f326b6a20 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-Silk.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PLA-Silk.json @@ -6,64 +6,32 @@ "from": "system", "instantiation": "true", "inherits": "fdm_filament_pla", - "filament_flow_ratio": [ - "1" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "hot_plate_temp": [ - "50" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "additional_cooling_fan_speed": [ - "100" - ], + "filament_flow_ratio": ["1"], + "filament_max_volumetric_speed": ["12"], + "hot_plate_temp_initial_layer": ["55"], + "hot_plate_temp": ["50"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], + "additional_cooling_fan_speed": ["100"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: PLA Silk\n" ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_diameter": [ - "1.75" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.025" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_range_high": [ - "230" - ], - "nozzle_temperature_range_low": [ - "190" - ], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_diameter": ["1.75"], + "enable_pressure_advance": ["1"], + "pressure_advance": ["0.025"], + "nozzle_temperature_initial_layer": ["220"], + "nozzle_temperature": ["220"], + "nozzle_temperature_range_high": ["230"], + "nozzle_temperature_range_low": ["190"], "compatible_printers": [ "Flashforge Adventurer 5M 0.4 Nozzle", "Flashforge Adventurer 5M 0.6 Nozzle", - "Flashforge Adventurer 5M 0.8 Nozzle", + "Flashforge Adventurer 5M 0.8 Nozzle", "Flashforge Adventurer 5M Pro 0.4 Nozzle", "Flashforge Adventurer 5M Pro 0.6 Nozzle", - "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "Flashforge Adventurer 5M Pro 0.8 Nozzle", "Flashforge AD5X 0.4 nozzle", "Flashforge AD5X 0.6 nozzle", "Flashforge AD5X 0.8 nozzle" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA.json b/resources/profiles/Flashforge/filament/Flashforge Generic PLA.json index 3a7b71ed38..42eb36c3ca 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PLA.json @@ -6,64 +6,32 @@ "from": "system", "instantiation": "true", "inherits": "fdm_filament_pla", - "filament_flow_ratio": [ - "0.98" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "hot_plate_temp": [ - "50" - ], - "slow_down_layer_time": [ - "6" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "additional_cooling_fan_speed": [ - "100" - ], + "filament_flow_ratio": ["0.98"], + "filament_max_volumetric_speed": ["25"], + "hot_plate_temp_initial_layer": ["55"], + "hot_plate_temp": ["50"], + "slow_down_layer_time": ["6"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], + "additional_cooling_fan_speed": ["100"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: PLA\n" ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_diameter": [ - "1.75" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.025" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_range_high": [ - "230" - ], - "nozzle_temperature_range_low": [ - "190" - ], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_diameter": ["1.75"], + "enable_pressure_advance": ["1"], + "pressure_advance": ["0.025"], + "nozzle_temperature_initial_layer": ["220"], + "nozzle_temperature": ["220"], + "nozzle_temperature_range_high": ["230"], + "nozzle_temperature_range_low": ["190"], "compatible_printers": [ "Flashforge Adventurer 5M 0.4 Nozzle", "Flashforge Adventurer 5M 0.6 Nozzle", - "Flashforge Adventurer 5M 0.8 Nozzle", + "Flashforge Adventurer 5M 0.8 Nozzle", "Flashforge Adventurer 5M Pro 0.4 Nozzle", "Flashforge Adventurer 5M Pro 0.6 Nozzle", - "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "Flashforge Adventurer 5M Pro 0.8 Nozzle", "Flashforge AD5X 0.4 nozzle", "Flashforge AD5X 0.6 nozzle", "Flashforge AD5X 0.8 nozzle" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PVA.json b/resources/profiles/Flashforge/filament/Flashforge Generic PVA.json index 831b6fab03..59caf71fb7 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PVA.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PVA.json @@ -1,256 +1,102 @@ { - "type": "filament", - "filament_id": "GFB99", - "setting_id": "GFSA04", - "instantiation": "true", - "from": "system", - "activate_air_filtration": [ - "0" - ], - "activate_chamber_temp_control": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "activate_air_filtration": ["0"], + "activate_chamber_temp_control": ["0"], + "additional_cooling_fan_speed": ["80"], + "chamber_temperature": ["0"], + "close_fan_the_first_x_layers": ["1"], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", "Flashforge Guider 3 Ultra 0.6 Nozzle", "Flashforge Guider 3 Ultra 0.8 Nozzle", "Flashforge Guider 2s 0.4 nozzle" ], - "compatible_printers_condition": "", - "compatible_prints": [], - "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "60" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "default_filament_colour": [ - "" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "50" - ], - "filament_cooling_final_speed": [ - "3.4" - ], - "filament_cooling_initial_speed": [ - "2.2" - ], - "filament_cooling_moves": [ - "4" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.2" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "1" - ], - "filament_load_time": [ - "0" - ], - "filament_loading_speed": [ - "28" - ], - "filament_loading_speed_start": [ - "3" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "10" - ], - "filament_multitool_ramming_volume": [ - "10" - ], - "filament_notes": [ - "" - ], - "filament_ramming_parameters": [ - "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "Flashforge Generic PVA" - ], - "filament_shrink": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode\n;right_extruder_material: PVA" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_type": [ - "PVA" - ], - "filament_unload_time": [ - "0" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "inherits": "Flashforge Generic PLA", - "name": "Flashforge Generic PVA", - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "230" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.025" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "6" - ], - "slow_down_min_speed": [ - "10" - ], - "support_material_interface_fan_speed": [ - "80" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "version": "1.9.0.2" + "compatible_printers_condition": "", + "compatible_prints": [], + "compatible_prints_condition": "", + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp": ["60"], + "cool_plate_temp_initial_layer": ["55"], + "default_filament_colour": [""], + "during_print_exhaust_fan_speed": ["60"], + "enable_overhang_bridge_fan": ["1"], + "enable_pressure_advance": ["1"], + "eng_plate_temp": ["60"], + "eng_plate_temp_initial_layer": ["55"], + "fan_cooling_layer_time": ["100"], + "fan_max_speed": ["100"], + "fan_min_speed": ["50"], + "filament_cooling_final_speed": ["3.4"], + "filament_cooling_initial_speed": ["2.2"], + "filament_cooling_moves": ["4"], + "filament_cost": ["20"], + "filament_density": ["1.2"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_flow_ratio": ["1"], + "filament_is_support": ["1"], + "filament_load_time": ["0"], + "filament_loading_speed": ["28"], + "filament_loading_speed_start": ["3"], + "filament_max_volumetric_speed": ["5"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_multitool_ramming": ["0"], + "filament_multitool_ramming_flow": ["10"], + "filament_multitool_ramming_volume": ["10"], + "filament_notes": [""], + "filament_ramming_parameters": [ + "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" + ], + "filament_retract_before_wipe": ["nil"], + "filament_retract_lift_above": ["nil"], + "filament_retract_lift_below": ["nil"], + "filament_retract_lift_enforce": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["nil"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": ["Flashforge Generic PVA"], + "filament_shrink": ["100%"], + "filament_soluble": ["0"], + "filament_start_gcode": [ + "; filament start gcode\n;right_extruder_material: PVA" + ], + "filament_toolchange_delay": ["0"], + "filament_type": ["PVA"], + "filament_unload_time": ["0"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "full_fan_speed_layer": ["0"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["55"], + "inherits": "Flashforge Generic PLA", + "name": "Flashforge Generic PVA", + "nozzle_temperature": ["220"], + "nozzle_temperature_initial_layer": ["220"], + "nozzle_temperature_range_high": ["230"], + "nozzle_temperature_range_low": ["200"], + "overhang_fan_speed": ["100"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.025"], + "reduce_fan_stop_start_freq": ["1"], + "required_nozzle_HRC": ["0"], + "slow_down_for_layer_cooling": ["1"], + "slow_down_layer_time": ["6"], + "slow_down_min_speed": ["10"], + "support_material_interface_fan_speed": ["80"], + "temperature_vitrification": ["60"], + "textured_plate_temp": ["60"], + "textured_plate_temp_initial_layer": ["55"], + "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic TPU.json b/resources/profiles/Flashforge/filament/Flashforge Generic TPU.json index 39a60a387a..239d31de17 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic TPU.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic TPU.json @@ -6,188 +6,76 @@ "from": "system", "instantiation": "true", "inherits": "fdm_filament_tpu", - "additional_cooling_fan_speed": [ - "100" - ], - "bed_temperature_difference": [ - "10" - ], + "additional_cooling_fan_speed": ["100"], + "bed_temperature_difference": ["10"], "chamber_temperature": "0", - "close_fan_the_first_x_layers": [ - "1" - ], + "close_fan_the_first_x_layers": ["1"], "compatible_printers": [ "Flashforge Adventurer 5M 0.4 Nozzle", "Flashforge Adventurer 5M 0.6 Nozzle", - "Flashforge Adventurer 5M 0.8 Nozzle", + "Flashforge Adventurer 5M 0.8 Nozzle", "Flashforge Adventurer 5M Pro 0.4 Nozzle", "Flashforge Adventurer 5M Pro 0.6 Nozzle", - "Flashforge Adventurer 5M Pro 0.8 Nozzle" + "Flashforge Adventurer 5M Pro 0.8 Nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], "compatible_prints_condition": "", - "cool_plate_temp": [ - "60" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "default_filament_colour": [ - "" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "3.5" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "Flashforge TPU" - ], - "filament_shrink": [ - "100%" - ], - "filament_soluble": [ - "0" - ], + "cool_plate_temp": ["60"], + "cool_plate_temp_initial_layer": ["60"], + "default_filament_colour": [""], + "enable_overhang_bridge_fan": ["1"], + "enable_pressure_advance": ["1"], + "eng_plate_temp": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "fan_cooling_layer_time": ["100"], + "fan_max_speed": ["100"], + "fan_min_speed": ["100"], + "filament_cost": ["20"], + "filament_density": ["1.24"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_end_gcode": ["; filament end gcode \n"], + "filament_flow_ratio": ["1"], + "filament_is_support": ["0"], + "filament_max_volumetric_speed": ["3.5"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_retract_before_wipe": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["1.2"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": ["Flashforge TPU"], + "filament_shrink": ["100%"], + "filament_soluble": ["0"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:TPU\n" ], - "filament_type": [ - "TPU" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "45" - ], - "hot_plate_temp_initial_layer": [ - "45" - ], - "nozzle_temperature": [ - "225" - ], - "nozzle_temperature_initial_layer": [ - "225" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.035" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], + "filament_type": ["TPU"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "full_fan_speed_layer": ["0"], + "hot_plate_temp": ["45"], + "hot_plate_temp_initial_layer": ["45"], + "nozzle_temperature": ["225"], + "nozzle_temperature_initial_layer": ["225"], + "nozzle_temperature_range_high": ["250"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_speed": ["100"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.035"], + "reduce_fan_stop_start_freq": ["1"], + "required_nozzle_HRC": ["0"], + "slow_down_for_layer_cooling": ["1"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], + "temperature_vitrification": ["60"], + "textured_plate_temp": ["60"], + "textured_plate_temp_initial_layer": ["60"], "version": "1.5.1.2" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.6 HF nozzle.json index 095a6b191f..02e03c0cad 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.6 HF nozzle.json @@ -1,95 +1,39 @@ { - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "110" - ], - "eng_plate_temp_initial_layer": [ - "110" - ], - "fan_cooling_layer_time": [ - "30" - ], - "filament_density": [ - "1.04" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "FlashForge PC @FF G4P 0.6 HF nozzle" - ], + "close_fan_the_first_x_layers": ["3"], + "complete_print_exhaust_fan_speed": ["40"], + "cool_plate_temp": ["0"], + "cool_plate_temp_initial_layer": ["0"], + "during_print_exhaust_fan_speed": ["40"], + "eng_plate_temp": ["110"], + "eng_plate_temp_initial_layer": ["110"], + "fan_cooling_layer_time": ["30"], + "filament_density": ["1.04"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["18"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["FlashForge PC @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PC" ], - "filament_type": [ - "PC" - ], - "filament_unload_time": [ - "29" - ], + "filament_type": ["PC"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], - "hot_plate_temp": [ - "110" - ], - "hot_plate_temp_initial_layer": [ - "110" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], + "hot_plate_temp": ["110"], + "hot_plate_temp_initial_layer": ["110"], "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "FlashForge PC @FF G4P 0.6 HF nozzle", - "nozzle_temperature_initial_layer": [ - "265" - ], - "nozzle_temperature_range_high": [ - "290" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "50" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "50" - ], - "temperature_vitrification": [ - "120" - ], - "textured_plate_temp": [ - "110" - ], - "textured_plate_temp_initial_layer": [ - "110" - ], + "nozzle_temperature_initial_layer": ["265"], + "nozzle_temperature_range_high": ["290"], + "nozzle_temperature_range_low": ["250"], + "overhang_fan_speed": ["50"], + "slow_down_layer_time": ["12"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["50"], + "temperature_vitrification": ["120"], + "textured_plate_temp": ["110"], + "textured_plate_temp_initial_layer": ["110"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.6 nozzle.json index 66dd34b456..d6fe9ba8b0 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.6 nozzle.json @@ -1,95 +1,39 @@ { - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "110" - ], - "eng_plate_temp_initial_layer": [ - "110" - ], - "fan_cooling_layer_time": [ - "30" - ], - "filament_density": [ - "1.04" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "FlashForge PC @FF G4P 0.6 nozzle" - ], + "close_fan_the_first_x_layers": ["3"], + "complete_print_exhaust_fan_speed": ["40"], + "cool_plate_temp": ["0"], + "cool_plate_temp_initial_layer": ["0"], + "during_print_exhaust_fan_speed": ["40"], + "eng_plate_temp": ["110"], + "eng_plate_temp_initial_layer": ["110"], + "fan_cooling_layer_time": ["30"], + "filament_density": ["1.04"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["18"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["FlashForge PC @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PC" ], - "filament_type": [ - "PC" - ], - "filament_unload_time": [ - "29" - ], + "filament_type": ["PC"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "110" - ], - "hot_plate_temp_initial_layer": [ - "110" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["110"], + "hot_plate_temp_initial_layer": ["110"], "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "FlashForge PC @FF G4P 0.6 nozzle", - "nozzle_temperature_initial_layer": [ - "265" - ], - "nozzle_temperature_range_high": [ - "290" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "50" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "50" - ], - "temperature_vitrification": [ - "120" - ], - "textured_plate_temp": [ - "110" - ], - "textured_plate_temp_initial_layer": [ - "110" - ], + "nozzle_temperature_initial_layer": ["265"], + "nozzle_temperature_range_high": ["290"], + "nozzle_temperature_range_low": ["250"], + "overhang_fan_speed": ["50"], + "slow_down_layer_time": ["12"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["50"], + "temperature_vitrification": ["120"], + "textured_plate_temp": ["110"], + "textured_plate_temp_initial_layer": ["110"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.8 HF nozzle.json index 9c408cc222..fc62cc494b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.8 HF nozzle.json @@ -1,95 +1,39 @@ { - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "110" - ], - "eng_plate_temp_initial_layer": [ - "110" - ], - "fan_cooling_layer_time": [ - "30" - ], - "filament_density": [ - "1.04" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "FlashForge PC @FF G4P 0.8 HF nozzle" - ], + "close_fan_the_first_x_layers": ["3"], + "complete_print_exhaust_fan_speed": ["40"], + "cool_plate_temp": ["0"], + "cool_plate_temp_initial_layer": ["0"], + "during_print_exhaust_fan_speed": ["40"], + "eng_plate_temp": ["110"], + "eng_plate_temp_initial_layer": ["110"], + "fan_cooling_layer_time": ["30"], + "filament_density": ["1.04"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["18"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["FlashForge PC @FF G4P 0.8 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PC" ], - "filament_type": [ - "PC" - ], - "filament_unload_time": [ - "29" - ], + "filament_type": ["PC"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "110" - ], - "hot_plate_temp_initial_layer": [ - "110" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], + "hot_plate_temp": ["110"], + "hot_plate_temp_initial_layer": ["110"], "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "FlashForge PC @FF G4P 0.8 HF nozzle", - "nozzle_temperature_initial_layer": [ - "265" - ], - "nozzle_temperature_range_high": [ - "290" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "50" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "50" - ], - "temperature_vitrification": [ - "120" - ], - "textured_plate_temp": [ - "110" - ], - "textured_plate_temp_initial_layer": [ - "110" - ], + "nozzle_temperature_initial_layer": ["265"], + "nozzle_temperature_range_high": ["290"], + "nozzle_temperature_range_low": ["250"], + "overhang_fan_speed": ["50"], + "slow_down_layer_time": ["12"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["50"], + "temperature_vitrification": ["120"], + "textured_plate_temp": ["110"], + "textured_plate_temp_initial_layer": ["110"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS @FF G4P 0.6 nozzle.json index 0f63e40df4..9b58e2f159 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS @FF G4P 0.6 nozzle.json @@ -1,116 +1,46 @@ { - "activate_chamber_temp_control": [ - "1" - ], - "chamber_temperature": [ - "60" - ], - "close_fan_the_first_x_layers": [ - "2" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "110" - ], - "eng_plate_temp_initial_layer": [ - "110" - ], - "fan_cooling_layer_time": [ - "5" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "0" - ], - "filament_cost": [ - "175" - ], - "filament_density": [ - "1.36" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "FlashForge PPS @FF G4P 0.6 nozzle" - ], + "activate_chamber_temp_control": ["1"], + "chamber_temperature": ["60"], + "close_fan_the_first_x_layers": ["2"], + "complete_print_exhaust_fan_speed": ["40"], + "cool_plate_temp": ["0"], + "cool_plate_temp_initial_layer": ["0"], + "during_print_exhaust_fan_speed": ["40"], + "eng_plate_temp": ["110"], + "eng_plate_temp_initial_layer": ["110"], + "fan_cooling_layer_time": ["5"], + "fan_max_speed": ["50"], + "fan_min_speed": ["0"], + "filament_cost": ["175"], + "filament_density": ["1.36"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["8"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["FlashForge PPS @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PPS" ], - "filament_type": [ - "PPS" - ], - "filament_unload_time": [ - "29" - ], + "filament_type": ["PPS"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "110" - ], - "hot_plate_temp_initial_layer": [ - "110" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["110"], + "hot_plate_temp_initial_layer": ["110"], "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "FlashForge PPS @FF G4P 0.6 nozzle", - "nozzle_temperature": [ - "315" - ], - "nozzle_temperature_initial_layer": [ - "320" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "300" - ], - "overhang_fan_speed": [ - "40" - ], - "pressure_advance": [ - "0.03" - ], - "slow_down_layer_time": [ - "5" - ], - "support_material_interface_fan_speed": [ - "40" - ], - "temperature_vitrification": [ - "125" - ], - "textured_plate_temp": [ - "110" - ], - "textured_plate_temp_initial_layer": [ - "110" - ], + "nozzle_temperature": ["315"], + "nozzle_temperature_initial_layer": ["320"], + "nozzle_temperature_range_high": ["320"], + "nozzle_temperature_range_low": ["300"], + "overhang_fan_speed": ["40"], + "pressure_advance": ["0.03"], + "slow_down_layer_time": ["5"], + "support_material_interface_fan_speed": ["40"], + "temperature_vitrification": ["125"], + "textured_plate_temp": ["110"], + "textured_plate_temp_initial_layer": ["110"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS @FF G4P 0.8 HF nozzle.json index 2a39597c1c..5c30c516bc 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS @FF G4P 0.8 HF nozzle.json @@ -1,116 +1,46 @@ { - "activate_chamber_temp_control": [ - "1" - ], - "chamber_temperature": [ - "60" - ], - "close_fan_the_first_x_layers": [ - "2" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "110" - ], - "eng_plate_temp_initial_layer": [ - "110" - ], - "fan_cooling_layer_time": [ - "5" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "0" - ], - "filament_cost": [ - "175" - ], - "filament_density": [ - "1.36" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "FlashForge PPS @FF G4P 0.8 HF nozzle" - ], + "activate_chamber_temp_control": ["1"], + "chamber_temperature": ["60"], + "close_fan_the_first_x_layers": ["2"], + "complete_print_exhaust_fan_speed": ["40"], + "cool_plate_temp": ["0"], + "cool_plate_temp_initial_layer": ["0"], + "during_print_exhaust_fan_speed": ["40"], + "eng_plate_temp": ["110"], + "eng_plate_temp_initial_layer": ["110"], + "fan_cooling_layer_time": ["5"], + "fan_max_speed": ["50"], + "fan_min_speed": ["0"], + "filament_cost": ["175"], + "filament_density": ["1.36"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["8"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["FlashForge PPS @FF G4P 0.8 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PPS" ], - "filament_type": [ - "PPS" - ], - "filament_unload_time": [ - "29" - ], + "filament_type": ["PPS"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "110" - ], - "hot_plate_temp_initial_layer": [ - "110" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], + "hot_plate_temp": ["110"], + "hot_plate_temp_initial_layer": ["110"], "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "FlashForge PPS @FF G4P 0.8 HF nozzle", - "nozzle_temperature": [ - "315" - ], - "nozzle_temperature_initial_layer": [ - "320" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "300" - ], - "overhang_fan_speed": [ - "40" - ], - "pressure_advance": [ - "0.03" - ], - "slow_down_layer_time": [ - "5" - ], - "support_material_interface_fan_speed": [ - "40" - ], - "temperature_vitrification": [ - "125" - ], - "textured_plate_temp": [ - "110" - ], - "textured_plate_temp_initial_layer": [ - "110" - ], + "nozzle_temperature": ["315"], + "nozzle_temperature_initial_layer": ["320"], + "nozzle_temperature_range_high": ["320"], + "nozzle_temperature_range_low": ["300"], + "overhang_fan_speed": ["40"], + "pressure_advance": ["0.03"], + "slow_down_layer_time": ["5"], + "support_material_interface_fan_speed": ["40"], + "temperature_vitrification": ["125"], + "textured_plate_temp": ["110"], + "textured_plate_temp_initial_layer": ["110"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS-CF @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS-CF @FF G4P 0.6 nozzle.json index 13060c6145..1419e9eacb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS-CF @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS-CF @FF G4P 0.6 nozzle.json @@ -1,110 +1,44 @@ { - "activate_chamber_temp_control": [ - "1" - ], - "chamber_temperature": [ - "60" - ], - "close_fan_the_first_x_layers": [ - "2" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "110" - ], - "eng_plate_temp_initial_layer": [ - "110" - ], - "fan_cooling_layer_time": [ - "5" - ], - "fan_min_speed": [ - "0" - ], - "filament_cost": [ - "175" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "FlashForge PPS-CF @FF G4P 0.6 nozzle" - ], + "activate_chamber_temp_control": ["1"], + "chamber_temperature": ["60"], + "close_fan_the_first_x_layers": ["2"], + "complete_print_exhaust_fan_speed": ["40"], + "cool_plate_temp": ["0"], + "cool_plate_temp_initial_layer": ["0"], + "during_print_exhaust_fan_speed": ["40"], + "eng_plate_temp": ["110"], + "eng_plate_temp_initial_layer": ["110"], + "fan_cooling_layer_time": ["5"], + "fan_min_speed": ["0"], + "filament_cost": ["175"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["8"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["FlashForge PPS-CF @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PPS" ], - "filament_type": [ - "PPS" - ], - "filament_unload_time": [ - "29" - ], + "filament_type": ["PPS"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "110" - ], - "hot_plate_temp_initial_layer": [ - "110" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["110"], + "hot_plate_temp_initial_layer": ["110"], "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "FlashForge PPS-CF @FF G4P 0.6 nozzle", - "nozzle_temperature": [ - "315" - ], - "nozzle_temperature_initial_layer": [ - "320" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "300" - ], - "overhang_fan_speed": [ - "40" - ], - "pressure_advance": [ - "0.03" - ], - "slow_down_layer_time": [ - "5" - ], - "support_material_interface_fan_speed": [ - "40" - ], - "temperature_vitrification": [ - "220" - ], - "textured_plate_temp": [ - "110" - ], - "textured_plate_temp_initial_layer": [ - "110" - ], + "nozzle_temperature": ["315"], + "nozzle_temperature_initial_layer": ["320"], + "nozzle_temperature_range_high": ["320"], + "nozzle_temperature_range_low": ["300"], + "overhang_fan_speed": ["40"], + "pressure_advance": ["0.03"], + "slow_down_layer_time": ["5"], + "support_material_interface_fan_speed": ["40"], + "temperature_vitrification": ["220"], + "textured_plate_temp": ["110"], + "textured_plate_temp_initial_layer": ["110"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS @FF AD3.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS @FF AD3.json index 3989a2178c..07597f6dfa 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS @FF AD3.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS @FF AD3.json @@ -6,57 +6,25 @@ "from": "system", "instantiation": "true", "inherits": "fdm_filament_abs", - "filament_vendor": [ - "Flashforge" - ], - "filament_flow_ratio": [ - "1.09" - ], - "filament_max_volumetric_speed": [ - "20" - ], - "slow_down_layer_time": [ - "8" - ], - "support_material_interface_fan_speed": [ - "80" - ], - "slow_down_min_speed": [ - "20" - ], + "filament_vendor": ["Flashforge"], + "filament_flow_ratio": ["1.09"], + "filament_max_volumetric_speed": ["20"], + "slow_down_layer_time": ["8"], + "support_material_interface_fan_speed": ["80"], + "slow_down_min_speed": ["20"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: ABS\n" ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_diameter": [ - "1.75" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature": [ - "230" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.00" - ], - "filament_density": [ - "1.04" - ], - "temperature_vitrification": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "hot_plate_temp": [ - "100" - ], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_diameter": ["1.75"], + "nozzle_temperature_initial_layer": ["230"], + "nozzle_temperature": ["230"], + "enable_pressure_advance": ["1"], + "pressure_advance": ["0.00"], + "filament_density": ["1.04"], + "temperature_vitrification": ["100"], + "hot_plate_temp_initial_layer": ["100"], + "hot_plate_temp": ["100"], "compatible_printers": [ "Flashforge Adventurer 3 Series 0.4 Nozzle", "Flashforge Adventurer 3 Series 0.6 Nozzle" diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json index 495ffa1d1e..6e92f7a198 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge ABS Basic @FF AD5M 0.25 nozzle" - ], - "from": "system", - "setting_id": "GFSA04_02", - "instantiation": "true", - "inherits": "Flashforge Generic ABS @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge ABS Basic @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge ABS Basic @FF AD5M 0.25 nozzle"], + "from": "system", + "setting_id": "GFSA04_02", + "instantiation": "true", + "inherits": "Flashforge Generic ABS @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge ABS Basic @FF AD5M 0.25 nozzle", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json index 16b07f24b2..3a50dd9a76 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json @@ -1,64 +1,28 @@ { - "type": "filament", - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "eng_plate_temp": [ - "100" - ], - "eng_plate_temp_initial_layer": [ - "100" - ], - "fan_max_speed": [ - "20" - ], - "filament_cost": [ - "20" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge ABS Basic @FF AD5X 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04_02", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.25 nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "inherits": "Flashforge Generic ABS @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge ABS Basic @FF AD5X 0.25 nozzle", - "nozzle_temperature": [ - "260" - ], - "pressure_advance": [ - "0.04" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "version": "2.1.1.0" + "type": "filament", + "cool_plate_temp": ["100"], + "cool_plate_temp_initial_layer": ["100"], + "eng_plate_temp": ["100"], + "eng_plate_temp_initial_layer": ["100"], + "fan_max_speed": ["20"], + "filament_cost": ["20"], + "filament_flow_ratio": ["0.98"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["8"], + "filament_settings_id": ["Flashforge ABS Basic @FF AD5X 0.25 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04_02", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], + "inherits": "Flashforge Generic ABS @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge ABS Basic @FF AD5X 0.25 nozzle", + "nozzle_temperature": ["260"], + "pressure_advance": ["0.04"], + "textured_plate_temp": ["100"], + "textured_plate_temp_initial_layer": ["100"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json index bbdf852528..78b888eeea 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json @@ -1,42 +1,20 @@ { - "cool_plate_temp": [ - "105" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_settings_id": [ - "Flashforge ABS Basic @FF AD5X 0.6 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "inherits": "Flashforge Generic ABS", - "is_custom_defined": "0", - "name": "Flashforge ABS Basic @FF AD5X 0.6 nozzle", - "textured_plate_temp": [ - "105" - ], - "textured_plate_temp_initial_layer": [ - "105" - ], - "version": "2.1.1.0" + "cool_plate_temp": ["105"], + "cool_plate_temp_initial_layer": ["105"], + "eng_plate_temp": ["105"], + "eng_plate_temp_initial_layer": ["105"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["18"], + "filament_settings_id": ["Flashforge ABS Basic @FF AD5X 0.6 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "inherits": "Flashforge Generic ABS", + "is_custom_defined": "0", + "name": "Flashforge ABS Basic @FF AD5X 0.6 nozzle", + "textured_plate_temp": ["105"], + "textured_plate_temp_initial_layer": ["105"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json index ea6987f2d3..2364fd4cfb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json @@ -1,48 +1,22 @@ { - "cool_plate_temp": [ - "105" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_settings_id": [ - "Flashforge ABS Basic @FF AD5X 0.8 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "inherits": "Flashforge Generic ABS", - "is_custom_defined": "0", - "name": "Flashforge ABS Basic @FF AD5X 0.8 nozzle", - "textured_plate_temp": [ - "105" - ], - "textured_plate_temp_initial_layer": [ - "105" - ], - "version": "2.1.1.0" + "cool_plate_temp": ["105"], + "cool_plate_temp_initial_layer": ["105"], + "eng_plate_temp": ["105"], + "eng_plate_temp_initial_layer": ["105"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["18"], + "filament_settings_id": ["Flashforge ABS Basic @FF AD5X 0.8 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], + "inherits": "Flashforge Generic ABS", + "is_custom_defined": "0", + "name": "Flashforge ABS Basic @FF AD5X 0.8 nozzle", + "textured_plate_temp": ["105"], + "textured_plate_temp_initial_layer": ["105"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X.json index cd2e1d5acd..585a753187 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X.json @@ -1,51 +1,23 @@ { - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "eng_plate_temp": [ - "100" - ], - "eng_plate_temp_initial_layer": [ - "100" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "20" - ], - "filament_settings_id": [ - "Flashforge ABS Basic @FF AD5X" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "inherits": "Flashforge Generic ABS", - "is_custom_defined": "0", - "name": "Flashforge ABS Basic @FF AD5X", - "nozzle_temperature": [ - "260" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "version": "2.1.1.0" + "cool_plate_temp": ["100"], + "cool_plate_temp_initial_layer": ["100"], + "eng_plate_temp": ["100"], + "eng_plate_temp_initial_layer": ["100"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["20"], + "filament_settings_id": ["Flashforge ABS Basic @FF AD5X"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], + "inherits": "Flashforge Generic ABS", + "is_custom_defined": "0", + "name": "Flashforge ABS Basic @FF AD5X", + "nozzle_temperature": ["260"], + "textured_plate_temp": ["100"], + "textured_plate_temp_initial_layer": ["100"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.25 nozzle.json index 03f44e9813..5dff012e13 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.25 nozzle.json @@ -1,44 +1,20 @@ { - "complete_print_exhaust_fan_speed": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_max_speed": [ - "20" - ], - "filament_cost": [ - "20" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_settings_id": [ - "Flashforge ABS Basic @FF G4P 0.25 nozzle" - ], + "complete_print_exhaust_fan_speed": ["50"], + "during_print_exhaust_fan_speed": ["40"], + "fan_max_speed": ["20"], + "filament_cost": ["20"], + "filament_flow_ratio": ["0.98"], + "filament_max_volumetric_speed": ["12"], + "filament_settings_id": ["Flashforge ABS Basic @FF G4P 0.25 nozzle"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.25 nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], "inherits": "Flashforge ABS @FF AD5M 0.25 Nozzle", "is_custom_defined": "0", "name": "Flashforge ABS Basic @FF G4P 0.25 nozzle", - "pressure_advance": [ - "0.04" - ], - "slow_down_layer_time": [ - "4" - ], + "pressure_advance": ["0.04"], + "slow_down_layer_time": ["4"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 HF nozzle.json index cafe55a9ba..2730a408f3 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 HF nozzle.json @@ -1,104 +1,42 @@ { - "activate_air_filtration": [ - "1" - ], - "activate_chamber_temp_control": [ - "1" - ], - "chamber_temperature": [ - "60" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "110" - ], - "eng_plate_temp_initial_layer": [ - "110" - ], - "fan_cooling_layer_time": [ - "35" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "25" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge ABS Basic @FF G4P 0.6 HF nozzle" - ], + "activate_air_filtration": ["1"], + "activate_chamber_temp_control": ["1"], + "chamber_temperature": ["60"], + "complete_print_exhaust_fan_speed": ["40"], + "cool_plate_temp": ["0"], + "cool_plate_temp_initial_layer": ["0"], + "during_print_exhaust_fan_speed": ["40"], + "eng_plate_temp": ["110"], + "eng_plate_temp_initial_layer": ["110"], + "fan_cooling_layer_time": ["35"], + "fan_max_speed": ["60"], + "fan_min_speed": ["25"], + "filament_flow_ratio": ["0.95"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge ABS Basic @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n; right_extruder_material:ABS" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], - "hot_plate_temp": [ - "110" - ], - "hot_plate_temp_initial_layer": [ - "110" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], + "hot_plate_temp": ["110"], + "hot_plate_temp_initial_layer": ["110"], "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge ABS Basic @FF G4P 0.6 HF nozzle", - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "90" - ], - "textured_plate_temp": [ - "110" - ], - "textured_plate_temp_initial_layer": [ - "110" - ], + "nozzle_temperature": ["260"], + "nozzle_temperature_initial_layer": ["260"], + "nozzle_temperature_range_high": ["280"], + "overhang_fan_speed": ["90"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["90"], + "textured_plate_temp": ["110"], + "textured_plate_temp_initial_layer": ["110"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 nozzle.json index cd90e2ffd8..3844672339 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 nozzle.json @@ -1,108 +1,44 @@ { - "activate_air_filtration": [ - "1" - ], - "activate_chamber_temp_control": [ - "1" - ], - "chamber_temperature": [ - "60" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "115" - ], - "eng_plate_temp_initial_layer": [ - "115" - ], - "fan_cooling_layer_time": [ - "35" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "25" - ], - "filament_cost": [ - "30" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "28" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge ABS Basic @FF G4P 0.6 nozzle" - ], + "activate_air_filtration": ["1"], + "activate_chamber_temp_control": ["1"], + "chamber_temperature": ["60"], + "complete_print_exhaust_fan_speed": ["40"], + "cool_plate_temp": ["0"], + "cool_plate_temp_initial_layer": ["0"], + "during_print_exhaust_fan_speed": ["40"], + "eng_plate_temp": ["115"], + "eng_plate_temp_initial_layer": ["115"], + "fan_cooling_layer_time": ["35"], + "fan_max_speed": ["60"], + "fan_min_speed": ["25"], + "filament_cost": ["30"], + "filament_flow_ratio": ["0.95"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["28"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge ABS Basic @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:ABS" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "115" - ], - "hot_plate_temp_initial_layer": [ - "115" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["115"], + "hot_plate_temp_initial_layer": ["115"], "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", "is_custom_defined": "0", "tujiawei": null, "name": "Flashforge ABS Basic @FF G4P 0.6 nozzle", - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "90" - ], - "textured_plate_temp": [ - "115" - ], - "textured_plate_temp_initial_layer": [ - "115" - ], + "nozzle_temperature": ["260"], + "nozzle_temperature_initial_layer": ["260"], + "nozzle_temperature_range_high": ["280"], + "overhang_fan_speed": ["90"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["90"], + "textured_plate_temp": ["115"], + "textured_plate_temp_initial_layer": ["115"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.8 HF nozzle.json index 8714e83f29..de5eb17983 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.8 HF nozzle.json @@ -1,107 +1,43 @@ { - "activate_air_filtration": [ - "1" - ], - "activate_chamber_temp_control": [ - "1" - ], - "chamber_temperature": [ - "60" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "115" - ], - "eng_plate_temp_initial_layer": [ - "115" - ], - "fan_cooling_layer_time": [ - "35" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "25" - ], - "filament_cost": [ - "30" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "28" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge ABS Basic @FF G4P 0.8 HF nozzle" - ], + "activate_air_filtration": ["1"], + "activate_chamber_temp_control": ["1"], + "chamber_temperature": ["60"], + "complete_print_exhaust_fan_speed": ["40"], + "cool_plate_temp": ["0"], + "cool_plate_temp_initial_layer": ["0"], + "during_print_exhaust_fan_speed": ["40"], + "eng_plate_temp": ["115"], + "eng_plate_temp_initial_layer": ["115"], + "fan_cooling_layer_time": ["35"], + "fan_max_speed": ["60"], + "fan_min_speed": ["25"], + "filament_cost": ["30"], + "filament_flow_ratio": ["0.95"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["28"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge ABS Basic @FF G4P 0.8 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:ABS" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "115" - ], - "hot_plate_temp_initial_layer": [ - "115" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], + "hot_plate_temp": ["115"], + "hot_plate_temp_initial_layer": ["115"], "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge ABS Basic @FF G4P 0.8 HF nozzle", - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "90" - ], - "textured_plate_temp": [ - "115" - ], - "textured_plate_temp_initial_layer": [ - "115" - ], + "nozzle_temperature": ["260"], + "nozzle_temperature_initial_layer": ["260"], + "nozzle_temperature_range_high": ["280"], + "overhang_fan_speed": ["90"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["90"], + "textured_plate_temp": ["115"], + "textured_plate_temp_initial_layer": ["115"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P HF.json index d51cab665f..af574bbc8f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P HF.json @@ -1,77 +1,33 @@ { - "activate_chamber_temp_control": [ - "1" - ], - "chamber_temperature": [ - "60" - ], - "complete_print_exhaust_fan_speed": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_max_speed": [ - "20" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge ABS Basic @FF G4P HF" - ], + "activate_chamber_temp_control": ["1"], + "chamber_temperature": ["60"], + "complete_print_exhaust_fan_speed": ["50"], + "during_print_exhaust_fan_speed": ["40"], + "fan_max_speed": ["20"], + "filament_flow_ratio": ["0.98"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge ABS Basic @FF G4P HF"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: ABS\n" ], - "filament_unloading_speed": [ - "90" - ], - "filament_unloading_speed_start": [ - "100" - ], + "filament_unloading_speed": ["90"], + "filament_unloading_speed_start": ["100"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], "inherits": "Flashforge Generic ABS @G3U", "is_custom_defined": "0", "name": "Flashforge ABS Basic @FF G4P HF", - "nozzle_temperature": [ - "265" - ], - "nozzle_temperature_initial_layer": [ - "265" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "overhang_fan_speed": [ - "80" - ], - "pressure_advance": [ - "0.04" - ], - "slow_down_layer_time": [ - "4" - ], - "support_material_interface_fan_speed": [ - "80" - ], + "nozzle_temperature": ["265"], + "nozzle_temperature_initial_layer": ["265"], + "nozzle_temperature_range_high": ["270"], + "nozzle_temperature_range_low": ["230"], + "overhang_fan_speed": ["80"], + "pressure_advance": ["0.04"], + "slow_down_layer_time": ["4"], + "support_material_interface_fan_speed": ["80"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P.json index 68112094ea..e15622203b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P.json @@ -1,35 +1,17 @@ { - "activate_chamber_temp_control": [ - "1" - ], - "chamber_temperature": [ - "60" - ], - "complete_print_exhaust_fan_speed": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_settings_id": [ - "Flashforge ABS Basic @FF G4P" - ], + "activate_chamber_temp_control": ["1"], + "chamber_temperature": ["60"], + "complete_print_exhaust_fan_speed": ["50"], + "during_print_exhaust_fan_speed": ["40"], + "filament_settings_id": ["Flashforge ABS Basic @FF G4P"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], "inherits": "Flashforge Generic ABS", "is_custom_defined": "0", "name": "Flashforge ABS Basic @FF G4P", - "slow_down_layer_time": [ - "4" - ], + "slow_down_layer_time": ["4"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @G3U.json index 8fa5586177..04d83615e2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @G3U.json @@ -1,13 +1,11 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge ABS Basic @G3U" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic ABS @G3U", - "is_custom_defined": "0", - "name": "Flashforge ABS Basic @G3U", - "version": "2.1.1.0" + "type": "filament", + "filament_settings_id": ["Flashforge ABS Basic @G3U"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic ABS @G3U", + "is_custom_defined": "0", + "name": "Flashforge ABS Basic @G3U", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic.json index 8a357f570f..3914d5200d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic.json @@ -1,13 +1,11 @@ { - "type": "filament", - "name": "Flashforge ABS Basic", - "inherits": "Flashforge Generic ABS", - "from": "system", - "filament_settings_id": [ - "Flashforge ABS Basic" - ], - "setting_id": "GFSA04_02", - "instantiation": "true", - "is_custom_defined": "0", - "version": "2.1.1.0" + "type": "filament", + "name": "Flashforge ABS Basic", + "inherits": "Flashforge Generic ABS", + "from": "system", + "filament_settings_id": ["Flashforge ABS Basic"], + "setting_id": "GFSA04_02", + "instantiation": "true", + "is_custom_defined": "0", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS-CF @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS-CF @FF G4P 0.6 nozzle.json index c104fd0cd6..97d61b3d3a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS-CF @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS-CF @FF G4P 0.6 nozzle.json @@ -1,107 +1,43 @@ { - "activate_air_filtration": [ - "1" - ], - "activate_chamber_temp_control": [ - "1" - ], - "chamber_temperature": [ - "60" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "115" - ], - "eng_plate_temp_initial_layer": [ - "115" - ], - "fan_cooling_layer_time": [ - "35" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "25" - ], - "filament_cost": [ - "30" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "28" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge ABS-CF @FF G4P 0.6 nozzle" - ], + "activate_air_filtration": ["1"], + "activate_chamber_temp_control": ["1"], + "chamber_temperature": ["60"], + "complete_print_exhaust_fan_speed": ["40"], + "cool_plate_temp": ["0"], + "cool_plate_temp_initial_layer": ["0"], + "during_print_exhaust_fan_speed": ["40"], + "eng_plate_temp": ["115"], + "eng_plate_temp_initial_layer": ["115"], + "fan_cooling_layer_time": ["35"], + "fan_max_speed": ["60"], + "fan_min_speed": ["25"], + "filament_cost": ["30"], + "filament_flow_ratio": ["0.95"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["28"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge ABS-CF @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:ABS" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "115" - ], - "hot_plate_temp_initial_layer": [ - "115" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["115"], + "hot_plate_temp_initial_layer": ["115"], "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge ABS-CF @FF G4P 0.6 nozzle", - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "90" - ], - "textured_plate_temp": [ - "115" - ], - "textured_plate_temp_initial_layer": [ - "115" - ], + "nozzle_temperature": ["260"], + "nozzle_temperature_initial_layer": ["260"], + "nozzle_temperature_range_high": ["280"], + "overhang_fan_speed": ["90"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["90"], + "textured_plate_temp": ["115"], + "textured_plate_temp_initial_layer": ["115"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS-CF @FF G4P.json index fb68b13123..24344b7ec3 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS-CF @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS-CF @FF G4P.json @@ -1,59 +1,27 @@ { - "activate_chamber_temp_control": [ - "1" - ], - "chamber_temperature": [ - "60" - ], - "complete_print_exhaust_fan_speed": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_max_speed": [ - "30" - ], - "filament_cost": [ - "30" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_settings_id": [ - "Flashforge ABS-CF @FF G4P" - ], + "activate_chamber_temp_control": ["1"], + "chamber_temperature": ["60"], + "complete_print_exhaust_fan_speed": ["50"], + "during_print_exhaust_fan_speed": ["40"], + "fan_max_speed": ["30"], + "filament_cost": ["30"], + "filament_flow_ratio": ["0.95"], + "filament_settings_id": ["Flashforge ABS-CF @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: ABS-CF\n" ], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], "inherits": "Flashforge Generic ABS", "is_custom_defined": "0", "name": "Flashforge ABS-CF @FF G4P", - "nozzle_temperature_range_high": [ - "280" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "pressure_advance": [ - "0.02" - ], - "slow_down_layer_time": [ - "6" - ], - "temperature_vitrification": [ - "70" - ], + "nozzle_temperature_range_high": ["280"], + "nozzle_temperature_range_low": ["240"], + "pressure_advance": ["0.02"], + "slow_down_layer_time": ["6"], + "temperature_vitrification": ["70"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json index a29d270332..062e0b5b64 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge ASA Basic @FF AD5M 0.25 nozzle" - ], - "from": "system", - "setting_id": "GFSA04_05", - "instantiation": "true", - "inherits": "Flashforge Generic ASA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge ASA Basic @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge ASA Basic @FF AD5M 0.25 nozzle"], + "from": "system", + "setting_id": "GFSA04_05", + "instantiation": "true", + "inherits": "Flashforge Generic ASA @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge ASA Basic @FF AD5M 0.25 nozzle", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json index 7401a9e288..23d675893d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json @@ -1,67 +1,29 @@ { - "type": "filament", - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "eng_plate_temp": [ - "100" - ], - "eng_plate_temp_initial_layer": [ - "100" - ], - "fan_max_speed": [ - "20" - ], - "filament_cost": [ - "20" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge ASA Basic @FF AD5X 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04_05", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.25 nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "inherits": "Flashforge Generic ASA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge ASA Basic @FF AD5X 0.25 nozzle", - "nozzle_temperature_initial_layer": [ - "265" - ], - "pressure_advance": [ - "0.04" - ], - "slow_down_layer_time": [ - "8" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "version": "2.1.1.0" + "type": "filament", + "cool_plate_temp": ["100"], + "cool_plate_temp_initial_layer": ["100"], + "eng_plate_temp": ["100"], + "eng_plate_temp_initial_layer": ["100"], + "fan_max_speed": ["20"], + "filament_cost": ["20"], + "filament_flow_ratio": ["0.98"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["8"], + "filament_settings_id": ["Flashforge ASA Basic @FF AD5X 0.25 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04_05", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], + "inherits": "Flashforge Generic ASA @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge ASA Basic @FF AD5X 0.25 nozzle", + "nozzle_temperature_initial_layer": ["265"], + "pressure_advance": ["0.04"], + "slow_down_layer_time": ["8"], + "textured_plate_temp": ["100"], + "textured_plate_temp_initial_layer": ["100"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json index 3ddea0c959..828fe8d5de 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json @@ -1,42 +1,20 @@ { - "cool_plate_temp": [ - "105" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_settings_id": [ - "Flashforge ASA Basic @FF AD5X 0.6 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "inherits": "Flashforge Generic ABS", - "is_custom_defined": "0", - "name": "Flashforge ASA Basic @FF AD5X 0.6 nozzle", - "textured_plate_temp": [ - "105" - ], - "textured_plate_temp_initial_layer": [ - "105" - ], - "version": "2.1.1.0" + "cool_plate_temp": ["105"], + "cool_plate_temp_initial_layer": ["105"], + "eng_plate_temp": ["105"], + "eng_plate_temp_initial_layer": ["105"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["18"], + "filament_settings_id": ["Flashforge ASA Basic @FF AD5X 0.6 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "inherits": "Flashforge Generic ABS", + "is_custom_defined": "0", + "name": "Flashforge ASA Basic @FF AD5X 0.6 nozzle", + "textured_plate_temp": ["105"], + "textured_plate_temp_initial_layer": ["105"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json index 15c5612317..d4ddd85c1a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json @@ -1,42 +1,20 @@ { - "cool_plate_temp": [ - "105" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_settings_id": [ - "Flashforge ASA Basic @FF AD5X 0.8 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "inherits": "Flashforge Generic ABS", - "is_custom_defined": "0", - "name": "Flashforge ASA Basic @FF AD5X 0.8 nozzle", - "textured_plate_temp": [ - "105" - ], - "textured_plate_temp_initial_layer": [ - "105" - ], - "version": "2.1.1.0" + "cool_plate_temp": ["105"], + "cool_plate_temp_initial_layer": ["105"], + "eng_plate_temp": ["105"], + "eng_plate_temp_initial_layer": ["105"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["18"], + "filament_settings_id": ["Flashforge ASA Basic @FF AD5X 0.8 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "inherits": "Flashforge Generic ABS", + "is_custom_defined": "0", + "name": "Flashforge ASA Basic @FF AD5X 0.8 nozzle", + "textured_plate_temp": ["105"], + "textured_plate_temp_initial_layer": ["105"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X.json index a7ae507875..005135ff53 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X.json @@ -1,51 +1,23 @@ { - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "eng_plate_temp": [ - "100" - ], - "eng_plate_temp_initial_layer": [ - "100" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "20" - ], - "filament_settings_id": [ - "Flashforge ASA Basic @FF AD5X" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "inherits": "Flashforge Generic ABS", - "is_custom_defined": "0", - "name": "Flashforge ASA Basic @FF AD5X", - "nozzle_temperature": [ - "260" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "version": "2.1.1.0" + "cool_plate_temp": ["100"], + "cool_plate_temp_initial_layer": ["100"], + "eng_plate_temp": ["100"], + "eng_plate_temp_initial_layer": ["100"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["20"], + "filament_settings_id": ["Flashforge ASA Basic @FF AD5X"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], + "inherits": "Flashforge Generic ABS", + "is_custom_defined": "0", + "name": "Flashforge ASA Basic @FF AD5X", + "nozzle_temperature": ["260"], + "textured_plate_temp": ["100"], + "textured_plate_temp_initial_layer": ["100"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.25 nozzle.json index b8405b097f..78322973bb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.25 nozzle.json @@ -1,50 +1,24 @@ { - "complete_print_exhaust_fan_speed": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_max_speed": [ - "20" - ], - "filament_cost": [ - "20" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_settings_id": [ - "Flashforge ASA Basic @FF G4P 0.25 nozzle" - ], + "complete_print_exhaust_fan_speed": ["50"], + "during_print_exhaust_fan_speed": ["40"], + "fan_max_speed": ["20"], + "filament_cost": ["20"], + "filament_flow_ratio": ["0.98"], + "filament_max_volumetric_speed": ["12"], + "filament_settings_id": ["Flashforge ASA Basic @FF G4P 0.25 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: ASA\n" ], - "filament_type": [ - "ASA" - ], + "filament_type": ["ASA"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.25 nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], "inherits": "Flashforge ABS @FF AD5M 0.25 Nozzle", "is_custom_defined": "0", "name": "Flashforge ASA Basic @FF G4P 0.25 nozzle", - "pressure_advance": [ - "0.04" - ], - "slow_down_layer_time": [ - "4" - ], + "pressure_advance": ["0.04"], + "slow_down_layer_time": ["4"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.6 HF nozzle.json index 56ba6b0554..58bae293d8 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.6 HF nozzle.json @@ -1,107 +1,43 @@ { - "activate_air_filtration": [ - "1" - ], - "activate_chamber_temp_control": [ - "1" - ], - "chamber_temperature": [ - "60" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "115" - ], - "eng_plate_temp_initial_layer": [ - "115" - ], - "fan_cooling_layer_time": [ - "35" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "25" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge ASA Basic @FF G4P 0.6 HF nozzle" - ], + "activate_air_filtration": ["1"], + "activate_chamber_temp_control": ["1"], + "chamber_temperature": ["60"], + "complete_print_exhaust_fan_speed": ["40"], + "cool_plate_temp": ["0"], + "cool_plate_temp_initial_layer": ["0"], + "during_print_exhaust_fan_speed": ["40"], + "eng_plate_temp": ["115"], + "eng_plate_temp_initial_layer": ["115"], + "fan_cooling_layer_time": ["35"], + "fan_max_speed": ["60"], + "fan_min_speed": ["25"], + "filament_flow_ratio": ["0.95"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge ASA Basic @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n; right_extruder_material:ASA" ], - "filament_type": [ - "ASA" - ], - "filament_unload_time": [ - "29" - ], + "filament_type": ["ASA"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], - "hot_plate_temp": [ - "115" - ], - "hot_plate_temp_initial_layer": [ - "115" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], + "hot_plate_temp": ["115"], + "hot_plate_temp_initial_layer": ["115"], "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge ASA Basic @FF G4P 0.6 HF nozzle", - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "90" - ], - "textured_plate_temp": [ - "115" - ], - "textured_plate_temp_initial_layer": [ - "115" - ], + "nozzle_temperature": ["260"], + "nozzle_temperature_initial_layer": ["260"], + "nozzle_temperature_range_high": ["280"], + "overhang_fan_speed": ["90"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["90"], + "textured_plate_temp": ["115"], + "textured_plate_temp_initial_layer": ["115"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.6 nozzle.json index d4ea1c9c82..359f5cff05 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.6 nozzle.json @@ -1,110 +1,44 @@ { - "activate_air_filtration": [ - "1" - ], - "activate_chamber_temp_control": [ - "1" - ], - "chamber_temperature": [ - "60" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "115" - ], - "eng_plate_temp_initial_layer": [ - "115" - ], - "fan_cooling_layer_time": [ - "35" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "25" - ], - "filament_cost": [ - "30" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "28" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge ASA Basic @FF G4P 0.6 nozzle" - ], + "activate_air_filtration": ["1"], + "activate_chamber_temp_control": ["1"], + "chamber_temperature": ["60"], + "complete_print_exhaust_fan_speed": ["40"], + "cool_plate_temp": ["0"], + "cool_plate_temp_initial_layer": ["0"], + "during_print_exhaust_fan_speed": ["40"], + "eng_plate_temp": ["115"], + "eng_plate_temp_initial_layer": ["115"], + "fan_cooling_layer_time": ["35"], + "fan_max_speed": ["60"], + "fan_min_speed": ["25"], + "filament_cost": ["30"], + "filament_flow_ratio": ["0.95"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["28"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge ASA Basic @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:ASA" ], - "filament_type": [ - "ASA" - ], - "filament_unload_time": [ - "29" - ], + "filament_type": ["ASA"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "115" - ], - "hot_plate_temp_initial_layer": [ - "115" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["115"], + "hot_plate_temp_initial_layer": ["115"], "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge ASA Basic @FF G4P 0.6 nozzle", - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "90" - ], - "textured_plate_temp": [ - "115" - ], - "textured_plate_temp_initial_layer": [ - "115" - ], + "nozzle_temperature": ["260"], + "nozzle_temperature_initial_layer": ["260"], + "nozzle_temperature_range_high": ["280"], + "overhang_fan_speed": ["90"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["90"], + "textured_plate_temp": ["115"], + "textured_plate_temp_initial_layer": ["115"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.8 HF nozzle.json index 8546918e5b..a24fc8b45d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.8 HF nozzle.json @@ -1,110 +1,44 @@ { - "activate_air_filtration": [ - "1" - ], - "activate_chamber_temp_control": [ - "1" - ], - "chamber_temperature": [ - "60" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "115" - ], - "eng_plate_temp_initial_layer": [ - "115" - ], - "fan_cooling_layer_time": [ - "35" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "25" - ], - "filament_cost": [ - "30" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "28" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge ASA Basic @FF G4P 0.8 HF nozzle" - ], + "activate_air_filtration": ["1"], + "activate_chamber_temp_control": ["1"], + "chamber_temperature": ["60"], + "complete_print_exhaust_fan_speed": ["40"], + "cool_plate_temp": ["0"], + "cool_plate_temp_initial_layer": ["0"], + "during_print_exhaust_fan_speed": ["40"], + "eng_plate_temp": ["115"], + "eng_plate_temp_initial_layer": ["115"], + "fan_cooling_layer_time": ["35"], + "fan_max_speed": ["60"], + "fan_min_speed": ["25"], + "filament_cost": ["30"], + "filament_flow_ratio": ["0.95"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["28"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge ASA Basic @FF G4P 0.8 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:ASA" ], - "filament_type": [ - "ASA" - ], - "filament_unload_time": [ - "29" - ], + "filament_type": ["ASA"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "115" - ], - "hot_plate_temp_initial_layer": [ - "115" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], + "hot_plate_temp": ["115"], + "hot_plate_temp_initial_layer": ["115"], "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge ASA Basic @FF G4P 0.8 HF nozzle", - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "90" - ], - "textured_plate_temp": [ - "115" - ], - "textured_plate_temp_initial_layer": [ - "115" - ], + "nozzle_temperature": ["260"], + "nozzle_temperature_initial_layer": ["260"], + "nozzle_temperature_range_high": ["280"], + "overhang_fan_speed": ["90"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["90"], + "textured_plate_temp": ["115"], + "textured_plate_temp_initial_layer": ["115"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P HF.json index d0c47508b0..cacdc2850c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P HF.json @@ -1,80 +1,34 @@ { - "activate_chamber_temp_control": [ - "1" - ], - "chamber_temperature": [ - "60" - ], - "complete_print_exhaust_fan_speed": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_max_speed": [ - "20" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge ASA Basic @FF G4P HF" - ], + "activate_chamber_temp_control": ["1"], + "chamber_temperature": ["60"], + "complete_print_exhaust_fan_speed": ["50"], + "during_print_exhaust_fan_speed": ["40"], + "fan_max_speed": ["20"], + "filament_flow_ratio": ["0.98"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge ASA Basic @FF G4P HF"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: ASA\n" ], - "filament_type": [ - "ASA" - ], - "filament_unloading_speed": [ - "90" - ], - "filament_unloading_speed_start": [ - "100" - ], + "filament_type": ["ASA"], + "filament_unloading_speed": ["90"], + "filament_unloading_speed_start": ["100"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], "inherits": "Flashforge Generic ABS @G3U", "is_custom_defined": "0", "name": "Flashforge ASA Basic @FF G4P HF", - "nozzle_temperature": [ - "265" - ], - "nozzle_temperature_initial_layer": [ - "265" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "overhang_fan_speed": [ - "80" - ], - "pressure_advance": [ - "0.04" - ], - "slow_down_layer_time": [ - "4" - ], - "support_material_interface_fan_speed": [ - "80" - ], + "nozzle_temperature": ["265"], + "nozzle_temperature_initial_layer": ["265"], + "nozzle_temperature_range_high": ["270"], + "nozzle_temperature_range_low": ["230"], + "overhang_fan_speed": ["80"], + "pressure_advance": ["0.04"], + "slow_down_layer_time": ["4"], + "support_material_interface_fan_speed": ["80"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P.json index 7ea54f1f65..dadeb970ec 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P.json @@ -1,41 +1,21 @@ { - "activate_chamber_temp_control": [ - "1" - ], - "chamber_temperature": [ - "60" - ], - "complete_print_exhaust_fan_speed": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_settings_id": [ - "Flashforge ASA Basic @FF G4P" - ], + "activate_chamber_temp_control": ["1"], + "chamber_temperature": ["60"], + "complete_print_exhaust_fan_speed": ["50"], + "during_print_exhaust_fan_speed": ["40"], + "filament_settings_id": ["Flashforge ASA Basic @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: ASA\n" ], - "filament_type": [ - "ASA" - ], + "filament_type": ["ASA"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], "inherits": "Flashforge Generic ABS", "is_custom_defined": "0", "name": "Flashforge ASA Basic @FF G4P", - "slow_down_layer_time": [ - "4" - ], + "slow_down_layer_time": ["4"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @G3U.json index 36257f60bb..d6065abea3 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @G3U.json @@ -1,13 +1,11 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge ASA Basic @G3U" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic ASA @G3U", - "is_custom_defined": "0", - "name": "Flashforge ASA Basic @G3U", - "version": "2.1.1.0" + "type": "filament", + "filament_settings_id": ["Flashforge ASA Basic @G3U"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic ASA @G3U", + "is_custom_defined": "0", + "name": "Flashforge ASA Basic @G3U", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic.json index fe6a757acf..f7e82100b7 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic.json @@ -1,13 +1,11 @@ { - "type": "filament", - "name": "Flashforge ASA Basic", - "inherits": "Flashforge Generic ASA", - "from": "system", - "filament_settings_id": [ - "Flashforge ASA Basic" - ], - "setting_id": "GFSA04_05", - "instantiation": "true", - "is_custom_defined": "0", - "version": "2.1.1.0" + "type": "filament", + "name": "Flashforge ASA Basic", + "inherits": "Flashforge Generic ASA", + "from": "system", + "filament_settings_id": ["Flashforge ASA Basic"], + "setting_id": "GFSA04_05", + "instantiation": "true", + "is_custom_defined": "0", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA-CF.json index 05c9086af1..c57a44df45 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA-CF.json @@ -1,52 +1,24 @@ { - "type": "filament", - "name": "Flashforge ASA-CF", - "inherits": "FusRock Generic PAHT-CF", - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "filament_flow_ratio": [ - "0.99" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_settings_id": [ - "Flashforge ASA-CF" - ], - "filament_type": [ - "ASA" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "is_custom_defined": "0", - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "20" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "10" - ], - "support_material_interface_fan_speed": [ - "20" - ], - "version": "2.0.2.0" + "type": "filament", + "name": "Flashforge ASA-CF", + "inherits": "FusRock Generic PAHT-CF", + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "filament_flow_ratio": ["0.99"], + "filament_max_volumetric_speed": ["5"], + "filament_settings_id": ["Flashforge ASA-CF"], + "filament_type": ["ASA"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], + "is_custom_defined": "0", + "nozzle_temperature": ["250"], + "nozzle_temperature_initial_layer": ["250"], + "nozzle_temperature_range_high": ["260"], + "nozzle_temperature_range_low": ["240"], + "overhang_fan_speed": ["20"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["10"], + "support_material_interface_fan_speed": ["20"], + "version": "2.0.2.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P 0.6 nozzle.json index ab8f58838d..d341277d01 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P 0.6 nozzle.json @@ -1,107 +1,43 @@ { - "activate_air_filtration": [ - "1" - ], - "activate_chamber_temp_control": [ - "1" - ], - "chamber_temperature": [ - "60" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "115" - ], - "eng_plate_temp_initial_layer": [ - "115" - ], - "fan_cooling_layer_time": [ - "35" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "25" - ], - "filament_cost": [ - "30" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge HIPS @FF G4P 0.6 nozzle" - ], + "activate_air_filtration": ["1"], + "activate_chamber_temp_control": ["1"], + "chamber_temperature": ["60"], + "complete_print_exhaust_fan_speed": ["40"], + "cool_plate_temp": ["0"], + "cool_plate_temp_initial_layer": ["0"], + "during_print_exhaust_fan_speed": ["40"], + "eng_plate_temp": ["115"], + "eng_plate_temp_initial_layer": ["115"], + "fan_cooling_layer_time": ["35"], + "fan_max_speed": ["60"], + "fan_min_speed": ["25"], + "filament_cost": ["30"], + "filament_flow_ratio": ["0.95"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge HIPS @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:HIPS" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "115" - ], - "hot_plate_temp_initial_layer": [ - "115" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["115"], + "hot_plate_temp_initial_layer": ["115"], "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge HIPS @FF G4P 0.6 nozzle", - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "90" - ], - "textured_plate_temp": [ - "115" - ], - "textured_plate_temp_initial_layer": [ - "115" - ], + "nozzle_temperature": ["260"], + "nozzle_temperature_initial_layer": ["260"], + "nozzle_temperature_range_high": ["280"], + "overhang_fan_speed": ["90"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["90"], + "textured_plate_temp": ["115"], + "textured_plate_temp_initial_layer": ["115"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P 0.8 HF nozzle.json index d3bbdbb789..1b34049af2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P 0.8 HF nozzle.json @@ -1,107 +1,43 @@ { - "activate_air_filtration": [ - "1" - ], - "activate_chamber_temp_control": [ - "1" - ], - "chamber_temperature": [ - "60" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "115" - ], - "eng_plate_temp_initial_layer": [ - "115" - ], - "fan_cooling_layer_time": [ - "35" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "25" - ], - "filament_cost": [ - "30" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge HIPS @FF G4P 0.8 HF nozzle" - ], + "activate_air_filtration": ["1"], + "activate_chamber_temp_control": ["1"], + "chamber_temperature": ["60"], + "complete_print_exhaust_fan_speed": ["40"], + "cool_plate_temp": ["0"], + "cool_plate_temp_initial_layer": ["0"], + "during_print_exhaust_fan_speed": ["40"], + "eng_plate_temp": ["115"], + "eng_plate_temp_initial_layer": ["115"], + "fan_cooling_layer_time": ["35"], + "fan_max_speed": ["60"], + "fan_min_speed": ["25"], + "filament_cost": ["30"], + "filament_flow_ratio": ["0.95"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge HIPS @FF G4P 0.8 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:HIPS" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "115" - ], - "hot_plate_temp_initial_layer": [ - "115" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], + "hot_plate_temp": ["115"], + "hot_plate_temp_initial_layer": ["115"], "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge HIPS @FF G4P 0.8 HF nozzle", - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "90" - ], - "textured_plate_temp": [ - "115" - ], - "textured_plate_temp_initial_layer": [ - "115" - ], + "nozzle_temperature": ["260"], + "nozzle_temperature_initial_layer": ["260"], + "nozzle_temperature_range_high": ["280"], + "overhang_fan_speed": ["90"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["90"], + "textured_plate_temp": ["115"], + "textured_plate_temp_initial_layer": ["115"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P HF.json index ded30a77ad..833f7615fb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P HF.json @@ -1,53 +1,25 @@ { - "complete_print_exhaust_fan_speed": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge HIPS @FF G4P HF" - ], + "complete_print_exhaust_fan_speed": ["50"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["1"], + "filament_max_volumetric_speed": ["12"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge HIPS @FF G4P HF"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: HIPS\n" ], - "filament_type": [ - "HIPS" - ], - "filament_unloading_speed": [ - "90" - ], - "filament_unloading_speed_start": [ - "100" - ], + "filament_type": ["HIPS"], + "filament_unloading_speed": ["90"], + "filament_unloading_speed_start": ["100"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], "inherits": "Flashforge Generic ABS @G3U", "is_custom_defined": "0", "name": "Flashforge HIPS @FF G4P HF", - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "250" - ], + "nozzle_temperature_initial_layer": ["230"], + "nozzle_temperature_range_high": ["250"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P.json index d291646e95..2facdaeb64 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P.json @@ -1,92 +1,38 @@ { - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "2" - ], - "complete_print_exhaust_fan_speed": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "10" - ], - "filament_density": [ - "1.04" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_settings_id": [ - "Flashforge HIPS @FF G4P" - ], + "additional_cooling_fan_speed": ["0"], + "close_fan_the_first_x_layers": ["2"], + "complete_print_exhaust_fan_speed": ["50"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["30"], + "fan_min_speed": ["10"], + "filament_density": ["1.04"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["12"], + "filament_settings_id": ["Flashforge HIPS @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:HIPS\n" ], - "filament_type": [ - "HIPS" - ], - "filament_unload_time": [ - "29" - ], + "filament_type": ["HIPS"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], "inherits": "Flashforge Generic HS PLA", "is_custom_defined": "0", "name": "Flashforge HIPS @FF G4P", - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "50" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.036" - ], - "slow_down_layer_time": [ - "8" - ], - "support_material_interface_fan_speed": [ - "40" - ], - "temperature_vitrification": [ - "100" - ], + "nozzle_temperature": ["230"], + "nozzle_temperature_initial_layer": ["230"], + "nozzle_temperature_range_high": ["250"], + "nozzle_temperature_range_low": ["220"], + "overhang_fan_speed": ["50"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.036"], + "slow_down_layer_time": ["8"], + "support_material_interface_fan_speed": ["40"], + "temperature_vitrification": ["100"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @G3U.json index ffe75680d7..58a99e4899 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @G3U.json @@ -1,13 +1,11 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge HIPS @G3U" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic HIPS", - "is_custom_defined": "0", - "name": "Flashforge HIPS @G3U", - "version": "2.1.1.0" + "type": "filament", + "filament_settings_id": ["Flashforge HIPS @G3U"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic HIPS", + "is_custom_defined": "0", + "name": "Flashforge HIPS @G3U", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5M 0.25 nozzle.json index 472b30e218..3e7c28a20d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5M 0.25 nozzle.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge HS PETG @FF AD5M 0.25 nozzle" - ], - "from": "system", - "setting_id": "GFSA04_12", - "instantiation": "true", - "inherits": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge HS PETG @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge HS PETG @FF AD5M 0.25 nozzle"], + "from": "system", + "setting_id": "GFSA04_12", + "instantiation": "true", + "inherits": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge HS PETG @FF AD5M 0.25 nozzle", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.25 nozzle.json index 3dce4e62b0..b979878d43 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.25 nozzle.json @@ -1,64 +1,28 @@ { - "type": "filament", - "cool_plate_temp": [ - "75" - ], - "cool_plate_temp_initial_layer": [ - "75" - ], - "eng_plate_temp": [ - "75" - ], - "eng_plate_temp_initial_layer": [ - "75" - ], - "fan_max_speed": [ - "100" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge HS PETG @FF AD5X 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04_12", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.25 nozzle" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], - "inherits": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge HS PETG @FF AD5X 0.25 nozzle", - "nozzle_temperature": [ - "235" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "pressure_advance": [ - "0.04" - ], - "slow_down_min_speed": [ - "30" - ], - "textured_plate_temp": [ - "75" - ], - "textured_plate_temp_initial_layer": [ - "75" - ], - "version": "2.1.1.0" + "type": "filament", + "cool_plate_temp": ["75"], + "cool_plate_temp_initial_layer": ["75"], + "eng_plate_temp": ["75"], + "eng_plate_temp_initial_layer": ["75"], + "fan_max_speed": ["100"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["8"], + "filament_settings_id": ["Flashforge HS PETG @FF AD5X 0.25 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04_12", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], + "inherits": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge HS PETG @FF AD5X 0.25 nozzle", + "nozzle_temperature": ["235"], + "nozzle_temperature_initial_layer": ["240"], + "pressure_advance": ["0.04"], + "slow_down_min_speed": ["30"], + "textured_plate_temp": ["75"], + "textured_plate_temp_initial_layer": ["75"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.6 nozzle.json index 68930201da..3834403388 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.6 nozzle.json @@ -1,54 +1,24 @@ { - "cool_plate_temp": [ - "75" - ], - "cool_plate_temp_initial_layer": [ - "75" - ], - "eng_plate_temp": [ - "75" - ], - "eng_plate_temp_initial_layer": [ - "75" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge HS PETG @FF AD5X 0.6 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], - "inherits": "Flashforge Generic PETG", - "is_custom_defined": "0", - "name": "Flashforge HS PETG @FF AD5X 0.6 nozzle", - "nozzle_temperature": [ - "235" - ], - "nozzle_temperature_initial_layer": [ - "235" - ], - "pressure_advance": [ - "0.04" - ], - "textured_plate_temp": [ - "75" - ], - "textured_plate_temp_initial_layer": [ - "75" - ], - "version": "2.1.1.0" + "cool_plate_temp": ["75"], + "cool_plate_temp_initial_layer": ["75"], + "eng_plate_temp": ["75"], + "eng_plate_temp_initial_layer": ["75"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge HS PETG @FF AD5X 0.6 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], + "inherits": "Flashforge Generic PETG", + "is_custom_defined": "0", + "name": "Flashforge HS PETG @FF AD5X 0.6 nozzle", + "nozzle_temperature": ["235"], + "nozzle_temperature_initial_layer": ["235"], + "pressure_advance": ["0.04"], + "textured_plate_temp": ["75"], + "textured_plate_temp_initial_layer": ["75"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.8 nozzle.json index a0208610fc..fc21e355e2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.8 nozzle.json @@ -1,54 +1,24 @@ { - "cool_plate_temp": [ - "75" - ], - "cool_plate_temp_initial_layer": [ - "75" - ], - "eng_plate_temp": [ - "75" - ], - "eng_plate_temp_initial_layer": [ - "75" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge HS PETG @FF AD5X 0.8 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], - "inherits": "Flashforge Generic PETG", - "is_custom_defined": "0", - "name": "Flashforge HS PETG @FF AD5X 0.8 nozzle", - "nozzle_temperature": [ - "235" - ], - "nozzle_temperature_initial_layer": [ - "235" - ], - "pressure_advance": [ - "0.04" - ], - "textured_plate_temp": [ - "75" - ], - "textured_plate_temp_initial_layer": [ - "75" - ], - "version": "2.1.1.0" + "cool_plate_temp": ["75"], + "cool_plate_temp_initial_layer": ["75"], + "eng_plate_temp": ["75"], + "eng_plate_temp_initial_layer": ["75"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge HS PETG @FF AD5X 0.8 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], + "inherits": "Flashforge Generic PETG", + "is_custom_defined": "0", + "name": "Flashforge HS PETG @FF AD5X 0.8 nozzle", + "nozzle_temperature": ["235"], + "nozzle_temperature_initial_layer": ["235"], + "pressure_advance": ["0.04"], + "textured_plate_temp": ["75"], + "textured_plate_temp_initial_layer": ["75"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X.json index 0c67a3d23d..5b9ed10be6 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X.json @@ -1,55 +1,25 @@ { - "type": "filament", - "cool_plate_temp": [ - "75" - ], - "cool_plate_temp_initial_layer": [ - "75" - ], - "eng_plate_temp": [ - "75" - ], - "eng_plate_temp_initial_layer": [ - "75" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge HS PETG @FF AD5X" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], - "inherits": "Flashforge Generic PETG", - "is_custom_defined": "0", - "name": "Flashforge HS PETG @FF AD5X", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" - ], - "nozzle_temperature": [ - "235" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "pressure_advance": [ - "0.04" - ], - "textured_plate_temp": [ - "75" - ], - "textured_plate_temp_initial_layer": [ - "75" - ], - "version": "2.1.1.0" + "type": "filament", + "cool_plate_temp": ["75"], + "cool_plate_temp_initial_layer": ["75"], + "eng_plate_temp": ["75"], + "eng_plate_temp_initial_layer": ["75"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge HS PETG @FF AD5X"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], + "inherits": "Flashforge Generic PETG", + "is_custom_defined": "0", + "name": "Flashforge HS PETG @FF AD5X", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "nozzle_temperature": ["235"], + "nozzle_temperature_initial_layer": ["240"], + "pressure_advance": ["0.04"], + "textured_plate_temp": ["75"], + "textured_plate_temp_initial_layer": ["75"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.25 nozzle.json index b5c5c0c710..fab856ec05 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.25 nozzle.json @@ -1,62 +1,26 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "80" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_settings_id": [ - "Flashforge HS PETG @FF G4P 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_max_speed": ["100"], + "fan_min_speed": ["80"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["12"], + "filament_settings_id": ["Flashforge HS PETG @FF G4P 0.25 nozzle"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.25 nozzle" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], + "hot_plate_temp": ["80"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge PETG @FF AD5M 0.25 Nozzle", "is_custom_defined": "0", "name": "Flashforge HS PETG @FF G4P 0.25 nozzle", - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "pressure_advance": [ - "0.045" - ], - "slow_down_layer_time": [ - "5" - ], - "slow_down_min_speed": [ - "20" - ], + "nozzle_temperature": ["230"], + "nozzle_temperature_initial_layer": ["230"], + "pressure_advance": ["0.045"], + "slow_down_layer_time": ["5"], + "slow_down_min_speed": ["20"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.6 HF nozzle.json index 435b7885ea..be68fb4aea 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.6 HF nozzle.json @@ -1,74 +1,34 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "2" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "20" - ], - "fan_max_speed": [ - "65" - ], - "fan_min_speed": [ - "40" - ], - "filament_density": [ - "1.28" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "30" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["2"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["20"], + "fan_max_speed": ["65"], + "fan_min_speed": ["40"], + "filament_density": ["1.28"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["30"], + "filament_minimal_purge_on_wipe_tower": ["15"], "filament_ramming_parameters": [ "105 105 6.68817 6.75269 6.43011 7.39785 11.957 17.6344 20 19.8925 19.8925 19.1398 13.5484 4.60215 0.215054 0.193548 0.473118 0.494624| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 19.8699 1.95 19.7215 2.45 19.0323 2.95 1.06237 3.45 0.245161 3.95 0.417204 4.45 7.6 4.95 7.6" ], - "filament_settings_id": [ - "Flashforge HS PETG @FF G4P 0.6 HF nozzle" - ], + "filament_settings_id": ["Flashforge HS PETG @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n; right_extruder_material:PETG" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge HS PETG @FF G4P 0.6 HF nozzle", - "nozzle_temperature": [ - "235" - ], - "overhang_fan_speed": [ - "100" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], + "nozzle_temperature": ["235"], + "overhang_fan_speed": ["100"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.6 nozzle.json index 1e8e96495a..64eba38b29 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.6 nozzle.json @@ -1,89 +1,37 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "20" - ], - "fan_max_speed": [ - "65" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.28" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge HS PETG @FF G4P 0.6 nozzle" - ], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["3"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["20"], + "fan_max_speed": ["65"], + "fan_min_speed": ["30"], + "filament_cost": ["25"], + "filament_density": ["1.28"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge HS PETG @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PETG" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["80"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge HS PETG @FF G4P 0.6 nozzle", - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "245" - ], - "nozzle_temperature_range_high": [ - "265" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "100" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], + "nozzle_temperature": ["240"], + "nozzle_temperature_initial_layer": ["245"], + "nozzle_temperature_range_high": ["265"], + "nozzle_temperature_range_low": ["220"], + "overhang_fan_speed": ["100"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.8 HF nozzle.json index d63bdb7d18..42bee36079 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.8 HF nozzle.json @@ -1,89 +1,37 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "20" - ], - "fan_max_speed": [ - "65" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.28" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge HS PETG @FF G4P 0.8 HF nozzle" - ], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["3"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["20"], + "fan_max_speed": ["65"], + "fan_min_speed": ["30"], + "filament_cost": ["25"], + "filament_density": ["1.28"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge HS PETG @FF G4P 0.8 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PETG" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "0" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], + "hot_plate_temp": ["0"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge HS PETG @FF G4P 0.8 HF nozzle", - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "245" - ], - "nozzle_temperature_range_high": [ - "265" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "100" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], + "nozzle_temperature": ["240"], + "nozzle_temperature_initial_layer": ["245"], + "nozzle_temperature_range_high": ["265"], + "nozzle_temperature_range_low": ["220"], + "overhang_fan_speed": ["100"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P HF.json index 4c0ec26743..a28a5909bc 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P HF.json @@ -1,95 +1,39 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.27" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge HS PETG @FF G4P HF" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["1"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_max_speed": ["90"], + "fan_min_speed": ["40"], + "filament_cost": ["30"], + "filament_density": ["1.27"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge HS PETG @FF G4P HF"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: PLA\n" ], - "filament_type": [ - "PETG" - ], - "filament_unload_time": [ - "29" - ], - "filament_unloading_speed": [ - "90" - ], - "filament_unloading_speed_start": [ - "100" - ], + "filament_type": ["PETG"], + "filament_unload_time": ["29"], + "filament_unloading_speed": ["90"], + "filament_unloading_speed_start": ["100"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], + "hot_plate_temp": ["80"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge Generic ABS @G3U", "is_custom_defined": "0", "name": "Flashforge HS PETG @FF G4P HF", - "nozzle_temperature_initial_layer": [ - "230" - ], - "overhang_fan_speed": [ - "80" - ], - "pressure_advance": [ - "0.075" - ], - "slow_down_layer_time": [ - "5" - ], - "slow_down_min_speed": [ - "30" - ], - "support_material_interface_fan_speed": [ - "90" - ], - "temperature_vitrification": [ - "70" - ], + "nozzle_temperature_initial_layer": ["230"], + "overhang_fan_speed": ["80"], + "pressure_advance": ["0.075"], + "slow_down_layer_time": ["5"], + "slow_down_min_speed": ["30"], + "support_material_interface_fan_speed": ["90"], + "temperature_vitrification": ["70"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P.json index 1ca2edcec4..b1b3dca0b7 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P.json @@ -1,50 +1,22 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge HS PETG @FF G4P" - ], - "filament_unload_time": [ - "29" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge HS PETG @FF G4P"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["80"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge Generic PETG", "is_custom_defined": "0", "name": "Flashforge HS PETG @FF G4P", - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "pressure_advance": [ - "0.045" - ], - "slow_down_layer_time": [ - "5" - ], + "nozzle_temperature": ["230"], + "nozzle_temperature_initial_layer": ["230"], + "pressure_advance": ["0.045"], + "slow_down_layer_time": ["5"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @G3U.json index 46258075e4..383d1036c9 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @G3U.json @@ -1,13 +1,11 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge HS PETG @G3U" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PETG @G3U", - "is_custom_defined": "0", - "name": "Flashforge HS PETG @G3U", - "version": "2.1.1.0" + "type": "filament", + "filament_settings_id": ["Flashforge HS PETG @G3U"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PETG @G3U", + "is_custom_defined": "0", + "name": "Flashforge HS PETG @G3U", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG.json index 3c0199e7a5..1a07af4fe7 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge HS PETG" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PETG", - "is_custom_defined": "0", - "name": "Flashforge HS PETG", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge HS PETG"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PETG", + "is_custom_defined": "0", + "name": "Flashforge HS PETG", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.25 nozzle.json index 49a57f0dd8..4ec15f45be 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.25 nozzle.json @@ -1,61 +1,27 @@ { - "type": "filament", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge HS PLA @FF AD5X 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.25 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge HS PLA @FF AD5X 0.25 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "6" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "type": "filament", + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp_initial_layer": ["60"], + "during_print_exhaust_fan_speed": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["8"], + "filament_settings_id": ["Flashforge HS PLA @FF AD5X 0.25 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04_19", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge HS PLA @FF AD5X 0.25 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["6"], + "slow_down_min_speed": ["20"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.6 nozzle.json index 9edbceb08b..115e1281ca 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.6 nozzle.json @@ -1,45 +1,21 @@ { - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge HS PLA @FF AD5X 0.6 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge HS PLA @FF AD5X 0.6 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge HS PLA @FF AD5X 0.6 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge HS PLA @FF AD5X 0.6 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.8 nozzle.json index f636318b88..3f23b249b9 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.8 nozzle.json @@ -1,45 +1,21 @@ { - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge HS PLA @FF AD5X 0.8 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge HS PLA @FF AD5X 0.8 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge HS PLA @FF AD5X 0.8 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge HS PLA @FF AD5X 0.8 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X.json index de449a61db..4776ec1813 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X.json @@ -1,46 +1,22 @@ { - "type": "filament", - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge HS PLA @FF AD5X" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge HS PLA @FF AD5X", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" - ], - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "type": "filament", + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge HS PLA @FF AD5X"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge HS PLA @FF AD5X", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.25 nozzle.json index 0c3fa01e60..ea97967ae5 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.25 nozzle.json @@ -1,59 +1,25 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_settings_id": [ - "Flashforge HS PLA @FF G4P 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.98"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["12"], + "filament_settings_id": ["Flashforge HS PLA @FF G4P 0.25 nozzle"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.25 nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "is_custom_defined": "0", "name": "Flashforge HS PLA @FF G4P 0.25 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.026" - ], - "slow_down_layer_time": [ - "4" - ], - "slow_down_min_speed": [ - "20" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.026"], + "slow_down_layer_time": ["4"], + "slow_down_min_speed": ["20"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.6 HF nozzle.json index f6a923a4a4..fd26240386 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.6 HF nozzle.json @@ -1,74 +1,34 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "43" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["43"], + "filament_minimal_purge_on_wipe_tower": ["15"], "filament_ramming_parameters": [ "105 105 9.50538 9.56989 9.39785 10.2366 13.7634 18.129 19.9355 19.8495 19.8925 19.3548 13.6559 4.32258 0.0430108 0.301075 0.645161 0.55914| 0.05 9.43871 0.45 9.5957 0.95 10.5957 1.45 19.6978 1.95 19.6355 2.45 19.5484 2.95 0.417204 3.45 0.417204 3.95 0.417204 4.45 0.288172 4.95 0.245161" ], - "filament_settings_id": [ - "Flashforge HS PLA @FF G4P 0.6 HF nozzle" - ], + "filament_settings_id": ["Flashforge HS PLA @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n; right_extruder_material:PLA\n\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge HS PLA @FF G4P 0.6 HF nozzle", - "nozzle_temperature_initial_layer": [ - "210" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature_initial_layer": ["210"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.6 nozzle.json index 74bd955c48..f69f58b6ab 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.6 nozzle.json @@ -1,74 +1,32 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "28" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge HS PLA @FF G4P 0.6 nozzle" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["28"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge HS PLA @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge HS PLA @FF G4P 0.6 nozzle", - "nozzle_temperature": [ - "205" - ], - "nozzle_temperature_initial_layer": [ - "205" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["205"], + "nozzle_temperature_initial_layer": ["205"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.8 HF nozzle.json index 17bfe9c483..d4a8287113 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.8 HF nozzle.json @@ -1,74 +1,32 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "28" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge HS PLA @FF G4P 0.8 HF nozzle" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["28"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge HS PLA @FF G4P 0.8 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge HS PLA @FF G4P 0.8 HF nozzle", - "nozzle_temperature": [ - "205" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["205"], + "nozzle_temperature_initial_layer": ["210"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P HF.json index 4ee1720941..e0dc105dac 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P HF.json @@ -1,104 +1,42 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_density": [ - "1.24" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "49" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge HS PLA @FF G4P HF" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["1"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "fan_max_speed": ["100"], + "fan_min_speed": ["100"], + "filament_density": ["1.24"], + "filament_flow_ratio": ["0.98"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["49"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge HS PLA @FF G4P HF"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: PLA\n" ], - "filament_type": [ - "PLA" - ], - "filament_unload_time": [ - "29" - ], - "filament_unloading_speed": [ - "90" - ], - "filament_unloading_speed_start": [ - "100" - ], + "filament_type": ["PLA"], + "filament_unload_time": ["29"], + "filament_unloading_speed": ["90"], + "filament_unloading_speed_start": ["100"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge Generic ABS @G3U", "is_custom_defined": "0", "name": "Flashforge HS PLA @FF G4P HF", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.031" - ], - "slow_down_layer_time": [ - "4" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "temperature_vitrification": [ - "60" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_speed": ["100"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.031"], + "slow_down_layer_time": ["4"], + "support_material_interface_fan_speed": ["100"], + "temperature_vitrification": ["60"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P.json index 75dffc8821..b6351d62ab 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P.json @@ -1,53 +1,25 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge HS PLA @FF G4P" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge HS PLA @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["55"], "inherits": "Flashforge Generic HS PLA", "is_custom_defined": "0", "name": "Flashforge HS PLA @FF G4P", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "pressure_advance": [ - "0.026" - ], - "slow_down_layer_time": [ - "4" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "pressure_advance": ["0.026"], + "slow_down_layer_time": ["4"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @G3U.json index 9b6de51882..8c0e0672e7 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @G3U.json @@ -1,13 +1,11 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge HS PLA @G3U" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @G3U", - "is_custom_defined": "0", - "name": "Flashforge HS PLA @G3U", - "version": "2.1.1.0" + "type": "filament", + "filament_settings_id": ["Flashforge HS PLA @G3U"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PLA @G3U", + "is_custom_defined": "0", + "name": "Flashforge HS PLA @G3U", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json index 4f48d053fd..4bc4217db1 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json @@ -1,77 +1,35 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "35" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["35"], + "filament_minimal_purge_on_wipe_tower": ["15"], "filament_ramming_parameters": [ "105 105 9.87097 10.129 10.129 10.9247 14.1505 18.1505 19.7634 19.7419 19.8925 19.5484 13.9785 4.45161 0.0430108 0.236559 0.473118 0.301075| 0.05 9.73979 0.45 10.2409 0.95 11.2409 1.45 19.5688 1.95 19.5925 2.45 19.9355 2.95 0.503226 3.45 0.331183 3.95 0.116129 4.45 7.6 4.95 7.6" ], - "filament_settings_id": [ - "Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle" - ], + "filament_settings_id": ["Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n; right_extruder_material:PLA\n\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle", - "nozzle_temperature": [ - "200" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["200"], + "nozzle_temperature_initial_layer": ["215"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti @FF G4P HF.json index b2324c2407..aad74fa498 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti @FF G4P HF.json @@ -1,104 +1,42 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_density": [ - "1.24" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "49" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge HS PLA Burnt Ti @FF G4P HF" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["1"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "fan_max_speed": ["100"], + "fan_min_speed": ["100"], + "filament_density": ["1.24"], + "filament_flow_ratio": ["0.98"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["49"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge HS PLA Burnt Ti @FF G4P HF"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: PLA\n" ], - "filament_type": [ - "PLA" - ], - "filament_unload_time": [ - "29" - ], - "filament_unloading_speed": [ - "90" - ], - "filament_unloading_speed_start": [ - "100" - ], + "filament_type": ["PLA"], + "filament_unload_time": ["29"], + "filament_unloading_speed": ["90"], + "filament_unloading_speed_start": ["100"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge Generic ABS @G3U", "is_custom_defined": "0", "name": "Flashforge HS PLA Burnt Ti @FF G4P HF", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.031" - ], - "slow_down_layer_time": [ - "4" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "temperature_vitrification": [ - "60" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_speed": ["100"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.031"], + "slow_down_layer_time": ["4"], + "support_material_interface_fan_speed": ["100"], + "temperature_vitrification": ["60"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json index d400745222..3f98910ae9 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json @@ -1,74 +1,32 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "28" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["28"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle", - "nozzle_temperature": [ - "200" - ], - "nozzle_temperature_initial_layer": [ - "205" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["200"], + "nozzle_temperature_initial_layer": ["205"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json index c04af5ef0e..4437893531 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json @@ -1,74 +1,32 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "28" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["28"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle", - "nozzle_temperature": [ - "200" - ], - "nozzle_temperature_initial_layer": [ - "205" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["200"], + "nozzle_temperature_initial_layer": ["205"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA.json index 48fa9c5276..de0aa7faeb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge HS PLA" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge HS PLA", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge HS PLA"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge HS PLA", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P 0.6 HF nozzle.json index 06ae40cfe5..4daa632d94 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P 0.6 HF nozzle.json @@ -1,119 +1,47 @@ { - "activate_chamber_temp_control": [ - "1" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "chamber_temperature": [ - "60" - ], - "close_fan_the_first_x_layers": [ - "2" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "50" - ], - "filament_density": [ - "1.04" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "15" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PA @FF G4P 0.6 HF nozzle" - ], + "activate_chamber_temp_control": ["1"], + "additional_cooling_fan_speed": ["0"], + "chamber_temperature": ["60"], + "close_fan_the_first_x_layers": ["2"], + "complete_print_exhaust_fan_speed": ["40"], + "cool_plate_temp": ["0"], + "cool_plate_temp_initial_layer": ["0"], + "during_print_exhaust_fan_speed": ["40"], + "eng_plate_temp": ["105"], + "eng_plate_temp_initial_layer": ["105"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["80"], + "fan_min_speed": ["50"], + "filament_density": ["1.04"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["15"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PA @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n; right_extruder_material:PA\n\n\n" ], - "filament_type": [ - "PA" - ], - "filament_unload_time": [ - "29" - ], + "filament_type": ["PA"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], - "hot_plate_temp": [ - "105" - ], - "hot_plate_temp_initial_layer": [ - "105" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], + "hot_plate_temp": ["105"], + "hot_plate_temp_initial_layer": ["105"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PA @FF G4P 0.6 HF nozzle", - "nozzle_temperature": [ - "290" - ], - "nozzle_temperature_initial_layer": [ - "290" - ], - "nozzle_temperature_range_high": [ - "295" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.023" - ], - "slow_down_layer_time": [ - "8" - ], - "support_material_interface_fan_speed": [ - "80" - ], - "temperature_vitrification": [ - "108" - ], - "textured_plate_temp": [ - "105" - ], - "textured_plate_temp_initial_layer": [ - "105" - ], + "nozzle_temperature": ["290"], + "nozzle_temperature_initial_layer": ["290"], + "nozzle_temperature_range_high": ["295"], + "nozzle_temperature_range_low": ["240"], + "overhang_fan_speed": ["80"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.023"], + "slow_down_layer_time": ["8"], + "support_material_interface_fan_speed": ["80"], + "temperature_vitrification": ["108"], + "textured_plate_temp": ["105"], + "textured_plate_temp_initial_layer": ["105"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P HF.json index ffc5d95bdc..5e8113f4ee 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P HF.json @@ -1,89 +1,37 @@ { - "activate_chamber_temp_control": [ - "1" - ], - "chamber_temperature": [ - "60" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "30" - ], - "filament_density": [ - "1.24" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PA @FF G4P HF" - ], + "activate_chamber_temp_control": ["1"], + "chamber_temperature": ["60"], + "close_fan_the_first_x_layers": ["1"], + "complete_print_exhaust_fan_speed": ["50"], + "during_print_exhaust_fan_speed": ["40"], + "fan_max_speed": ["60"], + "fan_min_speed": ["30"], + "filament_density": ["1.24"], + "filament_flow_ratio": ["1"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PA @FF G4P HF"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: PA\n" ], - "filament_type": [ - "PA" - ], - "filament_unloading_speed": [ - "90" - ], - "filament_unloading_speed_start": [ - "100" - ], + "filament_type": ["PA"], + "filament_unloading_speed": ["90"], + "filament_unloading_speed_start": ["100"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], "inherits": "Flashforge Generic ABS @G3U", "is_custom_defined": "0", "name": "Flashforge PA @FF G4P HF", - "nozzle_temperature": [ - "280" - ], - "nozzle_temperature_initial_layer": [ - "280" - ], - "nozzle_temperature_range_high": [ - "300" - ], - "nozzle_temperature_range_low": [ - "260" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.02" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "temperature_vitrification": [ - "110" - ], + "nozzle_temperature": ["280"], + "nozzle_temperature_initial_layer": ["280"], + "nozzle_temperature_range_high": ["300"], + "nozzle_temperature_range_low": ["260"], + "overhang_fan_speed": ["100"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.02"], + "support_material_interface_fan_speed": ["100"], + "temperature_vitrification": ["110"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P.json index 695f70fdd1..0ae02f4b4e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P.json @@ -1,71 +1,31 @@ { - "activate_chamber_temp_control": [ - "1" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "chamber_temperature": [ - "60" - ], - "complete_print_exhaust_fan_speed": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "30" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge PA @FF G4P" - ], + "activate_chamber_temp_control": ["1"], + "additional_cooling_fan_speed": ["0"], + "chamber_temperature": ["60"], + "complete_print_exhaust_fan_speed": ["50"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["60"], + "fan_min_speed": ["30"], + "filament_max_volumetric_speed": ["8"], + "filament_settings_id": ["Flashforge PA @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PA\n" ], - "filament_type": [ - "PA" - ], + "filament_type": ["PA"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], "inherits": "Flashforge Generic TPU", "is_custom_defined": "0", "name": "Flashforge PA @FF G4P", - "nozzle_temperature": [ - "280" - ], - "nozzle_temperature_initial_layer": [ - "280" - ], - "nozzle_temperature_range_high": [ - "300" - ], - "nozzle_temperature_range_low": [ - "260" - ], - "pressure_advance": [ - "0.02" - ], - "temperature_vitrification": [ - "110" - ], + "nozzle_temperature": ["280"], + "nozzle_temperature_initial_layer": ["280"], + "nozzle_temperature_range_high": ["300"], + "nozzle_temperature_range_low": ["260"], + "pressure_advance": ["0.02"], + "temperature_vitrification": ["110"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA-CF @FF G4P.json index 0c3aa3a13e..72aa657b8d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA-CF @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA-CF @FF G4P.json @@ -1,89 +1,37 @@ { - "activate_chamber_temp_control": [ - "1" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "chamber_temperature": [ - "60" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "5" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "30" - ], - "filament_density": [ - "1.06" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge PA-CF @FF G4P" - ], + "activate_chamber_temp_control": ["1"], + "additional_cooling_fan_speed": ["0"], + "chamber_temperature": ["60"], + "close_fan_the_first_x_layers": ["3"], + "complete_print_exhaust_fan_speed": ["50"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["5"], + "fan_max_speed": ["60"], + "fan_min_speed": ["30"], + "filament_density": ["1.06"], + "filament_flow_ratio": ["0.95"], + "filament_max_volumetric_speed": ["8"], + "filament_settings_id": ["Flashforge PA-CF @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PA-CF\n" ], - "filament_type": [ - "PA-CF" - ], + "filament_type": ["PA-CF"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], "inherits": "Flashforge Generic PLA-CF10", "is_custom_defined": "0", "name": "Flashforge PA-CF @FF G4P", - "nozzle_temperature": [ - "290" - ], - "nozzle_temperature_initial_layer": [ - "290" - ], - "nozzle_temperature_range_high": [ - "300" - ], - "nozzle_temperature_range_low": [ - "260" - ], - "overhang_fan_speed": [ - "60" - ], - "pressure_advance": [ - "0.02" - ], - "slow_down_layer_time": [ - "2" - ], - "support_material_interface_fan_speed": [ - "60" - ], - "temperature_vitrification": [ - "180" - ], + "nozzle_temperature": ["290"], + "nozzle_temperature_initial_layer": ["290"], + "nozzle_temperature_range_high": ["300"], + "nozzle_temperature_range_low": ["260"], + "overhang_fan_speed": ["60"], + "pressure_advance": ["0.02"], + "slow_down_layer_time": ["2"], + "support_material_interface_fan_speed": ["60"], + "temperature_vitrification": ["180"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA12-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA12-CF.json index 7dbd81db30..dafcc2a93d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA12-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA12-CF.json @@ -1,55 +1,25 @@ { - "type": "filament", - "name": "Flashforge PA12-CF", - "inherits": "FusRock Generic PET-CF", - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "filament_density": [ - "1.1" - ], - "filament_flow_ratio": [ - "0.99" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_settings_id": [ - "Flashforge PA12-CF" - ], - "filament_type": [ - "PA-CF" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "is_custom_defined": "0", - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "pressure_advance": [ - "0.035" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "10" - ], - "support_material_interface_fan_speed": [ - "20" - ], - "version": "2.0.2.0" + "type": "filament", + "name": "Flashforge PA12-CF", + "inherits": "FusRock Generic PET-CF", + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "filament_density": ["1.1"], + "filament_flow_ratio": ["0.99"], + "filament_max_volumetric_speed": ["5"], + "filament_settings_id": ["Flashforge PA12-CF"], + "filament_type": ["PA-CF"], + "hot_plate_temp": ["90"], + "hot_plate_temp_initial_layer": ["90"], + "is_custom_defined": "0", + "nozzle_temperature": ["260"], + "nozzle_temperature_initial_layer": ["260"], + "nozzle_temperature_range_high": ["280"], + "nozzle_temperature_range_low": ["250"], + "pressure_advance": ["0.035"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["10"], + "support_material_interface_fan_speed": ["20"], + "version": "2.0.2.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA6-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA6-CF.json index 3bedb724f0..cc02d2a47e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA6-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA6-CF.json @@ -1,52 +1,24 @@ { - "type": "filament", - "name": "Flashforge PA6-CF", - "inherits": "FusRock Generic PET-CF", - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "filament_density": [ - "1.1" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_settings_id": [ - "Flashforge PA6-CF" - ], - "filament_type": [ - "PA6-CF" - ], - "hot_plate_temp": [ - "95" - ], - "hot_plate_temp_initial_layer": [ - "95" - ], - "is_custom_defined": "0", - "nozzle_temperature": [ - "245" - ], - "nozzle_temperature_initial_layer": [ - "245" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "pressure_advance": [ - "0.035" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "10" - ], - "support_material_interface_fan_speed": [ - "20" - ], - "version": "2.0.2.0" + "type": "filament", + "name": "Flashforge PA6-CF", + "inherits": "FusRock Generic PET-CF", + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "filament_density": ["1.1"], + "filament_max_volumetric_speed": ["5"], + "filament_settings_id": ["Flashforge PA6-CF"], + "filament_type": ["PA6-CF"], + "hot_plate_temp": ["95"], + "hot_plate_temp_initial_layer": ["95"], + "is_custom_defined": "0", + "nozzle_temperature": ["245"], + "nozzle_temperature_initial_layer": ["245"], + "nozzle_temperature_range_high": ["260"], + "nozzle_temperature_range_low": ["230"], + "pressure_advance": ["0.035"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["10"], + "support_material_interface_fan_speed": ["20"], + "version": "2.0.2.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA66-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA66-CF.json index 25aa934c3b..7e7eef41cd 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA66-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA66-CF.json @@ -1,52 +1,24 @@ { - "type": "filament", - "name": "Flashforge PA66-CF", - "inherits": "FusRock Generic PET-CF", - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "filament_density": [ - "1.1" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_settings_id": [ - "Flashforge PA66-CF" - ], - "filament_type": [ - "PA-CF" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "is_custom_defined": "0", - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "pressure_advance": [ - "0.035" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "10" - ], - "support_material_interface_fan_speed": [ - "20" - ], - "version": "2.0.2.0" + "type": "filament", + "name": "Flashforge PA66-CF", + "inherits": "FusRock Generic PET-CF", + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "filament_density": ["1.1"], + "filament_max_volumetric_speed": ["5"], + "filament_settings_id": ["Flashforge PA66-CF"], + "filament_type": ["PA-CF"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], + "is_custom_defined": "0", + "nozzle_temperature": ["250"], + "nozzle_temperature_initial_layer": ["250"], + "nozzle_temperature_range_high": ["270"], + "nozzle_temperature_range_low": ["240"], + "pressure_advance": ["0.035"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["10"], + "support_material_interface_fan_speed": ["20"], + "version": "2.0.2.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PAHT-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PAHT-CF @FF G4P.json index 819fca81ef..a8e66b9606 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PAHT-CF @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PAHT-CF @FF G4P.json @@ -1,89 +1,37 @@ { - "activate_chamber_temp_control": [ - "1" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "chamber_temperature": [ - "60" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "5" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "30" - ], - "filament_density": [ - "1.06" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge PAHT-CF @FF G4P" - ], + "activate_chamber_temp_control": ["1"], + "additional_cooling_fan_speed": ["0"], + "chamber_temperature": ["60"], + "close_fan_the_first_x_layers": ["3"], + "complete_print_exhaust_fan_speed": ["50"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["5"], + "fan_max_speed": ["60"], + "fan_min_speed": ["30"], + "filament_density": ["1.06"], + "filament_flow_ratio": ["0.95"], + "filament_max_volumetric_speed": ["8"], + "filament_settings_id": ["Flashforge PAHT-CF @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PA-CF\n" ], - "filament_type": [ - "PA-CF" - ], + "filament_type": ["PA-CF"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], "inherits": "Flashforge Generic PLA-CF10", "is_custom_defined": "0", "name": "Flashforge PAHT-CF @FF G4P", - "nozzle_temperature": [ - "290" - ], - "nozzle_temperature_initial_layer": [ - "290" - ], - "nozzle_temperature_range_high": [ - "300" - ], - "nozzle_temperature_range_low": [ - "260" - ], - "overhang_fan_speed": [ - "60" - ], - "pressure_advance": [ - "0.02" - ], - "slow_down_layer_time": [ - "2" - ], - "support_material_interface_fan_speed": [ - "60" - ], - "temperature_vitrification": [ - "180" - ], + "nozzle_temperature": ["290"], + "nozzle_temperature_initial_layer": ["290"], + "nozzle_temperature_range_high": ["300"], + "nozzle_temperature_range_low": ["260"], + "overhang_fan_speed": ["60"], + "pressure_advance": ["0.02"], + "slow_down_layer_time": ["2"], + "support_material_interface_fan_speed": ["60"], + "temperature_vitrification": ["180"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PET @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PET @FF G4P.json index b0a736285c..ebd0bfa65a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PET @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PET @FF G4P.json @@ -1,83 +1,35 @@ { - "activate_chamber_temp_control": [ - "1" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "chamber_temperature": [ - "60" - ], - "complete_print_exhaust_fan_speed": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "10" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "0" - ], - "filament_max_volumetric_speed": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PET @FF G4P" - ], + "activate_chamber_temp_control": ["1"], + "additional_cooling_fan_speed": ["0"], + "chamber_temperature": ["60"], + "complete_print_exhaust_fan_speed": ["50"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["10"], + "fan_max_speed": ["60"], + "fan_min_speed": ["0"], + "filament_max_volumetric_speed": ["15"], + "filament_settings_id": ["Flashforge PET @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PET\n" ], - "filament_type": [ - "PET-CF" - ], + "filament_type": ["PET-CF"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["80"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge Generic TPU", "is_custom_defined": "0", "name": "Flashforge PET @FF G4P", - "nozzle_temperature": [ - "280" - ], - "nozzle_temperature_initial_layer": [ - "280" - ], - "nozzle_temperature_range_high": [ - "300" - ], - "nozzle_temperature_range_low": [ - "260" - ], - "overhang_fan_speed": [ - "30" - ], - "overhang_fan_threshold": [ - "95%" - ], - "pressure_advance": [ - "0.02" - ], - "slow_down_layer_time": [ - "6" - ], - "support_material_interface_fan_speed": [ - "-1" - ], - "temperature_vitrification": [ - "110" - ], + "nozzle_temperature": ["280"], + "nozzle_temperature_initial_layer": ["280"], + "nozzle_temperature_range_high": ["300"], + "nozzle_temperature_range_low": ["260"], + "overhang_fan_speed": ["30"], + "overhang_fan_threshold": ["95%"], + "pressure_advance": ["0.02"], + "slow_down_layer_time": ["6"], + "support_material_interface_fan_speed": ["-1"], + "temperature_vitrification": ["110"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PET-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PET-CF @FF G4P.json index 895f99e964..cb1bcd4d2b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PET-CF @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PET-CF @FF G4P.json @@ -1,83 +1,35 @@ { - "activate_chamber_temp_control": [ - "1" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "chamber_temperature": [ - "60" - ], - "complete_print_exhaust_fan_speed": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "10" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "30" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge PET-CF @FF G4P" - ], + "activate_chamber_temp_control": ["1"], + "additional_cooling_fan_speed": ["0"], + "chamber_temperature": ["60"], + "complete_print_exhaust_fan_speed": ["50"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["10"], + "fan_max_speed": ["60"], + "fan_min_speed": ["30"], + "filament_flow_ratio": ["0.98"], + "filament_max_volumetric_speed": ["8"], + "filament_settings_id": ["Flashforge PET-CF @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PET-CF\n" ], - "filament_type": [ - "PET-CF" - ], + "filament_type": ["PET-CF"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["80"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge Generic TPU", "is_custom_defined": "0", "name": "Flashforge PET-CF @FF G4P", - "nozzle_temperature": [ - "280" - ], - "nozzle_temperature_initial_layer": [ - "280" - ], - "nozzle_temperature_range_high": [ - "300" - ], - "nozzle_temperature_range_low": [ - "260" - ], - "overhang_fan_speed": [ - "60" - ], - "pressure_advance": [ - "0.02" - ], - "slow_down_layer_time": [ - "6" - ], - "support_material_interface_fan_speed": [ - "60" - ], - "temperature_vitrification": [ - "110" - ], + "nozzle_temperature": ["280"], + "nozzle_temperature_initial_layer": ["280"], + "nozzle_temperature_range_high": ["300"], + "nozzle_temperature_range_low": ["260"], + "overhang_fan_speed": ["60"], + "pressure_advance": ["0.02"], + "slow_down_layer_time": ["6"], + "support_material_interface_fan_speed": ["60"], + "temperature_vitrification": ["110"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PET-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PET-CF.json index 449ed25791..ed5a95565a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PET-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PET-CF.json @@ -1,46 +1,22 @@ { - "type": "filament", - "name": "Flashforge PET-CF", - "inherits": "FusRock Generic PET-CF", - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "filament_density": [ - "1.1" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_settings_id": [ - "Flashforge PET-CF" - ], - "hot_plate_temp": [ - "80" - ], - "is_custom_defined": "0", - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "pressure_advance": [ - "0.035" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "10" - ], - "support_material_interface_fan_speed": [ - "20" - ], - "version": "2.0.2.0" + "type": "filament", + "name": "Flashforge PET-CF", + "inherits": "FusRock Generic PET-CF", + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "filament_density": ["1.1"], + "filament_max_volumetric_speed": ["5"], + "filament_settings_id": ["Flashforge PET-CF"], + "hot_plate_temp": ["80"], + "is_custom_defined": "0", + "nozzle_temperature": ["260"], + "nozzle_temperature_initial_layer": ["260"], + "nozzle_temperature_range_high": ["270"], + "nozzle_temperature_range_low": ["240"], + "pressure_advance": ["0.035"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["10"], + "support_material_interface_fan_speed": ["20"], + "version": "2.0.2.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG @FF AD3.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG @FF AD3.json index f072f8a914..d1d9538657 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG @FF AD3.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG @FF AD3.json @@ -6,84 +6,34 @@ "from": "system", "instantiation": "true", "inherits": "fdm_filament_pet", - "filament_vendor": [ - "Flashforge" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_max_volumetric_speed": [ - "20" - ], - "slow_down_layer_time": [ - "8" - ], - "temperature_vitrification": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "hot_plate_temp": [ - "80" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "slow_down_min_speed": [ - "30" - ], - "overhang_fan_speed": [ - "80" - ], - "support_material_interface_fan_speed": [ - "90" - ], - "additional_cooling_fan_speed": [ - "50" - ], + "filament_vendor": ["Flashforge"], + "filament_flow_ratio": ["1"], + "filament_max_volumetric_speed": ["20"], + "slow_down_layer_time": ["8"], + "temperature_vitrification": ["70"], + "hot_plate_temp_initial_layer": ["80"], + "hot_plate_temp": ["80"], + "close_fan_the_first_x_layers": ["1"], + "slow_down_min_speed": ["30"], + "overhang_fan_speed": ["80"], + "support_material_interface_fan_speed": ["90"], + "additional_cooling_fan_speed": ["50"], "filament_start_gcode": [ "; filament start gcode \n;right_extruder_material:PETG" ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_diameter": [ - "1.75" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.0" - ], - "filament_density": [ - "1.27" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "245" - ], - "nozzle_temperature": [ - "245" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "40" - ], - "overhang_fan_threshold": [ - "25%" - ], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_diameter": ["1.75"], + "enable_pressure_advance": ["1"], + "pressure_advance": ["0.0"], + "filament_density": ["1.27"], + "nozzle_temperature_range_low": ["220"], + "nozzle_temperature_range_high": ["260"], + "nozzle_temperature_initial_layer": ["245"], + "nozzle_temperature": ["245"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["90"], + "fan_min_speed": ["40"], + "overhang_fan_threshold": ["25%"], "compatible_printers": [ "Flashforge Adventurer 3 Series 0.4 Nozzle", "Flashforge Adventurer 3 Series 0.6 Nozzle" diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json index 0dc14def08..4304dd8588 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PETG Basic @FF AD5M 0.25 nozzle" - ], - "from": "system", - "setting_id": "GFSA04_12", - "instantiation": "true", - "inherits": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PETG Basic @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PETG Basic @FF AD5M 0.25 nozzle"], + "from": "system", + "setting_id": "GFSA04_12", + "instantiation": "true", + "inherits": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PETG Basic @FF AD5M 0.25 nozzle", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic @G3U.json index bd1d66cf92..7569774ad0 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic @G3U.json @@ -1,13 +1,11 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge PETG Basic @G3U" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "false", - "inherits": "Flashforge Generic PETG @G3U", - "is_custom_defined": "0", - "name": "Flashforge PETG Basic @G3U", - "version": "2.1.1.0" + "type": "filament", + "filament_settings_id": ["Flashforge PETG Basic @G3U"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "false", + "inherits": "Flashforge Generic PETG @G3U", + "is_custom_defined": "0", + "name": "Flashforge PETG Basic @G3U", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic.json index af99bda27f..3e39d5e92d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic.json @@ -1,31 +1,17 @@ { - "type": "filament", - "additional_cooling_fan_speed": [ - "60" - ], - "filament_settings_id": [ - "Flashforge PETG Basic" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PETG", - "is_custom_defined": "0", - "name": "Flashforge PETG Basic", - "nozzle_temperature": [ - "265" - ], - "nozzle_temperature_range_high": [ - "265" - ], - "overhang_fan_speed": [ - "100" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "version": "2.1.1.0" + "type": "filament", + "additional_cooling_fan_speed": ["60"], + "filament_settings_id": ["Flashforge PETG Basic"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PETG", + "is_custom_defined": "0", + "name": "Flashforge PETG Basic", + "nozzle_temperature": ["265"], + "nozzle_temperature_range_high": ["265"], + "overhang_fan_speed": ["100"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json index c425db0193..ce3f092d2f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PETG Pro @FF AD5M 0.25 nozzle" - ], - "from": "system", - "setting_id": "GFSA04_12", - "instantiation": "true", - "inherits": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PETG Pro @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PETG Pro @FF AD5M 0.25 nozzle"], + "from": "system", + "setting_id": "GFSA04_12", + "instantiation": "true", + "inherits": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PETG Pro @FF AD5M 0.25 nozzle", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json index f28789ad69..4e6e711ffd 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json @@ -1,61 +1,27 @@ { - "type": "filament", - "cool_plate_temp": [ - "75" - ], - "cool_plate_temp_initial_layer": [ - "75" - ], - "eng_plate_temp": [ - "75" - ], - "eng_plate_temp_initial_layer": [ - "75" - ], - "fan_max_speed": [ - "100" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge PETG Pro @FF AD5X 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04_12", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.25 nozzle" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], - "inherits": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PETG Pro @FF AD5X 0.25 nozzle", - "nozzle_temperature_initial_layer": [ - "260" - ], - "pressure_advance": [ - "0.04" - ], - "slow_down_min_speed": [ - "30" - ], - "textured_plate_temp": [ - "75" - ], - "textured_plate_temp_initial_layer": [ - "75" - ], - "version": "2.1.1.0" + "type": "filament", + "cool_plate_temp": ["75"], + "cool_plate_temp_initial_layer": ["75"], + "eng_plate_temp": ["75"], + "eng_plate_temp_initial_layer": ["75"], + "fan_max_speed": ["100"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["8"], + "filament_settings_id": ["Flashforge PETG Pro @FF AD5X 0.25 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04_12", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], + "inherits": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PETG Pro @FF AD5X 0.25 nozzle", + "nozzle_temperature_initial_layer": ["260"], + "pressure_advance": ["0.04"], + "slow_down_min_speed": ["30"], + "textured_plate_temp": ["75"], + "textured_plate_temp_initial_layer": ["75"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json index 6c0b77df11..ec921a218e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json @@ -1,48 +1,22 @@ { - "cool_plate_temp": [ - "75" - ], - "cool_plate_temp_initial_layer": [ - "75" - ], - "eng_plate_temp": [ - "75" - ], - "eng_plate_temp_initial_layer": [ - "75" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PETG Pro @FF AD5X 0.6 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], - "inherits": "Flashforge Generic PETG", - "is_custom_defined": "0", - "name": "Flashforge PETG Pro @FF AD5X 0.6 nozzle", - "pressure_advance": [ - "0.04" - ], - "textured_plate_temp": [ - "75" - ], - "textured_plate_temp_initial_layer": [ - "75" - ], - "version": "2.1.1.0" + "cool_plate_temp": ["75"], + "cool_plate_temp_initial_layer": ["75"], + "eng_plate_temp": ["75"], + "eng_plate_temp_initial_layer": ["75"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PETG Pro @FF AD5X 0.6 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], + "inherits": "Flashforge Generic PETG", + "is_custom_defined": "0", + "name": "Flashforge PETG Pro @FF AD5X 0.6 nozzle", + "pressure_advance": ["0.04"], + "textured_plate_temp": ["75"], + "textured_plate_temp_initial_layer": ["75"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json index 9df52859f4..83a6e84d41 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json @@ -1,48 +1,22 @@ { - "cool_plate_temp": [ - "75" - ], - "cool_plate_temp_initial_layer": [ - "75" - ], - "eng_plate_temp": [ - "75" - ], - "eng_plate_temp_initial_layer": [ - "75" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PETG Pro @FF AD5X 0.8 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], - "inherits": "Flashforge Generic PETG", - "is_custom_defined": "0", - "name": "Flashforge PETG Pro @FF AD5X 0.8 nozzle", - "pressure_advance": [ - "0.04" - ], - "textured_plate_temp": [ - "75" - ], - "textured_plate_temp_initial_layer": [ - "75" - ], - "version": "2.1.1.0" + "cool_plate_temp": ["75"], + "cool_plate_temp_initial_layer": ["75"], + "eng_plate_temp": ["75"], + "eng_plate_temp_initial_layer": ["75"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PETG Pro @FF AD5X 0.8 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], + "inherits": "Flashforge Generic PETG", + "is_custom_defined": "0", + "name": "Flashforge PETG Pro @FF AD5X 0.8 nozzle", + "pressure_advance": ["0.04"], + "textured_plate_temp": ["75"], + "textured_plate_temp_initial_layer": ["75"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X.json index 819d365f4f..34ecd00998 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X.json @@ -1,52 +1,24 @@ { - "type": "filament", - "cool_plate_temp": [ - "75" - ], - "cool_plate_temp_initial_layer": [ - "75" - ], - "eng_plate_temp": [ - "75" - ], - "eng_plate_temp_initial_layer": [ - "75" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PETG Pro @FF AD5X" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], - "inherits": "Flashforge Generic PETG", - "is_custom_defined": "0", - "name": "Flashforge PETG Pro @FF AD5X", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "pressure_advance": [ - "0.04" - ], - "textured_plate_temp": [ - "75" - ], - "textured_plate_temp_initial_layer": [ - "75" - ], - "version": "2.1.1.0" + "type": "filament", + "cool_plate_temp": ["75"], + "cool_plate_temp_initial_layer": ["75"], + "eng_plate_temp": ["75"], + "eng_plate_temp_initial_layer": ["75"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PETG Pro @FF AD5X"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], + "inherits": "Flashforge Generic PETG", + "is_custom_defined": "0", + "name": "Flashforge PETG Pro @FF AD5X", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "nozzle_temperature_initial_layer": ["260"], + "pressure_advance": ["0.04"], + "textured_plate_temp": ["75"], + "textured_plate_temp_initial_layer": ["75"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.25 nozzle.json index 9db97cd770..ad76b2e3c7 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.25 nozzle.json @@ -1,56 +1,24 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "80" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_settings_id": [ - "Flashforge PETG Pro @FF G4P 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_max_speed": ["100"], + "fan_min_speed": ["80"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["12"], + "filament_settings_id": ["Flashforge PETG Pro @FF G4P 0.25 nozzle"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.25 nozzle" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], + "hot_plate_temp": ["80"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge PETG @FF AD5M 0.25 Nozzle", "is_custom_defined": "0", "name": "Flashforge PETG Pro @FF G4P 0.25 nozzle", - "pressure_advance": [ - "0.045" - ], - "slow_down_layer_time": [ - "5" - ], - "slow_down_min_speed": [ - "20" - ], + "pressure_advance": ["0.045"], + "slow_down_layer_time": ["5"], + "slow_down_min_speed": ["20"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.6 HF nozzle.json index edb65a9107..1919048c38 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.6 HF nozzle.json @@ -1,56 +1,28 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_density": [ - "1.28" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_density": ["1.28"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], "filament_ramming_parameters": [ "105 105 6.68817 6.75269 6.51613 7.54839 11.9355 17.5054 19.957 19.828 19.828 18.9892 13.0538 4.08602 0.0430108 0.387097 0.666667 0.344086| 0.05 6.6 0.45 6.8 0.95 7.97204 1.45 19.4828 1.95 19.5495 2.45 18.7742 2.95 0.331183 3.45 0.632258 3.95 0.116129 4.45 7.6 4.95 7.6" ], - "filament_settings_id": [ - "Flashforge PETG Pro @FF G4P 0.6 HF nozzle" - ], + "filament_settings_id": ["Flashforge PETG Pro @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n; right_extruder_material:PETG" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PETG Pro @FF G4P 0.6 HF nozzle", - "nozzle_temperature": [ - "235" - ], - "overhang_fan_speed": [ - "100" - ], - "support_material_interface_fan_speed": [ - "100" - ], + "nozzle_temperature": ["235"], + "overhang_fan_speed": ["100"], + "support_material_interface_fan_speed": ["100"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.6 nozzle.json index 1a13e44b7d..68eb80d895 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.6 nozzle.json @@ -1,89 +1,37 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "20" - ], - "fan_max_speed": [ - "65" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.28" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PETG Pro @FF G4P 0.6 nozzle" - ], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["3"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["20"], + "fan_max_speed": ["65"], + "fan_min_speed": ["30"], + "filament_cost": ["25"], + "filament_density": ["1.28"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PETG Pro @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PETG" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["80"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PETG Pro @FF G4P 0.6 nozzle", - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "245" - ], - "nozzle_temperature_range_high": [ - "265" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "100" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], + "nozzle_temperature": ["240"], + "nozzle_temperature_initial_layer": ["245"], + "nozzle_temperature_range_high": ["265"], + "nozzle_temperature_range_low": ["220"], + "overhang_fan_speed": ["100"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.8 HF nozzle.json index c790ea9ba9..8d20a3e873 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.8 HF nozzle.json @@ -1,89 +1,37 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "20" - ], - "fan_max_speed": [ - "65" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.28" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PETG Pro @FF G4P 0.8 HF nozzle" - ], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["3"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["20"], + "fan_max_speed": ["65"], + "fan_min_speed": ["30"], + "filament_cost": ["25"], + "filament_density": ["1.28"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PETG Pro @FF G4P 0.8 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PETG" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "0" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], + "hot_plate_temp": ["0"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PETG Pro @FF G4P 0.8 HF nozzle", - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "245" - ], - "nozzle_temperature_range_high": [ - "265" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "100" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], + "nozzle_temperature": ["240"], + "nozzle_temperature_initial_layer": ["245"], + "nozzle_temperature_range_high": ["265"], + "nozzle_temperature_range_low": ["220"], + "overhang_fan_speed": ["100"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P HF.json index 17b9e12ed1..0dc388562c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P HF.json @@ -1,98 +1,40 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.27" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PETG Pro @FF G4P HF" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["1"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_max_speed": ["90"], + "fan_min_speed": ["40"], + "filament_cost": ["30"], + "filament_density": ["1.27"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PETG Pro @FF G4P HF"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: PETG\n" ], - "filament_type": [ - "PETG" - ], - "filament_unload_time": [ - "29" - ], - "filament_unloading_speed": [ - "90" - ], - "filament_unloading_speed_start": [ - "100" - ], + "filament_type": ["PETG"], + "filament_unload_time": ["29"], + "filament_unloading_speed": ["90"], + "filament_unloading_speed_start": ["100"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], + "hot_plate_temp": ["80"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge Generic ABS @G3U", "is_custom_defined": "0", "name": "Flashforge PETG Pro @FF G4P HF", - "nozzle_temperature": [ - "255" - ], - "nozzle_temperature_initial_layer": [ - "255" - ], - "overhang_fan_speed": [ - "80" - ], - "pressure_advance": [ - "0.045" - ], - "slow_down_layer_time": [ - "5" - ], - "slow_down_min_speed": [ - "30" - ], - "support_material_interface_fan_speed": [ - "90" - ], - "temperature_vitrification": [ - "70" - ], + "nozzle_temperature": ["255"], + "nozzle_temperature_initial_layer": ["255"], + "overhang_fan_speed": ["80"], + "pressure_advance": ["0.045"], + "slow_down_layer_time": ["5"], + "slow_down_min_speed": ["30"], + "support_material_interface_fan_speed": ["90"], + "temperature_vitrification": ["70"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P.json index 53c210a66a..fa6d671f7e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P.json @@ -1,44 +1,20 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PETG Pro @FF G4P" - ], - "filament_unload_time": [ - "29" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PETG Pro @FF G4P"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["80"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge Generic PETG", "is_custom_defined": "0", "name": "Flashforge PETG Pro @FF G4P", - "pressure_advance": [ - "0.045" - ], - "slow_down_layer_time": [ - "5" - ], + "pressure_advance": ["0.045"], + "slow_down_layer_time": ["5"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @G3U.json index 4638f820fd..bb2ee82bd0 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @G3U.json @@ -1,13 +1,11 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge PETG Pro @G3U" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PETG @G3U", - "is_custom_defined": "0", - "name": "Flashforge PETG Pro @G3U", - "version": "2.1.1.0" + "type": "filament", + "filament_settings_id": ["Flashforge PETG Pro @G3U"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PETG @G3U", + "is_custom_defined": "0", + "name": "Flashforge PETG Pro @G3U", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro.json index 6fd513c95c..034473b0a1 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro.json @@ -1,31 +1,17 @@ { - "type": "filament", - "additional_cooling_fan_speed": [ - "60" - ], - "filament_settings_id": [ - "Flashforge PETG Pro" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PETG", - "is_custom_defined": "0", - "name": "Flashforge PETG Pro", - "nozzle_temperature": [ - "265" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "overhang_fan_speed": [ - "100" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "version": "2.1.1.0" + "type": "filament", + "additional_cooling_fan_speed": ["60"], + "filament_settings_id": ["Flashforge PETG Pro"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PETG", + "is_custom_defined": "0", + "name": "Flashforge PETG Pro", + "nozzle_temperature": ["265"], + "nozzle_temperature_range_high": ["260"], + "overhang_fan_speed": ["100"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json index 7bc8214ccb..320903b1fa 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PETG Transparent @FF AD5M 0.25 nozzle" - ], - "from": "system", - "setting_id": "GFSA04_12", - "instantiation": "true", - "inherits": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PETG Transparent @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PETG Transparent @FF AD5M 0.25 nozzle"], + "from": "system", + "setting_id": "GFSA04_12", + "instantiation": "true", + "inherits": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PETG Transparent @FF AD5M 0.25 nozzle", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json index 94eada2b35..c873128957 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json @@ -1,61 +1,27 @@ { - "type": "filament", - "cool_plate_temp": [ - "75" - ], - "cool_plate_temp_initial_layer": [ - "75" - ], - "eng_plate_temp": [ - "75" - ], - "eng_plate_temp_initial_layer": [ - "75" - ], - "fan_max_speed": [ - "100" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge PETG Transparent @FF AD5X 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04_12", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.25 nozzle" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], - "inherits": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PETG Transparent @FF AD5X 0.25 nozzle", - "nozzle_temperature_initial_layer": [ - "260" - ], - "pressure_advance": [ - "0.04" - ], - "slow_down_min_speed": [ - "30" - ], - "textured_plate_temp": [ - "75" - ], - "textured_plate_temp_initial_layer": [ - "75" - ], - "version": "2.1.1.0" + "type": "filament", + "cool_plate_temp": ["75"], + "cool_plate_temp_initial_layer": ["75"], + "eng_plate_temp": ["75"], + "eng_plate_temp_initial_layer": ["75"], + "fan_max_speed": ["100"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["8"], + "filament_settings_id": ["Flashforge PETG Transparent @FF AD5X 0.25 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04_12", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], + "inherits": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PETG Transparent @FF AD5X 0.25 nozzle", + "nozzle_temperature_initial_layer": ["260"], + "pressure_advance": ["0.04"], + "slow_down_min_speed": ["30"], + "textured_plate_temp": ["75"], + "textured_plate_temp_initial_layer": ["75"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json index c039911056..78bdd72150 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json @@ -1,48 +1,22 @@ { - "cool_plate_temp": [ - "75" - ], - "cool_plate_temp_initial_layer": [ - "75" - ], - "eng_plate_temp": [ - "75" - ], - "eng_plate_temp_initial_layer": [ - "75" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PETG Transparent @FF AD5X 0.6 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], - "inherits": "Flashforge Generic PETG", - "is_custom_defined": "0", - "name": "Flashforge PETG Transparent @FF AD5X 0.6 nozzle", - "pressure_advance": [ - "0.04" - ], - "textured_plate_temp": [ - "75" - ], - "textured_plate_temp_initial_layer": [ - "75" - ], - "version": "2.1.1.0" + "cool_plate_temp": ["75"], + "cool_plate_temp_initial_layer": ["75"], + "eng_plate_temp": ["75"], + "eng_plate_temp_initial_layer": ["75"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PETG Transparent @FF AD5X 0.6 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], + "inherits": "Flashforge Generic PETG", + "is_custom_defined": "0", + "name": "Flashforge PETG Transparent @FF AD5X 0.6 nozzle", + "pressure_advance": ["0.04"], + "textured_plate_temp": ["75"], + "textured_plate_temp_initial_layer": ["75"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json index b530377c3d..b1ef661c13 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json @@ -1,48 +1,22 @@ { - "cool_plate_temp": [ - "75" - ], - "cool_plate_temp_initial_layer": [ - "75" - ], - "eng_plate_temp": [ - "75" - ], - "eng_plate_temp_initial_layer": [ - "75" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PETG Transparent @FF AD5X 0.8 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], - "inherits": "Flashforge Generic PETG", - "is_custom_defined": "0", - "name": "Flashforge PETG Transparent @FF AD5X 0.8 nozzle", - "pressure_advance": [ - "0.04" - ], - "textured_plate_temp": [ - "75" - ], - "textured_plate_temp_initial_layer": [ - "75" - ], - "version": "2.1.1.0" + "cool_plate_temp": ["75"], + "cool_plate_temp_initial_layer": ["75"], + "eng_plate_temp": ["75"], + "eng_plate_temp_initial_layer": ["75"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PETG Transparent @FF AD5X 0.8 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], + "inherits": "Flashforge Generic PETG", + "is_custom_defined": "0", + "name": "Flashforge PETG Transparent @FF AD5X 0.8 nozzle", + "pressure_advance": ["0.04"], + "textured_plate_temp": ["75"], + "textured_plate_temp_initial_layer": ["75"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X.json index 1402561988..baeb598e67 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X.json @@ -1,52 +1,24 @@ { - "type": "filament", - "cool_plate_temp": [ - "75" - ], - "cool_plate_temp_initial_layer": [ - "75" - ], - "eng_plate_temp": [ - "75" - ], - "eng_plate_temp_initial_layer": [ - "75" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PETG Transparent @FF AD5X" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], - "inherits": "Flashforge Generic PETG", - "is_custom_defined": "0", - "name": "Flashforge PETG Transparent @FF AD5X", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "pressure_advance": [ - "0.04" - ], - "textured_plate_temp": [ - "75" - ], - "textured_plate_temp_initial_layer": [ - "75" - ], - "version": "2.1.1.0" + "type": "filament", + "cool_plate_temp": ["75"], + "cool_plate_temp_initial_layer": ["75"], + "eng_plate_temp": ["75"], + "eng_plate_temp_initial_layer": ["75"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PETG Transparent @FF AD5X"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], + "inherits": "Flashforge Generic PETG", + "is_custom_defined": "0", + "name": "Flashforge PETG Transparent @FF AD5X", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "nozzle_temperature_initial_layer": ["260"], + "pressure_advance": ["0.04"], + "textured_plate_temp": ["75"], + "textured_plate_temp_initial_layer": ["75"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json index 617d1f4d9d..c23eb98c98 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json @@ -1,56 +1,24 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "80" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_settings_id": [ - "Flashforge PETG Transparent @FF G4P 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_max_speed": ["100"], + "fan_min_speed": ["80"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["12"], + "filament_settings_id": ["Flashforge PETG Transparent @FF G4P 0.25 nozzle"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.25 nozzle" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], + "hot_plate_temp": ["80"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge PETG @FF AD5M 0.25 Nozzle", "is_custom_defined": "0", "name": "Flashforge PETG Transparent @FF G4P 0.25 nozzle", - "pressure_advance": [ - "0.045" - ], - "slow_down_layer_time": [ - "5" - ], - "slow_down_min_speed": [ - "20" - ], + "pressure_advance": ["0.045"], + "slow_down_layer_time": ["5"], + "slow_down_min_speed": ["20"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.6 HF nozzle.json index e1e867b18a..bc3708077e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.6 HF nozzle.json @@ -1,56 +1,28 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_density": [ - "1.28" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_density": ["1.28"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], "filament_ramming_parameters": [ "105 105 6.68817 6.75269 6.51613 7.54839 11.9355 17.5054 19.957 19.828 19.828 18.9892 13.0538 4.08602 0.0430108 0.387097 0.666667 0.344086| 0.05 6.6 0.45 6.8 0.95 7.97204 1.45 19.4828 1.95 19.5495 2.45 18.7742 2.95 0.331183 3.45 0.632258 3.95 0.116129 4.45 7.6 4.95 7.6" ], - "filament_settings_id": [ - "Flashforge PETG Transparent @FF G4P 0.6 HF nozzle" - ], + "filament_settings_id": ["Flashforge PETG Transparent @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n; right_extruder_material:PETG" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PETG Transparent @FF G4P 0.6 HF nozzle", - "nozzle_temperature": [ - "235" - ], - "overhang_fan_speed": [ - "100" - ], - "support_material_interface_fan_speed": [ - "100" - ], + "nozzle_temperature": ["235"], + "overhang_fan_speed": ["100"], + "support_material_interface_fan_speed": ["100"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.6 nozzle.json index 74153e33cc..a9ed2016d7 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.6 nozzle.json @@ -1,89 +1,37 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "20" - ], - "fan_max_speed": [ - "65" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.28" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PETG Transparent @FF G4P 0.6 nozzle" - ], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["3"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["20"], + "fan_max_speed": ["65"], + "fan_min_speed": ["30"], + "filament_cost": ["25"], + "filament_density": ["1.28"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PETG Transparent @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PETG" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["80"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PETG Transparent @FF G4P 0.6 nozzle", - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "245" - ], - "nozzle_temperature_range_high": [ - "265" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "100" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], + "nozzle_temperature": ["240"], + "nozzle_temperature_initial_layer": ["245"], + "nozzle_temperature_range_high": ["265"], + "nozzle_temperature_range_low": ["220"], + "overhang_fan_speed": ["100"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.8 HF nozzle.json index ad0348183c..f195347329 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.8 HF nozzle.json @@ -1,89 +1,37 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "20" - ], - "fan_max_speed": [ - "65" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.28" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PETG Transparent @FF G4P 0.8 HF nozzle" - ], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["3"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["20"], + "fan_max_speed": ["65"], + "fan_min_speed": ["30"], + "filament_cost": ["25"], + "filament_density": ["1.28"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PETG Transparent @FF G4P 0.8 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PETG" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "0" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], + "hot_plate_temp": ["0"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PETG Transparent @FF G4P 0.8 HF nozzle", - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "245" - ], - "nozzle_temperature_range_high": [ - "265" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "100" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], + "nozzle_temperature": ["240"], + "nozzle_temperature_initial_layer": ["245"], + "nozzle_temperature_range_high": ["265"], + "nozzle_temperature_range_low": ["220"], + "overhang_fan_speed": ["100"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P HF.json index 35caad8d7d..eef9de6781 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P HF.json @@ -1,98 +1,40 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.27" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PETG Transparent @FF G4P HF" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["1"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_max_speed": ["90"], + "fan_min_speed": ["40"], + "filament_cost": ["30"], + "filament_density": ["1.27"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PETG Transparent @FF G4P HF"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: PETG\n" ], - "filament_type": [ - "PETG" - ], - "filament_unload_time": [ - "29" - ], - "filament_unloading_speed": [ - "90" - ], - "filament_unloading_speed_start": [ - "100" - ], + "filament_type": ["PETG"], + "filament_unload_time": ["29"], + "filament_unloading_speed": ["90"], + "filament_unloading_speed_start": ["100"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], + "hot_plate_temp": ["80"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge Generic ABS @G3U", "is_custom_defined": "0", "name": "Flashforge PETG Transparent @FF G4P HF", - "nozzle_temperature": [ - "255" - ], - "nozzle_temperature_initial_layer": [ - "255" - ], - "overhang_fan_speed": [ - "80" - ], - "pressure_advance": [ - "0.045" - ], - "slow_down_layer_time": [ - "5" - ], - "slow_down_min_speed": [ - "30" - ], - "support_material_interface_fan_speed": [ - "90" - ], - "temperature_vitrification": [ - "70" - ], + "nozzle_temperature": ["255"], + "nozzle_temperature_initial_layer": ["255"], + "overhang_fan_speed": ["80"], + "pressure_advance": ["0.045"], + "slow_down_layer_time": ["5"], + "slow_down_min_speed": ["30"], + "support_material_interface_fan_speed": ["90"], + "temperature_vitrification": ["70"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P.json index 155512a9d4..8cbb1a601c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P.json @@ -1,44 +1,20 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PETG Transparent @FF G4P" - ], - "filament_unload_time": [ - "29" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PETG Transparent @FF G4P"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["80"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge Generic PETG", "is_custom_defined": "0", "name": "Flashforge PETG Transparent @FF G4P", - "pressure_advance": [ - "0.045" - ], - "slow_down_layer_time": [ - "5" - ], + "pressure_advance": ["0.045"], + "slow_down_layer_time": ["5"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @G3U.json index 5e96735196..50b09609d5 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @G3U.json @@ -1,13 +1,11 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge PETG Transparent @G3U" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PETG @G3U", - "is_custom_defined": "0", - "name": "Flashforge PETG Transparent @G3U", - "version": "2.1.1.0" + "type": "filament", + "filament_settings_id": ["Flashforge PETG Transparent @G3U"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PETG @G3U", + "is_custom_defined": "0", + "name": "Flashforge PETG Transparent @G3U", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent.json index 74e14bcb88..3dfb2b2bdc 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent.json @@ -1,31 +1,17 @@ { - "type": "filament", - "additional_cooling_fan_speed": [ - "60" - ], - "filament_settings_id": [ - "Flashforge PETG Transparent" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PETG", - "is_custom_defined": "0", - "name": "Flashforge PETG Transparent", - "nozzle_temperature": [ - "265" - ], - "nozzle_temperature_range_high": [ - "265" - ], - "overhang_fan_speed": [ - "100" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "version": "2.1.1.0" + "type": "filament", + "additional_cooling_fan_speed": ["60"], + "filament_settings_id": ["Flashforge PETG Transparent"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PETG", + "is_custom_defined": "0", + "name": "Flashforge PETG Transparent", + "nozzle_temperature": ["265"], + "nozzle_temperature_range_high": ["265"], + "overhang_fan_speed": ["100"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json index a8421a6dbb..5ee828c248 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json @@ -1,42 +1,22 @@ { - "cool_plate_temp": [ - "75" - ], - "cool_plate_temp_initial_layer": [ - "75" - ], - "eng_plate_temp": [ - "75" - ], - "eng_plate_temp_initial_layer": [ - "75" - ], - "filament_settings_id": [ - "Flashforge PETG-CF @FF AD5X 0.6 nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode\n;right_extruder_material:PETG-CF\n" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], - "inherits": "Flashforge Generic PETG-CF10", - "is_custom_defined": "0", - "name": "Flashforge PETG-CF @FF AD5X 0.6 nozzle", - "textured_plate_temp": [ - "75" - ], - "textured_plate_temp_initial_layer": [ - "75" - ], - "version": "2.1.1.0" + "cool_plate_temp": ["75"], + "cool_plate_temp_initial_layer": ["75"], + "eng_plate_temp": ["75"], + "eng_plate_temp_initial_layer": ["75"], + "filament_settings_id": ["Flashforge PETG-CF @FF AD5X 0.6 nozzle"], + "filament_start_gcode": [ + "; filament start gcode\n;right_extruder_material:PETG-CF\n" + ], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], + "inherits": "Flashforge Generic PETG-CF10", + "is_custom_defined": "0", + "name": "Flashforge PETG-CF @FF AD5X 0.6 nozzle", + "textured_plate_temp": ["75"], + "textured_plate_temp_initial_layer": ["75"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json index 3938207611..770fa8f473 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json @@ -1,42 +1,22 @@ { - "cool_plate_temp": [ - "75" - ], - "cool_plate_temp_initial_layer": [ - "75" - ], - "eng_plate_temp": [ - "75" - ], - "eng_plate_temp_initial_layer": [ - "75" - ], - "filament_settings_id": [ - "Flashforge PETG-CF @FF AD5X 0.8 nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode\n;right_extruder_material:PETG-CF\n" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], - "inherits": "Flashforge Generic PETG-CF10", - "is_custom_defined": "0", - "name": "Flashforge PETG-CF @FF AD5X 0.8 nozzle", - "textured_plate_temp": [ - "75" - ], - "textured_plate_temp_initial_layer": [ - "75" - ], - "version": "2.1.1.0" + "cool_plate_temp": ["75"], + "cool_plate_temp_initial_layer": ["75"], + "eng_plate_temp": ["75"], + "eng_plate_temp_initial_layer": ["75"], + "filament_settings_id": ["Flashforge PETG-CF @FF AD5X 0.8 nozzle"], + "filament_start_gcode": [ + "; filament start gcode\n;right_extruder_material:PETG-CF\n" + ], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], + "inherits": "Flashforge Generic PETG-CF10", + "is_custom_defined": "0", + "name": "Flashforge PETG-CF @FF AD5X 0.8 nozzle", + "textured_plate_temp": ["75"], + "textured_plate_temp_initial_layer": ["75"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X.json index ab3e7027f0..5fcb73fc7e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X.json @@ -1,46 +1,24 @@ { - "type": "filament", - "cool_plate_temp": [ - "75" - ], - "cool_plate_temp_initial_layer": [ - "75" - ], - "eng_plate_temp": [ - "75" - ], - "eng_plate_temp_initial_layer": [ - "75" - ], - "filament_settings_id": [ - "Flashforge PETG-CF @FF AD5X" - ], - "filament_start_gcode": [ - "; filament start gcode\n;right_extruder_material:PETG-CF\n" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], - "inherits": "Flashforge Generic PETG-CF10", - "is_custom_defined": "0", - "name": "Flashforge PETG-CF @FF AD5X", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" + "type": "filament", + "cool_plate_temp": ["75"], + "cool_plate_temp_initial_layer": ["75"], + "eng_plate_temp": ["75"], + "eng_plate_temp_initial_layer": ["75"], + "filament_settings_id": ["Flashforge PETG-CF @FF AD5X"], + "filament_start_gcode": [ + "; filament start gcode\n;right_extruder_material:PETG-CF\n" ], - "nozzle_temperature": [ - "240" - ], - "textured_plate_temp": [ - "75" - ], - "textured_plate_temp_initial_layer": [ - "75" - ], - "version": "2.1.1.0" + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], + "inherits": "Flashforge Generic PETG-CF10", + "is_custom_defined": "0", + "name": "Flashforge PETG-CF @FF AD5X", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "nozzle_temperature": ["240"], + "textured_plate_temp": ["75"], + "textured_plate_temp_initial_layer": ["75"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF G4P 0.6 nozzle.json index 8fb279f141..64188c95f8 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF G4P 0.6 nozzle.json @@ -1,89 +1,37 @@ { - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "20" - ], - "fan_max_speed": [ - "65" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.28" - ], - "filament_flow_ratio": [ - "0.92" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "22" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PETG-CF @FF G4P 0.6 nozzle" - ], + "additional_cooling_fan_speed": ["0"], + "close_fan_the_first_x_layers": ["3"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["20"], + "fan_max_speed": ["65"], + "fan_min_speed": ["30"], + "filament_cost": ["25"], + "filament_density": ["1.28"], + "filament_flow_ratio": ["0.92"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["22"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PETG-CF @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PETG" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["80"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge Generic PETG-CF @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PETG-CF @FF G4P 0.6 nozzle", - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "245" - ], - "nozzle_temperature_range_high": [ - "265" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "100" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], + "nozzle_temperature": ["240"], + "nozzle_temperature_initial_layer": ["245"], + "nozzle_temperature_range_high": ["265"], + "nozzle_temperature_range_low": ["220"], + "overhang_fan_speed": ["100"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF G4P.json index b27e39d623..eeaa2f0ec0 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF G4P.json @@ -1,56 +1,26 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.91" - ], - "filament_settings_id": [ - "Flashforge PETG-CF @FF G4P" - ], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["50"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.91"], + "filament_settings_id": ["Flashforge PETG-CF @FF G4P"], "filament_start_gcode": [ "; filament start gcode \n;right_extruder_material:PETG-CF" ], - "filament_type": [ - "PETG-CF" - ], + "filament_type": ["PETG-CF"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["80"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge Generic PETG", "is_custom_defined": "0", "name": "Flashforge PETG-CF @FF G4P", - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "overhang_fan_speed": [ - "90" - ], - "pressure_advance": [ - "0.035" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], + "nozzle_temperature": ["230"], + "nozzle_temperature_initial_layer": ["230"], + "overhang_fan_speed": ["90"], + "pressure_advance": ["0.035"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @G3U.json index 33c7f61c8d..06be8ad00d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @G3U.json @@ -1,13 +1,11 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge PETG-CF @G3U" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PETG-CF @G3U", - "is_custom_defined": "0", - "name": "Flashforge PETG-CF @G3U", - "version": "2.1.1.0" + "type": "filament", + "filament_settings_id": ["Flashforge PETG-CF @G3U"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PETG-CF @G3U", + "is_custom_defined": "0", + "name": "Flashforge PETG-CF @G3U", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF.json index e6aed65066..f409abe82e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PETG-CF" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PETG-CF10", - "is_custom_defined": "0", - "name": "Flashforge PETG-CF", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PETG-CF"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PETG-CF10", + "is_custom_defined": "0", + "name": "Flashforge PETG-CF", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA @FF AD3.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA @FF AD3.json index 42ef054ea0..7b9a1f0fe0 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA @FF AD3.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA @FF AD3.json @@ -6,60 +6,26 @@ "from": "system", "instantiation": "true", "inherits": "fdm_filament_pla", - "filament_vendor": [ - "Flashforge" - ], - "filament_flow_ratio": [ - "1.09" - ], - "filament_max_volumetric_speed": [ - "20" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "hot_plate_temp": [ - "50" - ], - "slow_down_layer_time": [ - "6" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "additional_cooling_fan_speed": [ - "100" - ], + "filament_vendor": ["Flashforge"], + "filament_flow_ratio": ["1.09"], + "filament_max_volumetric_speed": ["20"], + "hot_plate_temp_initial_layer": ["50"], + "hot_plate_temp": ["50"], + "slow_down_layer_time": ["6"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], + "additional_cooling_fan_speed": ["100"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: PLA\n" ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_diameter": [ - "1.75" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.00" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_range_high": [ - "230" - ], - "nozzle_temperature_range_low": [ - "190" - ], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_diameter": ["1.75"], + "enable_pressure_advance": ["1"], + "pressure_advance": ["0.00"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature": ["210"], + "nozzle_temperature_range_high": ["230"], + "nozzle_temperature_range_low": ["190"], "compatible_printers": [ "Flashforge Adventurer 3 Series 0.4 Nozzle", "Flashforge Adventurer 3 Series 0.6 Nozzle" diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json index 8f5156806f..bde1b9fc40 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PLA Basic @FF AD5M 0.25 nozzle" - ], - "from": "system", - "setting_id": "FFFP02_01", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Basic @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PLA Basic @FF AD5M 0.25 nozzle"], + "from": "system", + "setting_id": "FFFP02_01", + "instantiation": "true", + "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PLA Basic @FF AD5M 0.25 nozzle", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json index 594f20cf42..55b0e09093 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json @@ -1,61 +1,27 @@ { - "type": "filament", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge PLA Basic @FF AD5X 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "FFFP03_01", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.25 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge PLA Basic", - "is_custom_defined": "0", - "name": "Flashforge PLA Basic @FF AD5X 0.25 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "6" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "type": "filament", + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp_initial_layer": ["60"], + "during_print_exhaust_fan_speed": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["8"], + "filament_settings_id": ["Flashforge PLA Basic @FF AD5X 0.25 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "FFFP03_01", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge PLA Basic", + "is_custom_defined": "0", + "name": "Flashforge PLA Basic @FF AD5X 0.25 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["6"], + "slow_down_min_speed": ["20"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json index 9426147684..18d724ba49 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json @@ -1,51 +1,23 @@ { - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_settings_id": [ - "Flashforge PLA Basic @FF AD5X 0.6 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "FFFP03_02", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge PLA Basic", - "is_custom_defined": "0", - "name": "Flashforge PLA Basic @FF AD5X 0.6 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "slow_down_layer_time": [ - "9" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["21"], + "filament_settings_id": ["Flashforge PLA Basic @FF AD5X 0.6 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "FFFP03_02", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge PLA Basic", + "is_custom_defined": "0", + "name": "Flashforge PLA Basic @FF AD5X 0.6 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "slow_down_layer_time": ["9"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json index b960e420d3..d84741db86 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json @@ -1,51 +1,23 @@ { - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_settings_id": [ - "Flashforge PLA Basic @FF AD5X 0.8 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "FFFP03_03", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge PLA Basic", - "is_custom_defined": "0", - "name": "Flashforge PLA Basic @FF AD5X 0.8 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "slow_down_layer_time": [ - "9" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["21"], + "filament_settings_id": ["Flashforge PLA Basic @FF AD5X 0.8 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "FFFP03_03", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge PLA Basic", + "is_custom_defined": "0", + "name": "Flashforge PLA Basic @FF AD5X 0.8 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "slow_down_layer_time": ["9"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X.json index ff735d6091..3fe602bfff 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X.json @@ -1,46 +1,22 @@ { - "type": "filament", - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PLA Basic @FF AD5X" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "FFFP03", - "instantiation": "true", - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge PLA Basic", - "is_custom_defined": "0", - "name": "Flashforge PLA Basic @FF AD5X", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" - ], - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "type": "filament", + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PLA Basic @FF AD5X"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "FFFP03", + "instantiation": "true", + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge PLA Basic", + "is_custom_defined": "0", + "name": "Flashforge PLA Basic @FF AD5X", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.25 nozzle.json index c8eb0908bf..594333ab30 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.25 nozzle.json @@ -1,59 +1,25 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_settings_id": [ - "Flashforge PLA Basic @FF G4P 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["12"], + "filament_settings_id": ["Flashforge PLA Basic @FF G4P 0.25 nozzle"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.25 nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Basic @FF G4P 0.25 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.035" - ], - "slow_down_min_speed": [ - "20" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.035"], + "slow_down_min_speed": ["20"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.6 HF nozzle.json index b95778af2a..37feadbb0a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.6 HF nozzle.json @@ -1,77 +1,35 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "35" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["35"], + "filament_minimal_purge_on_wipe_tower": ["15"], "filament_ramming_parameters": [ "105 105 11.2043 11.2258 11.0108 11.5269 14.129 17.5699 19.2903 19.6129 19.871 18.9462 13.3118 4.66667 0.322581 0.215054 0.494624 0.494624| 0.05 11.1591 0.45 11.2301 0.95 11.757 1.45 18.7946 1.95 19.5925 2.45 18.6882 2.95 1.27742 3.45 0.288172 3.95 0.417204 4.45 7.6 4.95 7.6" ], - "filament_settings_id": [ - "Flashforge PLA Basic @FF G4P 0.6 HF nozzle" - ], + "filament_settings_id": ["Flashforge PLA Basic @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n; right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Basic @FF G4P 0.6 HF nozzle", - "nozzle_temperature": [ - "215" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["215"], + "nozzle_temperature_initial_layer": ["215"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.6 nozzle.json index 2f390628b4..db66292e13 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.6 nozzle.json @@ -1,74 +1,32 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Basic @FF G4P 0.6 nozzle" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Basic @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Basic @FF G4P 0.6 nozzle", - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.8 HF nozzle.json index 2c42d28c83..db84b97434 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.8 HF nozzle.json @@ -1,74 +1,32 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Basic @FF G4P 0.8 HF nozzle" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Basic @FF G4P 0.8 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Basic @FF G4P 0.8 HF nozzle", - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P HF.json index 1b69c7f461..b1e71b2b2a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P HF.json @@ -1,101 +1,41 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_density": [ - "1.24" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "49" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Basic @FF G4P HF" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["1"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "fan_max_speed": ["100"], + "fan_min_speed": ["100"], + "filament_density": ["1.24"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["49"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Basic @FF G4P HF"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: PLA\n" ], - "filament_type": [ - "PLA" - ], - "filament_unload_time": [ - "29" - ], - "filament_unloading_speed": [ - "90" - ], - "filament_unloading_speed_start": [ - "100" - ], + "filament_type": ["PLA"], + "filament_unload_time": ["29"], + "filament_unloading_speed": ["90"], + "filament_unloading_speed_start": ["100"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge Generic ABS @G3U", "is_custom_defined": "0", "name": "Flashforge PLA Basic @FF G4P HF", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.032" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "temperature_vitrification": [ - "60" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_speed": ["100"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.032"], + "support_material_interface_fan_speed": ["100"], + "temperature_vitrification": ["60"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P.json index ba25d57d27..2007326309 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P.json @@ -1,56 +1,26 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PLA Basic @FF G4P" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PLA Basic @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["55"], "inherits": "Flashforge Generic HS PLA", "is_custom_defined": "0", "name": "Flashforge PLA Basic @FF G4P", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "pressure_advance": [ - "0.026" - ], - "slow_down_layer_time": [ - "8" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "pressure_advance": ["0.026"], + "slow_down_layer_time": ["8"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @G3U.json index 14b25f3c6e..fa4562a046 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @G3U.json @@ -1,14 +1,12 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge PLA Basic @G3U" - ], - "from": "system", - "filament_id": "FFF01", - "setting_id": "FFFP03", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @G3U", - "is_custom_defined": "0", - "name": "Flashforge PLA Basic @G3U", - "version": "2.1.1.0" + "type": "filament", + "filament_settings_id": ["Flashforge PLA Basic @G3U"], + "from": "system", + "filament_id": "FFF01", + "setting_id": "FFFP03", + "instantiation": "true", + "inherits": "Flashforge Generic PLA @G3U", + "is_custom_defined": "0", + "name": "Flashforge PLA Basic @G3U", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic.json index edaf661f13..62cd4c6b03 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic.json @@ -1,16 +1,12 @@ { - "filament_settings_id": [ - "Flashforge PLA Basic" - ], - "from": "system", - "filament_id": "FFF01", - "setting_id": "FFFP02", - "instantiation": "true", - "inherits": "Flashforge Generic PLA", - "filament_vendor": [ - "Flashforge" - ], - "is_custom_defined": "0", - "name": "Flashforge PLA Basic", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PLA Basic"], + "from": "system", + "filament_id": "FFF01", + "setting_id": "FFFP02", + "instantiation": "true", + "inherits": "Flashforge Generic PLA", + "filament_vendor": ["Flashforge"], + "is_custom_defined": "0", + "name": "Flashforge PLA Basic", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Buint Ti @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Buint Ti @FF G4P 0.6 nozzle.json index b248e68f8c..6453fe78a8 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Buint Ti @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Buint Ti @FF G4P 0.6 nozzle.json @@ -1,80 +1,34 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "30" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Buint Ti @FF G4P 0.6 nozzle" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["30"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Buint Ti @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Buint Ti @FF G4P 0.6 nozzle", - "nozzle_temperature": [ - "200" - ], - "nozzle_temperature_initial_layer": [ - "205" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["200"], + "nozzle_temperature_initial_layer": ["205"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Buint Ti @FF G4P 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Buint Ti @FF G4P 0.8 nozzle.json index a891ef6803..0bbef27b86 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Buint Ti @FF G4P 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Buint Ti @FF G4P 0.8 nozzle.json @@ -1,80 +1,34 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "30" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Buint Ti @FF G4P 0.8 nozzle" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["30"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Buint Ti @FF G4P 0.8 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Buint Ti @FF G4P 0.8 nozzle", - "nozzle_temperature": [ - "200" - ], - "nozzle_temperature_initial_layer": [ - "205" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["200"], + "nozzle_temperature_initial_layer": ["205"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json index 446ce75668..b556520cc4 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PLA Color Change @FF AD5M 0.25 nozzle" - ], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Color Change @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PLA Color Change @FF AD5M 0.25 nozzle"], + "from": "system", + "setting_id": "GFSA04_19", + "instantiation": "true", + "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PLA Color Change @FF AD5M 0.25 nozzle", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json index b8aba5efa6..5cc1290bdf 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json @@ -1,61 +1,27 @@ { - "type": "filament", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge PLA Color Change @FF AD5X 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.25 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Color Change @FF AD5X 0.25 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "6" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "type": "filament", + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp_initial_layer": ["60"], + "during_print_exhaust_fan_speed": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["8"], + "filament_settings_id": ["Flashforge PLA Color Change @FF AD5X 0.25 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04_19", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PLA Color Change @FF AD5X 0.25 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["6"], + "slow_down_min_speed": ["20"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json index f5cb249492..a9dac9cea9 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json @@ -1,51 +1,23 @@ { - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_settings_id": [ - "Flashforge PLA Color Change @FF AD5X 0.6 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Color Change @FF AD5X 0.6 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "slow_down_layer_time": [ - "8" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["21"], + "filament_settings_id": ["Flashforge PLA Color Change @FF AD5X 0.6 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Color Change @FF AD5X 0.6 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "slow_down_layer_time": ["8"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json index 68dd28b2a4..304d3c26b7 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json @@ -1,51 +1,23 @@ { - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_settings_id": [ - "Flashforge PLA Color Change @FF AD5X 0.8 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Color Change @FF AD5X 0.8 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "slow_down_layer_time": [ - "8" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["21"], + "filament_settings_id": ["Flashforge PLA Color Change @FF AD5X 0.8 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Color Change @FF AD5X 0.8 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "slow_down_layer_time": ["8"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X.json index ccf0547856..830d582ade 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X.json @@ -1,46 +1,22 @@ { - "type": "filament", - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PLA Color Change @FF AD5X" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Color Change @FF AD5X", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" - ], - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "type": "filament", + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PLA Color Change @FF AD5X"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Color Change @FF AD5X", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json index 0253fb0f82..67c580055e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json @@ -1,59 +1,25 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_settings_id": [ - "Flashforge PLA Color Change @FF G4P 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["12"], + "filament_settings_id": ["Flashforge PLA Color Change @FF G4P 0.25 nozzle"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.25 nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Color Change @FF G4P 0.25 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.035" - ], - "slow_down_min_speed": [ - "20" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.035"], + "slow_down_min_speed": ["20"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.6 HF nozzle.json index 054e29aaff..5fa9e21f86 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.6 HF nozzle.json @@ -1,77 +1,35 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "35" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["35"], + "filament_minimal_purge_on_wipe_tower": ["15"], "filament_ramming_parameters": [ "105 105 11.2043 11.2258 11.0108 11.5269 14.129 17.5699 19.2903 19.6129 19.871 18.9462 13.3118 4.66667 0.322581 0.215054 0.494624 0.494624| 0.05 11.1591 0.45 11.2301 0.95 11.757 1.45 18.7946 1.95 19.5925 2.45 18.6882 2.95 1.27742 3.45 0.288172 3.95 0.417204 4.45 7.6 4.95 7.6" ], - "filament_settings_id": [ - "Flashforge PLA Color Change @FF G4P 0.6 HF nozzle" - ], + "filament_settings_id": ["Flashforge PLA Color Change @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n; right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Color Change @FF G4P 0.6 HF nozzle", - "nozzle_temperature": [ - "215" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["215"], + "nozzle_temperature_initial_layer": ["215"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P HF.json index 0d3d7e0352..de2daba340 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P HF.json @@ -1,101 +1,41 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_density": [ - "1.24" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "49" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Color Change @FF G4P HF" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["1"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "fan_max_speed": ["100"], + "fan_min_speed": ["100"], + "filament_density": ["1.24"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["49"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Color Change @FF G4P HF"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: PLA\n" ], - "filament_type": [ - "PLA" - ], - "filament_unload_time": [ - "29" - ], - "filament_unloading_speed": [ - "90" - ], - "filament_unloading_speed_start": [ - "100" - ], + "filament_type": ["PLA"], + "filament_unload_time": ["29"], + "filament_unloading_speed": ["90"], + "filament_unloading_speed_start": ["100"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge Generic ABS @G3U", "is_custom_defined": "0", "name": "Flashforge PLA Color Change @FF G4P HF", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.032" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "temperature_vitrification": [ - "60" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_speed": ["100"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.032"], + "support_material_interface_fan_speed": ["100"], + "temperature_vitrification": ["60"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P.json index 32fc0b9bf1..cf4a97e4ca 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P.json @@ -1,56 +1,26 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PLA Color Change @FF G4P" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PLA Color Change @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["55"], "inherits": "Flashforge Generic HS PLA", "is_custom_defined": "0", "name": "Flashforge PLA Color Change @FF G4P", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "pressure_advance": [ - "0.026" - ], - "slow_down_layer_time": [ - "8" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "pressure_advance": ["0.026"], + "slow_down_layer_time": ["8"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @G3U.json index 4739fe8eb8..e6e7c5884a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @G3U.json @@ -1,13 +1,11 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge PLA Color Change @G3U" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @G3U", - "is_custom_defined": "0", - "name": "Flashforge PLA Color Change @G3U", - "version": "2.1.1.0" + "type": "filament", + "filament_settings_id": ["Flashforge PLA Color Change @G3U"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PLA @G3U", + "is_custom_defined": "0", + "name": "Flashforge PLA Color Change @G3U", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change.json index 93d1c43114..5fb981cc5f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PLA Color Change" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Color Change", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PLA Color Change"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Color Change", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json index 890ac77ede..06333fa409 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PLA Galaxy @FF AD5M 0.25 nozzle" - ], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Galaxy @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PLA Galaxy @FF AD5M 0.25 nozzle"], + "from": "system", + "setting_id": "GFSA04_19", + "instantiation": "true", + "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PLA Galaxy @FF AD5M 0.25 nozzle", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json index ba756c3d04..81fc48b13d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json @@ -1,61 +1,27 @@ { - "type": "filament", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge PLA Galaxy @FF AD5X 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.25 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Galaxy @FF AD5X 0.25 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "6" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "type": "filament", + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp_initial_layer": ["60"], + "during_print_exhaust_fan_speed": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["8"], + "filament_settings_id": ["Flashforge PLA Galaxy @FF AD5X 0.25 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04_19", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PLA Galaxy @FF AD5X 0.25 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["6"], + "slow_down_min_speed": ["20"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json index ed4b761afc..1d20d09fd4 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json @@ -1,51 +1,23 @@ { - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_settings_id": [ - "Flashforge PLA Galaxy @FF AD5X 0.6 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Galaxy @FF AD5X 0.6 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "slow_down_layer_time": [ - "8" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["21"], + "filament_settings_id": ["Flashforge PLA Galaxy @FF AD5X 0.6 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Galaxy @FF AD5X 0.6 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "slow_down_layer_time": ["8"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json index 4a8958eee3..0121ee6772 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json @@ -1,51 +1,23 @@ { - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_settings_id": [ - "Flashforge PLA Galaxy @FF AD5X 0.8 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Galaxy @FF AD5X 0.8 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "slow_down_layer_time": [ - "8" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["21"], + "filament_settings_id": ["Flashforge PLA Galaxy @FF AD5X 0.8 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Galaxy @FF AD5X 0.8 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "slow_down_layer_time": ["8"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X.json index 7cf10d8631..fa57d71092 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X.json @@ -1,46 +1,22 @@ { - "type": "filament", - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PLA Galaxy @FF AD5X" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Galaxy @FF AD5X", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" - ], - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "type": "filament", + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PLA Galaxy @FF AD5X"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Galaxy @FF AD5X", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json index 724f538a89..8731815557 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json @@ -1,59 +1,25 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_settings_id": [ - "Flashforge PLA Galaxy @FF G4P 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["12"], + "filament_settings_id": ["Flashforge PLA Galaxy @FF G4P 0.25 nozzle"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.25 nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Galaxy @FF G4P 0.25 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.035" - ], - "slow_down_min_speed": [ - "20" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.035"], + "slow_down_min_speed": ["20"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle.json index eba855232a..4220f1b567 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle.json @@ -1,77 +1,35 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "35" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["35"], + "filament_minimal_purge_on_wipe_tower": ["15"], "filament_ramming_parameters": [ "105 105 11.2043 11.2258 11.0108 11.5269 14.129 17.5699 19.2903 19.6129 19.871 18.9462 13.3118 4.66667 0.322581 0.215054 0.494624 0.494624| 0.05 11.1591 0.45 11.2301 0.95 11.757 1.45 18.7946 1.95 19.5925 2.45 18.6882 2.95 1.27742 3.45 0.288172 3.95 0.417204 4.45 7.6 4.95 7.6" ], - "filament_settings_id": [ - "Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle" - ], + "filament_settings_id": ["Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n; right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle", - "nozzle_temperature": [ - "215" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["215"], + "nozzle_temperature_initial_layer": ["215"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.6 nozzle.json index 8b79ec5283..bba65f25fb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.6 nozzle.json @@ -1,80 +1,34 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "28" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Galaxy @FF G4P 0.6 nozzle" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["28"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Galaxy @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Galaxy @FF G4P 0.6 nozzle", - "nozzle_temperature": [ - "200" - ], - "nozzle_temperature_initial_layer": [ - "205" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["200"], + "nozzle_temperature_initial_layer": ["205"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle.json index f8fab2cf7a..e76b91278b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle.json @@ -1,80 +1,34 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "28" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["28"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle", - "nozzle_temperature": [ - "200" - ], - "nozzle_temperature_initial_layer": [ - "205" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["200"], + "nozzle_temperature_initial_layer": ["205"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P HF.json index 0eb5874ab9..758a167557 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P HF.json @@ -1,101 +1,41 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_density": [ - "1.24" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "49" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Galaxy @FF G4P HF" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["1"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "fan_max_speed": ["100"], + "fan_min_speed": ["100"], + "filament_density": ["1.24"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["49"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Galaxy @FF G4P HF"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: PLA\n" ], - "filament_type": [ - "PLA" - ], - "filament_unload_time": [ - "29" - ], - "filament_unloading_speed": [ - "90" - ], - "filament_unloading_speed_start": [ - "100" - ], + "filament_type": ["PLA"], + "filament_unload_time": ["29"], + "filament_unloading_speed": ["90"], + "filament_unloading_speed_start": ["100"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge Generic ABS @G3U", "is_custom_defined": "0", "name": "Flashforge PLA Galaxy @FF G4P HF", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.032" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "temperature_vitrification": [ - "60" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_speed": ["100"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.032"], + "support_material_interface_fan_speed": ["100"], + "temperature_vitrification": ["60"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P.json index a6ab3c156f..d5272c96a9 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P.json @@ -1,56 +1,26 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PLA Galaxy @FF G4P" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PLA Galaxy @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["55"], "inherits": "Flashforge Generic HS PLA", "is_custom_defined": "0", "name": "Flashforge PLA Galaxy @FF G4P", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "pressure_advance": [ - "0.026" - ], - "slow_down_layer_time": [ - "8" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "pressure_advance": ["0.026"], + "slow_down_layer_time": ["8"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @G3U.json index 9c8a895894..f3c5b3b817 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @G3U.json @@ -1,13 +1,11 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge PLA Galaxy @G3U" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @G3U", - "is_custom_defined": "0", - "name": "Flashforge PLA Galaxy @G3U", - "version": "2.1.1.0" + "type": "filament", + "filament_settings_id": ["Flashforge PLA Galaxy @G3U"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PLA @G3U", + "is_custom_defined": "0", + "name": "Flashforge PLA Galaxy @G3U", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy.json index c2c8ef9133..c1374d0cf7 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PLA Galaxy" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Galaxy", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PLA Galaxy"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Galaxy", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json index 5696f1e335..e5ea794ec9 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PLA Luminous @FF AD5M 0.25 nozzle" - ], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Luminous @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PLA Luminous @FF AD5M 0.25 nozzle"], + "from": "system", + "setting_id": "GFSA04_19", + "instantiation": "true", + "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PLA Luminous @FF AD5M 0.25 nozzle", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json index 7c2e37ad3c..5063ba776d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json @@ -1,61 +1,27 @@ { - "type": "filament", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge PLA Luminous @FF AD5X 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.25 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Luminous @FF AD5X 0.25 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "6" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "type": "filament", + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp_initial_layer": ["60"], + "during_print_exhaust_fan_speed": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["8"], + "filament_settings_id": ["Flashforge PLA Luminous @FF AD5X 0.25 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04_19", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PLA Luminous @FF AD5X 0.25 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["6"], + "slow_down_min_speed": ["20"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json index 5da95fd61d..8ed02160e9 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json @@ -1,51 +1,23 @@ { - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_settings_id": [ - "Flashforge PLA Luminous @FF AD5X 0.6 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Luminous @FF AD5X 0.6 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "slow_down_layer_time": [ - "8" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["21"], + "filament_settings_id": ["Flashforge PLA Luminous @FF AD5X 0.6 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Luminous @FF AD5X 0.6 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "slow_down_layer_time": ["8"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json index 80640c9b46..e0435b8a7b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json @@ -1,51 +1,23 @@ { - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_settings_id": [ - "Flashforge PLA Luminous @FF AD5X 0.8 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Luminous @FF AD5X 0.8 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "slow_down_layer_time": [ - "8" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["21"], + "filament_settings_id": ["Flashforge PLA Luminous @FF AD5X 0.8 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Luminous @FF AD5X 0.8 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "slow_down_layer_time": ["8"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X.json index f2822d0148..9e25ca3c18 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X.json @@ -1,46 +1,22 @@ { - "type": "filament", - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PLA Luminous @FF AD5X" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Luminous @FF AD5X", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" - ], - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "type": "filament", + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PLA Luminous @FF AD5X"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Luminous @FF AD5X", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json index 63a0aeffbf..acac411c8e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json @@ -1,59 +1,25 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_settings_id": [ - "Flashforge PLA Luminous @FF G4P 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["12"], + "filament_settings_id": ["Flashforge PLA Luminous @FF G4P 0.25 nozzle"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.25 nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Luminous @FF G4P 0.25 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.035" - ], - "slow_down_min_speed": [ - "20" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.035"], + "slow_down_min_speed": ["20"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.6 HF nozzle.json index ed754034ef..e82204bc33 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.6 HF nozzle.json @@ -1,77 +1,35 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "35" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["35"], + "filament_minimal_purge_on_wipe_tower": ["15"], "filament_ramming_parameters": [ "105 105 11.2043 11.2258 11.0108 11.5269 14.129 17.5699 19.2903 19.6129 19.871 18.9462 13.3118 4.66667 0.322581 0.215054 0.494624 0.494624| 0.05 11.1591 0.45 11.2301 0.95 11.757 1.45 18.7946 1.95 19.5925 2.45 18.6882 2.95 1.27742 3.45 0.288172 3.95 0.417204 4.45 7.6 4.95 7.6" ], - "filament_settings_id": [ - "Flashforge PLA Luminous @FF G4P 0.6 HF nozzle" - ], + "filament_settings_id": ["Flashforge PLA Luminous @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n; right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Luminous @FF G4P 0.6 HF nozzle", - "nozzle_temperature": [ - "215" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["215"], + "nozzle_temperature_initial_layer": ["215"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P HF.json index 4da7158de1..307c5e29a4 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P HF.json @@ -1,101 +1,41 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_density": [ - "1.24" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "49" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Luminous @FF G4P HF" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["1"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "fan_max_speed": ["100"], + "fan_min_speed": ["100"], + "filament_density": ["1.24"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["49"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Luminous @FF G4P HF"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: PLA\n" ], - "filament_type": [ - "PLA" - ], - "filament_unload_time": [ - "29" - ], - "filament_unloading_speed": [ - "90" - ], - "filament_unloading_speed_start": [ - "100" - ], + "filament_type": ["PLA"], + "filament_unload_time": ["29"], + "filament_unloading_speed": ["90"], + "filament_unloading_speed_start": ["100"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge Generic ABS @G3U", "is_custom_defined": "0", "name": "Flashforge PLA Luminous @FF G4P HF", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.032" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "temperature_vitrification": [ - "60" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_speed": ["100"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.032"], + "support_material_interface_fan_speed": ["100"], + "temperature_vitrification": ["60"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P.json index eb49d82b7d..ac60962550 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P.json @@ -1,56 +1,26 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PLA Luminous @FF G4P" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PLA Luminous @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["55"], "inherits": "Flashforge Generic HS PLA", "is_custom_defined": "0", "name": "Flashforge PLA Luminous @FF G4P", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "pressure_advance": [ - "0.026" - ], - "slow_down_layer_time": [ - "8" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "pressure_advance": ["0.026"], + "slow_down_layer_time": ["8"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @G3U.json index e4e02c9692..f34c00984c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @G3U.json @@ -1,13 +1,11 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge PLA Luminous @G3U" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @G3U", - "is_custom_defined": "0", - "name": "Flashforge PLA Luminous @G3U", - "version": "2.1.1.0" + "type": "filament", + "filament_settings_id": ["Flashforge PLA Luminous @G3U"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PLA @G3U", + "is_custom_defined": "0", + "name": "Flashforge PLA Luminous @G3U", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous.json index 4c24f116a1..83f6ffc50e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PLA Luminous" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Luminous", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PLA Luminous"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Luminous", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json index d259b6a920..22e18ff58d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PLA Matte @FF AD5M 0.25 nozzle" - ], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Matte @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PLA Matte @FF AD5M 0.25 nozzle"], + "from": "system", + "setting_id": "GFSA04_19", + "instantiation": "true", + "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PLA Matte @FF AD5M 0.25 nozzle", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json index 34cfade41c..0311e43df6 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json @@ -1,61 +1,27 @@ { - "type": "filament", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge PLA Matte @FF AD5X 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.25 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Matte @FF AD5X 0.25 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "6" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "type": "filament", + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp_initial_layer": ["60"], + "during_print_exhaust_fan_speed": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["8"], + "filament_settings_id": ["Flashforge PLA Matte @FF AD5X 0.25 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04_19", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PLA Matte @FF AD5X 0.25 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["6"], + "slow_down_min_speed": ["20"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json index 310727a241..e5179023d1 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json @@ -1,51 +1,23 @@ { - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_settings_id": [ - "Flashforge PLA Matte @FF AD5X 0.6 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Matte @FF AD5X 0.6 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "slow_down_layer_time": [ - "8" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["21"], + "filament_settings_id": ["Flashforge PLA Matte @FF AD5X 0.6 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Matte @FF AD5X 0.6 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "slow_down_layer_time": ["8"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json index d91352e157..34380403e1 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json @@ -1,51 +1,23 @@ { - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_settings_id": [ - "Flashforge PLA Matte @FF AD5X 0.8 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Matte @FF AD5X 0.8 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "slow_down_layer_time": [ - "8" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["21"], + "filament_settings_id": ["Flashforge PLA Matte @FF AD5X 0.8 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Matte @FF AD5X 0.8 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "slow_down_layer_time": ["8"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X.json index 4ba059680b..4e592d08ec 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X.json @@ -1,46 +1,22 @@ { - "type": "filament", - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PLA Matte @FF AD5X" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Matte @FF AD5X", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" - ], - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "type": "filament", + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PLA Matte @FF AD5X"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Matte @FF AD5X", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.25 nozzle.json index a06fa0c9bc..a9e91dc942 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.25 nozzle.json @@ -1,59 +1,25 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_settings_id": [ - "Flashforge PLA Matte @FF G4P 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["12"], + "filament_settings_id": ["Flashforge PLA Matte @FF G4P 0.25 nozzle"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.25 nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Matte @FF G4P 0.25 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.035" - ], - "slow_down_min_speed": [ - "20" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.035"], + "slow_down_min_speed": ["20"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.6 HF nozzle.json index 3de2c15d32..5bf3749507 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.6 HF nozzle.json @@ -1,77 +1,35 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "35" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["35"], + "filament_minimal_purge_on_wipe_tower": ["15"], "filament_ramming_parameters": [ "105 105 11.2043 11.2258 11.0108 11.5269 14.129 17.5699 19.2903 19.6129 19.871 18.9462 13.3118 4.66667 0.322581 0.215054 0.494624 0.494624| 0.05 11.1591 0.45 11.2301 0.95 11.757 1.45 18.7946 1.95 19.5925 2.45 18.6882 2.95 1.27742 3.45 0.288172 3.95 0.417204 4.45 7.6 4.95 7.6" ], - "filament_settings_id": [ - "Flashforge PLA Matte @FF G4P 0.6 HF nozzle" - ], + "filament_settings_id": ["Flashforge PLA Matte @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n; right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Matte @FF G4P 0.6 HF nozzle", - "nozzle_temperature": [ - "215" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["215"], + "nozzle_temperature_initial_layer": ["215"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.6 nozzle.json index 1dc4d6b493..3c7bfc17c2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.6 nozzle.json @@ -1,80 +1,34 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Matte @FF G4P 0.6 nozzle" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Matte @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Matte @FF G4P 0.6 nozzle", - "nozzle_temperature": [ - "205" - ], - "nozzle_temperature_initial_layer": [ - "205" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["205"], + "nozzle_temperature_initial_layer": ["205"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.8 HF nozzle.json index 99cdf9ad26..00be5f581f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.8 HF nozzle.json @@ -1,80 +1,34 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Matte @FF G4P 0.8 HF nozzle" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Matte @FF G4P 0.8 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Matte @FF G4P 0.8 HF nozzle", - "nozzle_temperature": [ - "205" - ], - "nozzle_temperature_initial_layer": [ - "205" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["205"], + "nozzle_temperature_initial_layer": ["205"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P HF.json index a1e9f2b6fd..4510523156 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P HF.json @@ -1,101 +1,41 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_density": [ - "1.24" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "49" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Matte @FF G4P HF" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["1"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "fan_max_speed": ["100"], + "fan_min_speed": ["100"], + "filament_density": ["1.24"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["49"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Matte @FF G4P HF"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: PLA\n" ], - "filament_type": [ - "PLA" - ], - "filament_unload_time": [ - "29" - ], - "filament_unloading_speed": [ - "90" - ], - "filament_unloading_speed_start": [ - "100" - ], + "filament_type": ["PLA"], + "filament_unload_time": ["29"], + "filament_unloading_speed": ["90"], + "filament_unloading_speed_start": ["100"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge Generic ABS @G3U", "is_custom_defined": "0", "name": "Flashforge PLA Matte @FF G4P HF", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.032" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "temperature_vitrification": [ - "60" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_speed": ["100"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.032"], + "support_material_interface_fan_speed": ["100"], + "temperature_vitrification": ["60"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P.json index dbb37b0f21..3460b9663c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P.json @@ -1,56 +1,26 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PLA Matte @FF G4P" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PLA Matte @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["55"], "inherits": "Flashforge Generic HS PLA", "is_custom_defined": "0", "name": "Flashforge PLA Matte @FF G4P", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "pressure_advance": [ - "0.026" - ], - "slow_down_layer_time": [ - "8" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "pressure_advance": ["0.026"], + "slow_down_layer_time": ["8"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @G3U.json index f668aef7f9..4b3855bea6 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @G3U.json @@ -1,13 +1,11 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge PLA Matte @G3U" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @G3U", - "is_custom_defined": "0", - "name": "Flashforge PLA Matte @G3U", - "version": "2.1.1.0" + "type": "filament", + "filament_settings_id": ["Flashforge PLA Matte @G3U"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PLA @G3U", + "is_custom_defined": "0", + "name": "Flashforge PLA Matte @G3U", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte.json index 1955a67e88..eff4c213df 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte.json @@ -1,15 +1,11 @@ { - "filament_max_volumetric_speed": [ - "22" - ], - "filament_settings_id": [ - "Flashforge PLA Matte" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Matte", - "version": "2.1.1.0" + "filament_max_volumetric_speed": ["22"], + "filament_settings_id": ["Flashforge PLA Matte"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Matte", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json index bf6843bb64..8355ccc0a1 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PLA Metal @FF AD5M 0.25 nozzle" - ], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Metal @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PLA Metal @FF AD5M 0.25 nozzle"], + "from": "system", + "setting_id": "GFSA04_19", + "instantiation": "true", + "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PLA Metal @FF AD5M 0.25 nozzle", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json index 15dde91500..dccc42e0d2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json @@ -1,61 +1,27 @@ { - "type": "filament", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge PLA Metal @FF AD5X 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.25 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Metal @FF AD5X 0.25 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "6" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "type": "filament", + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp_initial_layer": ["60"], + "during_print_exhaust_fan_speed": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["8"], + "filament_settings_id": ["Flashforge PLA Metal @FF AD5X 0.25 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04_19", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PLA Metal @FF AD5X 0.25 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["6"], + "slow_down_min_speed": ["20"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json index a065bbd748..dce2f637f2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json @@ -1,51 +1,23 @@ { - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_settings_id": [ - "Flashforge PLA Metal @FF AD5X 0.6 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Metal @FF AD5X 0.6 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "slow_down_layer_time": [ - "8" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["21"], + "filament_settings_id": ["Flashforge PLA Metal @FF AD5X 0.6 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Metal @FF AD5X 0.6 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "slow_down_layer_time": ["8"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json index 88cc688c3f..fd11176da8 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json @@ -1,51 +1,23 @@ { - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_settings_id": [ - "Flashforge PLA Metal @FF AD5X 0.8 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Metal @FF AD5X 0.8 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "slow_down_layer_time": [ - "8" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["21"], + "filament_settings_id": ["Flashforge PLA Metal @FF AD5X 0.8 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Metal @FF AD5X 0.8 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "slow_down_layer_time": ["8"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X.json index 71be8a4172..09760db4de 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X.json @@ -1,46 +1,22 @@ { - "type": "filament", - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PLA Metal @FF AD5X" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Metal @FF AD5X", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" - ], - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "type": "filament", + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PLA Metal @FF AD5X"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Metal @FF AD5X", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.25 nozzle.json index 167a75d057..e00b1cf798 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.25 nozzle.json @@ -1,59 +1,25 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_settings_id": [ - "Flashforge PLA Metal @FF G4P 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["12"], + "filament_settings_id": ["Flashforge PLA Metal @FF G4P 0.25 nozzle"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.25 nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Metal @FF G4P 0.25 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.035" - ], - "slow_down_min_speed": [ - "20" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.035"], + "slow_down_min_speed": ["20"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.6 HF nozzle.json index f198ba7252..f521a5409e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.6 HF nozzle.json @@ -1,77 +1,35 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "35" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["35"], + "filament_minimal_purge_on_wipe_tower": ["15"], "filament_ramming_parameters": [ "105 105 11.2043 11.2258 11.0108 11.5269 14.129 17.5699 19.2903 19.6129 19.871 18.9462 13.3118 4.66667 0.322581 0.215054 0.494624 0.494624| 0.05 11.1591 0.45 11.2301 0.95 11.757 1.45 18.7946 1.95 19.5925 2.45 18.6882 2.95 1.27742 3.45 0.288172 3.95 0.417204 4.45 7.6 4.95 7.6" ], - "filament_settings_id": [ - "Flashforge PLA Metal @FF G4P 0.6 HF nozzle" - ], + "filament_settings_id": ["Flashforge PLA Metal @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n; right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Metal @FF G4P 0.6 HF nozzle", - "nozzle_temperature": [ - "215" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["215"], + "nozzle_temperature_initial_layer": ["215"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.6 nozzle.json index 41f6bd416b..25dd2f1786 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.6 nozzle.json @@ -1,80 +1,34 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Metal @FF G4P 0.6 nozzle" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Metal @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Metal @FF G4P 0.6 nozzle", - "nozzle_temperature": [ - "205" - ], - "nozzle_temperature_initial_layer": [ - "205" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["205"], + "nozzle_temperature_initial_layer": ["205"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.8 HF nozzle.json index a60d82d2a5..499cf876ac 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.8 HF nozzle.json @@ -1,80 +1,34 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Metal @FF G4P 0.8 HF nozzle" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Metal @FF G4P 0.8 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Metal @FF G4P 0.8 HF nozzle", - "nozzle_temperature": [ - "205" - ], - "nozzle_temperature_initial_layer": [ - "205" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["205"], + "nozzle_temperature_initial_layer": ["205"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P HF.json index ce1af0a51b..d2b3234ec4 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P HF.json @@ -1,101 +1,41 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_density": [ - "1.24" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "49" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Metal @FF G4P HF" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["1"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "fan_max_speed": ["100"], + "fan_min_speed": ["100"], + "filament_density": ["1.24"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["49"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Metal @FF G4P HF"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: PLA\n" ], - "filament_type": [ - "PLA" - ], - "filament_unload_time": [ - "29" - ], - "filament_unloading_speed": [ - "90" - ], - "filament_unloading_speed_start": [ - "100" - ], + "filament_type": ["PLA"], + "filament_unload_time": ["29"], + "filament_unloading_speed": ["90"], + "filament_unloading_speed_start": ["100"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge Generic ABS @G3U", "is_custom_defined": "0", "name": "Flashforge PLA Metal @FF G4P HF", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.032" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "temperature_vitrification": [ - "60" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_speed": ["100"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.032"], + "support_material_interface_fan_speed": ["100"], + "temperature_vitrification": ["60"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P.json index 2c8c3ba9c5..cd76c82dfb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P.json @@ -1,56 +1,26 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PLA Metal @FF G4P" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PLA Metal @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["55"], "inherits": "Flashforge Generic HS PLA", "is_custom_defined": "0", "name": "Flashforge PLA Metal @FF G4P", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "pressure_advance": [ - "0.026" - ], - "slow_down_layer_time": [ - "8" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "pressure_advance": ["0.026"], + "slow_down_layer_time": ["8"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @G3U.json index a5702b0774..4c1488d19c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @G3U.json @@ -1,13 +1,11 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge PLA Metal @G3U" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @G3U", - "is_custom_defined": "0", - "name": "Flashforge PLA Metal @G3U", - "version": "2.1.1.0" + "type": "filament", + "filament_settings_id": ["Flashforge PLA Metal @G3U"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PLA @G3U", + "is_custom_defined": "0", + "name": "Flashforge PLA Metal @G3U", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal.json index de6dbc3a72..4cf55a79c7 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PLA Metal" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Metal", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PLA Metal"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Metal", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json index 5b370a45bd..6ac0546999 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PLA Pro @FF AD5M 0.25 nozzle" - ], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Pro @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PLA Pro @FF AD5M 0.25 nozzle"], + "from": "system", + "setting_id": "GFSA04_19", + "instantiation": "true", + "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PLA Pro @FF AD5M 0.25 nozzle", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json index ce25eaee0c..cdfd96ba20 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json @@ -1,61 +1,27 @@ { - "type": "filament", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge PLA Pro @FF AD5X 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.25 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Pro @FF AD5X 0.25 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "6" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "type": "filament", + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp_initial_layer": ["60"], + "during_print_exhaust_fan_speed": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["8"], + "filament_settings_id": ["Flashforge PLA Pro @FF AD5X 0.25 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04_19", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PLA Pro @FF AD5X 0.25 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["6"], + "slow_down_min_speed": ["20"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json index 4b6b718a07..9d5eb1356f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json @@ -1,51 +1,23 @@ { - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "22" - ], - "filament_settings_id": [ - "Flashforge PLA Pro @FF AD5X 0.6 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Pro @FF AD5X 0.6 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "slow_down_layer_time": [ - "8" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["22"], + "filament_settings_id": ["Flashforge PLA Pro @FF AD5X 0.6 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Pro @FF AD5X 0.6 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "slow_down_layer_time": ["8"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json index 15c08c28ba..63414d5b73 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json @@ -1,51 +1,23 @@ { - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_settings_id": [ - "Flashforge PLA Pro @FF AD5X 0.8 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Pro @FF AD5X 0.8 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "slow_down_layer_time": [ - "8" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["21"], + "filament_settings_id": ["Flashforge PLA Pro @FF AD5X 0.8 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Pro @FF AD5X 0.8 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "slow_down_layer_time": ["8"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X.json index d29ac86751..01946dfbf0 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X.json @@ -1,46 +1,22 @@ { - "type": "filament", - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PLA Pro @FF AD5X" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Pro @FF AD5X", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" - ], - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "type": "filament", + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PLA Pro @FF AD5X"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Pro @FF AD5X", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.25 nozzle.json index c936af78df..2e3828ed7d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.25 nozzle.json @@ -1,59 +1,25 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_settings_id": [ - "Flashforge PLA Pro @FF G4P 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["12"], + "filament_settings_id": ["Flashforge PLA Pro @FF G4P 0.25 nozzle"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.25 nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Pro @FF G4P 0.25 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.035" - ], - "slow_down_min_speed": [ - "20" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.035"], + "slow_down_min_speed": ["20"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.6 HF nozzle.json index 92cd17ed98..2756418689 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.6 HF nozzle.json @@ -1,77 +1,35 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "35" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["35"], + "filament_minimal_purge_on_wipe_tower": ["15"], "filament_ramming_parameters": [ "105 105 11.2043 11.2258 11.0108 11.5269 14.129 17.5699 19.2903 19.6129 19.871 18.9462 13.3118 4.66667 0.322581 0.215054 0.494624 0.494624| 0.05 11.1591 0.45 11.2301 0.95 11.757 1.45 18.7946 1.95 19.5925 2.45 18.6882 2.95 1.27742 3.45 0.288172 3.95 0.417204 4.45 7.6 4.95 7.6" ], - "filament_settings_id": [ - "Flashforge PLA Pro @FF G4P 0.6 HF nozzle" - ], + "filament_settings_id": ["Flashforge PLA Pro @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n; right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Pro @FF G4P 0.6 HF nozzle", - "nozzle_temperature": [ - "215" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.027" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["215"], + "nozzle_temperature_initial_layer": ["215"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.027"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.6 nozzle.json index 6cf27897a8..fe45a75829 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.6 nozzle.json @@ -1,80 +1,34 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Pro @FF G4P 0.6 nozzle" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Pro @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Pro @FF G4P 0.6 nozzle", - "nozzle_temperature": [ - "205" - ], - "nozzle_temperature_initial_layer": [ - "205" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.028" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["205"], + "nozzle_temperature_initial_layer": ["205"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.028"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.8 HF nozzle.json index fce022994c..77e8f580c5 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.8 HF nozzle.json @@ -1,80 +1,34 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Pro @FF G4P 0.8 HF nozzle" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Pro @FF G4P 0.8 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Pro @FF G4P 0.8 HF nozzle", - "nozzle_temperature": [ - "205" - ], - "nozzle_temperature_initial_layer": [ - "205" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.028" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["205"], + "nozzle_temperature_initial_layer": ["205"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.028"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P HF.json index 98050e3316..4bd9e9defd 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P HF.json @@ -1,101 +1,41 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_density": [ - "1.24" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "49" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Pro @FF G4P HF" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["1"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "fan_max_speed": ["100"], + "fan_min_speed": ["100"], + "filament_density": ["1.24"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["49"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Pro @FF G4P HF"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: PLA\n" ], - "filament_type": [ - "PLA" - ], - "filament_unload_time": [ - "29" - ], - "filament_unloading_speed": [ - "90" - ], - "filament_unloading_speed_start": [ - "100" - ], + "filament_type": ["PLA"], + "filament_unload_time": ["29"], + "filament_unloading_speed": ["90"], + "filament_unloading_speed_start": ["100"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge Generic ABS @G3U", "is_custom_defined": "0", "name": "Flashforge PLA Pro @FF G4P HF", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.032" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "temperature_vitrification": [ - "60" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_speed": ["100"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.032"], + "support_material_interface_fan_speed": ["100"], + "temperature_vitrification": ["60"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P.json index 54da3b3a96..f198c40a3c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P.json @@ -1,56 +1,26 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PLA Pro @FF G4P" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PLA Pro @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["55"], "inherits": "Flashforge Generic HS PLA", "is_custom_defined": "0", "name": "Flashforge PLA Pro @FF G4P", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "pressure_advance": [ - "0.026" - ], - "slow_down_layer_time": [ - "8" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "pressure_advance": ["0.026"], + "slow_down_layer_time": ["8"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @G3U.json index d17dede568..f609611ed2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @G3U.json @@ -1,13 +1,11 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge PLA Pro @G3U" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @G3U", - "is_custom_defined": "0", - "name": "Flashforge PLA Pro @G3U", - "version": "2.1.1.0" + "type": "filament", + "filament_settings_id": ["Flashforge PLA Pro @G3U"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PLA @G3U", + "is_custom_defined": "0", + "name": "Flashforge PLA Pro @G3U", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro.json index 8f2edc787a..9e1b61518d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PLA Pro" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Pro", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PLA Pro"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Pro", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @G3U.json index ab38bec592..bb92ab2b80 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @G3U.json @@ -1,13 +1,11 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge PLA Silk @G3U" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @G3U", - "is_custom_defined": "0", - "name": "Flashforge PLA Silk @G3U", - "version": "2.1.1.0" + "type": "filament", + "filament_settings_id": ["Flashforge PLA Silk @G3U"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PLA @G3U", + "is_custom_defined": "0", + "name": "Flashforge PLA Silk @G3U", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json index f1259e27bc..a5b9d6fbbb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PLA Silk @FF AD5M 0.25 nozzle" - ], - "from": "system", - "setting_id": "GFSA04_25", - "instantiation": "true", - "inherits": "Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Silk @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PLA Silk @FF AD5M 0.25 nozzle"], + "from": "system", + "setting_id": "GFSA04_25", + "instantiation": "true", + "inherits": "Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PLA Silk @FF AD5M 0.25 nozzle", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json index bc20aeb281..8f8ca4d8e8 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json @@ -1,64 +1,28 @@ { - "type": "filament", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge PLA Silk @FF AD5X 0.25 nozzle" - ], - "filament_type": [ - "SILK" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.25 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Silk @FF AD5X 0.25 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "6" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "type": "filament", + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp_initial_layer": ["60"], + "during_print_exhaust_fan_speed": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["8"], + "filament_settings_id": ["Flashforge PLA Silk @FF AD5X 0.25 nozzle"], + "filament_type": ["SILK"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04_19", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PLA Silk @FF AD5X 0.25 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["6"], + "slow_down_min_speed": ["20"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json index e37bf60811..1f7b1fbef0 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json @@ -1,51 +1,23 @@ { - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PLA Silk @FF AD5X 0.6 nozzle" - ], - "filament_type": [ - "SILK" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA-Silk", - "is_custom_defined": "0", - "name": "Flashforge PLA Silk @FF AD5X 0.6 nozzle", - "nozzle_temperature": [ - "225" - ], - "nozzle_temperature_initial_layer": [ - "225" - ], - "pressure_advance": [ - "0.027" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PLA Silk @FF AD5X 0.6 nozzle"], + "filament_type": ["SILK"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA-Silk", + "is_custom_defined": "0", + "name": "Flashforge PLA Silk @FF AD5X 0.6 nozzle", + "nozzle_temperature": ["225"], + "nozzle_temperature_initial_layer": ["225"], + "pressure_advance": ["0.027"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json index 5f689f2683..10e417fb8b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json @@ -1,51 +1,23 @@ { - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PLA Silk @FF AD5X 0.8 nozzle" - ], - "filament_type": [ - "SILK" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA-Silk", - "is_custom_defined": "0", - "name": "Flashforge PLA Silk @FF AD5X 0.8 nozzle", - "nozzle_temperature": [ - "225" - ], - "nozzle_temperature_initial_layer": [ - "225" - ], - "pressure_advance": [ - "0.027" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PLA Silk @FF AD5X 0.8 nozzle"], + "filament_type": ["SILK"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA-Silk", + "is_custom_defined": "0", + "name": "Flashforge PLA Silk @FF AD5X 0.8 nozzle", + "nozzle_temperature": ["225"], + "nozzle_temperature_initial_layer": ["225"], + "pressure_advance": ["0.027"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X.json index ebaa181de6..39ab567000 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X.json @@ -1,52 +1,24 @@ { - "type": "filament", - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PLA Silk @FF AD5X" - ], - "filament_type": [ - "SILK" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "instantiation": "true", - "setting_id": "GFSA04", - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA-Silk", - "is_custom_defined": "0", - "name": "Flashforge PLA Silk @FF AD5X", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "pressure_advance": [ - "0.027" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "type": "filament", + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PLA Silk @FF AD5X"], + "filament_type": ["SILK"], + "filament_unload_time": ["29"], + "from": "system", + "instantiation": "true", + "setting_id": "GFSA04", + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA-Silk", + "is_custom_defined": "0", + "name": "Flashforge PLA Silk @FF AD5X", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "nozzle_temperature": ["230"], + "nozzle_temperature_initial_layer": ["230"], + "pressure_advance": ["0.027"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.25 nozzle.json index a65233bdd5..66e38fc398 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.25 nozzle.json @@ -1,59 +1,25 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_settings_id": [ - "Flashforge PLA Silk @FF G4P 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["12"], + "filament_settings_id": ["Flashforge PLA Silk @FF G4P 0.25 nozzle"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.25 nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Silk @FF G4P 0.25 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.035" - ], - "slow_down_min_speed": [ - "20" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.035"], + "slow_down_min_speed": ["20"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.6 HF nozzle.json index d7f4b81891..1a5af9556d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.6 HF nozzle.json @@ -1,71 +1,33 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], "filament_ramming_parameters": [ "105 105 9.95699 10.0645 9.54839 9.80645 13.1183 17.7419 19.828 19.7204 19.7849 19.0538 13.8065 5.52688 0.795699 0.150538 0.344086 0.344086| 0.05 9.82581 0.45 10.1548 0.95 9.95054 1.45 19.3968 1.95 19.4634 2.45 18.8172 2.95 2.22366 3.45 0.20215 3.95 0.288172 4.45 7.6 4.95 7.6" ], - "filament_settings_id": [ - "Flashforge PLA Silk @FF G4P 0.6 HF nozzle" - ], + "filament_settings_id": ["Flashforge PLA Silk @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n; right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Silk @FF G4P 0.6 HF nozzle", - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.6 nozzle.json index ac06f971d1..b471281ba6 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.6 nozzle.json @@ -1,77 +1,33 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_density": [ - "1.32" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Silk @FF G4P 0.6 nozzle" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_density": ["1.32"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Silk @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Silk @FF G4P 0.6 nozzle", - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.8 HF nozzle.json index 3a04a6ba84..3e3325064a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.8 HF nozzle.json @@ -1,77 +1,33 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_density": [ - "1.32" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Silk @FF G4P 0.8 HF nozzle" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_density": ["1.32"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Silk @FF G4P 0.8 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Silk @FF G4P 0.8 HF nozzle", - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P HF.json index 72cd6377cf..76d4b44a30 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P HF.json @@ -1,101 +1,41 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_density": [ - "1.24" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "20" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Silk @FF G4P HF" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["1"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "fan_max_speed": ["100"], + "fan_min_speed": ["100"], + "filament_density": ["1.24"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["20"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Silk @FF G4P HF"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: PLA\n" ], - "filament_type": [ - "PLA" - ], - "filament_unload_time": [ - "29" - ], - "filament_unloading_speed": [ - "90" - ], - "filament_unloading_speed_start": [ - "100" - ], + "filament_type": ["PLA"], + "filament_unload_time": ["29"], + "filament_unloading_speed": ["90"], + "filament_unloading_speed_start": ["100"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge Generic ABS @G3U", "is_custom_defined": "0", "name": "Flashforge PLA Silk @FF G4P HF", - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.026" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "temperature_vitrification": [ - "60" - ], + "nozzle_temperature": ["220"], + "nozzle_temperature_initial_layer": ["220"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_speed": ["100"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.026"], + "support_material_interface_fan_speed": ["100"], + "temperature_vitrification": ["60"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P.json index 3bfc6796a6..da47dc6b43 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P.json @@ -1,53 +1,25 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_settings_id": [ - "Flashforge PLA Silk @FF G4P" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.95"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["12"], + "filament_settings_id": ["Flashforge PLA Silk @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["55"], "inherits": "Flashforge Generic HS PLA", "is_custom_defined": "0", "name": "Flashforge PLA Silk @FF G4P", - "nozzle_temperature_range_high": [ - "240" - ], - "pressure_advance": [ - "0.026" - ], - "slow_down_layer_time": [ - "8" - ], + "nozzle_temperature_range_high": ["240"], + "pressure_advance": ["0.026"], + "slow_down_layer_time": ["8"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk.json index 2b8d24ba84..28e6430cc2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PLA Silk" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA-Silk", - "is_custom_defined": "0", - "name": "Flashforge PLA Silk", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PLA Silk"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PLA-Silk", + "is_custom_defined": "0", + "name": "Flashforge PLA Silk", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json index b1e6925e8a..2a68967f94 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PLA Sparkle @FF AD5M 0.25 nozzle" - ], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Sparkle @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PLA Sparkle @FF AD5M 0.25 nozzle"], + "from": "system", + "setting_id": "GFSA04_19", + "instantiation": "true", + "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PLA Sparkle @FF AD5M 0.25 nozzle", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json index 3ba0d28f71..331ffc01e8 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json @@ -1,61 +1,27 @@ { - "type": "filament", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge PLA Sparkle @FF AD5X 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.25 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Sparkle @FF AD5X 0.25 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "6" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "type": "filament", + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp_initial_layer": ["60"], + "during_print_exhaust_fan_speed": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["8"], + "filament_settings_id": ["Flashforge PLA Sparkle @FF AD5X 0.25 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04_19", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge PLA Sparkle @FF AD5X 0.25 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["6"], + "slow_down_min_speed": ["20"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json index 48578e64df..dea9a66a5c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json @@ -1,51 +1,23 @@ { - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_settings_id": [ - "Flashforge PLA Sparkle @FF AD5X 0.6 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Sparkle @FF AD5X 0.6 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "slow_down_layer_time": [ - "8" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["21"], + "filament_settings_id": ["Flashforge PLA Sparkle @FF AD5X 0.6 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Sparkle @FF AD5X 0.6 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "slow_down_layer_time": ["8"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json index 3b282accb5..f59548f55b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json @@ -1,51 +1,23 @@ { - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_settings_id": [ - "Flashforge PLA Sparkle @FF AD5X 0.8 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Sparkle @FF AD5X 0.8 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "slow_down_layer_time": [ - "8" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["21"], + "filament_settings_id": ["Flashforge PLA Sparkle @FF AD5X 0.8 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Sparkle @FF AD5X 0.8 nozzle", + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "slow_down_layer_time": ["8"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X.json index 2cc8c3d174..1c824ef798 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X.json @@ -1,46 +1,22 @@ { - "type": "filament", - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PLA Sparkle @FF AD5X" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Sparkle @FF AD5X", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" - ], - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "version": "2.1.1.0" + "type": "filament", + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "filament_flow_ratio": ["1"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PLA Sparkle @FF AD5X"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Sparkle @FF AD5X", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "textured_plate_temp_initial_layer": ["60"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json index a7c53c600b..1f1db3e04a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json @@ -1,59 +1,25 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_settings_id": [ - "Flashforge PLA Sparkle @FF G4P 0.25 nozzle" - ], - "filament_unload_time": [ - "29" - ], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["12"], + "filament_settings_id": ["Flashforge PLA Sparkle @FF G4P 0.25 nozzle"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.25 nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Sparkle @FF G4P 0.25 nozzle", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.035" - ], - "slow_down_min_speed": [ - "20" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.035"], + "slow_down_min_speed": ["20"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle.json index 4761defadc..c959ca84eb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle.json @@ -1,77 +1,35 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "35" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["35"], + "filament_minimal_purge_on_wipe_tower": ["15"], "filament_ramming_parameters": [ "105 105 11.2043 11.2258 11.0108 11.5269 14.129 17.5699 19.2903 19.6129 19.871 18.9462 13.3118 4.66667 0.322581 0.215054 0.494624 0.494624| 0.05 11.1591 0.45 11.2301 0.95 11.757 1.45 18.7946 1.95 19.5925 2.45 18.6882 2.95 1.27742 3.45 0.288172 3.95 0.417204 4.45 7.6 4.95 7.6" ], - "filament_settings_id": [ - "Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle" - ], + "filament_settings_id": ["Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n; right_extruder_material:PLA\n\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle", - "nozzle_temperature": [ - "215" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature": ["215"], + "nozzle_temperature_initial_layer": ["215"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["9"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P HF.json index 9c70c4fcfb..95bced5356 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P HF.json @@ -1,101 +1,41 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_density": [ - "1.24" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "49" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Sparkle @FF G4P HF" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["1"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "fan_max_speed": ["100"], + "fan_min_speed": ["100"], + "filament_density": ["1.24"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["49"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA Sparkle @FF G4P HF"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: PLA\n" ], - "filament_type": [ - "PLA" - ], - "filament_unload_time": [ - "29" - ], - "filament_unloading_speed": [ - "90" - ], - "filament_unloading_speed_start": [ - "100" - ], + "filament_type": ["PLA"], + "filament_unload_time": ["29"], + "filament_unloading_speed": ["90"], + "filament_unloading_speed_start": ["100"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "Flashforge Generic ABS @G3U", "is_custom_defined": "0", "name": "Flashforge PLA Sparkle @FF G4P HF", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.032" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "temperature_vitrification": [ - "60" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_speed": ["100"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.032"], + "support_material_interface_fan_speed": ["100"], + "temperature_vitrification": ["60"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P.json index 1d15db91af..574dc5e453 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P.json @@ -1,56 +1,26 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_load_time": [ - "29" - ], - "filament_settings_id": [ - "Flashforge PLA Sparkle @FF G4P" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.97"], + "filament_load_time": ["29"], + "filament_settings_id": ["Flashforge PLA Sparkle @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA\n" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["55"], "inherits": "Flashforge Generic HS PLA", "is_custom_defined": "0", "name": "Flashforge PLA Sparkle @FF G4P", - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "pressure_advance": [ - "0.026" - ], - "slow_down_layer_time": [ - "8" - ], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["210"], + "nozzle_temperature_range_high": ["240"], + "pressure_advance": ["0.026"], + "slow_down_layer_time": ["8"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @G3U.json index fe4493bc39..43ff480f8e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @G3U.json @@ -1,13 +1,11 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge PLA Sparkle @G3U" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @G3U", - "is_custom_defined": "0", - "name": "Flashforge PLA Sparkle @G3U", - "version": "2.1.1.0" + "type": "filament", + "filament_settings_id": ["Flashforge PLA Sparkle @G3U"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PLA @G3U", + "is_custom_defined": "0", + "name": "Flashforge PLA Sparkle @G3U", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle.json index aa3427c1f0..e0677daf4f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PLA Sparkle" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Sparkle", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PLA Sparkle"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PLA", + "is_custom_defined": "0", + "name": "Flashforge PLA Sparkle", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json index f2330836f0..1cdd9b9995 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json @@ -1,30 +1,18 @@ { - "filament_settings_id": [ - "Flashforge PLA-CF @FF AD5X 0.6 nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode\n;right_extruder_material:PLA-CF\n" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA-CF10", - "is_custom_defined": "0", - "name": "Flashforge PLA-CF @FF AD5X 0.6 nozzle", - "nozzle_temperature": [ - "215" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PLA-CF @FF AD5X 0.6 nozzle"], + "filament_start_gcode": [ + "; filament start gcode\n;right_extruder_material:PLA-CF\n" + ], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA-CF10", + "is_custom_defined": "0", + "name": "Flashforge PLA-CF @FF AD5X 0.6 nozzle", + "nozzle_temperature": ["215"], + "nozzle_temperature_initial_layer": ["215"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json index 5e393fd707..14f698972c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json @@ -1,30 +1,18 @@ { - "filament_settings_id": [ - "Flashforge PLA-CF @FF AD5X 0.8 nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode\n;right_extruder_material:PLA-CF\n" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA-CF10", - "is_custom_defined": "0", - "name": "Flashforge PLA-CF @FF AD5X 0.8 nozzle", - "nozzle_temperature": [ - "215" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PLA-CF @FF AD5X 0.8 nozzle"], + "filament_start_gcode": [ + "; filament start gcode\n;right_extruder_material:PLA-CF\n" + ], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA-CF10", + "is_custom_defined": "0", + "name": "Flashforge PLA-CF @FF AD5X 0.8 nozzle", + "nozzle_temperature": ["215"], + "nozzle_temperature_initial_layer": ["215"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X.json index 429d95386b..eb8af62539 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X.json @@ -1,31 +1,19 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge PLA-CF @FF AD5X" - ], - "filament_start_gcode": [ - "; filament start gcode\n;right_extruder_material:PLA-CF\n" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "inherits": "Flashforge Generic PLA-CF10", - "is_custom_defined": "0", - "name": "Flashforge PLA-CF @FF AD5X", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" + "type": "filament", + "filament_settings_id": ["Flashforge PLA-CF @FF AD5X"], + "filament_start_gcode": [ + "; filament start gcode\n;right_extruder_material:PLA-CF\n" ], - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "version": "2.1.1.0" + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "inherits": "Flashforge Generic PLA-CF10", + "is_custom_defined": "0", + "name": "Flashforge PLA-CF @FF AD5X", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "nozzle_temperature": ["210"], + "nozzle_temperature_initial_layer": ["215"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF G4P 0.6 nozzle.json index ce0d1d33aa..a8593a69bc 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF G4P 0.6 nozzle.json @@ -1,83 +1,35 @@ { - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "34.99" - ], - "filament_density": [ - "1.22" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA-CF @FF G4P 0.6 nozzle" - ], + "activate_air_filtration": ["1"], + "additional_cooling_fan_speed": ["0"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "fan_min_speed": ["100"], + "filament_cost": ["34.99"], + "filament_density": ["1.22"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["25"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge PLA-CF @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA-CF @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge PLA-CF @FF G4P 0.6 nozzle", - "nozzle_temperature_initial_layer": [ - "205" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.03" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], + "nozzle_temperature_initial_layer": ["205"], + "nozzle_temperature_range_high": ["250"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.03"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["45"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF G4P.json index cbf9ec86ac..9dd38a09a3 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF G4P.json @@ -1,53 +1,25 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_max_volumetric_speed": [ - "20" - ], - "filament_settings_id": [ - "Flashforge PLA-CF @FF G4P" - ], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.97"], + "filament_max_volumetric_speed": ["20"], + "filament_settings_id": ["Flashforge PLA-CF @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PLA-CF\n" ], - "filament_type": [ - "PLA-CF" - ], + "filament_type": ["PLA-CF"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["55"], "inherits": "Flashforge Generic HS PLA", "is_custom_defined": "0", "name": "Flashforge PLA-CF @FF G4P", - "nozzle_temperature": [ - "215" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "pressure_advance": [ - "0.015" - ], - "slow_down_layer_time": [ - "8" - ], + "nozzle_temperature": ["215"], + "nozzle_temperature_initial_layer": ["215"], + "nozzle_temperature_range_high": ["240"], + "pressure_advance": ["0.015"], + "slow_down_layer_time": ["8"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @G3U.json index ada486ef5c..28b69380ad 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @G3U.json @@ -1,13 +1,11 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge PLA-CF @G3U" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA-CF @G3U", - "is_custom_defined": "0", - "name": "Flashforge PLA-CF @G3U", - "version": "2.1.1.0" + "type": "filament", + "filament_settings_id": ["Flashforge PLA-CF @G3U"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PLA-CF @G3U", + "is_custom_defined": "0", + "name": "Flashforge PLA-CF @G3U", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF.json index e37e5cdb6e..6de2aa6c56 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge PLA-CF" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA-CF10", - "is_custom_defined": "0", - "name": "Flashforge PLA-CF", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge PLA-CF"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PLA-CF10", + "is_custom_defined": "0", + "name": "Flashforge PLA-CF", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-CF.json index 8a40cb7709..a49314a2fd 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-CF.json @@ -1,52 +1,24 @@ { - "type": "filament", - "name": "Flashforge PPA-CF", - "inherits": "FusRock Generic PAHT-CF", - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "filament_flow_ratio": [ - "0.99" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_settings_id": [ - "Flashforge PPA-CF" - ], - "filament_type": [ - "PPA-CF" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "is_custom_defined": "0", - "nozzle_temperature": [ - "270" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "nozzle_temperature_range_high": [ - "290" - ], - "nozzle_temperature_range_low": [ - "260" - ], - "overhang_fan_speed": [ - "20" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "10" - ], - "support_material_interface_fan_speed": [ - "20" - ], - "version": "2.0.2.0" + "type": "filament", + "name": "Flashforge PPA-CF", + "inherits": "FusRock Generic PAHT-CF", + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "filament_flow_ratio": ["0.99"], + "filament_max_volumetric_speed": ["5"], + "filament_settings_id": ["Flashforge PPA-CF"], + "filament_type": ["PPA-CF"], + "hot_plate_temp": ["90"], + "hot_plate_temp_initial_layer": ["90"], + "is_custom_defined": "0", + "nozzle_temperature": ["270"], + "nozzle_temperature_initial_layer": ["270"], + "nozzle_temperature_range_high": ["290"], + "nozzle_temperature_range_low": ["260"], + "overhang_fan_speed": ["20"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["10"], + "support_material_interface_fan_speed": ["20"], + "version": "2.0.2.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-GF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-GF.json index 043016af4c..919934be60 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-GF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-GF.json @@ -1,58 +1,26 @@ { - "type": "filament", - "name": "Flashforge PPA-GF", - "inherits": "FusRock Generic PAHT-CF", - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "fan_max_speed": [ - "40" - ], - "fan_min_speed": [ - "20" - ], - "filament_flow_ratio": [ - "1.03" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_settings_id": [ - "Flashforge PPA-GF" - ], - "filament_type": [ - "PPA-GF" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "is_custom_defined": "0", - "nozzle_temperature": [ - "270" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "nozzle_temperature_range_high": [ - "290" - ], - "nozzle_temperature_range_low": [ - "260" - ], - "overhang_fan_speed": [ - "20" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "10" - ], - "support_material_interface_fan_speed": [ - "20" - ], - "version": "2.0.2.0" + "type": "filament", + "name": "Flashforge PPA-GF", + "inherits": "FusRock Generic PAHT-CF", + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "fan_max_speed": ["40"], + "fan_min_speed": ["20"], + "filament_flow_ratio": ["1.03"], + "filament_max_volumetric_speed": ["5"], + "filament_settings_id": ["Flashforge PPA-GF"], + "filament_type": ["PPA-GF"], + "hot_plate_temp": ["90"], + "hot_plate_temp_initial_layer": ["90"], + "is_custom_defined": "0", + "nozzle_temperature": ["270"], + "nozzle_temperature_initial_layer": ["270"], + "nozzle_temperature_range_high": ["290"], + "nozzle_temperature_range_low": ["260"], + "overhang_fan_speed": ["20"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["10"], + "support_material_interface_fan_speed": ["20"], + "version": "2.0.2.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS @FF G4P.json index cfccb5e7a5..ad31bdf948 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS @FF G4P.json @@ -1,95 +1,39 @@ { - "activate_chamber_temp_control": [ - "1" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "chamber_temperature": [ - "60" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_density": [ - "1.36" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_settings_id": [ - "Flashforge PPS @FF G4P" - ], + "activate_chamber_temp_control": ["1"], + "additional_cooling_fan_speed": ["0"], + "chamber_temperature": ["60"], + "close_fan_the_first_x_layers": ["3"], + "complete_print_exhaust_fan_speed": ["50"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["50"], + "fan_min_speed": ["10"], + "filament_density": ["1.36"], + "filament_flow_ratio": ["0.96"], + "filament_max_volumetric_speed": ["5"], + "filament_settings_id": ["Flashforge PPS @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PPS\n" ], - "filament_type": [ - "PPS" - ], + "filament_type": ["PPS"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], "inherits": "Flashforge Generic PLA-CF10", "is_custom_defined": "0", "name": "Flashforge PPS @FF G4P", - "nozzle_temperature": [ - "320" - ], - "nozzle_temperature_initial_layer": [ - "320" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "300" - ], - "overhang_fan_speed": [ - "30" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.02" - ], - "slow_down_layer_time": [ - "2" - ], - "slow_down_min_speed": [ - "10" - ], - "support_material_interface_fan_speed": [ - "30" - ], - "temperature_vitrification": [ - "125" - ], + "nozzle_temperature": ["320"], + "nozzle_temperature_initial_layer": ["320"], + "nozzle_temperature_range_high": ["320"], + "nozzle_temperature_range_low": ["300"], + "overhang_fan_speed": ["30"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.02"], + "slow_down_layer_time": ["2"], + "slow_down_min_speed": ["10"], + "support_material_interface_fan_speed": ["30"], + "temperature_vitrification": ["125"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS-CF @FF G4P.json index 20ba95ba72..97d2c011f1 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS-CF @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS-CF @FF G4P.json @@ -1,95 +1,39 @@ { - "activate_chamber_temp_control": [ - "1" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "chamber_temperature": [ - "60" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "10" - ], - "filament_density": [ - "1.3" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_settings_id": [ - "Flashforge PPS-CF @FF G4P" - ], + "activate_chamber_temp_control": ["1"], + "additional_cooling_fan_speed": ["0"], + "chamber_temperature": ["60"], + "close_fan_the_first_x_layers": ["3"], + "complete_print_exhaust_fan_speed": ["50"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["30"], + "fan_min_speed": ["10"], + "filament_density": ["1.3"], + "filament_flow_ratio": ["0.96"], + "filament_max_volumetric_speed": ["5"], + "filament_settings_id": ["Flashforge PPS-CF @FF G4P"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PPS-CF\n" ], - "filament_type": [ - "PPS-CF" - ], + "filament_type": ["PPS-CF"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], + "hot_plate_temp": ["100"], + "hot_plate_temp_initial_layer": ["100"], "inherits": "Flashforge Generic PLA-CF10", "is_custom_defined": "0", "name": "Flashforge PPS-CF @FF G4P", - "nozzle_temperature": [ - "310" - ], - "nozzle_temperature_initial_layer": [ - "310" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "300" - ], - "overhang_fan_speed": [ - "30" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.02" - ], - "slow_down_layer_time": [ - "2" - ], - "slow_down_min_speed": [ - "10" - ], - "support_material_interface_fan_speed": [ - "30" - ], - "temperature_vitrification": [ - "220" - ], + "nozzle_temperature": ["310"], + "nozzle_temperature_initial_layer": ["310"], + "nozzle_temperature_range_high": ["320"], + "nozzle_temperature_range_low": ["300"], + "overhang_fan_speed": ["30"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.02"], + "slow_down_layer_time": ["2"], + "slow_down_min_speed": ["10"], + "support_material_interface_fan_speed": ["30"], + "temperature_vitrification": ["220"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS-CF.json index d89cbfd63a..868e46c40b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS-CF.json @@ -1,52 +1,24 @@ { - "type": "filament", - "name": "Flashforge PPS-CF", - "inherits": "FusRock Generic PAHT-CF", - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "filament_flow_ratio": [ - "0.99" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_settings_id": [ - "Flashforge PPS-CF" - ], - "filament_type": [ - "PPS-CF" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "is_custom_defined": "0", - "nozzle_temperature": [ - "305" - ], - "nozzle_temperature_initial_layer": [ - "305" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "300" - ], - "overhang_fan_speed": [ - "20" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "10" - ], - "support_material_interface_fan_speed": [ - "20" - ], - "version": "2.0.2.0" + "type": "filament", + "name": "Flashforge PPS-CF", + "inherits": "FusRock Generic PAHT-CF", + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "filament_flow_ratio": ["0.99"], + "filament_max_volumetric_speed": ["5"], + "filament_settings_id": ["Flashforge PPS-CF"], + "filament_type": ["PPS-CF"], + "hot_plate_temp": ["90"], + "hot_plate_temp_initial_layer": ["90"], + "is_custom_defined": "0", + "nozzle_temperature": ["305"], + "nozzle_temperature_initial_layer": ["305"], + "nozzle_temperature_range_high": ["320"], + "nozzle_temperature_range_low": ["300"], + "overhang_fan_speed": ["20"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["10"], + "support_material_interface_fan_speed": ["20"], + "version": "2.0.2.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PVA @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PVA @G3U.json index 2790bac508..5578e2a5e2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PVA @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PVA @G3U.json @@ -1,13 +1,11 @@ { - "type": "filament", - "filament_settings_id": [ - "Flashforge PVA @G3U" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PVA", - "is_custom_defined": "0", - "name": "Flashforge PVA @G3U", - "version": "2.1.1.0" + "type": "filament", + "filament_settings_id": ["Flashforge PVA @G3U"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic PVA", + "is_custom_defined": "0", + "name": "Flashforge PVA @G3U", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.6 nozzle.json index b87e519288..70a64543d8 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.6 nozzle.json @@ -1,41 +1,19 @@ { - "cool_plate_temp": [ - "45" - ], - "cool_plate_temp_initial_layer": [ - "45" - ], - "eng_plate_temp": [ - "45" - ], - "eng_plate_temp_initial_layer": [ - "45" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_settings_id": [ - "Flashforge TPU 64D @FF AD5X 0.6 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "inherits": "Flashforge Generic TPU", - "is_custom_defined": "0", - "name": "Flashforge TPU 64D @FF AD5X 0.6 nozzle", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], + "cool_plate_temp": ["45"], + "cool_plate_temp_initial_layer": ["45"], + "eng_plate_temp": ["45"], + "eng_plate_temp_initial_layer": ["45"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["5"], + "filament_settings_id": ["Flashforge TPU 64D @FF AD5X 0.6 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "inherits": "Flashforge Generic TPU", + "is_custom_defined": "0", + "name": "Flashforge TPU 64D @FF AD5X 0.6 nozzle", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], "instantiation": "true", - "textured_plate_temp": [ - "45" - ], - "textured_plate_temp_initial_layer": [ - "45" - ], - "version": "2.1.1.0" + "textured_plate_temp": ["45"], + "textured_plate_temp_initial_layer": ["45"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.8 nozzle.json index 13406c8df1..a2d7b540c9 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.8 nozzle.json @@ -1,41 +1,19 @@ { - "cool_plate_temp": [ - "45" - ], - "cool_plate_temp_initial_layer": [ - "45" - ], - "eng_plate_temp": [ - "45" - ], - "eng_plate_temp_initial_layer": [ - "45" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_settings_id": [ - "Flashforge TPU 64D @FF AD5X 0.8 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "from": "system", - "inherits": "Flashforge Generic TPU", - "is_custom_defined": "0", - "name": "Flashforge TPU 64D @FF AD5X 0.8 nozzle", - "instantiation": "true", - "textured_plate_temp": [ - "45" - ], - "textured_plate_temp_initial_layer": [ - "45" - ], - "version": "2.1.1.0" + "cool_plate_temp": ["45"], + "cool_plate_temp_initial_layer": ["45"], + "eng_plate_temp": ["45"], + "eng_plate_temp_initial_layer": ["45"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["5"], + "filament_settings_id": ["Flashforge TPU 64D @FF AD5X 0.8 nozzle"], + "filament_unload_time": ["29"], + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "from": "system", + "inherits": "Flashforge Generic TPU", + "is_custom_defined": "0", + "name": "Flashforge TPU 64D @FF AD5X 0.8 nozzle", + "instantiation": "true", + "textured_plate_temp": ["45"], + "textured_plate_temp_initial_layer": ["45"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X.json index 6ba010cda4..6f309881dc 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X.json @@ -1,47 +1,21 @@ { - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_settings_id": [ - "Flashforge TPU 64D @FF AD5X" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" - ], - "inherits": "Flashforge Generic TPU", - "is_custom_defined": "0", - "name": "Flashforge TPU 64D @FF AD5X", - "instantiation": "true", - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "version": "2.1.1.0" + "cool_plate_temp": ["50"], + "cool_plate_temp_initial_layer": ["50"], + "eng_plate_temp": ["50"], + "eng_plate_temp_initial_layer": ["50"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["5"], + "filament_settings_id": ["Flashforge TPU 64D @FF AD5X"], + "filament_unload_time": ["29"], + "from": "system", + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "inherits": "Flashforge Generic TPU", + "is_custom_defined": "0", + "name": "Flashforge TPU 64D @FF AD5X", + "instantiation": "true", + "textured_plate_temp": ["50"], + "textured_plate_temp_initial_layer": ["50"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json index ee2348970e..456d2b3f82 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json @@ -1,48 +1,22 @@ { - "cool_plate_temp": [ - "45" - ], - "cool_plate_temp_initial_layer": [ - "45" - ], - "eng_plate_temp": [ - "45" - ], - "eng_plate_temp_initial_layer": [ - "45" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_settings_id": [ - "Flashforge TPU 95A @FF AD5X 0.6 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "inherits": "Flashforge Generic TPU", - "is_custom_defined": "0", - "name": "Flashforge TPU 95A @FF AD5X 0.6 nozzle", - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "textured_plate_temp": [ - "45" - ], - "textured_plate_temp_initial_layer": [ - "45" - ], - "version": "2.1.1.0" + "cool_plate_temp": ["45"], + "cool_plate_temp_initial_layer": ["45"], + "eng_plate_temp": ["45"], + "eng_plate_temp_initial_layer": ["45"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["5"], + "filament_settings_id": ["Flashforge TPU 95A @FF AD5X 0.6 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "inherits": "Flashforge Generic TPU", + "is_custom_defined": "0", + "name": "Flashforge TPU 95A @FF AD5X 0.6 nozzle", + "nozzle_temperature": ["220"], + "nozzle_temperature_initial_layer": ["220"], + "textured_plate_temp": ["45"], + "textured_plate_temp_initial_layer": ["45"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json index ef24a0d89b..0bbf537363 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json @@ -1,48 +1,22 @@ { - "cool_plate_temp": [ - "45" - ], - "cool_plate_temp_initial_layer": [ - "45" - ], - "eng_plate_temp": [ - "45" - ], - "eng_plate_temp_initial_layer": [ - "45" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_settings_id": [ - "Flashforge TPU 95A @FF AD5X 0.8 nozzle" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "inherits": "Flashforge Generic TPU", - "is_custom_defined": "0", - "name": "Flashforge TPU 95A @FF AD5X 0.8 nozzle", - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "textured_plate_temp": [ - "45" - ], - "textured_plate_temp_initial_layer": [ - "45" - ], - "version": "2.1.1.0" + "cool_plate_temp": ["45"], + "cool_plate_temp_initial_layer": ["45"], + "eng_plate_temp": ["45"], + "eng_plate_temp_initial_layer": ["45"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["5"], + "filament_settings_id": ["Flashforge TPU 95A @FF AD5X 0.8 nozzle"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "inherits": "Flashforge Generic TPU", + "is_custom_defined": "0", + "name": "Flashforge TPU 95A @FF AD5X 0.8 nozzle", + "nozzle_temperature": ["220"], + "nozzle_temperature_initial_layer": ["220"], + "textured_plate_temp": ["45"], + "textured_plate_temp_initial_layer": ["45"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X.json index e12378a783..d1b561a916 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X.json @@ -1,52 +1,24 @@ { - "type": "filament", - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_settings_id": [ - "Flashforge TPU 95A @FF AD5X" - ], - "filament_unload_time": [ - "29" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "inherits": "Flashforge Generic TPU", - "is_custom_defined": "0", - "name": "Flashforge TPU 95A @FF AD5X", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" - ], - "nozzle_temperature": [ - "220" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "version": "2.1.1.0" + "type": "filament", + "cool_plate_temp": ["50"], + "cool_plate_temp_initial_layer": ["50"], + "eng_plate_temp": ["50"], + "eng_plate_temp_initial_layer": ["50"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["5"], + "filament_settings_id": ["Flashforge TPU 95A @FF AD5X"], + "filament_unload_time": ["29"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], + "inherits": "Flashforge Generic TPU", + "is_custom_defined": "0", + "name": "Flashforge TPU 95A @FF AD5X", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "nozzle_temperature": ["220"], + "textured_plate_temp": ["50"], + "textured_plate_temp_initial_layer": ["50"], + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.6 HF nozzle.json index 0819ba384c..739836f4c8 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.6 HF nozzle.json @@ -1,110 +1,46 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "40" - ], - "filament_density": [ - "1.22" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_load_time": [ - "29" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["3"], + "complete_print_exhaust_fan_speed": ["40"], + "cool_plate_temp": ["50"], + "cool_plate_temp_initial_layer": ["50"], + "during_print_exhaust_fan_speed": ["40"], + "eng_plate_temp": ["50"], + "eng_plate_temp_initial_layer": ["50"], + "fan_cooling_layer_time": ["100"], + "fan_min_speed": ["100"], + "filament_cost": ["40"], + "filament_density": ["1.22"], + "filament_flow_ratio": ["0.98"], + "filament_load_time": ["29"], + "filament_minimal_purge_on_wipe_tower": ["15"], "filament_ramming_parameters": [ "105 105 6.62366 6.75269 6.98925 7.5914 8.94624 10.9892 13.2903 15.2043 16.129 16.2366 16.1505 16.1075 16.0645 16.0215 16.0215 16.0215 15.957 15.8495 15.8065 15.8495| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 11.7839 1.95 15.8075 2.45 16.1936 2.95 16.1162 3.45 16.0301 3.95 16.0301 4.45 15.8151 4.95 15.9011" ], - "filament_settings_id": [ - "Flashforge TPU 95A @FF G4P 0.6 HF nozzle" - ], + "filament_settings_id": ["Flashforge TPU 95A @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n; right_extruder_material:TPU" ], - "filament_type": [ - "TPU" - ], - "filament_unload_time": [ - "29" - ], + "filament_type": ["TPU"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge TPU 95A @FF G4P 0.6 HF nozzle", - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_speed": [ - "100" - ], - "pressure_advance": [ - "0.03" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "100" - ], - "temperature_vitrification": [ - "30" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], + "nozzle_temperature": ["220"], + "nozzle_temperature_initial_layer": ["220"], + "nozzle_temperature_range_high": ["250"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_speed": ["100"], + "pressure_advance": ["0.03"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["100"], + "temperature_vitrification": ["30"], + "textured_plate_temp": ["50"], + "textured_plate_temp_initial_layer": ["50"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.6 nozzle.json index e7470a4e00..de715d44c6 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.6 nozzle.json @@ -1,77 +1,33 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_density": [ - "1.22" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge TPU 95A @FF G4P 0.6 nozzle" - ], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["3"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_density": ["1.22"], + "filament_flow_ratio": ["0.98"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["12"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge TPU 95A @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:TPU\n\n" ], - "filament_type": [ - "TPU" - ], - "filament_unload_time": [ - "29" - ], + "filament_type": ["TPU"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge TPU 95A @FF G4P 0.6 nozzle", - "nozzle_temperature_range_high": [ - "250" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], + "nozzle_temperature_range_high": ["250"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.8 HF nozzle.json index d313885d6b..754ab16c2c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.8 HF nozzle.json @@ -1,77 +1,33 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_density": [ - "1.22" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge TPU 95A @FF G4P 0.8 HF nozzle" - ], + "additional_cooling_fan_speed": ["40"], + "close_fan_the_first_x_layers": ["3"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["100"], + "filament_density": ["1.22"], + "filament_flow_ratio": ["0.98"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["12"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Flashforge TPU 95A @FF G4P 0.8 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:TPU\n\n" ], - "filament_type": [ - "TPU" - ], - "filament_unload_time": [ - "29" - ], + "filament_type": ["TPU"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["50"], "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Flashforge TPU 95A @FF G4P 0.8 HF nozzle", - "nozzle_temperature_range_high": [ - "250" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], + "nozzle_temperature_range_high": ["250"], + "nozzle_temperature_range_low": ["190"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.025"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P.json index e908a71280..9f24782883 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P.json @@ -1,50 +1,22 @@ { - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "3.6" - ], - "filament_settings_id": [ - "Flashforge TPU 95A @FF G4P" - ], - "filament_unload_time": [ - "29" - ], + "additional_cooling_fan_speed": ["40"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["3.6"], + "filament_settings_id": ["Flashforge TPU 95A @FF G4P"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], "inherits": "Flashforge Generic TPU", "is_custom_defined": "0", "name": "Flashforge TPU 95A @FF G4P", - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "overhang_fan_threshold": [ - "95%" - ], - "pressure_advance": [ - "0.02" - ], - "slow_down_min_speed": [ - "10" - ], - "support_material_interface_fan_speed": [ - "-1" - ], + "nozzle_temperature": ["220"], + "nozzle_temperature_initial_layer": ["220"], + "overhang_fan_threshold": ["95%"], + "pressure_advance": ["0.02"], + "slow_down_min_speed": ["10"], + "support_material_interface_fan_speed": ["-1"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A.json index ace1cfaa19..32c9a72178 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A.json @@ -1,12 +1,10 @@ { - "filament_settings_id": [ - "Flashforge TPU 95A" - ], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic TPU", - "is_custom_defined": "0", - "name": "Flashforge TPU 95A", - "version": "2.1.1.0" + "filament_settings_id": ["Flashforge TPU 95A"], + "from": "system", + "setting_id": "GFSA04", + "instantiation": "true", + "inherits": "Flashforge Generic TPU", + "is_custom_defined": "0", + "name": "Flashforge TPU 95A", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic NexPA-CF25.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic NexPA-CF25.json index 3596e6f76c..1afb777445 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic NexPA-CF25.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic NexPA-CF25.json @@ -4,21 +4,11 @@ "setting_id": "GFSA04", "instantiation": "true", "from": "system", - "activate_air_filtration": [ - "0" - ], - "activate_chamber_temp_control": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], + "activate_air_filtration": ["0"], + "activate_chamber_temp_control": ["0"], + "additional_cooling_fan_speed": ["0"], + "chamber_temperature": ["0"], + "close_fan_the_first_x_layers": ["1"], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", "Flashforge Guider 2s 0.4 nozzle" @@ -26,229 +16,83 @@ "compatible_printers_condition": "", "compatible_prints": [], "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "85" - ], - "cool_plate_temp_initial_layer": [ - "85" - ], - "default_filament_colour": [ - "" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "85" - ], - "eng_plate_temp_initial_layer": [ - "85" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "10" - ], - "filament_cooling_final_speed": [ - "3.4" - ], - "filament_cooling_initial_speed": [ - "2.2" - ], - "filament_cooling_moves": [ - "4" - ], - "filament_cost": [ - "300" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_load_time": [ - "0" - ], - "filament_loading_speed": [ - "28" - ], - "filament_loading_speed_start": [ - "3" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "10" - ], - "filament_multitool_ramming_volume": [ - "10" - ], - "filament_notes": [ - "" - ], + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp": ["85"], + "cool_plate_temp_initial_layer": ["85"], + "default_filament_colour": [""], + "during_print_exhaust_fan_speed": ["60"], + "enable_overhang_bridge_fan": ["1"], + "enable_pressure_advance": ["1"], + "eng_plate_temp": ["85"], + "eng_plate_temp_initial_layer": ["85"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["30"], + "fan_min_speed": ["10"], + "filament_cooling_final_speed": ["3.4"], + "filament_cooling_initial_speed": ["2.2"], + "filament_cooling_moves": ["4"], + "filament_cost": ["300"], + "filament_density": ["1.27"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_flow_ratio": ["0.98"], + "filament_is_support": ["0"], + "filament_load_time": ["0"], + "filament_loading_speed": ["28"], + "filament_loading_speed_start": ["3"], + "filament_max_volumetric_speed": ["18"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_multitool_ramming": ["0"], + "filament_multitool_ramming_flow": ["10"], + "filament_multitool_ramming_volume": ["10"], + "filament_notes": [""], "filament_ramming_parameters": [ "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "FusRock Generic NexPA-CF25" - ], - "filament_shrink": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_unload_time": [ - "0" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "filament_retract_before_wipe": ["nil"], + "filament_retract_lift_above": ["nil"], + "filament_retract_lift_below": ["nil"], + "filament_retract_lift_enforce": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["nil"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": ["FusRock Generic NexPA-CF25"], + "filament_shrink": ["100%"], + "filament_soluble": ["0"], + "filament_start_gcode": ["; filament start gcode"], + "filament_toolchange_delay": ["0"], + "filament_type": ["PA-CF"], + "filament_unload_time": ["0"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "full_fan_speed_layer": ["0"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge Generic PETG", "name": "FusRock Generic NexPA-CF25", - "nozzle_temperature": [ - "295" - ], - "nozzle_temperature_initial_layer": [ - "300" - ], - "nozzle_temperature_range_high": [ - "305" - ], - "nozzle_temperature_range_low": [ - "290" - ], - "overhang_fan_speed": [ - "30" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.03" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "30" - ], - "temperature_vitrification": [ - "90" - ], - "textured_plate_temp": [ - "85" - ], - "textured_plate_temp_initial_layer": [ - "85" - ], + "nozzle_temperature": ["295"], + "nozzle_temperature_initial_layer": ["300"], + "nozzle_temperature_range_high": ["305"], + "nozzle_temperature_range_low": ["290"], + "overhang_fan_speed": ["30"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.03"], + "reduce_fan_stop_start_freq": ["1"], + "required_nozzle_HRC": ["0"], + "slow_down_for_layer_cooling": ["1"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["30"], + "temperature_vitrification": ["90"], + "textured_plate_temp": ["85"], + "textured_plate_temp_initial_layer": ["85"], "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json index 4021876bdf..cb11761b39 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json @@ -6,84 +6,32 @@ "setting_id": "GFSA04", "instantiation": "true", "from": "system", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.6 Nozzle" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "fan_cooling_layer_time": [ - "15" - ], - "fan_max_speed": [ - "40" - ], - "fan_min_speed": [ - "15" - ], - "filament_cost": [ - "300" - ], - "filament_density": [ - "1.15" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_settings_id": [ - "FusRock Generic PAHT-CF @G3U 0.6 Nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_type": [ - "PAHT-CF" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.6 Nozzle"], + "additional_cooling_fan_speed": ["0"], + "fan_cooling_layer_time": ["15"], + "fan_max_speed": ["40"], + "fan_min_speed": ["15"], + "filament_cost": ["300"], + "filament_density": ["1.15"], + "filament_flow_ratio": ["0.98"], + "filament_max_volumetric_speed": ["18"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_settings_id": ["FusRock Generic PAHT-CF @G3U 0.6 Nozzle"], + "filament_start_gcode": ["; filament start gcode"], + "filament_type": ["PAHT-CF"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["80"], "is_custom_defined": "0", - "nozzle_temperature": [ - "295" - ], - "nozzle_temperature_initial_layer": [ - "295" - ], - "nozzle_temperature_range_high": [ - "305" - ], - "nozzle_temperature_range_low": [ - "290" - ], - "overhang_fan_speed": [ - "30" - ], - "pressure_advance": [ - "0.04" - ], - "slow_down_min_speed": [ - "12" - ], - "support_material_interface_fan_speed": [ - "30" - ], - "temperature_vitrification": [ - "90" - ], + "nozzle_temperature": ["295"], + "nozzle_temperature_initial_layer": ["295"], + "nozzle_temperature_range_high": ["305"], + "nozzle_temperature_range_low": ["290"], + "overhang_fan_speed": ["30"], + "pressure_advance": ["0.04"], + "slow_down_min_speed": ["12"], + "support_material_interface_fan_speed": ["30"], + "temperature_vitrification": ["90"], "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-CF.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-CF.json index eea9cc104d..7e61f48584 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-CF.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-CF.json @@ -6,21 +6,11 @@ "setting_id": "GFSA04", "instantiation": "true", "from": "system", - "activate_air_filtration": [ - "0" - ], - "activate_chamber_temp_control": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], + "activate_air_filtration": ["0"], + "activate_chamber_temp_control": ["0"], + "additional_cooling_fan_speed": ["0"], + "chamber_temperature": ["0"], + "close_fan_the_first_x_layers": ["1"], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", "Flashforge Guider 3 Ultra 0.6 Nozzle", @@ -30,227 +20,81 @@ "compatible_printers_condition": "", "compatible_prints": [], "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "85" - ], - "cool_plate_temp_initial_layer": [ - "85" - ], - "default_filament_colour": [ - "" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "85" - ], - "eng_plate_temp_initial_layer": [ - "85" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "10" - ], - "filament_cooling_final_speed": [ - "3.4" - ], - "filament_cooling_initial_speed": [ - "2.2" - ], - "filament_cooling_moves": [ - "4" - ], - "filament_cost": [ - "300" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_load_time": [ - "0" - ], - "filament_loading_speed": [ - "28" - ], - "filament_loading_speed_start": [ - "3" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "10" - ], - "filament_multitool_ramming_volume": [ - "10" - ], - "filament_notes": [ - "" - ], + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp": ["85"], + "cool_plate_temp_initial_layer": ["85"], + "default_filament_colour": [""], + "during_print_exhaust_fan_speed": ["60"], + "enable_overhang_bridge_fan": ["1"], + "enable_pressure_advance": ["1"], + "eng_plate_temp": ["85"], + "eng_plate_temp_initial_layer": ["85"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["30"], + "fan_min_speed": ["10"], + "filament_cooling_final_speed": ["3.4"], + "filament_cooling_initial_speed": ["2.2"], + "filament_cooling_moves": ["4"], + "filament_cost": ["300"], + "filament_density": ["1.27"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_flow_ratio": ["0.98"], + "filament_is_support": ["0"], + "filament_load_time": ["0"], + "filament_loading_speed": ["28"], + "filament_loading_speed_start": ["3"], + "filament_max_volumetric_speed": ["18"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_multitool_ramming": ["0"], + "filament_multitool_ramming_flow": ["10"], + "filament_multitool_ramming_volume": ["10"], + "filament_notes": [""], "filament_ramming_parameters": [ "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "FusRock Generic PAHT-CF" - ], - "filament_shrink": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_unload_time": [ - "0" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "295" - ], - "nozzle_temperature_initial_layer": [ - "300" - ], - "nozzle_temperature_range_high": [ - "305" - ], - "nozzle_temperature_range_low": [ - "290" - ], - "overhang_fan_speed": [ - "30" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.03" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "30" - ], - "temperature_vitrification": [ - "90" - ], - "textured_plate_temp": [ - "85" - ], - "textured_plate_temp_initial_layer": [ - "85" - ], + "filament_retract_before_wipe": ["nil"], + "filament_retract_lift_above": ["nil"], + "filament_retract_lift_below": ["nil"], + "filament_retract_lift_enforce": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["nil"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": ["FusRock Generic PAHT-CF"], + "filament_shrink": ["100%"], + "filament_soluble": ["0"], + "filament_start_gcode": ["; filament start gcode"], + "filament_toolchange_delay": ["0"], + "filament_type": ["PA-CF"], + "filament_unload_time": ["0"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "full_fan_speed_layer": ["0"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["80"], + "nozzle_temperature": ["295"], + "nozzle_temperature_initial_layer": ["300"], + "nozzle_temperature_range_high": ["305"], + "nozzle_temperature_range_low": ["290"], + "overhang_fan_speed": ["30"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.03"], + "reduce_fan_stop_start_freq": ["1"], + "required_nozzle_HRC": ["0"], + "slow_down_for_layer_cooling": ["1"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["30"], + "temperature_vitrification": ["90"], + "textured_plate_temp": ["85"], + "textured_plate_temp_initial_layer": ["85"], "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-GF.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-GF.json index b440f1a0e4..6b7f686bde 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-GF.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-GF.json @@ -4,21 +4,11 @@ "setting_id": "GFSA04", "instantiation": "true", "from": "system", - "filament_max_volumetric_speed": [ - "15" - ], - "filament_settings_id": [ - "FusRock Generic PAHT-GF" - ], - "filament_type": [ - "PAHT-GF" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], + "filament_max_volumetric_speed": ["15"], + "filament_settings_id": ["FusRock Generic PAHT-GF"], + "filament_type": ["PAHT-GF"], + "hot_plate_temp": ["70"], + "hot_plate_temp_initial_layer": ["75"], "inherits": "FusRock Generic PAHT-CF", "is_custom_defined": "0", "name": "FusRock Generic PAHT-GF", @@ -26,14 +16,8 @@ "Flashforge Guider 3 Ultra 0.4 Nozzle", "Flashforge Guider 2s 0.4 nozzle" ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "10" - ], - "support_material_interface_fan_speed": [ - "20" - ], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["10"], + "support_material_interface_fan_speed": ["20"], "version": "2.0.2.0" } diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-CF @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-CF @G3U 0.6 Nozzle.json index 10eb4e5900..81fe5bf70a 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-CF @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-CF @G3U 0.6 Nozzle.json @@ -6,84 +6,32 @@ "setting_id": "GFSA04", "instantiation": "true", "from": "system", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.6 Nozzle" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "fan_cooling_layer_time": [ - "20" - ], - "fan_max_speed": [ - "40" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "300" - ], - "filament_density": [ - "1.3" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_settings_id": [ - "FusRock Generic PET-CF @G3U 0.6 Nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_type": [ - "PET-CF" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.6 Nozzle"], + "additional_cooling_fan_speed": ["0"], + "fan_cooling_layer_time": ["20"], + "fan_max_speed": ["40"], + "fan_min_speed": ["10"], + "filament_cost": ["300"], + "filament_density": ["1.3"], + "filament_flow_ratio": ["0.98"], + "filament_max_volumetric_speed": ["18"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_settings_id": ["FusRock Generic PET-CF @G3U 0.6 Nozzle"], + "filament_start_gcode": ["; filament start gcode"], + "filament_type": ["PET-CF"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["80"], "is_custom_defined": "0", - "nozzle_temperature": [ - "290" - ], - "nozzle_temperature_initial_layer": [ - "290" - ], - "nozzle_temperature_range_high": [ - "300" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "30" - ], - "pressure_advance": [ - "0.04" - ], - "slow_down_min_speed": [ - "12" - ], - "support_material_interface_fan_speed": [ - "30" - ], - "temperature_vitrification": [ - "90" - ], + "nozzle_temperature": ["290"], + "nozzle_temperature_initial_layer": ["290"], + "nozzle_temperature_range_high": ["300"], + "nozzle_temperature_range_low": ["280"], + "overhang_fan_speed": ["30"], + "pressure_advance": ["0.04"], + "slow_down_min_speed": ["12"], + "support_material_interface_fan_speed": ["30"], + "temperature_vitrification": ["90"], "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-CF.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-CF.json index 78ea6bc65c..2a2e380dd9 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-CF.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-CF.json @@ -4,21 +4,11 @@ "setting_id": "GFSA04", "instantiation": "true", "from": "system", - "activate_air_filtration": [ - "0" - ], - "activate_chamber_temp_control": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], + "activate_air_filtration": ["0"], + "activate_chamber_temp_control": ["0"], + "additional_cooling_fan_speed": ["0"], + "chamber_temperature": ["0"], + "close_fan_the_first_x_layers": ["1"], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", "Flashforge Guider 3 Ultra 0.6 Nozzle", @@ -28,229 +18,83 @@ "compatible_printers_condition": "", "compatible_prints": [], "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "85" - ], - "cool_plate_temp_initial_layer": [ - "85" - ], - "default_filament_colour": [ - "" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "85" - ], - "eng_plate_temp_initial_layer": [ - "85" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "10" - ], - "filament_cooling_final_speed": [ - "3.4" - ], - "filament_cooling_initial_speed": [ - "2.2" - ], - "filament_cooling_moves": [ - "4" - ], - "filament_cost": [ - "300" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_load_time": [ - "0" - ], - "filament_loading_speed": [ - "28" - ], - "filament_loading_speed_start": [ - "3" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "10" - ], - "filament_multitool_ramming_volume": [ - "10" - ], - "filament_notes": [ - "" - ], + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp": ["85"], + "cool_plate_temp_initial_layer": ["85"], + "default_filament_colour": [""], + "during_print_exhaust_fan_speed": ["60"], + "enable_overhang_bridge_fan": ["1"], + "enable_pressure_advance": ["1"], + "eng_plate_temp": ["85"], + "eng_plate_temp_initial_layer": ["85"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["30"], + "fan_min_speed": ["10"], + "filament_cooling_final_speed": ["3.4"], + "filament_cooling_initial_speed": ["2.2"], + "filament_cooling_moves": ["4"], + "filament_cost": ["300"], + "filament_density": ["1.27"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_flow_ratio": ["0.97"], + "filament_is_support": ["0"], + "filament_load_time": ["0"], + "filament_loading_speed": ["28"], + "filament_loading_speed_start": ["3"], + "filament_max_volumetric_speed": ["18"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_multitool_ramming": ["0"], + "filament_multitool_ramming_flow": ["10"], + "filament_multitool_ramming_volume": ["10"], + "filament_notes": [""], "filament_ramming_parameters": [ "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "FusRock Generic PET-CF" - ], - "filament_shrink": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_type": [ - "PET-CF" - ], - "filament_unload_time": [ - "0" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], + "filament_retract_before_wipe": ["nil"], + "filament_retract_lift_above": ["nil"], + "filament_retract_lift_below": ["nil"], + "filament_retract_lift_enforce": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["nil"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": ["FusRock Generic PET-CF"], + "filament_shrink": ["100%"], + "filament_soluble": ["0"], + "filament_start_gcode": ["; filament start gcode"], + "filament_toolchange_delay": ["0"], + "filament_type": ["PET-CF"], + "filament_unload_time": ["0"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "full_fan_speed_layer": ["0"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["80"], "inherits": "Flashforge Generic PETG", "name": "FusRock Generic PET-CF", - "nozzle_temperature": [ - "290" - ], - "nozzle_temperature_initial_layer": [ - "290" - ], - "nozzle_temperature_range_high": [ - "300" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "30" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.03" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "30" - ], - "temperature_vitrification": [ - "90" - ], - "textured_plate_temp": [ - "85" - ], - "textured_plate_temp_initial_layer": [ - "85" - ], + "nozzle_temperature": ["290"], + "nozzle_temperature_initial_layer": ["290"], + "nozzle_temperature_range_high": ["300"], + "nozzle_temperature_range_low": ["280"], + "overhang_fan_speed": ["30"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.03"], + "reduce_fan_stop_start_freq": ["1"], + "required_nozzle_HRC": ["0"], + "slow_down_for_layer_cooling": ["1"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["30"], + "temperature_vitrification": ["90"], + "textured_plate_temp": ["85"], + "textured_plate_temp_initial_layer": ["85"], "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-GF.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-GF.json index 90f244dbd6..a9b76c3921 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-GF.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-GF.json @@ -4,15 +4,9 @@ "setting_id": "GFSA04", "instantiation": "true", "from": "system", - "filament_max_volumetric_speed": [ - "15" - ], - "filament_settings_id": [ - "FusRock Generic PET-GF" - ], - "filament_type": [ - "PET-GF" - ], + "filament_max_volumetric_speed": ["15"], + "filament_settings_id": ["FusRock Generic PET-GF"], + "filament_type": ["PET-GF"], "inherits": "FusRock Generic PET-CF", "is_custom_defined": "0", "name": "FusRock Generic PET-GF", @@ -20,14 +14,8 @@ "Flashforge Guider 3 Ultra 0.4 Nozzle", "Flashforge Guider 2s 0.4 nozzle" ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "10" - ], - "support_material_interface_fan_speed": [ - "20" - ], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["10"], + "support_material_interface_fan_speed": ["20"], "version": "2.0.2.0" } diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-Multi @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-Multi @G3U 0.6 Nozzle.json index 74e0031a40..246c9f85f0 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-Multi @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-Multi @G3U 0.6 Nozzle.json @@ -6,78 +6,30 @@ "setting_id": "GFSA04", "instantiation": "true", "from": "system", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.6 Nozzle" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "fan_cooling_layer_time": [ - "15" - ], - "fan_max_speed": [ - "40" - ], - "fan_min_speed": [ - "10" - ], - "filament_density": [ - "1.2" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_settings_id": [ - "FusRock Generic S-Multi @G3U 0.6 Nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_type": [ - "PET-CF" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.6 Nozzle"], + "additional_cooling_fan_speed": ["0"], + "fan_cooling_layer_time": ["15"], + "fan_max_speed": ["40"], + "fan_min_speed": ["10"], + "filament_density": ["1.2"], + "filament_flow_ratio": ["0.97"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_settings_id": ["FusRock Generic S-Multi @G3U 0.6 Nozzle"], + "filament_start_gcode": ["; filament start gcode"], + "filament_type": ["PET-CF"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], "is_custom_defined": "0", - "nozzle_temperature": [ - "270" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "nozzle_temperature_range_low": [ - "265" - ], - "overhang_fan_speed": [ - "30" - ], - "pressure_advance": [ - "0.03" - ], - "slow_down_min_speed": [ - "12" - ], - "support_material_interface_fan_speed": [ - "30" - ], - "temperature_vitrification": [ - "90" - ], + "nozzle_temperature": ["270"], + "nozzle_temperature_initial_layer": ["270"], + "nozzle_temperature_range_high": ["280"], + "nozzle_temperature_range_low": ["265"], + "overhang_fan_speed": ["30"], + "pressure_advance": ["0.03"], + "slow_down_min_speed": ["12"], + "support_material_interface_fan_speed": ["30"], + "temperature_vitrification": ["90"], "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-Multi.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-Multi.json index a14252ee46..e7d4aa1e88 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-Multi.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-Multi.json @@ -4,21 +4,11 @@ "setting_id": "GFSA04", "instantiation": "true", "from": "system", - "activate_air_filtration": [ - "0" - ], - "activate_chamber_temp_control": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], + "activate_air_filtration": ["0"], + "activate_chamber_temp_control": ["0"], + "additional_cooling_fan_speed": ["0"], + "chamber_temperature": ["0"], + "close_fan_the_first_x_layers": ["1"], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", "Flashforge Guider 2s 0.4 nozzle" @@ -26,229 +16,83 @@ "compatible_printers_condition": "", "compatible_prints": [], "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "85" - ], - "cool_plate_temp_initial_layer": [ - "85" - ], - "default_filament_colour": [ - "" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "85" - ], - "eng_plate_temp_initial_layer": [ - "85" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "10" - ], - "filament_cooling_final_speed": [ - "3.4" - ], - "filament_cooling_initial_speed": [ - "2.2" - ], - "filament_cooling_moves": [ - "4" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_load_time": [ - "0" - ], - "filament_loading_speed": [ - "28" - ], - "filament_loading_speed_start": [ - "3" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "10" - ], - "filament_multitool_ramming_volume": [ - "10" - ], - "filament_notes": [ - "" - ], + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp": ["85"], + "cool_plate_temp_initial_layer": ["85"], + "default_filament_colour": [""], + "during_print_exhaust_fan_speed": ["60"], + "enable_overhang_bridge_fan": ["1"], + "enable_pressure_advance": ["1"], + "eng_plate_temp": ["85"], + "eng_plate_temp_initial_layer": ["85"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["30"], + "fan_min_speed": ["10"], + "filament_cooling_final_speed": ["3.4"], + "filament_cooling_initial_speed": ["2.2"], + "filament_cooling_moves": ["4"], + "filament_cost": ["30"], + "filament_density": ["1.21"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_flow_ratio": ["0.97"], + "filament_is_support": ["0"], + "filament_load_time": ["0"], + "filament_loading_speed": ["28"], + "filament_loading_speed_start": ["3"], + "filament_max_volumetric_speed": ["12"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_multitool_ramming": ["0"], + "filament_multitool_ramming_flow": ["10"], + "filament_multitool_ramming_volume": ["10"], + "filament_notes": [""], "filament_ramming_parameters": [ "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "FusRock Generic S-Multi" - ], - "filament_shrink": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_type": [ - "S-Multi" - ], - "filament_unload_time": [ - "0" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], + "filament_retract_before_wipe": ["nil"], + "filament_retract_lift_above": ["nil"], + "filament_retract_lift_below": ["nil"], + "filament_retract_lift_enforce": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["nil"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": ["FusRock Generic S-Multi"], + "filament_shrink": ["100%"], + "filament_soluble": ["0"], + "filament_start_gcode": ["; filament start gcode"], + "filament_toolchange_delay": ["0"], + "filament_type": ["S-Multi"], + "filament_unload_time": ["0"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "full_fan_speed_layer": ["0"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], "inherits": "Flashforge Generic PETG", "name": "FusRock Generic S-Multi", - "nozzle_temperature": [ - "270" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "nozzle_temperature_range_low": [ - "265" - ], - "overhang_fan_speed": [ - "30" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.03" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "30" - ], - "temperature_vitrification": [ - "90" - ], - "textured_plate_temp": [ - "85" - ], - "textured_plate_temp_initial_layer": [ - "85" - ], + "nozzle_temperature": ["270"], + "nozzle_temperature_initial_layer": ["270"], + "nozzle_temperature_range_high": ["280"], + "nozzle_temperature_range_low": ["265"], + "overhang_fan_speed": ["30"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.03"], + "reduce_fan_stop_start_freq": ["1"], + "required_nozzle_HRC": ["0"], + "slow_down_for_layer_cooling": ["1"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["30"], + "temperature_vitrification": ["90"], + "textured_plate_temp": ["85"], + "textured_plate_temp_initial_layer": ["85"], "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json index aeb6934cc3..b84b2f3227 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json @@ -6,78 +6,30 @@ "setting_id": "GFSA04", "instantiation": "true", "from": "system", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.6 Nozzle" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "fan_cooling_layer_time": [ - "20" - ], - "fan_max_speed": [ - "40" - ], - "fan_min_speed": [ - "10" - ], - "filament_density": [ - "1.15" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_settings_id": [ - "FusRock Generic S-PAHT @G3U 0.6 Nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_type": [ - "PA-CF" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.6 Nozzle"], + "additional_cooling_fan_speed": ["0"], + "fan_cooling_layer_time": ["20"], + "fan_max_speed": ["40"], + "fan_min_speed": ["10"], + "filament_density": ["1.15"], + "filament_flow_ratio": ["0.96"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_settings_id": ["FusRock Generic S-PAHT @G3U 0.6 Nozzle"], + "filament_start_gcode": ["; filament start gcode"], + "filament_type": ["PA-CF"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], "is_custom_defined": "0", - "nozzle_temperature": [ - "275" - ], - "nozzle_temperature_initial_layer": [ - "275" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "nozzle_temperature_range_low": [ - "270" - ], - "overhang_fan_speed": [ - "30" - ], - "pressure_advance": [ - "0.03" - ], - "slow_down_min_speed": [ - "12" - ], - "support_material_interface_fan_speed": [ - "30" - ], - "temperature_vitrification": [ - "90" - ], + "nozzle_temperature": ["275"], + "nozzle_temperature_initial_layer": ["275"], + "nozzle_temperature_range_high": ["280"], + "nozzle_temperature_range_low": ["270"], + "overhang_fan_speed": ["30"], + "pressure_advance": ["0.03"], + "slow_down_min_speed": ["12"], + "support_material_interface_fan_speed": ["30"], + "temperature_vitrification": ["90"], "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-PAHT.json b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-PAHT.json index 494faac88f..57e8cab839 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-PAHT.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-PAHT.json @@ -4,21 +4,11 @@ "setting_id": "GFSA04", "instantiation": "true", "from": "system", - "activate_air_filtration": [ - "0" - ], - "activate_chamber_temp_control": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], + "activate_air_filtration": ["0"], + "activate_chamber_temp_control": ["0"], + "additional_cooling_fan_speed": ["0"], + "chamber_temperature": ["0"], + "close_fan_the_first_x_layers": ["1"], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", "Flashforge Guider 2s 0.4 nozzle" @@ -26,229 +16,83 @@ "compatible_printers_condition": "", "compatible_prints": [], "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "85" - ], - "cool_plate_temp_initial_layer": [ - "85" - ], - "default_filament_colour": [ - "" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "85" - ], - "eng_plate_temp_initial_layer": [ - "85" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "10" - ], - "filament_cooling_final_speed": [ - "3.4" - ], - "filament_cooling_initial_speed": [ - "2.2" - ], - "filament_cooling_moves": [ - "4" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.16" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_load_time": [ - "0" - ], - "filament_loading_speed": [ - "28" - ], - "filament_loading_speed_start": [ - "3" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "10" - ], - "filament_multitool_ramming_volume": [ - "10" - ], - "filament_notes": [ - "" - ], + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp": ["85"], + "cool_plate_temp_initial_layer": ["85"], + "default_filament_colour": [""], + "during_print_exhaust_fan_speed": ["60"], + "enable_overhang_bridge_fan": ["1"], + "enable_pressure_advance": ["1"], + "eng_plate_temp": ["85"], + "eng_plate_temp_initial_layer": ["85"], + "fan_cooling_layer_time": ["30"], + "fan_max_speed": ["30"], + "fan_min_speed": ["10"], + "filament_cooling_final_speed": ["3.4"], + "filament_cooling_initial_speed": ["2.2"], + "filament_cooling_moves": ["4"], + "filament_cost": ["30"], + "filament_density": ["1.16"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_flow_ratio": ["0.98"], + "filament_is_support": ["0"], + "filament_load_time": ["0"], + "filament_loading_speed": ["28"], + "filament_loading_speed_start": ["3"], + "filament_max_volumetric_speed": ["12"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_multitool_ramming": ["0"], + "filament_multitool_ramming_flow": ["10"], + "filament_multitool_ramming_volume": ["10"], + "filament_notes": [""], "filament_ramming_parameters": [ "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "FusRock Generic S-PAHT" - ], - "filament_shrink": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_type": [ - "S-PAHT" - ], - "filament_unload_time": [ - "0" - ], - "filament_unloading_speed": [ - "35" - ], - "filament_unloading_speed_start": [ - "40" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "75" - ], - "hot_plate_temp_initial_layer": [ - "75" - ], + "filament_retract_before_wipe": ["nil"], + "filament_retract_lift_above": ["nil"], + "filament_retract_lift_below": ["nil"], + "filament_retract_lift_enforce": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["nil"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": ["FusRock Generic S-PAHT"], + "filament_shrink": ["100%"], + "filament_soluble": ["0"], + "filament_start_gcode": ["; filament start gcode"], + "filament_toolchange_delay": ["0"], + "filament_type": ["S-PAHT"], + "filament_unload_time": ["0"], + "filament_unloading_speed": ["35"], + "filament_unloading_speed_start": ["40"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "full_fan_speed_layer": ["0"], + "hot_plate_temp": ["75"], + "hot_plate_temp_initial_layer": ["75"], "inherits": "Flashforge Generic PETG", "name": "FusRock Generic S-PAHT", - "nozzle_temperature": [ - "275" - ], - "nozzle_temperature_initial_layer": [ - "275" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "nozzle_temperature_range_low": [ - "270" - ], - "overhang_fan_speed": [ - "30" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.03" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "30" - ], - "temperature_vitrification": [ - "90" - ], - "textured_plate_temp": [ - "85" - ], - "textured_plate_temp_initial_layer": [ - "85" - ], + "nozzle_temperature": ["275"], + "nozzle_temperature_initial_layer": ["275"], + "nozzle_temperature_range_high": ["280"], + "nozzle_temperature_range_low": ["270"], + "overhang_fan_speed": ["30"], + "overhang_fan_threshold": ["25%"], + "pressure_advance": ["0.03"], + "reduce_fan_stop_start_freq": ["1"], + "required_nozzle_HRC": ["0"], + "slow_down_for_layer_cooling": ["1"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["30"], + "temperature_vitrification": ["90"], + "textured_plate_temp": ["85"], + "textured_plate_temp_initial_layer": ["85"], "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT @FF G4P 0.6 nozzle.json index ba045285bb..48b00b0ea8 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT @FF G4P 0.6 nozzle.json @@ -1,44 +1,22 @@ { - "close_fan_the_first_x_layers": [ - "2" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_load_time": [ - "29" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "FusRock PAHT @FF G4P 0.6 nozzle" - ], + "close_fan_the_first_x_layers": ["2"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_load_time": ["29"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["FusRock PAHT @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PA" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "FusRock PAHT @FF G4P 0.6 nozzle", - "overhang_fan_speed": [ - "50" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "50" - ], + "overhang_fan_speed": ["50"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["50"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT @FF G4P 0.8 HF nozzle.json index b3eb2edb9e..6e3a83bbd1 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT @FF G4P 0.8 HF nozzle.json @@ -1,44 +1,22 @@ { - "close_fan_the_first_x_layers": [ - "2" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_load_time": [ - "29" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "FusRock PAHT @FF G4P 0.8 HF nozzle" - ], + "close_fan_the_first_x_layers": ["2"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_load_time": ["29"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["FusRock PAHT @FF G4P 0.8 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PA" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "FusRock PAHT @FF G4P 0.8 HF nozzle", - "overhang_fan_speed": [ - "50" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "50" - ], + "overhang_fan_speed": ["50"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["50"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT-CF @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT-CF @FF G4P 0.6 nozzle.json index 757d36e50c..a6cc745736 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT-CF @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT-CF @FF G4P 0.6 nozzle.json @@ -1,50 +1,24 @@ { - "close_fan_the_first_x_layers": [ - "2" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "FusRock PAHT-CF @FF G4P 0.6 nozzle" - ], + "close_fan_the_first_x_layers": ["2"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["FusRock PAHT-CF @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PA" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["80"], "inherits": "FusRock Generic PAHT-CF @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "FusRock PAHT-CF @FF G4P 0.6 nozzle", - "overhang_fan_speed": [ - "50" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "50" - ], + "overhang_fan_speed": ["50"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["50"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.6 HF nozzle.json index 1b7ef38ff2..f819863e9b 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.6 HF nozzle.json @@ -1,53 +1,25 @@ { - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "FusRock PET @FF G4P 0.6 HF nozzle" - ], + "close_fan_the_first_x_layers": ["3"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["12"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["FusRock PET @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n; right_extruder_material:PET" ], - "filament_type": [ - "PET" - ], - "filament_unload_time": [ - "29" - ], + "filament_type": ["PET"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], - "hot_plate_temp": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], + "hot_plate_temp": ["80"], "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "FusRock PET @FF G4P 0.6 HF nozzle", - "overhang_fan_speed": [ - "50" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "50" - ], + "overhang_fan_speed": ["50"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["50"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.6 nozzle.json index f0aec04f37..996edd1316 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.6 nozzle.json @@ -1,53 +1,25 @@ { - "close_fan_the_first_x_layers": [ - "2" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "FusRock PET @FF G4P 0.6 nozzle" - ], + "close_fan_the_first_x_layers": ["2"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["12"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["FusRock PET @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PET" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["80"], "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "FusRock PET @FF G4P 0.6 nozzle", - "overhang_fan_speed": [ - "50" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "50" - ], + "overhang_fan_speed": ["50"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["50"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.8 HF nozzle.json index d30175272d..b18fe67452 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.8 HF nozzle.json @@ -1,53 +1,25 @@ { - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "FusRock PET @FF G4P 0.8 HF nozzle" - ], + "close_fan_the_first_x_layers": ["3"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["12"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["FusRock PET @FF G4P 0.8 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n; right_extruder_material:PET" ], - "filament_type": [ - "PET" - ], - "filament_unload_time": [ - "29" - ], + "filament_type": ["PET"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], + "hot_plate_temp": ["80"], "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "FusRock PET @FF G4P 0.8 HF nozzle", - "overhang_fan_speed": [ - "50" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "50" - ], + "overhang_fan_speed": ["50"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["50"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock PET-CF @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PET-CF @FF G4P 0.6 nozzle.json index 44edafdf50..a5d4dde3da 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock PET-CF @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock PET-CF @FF G4P 0.6 nozzle.json @@ -1,41 +1,21 @@ { - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_load_time": [ - "29" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "FusRock PET-CF @FF G4P 0.6 nozzle" - ], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "filament_flow_ratio": ["0.96"], + "filament_load_time": ["29"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["FusRock PET-CF @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PET" ], - "filament_unload_time": [ - "29" - ], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "80" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["80"], "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "FusRock PET-CF @FF G4P 0.6 nozzle", - "slow_down_min_speed": [ - "20" - ], + "slow_down_min_speed": ["20"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.6 HF nozzle.json index 71f5672ebe..81e5e696de 100644 --- a/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.6 HF nozzle.json @@ -1,89 +1,37 @@ { - "close_fan_the_first_x_layers": [ - "2" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "55" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "50" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Polymaker CoPA @FF G4P 0.6 HF nozzle" - ], + "close_fan_the_first_x_layers": ["2"], + "complete_print_exhaust_fan_speed": ["40"], + "cool_plate_temp": ["55"], + "cool_plate_temp_initial_layer": ["55"], + "during_print_exhaust_fan_speed": ["40"], + "eng_plate_temp": ["55"], + "eng_plate_temp_initial_layer": ["55"], + "fan_cooling_layer_time": ["50"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["5"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Polymaker CoPA @FF G4P 0.6 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PA" ], - "filament_type": [ - "PA" - ], - "filament_unload_time": [ - "29" - ], + "filament_type": ["PA"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Polymaker CoPA @FF G4P 0.6 HF nozzle", - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "50" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "50" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], + "nozzle_temperature": ["260"], + "nozzle_temperature_initial_layer": ["260"], + "nozzle_temperature_range_low": ["250"], + "overhang_fan_speed": ["50"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["50"], + "textured_plate_temp": ["55"], + "textured_plate_temp_initial_layer": ["55"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.6 nozzle.json index d6837ba71b..5c1c8df0ee 100644 --- a/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.6 nozzle.json @@ -1,71 +1,31 @@ { - "close_fan_the_first_x_layers": [ - "2" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "50" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Polymaker CoPA @FF G4P 0.6 nozzle" - ], + "close_fan_the_first_x_layers": ["2"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["50"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["5"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Polymaker CoPA @FF G4P 0.6 nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PA" ], - "filament_type": [ - "PA" - ], - "filament_unload_time": [ - "29" - ], + "filament_type": ["PA"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], + "hot_plate_temp": ["55"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Polymaker CoPA @FF G4P 0.6 nozzle", - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "50" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "50" - ], + "nozzle_temperature": ["260"], + "nozzle_temperature_initial_layer": ["260"], + "nozzle_temperature_range_low": ["250"], + "overhang_fan_speed": ["50"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["50"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.8 HF nozzle.json index bc87c1deec..462e0f0e93 100644 --- a/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.8 HF nozzle.json @@ -1,71 +1,31 @@ { - "close_fan_the_first_x_layers": [ - "2" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "fan_cooling_layer_time": [ - "50" - ], - "filament_load_time": [ - "29" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Polymaker CoPA @FF G4P 0.8 HF nozzle" - ], + "close_fan_the_first_x_layers": ["2"], + "complete_print_exhaust_fan_speed": ["40"], + "during_print_exhaust_fan_speed": ["40"], + "fan_cooling_layer_time": ["50"], + "filament_load_time": ["29"], + "filament_max_volumetric_speed": ["5"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_settings_id": ["Polymaker CoPA @FF G4P 0.8 HF nozzle"], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PA" ], - "filament_type": [ - "PA" - ], - "filament_unload_time": [ - "29" - ], + "filament_type": ["PA"], + "filament_unload_time": ["29"], "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["55"], "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", "is_custom_defined": "0", "name": "Polymaker CoPA @FF G4P 0.8 HF nozzle", - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "50" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "support_material_interface_fan_speed": [ - "50" - ], + "nozzle_temperature": ["260"], + "nozzle_temperature_initial_layer": ["260"], + "nozzle_temperature_range_low": ["250"], + "overhang_fan_speed": ["50"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["20"], + "support_material_interface_fan_speed": ["50"], "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/filament/Polymaker/Polymaker Generic CoPA.json b/resources/profiles/Flashforge/filament/Polymaker/Polymaker Generic CoPA.json index b50a9d4fc6..808450a58a 100644 --- a/resources/profiles/Flashforge/filament/Polymaker/Polymaker Generic CoPA.json +++ b/resources/profiles/Flashforge/filament/Polymaker/Polymaker Generic CoPA.json @@ -1,254 +1,98 @@ { - "type": "filament", - "filament_id": "GFB99", - "setting_id": "GFSA04", - "instantiation": "true", - "from": "system", - "activate_air_filtration": [ - "0" - ], - "activate_chamber_temp_control": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "activate_air_filtration": ["0"], + "activate_chamber_temp_control": ["0"], + "additional_cooling_fan_speed": ["0"], + "chamber_temperature": ["0"], + "close_fan_the_first_x_layers": ["1"], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", "Flashforge Guider 2s 0.4 nozzle" ], - "compatible_printers_condition": "", - "compatible_prints": [], - "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "60" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "default_filament_colour": [ - "" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "50" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "10" - ], - "filament_cooling_final_speed": [ - "3.4" - ], - "filament_cooling_initial_speed": [ - "2.2" - ], - "filament_cooling_moves": [ - "4" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.16" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_flow_ratio": [ - "1.02" - ], - "filament_is_support": [ - "0" - ], - "filament_load_time": [ - "0" - ], - "filament_loading_speed": [ - "28" - ], - "filament_loading_speed_start": [ - "3" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "10" - ], - "filament_multitool_ramming_volume": [ - "10" - ], - "filament_notes": [ - "" - ], - "filament_ramming_parameters": [ - "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "Polymaker Generic CoPA" - ], - "filament_shrink": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_type": [ - "PA" - ], - "filament_unload_time": [ - "0" - ], - "filament_unloading_speed": [ - "30" - ], - "filament_unloading_speed_start": [ - "35" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "inherits": "Flashforge Generic PLA", - "name": "Polymaker Generic CoPA", - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "30" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.03" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "10" - ], - "support_material_interface_fan_speed": [ - "20" - ], - "temperature_vitrification": [ - "70" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "version": "1.9.0.2" + "compatible_printers_condition": "", + "compatible_prints": [], + "compatible_prints_condition": "", + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp": ["60"], + "cool_plate_temp_initial_layer": ["55"], + "default_filament_colour": [""], + "during_print_exhaust_fan_speed": ["60"], + "enable_overhang_bridge_fan": ["1"], + "enable_pressure_advance": ["1"], + "eng_plate_temp": ["60"], + "eng_plate_temp_initial_layer": ["55"], + "fan_cooling_layer_time": ["50"], + "fan_max_speed": ["30"], + "fan_min_speed": ["10"], + "filament_cooling_final_speed": ["3.4"], + "filament_cooling_initial_speed": ["2.2"], + "filament_cooling_moves": ["4"], + "filament_cost": ["20"], + "filament_density": ["1.16"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_flow_ratio": ["1.02"], + "filament_is_support": ["0"], + "filament_load_time": ["0"], + "filament_loading_speed": ["28"], + "filament_loading_speed_start": ["3"], + "filament_max_volumetric_speed": ["5"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_multitool_ramming": ["0"], + "filament_multitool_ramming_flow": ["10"], + "filament_multitool_ramming_volume": ["10"], + "filament_notes": [""], + "filament_ramming_parameters": [ + "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" + ], + "filament_retract_before_wipe": ["nil"], + "filament_retract_lift_above": ["nil"], + "filament_retract_lift_below": ["nil"], + "filament_retract_lift_enforce": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["nil"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": ["Polymaker Generic CoPA"], + "filament_shrink": ["100%"], + "filament_soluble": ["0"], + "filament_start_gcode": ["; filament start gcode\n"], + "filament_toolchange_delay": ["0"], + "filament_type": ["PA"], + "filament_unload_time": ["0"], + "filament_unloading_speed": ["30"], + "filament_unloading_speed_start": ["35"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "full_fan_speed_layer": ["0"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["55"], + "inherits": "Flashforge Generic PLA", + "name": "Polymaker Generic CoPA", + "nozzle_temperature": ["260"], + "nozzle_temperature_initial_layer": ["260"], + "nozzle_temperature_range_high": ["270"], + "nozzle_temperature_range_low": ["250"], + "overhang_fan_speed": ["30"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.03"], + "reduce_fan_stop_start_freq": ["1"], + "required_nozzle_HRC": ["0"], + "slow_down_for_layer_cooling": ["1"], + "slow_down_layer_time": ["10"], + "slow_down_min_speed": ["10"], + "support_material_interface_fan_speed": ["20"], + "temperature_vitrification": ["70"], + "textured_plate_temp": ["60"], + "textured_plate_temp_initial_layer": ["55"], + "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/Polymaker/Polymaker Generic S1.json b/resources/profiles/Flashforge/filament/Polymaker/Polymaker Generic S1.json index 70f306aac5..44273b3e37 100644 --- a/resources/profiles/Flashforge/filament/Polymaker/Polymaker Generic S1.json +++ b/resources/profiles/Flashforge/filament/Polymaker/Polymaker Generic S1.json @@ -1,254 +1,98 @@ { - "type": "filament", - "filament_id": "GFB99", - "setting_id": "GFSA04", - "instantiation": "true", - "from": "system", - "activate_air_filtration": [ - "0" - ], - "activate_chamber_temp_control": [ - "0" - ], - "additional_cooling_fan_speed": [ - "50" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "activate_air_filtration": ["0"], + "activate_chamber_temp_control": ["0"], + "additional_cooling_fan_speed": ["50"], + "chamber_temperature": ["0"], + "close_fan_the_first_x_layers": ["1"], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", "Flashforge Guider 2s 0.4 nozzle" ], - "compatible_printers_condition": "", - "compatible_prints": [], - "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "60" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "default_filament_colour": [ - "" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "50" - ], - "filament_cooling_final_speed": [ - "3.4" - ], - "filament_cooling_initial_speed": [ - "2.2" - ], - "filament_cooling_moves": [ - "4" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.2" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "1" - ], - "filament_load_time": [ - "0" - ], - "filament_loading_speed": [ - "28" - ], - "filament_loading_speed_start": [ - "3" - ], - "filament_max_volumetric_speed": [ - "5" - ], - "filament_minimal_purge_on_wipe_tower": [ - "5" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "10" - ], - "filament_multitool_ramming_volume": [ - "10" - ], - "filament_notes": [ - "" - ], - "filament_ramming_parameters": [ - "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "Polymaker Generic S1" - ], - "filament_shrink": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_type": [ - "PA" - ], - "filament_unload_time": [ - "0" - ], - "filament_unloading_speed": [ - "30" - ], - "filament_unloading_speed_start": [ - "35" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "inherits": "Flashforge Generic PLA", - "name": "Polymaker Generic S1", - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "230" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pressure_advance": [ - "0.025" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "16" - ], - "slow_down_min_speed": [ - "5" - ], - "support_material_interface_fan_speed": [ - "60" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "version": "1.9.0.2" + "compatible_printers_condition": "", + "compatible_prints": [], + "compatible_prints_condition": "", + "complete_print_exhaust_fan_speed": ["80"], + "cool_plate_temp": ["60"], + "cool_plate_temp_initial_layer": ["55"], + "default_filament_colour": [""], + "during_print_exhaust_fan_speed": ["60"], + "enable_overhang_bridge_fan": ["1"], + "enable_pressure_advance": ["1"], + "eng_plate_temp": ["60"], + "eng_plate_temp_initial_layer": ["55"], + "fan_cooling_layer_time": ["100"], + "fan_max_speed": ["80"], + "fan_min_speed": ["50"], + "filament_cooling_final_speed": ["3.4"], + "filament_cooling_initial_speed": ["2.2"], + "filament_cooling_moves": ["4"], + "filament_cost": ["20"], + "filament_density": ["1.2"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_end_gcode": ["; filament end gcode\n"], + "filament_flow_ratio": ["1"], + "filament_is_support": ["1"], + "filament_load_time": ["0"], + "filament_loading_speed": ["28"], + "filament_loading_speed_start": ["3"], + "filament_max_volumetric_speed": ["5"], + "filament_minimal_purge_on_wipe_tower": ["5"], + "filament_multitool_ramming": ["0"], + "filament_multitool_ramming_flow": ["10"], + "filament_multitool_ramming_volume": ["10"], + "filament_notes": [""], + "filament_ramming_parameters": [ + "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" + ], + "filament_retract_before_wipe": ["nil"], + "filament_retract_lift_above": ["nil"], + "filament_retract_lift_below": ["nil"], + "filament_retract_lift_enforce": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["nil"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": ["Polymaker Generic S1"], + "filament_shrink": ["100%"], + "filament_soluble": ["0"], + "filament_start_gcode": ["; filament start gcode"], + "filament_toolchange_delay": ["0"], + "filament_type": ["PA"], + "filament_unload_time": ["0"], + "filament_unloading_speed": ["30"], + "filament_unloading_speed_start": ["35"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "full_fan_speed_layer": ["0"], + "hot_plate_temp": ["50"], + "hot_plate_temp_initial_layer": ["55"], + "inherits": "Flashforge Generic PLA", + "name": "Polymaker Generic S1", + "nozzle_temperature": ["220"], + "nozzle_temperature_initial_layer": ["220"], + "nozzle_temperature_range_high": ["230"], + "nozzle_temperature_range_low": ["200"], + "overhang_fan_speed": ["80"], + "overhang_fan_threshold": ["50%"], + "pressure_advance": ["0.025"], + "reduce_fan_stop_start_freq": ["1"], + "required_nozzle_HRC": ["0"], + "slow_down_for_layer_cooling": ["1"], + "slow_down_layer_time": ["16"], + "slow_down_min_speed": ["5"], + "support_material_interface_fan_speed": ["60"], + "temperature_vitrification": ["60"], + "textured_plate_temp": ["60"], + "textured_plate_temp_initial_layer": ["55"], + "version": "1.9.0.2" } diff --git a/resources/profiles/Flashforge/filament/fdm_filament_abs.json b/resources/profiles/Flashforge/filament/fdm_filament_abs.json index 8743ba8b3b..7d0e0909ef 100644 --- a/resources/profiles/Flashforge/filament/fdm_filament_abs.json +++ b/resources/profiles/Flashforge/filament/fdm_filament_abs.json @@ -4,85 +4,31 @@ "from": "system", "instantiation": "false", "inherits": "fdm_filament_common", - "cool_plate_temp": [ - "80" - ], - "eng_plate_temp": [ - "80" - ], - "hot_plate_temp": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "eng_plate_temp_initial_layer": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "2" - ], - "fan_cooling_layer_time": [ - "30" - ], - "filament_max_volumetric_speed": [ - "15" - ], - "filament_type": [ - "ABS" - ], - "filament_density": [ - "1.10" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "265" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "20" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_threshold": [ - "25%" - ], - "overhang_fan_speed": [ - "80" - ], - "nozzle_temperature": [ - "265" - ], - "temperature_vitrification": [ - "110" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "8" - ] + "cool_plate_temp": ["80"], + "eng_plate_temp": ["80"], + "hot_plate_temp": ["80"], + "textured_plate_temp": ["80"], + "cool_plate_temp_initial_layer": ["80"], + "eng_plate_temp_initial_layer": ["80"], + "hot_plate_temp_initial_layer": ["80"], + "textured_plate_temp_initial_layer": ["80"], + "slow_down_for_layer_cooling": ["1"], + "close_fan_the_first_x_layers": ["2"], + "fan_cooling_layer_time": ["30"], + "filament_max_volumetric_speed": ["15"], + "filament_type": ["ABS"], + "filament_density": ["1.10"], + "filament_cost": ["20"], + "nozzle_temperature_initial_layer": ["265"], + "reduce_fan_stop_start_freq": ["1"], + "fan_max_speed": ["20"], + "fan_min_speed": ["10"], + "overhang_fan_threshold": ["25%"], + "overhang_fan_speed": ["80"], + "nozzle_temperature": ["265"], + "temperature_vitrification": ["110"], + "nozzle_temperature_range_low": ["230"], + "nozzle_temperature_range_high": ["270"], + "slow_down_min_speed": ["10"], + "slow_down_layer_time": ["8"] } diff --git a/resources/profiles/Flashforge/filament/fdm_filament_asa.json b/resources/profiles/Flashforge/filament/fdm_filament_asa.json index 29a752a4ee..b60eb881a7 100644 --- a/resources/profiles/Flashforge/filament/fdm_filament_asa.json +++ b/resources/profiles/Flashforge/filament/fdm_filament_asa.json @@ -1,82 +1,32 @@ { - "type": "filament", - "name": "fdm_filament_asa", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "105" - ], - "eng_plate_temp" : [ - "105" - ], - "hot_plate_temp" : [ - "105" - ], - "cool_plate_temp_initial_layer" : [ - "105" - ], - "eng_plate_temp_initial_layer" : [ - "105" - ], - "hot_plate_temp_initial_layer" : [ - "105" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "35" - ], - "filament_max_volumetric_speed": [ - "28.6" - ], - "filament_type": [ - "ASA" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_threshold": [ - "25%" - ], - "overhang_fan_speed": [ - "80" - ], - "nozzle_temperature": [ - "260" - ], - "temperature_vitrification": [ - "110" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "3" - ] + "type": "filament", + "name": "fdm_filament_asa", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp": ["105"], + "eng_plate_temp": ["105"], + "hot_plate_temp": ["105"], + "cool_plate_temp_initial_layer": ["105"], + "eng_plate_temp_initial_layer": ["105"], + "hot_plate_temp_initial_layer": ["105"], + "slow_down_for_layer_cooling": ["1"], + "close_fan_the_first_x_layers": ["3"], + "fan_cooling_layer_time": ["35"], + "filament_max_volumetric_speed": ["28.6"], + "filament_type": ["ASA"], + "filament_density": ["1.04"], + "filament_cost": ["20"], + "nozzle_temperature_initial_layer": ["260"], + "reduce_fan_stop_start_freq": ["1"], + "fan_max_speed": ["80"], + "fan_min_speed": ["10"], + "overhang_fan_threshold": ["25%"], + "overhang_fan_speed": ["80"], + "nozzle_temperature": ["260"], + "temperature_vitrification": ["110"], + "nozzle_temperature_range_low": ["240"], + "nozzle_temperature_range_high": ["270"], + "slow_down_min_speed": ["10"], + "slow_down_layer_time": ["3"] } diff --git a/resources/profiles/Flashforge/filament/fdm_filament_common.json b/resources/profiles/Flashforge/filament/fdm_filament_common.json index 64d35cdb7c..90f6b18573 100644 --- a/resources/profiles/Flashforge/filament/fdm_filament_common.json +++ b/resources/profiles/Flashforge/filament/fdm_filament_common.json @@ -1,144 +1,52 @@ { - "type": "filament", - "name": "fdm_filament_common", - "from": "system", - "instantiation": "false", - "cool_plate_temp" : [ - "60" - ], - "eng_plate_temp" : [ - "60" - ], - "hot_plate_temp" : [ - "60" - ], - "textured_plate_temp" : [ - "60" - ], - "cool_plate_temp_initial_layer" : [ - "60" - ], - "eng_plate_temp_initial_layer" : [ - "60" - ], - "hot_plate_temp_initial_layer" : [ - "60" - ], - "textured_plate_temp_initial_layer" : [ - "60" - ], - "overhang_fan_threshold": [ - "95%" - ], - "overhang_fan_speed": [ - "100" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "filament_flow_ratio": [ - "1" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "fan_cooling_layer_time": [ - "60" - ], - "filament_cost": [ - "0" - ], - "filament_density": [ - "0" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_max_volumetric_speed": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "bed_type": [ - "Textured PEI Plate" - ], - "nozzle_temperature_initial_layer": [ - "200" - ], - "full_fan_speed_layer": [ - "0" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "35" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "8" - ], - "filament_start_gcode": [ - "; Filament gcode\n" - ], - "nozzle_temperature": [ - "200" - ], - "temperature_vitrification": [ - "100" - ] + "type": "filament", + "name": "fdm_filament_common", + "from": "system", + "instantiation": "false", + "cool_plate_temp": ["60"], + "eng_plate_temp": ["60"], + "hot_plate_temp": ["60"], + "textured_plate_temp": ["60"], + "cool_plate_temp_initial_layer": ["60"], + "eng_plate_temp_initial_layer": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "textured_plate_temp_initial_layer": ["60"], + "overhang_fan_threshold": ["95%"], + "overhang_fan_speed": ["100"], + "slow_down_for_layer_cooling": ["1"], + "close_fan_the_first_x_layers": ["3"], + "filament_end_gcode": ["; filament end gcode \n"], + "filament_flow_ratio": ["1"], + "reduce_fan_stop_start_freq": ["0"], + "fan_cooling_layer_time": ["60"], + "filament_cost": ["0"], + "filament_density": ["0"], + "filament_deretraction_speed": ["nil"], + "filament_diameter": ["1.75"], + "filament_max_volumetric_speed": ["0"], + "filament_minimal_purge_on_wipe_tower": ["15"], + "filament_retraction_minimum_travel": ["nil"], + "filament_retract_before_wipe": ["nil"], + "filament_retract_when_changing_layer": ["nil"], + "filament_retraction_length": ["nil"], + "filament_z_hop": ["nil"], + "filament_z_hop_types": ["nil"], + "filament_retract_restart_extra": ["nil"], + "filament_retraction_speed": ["nil"], + "filament_settings_id": [""], + "filament_soluble": ["0"], + "filament_type": ["PLA"], + "filament_vendor": ["Generic"], + "filament_wipe": ["nil"], + "filament_wipe_distance": ["nil"], + "bed_type": ["Textured PEI Plate"], + "nozzle_temperature_initial_layer": ["200"], + "full_fan_speed_layer": ["0"], + "fan_max_speed": ["100"], + "fan_min_speed": ["35"], + "slow_down_min_speed": ["10"], + "slow_down_layer_time": ["8"], + "filament_start_gcode": ["; Filament gcode\n"], + "nozzle_temperature": ["200"], + "temperature_vitrification": ["100"] } diff --git a/resources/profiles/Flashforge/filament/fdm_filament_pet.json b/resources/profiles/Flashforge/filament/fdm_filament_pet.json index 0c65253151..2d09b606ab 100644 --- a/resources/profiles/Flashforge/filament/fdm_filament_pet.json +++ b/resources/profiles/Flashforge/filament/fdm_filament_pet.json @@ -1,82 +1,32 @@ { - "type": "filament", - "name": "fdm_filament_pet", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "85" - ], - "eng_plate_temp" : [ - "85" - ], - "hot_plate_temp" : [ - "85" - ], - "textured_plate_temp" : [ - "85" - ], - "cool_plate_temp_initial_layer" : [ - "85" - ], - "eng_plate_temp_initial_layer" : [ - "85" - ], - "hot_plate_temp_initial_layer" : [ - "85" - ], - "textured_plate_temp_initial_layer" : [ - "85" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "15" - ], - "filament_max_volumetric_speed": [ - "0" - ], - "filament_type": [ - "PETG" - ], - "filament_density": [ - "1.27" - ], - "filament_cost": [ - "30" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "40" - ], - "fan_min_speed": [ - "20" - ], - "overhang_fan_speed": [ - "50" - ], - "nozzle_temperature": [ - "235" - ], - "temperature_vitrification": [ - "80" - ], - "nozzle_temperature_range_low": [ - "235" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] + "type": "filament", + "name": "fdm_filament_pet", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp": ["85"], + "eng_plate_temp": ["85"], + "hot_plate_temp": ["85"], + "textured_plate_temp": ["85"], + "cool_plate_temp_initial_layer": ["85"], + "eng_plate_temp_initial_layer": ["85"], + "hot_plate_temp_initial_layer": ["85"], + "textured_plate_temp_initial_layer": ["85"], + "slow_down_for_layer_cooling": ["1"], + "close_fan_the_first_x_layers": ["3"], + "fan_cooling_layer_time": ["15"], + "filament_max_volumetric_speed": ["0"], + "filament_type": ["PETG"], + "filament_density": ["1.27"], + "filament_cost": ["30"], + "nozzle_temperature_initial_layer": ["240"], + "reduce_fan_stop_start_freq": ["1"], + "fan_max_speed": ["40"], + "fan_min_speed": ["20"], + "overhang_fan_speed": ["50"], + "nozzle_temperature": ["235"], + "temperature_vitrification": ["80"], + "nozzle_temperature_range_low": ["235"], + "nozzle_temperature_range_high": ["240"], + "filament_start_gcode": ["; filament start gcode\n"] } diff --git a/resources/profiles/Flashforge/filament/fdm_filament_pla.json b/resources/profiles/Flashforge/filament/fdm_filament_pla.json index 1111af5b8d..053acaec52 100644 --- a/resources/profiles/Flashforge/filament/fdm_filament_pla.json +++ b/resources/profiles/Flashforge/filament/fdm_filament_pla.json @@ -1,91 +1,35 @@ { - "type": "filament", - "name": "fdm_filament_pla", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "fan_cooling_layer_time": [ - "100" - ], - "filament_max_volumetric_speed": [ - "0" - ], - "filament_type": [ - "PLA" - ], - "filament_density": [ - "1.24" - ], - "filament_cost": [ - "20" - ], - "cool_plate_temp" : [ - "60" - ], - "eng_plate_temp" : [ - "60" - ], - "hot_plate_temp" : [ - "60" - ], - "textured_plate_temp" : [ - "60" - ], - "cool_plate_temp_initial_layer" : [ - "55" - ], - "eng_plate_temp_initial_layer" : [ - "55" - ], - "hot_plate_temp_initial_layer" : [ - "55" - ], - "textured_plate_temp_initial_layer" : [ - "55" - ], - "nozzle_temperature_initial_layer": [ - "205" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "nozzle_temperature": [ - "210" - ], - "temperature_vitrification": [ - "60" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "nozzle_temperature_range_high": [ - "210" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "4" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] + "type": "filament", + "name": "fdm_filament_pla", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "fan_cooling_layer_time": ["100"], + "filament_max_volumetric_speed": ["0"], + "filament_type": ["PLA"], + "filament_density": ["1.24"], + "filament_cost": ["20"], + "cool_plate_temp": ["60"], + "eng_plate_temp": ["60"], + "hot_plate_temp": ["60"], + "textured_plate_temp": ["60"], + "cool_plate_temp_initial_layer": ["55"], + "eng_plate_temp_initial_layer": ["55"], + "hot_plate_temp_initial_layer": ["55"], + "textured_plate_temp_initial_layer": ["55"], + "nozzle_temperature_initial_layer": ["205"], + "reduce_fan_stop_start_freq": ["1"], + "slow_down_for_layer_cooling": ["1"], + "fan_max_speed": ["100"], + "fan_min_speed": ["100"], + "overhang_fan_speed": ["100"], + "overhang_fan_threshold": ["50%"], + "close_fan_the_first_x_layers": ["1"], + "nozzle_temperature": ["210"], + "temperature_vitrification": ["60"], + "nozzle_temperature_range_low": ["190"], + "nozzle_temperature_range_high": ["210"], + "slow_down_min_speed": ["10"], + "slow_down_layer_time": ["4"], + "filament_start_gcode": ["; filament start gcode\n"] } diff --git a/resources/profiles/Flashforge/filament/fdm_filament_tpu.json b/resources/profiles/Flashforge/filament/fdm_filament_tpu.json index d5cc57fbcc..7507a519c4 100644 --- a/resources/profiles/Flashforge/filament/fdm_filament_tpu.json +++ b/resources/profiles/Flashforge/filament/fdm_filament_tpu.json @@ -1,82 +1,32 @@ { - "type": "filament", - "name": "fdm_filament_tpu", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "30" - ], - "eng_plate_temp" : [ - "30" - ], - "hot_plate_temp" : [ - "35" - ], - "cool_plate_temp_initial_layer" : [ - "30" - ], - "eng_plate_temp_initial_layer" : [ - "30" - ], - "hot_plate_temp_initial_layer" : [ - "35" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_max_volumetric_speed": [ - "15" - ], - "filament_type": [ - "TPU" - ], - "filament_density": [ - "1.24" - ], - "filament_cost": [ - "20" - ], - "filament_retraction_length": [ - "0.4" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "overhang_fan_speed": [ - "100" - ], - "additional_cooling_fan_speed": [ - "70" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "nozzle_temperature": [ - "240" - ], - "temperature_vitrification": [ - "60" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] + "type": "filament", + "name": "fdm_filament_tpu", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp": ["30"], + "eng_plate_temp": ["30"], + "hot_plate_temp": ["35"], + "cool_plate_temp_initial_layer": ["30"], + "eng_plate_temp_initial_layer": ["30"], + "hot_plate_temp_initial_layer": ["35"], + "fan_cooling_layer_time": ["100"], + "filament_max_volumetric_speed": ["15"], + "filament_type": ["TPU"], + "filament_density": ["1.24"], + "filament_cost": ["20"], + "filament_retraction_length": ["0.4"], + "nozzle_temperature_initial_layer": ["240"], + "reduce_fan_stop_start_freq": ["1"], + "slow_down_for_layer_cooling": ["1"], + "fan_max_speed": ["100"], + "fan_min_speed": ["100"], + "overhang_fan_speed": ["100"], + "additional_cooling_fan_speed": ["70"], + "close_fan_the_first_x_layers": ["1"], + "nozzle_temperature": ["240"], + "temperature_vitrification": ["60"], + "nozzle_temperature_range_low": ["200"], + "nozzle_temperature_range_high": ["250"], + "filament_start_gcode": ["; filament start gcode\n"] } diff --git a/resources/profiles/Flashforge/machine/FlashForge AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/machine/FlashForge AD5X 0.25 nozzle.json index 44211143c7..121167183f 100644 --- a/resources/profiles/Flashforge/machine/FlashForge AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/machine/FlashForge AD5X 0.25 nozzle.json @@ -1,233 +1,125 @@ { - "type": "machine", - "name": "Flashforge AD5X 0.25 nozzle", - "inherits": "Flashforge Adventurer 5M 0.25 Nozzle", - "from": "system", - "setting_id": "GM006", - "instantiation": "true", - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": [ - "0x0" - ], - "bed_mesh_max": "99999,99999", - "bed_mesh_min": "-99999,-99999", - "bed_mesh_probe_distance": "50,50", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "default_filament_profile": [ - "Flashforge Generic PLA" - ], - "default_print_profile": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "deretraction_speed": [ - "45" - ], - "disable_m73": "0", - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "130", - "extruder_clearance_height_to_rod": "26", - "extruder_clearance_radius": "58", - "extruder_colour": [ - "#FCE94F" - ], - "extruder_offset": [ - "0x0" - ], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "gcode_flavor": "klipper", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "is_custom_defined": "0", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "long_retractions_when_cut": [ - "0" - ], - "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", - "machine_load_filament_time": "39", - "machine_max_acceleration_e": [ - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "20000", - "20000" - ], - "machine_max_acceleration_retracting": [ - "5000", - "5000" - ], - "machine_max_acceleration_travel": [ - "20000", - "20000" - ], - "machine_max_acceleration_x": [ - "20000", - "20000" - ], - "machine_max_acceleration_y": [ - "20000", - "20000" - ], - "machine_max_acceleration_z": [ - "500", - "500" - ], - "machine_max_jerk_e": [ - "2.5", - "2.5" - ], - "machine_max_jerk_x": [ - "9", - "9" - ], - "machine_max_jerk_y": [ - "9", - "9" - ], - "machine_max_jerk_z": [ - "3", - "3" - ], - "machine_max_speed_e": [ - "30", - "30" - ], - "machine_max_speed_x": [ - "600", - "600" - ], - "machine_max_speed_y": [ - "600", - "600" - ], - "machine_max_speed_z": [ - "20", - "20" - ], - "machine_min_extruding_rate": [ - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0" - ], - "machine_pause_gcode": "M25", - "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X50 Y220 Z0.25 F4800\nG1 X70 E1.8 F900\nG1 X200 E6 F1800\nG0 Y219.6\nG1 X130 E3 F1800\nG92 E0", - "machine_tool_change_time": "0", - "machine_unload_filament_time": "39", - "manual_filament_change": "0", - "max_layer_height": [ - "0.14" - ], - "min_layer_height": [ - "0.08" - ], - "nozzle_diameter": [ - "0.25" - ], - "nozzle_height": "2.5", - "nozzle_hrc": "0", - "nozzle_type": "stainless_steel", - "nozzle_volume": "0", - "parking_pos_retraction": "0", - "pellet_modded_printer": "0", - "preferred_orientation": "0", - "printable_area": [ - "0x0", - "220x0", - "220x220", - "0x220" - ], - "printable_height": "220", - "printer_model": "Flashforge AD5X", - "printer_notes": "", - "printer_settings_id": "FlashForge AD5X 0.25 nozzle", - "printer_structure": "undefine", - "printer_technology": "FFF", - "printer_variant": "0.25", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": [ - "100%" - ], - "retract_length_toolchange": [ - "5" - ], - "retract_lift_above": [ - "0" - ], - "retract_lift_below": [ - "0" - ], - "retract_lift_enforce": [ - "All Surfaces" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "-3" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_distances_when_cut": [ - "18" - ], - "retraction_length": [ - "1" - ], - "retraction_minimum_travel": [ - "1" - ], - "retraction_speed": [ - "45" - ], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "1", - "template_custom_gcode": "", - "thumbnails": "140x110/PNG", - "thumbnails_format": "PNG", - "time_cost": "0", - "time_lapse_gcode": "", - "travel_slope": [ - "3" - ], - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "version": "2.1.1.0", - "wipe": [ - "1" - ], - "wipe_distance": [ - "2" - ], - "z_hop": [ - "0.3" - ], - "z_hop_types": [ - "Auto Lift" - ], - "z_offset": "0" + "type": "machine", + "name": "Flashforge AD5X 0.25 nozzle", + "inherits": "Flashforge Adventurer 5M 0.25 Nozzle", + "from": "system", + "setting_id": "GM006", + "instantiation": "true", + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": ["0x0"], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": ["Flashforge Generic PLA"], + "default_print_profile": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", + "deretraction_speed": ["45"], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "130", + "extruder_clearance_height_to_rod": "26", + "extruder_clearance_radius": "58", + "extruder_colour": ["#FCE94F"], + "extruder_offset": ["0x0"], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "is_custom_defined": "0", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": ["0"], + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", + "machine_load_filament_time": "39", + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["5000", "5000"], + "machine_max_acceleration_travel": ["20000", "20000"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["500", "500"], + "machine_max_jerk_e": ["2.5", "2.5"], + "machine_max_jerk_x": ["9", "9"], + "machine_max_jerk_y": ["9", "9"], + "machine_max_jerk_z": ["3", "3"], + "machine_max_speed_e": ["30", "30"], + "machine_max_speed_x": ["600", "600"], + "machine_max_speed_y": ["600", "600"], + "machine_max_speed_z": ["20", "20"], + "machine_min_extruding_rate": ["0", "0"], + "machine_min_travel_rate": ["0", "0"], + "machine_pause_gcode": "M25", + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X50 Y220 Z0.25 F4800\nG1 X70 E1.8 F900\nG1 X200 E6 F1800\nG0 Y219.6\nG1 X130 E3 F1800\nG92 E0", + "machine_tool_change_time": "0", + "machine_unload_filament_time": "39", + "manual_filament_change": "0", + "max_layer_height": ["0.14"], + "min_layer_height": ["0.08"], + "nozzle_diameter": ["0.25"], + "nozzle_height": "2.5", + "nozzle_hrc": "0", + "nozzle_type": "stainless_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "pellet_modded_printer": "0", + "preferred_orientation": "0", + "printable_area": ["0x0", "220x0", "220x220", "0x220"], + "printable_height": "220", + "printer_model": "Flashforge AD5X", + "printer_notes": "", + "printer_settings_id": "FlashForge AD5X 0.25 nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.25", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": ["100%"], + "retract_length_toolchange": ["5"], + "retract_lift_above": ["0"], + "retract_lift_below": ["0"], + "retract_lift_enforce": ["All Surfaces"], + "retract_restart_extra": ["0"], + "retract_restart_extra_toolchange": ["-3"], + "retract_when_changing_layer": ["1"], + "retraction_distances_when_cut": ["18"], + "retraction_length": ["1"], + "retraction_minimum_travel": ["1"], + "retraction_speed": ["45"], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "1", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "travel_slope": ["3"], + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "2.1.1.0", + "wipe": ["1"], + "wipe_distance": ["2"], + "z_hop": ["0.3"], + "z_hop_types": ["Auto Lift"], + "z_offset": "0" } diff --git a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.4 nozzle.json index f33c6e5339..2e1e26e6d0 100644 --- a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.4 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.4 nozzle.json @@ -1,233 +1,125 @@ { - "type": "machine", - "name": "Flashforge AD5X 0.4 nozzle", - "inherits": "Flashforge Adventurer 5M Pro 0.4 Nozzle", - "from": "system", - "setting_id": "GM001", - "instantiation": "true", - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": [ - "0x0" - ], - "bed_mesh_max": "99999,99999", - "bed_mesh_min": "-99999,-99999", - "bed_mesh_probe_distance": "50,50", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "default_filament_profile": [ - "Flashforge Generic PLA" - ], - "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", - "deretraction_speed": [ - "45" - ], - "disable_m73": "0", - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "130", - "extruder_clearance_height_to_rod": "26", - "extruder_clearance_radius": "58", - "extruder_colour": [ - "#FCE94F" - ], - "extruder_offset": [ - "0x0" - ], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "gcode_flavor": "klipper", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "is_custom_defined": "0", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "long_retractions_when_cut": [ - "0" - ], - "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", - "machine_load_filament_time": "39", - "machine_max_acceleration_e": [ - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "20000", - "20000" - ], - "machine_max_acceleration_retracting": [ - "5000", - "5000" - ], - "machine_max_acceleration_travel": [ - "20000", - "20000" - ], - "machine_max_acceleration_x": [ - "20000", - "20000" - ], - "machine_max_acceleration_y": [ - "20000", - "20000" - ], - "machine_max_acceleration_z": [ - "500", - "500" - ], - "machine_max_jerk_e": [ - "2.5", - "2.5" - ], - "machine_max_jerk_x": [ - "9", - "9" - ], - "machine_max_jerk_y": [ - "9", - "9" - ], - "machine_max_jerk_z": [ - "3", - "3" - ], - "machine_max_speed_e": [ - "30", - "30" - ], - "machine_max_speed_x": [ - "600", - "600" - ], - "machine_max_speed_y": [ - "600", - "600" - ], - "machine_max_speed_z": [ - "20", - "20" - ], - "machine_min_extruding_rate": [ - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0" - ], - "machine_pause_gcode": "M25", - "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X50 Y220 Z0.25 F4800\nG1 X70 E3 F900\nG1 X200 E10 F1800\nG0 Y219.6\nG1 X130 E5 F1800\nG92 E0", - "machine_tool_change_time": "0", - "machine_unload_filament_time": "39", - "manual_filament_change": "0", - "max_layer_height": [ - "0.28" - ], - "min_layer_height": [ - "0.08" - ], - "nozzle_diameter": [ - "0.4" - ], - "nozzle_height": "4", - "nozzle_hrc": "0", - "nozzle_type": "hardened_steel", - "nozzle_volume": "0", - "parking_pos_retraction": "0", - "pellet_modded_printer": "0", - "preferred_orientation": "0", - "printable_area": [ - "0x0", - "220x0", - "220x220", - "0x220" - ], - "printable_height": "220", - "printer_model": "Flashforge AD5X", - "printer_notes": "", - "printer_settings_id": "Flashforge AD5X 0.4 nozzle", - "printer_structure": "undefine", - "printer_technology": "FFF", - "printer_variant": "0.4", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": [ - "100%" - ], - "retract_length_toolchange": [ - "5" - ], - "retract_lift_above": [ - "0" - ], - "retract_lift_below": [ - "0" - ], - "retract_lift_enforce": [ - "All Surfaces" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "-3" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_distances_when_cut": [ - "18" - ], - "retraction_length": [ - "2" - ], - "retraction_minimum_travel": [ - "1" - ], - "retraction_speed": [ - "45" - ], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "1", - "template_custom_gcode": "", - "thumbnails": "140x110/PNG", - "thumbnails_format": "PNG", - "time_cost": "0", - "time_lapse_gcode": "", - "travel_slope": [ - "3" - ], - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "version": "2.1.1.0", - "wipe": [ - "1" - ], - "wipe_distance": [ - "2" - ], - "z_hop": [ - "0.4" - ], - "z_hop_types": [ - "Auto Lift" - ], - "z_offset": "0" + "type": "machine", + "name": "Flashforge AD5X 0.4 nozzle", + "inherits": "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "from": "system", + "setting_id": "GM001", + "instantiation": "true", + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": ["0x0"], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": ["Flashforge Generic PLA"], + "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "deretraction_speed": ["45"], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "130", + "extruder_clearance_height_to_rod": "26", + "extruder_clearance_radius": "58", + "extruder_colour": ["#FCE94F"], + "extruder_offset": ["0x0"], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "is_custom_defined": "0", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": ["0"], + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", + "machine_load_filament_time": "39", + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["5000", "5000"], + "machine_max_acceleration_travel": ["20000", "20000"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["500", "500"], + "machine_max_jerk_e": ["2.5", "2.5"], + "machine_max_jerk_x": ["9", "9"], + "machine_max_jerk_y": ["9", "9"], + "machine_max_jerk_z": ["3", "3"], + "machine_max_speed_e": ["30", "30"], + "machine_max_speed_x": ["600", "600"], + "machine_max_speed_y": ["600", "600"], + "machine_max_speed_z": ["20", "20"], + "machine_min_extruding_rate": ["0", "0"], + "machine_min_travel_rate": ["0", "0"], + "machine_pause_gcode": "M25", + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X50 Y220 Z0.25 F4800\nG1 X70 E3 F900\nG1 X200 E10 F1800\nG0 Y219.6\nG1 X130 E5 F1800\nG92 E0", + "machine_tool_change_time": "0", + "machine_unload_filament_time": "39", + "manual_filament_change": "0", + "max_layer_height": ["0.28"], + "min_layer_height": ["0.08"], + "nozzle_diameter": ["0.4"], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "pellet_modded_printer": "0", + "preferred_orientation": "0", + "printable_area": ["0x0", "220x0", "220x220", "0x220"], + "printable_height": "220", + "printer_model": "Flashforge AD5X", + "printer_notes": "", + "printer_settings_id": "Flashforge AD5X 0.4 nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.4", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": ["100%"], + "retract_length_toolchange": ["5"], + "retract_lift_above": ["0"], + "retract_lift_below": ["0"], + "retract_lift_enforce": ["All Surfaces"], + "retract_restart_extra": ["0"], + "retract_restart_extra_toolchange": ["-3"], + "retract_when_changing_layer": ["1"], + "retraction_distances_when_cut": ["18"], + "retraction_length": ["2"], + "retraction_minimum_travel": ["1"], + "retraction_speed": ["45"], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "1", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "travel_slope": ["3"], + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "2.1.1.0", + "wipe": ["1"], + "wipe_distance": ["2"], + "z_hop": ["0.4"], + "z_hop_types": ["Auto Lift"], + "z_offset": "0" } diff --git a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.6 nozzle.json index 74b63fbe01..307911a9de 100644 --- a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.6 nozzle.json @@ -1,233 +1,125 @@ { - "type": "machine", - "name": "Flashforge AD5X 0.6 nozzle", - "inherits": "Flashforge Adventurer 5M Pro 0.6 Nozzle", - "from": "system", - "setting_id": "GM001", - "instantiation": "true", - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": [ - "0x0" - ], - "bed_mesh_max": "99999,99999", - "bed_mesh_min": "-99999,-99999", - "bed_mesh_probe_distance": "50,50", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "default_filament_profile": [ - "Flashforge Generic PLA" - ], - "default_print_profile": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", - "deretraction_speed": [ - "35" - ], - "disable_m73": "0", - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "130", - "extruder_clearance_height_to_rod": "26", - "extruder_clearance_radius": "58", - "extruder_colour": [ - "#FCE94F" - ], - "extruder_offset": [ - "0x0" - ], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "gcode_flavor": "klipper", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "is_custom_defined": "0", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "long_retractions_when_cut": [ - "0" - ], - "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", - "machine_load_filament_time": "39", - "machine_max_acceleration_e": [ - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "20000", - "20000" - ], - "machine_max_acceleration_retracting": [ - "5000", - "5000" - ], - "machine_max_acceleration_travel": [ - "20000", - "20000" - ], - "machine_max_acceleration_x": [ - "20000", - "20000" - ], - "machine_max_acceleration_y": [ - "20000", - "20000" - ], - "machine_max_acceleration_z": [ - "500", - "500" - ], - "machine_max_jerk_e": [ - "2.5", - "2.5" - ], - "machine_max_jerk_x": [ - "9", - "9" - ], - "machine_max_jerk_y": [ - "9", - "9" - ], - "machine_max_jerk_z": [ - "3", - "3" - ], - "machine_max_speed_e": [ - "35", - "30" - ], - "machine_max_speed_x": [ - "600", - "600" - ], - "machine_max_speed_y": [ - "600", - "600" - ], - "machine_max_speed_z": [ - "20", - "20" - ], - "machine_min_extruding_rate": [ - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0" - ], - "machine_pause_gcode": "M25", - "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X50 Y220 Z0.25 F4800\nG1 X70 E3 F900\nG1 X200 E10 F1800\nG0 Y219.6\nG1 X130 E5 F1800\nG92 E0", - "machine_tool_change_time": "0", - "machine_unload_filament_time": "39", - "manual_filament_change": "0", - "max_layer_height": [ - "0.42" - ], - "min_layer_height": [ - "0.15" - ], - "nozzle_diameter": [ - "0.6" - ], - "nozzle_height": "4", - "nozzle_hrc": "0", - "nozzle_type": "hardened_steel", - "nozzle_volume": "0", - "parking_pos_retraction": "0", - "pellet_modded_printer": "0", - "preferred_orientation": "0", - "printable_area": [ - "0x0", - "220x0", - "220x220", - "0x220" - ], - "printable_height": "220", - "printer_model": "Flashforge AD5X", - "printer_notes": "", - "printer_settings_id": "Flashforge AD5X 0.6 nozzle", - "printer_structure": "undefine", - "printer_technology": "FFF", - "printer_variant": "0.6", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": [ - "100%" - ], - "retract_length_toolchange": [ - "3" - ], - "retract_lift_above": [ - "0" - ], - "retract_lift_below": [ - "0" - ], - "retract_lift_enforce": [ - "All Surfaces" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "0" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_distances_when_cut": [ - "18" - ], - "retraction_length": [ - "1.4" - ], - "retraction_minimum_travel": [ - "1" - ], - "retraction_speed": [ - "35" - ], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "1", - "template_custom_gcode": "", - "thumbnails": "140x110/PNG", - "thumbnails_format": "PNG", - "time_cost": "0", - "time_lapse_gcode": "", - "travel_slope": [ - "3" - ], - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "version": "2.1.1.0", - "wipe": [ - "1" - ], - "wipe_distance": [ - "2" - ], - "z_hop": [ - "0.4" - ], - "z_hop_types": [ - "Auto Lift" - ], - "z_offset": "0" + "type": "machine", + "name": "Flashforge AD5X 0.6 nozzle", + "inherits": "Flashforge Adventurer 5M Pro 0.6 Nozzle", + "from": "system", + "setting_id": "GM001", + "instantiation": "true", + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": ["0x0"], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": ["Flashforge Generic PLA"], + "default_print_profile": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", + "deretraction_speed": ["35"], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "130", + "extruder_clearance_height_to_rod": "26", + "extruder_clearance_radius": "58", + "extruder_colour": ["#FCE94F"], + "extruder_offset": ["0x0"], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "is_custom_defined": "0", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": ["0"], + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", + "machine_load_filament_time": "39", + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["5000", "5000"], + "machine_max_acceleration_travel": ["20000", "20000"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["500", "500"], + "machine_max_jerk_e": ["2.5", "2.5"], + "machine_max_jerk_x": ["9", "9"], + "machine_max_jerk_y": ["9", "9"], + "machine_max_jerk_z": ["3", "3"], + "machine_max_speed_e": ["35", "30"], + "machine_max_speed_x": ["600", "600"], + "machine_max_speed_y": ["600", "600"], + "machine_max_speed_z": ["20", "20"], + "machine_min_extruding_rate": ["0", "0"], + "machine_min_travel_rate": ["0", "0"], + "machine_pause_gcode": "M25", + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X50 Y220 Z0.25 F4800\nG1 X70 E3 F900\nG1 X200 E10 F1800\nG0 Y219.6\nG1 X130 E5 F1800\nG92 E0", + "machine_tool_change_time": "0", + "machine_unload_filament_time": "39", + "manual_filament_change": "0", + "max_layer_height": ["0.42"], + "min_layer_height": ["0.15"], + "nozzle_diameter": ["0.6"], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "pellet_modded_printer": "0", + "preferred_orientation": "0", + "printable_area": ["0x0", "220x0", "220x220", "0x220"], + "printable_height": "220", + "printer_model": "Flashforge AD5X", + "printer_notes": "", + "printer_settings_id": "Flashforge AD5X 0.6 nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.6", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": ["100%"], + "retract_length_toolchange": ["3"], + "retract_lift_above": ["0"], + "retract_lift_below": ["0"], + "retract_lift_enforce": ["All Surfaces"], + "retract_restart_extra": ["0"], + "retract_restart_extra_toolchange": ["0"], + "retract_when_changing_layer": ["1"], + "retraction_distances_when_cut": ["18"], + "retraction_length": ["1.4"], + "retraction_minimum_travel": ["1"], + "retraction_speed": ["35"], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "1", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "travel_slope": ["3"], + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "2.1.1.0", + "wipe": ["1"], + "wipe_distance": ["2"], + "z_hop": ["0.4"], + "z_hop_types": ["Auto Lift"], + "z_offset": "0" } diff --git a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.8 nozzle.json index b17fe35803..30d39190eb 100644 --- a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.8 nozzle.json @@ -1,233 +1,125 @@ { - "type": "machine", - "name": "Flashforge AD5X 0.8 nozzle", - "inherits": "Flashforge Adventurer 5M Pro 0.8 Nozzle", - "from": "system", - "setting_id": "GM009", - "instantiation": "true", - "printer_model": "Flashforge AD5X", - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": [ - "0x0" - ], - "bed_mesh_max": "99999,99999", - "bed_mesh_min": "-99999,-99999", - "bed_mesh_probe_distance": "50,50", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "default_filament_profile": [ - "Flashforge Generic PLA" - ], - "default_print_profile": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", - "deretraction_speed": [ - "35" - ], - "disable_m73": "0", - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "130", - "extruder_clearance_height_to_rod": "26", - "extruder_clearance_radius": "58", - "extruder_colour": [ - "#FCE94F" - ], - "extruder_offset": [ - "0x0" - ], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "gcode_flavor": "klipper", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "is_custom_defined": "0", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "long_retractions_when_cut": [ - "0" - ], - "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", - "machine_load_filament_time": "39", - "machine_max_acceleration_e": [ - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "20000", - "20000" - ], - "machine_max_acceleration_retracting": [ - "5000", - "5000" - ], - "machine_max_acceleration_travel": [ - "20000", - "20000" - ], - "machine_max_acceleration_x": [ - "20000", - "20000" - ], - "machine_max_acceleration_y": [ - "20000", - "20000" - ], - "machine_max_acceleration_z": [ - "500", - "500" - ], - "machine_max_jerk_e": [ - "2.5", - "2.5" - ], - "machine_max_jerk_x": [ - "9", - "9" - ], - "machine_max_jerk_y": [ - "9", - "9" - ], - "machine_max_jerk_z": [ - "3", - "3" - ], - "machine_max_speed_e": [ - "30", - "30" - ], - "machine_max_speed_x": [ - "600", - "600" - ], - "machine_max_speed_y": [ - "600", - "600" - ], - "machine_max_speed_z": [ - "20", - "20" - ], - "machine_min_extruding_rate": [ - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0" - ], - "machine_pause_gcode": "M25", - "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X50 Y220 Z0.25 F4800\nG1 X70 E3 F900\nG1 X200 E10 F1800\nG0 Y219.6\nG1 X130 E5 F1800\nG92 E0", - "machine_tool_change_time": "0", - "machine_unload_filament_time": "39", - "manual_filament_change": "0", - "max_layer_height": [ - "0.56" - ], - "min_layer_height": [ - "0.24" - ], - "nozzle_diameter": [ - "0.8" - ], - "nozzle_height": "4", - "nozzle_hrc": "0", - "nozzle_type": "hardened_steel", - "nozzle_volume": "0", - "parking_pos_retraction": "0", - "pellet_modded_printer": "0", - "preferred_orientation": "0", - "printable_area": [ - "0x0", - "220x0", - "220x220", - "0x220" - ], - "printable_height": "220", - "printer_notes": "", - "printer_settings_id": "Flashforge AD5X 0.8 nozzle", - "printer_structure": "undefine", - "printer_technology": "FFF", - "printer_variant": "0.8", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": [ - "100%" - ], - "retract_length_toolchange": [ - "3" - ], - "retract_lift_above": [ - "0" - ], - "retract_lift_below": [ - "0" - ], - "retract_lift_enforce": [ - "All Surfaces" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "0" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_distances_when_cut": [ - "18" - ], - "retraction_length": [ - "1.5" - ], - "retraction_minimum_travel": [ - "2" - ], - "retraction_speed": [ - "35" - ], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "1", - "template_custom_gcode": "", - "thumbnails": "140x110/PNG", - "thumbnails_format": "PNG", - "time_cost": "0", - "time_lapse_gcode": "", - "travel_slope": [ - "3" - ], - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "version": "2.1.1.0", - "wipe": [ - "1" - ], - "wipe_distance": [ - "2" - ], - "z_hop": [ - "0.4" - ], - "z_hop_types": [ - "Auto Lift" - ], - "z_offset": "0" + "type": "machine", + "name": "Flashforge AD5X 0.8 nozzle", + "inherits": "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "from": "system", + "setting_id": "GM009", + "instantiation": "true", + "printer_model": "Flashforge AD5X", + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": ["0x0"], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": ["Flashforge Generic PLA"], + "default_print_profile": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", + "deretraction_speed": ["35"], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "130", + "extruder_clearance_height_to_rod": "26", + "extruder_clearance_radius": "58", + "extruder_colour": ["#FCE94F"], + "extruder_offset": ["0x0"], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "is_custom_defined": "0", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": ["0"], + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", + "machine_load_filament_time": "39", + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["5000", "5000"], + "machine_max_acceleration_travel": ["20000", "20000"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["500", "500"], + "machine_max_jerk_e": ["2.5", "2.5"], + "machine_max_jerk_x": ["9", "9"], + "machine_max_jerk_y": ["9", "9"], + "machine_max_jerk_z": ["3", "3"], + "machine_max_speed_e": ["30", "30"], + "machine_max_speed_x": ["600", "600"], + "machine_max_speed_y": ["600", "600"], + "machine_max_speed_z": ["20", "20"], + "machine_min_extruding_rate": ["0", "0"], + "machine_min_travel_rate": ["0", "0"], + "machine_pause_gcode": "M25", + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X50 Y220 Z0.25 F4800\nG1 X70 E3 F900\nG1 X200 E10 F1800\nG0 Y219.6\nG1 X130 E5 F1800\nG92 E0", + "machine_tool_change_time": "0", + "machine_unload_filament_time": "39", + "manual_filament_change": "0", + "max_layer_height": ["0.56"], + "min_layer_height": ["0.24"], + "nozzle_diameter": ["0.8"], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "pellet_modded_printer": "0", + "preferred_orientation": "0", + "printable_area": ["0x0", "220x0", "220x220", "0x220"], + "printable_height": "220", + "printer_notes": "", + "printer_settings_id": "Flashforge AD5X 0.8 nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.8", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": ["100%"], + "retract_length_toolchange": ["3"], + "retract_lift_above": ["0"], + "retract_lift_below": ["0"], + "retract_lift_enforce": ["All Surfaces"], + "retract_restart_extra": ["0"], + "retract_restart_extra_toolchange": ["0"], + "retract_when_changing_layer": ["1"], + "retraction_distances_when_cut": ["18"], + "retraction_length": ["1.5"], + "retraction_minimum_travel": ["2"], + "retraction_speed": ["35"], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "1", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "travel_slope": ["3"], + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "2.1.1.0", + "wipe": ["1"], + "wipe_distance": ["2"], + "z_hop": ["0.4"], + "z_hop_types": ["Auto Lift"], + "z_offset": "0" } diff --git a/resources/profiles/Flashforge/machine/Flashforge AD5X.json b/resources/profiles/Flashforge/machine/Flashforge AD5X.json index bbe5d692d8..0875a00fda 100644 --- a/resources/profiles/Flashforge/machine/Flashforge AD5X.json +++ b/resources/profiles/Flashforge/machine/Flashforge AD5X.json @@ -1,14 +1,13 @@ { - "type": "machine_model", - "name": "Flashforge AD5X", - "model_id": "Flashforge-AD5X", - "nozzle_diameter": "0.25;0.4;0.6;0.8", - "machine_tech": "FFF", - "family": "Flashforge", - "bed_model": "flashforge_adventurer5m_series_buildplate_model.STL", - "bed_texture": "flashforge_ad5x_buildplate_texture.png", - "hotend_model": "flashforge_adventurer_5m_series_hotend.STL", - "url":"", - "default_materials": "Flashforge Generic ABS;Flashforge Generic PETG;Flashforge Generic PLA" - } - \ No newline at end of file + "type": "machine_model", + "name": "Flashforge AD5X", + "model_id": "Flashforge-AD5X", + "nozzle_diameter": "0.25;0.4;0.6;0.8", + "machine_tech": "FFF", + "family": "Flashforge", + "bed_model": "flashforge_adventurer5m_series_buildplate_model.STL", + "bed_texture": "flashforge_ad5x_buildplate_texture.png", + "hotend_model": "flashforge_adventurer_5m_series_hotend.STL", + "url": "", + "default_materials": "Flashforge Generic ABS;Flashforge Generic PETG;Flashforge Generic PLA" +} diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series 0.4 nozzle.json index d45dacd016..deb1d52b13 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series 0.4 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series 0.4 nozzle.json @@ -1,14 +1,14 @@ { - "type": "machine", - "setting_id": "GM001", - "name": "Flashforge Adventurer 3 Series 0.4 Nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_adventurer3_common", - "printer_model": "Flashforge Adventurer 3 Series", - "default_print_profile": "0.20mm Standard @Flashforge AD3 0.4 Nozzle", - "nozzle_diameter": [ "0.4", "0.4" ], - "printer_variant": "0.4", - "max_layer_height": [ "0.4", "0.4" ], - "min_layer_height": [ "0.01", "0.01" ] + "type": "machine", + "setting_id": "GM001", + "name": "Flashforge Adventurer 3 Series 0.4 Nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_adventurer3_common", + "printer_model": "Flashforge Adventurer 3 Series", + "default_print_profile": "0.20mm Standard @Flashforge AD3 0.4 Nozzle", + "nozzle_diameter": ["0.4", "0.4"], + "printer_variant": "0.4", + "max_layer_height": ["0.4", "0.4"], + "min_layer_height": ["0.01", "0.01"] } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series 0.6 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series 0.6 nozzle.json index 39153a5aab..cc45649dde 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series 0.6 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series 0.6 nozzle.json @@ -1,14 +1,14 @@ { - "type": "machine", - "setting_id": "GM001", - "name": "Flashforge Adventurer 3 Series 0.6 Nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_adventurer3_common", - "printer_model": "Flashforge Adventurer 3 Series", - "default_print_profile": "0.20mm Standard @Flashforge AD3 0.6 Nozzle", - "nozzle_diameter": [ "0.6", "0.6" ], - "printer_variant": "0.6", - "max_layer_height": [ "0.6", "0.6" ], - "min_layer_height": [ "0.01", "0.01" ] + "type": "machine", + "setting_id": "GM001", + "name": "Flashforge Adventurer 3 Series 0.6 Nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_adventurer3_common", + "printer_model": "Flashforge Adventurer 3 Series", + "default_print_profile": "0.20mm Standard @Flashforge AD3 0.6 Nozzle", + "nozzle_diameter": ["0.6", "0.6"], + "printer_variant": "0.6", + "max_layer_height": ["0.6", "0.6"], + "min_layer_height": ["0.01", "0.01"] } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series.json index 0c5096f0ed..ef1159312a 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 3 Series.json @@ -1,13 +1,13 @@ { - "type": "machine_model", - "name": "Flashforge Adventurer 3 Series", - "model_id": "Flashforge-Adventurer-3Series", - "nozzle_diameter": "0.4;0.6", - "machine_tech": "FFF", - "family": "Flashforge", - "bed_model": "flashforge_adventurer3_series_buildplate_model.STL", - "bed_texture": "flashforge_adventurer3_buildplate_texture.png", - "default_bed_type": "Textured PEI Plate", - "hotend_model": "", - "default_materials": "Flashforge ABS;Flashforge PETG;Flashforge PLA" + "type": "machine_model", + "name": "Flashforge Adventurer 3 Series", + "model_id": "Flashforge-Adventurer-3Series", + "nozzle_diameter": "0.4;0.6", + "machine_tech": "FFF", + "family": "Flashforge", + "bed_model": "flashforge_adventurer3_series_buildplate_model.STL", + "bed_texture": "flashforge_adventurer3_buildplate_texture.png", + "default_bed_type": "Textured PEI Plate", + "hotend_model": "", + "default_materials": "Flashforge ABS;Flashforge PETG;Flashforge PLA" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.25 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.25 Nozzle.json index 02d4534ca7..79ed5bcec5 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.25 Nozzle.json @@ -1,18 +1,18 @@ { - "type": "machine", - "setting_id": "GM006", - "name": "Flashforge Adventurer 5M 0.25 Nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_adventurer5m_common", - "printer_model": "Flashforge Adventurer 5M", - "default_print_profile": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "nozzle_diameter": [ "0.25" ], - "printer_variant": "0.25", - "max_layer_height": [ "0.14" ], - "min_layer_height": [ "0.08" ], - "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG90 E0\nM83\nG1 E-1 F600\nG1 E8 F300\nG1 X85 Y110 Z0.2 F1200\nG1 X-110 E15 F2400\nG1 Y0 E4 F2400\nG1 X-109.6 F2400\nG1 Y110 E5 F2400\nG92 E0", - "retraction_length": [ "1" ], - "z_hop": [ "0.3" ], - "nozzle_type": "stainless_steel" -} \ No newline at end of file + "type": "machine", + "setting_id": "GM006", + "name": "Flashforge Adventurer 5M 0.25 Nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_adventurer5m_common", + "printer_model": "Flashforge Adventurer 5M", + "default_print_profile": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", + "nozzle_diameter": ["0.25"], + "printer_variant": "0.25", + "max_layer_height": ["0.14"], + "min_layer_height": ["0.08"], + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG90 E0\nM83\nG1 E-1 F600\nG1 E8 F300\nG1 X85 Y110 Z0.2 F1200\nG1 X-110 E15 F2400\nG1 Y0 E4 F2400\nG1 X-109.6 F2400\nG1 Y110 E5 F2400\nG92 E0", + "retraction_length": ["1"], + "z_hop": ["0.3"], + "nozzle_type": "stainless_steel" +} diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.4 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.4 Nozzle.json index 5d8d6652d6..b182693c4e 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.4 Nozzle.json @@ -1,16 +1,16 @@ { - "type": "machine", - "setting_id": "GM001", - "name": "Flashforge Adventurer 5M 0.4 Nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_adventurer5m_common", - "printer_model": "Flashforge Adventurer 5M", - "default_print_profile": "0.20mm Standard @Flashforge AD5M 0.4 Nozzle", - "nozzle_diameter": [ "0.4" ], - "printer_variant": "0.4", - "max_layer_height": [ "0.28" ], - "min_layer_height": [ "0.08" ], - "retraction_length": [ "0.8" ], - "nozzle_type": "stainless_steel" + "type": "machine", + "setting_id": "GM001", + "name": "Flashforge Adventurer 5M 0.4 Nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_adventurer5m_common", + "printer_model": "Flashforge Adventurer 5M", + "default_print_profile": "0.20mm Standard @Flashforge AD5M 0.4 Nozzle", + "nozzle_diameter": ["0.4"], + "printer_variant": "0.4", + "max_layer_height": ["0.28"], + "min_layer_height": ["0.08"], + "retraction_length": ["0.8"], + "nozzle_type": "stainless_steel" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.6 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.6 Nozzle.json index f7aeea7f53..c9eb2f8c1d 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.6 Nozzle.json @@ -1,18 +1,16 @@ { - "type": "machine", - "setting_id": "GM001", - "name": "Flashforge Adventurer 5M 0.6 Nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_adventurer5m_common", - "printer_model": "Flashforge Adventurer 5M", - "default_print_profile": "0.30mm Standard @Flashforge AD5M 0.6 Nozzle", - "nozzle_diameter": [ "0.6" ], - "printer_variant": "0.6", - "max_layer_height": [ "0.42" ], - "min_layer_height": [ "0.15" ], - "retraction_length": [ "1.2" ], - "nozzle_type": "hardened_steel" - - + "type": "machine", + "setting_id": "GM001", + "name": "Flashforge Adventurer 5M 0.6 Nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_adventurer5m_common", + "printer_model": "Flashforge Adventurer 5M", + "default_print_profile": "0.30mm Standard @Flashforge AD5M 0.6 Nozzle", + "nozzle_diameter": ["0.6"], + "printer_variant": "0.6", + "max_layer_height": ["0.42"], + "min_layer_height": ["0.15"], + "retraction_length": ["1.2"], + "nozzle_type": "hardened_steel" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.8 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.8 Nozzle.json index 002249e4c8..ec46d07d1f 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.8 Nozzle.json @@ -1,18 +1,18 @@ { - "type": "machine", - "setting_id": "GM005", - "name": "Flashforge Adventurer 5M 0.8 Nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_adventurer5m_common", - "printer_model": "Flashforge Adventurer 5M", - "default_print_profile": "0.40mm Standard @Flashforge AD5M 0.8 Nozzle", - "nozzle_diameter": [ "0.8" ], - "printer_variant": "0.8", - "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG1 E-1.5 F600\nG1 E12 F800\nG1 X85 Y110 Z0.3 F1200\nG1 X-110 E30 F2400\nG1 Y0 E8 F2400\nG1 X-109.6 F2400\nG1 Y110 E10 F2400\nG92 E0", - "max_layer_height": [ "0.56" ], - "min_layer_height": [ "0.24" ], - "retraction_length": [ "1.5" ], - "nozzle_type": "hardened_steel", - "z_hop": ["0"] + "type": "machine", + "setting_id": "GM005", + "name": "Flashforge Adventurer 5M 0.8 Nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_adventurer5m_common", + "printer_model": "Flashforge Adventurer 5M", + "default_print_profile": "0.40mm Standard @Flashforge AD5M 0.8 Nozzle", + "nozzle_diameter": ["0.8"], + "printer_variant": "0.8", + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG1 E-1.5 F600\nG1 E12 F800\nG1 X85 Y110 Z0.3 F1200\nG1 X-110 E30 F2400\nG1 Y0 E8 F2400\nG1 X-109.6 F2400\nG1 Y110 E10 F2400\nG92 E0", + "max_layer_height": ["0.56"], + "min_layer_height": ["0.24"], + "retraction_length": ["1.5"], + "nozzle_type": "hardened_steel", + "z_hop": ["0"] } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.25 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.25 Nozzle.json index 021520222c..bf2ae5cd8e 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.25 Nozzle.json @@ -1,18 +1,18 @@ { - "type": "machine", - "setting_id": "GM010", - "name": "Flashforge Adventurer 5M Pro 0.25 Nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_adventurer5m_common", - "printer_model": "Flashforge Adventurer 5M Pro", - "default_print_profile": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "nozzle_diameter": [ "0.25" ], - "printer_variant": "0.25", - "max_layer_height": [ "0.14" ], - "min_layer_height": [ "0.08" ], - "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG90 E0\nM83\nG1 E-1 F600\nG1 E8 F300\nG1 X85 Y110 Z0.2 F1200\nG1 X-110 E15 F2400\nG1 Y0 E4 F2400\nG1 X-109.6 F2400\nG1 Y110 E5 F2400\nG92 E0", - "retraction_length": [ "1" ], - "z_hop": [ "0.3" ], - "nozzle_type": "stainless_steel" -} \ No newline at end of file + "type": "machine", + "setting_id": "GM010", + "name": "Flashforge Adventurer 5M Pro 0.25 Nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_adventurer5m_common", + "printer_model": "Flashforge Adventurer 5M Pro", + "default_print_profile": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "nozzle_diameter": ["0.25"], + "printer_variant": "0.25", + "max_layer_height": ["0.14"], + "min_layer_height": ["0.08"], + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG90 E0\nM83\nG1 E-1 F600\nG1 E8 F300\nG1 X85 Y110 Z0.2 F1200\nG1 X-110 E15 F2400\nG1 Y0 E4 F2400\nG1 X-109.6 F2400\nG1 Y110 E5 F2400\nG92 E0", + "retraction_length": ["1"], + "z_hop": ["0.3"], + "nozzle_type": "stainless_steel" +} diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.4 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.4 Nozzle.json index eaad7c2df1..c634d59675 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.4 Nozzle.json @@ -1,16 +1,16 @@ { - "type": "machine", - "setting_id": "GM001", - "name": "Flashforge Adventurer 5M Pro 0.4 Nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_adventurer5m_common", - "printer_model": "Flashforge Adventurer 5M Pro", - "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", - "nozzle_diameter": [ "0.4" ], - "printer_variant": "0.4", - "max_layer_height": [ "0.28" ], - "min_layer_height": [ "0.08" ], - "retraction_length": [ "0.8" ], - "nozzle_type": "stainless_steel" + "type": "machine", + "setting_id": "GM001", + "name": "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_adventurer5m_common", + "printer_model": "Flashforge Adventurer 5M Pro", + "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "nozzle_diameter": ["0.4"], + "printer_variant": "0.4", + "max_layer_height": ["0.28"], + "min_layer_height": ["0.08"], + "retraction_length": ["0.8"], + "nozzle_type": "stainless_steel" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.6 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.6 Nozzle.json index 9c7b55acbc..81d2575fd0 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.6 Nozzle.json @@ -1,18 +1,16 @@ { - "type": "machine", - "setting_id": "GM001", - "name": "Flashforge Adventurer 5M Pro 0.6 Nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_adventurer5m_common", - "printer_model": "Flashforge Adventurer 5M Pro", - "default_print_profile": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", - "nozzle_diameter": [ "0.6" ], - "printer_variant": "0.6", - "max_layer_height": [ "0.42" ], - "min_layer_height": [ "0.15" ], - "retraction_length": [ "1.2" ], - "nozzle_type": "hardened_steel" - - + "type": "machine", + "setting_id": "GM001", + "name": "Flashforge Adventurer 5M Pro 0.6 Nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_adventurer5m_common", + "printer_model": "Flashforge Adventurer 5M Pro", + "default_print_profile": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", + "nozzle_diameter": ["0.6"], + "printer_variant": "0.6", + "max_layer_height": ["0.42"], + "min_layer_height": ["0.15"], + "retraction_length": ["1.2"], + "nozzle_type": "hardened_steel" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.8 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.8 Nozzle.json index 262696fc3c..06d358adce 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.8 Nozzle.json @@ -1,18 +1,18 @@ { - "type": "machine", - "setting_id": "GM009", - "name": "Flashforge Adventurer 5M Pro 0.8 Nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_adventurer5m_common", - "printer_model": "Flashforge Adventurer 5M Pro", - "default_print_profile": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", - "nozzle_diameter": [ "0.8" ], - "printer_variant": "0.8", - "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG1 E-1.5 F600\nG1 E12 F800\nG1 X85 Y110 Z0.3 F1200\nG1 X-110 E30 F2400\nG1 Y0 E8 F2400\nG1 X-109.6 F2400\nG1 Y110 E10 F2400\nG92 E0", - "max_layer_height": [ "0.56" ], - "min_layer_height": [ "0.24" ], - "retraction_length": [ "1.5" ], - "nozzle_type": "hardened_steel", - "z_hop": ["0"] + "type": "machine", + "setting_id": "GM009", + "name": "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_adventurer5m_common", + "printer_model": "Flashforge Adventurer 5M Pro", + "default_print_profile": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", + "nozzle_diameter": ["0.8"], + "printer_variant": "0.8", + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG1 E-1.5 F600\nG1 E12 F800\nG1 X85 Y110 Z0.3 F1200\nG1 X-110 E30 F2400\nG1 Y0 E8 F2400\nG1 X-109.6 F2400\nG1 Y110 E10 F2400\nG92 E0", + "max_layer_height": ["0.56"], + "min_layer_height": ["0.24"], + "retraction_length": ["1.5"], + "nozzle_type": "hardened_steel", + "z_hop": ["0"] } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M.json index 1f408ba734..f28f67d9b9 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M.json @@ -1,13 +1,13 @@ { - "type": "machine_model", - "name": "Flashforge Adventurer 5M", - "model_id": "Flashforge-Adventurer-5M", - "nozzle_diameter": "0.25;0.4;0.6;0.8", - "machine_tech": "FFF", - "family": "Flashforge", - "bed_model": "flashforge_adventurer5m_series_buildplate_model.STL", - "bed_texture": "flashforge_adventurer5m_buildplate_texture.png", - "default_bed_type": "Textured PEI Plate", - "hotend_model": "flashforge_adventurer_5m_series_hotend.STL", - "default_materials": "Flashforge Generic ABS;Flashforge Generic PETG;Flashforge Generic PLA" + "type": "machine_model", + "name": "Flashforge Adventurer 5M", + "model_id": "Flashforge-Adventurer-5M", + "nozzle_diameter": "0.25;0.4;0.6;0.8", + "machine_tech": "FFF", + "family": "Flashforge", + "bed_model": "flashforge_adventurer5m_series_buildplate_model.STL", + "bed_texture": "flashforge_adventurer5m_buildplate_texture.png", + "default_bed_type": "Textured PEI Plate", + "hotend_model": "flashforge_adventurer_5m_series_hotend.STL", + "default_materials": "Flashforge Generic ABS;Flashforge Generic PETG;Flashforge Generic PLA" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider 2s 0.4 nozzle.json index b45d8289b5..fc0d075308 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 2s 0.4 nozzle.json @@ -1,60 +1,55 @@ { - "type": "machine", - "setting_id": "GM001", - "name": "Flashforge Guider 2s 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_flashforge_common", - "printer_model": "Flashforge Guider 2s", - "gcode_flavor": "marlin", - "default_print_profile": "0.20mm Standard @Flashforge Guider 2s 0.4 nozzle", - "nozzle_diameter": [ "0.4" ], - "printer_variant": "0.4", - "printable_area": [ - "-140x-125", - "140x-125", - "140x125", - "-140x125" - ], - "printable_height": "300", - "extruder_offset": [ "-20", "10" ], - "extruder_clearance_height_to_lid": "70", - "extruder_clearance_height_to_rod": "23", - "extruder_clearance_radius": "40", - "use_relative_e_distances": "0", - "auxiliary_fan": "1", - "machine_max_acceleration_e": [ "200", "200" ], - "machine_max_acceleration_extruding": [ "200", "200" ], - "machine_max_acceleration_retracting": [ "200", "200" ], - "machine_max_acceleration_travel": [ "200", "200" ], - "machine_max_acceleration_x": [ "200", "200" ], - "machine_max_acceleration_y": [ "200", "200" ], - "machine_max_acceleration_z": [ "200", "200" ], - "machine_max_speed_e": [ "100", "100" ], - "machine_max_speed_x": [ "200", "200" ], - "machine_max_speed_y": [ "200", "200" ], - "machine_max_speed_z": [ "20", "20" ], - "machine_max_jerk_e": [ "2.5", "2.5" ], - "machine_max_jerk_x": [ "9", "9" ], - "machine_max_jerk_y": [ "9", "9" ], - "machine_max_jerk_z": [ "3", "3" ], - "max_layer_height": [ "0.8" ], - "min_layer_height": [ "0.02" ], - "printer_settings_id": "Flashforge", - "retraction_minimum_travel": [ "1" ], - "retract_before_wipe": [ "100%" ], - "retraction_length": [ "1" ], - "retract_length_toolchange": [ "2" ], - "retraction_speed": [ "100" ], - "z_hop": [ "0" ], - "single_extruder_multi_material": "0", - "change_filament_gcode": "", - "machine_pause_gcode": "M25", - "default_filament_profile": [ "Flashforge Generic PLA" ], - "machine_start_gcode": "M118 X10 Y10 Z10\nM140 S[bed_temperature_initial_layer_single]; set initial bed temp\nM104 S[nozzle_temperature_initial_layer] T0; set initial extruder temp\nM107; disable cooling fan\nG90; set to absolute positioning\nG28; home axes\nM132 X Y A B; recall home offsets from EPROM\nG1 Z50.0 F420; adjust Z\nG161 X Y F3300\nM7; wait for bed to stabilize\nM6 T0; wait for extruder to stabilize\nM651 S255; start case fan\nG1 Z0.3 F3600; move down to purge\nG92 E0; zero extruders\nG1 X120 Y-125 E20 F2000; extrude a line of filament across the front edge of the bed\nG1 X130 Y-125 F180; wait for ooze\nG1 X140 Y-125 F5000; fast wipe\nG1 Z1 F100; lift\nG92 E0; zero extruders again\nG1 E-1.0000 F1800", - "machine_end_gcode": "M104 S0 T0; cool down extruder\nM140 S0 T0; cool down bed\nG162 Z F1800\nG28 X Y; home axes\nM132 X Y A B; recall home offsets from EPROM\nM652; turn off rear fan\nG91; set to relative positioning\nM18; disable stepper motors", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "wipe_distance": "2", - "nozzle_type": "undefine" + "type": "machine", + "setting_id": "GM001", + "name": "Flashforge Guider 2s 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_flashforge_common", + "printer_model": "Flashforge Guider 2s", + "gcode_flavor": "marlin", + "default_print_profile": "0.20mm Standard @Flashforge Guider 2s 0.4 nozzle", + "nozzle_diameter": ["0.4"], + "printer_variant": "0.4", + "printable_area": ["-140x-125", "140x-125", "140x125", "-140x125"], + "printable_height": "300", + "extruder_offset": ["-20", "10"], + "extruder_clearance_height_to_lid": "70", + "extruder_clearance_height_to_rod": "23", + "extruder_clearance_radius": "40", + "use_relative_e_distances": "0", + "auxiliary_fan": "1", + "machine_max_acceleration_e": ["200", "200"], + "machine_max_acceleration_extruding": ["200", "200"], + "machine_max_acceleration_retracting": ["200", "200"], + "machine_max_acceleration_travel": ["200", "200"], + "machine_max_acceleration_x": ["200", "200"], + "machine_max_acceleration_y": ["200", "200"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_speed_e": ["100", "100"], + "machine_max_speed_x": ["200", "200"], + "machine_max_speed_y": ["200", "200"], + "machine_max_speed_z": ["20", "20"], + "machine_max_jerk_e": ["2.5", "2.5"], + "machine_max_jerk_x": ["9", "9"], + "machine_max_jerk_y": ["9", "9"], + "machine_max_jerk_z": ["3", "3"], + "max_layer_height": ["0.8"], + "min_layer_height": ["0.02"], + "printer_settings_id": "Flashforge", + "retraction_minimum_travel": ["1"], + "retract_before_wipe": ["100%"], + "retraction_length": ["1"], + "retract_length_toolchange": ["2"], + "retraction_speed": ["100"], + "z_hop": ["0"], + "single_extruder_multi_material": "0", + "change_filament_gcode": "", + "machine_pause_gcode": "M25", + "default_filament_profile": ["Flashforge Generic PLA"], + "machine_start_gcode": "M118 X10 Y10 Z10\nM140 S[bed_temperature_initial_layer_single]; set initial bed temp\nM104 S[nozzle_temperature_initial_layer] T0; set initial extruder temp\nM107; disable cooling fan\nG90; set to absolute positioning\nG28; home axes\nM132 X Y A B; recall home offsets from EPROM\nG1 Z50.0 F420; adjust Z\nG161 X Y F3300\nM7; wait for bed to stabilize\nM6 T0; wait for extruder to stabilize\nM651 S255; start case fan\nG1 Z0.3 F3600; move down to purge\nG92 E0; zero extruders\nG1 X120 Y-125 E20 F2000; extrude a line of filament across the front edge of the bed\nG1 X130 Y-125 F180; wait for ooze\nG1 X140 Y-125 F5000; fast wipe\nG1 Z1 F100; lift\nG92 E0; zero extruders again\nG1 E-1.0000 F1800", + "machine_end_gcode": "M104 S0 T0; cool down extruder\nM140 S0 T0; cool down bed\nG162 Z F1800\nG28 X Y; home axes\nM132 X Y A B; recall home offsets from EPROM\nM652; turn off rear fan\nG91; set to relative positioning\nM18; disable stepper motors", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "wipe_distance": "2", + "nozzle_type": "undefine" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json index a9c6e73634..c4c7fc1537 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json @@ -1,36 +1,28 @@ { "type": "machine", - "setting_id": "GM001", - "from": "system", - "instantiation": "true", + "setting_id": "GM001", + "from": "system", + "instantiation": "true", "auxiliary_fan": "1", "bed_custom_model": "", "bed_custom_texture": "", - "bed_exclude_area": [ - "0x0" - ], + "bed_exclude_area": ["0x0"], "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0", "best_object_pos": "0.5,0.5", "change_extrusion_role_gcode": "", "change_filament_gcode": "; change filament start\n{if total_toolchanges == 0 and current_extruder == 1}\nM104 S0 T0\n{elsif total_toolchanges > 0 and current_extruder == 0}\nM104 S{nozzle_temperature[0]}\n{if layer_z == initial_layer_print_height}\nT1\nM109 S{nozzle_temperature_initial_layer[1]} T1\n{else}\nT1\nM109 S{nozzle_temperature[1]} T1\n{endif}\n{elsif total_toolchanges > 0 and current_extruder == 1}\nM104 S{nozzle_temperature[1]}\n{if layer_z == initial_layer_print_height}\nT0\nM109 S{nozzle_temperature_initial_layer[0]} T0\n{else}\nT0\nM109 S{nozzle_temperature[0]} T0\n{endif}\n{endif}\n", "cooling_tube_length": "0", "cooling_tube_retraction": "0", - "default_filament_profile": [ "Flashforge Generic PLA @G3U" ], + "default_filament_profile": ["Flashforge Generic PLA @G3U"], "default_print_profile": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", - "deretraction_speed": [ - "35" - ], + "deretraction_speed": ["35"], "enable_filament_ramming": "0", "extra_loading_move": "0", "extruder_clearance_height_to_lid": "150", "extruder_clearance_height_to_rod": "50", "extruder_clearance_radius": "57", - "extruder_colour": [ - "#FCE94F" - ], - "extruder_offset": [ - "0x0" - ], + "extruder_colour": ["#FCE94F"], + "extruder_offset": ["0x0"], "fan_kickstart": "0", "fan_speedup_overhangs": "1", "fan_speedup_time": "0", @@ -41,100 +33,38 @@ "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 T0\nM104 S0 T1", "machine_load_filament_time": "0", - "machine_max_acceleration_e": [ - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "20000", - "20000" - ], - "machine_max_acceleration_retracting": [ - "5000", - "5000" - ], - "machine_max_acceleration_travel": [ - "20000", - "20000" - ], - "machine_max_acceleration_x": [ - "20000", - "20000" - ], - "machine_max_acceleration_y": [ - "20000", - "20000" - ], - "machine_max_acceleration_z": [ - "500", - "500" - ], - "machine_max_jerk_e": [ - "2.5", - "2.5" - ], - "machine_max_jerk_x": [ - "9", - "9" - ], - "machine_max_jerk_y": [ - "9", - "9" - ], - "machine_max_jerk_z": [ - "3", - "3" - ], - "machine_max_speed_e": [ - "30", - "30" - ], - "machine_max_speed_x": [ - "600", - "600" - ], - "machine_max_speed_y": [ - "600", - "600" - ], - "machine_max_speed_z": [ - "20", - "20" - ], - "machine_min_extruding_rate": [ - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0" - ], + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["5000", "5000"], + "machine_max_acceleration_travel": ["20000", "20000"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["500", "500"], + "machine_max_jerk_e": ["2.5", "2.5"], + "machine_max_jerk_x": ["9", "9"], + "machine_max_jerk_y": ["9", "9"], + "machine_max_jerk_z": ["3", "3"], + "machine_max_speed_e": ["30", "30"], + "machine_max_speed_x": ["600", "600"], + "machine_max_speed_y": ["600", "600"], + "machine_max_speed_z": ["20", "20"], + "machine_min_extruding_rate": ["0", "0"], + "machine_min_travel_rate": ["0", "0"], "machine_pause_gcode": "M25", "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\n{if total_toolchanges < 1}\nM109 S[nozzle_temperature_initial_layer] T[initial_extruder]\nT[initial_extruder]\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\n{else}\nM109 S{nozzle_temperature_initial_layer[0] - 30} T0\nM109 S{nozzle_temperature_initial_layer[1] - 30} T1\n{if initial_extruder==0}\nM109 S{nozzle_temperature_initial_layer[1]} T1\nT1\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG1 E-15 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\nM104 S{nozzle_temperature_initial_layer[1]-30} T1\nM109 S{nozzle_temperature_initial_layer[0]} T0\nT0\nG1 Z0.3 F400\nG1 X145 Y{random(-160,-152)} F4800\nG1 X95 Y{random(-160,-152)} E30 F400\nG1 E-0.8 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X80 F4800 ; move away from purge line\nG92 E0\n{elsif current_extruder == 1}\nM109 S{nozzle_temperature_initial_layer[0]} T0\nT0\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG1 E-15 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\nM104 S{nozzle_temperature_initial_layer[0]-30} T0\nM109 S{nozzle_temperature_initial_layer[1]} T1\nT1\nG1 Z0.3 F400\nG1 X145 Y{random(-160,-152)} F4800\nG1 X95 Y{random(-160,-152)} E30 F400\nG1 E-0.8 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X80 F4800 ; move away from purge line\nG92 E0\n{endif}\n{endif}\n\n", "machine_unload_filament_time": "0", "manual_filament_change": "0", - "max_layer_height": [ - "0.28" - ], - "min_layer_height": [ - "0.08" - ], + "max_layer_height": ["0.28"], + "min_layer_height": ["0.08"], "name": "Flashforge Guider 3 Ultra 0.4 Nozzle", - "nozzle_diameter": [ - "0.4" - ], + "nozzle_diameter": ["0.4"], "nozzle_hrc": "0", "nozzle_type": "stainless_steel", "nozzle_volume": "0", "parking_pos_retraction": "0", "print_host": "", "print_host_webui": "", - "printable_area": [ - "-150x-165", - "150x-165", - "150x165", - "-150x165" - ], + "printable_area": ["-150x-165", "150x-165", "150x165", "-150x165"], "printable_height": "600", "printer_model": "Flashforge Guider 3 Ultra", "printer_notes": "", @@ -150,65 +80,33 @@ "printhost_ssl_ignore_revoke": "0", "printhost_user": "", "purge_in_prime_tower": "0", - "retract_before_wipe": [ - "100%" - ], - "retract_length_toolchange": [ - "15" - ], - "retract_lift_above": [ - "0" - ], - "retract_lift_below": [ - "0" - ], - "retract_lift_enforce": [ - "All Surfaces" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "-0.8" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_length": [ - "0.8" - ], - "retraction_minimum_travel": [ - "1" - ], - "retraction_speed": [ - "35" - ], + "retract_before_wipe": ["100%"], + "retract_length_toolchange": ["15"], + "retract_lift_above": ["0"], + "retract_lift_below": ["0"], + "retract_lift_enforce": ["All Surfaces"], + "retract_restart_extra": ["0"], + "retract_restart_extra_toolchange": ["-0.8"], + "retract_when_changing_layer": ["1"], + "retraction_length": ["0.8"], + "retraction_minimum_travel": ["1"], + "retraction_speed": ["35"], "scan_first_layer": "0", "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", "template_custom_gcode": "", - "thumbnails": [ - "140x110" - ], + "thumbnails": ["140x110"], "thumbnails_format": "PNG", "time_cost": "0", "time_lapse_gcode": "", "upward_compatible_machine": [], "use_firmware_retraction": "0", "use_relative_e_distances": "1", - "wipe": [ - "1" - ], - "wipe_distance": [ - "2" - ], - "z_hop": [ - "0.4" - ], - "z_hop_types": [ - "Normal Lift" - ], + "wipe": ["1"], + "wipe_distance": ["2"], + "z_hop": ["0.4"], + "z_hop_types": ["Normal Lift"], "z_offset": "0" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json index 7d76aea8eb..2e7744c675 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json @@ -11,52 +11,27 @@ "change_filament_gcode": "; change filament start\n{if total_toolchanges == 0 and current_extruder == 1}\nM104 S0 T0\n{elsif total_toolchanges > 0 and current_extruder == 0}\nM104 S{nozzle_temperature[0]}\n{if layer_z == initial_layer_print_height}\nT1\nM109 S{nozzle_temperature_initial_layer[1]} T1\n{else}\nT1\nM109 S{nozzle_temperature[1]} T1\n{endif}\n{elsif total_toolchanges > 0 and current_extruder == 1}\nM104 S{nozzle_temperature[1]}\n{if layer_z == initial_layer_print_height}\nT0\nM109 S{nozzle_temperature_initial_layer[0]} T0\n{else}\nT0\nM109 S{nozzle_temperature[0]} T0\n{endif}\n{endif}\n", "cooling_tube_length": "0", "cooling_tube_retraction": "0", - "default_filament_profile": [ "Flashforge Generic PLA @G3U 0.6 Nozzle" ], + "default_filament_profile": ["Flashforge Generic PLA @G3U 0.6 Nozzle"], "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "deretraction_speed": [ - "30" - ], + "deretraction_speed": ["30"], "extra_loading_move": "0", "extruder_clearance_height_to_rod": "50", "extruder_clearance_radius": "57", "is_custom_defined": "0", "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 T0\nM104 S0 T1", "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\n{if total_toolchanges < 1}\nM109 S[nozzle_temperature_initial_layer] T[initial_extruder]\nT[initial_extruder]\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\n{else}\nM109 S{nozzle_temperature_initial_layer[0] - 30} T0\nM109 S{nozzle_temperature_initial_layer[1] - 30} T1\n{if initial_extruder==0}\nM109 S{nozzle_temperature_initial_layer[1]} T1\nT1\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG1 E-15 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\nM104 S{nozzle_temperature_initial_layer[1]-30} T1\nM109 S{nozzle_temperature_initial_layer[0]} T0\nT0\nG1 Z0.3 F400\nG1 X145 Y{random(-160,-152)} F4800\nG1 X95 Y{random(-160,-152)} E30 F400\nG1 E-0.8 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X80 F4800 ; move away from purge line\nG92 E0\n{elsif current_extruder == 1}\nM109 S{nozzle_temperature_initial_layer[0]} T0\nT0\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG1 E-15 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\nM104 S{nozzle_temperature_initial_layer[0]-30} T0\nM109 S{nozzle_temperature_initial_layer[1]} T1\nT1\nG1 Z0.3 F400\nG1 X145 Y{random(-160,-152)} F4800\nG1 X95 Y{random(-160,-152)} E30 F400\nG1 E-0.8 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X80 F4800 ; move away from purge line\nG92 E0\n{endif}\n{endif}\n\n", - "max_layer_height": [ - "0.42" - ], - "min_layer_height": [ - "0.18" - ], - "nozzle_diameter": [ - "0.6" - ], + "max_layer_height": ["0.42"], + "min_layer_height": ["0.18"], + "nozzle_diameter": ["0.6"], "parking_pos_retraction": "0", - "printable_area": [ - "-150x-165", - "150x-165", - "150x165", - "-150x165" - ], + "printable_area": ["-150x-165", "150x-165", "150x165", "-150x165"], "printable_height": "600", "printer_settings_id": "Flashforge Guider 3 Ultra 0.6 Nozzle", - "retract_length_toolchange": [ - "15" - ], - "retract_restart_extra_toolchange": [ - "-0.8" - ], - "retraction_length": [ - "1.2" - ], - "retraction_speed": [ - "40" - ], + "retract_length_toolchange": ["15"], + "retract_restart_extra_toolchange": ["-0.8"], + "retraction_length": ["1.2"], + "retraction_speed": ["40"], "version": "1.8.0.0", - "z_hop": [ - "0.6" - ], - "z_hop_types": [ - "Spiral Lift" - ] + "z_hop": ["0.6"], + "z_hop_types": ["Spiral Lift"] } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json index f51e0392aa..214d4337d1 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json @@ -11,52 +11,27 @@ "change_filament_gcode": "; change filament start\n{if total_toolchanges == 0 and current_extruder == 1}\nM104 S0 T0\n{elsif total_toolchanges > 0 and current_extruder == 0}\nM104 S{nozzle_temperature[0]}\n{if layer_z == initial_layer_print_height}\nT1\nM109 S{nozzle_temperature_initial_layer[1]} T1\n{else}\nT1\nM109 S{nozzle_temperature[1]} T1\n{endif}\n{elsif total_toolchanges > 0 and current_extruder == 1}\nM104 S{nozzle_temperature[1]}\n{if layer_z == initial_layer_print_height}\nT0\nM109 S{nozzle_temperature_initial_layer[0]} T0\n{else}\nT0\nM109 S{nozzle_temperature[0]} T0\n{endif}\n{endif}\n", "cooling_tube_length": "0", "cooling_tube_retraction": "0", - "default_filament_profile": [ "Flashforge Generic PLA @G3U 0.8 Nozzle" ], + "default_filament_profile": ["Flashforge Generic PLA @G3U 0.8 Nozzle"], "default_print_profile": "0.40mm Standard @Flashforge G3U 0.8 Nozzle", - "deretraction_speed": [ - "40" - ], + "deretraction_speed": ["40"], "extra_loading_move": "0", "extruder_clearance_height_to_rod": "50", "extruder_clearance_radius": "57", "is_custom_defined": "0", "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 T0\nM104 S0 T1", "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\n{if total_toolchanges < 1}\nM109 S[nozzle_temperature_initial_layer] T[initial_extruder]\nT[initial_extruder]\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\n{else}\nM109 S{nozzle_temperature_initial_layer[0] - 30} T0\nM109 S{nozzle_temperature_initial_layer[1] - 30} T1\n{if initial_extruder==0}\nM109 S{nozzle_temperature_initial_layer[1]} T1\nT1\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG1 E-15 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\nM104 S{nozzle_temperature_initial_layer[1]-30} T1\nM109 S{nozzle_temperature_initial_layer[0]} T0\nT0\nG1 Z0.3 F400\nG1 X145 Y{random(-160,-152)} F4800\nG1 X95 Y{random(-160,-152)} E30 F400\nG1 E-0.8 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X80 F4800 ; move away from purge line\nG92 E0\n{elsif current_extruder == 1}\nM109 S{nozzle_temperature_initial_layer[0]} T0\nT0\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG1 E-15 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\nM104 S{nozzle_temperature_initial_layer[0]-30} T0\nM109 S{nozzle_temperature_initial_layer[1]} T1\nT1\nG1 Z0.3 F400\nG1 X145 Y{random(-160,-152)} F4800\nG1 X95 Y{random(-160,-152)} E30 F400\nG1 E-0.8 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X80 F4800 ; move away from purge line\nG92 E0\n{endif}\n{endif}\n\n", - "max_layer_height": [ - "0.5" - ], - "min_layer_height": [ - "0.3" - ], - "nozzle_diameter": [ - "0.8" - ], + "max_layer_height": ["0.5"], + "min_layer_height": ["0.3"], + "nozzle_diameter": ["0.8"], "parking_pos_retraction": "0", - "printable_area": [ - "-150x-165", - "150x-165", - "150x165", - "-150x165" - ], + "printable_area": ["-150x-165", "150x-165", "150x165", "-150x165"], "printable_height": "600", "printer_settings_id": "Flashforge Guider 3 Ultra 0.8 Nozzle", - "retract_length_toolchange": [ - "15" - ], - "retract_restart_extra_toolchange": [ - "-0.8" - ], - "retraction_length": [ - "1.5" - ], - "retraction_speed": [ - "50" - ], + "retract_length_toolchange": ["15"], + "retract_restart_extra_toolchange": ["-0.8"], + "retraction_length": ["1.5"], + "retraction_speed": ["50"], "version": "1.8.0.0", - "z_hop": [ - "1" - ], - "z_hop_types": [ - "Spiral Lift" - ] + "z_hop": ["1"], + "z_hop_types": ["Spiral Lift"] } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.25 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.25 nozzle.json index 0350efee3c..1630afd09d 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.25 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.25 nozzle.json @@ -1,226 +1,120 @@ { - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": [ - "0x0" - ], - "bed_mesh_max": "99999,99999", - "bed_mesh_min": "-99999,-99999", - "bed_mesh_probe_distance": "50,50", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "default_filament_profile": [ - "Flashforge Generic PLA" - ], - "default_print_profile": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "deretraction_speed": [ - "45" - ], - "disable_m73": "0", - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "165", - "extruder_clearance_height_to_rod": "42", - "extruder_clearance_radius": "75", - "extruder_colour": [ - "#FCE94F" - ], - "extruder_offset": [ - "0x0" - ], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "from": "system", - "instantiation": "true", - "gcode_flavor": "klipper", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "inherits": "Flashforge Adventurer 5M Pro 0.25 Nozzle", - "is_custom_defined": "0", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "long_retractions_when_cut": [ - "0" - ], - "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", - "machine_load_filament_time": "0", - "machine_max_acceleration_e": [ - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "30000", - "20000" - ], - "machine_max_acceleration_retracting": [ - "5000", - "5000" - ], - "machine_max_acceleration_travel": [ - "20000", - "20000" - ], - "machine_max_acceleration_x": [ - "30000", - "20000" - ], - "machine_max_acceleration_y": [ - "30000", - "20000" - ], - "machine_max_acceleration_z": [ - "500", - "500" - ], - "machine_max_jerk_e": [ - "2.5", - "2.5" - ], - "machine_max_jerk_x": [ - "9", - "9" - ], - "machine_max_jerk_y": [ - "9", - "9" - ], - "machine_max_jerk_z": [ - "3", - "3" - ], - "machine_max_speed_e": [ - "30", - "30" - ], - "machine_max_speed_x": [ - "700", - "600" - ], - "machine_max_speed_y": [ - "700", - "600" - ], - "machine_max_speed_z": [ - "20", - "20" - ], - "machine_min_extruding_rate": [ - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0" - ], - "machine_pause_gcode": "M25", - "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", - "machine_unload_filament_time": "0", - "manual_filament_change": "0", - "max_layer_height": [ - "0.14" - ], - "min_layer_height": [ - "0.08" - ], - "name": "Flashforge Guider4 Pro 0.25 nozzle", - "nozzle_diameter": [ - "0.25" - ], - "nozzle_height": "2.5", - "nozzle_hrc": "0", - "nozzle_type": "hardened_steel", - "nozzle_volume": "0", - "parking_pos_retraction": "0", - "preferred_orientation": "0", - "printable_area": [ - "0x0", - "300x0", - "300x300", - "0x300" - ], - "printable_height": "300", - "printer_model": "Flashforge Guider4 Pro", - "printer_notes": "", - "printer_settings_id": "Flashforge Guider4 Pro 0.25 nozzle", - "printer_structure": "undefine", - "printer_technology": "FFF", - "printer_variant": "0.25", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": [ - "100%" - ], - "retract_length_toolchange": [ - "5" - ], - "retract_lift_above": [ - "0" - ], - "retract_lift_below": [ - "0" - ], - "retract_lift_enforce": [ - "All Surfaces" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "-5" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_distances_when_cut": [ - "18" - ], - "retraction_length": [ - "2.5" - ], - "retraction_minimum_travel": [ - "1" - ], - "retraction_speed": [ - "45" - ], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "0", - "template_custom_gcode": "", - "thumbnails": "140x110/PNG", - "thumbnails_format": "PNG", - "time_cost": "0", - "time_lapse_gcode": "", - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "version": "2.2.0.0", - "wipe": [ - "1" - ], - "wipe_distance": [ - "2" - ], - "z_hop": [ - "0.3" - ], - "z_hop_types": [ - "Auto Lift" - ], - "z_offset": "0" + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": ["0x0"], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": ["Flashforge Generic PLA"], + "default_print_profile": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "deretraction_speed": ["45"], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "165", + "extruder_clearance_height_to_rod": "42", + "extruder_clearance_radius": "75", + "extruder_colour": ["#FCE94F"], + "extruder_offset": ["0x0"], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "from": "system", + "instantiation": "true", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "inherits": "Flashforge Adventurer 5M Pro 0.25 Nozzle", + "is_custom_defined": "0", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": ["0"], + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["30000", "20000"], + "machine_max_acceleration_retracting": ["5000", "5000"], + "machine_max_acceleration_travel": ["20000", "20000"], + "machine_max_acceleration_x": ["30000", "20000"], + "machine_max_acceleration_y": ["30000", "20000"], + "machine_max_acceleration_z": ["500", "500"], + "machine_max_jerk_e": ["2.5", "2.5"], + "machine_max_jerk_x": ["9", "9"], + "machine_max_jerk_y": ["9", "9"], + "machine_max_jerk_z": ["3", "3"], + "machine_max_speed_e": ["30", "30"], + "machine_max_speed_x": ["700", "600"], + "machine_max_speed_y": ["700", "600"], + "machine_max_speed_z": ["20", "20"], + "machine_min_extruding_rate": ["0", "0"], + "machine_min_travel_rate": ["0", "0"], + "machine_pause_gcode": "M25", + "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": ["0.14"], + "min_layer_height": ["0.08"], + "name": "Flashforge Guider4 Pro 0.25 nozzle", + "nozzle_diameter": ["0.25"], + "nozzle_height": "2.5", + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "preferred_orientation": "0", + "printable_area": ["0x0", "300x0", "300x300", "0x300"], + "printable_height": "300", + "printer_model": "Flashforge Guider4 Pro", + "printer_notes": "", + "printer_settings_id": "Flashforge Guider4 Pro 0.25 nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.25", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": ["100%"], + "retract_length_toolchange": ["5"], + "retract_lift_above": ["0"], + "retract_lift_below": ["0"], + "retract_lift_enforce": ["All Surfaces"], + "retract_restart_extra": ["0"], + "retract_restart_extra_toolchange": ["-5"], + "retract_when_changing_layer": ["1"], + "retraction_distances_when_cut": ["18"], + "retraction_length": ["2.5"], + "retraction_minimum_travel": ["1"], + "retraction_speed": ["45"], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "0", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "2.2.0.0", + "wipe": ["1"], + "wipe_distance": ["2"], + "z_hop": ["0.3"], + "z_hop_types": ["Auto Lift"], + "z_offset": "0" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 HF nozzle.json index f251863d49..f6ebf42e44 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 HF nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 HF nozzle.json @@ -1,226 +1,120 @@ { - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": [ - "0x0" - ], - "bed_mesh_max": "99999,99999", - "bed_mesh_min": "-99999,-99999", - "bed_mesh_probe_distance": "50,50", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "default_filament_profile": [ - "Flashforge Generic PLA @G3U" - ], - "default_print_profile": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", - "deretraction_speed": [ - "45" - ], - "disable_m73": "0", - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "165", - "extruder_clearance_height_to_rod": "42", - "extruder_clearance_radius": "75", - "extruder_colour": [ - "#FCE94F" - ], - "extruder_offset": [ - "0x0" - ], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "from": "system", - "instantiation": "true", - "gcode_flavor": "klipper", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "inherits": "Flashforge Guider 3 Ultra 0.4 Nozzle", - "is_custom_defined": "0", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "long_retractions_when_cut": [ - "0" - ], - "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", - "machine_load_filament_time": "0", - "machine_max_acceleration_e": [ - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "30000", - "20000" - ], - "machine_max_acceleration_retracting": [ - "5000", - "5000" - ], - "machine_max_acceleration_travel": [ - "20000", - "20000" - ], - "machine_max_acceleration_x": [ - "30000", - "20000" - ], - "machine_max_acceleration_y": [ - "30000", - "20000" - ], - "machine_max_acceleration_z": [ - "500", - "500" - ], - "machine_max_jerk_e": [ - "2.5", - "2.5" - ], - "machine_max_jerk_x": [ - "9", - "9" - ], - "machine_max_jerk_y": [ - "9", - "9" - ], - "machine_max_jerk_z": [ - "3", - "3" - ], - "machine_max_speed_e": [ - "30", - "30" - ], - "machine_max_speed_x": [ - "700", - "600" - ], - "machine_max_speed_y": [ - "700", - "600" - ], - "machine_max_speed_z": [ - "20", - "20" - ], - "machine_min_extruding_rate": [ - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0" - ], - "machine_pause_gcode": "M25", - "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", - "machine_unload_filament_time": "0", - "manual_filament_change": "0", - "max_layer_height": [ - "0.28" - ], - "min_layer_height": [ - "0.08" - ], - "name": "Flashforge Guider4 Pro 0.4 HF nozzle", - "nozzle_diameter": [ - "0.4" - ], - "nozzle_height": "4", - "nozzle_hrc": "0", - "nozzle_type": "stainless_steel", - "nozzle_volume": "0", - "parking_pos_retraction": "0", - "preferred_orientation": "0", - "printable_area": [ - "0x0", - "300x0", - "300x300", - "0x300" - ], - "printable_height": "300", - "printer_model": "Flashforge Guider4 Pro", - "printer_notes": "", - "printer_settings_id": "Flashforge Guider4 Pro 0.4 HF nozzle", - "printer_structure": "undefine", - "printer_technology": "FFF", - "printer_variant": "0.4", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": [ - "100%" - ], - "retract_length_toolchange": [ - "5" - ], - "retract_lift_above": [ - "0" - ], - "retract_lift_below": [ - "0" - ], - "retract_lift_enforce": [ - "All Surfaces" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "-5" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_distances_when_cut": [ - "18" - ], - "retraction_length": [ - "2.5" - ], - "retraction_minimum_travel": [ - "1" - ], - "retraction_speed": [ - "45" - ], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "0", - "template_custom_gcode": "", - "thumbnails": "140x110/PNG", - "thumbnails_format": "PNG", - "time_cost": "0", - "time_lapse_gcode": "", - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "version": "2.1.1.0", - "wipe": [ - "1" - ], - "wipe_distance": [ - "2" - ], - "z_hop": [ - "0.4" - ], - "z_hop_types": [ - "Auto Lift" - ], - "z_offset": "0" + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": ["0x0"], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": ["Flashforge Generic PLA @G3U"], + "default_print_profile": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", + "deretraction_speed": ["45"], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "165", + "extruder_clearance_height_to_rod": "42", + "extruder_clearance_radius": "75", + "extruder_colour": ["#FCE94F"], + "extruder_offset": ["0x0"], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "from": "system", + "instantiation": "true", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "inherits": "Flashforge Guider 3 Ultra 0.4 Nozzle", + "is_custom_defined": "0", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": ["0"], + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["30000", "20000"], + "machine_max_acceleration_retracting": ["5000", "5000"], + "machine_max_acceleration_travel": ["20000", "20000"], + "machine_max_acceleration_x": ["30000", "20000"], + "machine_max_acceleration_y": ["30000", "20000"], + "machine_max_acceleration_z": ["500", "500"], + "machine_max_jerk_e": ["2.5", "2.5"], + "machine_max_jerk_x": ["9", "9"], + "machine_max_jerk_y": ["9", "9"], + "machine_max_jerk_z": ["3", "3"], + "machine_max_speed_e": ["30", "30"], + "machine_max_speed_x": ["700", "600"], + "machine_max_speed_y": ["700", "600"], + "machine_max_speed_z": ["20", "20"], + "machine_min_extruding_rate": ["0", "0"], + "machine_min_travel_rate": ["0", "0"], + "machine_pause_gcode": "M25", + "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": ["0.28"], + "min_layer_height": ["0.08"], + "name": "Flashforge Guider4 Pro 0.4 HF nozzle", + "nozzle_diameter": ["0.4"], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "stainless_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "preferred_orientation": "0", + "printable_area": ["0x0", "300x0", "300x300", "0x300"], + "printable_height": "300", + "printer_model": "Flashforge Guider4 Pro", + "printer_notes": "", + "printer_settings_id": "Flashforge Guider4 Pro 0.4 HF nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.4", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": ["100%"], + "retract_length_toolchange": ["5"], + "retract_lift_above": ["0"], + "retract_lift_below": ["0"], + "retract_lift_enforce": ["All Surfaces"], + "retract_restart_extra": ["0"], + "retract_restart_extra_toolchange": ["-5"], + "retract_when_changing_layer": ["1"], + "retraction_distances_when_cut": ["18"], + "retraction_length": ["2.5"], + "retraction_minimum_travel": ["1"], + "retraction_speed": ["45"], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "0", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "2.1.1.0", + "wipe": ["1"], + "wipe_distance": ["2"], + "z_hop": ["0.4"], + "z_hop_types": ["Auto Lift"], + "z_offset": "0" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 nozzle.json index 602f90049d..078a7b0220 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 nozzle.json @@ -1,226 +1,120 @@ { - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": [ - "0x0" - ], - "bed_mesh_max": "99999,99999", - "bed_mesh_min": "-99999,-99999", - "bed_mesh_probe_distance": "50,50", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "default_filament_profile": [ - "Flashforge Generic PLA" - ], - "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", - "deretraction_speed": [ - "45" - ], - "disable_m73": "0", - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "165", - "extruder_clearance_height_to_rod": "42", - "extruder_clearance_radius": "75", - "extruder_colour": [ - "#FCE94F" - ], - "extruder_offset": [ - "0x0" - ], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "from": "system", - "instantiation": "true", - "gcode_flavor": "klipper", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "inherits": "Flashforge Adventurer 5M Pro 0.4 Nozzle", - "is_custom_defined": "0", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "long_retractions_when_cut": [ - "0" - ], - "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", - "machine_load_filament_time": "0", - "machine_max_acceleration_e": [ - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "30000", - "20000" - ], - "machine_max_acceleration_retracting": [ - "5000", - "5000" - ], - "machine_max_acceleration_travel": [ - "20000", - "20000" - ], - "machine_max_acceleration_x": [ - "30000", - "20000" - ], - "machine_max_acceleration_y": [ - "30000", - "20000" - ], - "machine_max_acceleration_z": [ - "500", - "500" - ], - "machine_max_jerk_e": [ - "2.5", - "2.5" - ], - "machine_max_jerk_x": [ - "9", - "9" - ], - "machine_max_jerk_y": [ - "9", - "9" - ], - "machine_max_jerk_z": [ - "3", - "3" - ], - "machine_max_speed_e": [ - "30", - "30" - ], - "machine_max_speed_x": [ - "700", - "600" - ], - "machine_max_speed_y": [ - "700", - "600" - ], - "machine_max_speed_z": [ - "20", - "20" - ], - "machine_min_extruding_rate": [ - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0" - ], - "machine_pause_gcode": "M25", - "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", - "machine_unload_filament_time": "0", - "manual_filament_change": "0", - "max_layer_height": [ - "0.28" - ], - "min_layer_height": [ - "0.08" - ], - "name": "Flashforge Guider4 Pro 0.4 nozzle", - "nozzle_diameter": [ - "0.4" - ], - "nozzle_height": "4", - "nozzle_hrc": "0", - "nozzle_type": "hardened_steel", - "nozzle_volume": "0", - "parking_pos_retraction": "0", - "preferred_orientation": "0", - "printable_area": [ - "0x0", - "300x0", - "300x300", - "0x300" - ], - "printable_height": "300", - "printer_model": "Flashforge Guider4 Pro", - "printer_notes": "", - "printer_settings_id": "Flashforge Guider4 Pro 0.4 nozzle", - "printer_structure": "undefine", - "printer_technology": "FFF", - "printer_variant": "0.4", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": [ - "100%" - ], - "retract_length_toolchange": [ - "5" - ], - "retract_lift_above": [ - "0" - ], - "retract_lift_below": [ - "0" - ], - "retract_lift_enforce": [ - "All Surfaces" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "-5" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_distances_when_cut": [ - "18" - ], - "retraction_length": [ - "2.5" - ], - "retraction_minimum_travel": [ - "1" - ], - "retraction_speed": [ - "45" - ], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "0", - "template_custom_gcode": "", - "thumbnails": "140x110/PNG", - "thumbnails_format": "PNG", - "time_cost": "0", - "time_lapse_gcode": "", - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "version": "2.1.1.0", - "wipe": [ - "1" - ], - "wipe_distance": [ - "2" - ], - "z_hop": [ - "0.4" - ], - "z_hop_types": [ - "Auto Lift" - ], - "z_offset": "0" + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": ["0x0"], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": ["Flashforge Generic PLA"], + "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "deretraction_speed": ["45"], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "165", + "extruder_clearance_height_to_rod": "42", + "extruder_clearance_radius": "75", + "extruder_colour": ["#FCE94F"], + "extruder_offset": ["0x0"], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "from": "system", + "instantiation": "true", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "inherits": "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "is_custom_defined": "0", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": ["0"], + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["30000", "20000"], + "machine_max_acceleration_retracting": ["5000", "5000"], + "machine_max_acceleration_travel": ["20000", "20000"], + "machine_max_acceleration_x": ["30000", "20000"], + "machine_max_acceleration_y": ["30000", "20000"], + "machine_max_acceleration_z": ["500", "500"], + "machine_max_jerk_e": ["2.5", "2.5"], + "machine_max_jerk_x": ["9", "9"], + "machine_max_jerk_y": ["9", "9"], + "machine_max_jerk_z": ["3", "3"], + "machine_max_speed_e": ["30", "30"], + "machine_max_speed_x": ["700", "600"], + "machine_max_speed_y": ["700", "600"], + "machine_max_speed_z": ["20", "20"], + "machine_min_extruding_rate": ["0", "0"], + "machine_min_travel_rate": ["0", "0"], + "machine_pause_gcode": "M25", + "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": ["0.28"], + "min_layer_height": ["0.08"], + "name": "Flashforge Guider4 Pro 0.4 nozzle", + "nozzle_diameter": ["0.4"], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "preferred_orientation": "0", + "printable_area": ["0x0", "300x0", "300x300", "0x300"], + "printable_height": "300", + "printer_model": "Flashforge Guider4 Pro", + "printer_notes": "", + "printer_settings_id": "Flashforge Guider4 Pro 0.4 nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.4", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": ["100%"], + "retract_length_toolchange": ["5"], + "retract_lift_above": ["0"], + "retract_lift_below": ["0"], + "retract_lift_enforce": ["All Surfaces"], + "retract_restart_extra": ["0"], + "retract_restart_extra_toolchange": ["-5"], + "retract_when_changing_layer": ["1"], + "retraction_distances_when_cut": ["18"], + "retraction_length": ["2.5"], + "retraction_minimum_travel": ["1"], + "retraction_speed": ["45"], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "0", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "2.1.1.0", + "wipe": ["1"], + "wipe_distance": ["2"], + "z_hop": ["0.4"], + "z_hop_types": ["Auto Lift"], + "z_offset": "0" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 HF nozzle.json index 284dbdeaeb..c8bdbc50de 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 HF nozzle.json @@ -1,226 +1,120 @@ { - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": [ - "0x0" - ], - "bed_mesh_max": "99999,99999", - "bed_mesh_min": "-99999,-99999", - "bed_mesh_probe_distance": "50,50", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "default_filament_profile": [ - "Flashforge Generic PLA @G3U 0.6 Nozzle" - ], - "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "deretraction_speed": [ - "30" - ], - "disable_m73": "0", - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "165", - "extruder_clearance_height_to_rod": "42", - "extruder_clearance_radius": "75", - "extruder_colour": [ - "#FCE94F" - ], - "extruder_offset": [ - "0x0" - ], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "from": "system", - "instantiation": "true", - "gcode_flavor": "klipper", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "inherits": "Flashforge Guider 3 Ultra 0.6 Nozzle", - "is_custom_defined": "0", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "long_retractions_when_cut": [ - "0" - ], - "machine_end_gcode": "M104 S0\nM140 S0\nG1 E-2 F3600\nG0 X50 Y50 F30000\nM106 P101 S0\nM106 S0", - "machine_load_filament_time": "0", - "machine_max_acceleration_e": [ - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "30000", - "20000" - ], - "machine_max_acceleration_retracting": [ - "5000", - "5000" - ], - "machine_max_acceleration_travel": [ - "20000", - "20000" - ], - "machine_max_acceleration_x": [ - "30000", - "20000" - ], - "machine_max_acceleration_y": [ - "30000", - "20000" - ], - "machine_max_acceleration_z": [ - "50", - "500" - ], - "machine_max_jerk_e": [ - "2.5", - "2.5" - ], - "machine_max_jerk_x": [ - "9", - "9" - ], - "machine_max_jerk_y": [ - "9", - "9" - ], - "machine_max_jerk_z": [ - "3", - "3" - ], - "machine_max_speed_e": [ - "40", - "30" - ], - "machine_max_speed_x": [ - "600", - "600" - ], - "machine_max_speed_y": [ - "600", - "600" - ], - "machine_max_speed_z": [ - "20", - "20" - ], - "machine_min_extruding_rate": [ - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0" - ], - "machine_pause_gcode": "M25", - "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", - "machine_unload_filament_time": "0", - "manual_filament_change": "0", - "max_layer_height": [ - "0.42" - ], - "min_layer_height": [ - "0.15" - ], - "name": "Flashforge Guider4 Pro 0.6 HF nozzle", - "nozzle_diameter": [ - "0.6" - ], - "nozzle_height": "4", - "nozzle_hrc": "0", - "nozzle_type": "stainless_steel", - "nozzle_volume": "0", - "parking_pos_retraction": "0", - "preferred_orientation": "0", - "printable_area": [ - "0x0", - "300x0", - "300x300", - "0x300" - ], - "printable_height": "301", - "printer_model": "Flashforge Guider4 Pro", - "printer_notes": "", - "printer_settings_id": "Flashforge Guider4 Pro 0.6 HF nozzle", - "printer_structure": "undefine", - "printer_technology": "FFF", - "printer_variant": "0.6", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": [ - "100%" - ], - "retract_length_toolchange": [ - "3" - ], - "retract_lift_above": [ - "0" - ], - "retract_lift_below": [ - "0" - ], - "retract_lift_enforce": [ - "All Surfaces" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "0" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_distances_when_cut": [ - "18" - ], - "retraction_length": [ - "1.2" - ], - "retraction_minimum_travel": [ - "2" - ], - "retraction_speed": [ - "30" - ], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "0", - "template_custom_gcode": "", - "thumbnails": "140x110/PNG", - "thumbnails_format": "PNG", - "time_cost": "0", - "time_lapse_gcode": "", - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "version": "2.1.1.0", - "wipe": [ - "1" - ], - "wipe_distance": [ - "2.2" - ], - "z_hop": [ - "0.4" - ], - "z_hop_types": [ - "Auto Lift" - ], - "z_offset": "0" + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": ["0x0"], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": ["Flashforge Generic PLA @G3U 0.6 Nozzle"], + "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "deretraction_speed": ["30"], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "165", + "extruder_clearance_height_to_rod": "42", + "extruder_clearance_radius": "75", + "extruder_colour": ["#FCE94F"], + "extruder_offset": ["0x0"], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "from": "system", + "instantiation": "true", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "inherits": "Flashforge Guider 3 Ultra 0.6 Nozzle", + "is_custom_defined": "0", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": ["0"], + "machine_end_gcode": "M104 S0\nM140 S0\nG1 E-2 F3600\nG0 X50 Y50 F30000\nM106 P101 S0\nM106 S0", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["30000", "20000"], + "machine_max_acceleration_retracting": ["5000", "5000"], + "machine_max_acceleration_travel": ["20000", "20000"], + "machine_max_acceleration_x": ["30000", "20000"], + "machine_max_acceleration_y": ["30000", "20000"], + "machine_max_acceleration_z": ["50", "500"], + "machine_max_jerk_e": ["2.5", "2.5"], + "machine_max_jerk_x": ["9", "9"], + "machine_max_jerk_y": ["9", "9"], + "machine_max_jerk_z": ["3", "3"], + "machine_max_speed_e": ["40", "30"], + "machine_max_speed_x": ["600", "600"], + "machine_max_speed_y": ["600", "600"], + "machine_max_speed_z": ["20", "20"], + "machine_min_extruding_rate": ["0", "0"], + "machine_min_travel_rate": ["0", "0"], + "machine_pause_gcode": "M25", + "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": ["0.42"], + "min_layer_height": ["0.15"], + "name": "Flashforge Guider4 Pro 0.6 HF nozzle", + "nozzle_diameter": ["0.6"], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "stainless_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "preferred_orientation": "0", + "printable_area": ["0x0", "300x0", "300x300", "0x300"], + "printable_height": "301", + "printer_model": "Flashforge Guider4 Pro", + "printer_notes": "", + "printer_settings_id": "Flashforge Guider4 Pro 0.6 HF nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.6", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": ["100%"], + "retract_length_toolchange": ["3"], + "retract_lift_above": ["0"], + "retract_lift_below": ["0"], + "retract_lift_enforce": ["All Surfaces"], + "retract_restart_extra": ["0"], + "retract_restart_extra_toolchange": ["0"], + "retract_when_changing_layer": ["1"], + "retraction_distances_when_cut": ["18"], + "retraction_length": ["1.2"], + "retraction_minimum_travel": ["2"], + "retraction_speed": ["30"], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "0", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "2.1.1.0", + "wipe": ["1"], + "wipe_distance": ["2.2"], + "z_hop": ["0.4"], + "z_hop_types": ["Auto Lift"], + "z_offset": "0" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 nozzle.json index 346087619d..fde018c6bb 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 nozzle.json @@ -1,226 +1,120 @@ { - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": [ - "0x0" - ], - "bed_mesh_max": "99999,99999", - "bed_mesh_min": "-99999,-99999", - "bed_mesh_probe_distance": "50,50", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "; change filament start", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "default_filament_profile": [ - "Flashforge Generic PLA @G3U 0.6 Nozzle" - ], - "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "deretraction_speed": [ - "30" - ], - "disable_m73": "0", - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "165", - "extruder_clearance_height_to_rod": "42", - "extruder_clearance_radius": "75", - "extruder_colour": [ - "#FCE94F" - ], - "extruder_offset": [ - "0x0" - ], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "from": "system", - "instantiation": "true", - "gcode_flavor": "klipper", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "inherits": "Flashforge Guider 3 Ultra 0.6 Nozzle", - "is_custom_defined": "0", - "layer_change_gcode": "", - "long_retractions_when_cut": [ - "0" - ], - "machine_end_gcode": "M104 S0\nM140 S0\nG1 E-2 F3600\nG0 X50 Y50 F30000\nM106 P101 S0\nM106 S0", - "machine_load_filament_time": "0", - "machine_max_acceleration_e": [ - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "30000", - "20000" - ], - "machine_max_acceleration_retracting": [ - "5000", - "5000" - ], - "machine_max_acceleration_travel": [ - "20000", - "20000" - ], - "machine_max_acceleration_x": [ - "30000", - "20000" - ], - "machine_max_acceleration_y": [ - "30000", - "20000" - ], - "machine_max_acceleration_z": [ - "50", - "500" - ], - "machine_max_jerk_e": [ - "2.5", - "2.5" - ], - "machine_max_jerk_x": [ - "9", - "9" - ], - "machine_max_jerk_y": [ - "9", - "9" - ], - "machine_max_jerk_z": [ - "3", - "3" - ], - "machine_max_speed_e": [ - "35", - "30" - ], - "machine_max_speed_x": [ - "600", - "600" - ], - "machine_max_speed_y": [ - "600", - "600" - ], - "machine_max_speed_z": [ - "20", - "20" - ], - "machine_min_extruding_rate": [ - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0" - ], - "machine_pause_gcode": "M25", - "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", - "machine_unload_filament_time": "0", - "manual_filament_change": "0", - "max_layer_height": [ - "0.42" - ], - "min_layer_height": [ - "0.15" - ], - "name": "Flashforge Guider4 Pro 0.6 nozzle", - "nozzle_diameter": [ - "0.6" - ], - "nozzle_height": "4", - "nozzle_hrc": "0", - "nozzle_type": "hardened_steel", - "nozzle_volume": "0", - "parking_pos_retraction": "0", - "preferred_orientation": "0", - "printable_area": [ - "0x0", - "300x0", - "300x300", - "0x300" - ], - "printable_height": "301", - "printer_model": "Flashforge Guider4 Pro", - "printer_notes": "", - "printer_settings_id": "Flashforge Guider4 Pro 0.6 nozzle", - "printer_structure": "undefine", - "printer_technology": "FFF", - "printer_variant": "0.6", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": [ - "0%" - ], - "retract_length_toolchange": [ - "3" - ], - "retract_lift_above": [ - "0" - ], - "retract_lift_below": [ - "0" - ], - "retract_lift_enforce": [ - "All Surfaces" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "0" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_distances_when_cut": [ - "18" - ], - "retraction_length": [ - "1.3" - ], - "retraction_minimum_travel": [ - "3" - ], - "retraction_speed": [ - "30" - ], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "0", - "template_custom_gcode": "", - "thumbnails": "140x110/PNG", - "thumbnails_format": "PNG", - "time_cost": "0", - "time_lapse_gcode": "", - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "version": "2.1.1.0", - "wipe": [ - "1" - ], - "wipe_distance": [ - "2" - ], - "z_hop": [ - "0.4" - ], - "z_hop_types": [ - "Auto Lift" - ], - "z_offset": "0" + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": ["0x0"], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "; change filament start", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": ["Flashforge Generic PLA @G3U 0.6 Nozzle"], + "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "deretraction_speed": ["30"], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "165", + "extruder_clearance_height_to_rod": "42", + "extruder_clearance_radius": "75", + "extruder_colour": ["#FCE94F"], + "extruder_offset": ["0x0"], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "from": "system", + "instantiation": "true", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "inherits": "Flashforge Guider 3 Ultra 0.6 Nozzle", + "is_custom_defined": "0", + "layer_change_gcode": "", + "long_retractions_when_cut": ["0"], + "machine_end_gcode": "M104 S0\nM140 S0\nG1 E-2 F3600\nG0 X50 Y50 F30000\nM106 P101 S0\nM106 S0", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["30000", "20000"], + "machine_max_acceleration_retracting": ["5000", "5000"], + "machine_max_acceleration_travel": ["20000", "20000"], + "machine_max_acceleration_x": ["30000", "20000"], + "machine_max_acceleration_y": ["30000", "20000"], + "machine_max_acceleration_z": ["50", "500"], + "machine_max_jerk_e": ["2.5", "2.5"], + "machine_max_jerk_x": ["9", "9"], + "machine_max_jerk_y": ["9", "9"], + "machine_max_jerk_z": ["3", "3"], + "machine_max_speed_e": ["35", "30"], + "machine_max_speed_x": ["600", "600"], + "machine_max_speed_y": ["600", "600"], + "machine_max_speed_z": ["20", "20"], + "machine_min_extruding_rate": ["0", "0"], + "machine_min_travel_rate": ["0", "0"], + "machine_pause_gcode": "M25", + "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": ["0.42"], + "min_layer_height": ["0.15"], + "name": "Flashforge Guider4 Pro 0.6 nozzle", + "nozzle_diameter": ["0.6"], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "preferred_orientation": "0", + "printable_area": ["0x0", "300x0", "300x300", "0x300"], + "printable_height": "301", + "printer_model": "Flashforge Guider4 Pro", + "printer_notes": "", + "printer_settings_id": "Flashforge Guider4 Pro 0.6 nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.6", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": ["0%"], + "retract_length_toolchange": ["3"], + "retract_lift_above": ["0"], + "retract_lift_below": ["0"], + "retract_lift_enforce": ["All Surfaces"], + "retract_restart_extra": ["0"], + "retract_restart_extra_toolchange": ["0"], + "retract_when_changing_layer": ["1"], + "retraction_distances_when_cut": ["18"], + "retraction_length": ["1.3"], + "retraction_minimum_travel": ["3"], + "retraction_speed": ["30"], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "0", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "2.1.1.0", + "wipe": ["1"], + "wipe_distance": ["2"], + "z_hop": ["0.4"], + "z_hop_types": ["Auto Lift"], + "z_offset": "0" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.8 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.8 HF nozzle.json index 739fc618a7..fd3c4d9cf1 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.8 HF nozzle.json @@ -4,9 +4,7 @@ "bbl_use_printhost": "0", "bed_custom_model": "", "bed_custom_texture": "", - "bed_exclude_area": [ - "0x0" - ], + "bed_exclude_area": ["0x0"], "bed_mesh_max": "99999,99999", "bed_mesh_min": "-99999,-99999", "bed_mesh_probe_distance": "50,50", @@ -16,13 +14,9 @@ "change_filament_gcode": "; change filament start", "cooling_tube_length": "0", "cooling_tube_retraction": "0", - "default_filament_profile": [ - "Flashforge Generic PLA @G3U 0.6 Nozzle" - ], + "default_filament_profile": ["Flashforge Generic PLA @G3U 0.6 Nozzle"], "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "deretraction_speed": [ - "30" - ], + "deretraction_speed": ["30"], "disable_m73": "0", "emit_machine_limits_to_gcode": "1", "enable_filament_ramming": "0", @@ -31,12 +25,8 @@ "extruder_clearance_height_to_lid": "165", "extruder_clearance_height_to_rod": "42", "extruder_clearance_radius": "75", - "extruder_colour": [ - "#FCE94F" - ], - "extruder_offset": [ - "0x0" - ], + "extruder_colour": ["#FCE94F"], + "extruder_offset": ["0x0"], "fan_kickstart": "0", "fan_speedup_overhangs": "1", "fan_speedup_time": "0", @@ -49,105 +39,41 @@ "inherits": "Flashforge Guider 3 Ultra 0.6 Nozzle", "is_custom_defined": "0", "layer_change_gcode": "", - "long_retractions_when_cut": [ - "0" - ], + "long_retractions_when_cut": ["0"], "machine_end_gcode": "M104 S0\nM140 S0\nG1 E-2 F3600\nG0 X50 Y50 F30000\nM106 P101 S0\nM106 S0", "machine_load_filament_time": "0", - "machine_max_acceleration_e": [ - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "30000", - "20000" - ], - "machine_max_acceleration_retracting": [ - "5000", - "5000" - ], - "machine_max_acceleration_travel": [ - "20000", - "20000" - ], - "machine_max_acceleration_x": [ - "30000", - "20000" - ], - "machine_max_acceleration_y": [ - "30000", - "20000" - ], - "machine_max_acceleration_z": [ - "50", - "500" - ], - "machine_max_jerk_e": [ - "2.5", - "2.5" - ], - "machine_max_jerk_x": [ - "9", - "9" - ], - "machine_max_jerk_y": [ - "9", - "9" - ], - "machine_max_jerk_z": [ - "3", - "3" - ], - "machine_max_speed_e": [ - "35", - "30" - ], - "machine_max_speed_x": [ - "600", - "600" - ], - "machine_max_speed_y": [ - "600", - "600" - ], - "machine_max_speed_z": [ - "20", - "20" - ], - "machine_min_extruding_rate": [ - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0" - ], + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["30000", "20000"], + "machine_max_acceleration_retracting": ["5000", "5000"], + "machine_max_acceleration_travel": ["20000", "20000"], + "machine_max_acceleration_x": ["30000", "20000"], + "machine_max_acceleration_y": ["30000", "20000"], + "machine_max_acceleration_z": ["50", "500"], + "machine_max_jerk_e": ["2.5", "2.5"], + "machine_max_jerk_x": ["9", "9"], + "machine_max_jerk_y": ["9", "9"], + "machine_max_jerk_z": ["3", "3"], + "machine_max_speed_e": ["35", "30"], + "machine_max_speed_x": ["600", "600"], + "machine_max_speed_y": ["600", "600"], + "machine_max_speed_z": ["20", "20"], + "machine_min_extruding_rate": ["0", "0"], + "machine_min_travel_rate": ["0", "0"], "machine_pause_gcode": "M25", "machine_start_gcode": "START_GCODE\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z2 F6000\nG1 X2 Y150 F1800\nG1 Z0.3 F6000\nG1 Y2 E30 F1800", "machine_unload_filament_time": "0", "manual_filament_change": "0", - "max_layer_height": [ - "0.56" - ], - "min_layer_height": [ - "0.24" - ], + "max_layer_height": ["0.56"], + "min_layer_height": ["0.24"], "name": "Flashforge Guider4 Pro 0.8 HF nozzle", - "nozzle_diameter": [ - "0.8" - ], + "nozzle_diameter": ["0.8"], "nozzle_height": "4", "nozzle_hrc": "0", "nozzle_type": "stainless_steel", "nozzle_volume": "0", "parking_pos_retraction": "0", "preferred_orientation": "0", - "printable_area": [ - "0x0", - "300x0", - "300x300", - "0x300" - ], + "printable_area": ["0x0", "300x0", "300x300", "0x300"], "printable_height": "301", "printer_model": "Flashforge Guider4 Pro", "printer_notes": "", @@ -159,42 +85,18 @@ "printhost_ssl_ignore_revoke": "0", "printing_by_object_gcode": "", "purge_in_prime_tower": "0", - "retract_before_wipe": [ - "0%" - ], - "retract_length_toolchange": [ - "3" - ], - "retract_lift_above": [ - "0" - ], - "retract_lift_below": [ - "0" - ], - "retract_lift_enforce": [ - "All Surfaces" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "0" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_distances_when_cut": [ - "18" - ], - "retraction_length": [ - "1.5" - ], - "retraction_minimum_travel": [ - "3" - ], - "retraction_speed": [ - "30" - ], + "retract_before_wipe": ["0%"], + "retract_length_toolchange": ["3"], + "retract_lift_above": ["0"], + "retract_lift_below": ["0"], + "retract_lift_enforce": ["All Surfaces"], + "retract_restart_extra": ["0"], + "retract_restart_extra_toolchange": ["0"], + "retract_when_changing_layer": ["1"], + "retraction_distances_when_cut": ["18"], + "retraction_length": ["1.5"], + "retraction_minimum_travel": ["3"], + "retraction_speed": ["30"], "scan_first_layer": "0", "silent_mode": "0", "single_extruder_multi_material": "1", @@ -210,17 +112,9 @@ "use_firmware_retraction": "0", "use_relative_e_distances": "1", "version": "2.1.1.0", - "wipe": [ - "1" - ], - "wipe_distance": [ - "2" - ], - "z_hop": [ - "0.4" - ], - "z_hop_types": [ - "Auto Lift" - ], + "wipe": ["1"], + "wipe_distance": ["2"], + "z_hop": ["0.4"], + "z_hop_types": ["Auto Lift"], "z_offset": "0" } diff --git a/resources/profiles/Flashforge/machine/fdm_adventurer3_common.json b/resources/profiles/Flashforge/machine/fdm_adventurer3_common.json index 33f7d08b35..19e0547bd5 100644 --- a/resources/profiles/Flashforge/machine/fdm_adventurer3_common.json +++ b/resources/profiles/Flashforge/machine/fdm_adventurer3_common.json @@ -1,64 +1,59 @@ { - "type": "machine", - "name": "fdm_adventurer3_common", - "from": "system", - "instantiation": "false", - "inherits": "fdm_flashforge_common", - "gcode_flavor": "marlin", - "printable_area": [ - "-75x-75", - "75x-75", - "75x75", - "-75x75" - ], - "printable_height": "150", - "machine_max_acceleration_e": [ "500" ], - "machine_max_acceleration_extruding": [ "500" ], - "machine_max_acceleration_retracting": [ "500" ], - "machine_max_acceleration_travel": [ "500" ], - "machine_max_acceleration_x": [ "500" ], - "machine_max_acceleration_y": [ "500" ], - "machine_max_acceleration_z": [ "100" ], - "machine_max_speed_e": [ "30" ], - "machine_max_speed_x": [ "150" ], - "machine_max_speed_y": [ "150" ], - "machine_max_speed_z": [ "20" ], - "machine_max_jerk_e": [ "2.5" ], - "machine_max_jerk_x": [ "8" ], - "machine_max_jerk_y": [ "8" ], - "machine_max_jerk_z": [ "0.4" ], - "printer_settings_id": "Flashforge", - "retraction_minimum_travel": [ "1" ], - "retract_before_wipe": [ "100%" ], - "retraction_length": [ "5" ], - "retract_length_toolchange": [ "2" ], - "retraction_speed": [ "25"], - "deretraction_speed": [ "25" ], - "z_hop": [ "0.4" ], - "single_extruder_multi_material": "1", - "enable_filament_ramming": "0", - "purge_in_prime_tower": "0", - "change_filament_gcode": "M600", - "machine_pause_gcode": "M25", - "default_filament_profile": [ "Flashforge PLA" ], - "machine_start_gcode": "M140 S[bed_temperature_initial_layer] T0\nM104 S[nozzle_temperature_initial_layer] T0\nM104 S0 T1\nM107\nM900 K[pressure_advance] T0\nG90\nG28\nM132 X Y Z A B\nG1 Z50.000 F420\nG161 X Y F3300\nM7 T0\nM6 T0\nM651 S255\n;pre-extrude\nM108 T0\nG1 X-37.50 Y-75.00 F6000\nM106\nG1 Z0.200 F420\nG1 X-37.50 Y-74.50 F6000\nG1 X37.50 Y-74.50 E9.5 F1200\n", - "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F9000\nM104 S0 T0\nM140 S0 T0\nG162 Z F1800\nG28 X Y\nM132 X Y A B\nM652\nG91\nM18", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "scan_first_layer": "0", - "thumbnails": "80x60", - "use_relative_e_distances": "0", - "z_hop_types": "Auto Lift", - "wipe_distance": "2", - "extruder_clearance_radius": "42.3", - "extruder_clearance_height_to_rod": "24.93", - "extruder_clearance_height_to_lid": "150", - "manual_filament_change": "1", - "nozzle_type": "stainless_steel", - "auxiliary_fan": "1", - "parking_pos_retraction": "0", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "extra_loading_move": "0", - "version": "2.0.2.0" + "type": "machine", + "name": "fdm_adventurer3_common", + "from": "system", + "instantiation": "false", + "inherits": "fdm_flashforge_common", + "gcode_flavor": "marlin", + "printable_area": ["-75x-75", "75x-75", "75x75", "-75x75"], + "printable_height": "150", + "machine_max_acceleration_e": ["500"], + "machine_max_acceleration_extruding": ["500"], + "machine_max_acceleration_retracting": ["500"], + "machine_max_acceleration_travel": ["500"], + "machine_max_acceleration_x": ["500"], + "machine_max_acceleration_y": ["500"], + "machine_max_acceleration_z": ["100"], + "machine_max_speed_e": ["30"], + "machine_max_speed_x": ["150"], + "machine_max_speed_y": ["150"], + "machine_max_speed_z": ["20"], + "machine_max_jerk_e": ["2.5"], + "machine_max_jerk_x": ["8"], + "machine_max_jerk_y": ["8"], + "machine_max_jerk_z": ["0.4"], + "printer_settings_id": "Flashforge", + "retraction_minimum_travel": ["1"], + "retract_before_wipe": ["100%"], + "retraction_length": ["5"], + "retract_length_toolchange": ["2"], + "retraction_speed": ["25"], + "deretraction_speed": ["25"], + "z_hop": ["0.4"], + "single_extruder_multi_material": "1", + "enable_filament_ramming": "0", + "purge_in_prime_tower": "0", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M25", + "default_filament_profile": ["Flashforge PLA"], + "machine_start_gcode": "M140 S[bed_temperature_initial_layer] T0\nM104 S[nozzle_temperature_initial_layer] T0\nM104 S0 T1\nM107\nM900 K[pressure_advance] T0\nG90\nG28\nM132 X Y Z A B\nG1 Z50.000 F420\nG161 X Y F3300\nM7 T0\nM6 T0\nM651 S255\n;pre-extrude\nM108 T0\nG1 X-37.50 Y-75.00 F6000\nM106\nG1 Z0.200 F420\nG1 X-37.50 Y-74.50 F6000\nG1 X37.50 Y-74.50 E9.5 F1200\n", + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F9000\nM104 S0 T0\nM140 S0 T0\nG162 Z F1800\nG28 X Y\nM132 X Y A B\nM652\nG91\nM18", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "scan_first_layer": "0", + "thumbnails": "80x60", + "use_relative_e_distances": "0", + "z_hop_types": "Auto Lift", + "wipe_distance": "2", + "extruder_clearance_radius": "42.3", + "extruder_clearance_height_to_rod": "24.93", + "extruder_clearance_height_to_lid": "150", + "manual_filament_change": "1", + "nozzle_type": "stainless_steel", + "auxiliary_fan": "1", + "parking_pos_retraction": "0", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "extra_loading_move": "0", + "version": "2.0.2.0" } diff --git a/resources/profiles/Flashforge/machine/fdm_adventurer5m_common.json b/resources/profiles/Flashforge/machine/fdm_adventurer5m_common.json index d6e5d7490e..482071926e 100644 --- a/resources/profiles/Flashforge/machine/fdm_adventurer5m_common.json +++ b/resources/profiles/Flashforge/machine/fdm_adventurer5m_common.json @@ -1,58 +1,51 @@ { - "type": "machine", - "name": "fdm_adventurer5m_common", - "from": "system", - "instantiation": "false", - "inherits": "fdm_flashforge_common", - "gcode_flavor": "klipper", - "printable_area": [ - "-110x-110", - "110x-110", - "110x110", - "-110x110" - ], - "printable_height": "220", - "auxiliary_fan": "1", - "machine_max_acceleration_e": [ "5000", "5000" ], - "machine_max_acceleration_extruding": [ "20000", "20000" ], - "machine_max_acceleration_retracting": [ "5000", "5000" ], - "machine_max_acceleration_travel": [ "20000", "20000" ], - "machine_max_acceleration_x": [ "20000", "20000" ], - "machine_max_acceleration_y": [ "20000", "20000" ], - "machine_max_acceleration_z": [ "500", "500" ], - "machine_max_speed_e": [ "30", "30" ], - "machine_max_speed_x": [ "600", "600" ], - "machine_max_speed_y": [ "600", "600" ], - "machine_max_speed_z": [ "20", "20" ], - "machine_max_jerk_e": [ "2.5", "2.5" ], - "machine_max_jerk_x": [ "9", "9" ], - "machine_max_jerk_y": [ "9", "9" ], - "machine_max_jerk_z": [ "3", "3" ], - "printer_settings_id": "Flashforge", - "retraction_minimum_travel": [ "1" ], - "retract_before_wipe": [ "100%" ], - "retract_length_toolchange": [ "2" ], - "deretraction_speed": [ "35" ], - "z_hop": [ "0.4" ], - "single_extruder_multi_material": "0", - "change_filament_gcode": "", - "machine_pause_gcode": "M25", - "support_multi_bed_types": "1", - "default_filament_profile": [ "Flashforge Generic PLA" ], - "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z5 F6000\nG1 E-0.2 F800\nG1 X110 Y-110 F6000\nG1 E2 F800\nG1 Y-110 X55 Z0.25 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG1 Y-110 X55 Z0.45 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG92 E0", - "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "scan_first_layer": "0", - "thumbnails": [ - "140x110" - ], - "use_relative_e_distances": "1", - "z_hop_types": "Auto Lift", - "retraction_speed": [ "35" ], - "wipe_distance": "2", - "extruder_clearance_radius": [ "76" ], - "extruder_clearance_height_to_rod": [ "27" ], - "extruder_clearance_height_to_lid": [ "150" ], - "version": "1.8.0.0" + "type": "machine", + "name": "fdm_adventurer5m_common", + "from": "system", + "instantiation": "false", + "inherits": "fdm_flashforge_common", + "gcode_flavor": "klipper", + "printable_area": ["-110x-110", "110x-110", "110x110", "-110x110"], + "printable_height": "220", + "auxiliary_fan": "1", + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["5000", "5000"], + "machine_max_acceleration_travel": ["20000", "20000"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["500", "500"], + "machine_max_speed_e": ["30", "30"], + "machine_max_speed_x": ["600", "600"], + "machine_max_speed_y": ["600", "600"], + "machine_max_speed_z": ["20", "20"], + "machine_max_jerk_e": ["2.5", "2.5"], + "machine_max_jerk_x": ["9", "9"], + "machine_max_jerk_y": ["9", "9"], + "machine_max_jerk_z": ["3", "3"], + "printer_settings_id": "Flashforge", + "retraction_minimum_travel": ["1"], + "retract_before_wipe": ["100%"], + "retract_length_toolchange": ["2"], + "deretraction_speed": ["35"], + "z_hop": ["0.4"], + "single_extruder_multi_material": "0", + "change_filament_gcode": "", + "machine_pause_gcode": "M25", + "support_multi_bed_types": "1", + "default_filament_profile": ["Flashforge Generic PLA"], + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z5 F6000\nG1 E-0.2 F800\nG1 X110 Y-110 F6000\nG1 E2 F800\nG1 Y-110 X55 Z0.25 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG1 Y-110 X55 Z0.45 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG92 E0", + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "scan_first_layer": "0", + "thumbnails": ["140x110"], + "use_relative_e_distances": "1", + "z_hop_types": "Auto Lift", + "retraction_speed": ["35"], + "wipe_distance": "2", + "extruder_clearance_radius": ["76"], + "extruder_clearance_height_to_rod": ["27"], + "extruder_clearance_height_to_lid": ["150"], + "version": "1.8.0.0" } diff --git a/resources/profiles/Flashforge/machine/fdm_flashforge_common.json b/resources/profiles/Flashforge/machine/fdm_flashforge_common.json index d8b455ab79..03c5d5c6f5 100644 --- a/resources/profiles/Flashforge/machine/fdm_flashforge_common.json +++ b/resources/profiles/Flashforge/machine/fdm_flashforge_common.json @@ -5,80 +5,25 @@ "instantiation": "false", "inherits": "fdm_machine_common", "gcode_flavor": "marlin", - "machine_max_acceleration_e": [ - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "500", - "500" - ], - "machine_max_acceleration_retracting": [ - "1000", - "1000" - ], - "machine_max_acceleration_travel": [ - "500", - "500" - ], - "machine_max_acceleration_x": [ - "500", - "500" - ], - "machine_max_acceleration_y": [ - "500", - "500" - ], - "machine_max_acceleration_z": [ - "100", - "100" - ], - "machine_max_speed_e": [ - "60", - "60" - ], - "machine_max_speed_x": [ - "500", - "500" - ], - "machine_max_speed_y": [ - "500", - "500" - ], - "machine_max_speed_z": [ - "10", - "10" - ], - "machine_max_jerk_e": [ - "5", - "5" - ], - "machine_max_jerk_x": [ - "8", - "8" - ], - "machine_max_jerk_y": [ - "8", - "8" - ], - "machine_max_jerk_z": [ - "0.4", - "0.4" - ], - "machine_min_extruding_rate": [ - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0" - ], - "max_layer_height": [ - "0.32" - ], - "min_layer_height": [ - "0.08" - ], + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["500", "500"], + "machine_max_acceleration_retracting": ["1000", "1000"], + "machine_max_acceleration_travel": ["500", "500"], + "machine_max_acceleration_x": ["500", "500"], + "machine_max_acceleration_y": ["500", "500"], + "machine_max_acceleration_z": ["100", "100"], + "machine_max_speed_e": ["60", "60"], + "machine_max_speed_x": ["500", "500"], + "machine_max_speed_y": ["500", "500"], + "machine_max_speed_z": ["10", "10"], + "machine_max_jerk_e": ["5", "5"], + "machine_max_jerk_x": ["8", "8"], + "machine_max_jerk_y": ["8", "8"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_min_extruding_rate": ["0", "0"], + "machine_min_travel_rate": ["0", "0"], + "max_layer_height": ["0.32"], + "min_layer_height": ["0.08"], "printable_height": "250", "extruder_clearance_radius": "47", "extruder_clearance_height_to_rod": "34", @@ -86,50 +31,24 @@ "printer_settings_id": "", "printer_technology": "FFF", "printer_variant": "0.4", - "retraction_minimum_travel": [ - "2" - ], - "retract_before_wipe": [ - "70%" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_length": [ - "5" - ], - "retract_length_toolchange": [ - "2" - ], - "z_hop": [ - "0.4" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "0" - ], - "retraction_speed": [ - "60" - ], - "deretraction_speed": [ - "40" - ], + "retraction_minimum_travel": ["2"], + "retract_before_wipe": ["70%"], + "retract_when_changing_layer": ["1"], + "retraction_length": ["5"], + "retract_length_toolchange": ["2"], + "z_hop": ["0.4"], + "retract_restart_extra": ["0"], + "retract_restart_extra_toolchange": ["0"], + "retraction_speed": ["60"], + "deretraction_speed": ["40"], "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "M25", - "wipe": [ - "1" - ], - "default_filament_profile": [ - "Flashforge Generic PLA" - ], + "wipe": ["1"], + "default_filament_profile": ["Flashforge Generic PLA"], "default_print_profile": "0.20mm Standard @Flashforge AD5M", - "bed_exclude_area": [ - "0x0" - ], + "bed_exclude_area": ["0x0"], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < printable_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", "layer_change_gcode": "", diff --git a/resources/profiles/Flashforge/machine/fdm_guider3_common.json b/resources/profiles/Flashforge/machine/fdm_guider3_common.json index f87391b63b..84adba7f2d 100644 --- a/resources/profiles/Flashforge/machine/fdm_guider3_common.json +++ b/resources/profiles/Flashforge/machine/fdm_guider3_common.json @@ -1,69 +1,23 @@ { - "type": "machine", - "name": "fdm_guider3_common", - "from": "system", - "instantiation": "false", - "inherits": "fdm_flashforge_common", - "gcode_flavor": "klipper", - "machine_max_acceleration_e": [ - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "20000", - "20000" - ], - "machine_max_acceleration_retracting": [ - "5000", - "5000" - ], - "machine_max_acceleration_travel": [ - "20000", - "20000" - ], - "machine_max_acceleration_x": [ - "20000", - "20000" - ], - "machine_max_acceleration_y": [ - "20000", - "20000" - ], - "machine_max_acceleration_z": [ - "500", - "500" - ], - "machine_max_jerk_e": [ - "2.5", - "2.5" - ], - "machine_max_jerk_x": [ - "9", - "9" - ], - "machine_max_jerk_y": [ - "9", - "9" - ], - "machine_max_jerk_z": [ - "3", - "3" - ], - "machine_max_speed_e": [ - "30", - "30" - ], - "machine_max_speed_x": [ - "600", - "600" - ], - "machine_max_speed_y": [ - "600", - "600" - ], - "machine_max_speed_z": [ - "20", - "20" - ] - + "type": "machine", + "name": "fdm_guider3_common", + "from": "system", + "instantiation": "false", + "inherits": "fdm_flashforge_common", + "gcode_flavor": "klipper", + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["5000", "5000"], + "machine_max_acceleration_travel": ["20000", "20000"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["500", "500"], + "machine_max_jerk_e": ["2.5", "2.5"], + "machine_max_jerk_x": ["9", "9"], + "machine_max_jerk_y": ["9", "9"], + "machine_max_jerk_z": ["3", "3"], + "machine_max_speed_e": ["30", "30"], + "machine_max_speed_x": ["600", "600"], + "machine_max_speed_y": ["600", "600"], + "machine_max_speed_z": ["20", "20"] } diff --git a/resources/profiles/Flashforge/machine/fdm_klipper_common.json b/resources/profiles/Flashforge/machine/fdm_klipper_common.json index 843090ed1f..b2229abfe8 100644 --- a/resources/profiles/Flashforge/machine/fdm_klipper_common.json +++ b/resources/profiles/Flashforge/machine/fdm_klipper_common.json @@ -5,80 +5,25 @@ "instantiation": "false", "inherits": "fdm_machine_common", "gcode_flavor": "klipper", - "machine_max_acceleration_e": [ - "20000", - "20000" - ], - "machine_max_acceleration_extruding": [ - "50000", - "50000" - ], - "machine_max_acceleration_retracting": [ - "10000", - "10000" - ], - "machine_max_acceleration_travel": [ - "50000", - "50000" - ], - "machine_max_acceleration_x": [ - "50000", - "50000" - ], - "machine_max_acceleration_y": [ - "50000", - "50000" - ], - "machine_max_acceleration_z": [ - "1000", - "500" - ], - "machine_max_speed_e": [ - "100", - "100" - ], - "machine_max_speed_x": [ - "2000", - "2000" - ], - "machine_max_speed_y": [ - "2000", - "2000" - ], - "machine_max_speed_z": [ - "15", - "15" - ], - "machine_max_jerk_e": [ - "0", - "0" - ], - "machine_max_jerk_x": [ - "0", - "0" - ], - "machine_max_jerk_y": [ - "0", - "0" - ], - "machine_max_jerk_z": [ - "0", - "0" - ], - "machine_min_extruding_rate": [ - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0" - ], - "max_layer_height": [ - "0.32" - ], - "min_layer_height": [ - "0.08" - ], + "machine_max_acceleration_e": ["20000", "20000"], + "machine_max_acceleration_extruding": ["50000", "50000"], + "machine_max_acceleration_retracting": ["10000", "10000"], + "machine_max_acceleration_travel": ["50000", "50000"], + "machine_max_acceleration_x": ["50000", "50000"], + "machine_max_acceleration_y": ["50000", "50000"], + "machine_max_acceleration_z": ["1000", "500"], + "machine_max_speed_e": ["100", "100"], + "machine_max_speed_x": ["2000", "2000"], + "machine_max_speed_y": ["2000", "2000"], + "machine_max_speed_z": ["15", "15"], + "machine_max_jerk_e": ["0", "0"], + "machine_max_jerk_x": ["0", "0"], + "machine_max_jerk_y": ["0", "0"], + "machine_max_jerk_z": ["0", "0"], + "machine_min_extruding_rate": ["0", "0"], + "machine_min_travel_rate": ["0", "0"], + "max_layer_height": ["0.32"], + "min_layer_height": ["0.08"], "printable_height": "200", "extruder_clearance_radius": "45", "extruder_clearance_height_to_rod": "36", @@ -86,51 +31,25 @@ "printer_settings_id": "", "printer_technology": "FFF", "printer_variant": "0.4", - "retraction_minimum_travel": [ - "1" - ], - "retract_before_wipe": [ - "70%" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_length": [ - "0.5" - ], - "retract_length_toolchange": [ - "2" - ], - "z_hop": [ - "0" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "0" - ], - "retraction_speed": [ - "30" - ], - "deretraction_speed": [ - "80" - ], + "retraction_minimum_travel": ["1"], + "retract_before_wipe": ["70%"], + "retract_when_changing_layer": ["1"], + "retraction_length": ["0.5"], + "retract_length_toolchange": ["2"], + "z_hop": ["0"], + "retract_restart_extra": ["0"], + "retract_restart_extra_toolchange": ["0"], + "retraction_speed": ["30"], + "deretraction_speed": ["80"], "z_lift_type": "NormalLift", "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "M25", - "wipe": [ - "1" - ], - "default_filament_profile": [ - "Flashforge Generic ABS" - ], + "wipe": ["1"], + "default_filament_profile": ["Flashforge Generic ABS"], "default_print_profile": "0.20mm Standard @Flashforge AD5M", - "bed_exclude_area": [ - "0x0" - ], + "bed_exclude_area": ["0x0"], "machine_start_gcode": "BED_MESH_PROFILE LOAD=default \nM190 S[bed_temperature_initial_layer_single] ;set bed temp \nG28; \nG1 X2 Y2 Z0 F9000 ; move to corner \nM109 S[nozzle_temperature_initial_layer] ; set nozzle temp \nG1 Z0.2 F300 ; raise nozzle to 0.2\nG92 E0.0 ; reset extruder distance position\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E21.5 F1000.0 ; intro line\nG0 Z2\n\nG92 E0.0 ; reset extruder distance position", "machine_end_gcode": "G91; //rel pos\nG1 E-5 f2000\nG1 Z10 F600 ; lift nozzle 10mm/s\nG1 E-29 f600\nM104 S0\nM140 S0 ; turn off bed\n\nM107\nG90\nG0 X117 Y200 F6000; move to back\nM84 ; disable motors\nDSLR_SNAPSHOT\nRSCS_off\n\nexhaustfan_on\nTIMELAPSE_RENDER\n\nG4 P60000 ; //Dwell for 1min\nM107 \nexhaustfan_off\n\nG4 P120000\n\npower_off ; //this is with moonraker", "layer_change_gcode": ";DSLR_SNAPSHOT\nTIMELAPSE_TAKE_FRAME", diff --git a/resources/profiles/Flashforge/machine/fdm_machine_common.json b/resources/profiles/Flashforge/machine/fdm_machine_common.json index 69a2698dff..ca8a839436 100644 --- a/resources/profiles/Flashforge/machine/fdm_machine_common.json +++ b/resources/profiles/Flashforge/machine/fdm_machine_common.json @@ -1,118 +1,54 @@ { - "type": "machine", - "name": "fdm_machine_common", - "from": "system", - "instantiation": "false", - "printer_technology": "FFF", - "deretraction_speed": [ - "40" - ], - "extruder_colour": [ - "#FCE94F" - ], - "extruder_offset": [ - "0x0" - ], - "gcode_flavor": "klipper", - "silent_mode": "0", - "machine_max_acceleration_e": [ - "5000" - ], - "machine_max_acceleration_extruding": [ - "500" - ], - "machine_max_acceleration_retracting": [ - "1000" - ], - "machine_max_acceleration_x": [ - "500" - ], - "machine_max_acceleration_y": [ - "500" - ], - "machine_max_acceleration_z": [ - "100" - ], - "machine_max_speed_e": [ - "60" - ], - "machine_max_speed_x": [ - "500" - ], - "machine_max_speed_y": [ - "500" - ], - "machine_max_speed_z": [ - "10" - ], - "machine_max_jerk_e": [ - "5" - ], - "machine_max_jerk_x": [ - "8" - ], - "machine_max_jerk_y": [ - "8" - ], - "machine_max_jerk_z": [ - "0.4" - ], - "machine_min_extruding_rate": [ - "0" - ], - "machine_min_travel_rate": [ - "0" - ], - "max_layer_height": [ - "0.32" - ], - "min_layer_height": [ - "0.08" - ], - "printable_height": "250", - "extruder_clearance_radius": "65", - "extruder_clearance_height_to_rod": "36", - "extruder_clearance_height_to_lid": "140", - "nozzle_diameter": [ - "0.4" - ], - "printer_settings_id": "", - "printer_variant": "0.4", - "retraction_minimum_travel": [ - "2" - ], - "retract_before_wipe": [ - "70%" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_length": [ - "1" - ], - "retract_length_toolchange": [ - "1" - ], - "z_hop": [ - "0" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "0" - ], - "retraction_speed": [ - "60" - ], - "single_extruder_multi_material": "1", - "change_filament_gcode": "", - "wipe": [ - "1" - ], - "z_lift_type": "NormalLift", - "default_print_profile": "0.20mm Standard @Flashforge AD5M", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", - "machine_start_gcode": "", - "machine_end_gcode": "" + "type": "machine", + "name": "fdm_machine_common", + "from": "system", + "instantiation": "false", + "printer_technology": "FFF", + "deretraction_speed": ["40"], + "extruder_colour": ["#FCE94F"], + "extruder_offset": ["0x0"], + "gcode_flavor": "klipper", + "silent_mode": "0", + "machine_max_acceleration_e": ["5000"], + "machine_max_acceleration_extruding": ["500"], + "machine_max_acceleration_retracting": ["1000"], + "machine_max_acceleration_x": ["500"], + "machine_max_acceleration_y": ["500"], + "machine_max_acceleration_z": ["100"], + "machine_max_speed_e": ["60"], + "machine_max_speed_x": ["500"], + "machine_max_speed_y": ["500"], + "machine_max_speed_z": ["10"], + "machine_max_jerk_e": ["5"], + "machine_max_jerk_x": ["8"], + "machine_max_jerk_y": ["8"], + "machine_max_jerk_z": ["0.4"], + "machine_min_extruding_rate": ["0"], + "machine_min_travel_rate": ["0"], + "max_layer_height": ["0.32"], + "min_layer_height": ["0.08"], + "printable_height": "250", + "extruder_clearance_radius": "65", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_height_to_lid": "140", + "nozzle_diameter": ["0.4"], + "printer_settings_id": "", + "printer_variant": "0.4", + "retraction_minimum_travel": ["2"], + "retract_before_wipe": ["70%"], + "retract_when_changing_layer": ["1"], + "retraction_length": ["1"], + "retract_length_toolchange": ["1"], + "z_hop": ["0"], + "retract_restart_extra": ["0"], + "retract_restart_extra_toolchange": ["0"], + "retraction_speed": ["60"], + "single_extruder_multi_material": "1", + "change_filament_gcode": "", + "wipe": ["1"], + "z_lift_type": "NormalLift", + "default_print_profile": "0.20mm Standard @Flashforge AD5M", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", + "machine_start_gcode": "", + "machine_end_gcode": "" } diff --git a/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M 0.25 Nozzle.json index 99a2e5d71c..21846fd769 100644 --- a/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M 0.25 Nozzle.json @@ -4,9 +4,7 @@ "setting_id": "GP001", "instantiation": "true", "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.25 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M 0.25 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "is_custom_defined": "0", diff --git a/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json index cbfd927d4d..6dabeb6af8 100644 --- a/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json @@ -4,9 +4,7 @@ "setting_id": "GP001", "instantiation": "true", "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "compatible_printers": [ - "Flashforge Adventurer 5M Pro 0.25 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M Pro 0.25 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "is_custom_defined": "0", diff --git a/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M 0.25 Nozzle.json index 001e36e7fa..2cb1599383 100644 --- a/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M 0.25 Nozzle.json @@ -4,9 +4,7 @@ "setting_id": "GP001", "instantiation": "true", "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.25 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M 0.25 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "is_custom_defined": "0", diff --git a/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json index a531a1ec31..7f10a6966b 100644 --- a/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json @@ -4,9 +4,7 @@ "setting_id": "GP001", "instantiation": "true", "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "compatible_printers": [ - "Flashforge Adventurer 5M Pro 0.25 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M Pro 0.25 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "is_custom_defined": "0", diff --git a/resources/profiles/Flashforge/process/0.10mm Standard @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.10mm Standard @FF AD5X 0.25 nozzle.json index 9afc3deaf1..9e58c48477 100644 --- a/resources/profiles/Flashforge/process/0.10mm Standard @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/process/0.10mm Standard @FF AD5X 0.25 nozzle.json @@ -1,25 +1,23 @@ { - "type": "process", - "brim_type": "auto_brim", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "setting_id": "GP012", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.25 nozzle" - ], - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "layer_height": "0.1", - "name": "0.10mm Standard @FF AD5X 0.25 nozzle", - "only_one_wall_top": "1", - "prime_tower_width": "45", - "print_settings_id": "0.10mm Standard @FF AD5X 0.25 nozzle", - "support_interface_spacing": "0.2", - "support_type": "tree(auto)", - "version": "2.2.0.0", - "wall_loops": "3" + "type": "process", + "brim_type": "auto_brim", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "setting_id": "GP012", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "layer_height": "0.1", + "name": "0.10mm Standard @FF AD5X 0.25 nozzle", + "only_one_wall_top": "1", + "prime_tower_width": "45", + "print_settings_id": "0.10mm Standard @FF AD5X 0.25 nozzle", + "support_interface_spacing": "0.2", + "support_type": "tree(auto)", + "version": "2.2.0.0", + "wall_loops": "3" } diff --git a/resources/profiles/Flashforge/process/0.10mm Standard @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.10mm Standard @FF G4P 0.25 nozzle.json index cec8bd4a69..168b5c1bfb 100644 --- a/resources/profiles/Flashforge/process/0.10mm Standard @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/process/0.10mm Standard @FF G4P 0.25 nozzle.json @@ -6,9 +6,7 @@ "filter_out_gap_fill": "0.1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.25 nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], "gap_fill_target": "topbottom", "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", "initial_layer_infill_speed": "80", diff --git a/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M 0.25 Nozzle.json index 0cb95b1361..4f0e1b1bea 100644 --- a/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M 0.25 Nozzle.json @@ -4,9 +4,7 @@ "setting_id": "GP001", "instantiation": "true", "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.25 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M 0.25 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "is_custom_defined": "0", diff --git a/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json index a1ac228b1b..329cb836d0 100644 --- a/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json @@ -4,9 +4,7 @@ "setting_id": "GP001", "instantiation": "true", "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "compatible_printers": [ - "Flashforge Adventurer 5M Pro 0.25 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M Pro 0.25 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "is_custom_defined": "0", diff --git a/resources/profiles/Flashforge/process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json index 23d6db2099..cd7bf0f701 100644 --- a/resources/profiles/Flashforge/process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json @@ -104,7 +104,5 @@ "wall_loops": "3", "wall_infill_order": "inner wall/outer wall/infill", "wall_generator": "arachne", - "compatible_printers": [ - "Flashforge Guider 2s 0.4 nozzle" - ] + "compatible_printers": ["Flashforge Guider 2s 0.4 nozzle"] } diff --git a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json index 60eaa01aec..126e533b18 100644 --- a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json @@ -4,9 +4,7 @@ "inherits": "0.20mm Standard @Flashforge AD5M 0.4 Nozzle", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.4 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M 0.4 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "layer_height": "0.12", diff --git a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json index c318b9ffb6..43822156c8 100644 --- a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json @@ -4,9 +4,7 @@ "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M Pro 0.4 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M Pro 0.4 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "layer_height": "0.12", diff --git a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json index dd2eb087d5..1399061d20 100644 --- a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json @@ -3,9 +3,7 @@ "from": "system", "setting_id": "GP001", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.4 Nozzle" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.4 Nozzle"], "bridge_flow": "0.96", "bridge_speed": "20", "infill_wall_overlap": "25%", diff --git a/resources/profiles/Flashforge/process/0.12mm Standard @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.12mm Standard @FF AD5X 0.25 nozzle.json index f9c9dfca6b..3bf65fa919 100644 --- a/resources/profiles/Flashforge/process/0.12mm Standard @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Standard @FF AD5X 0.25 nozzle.json @@ -1,24 +1,22 @@ { - "type": "process", - "brim_type": "auto_brim", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "setting_id": "GP012", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.25 nozzle" - ], - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "0.12mm Standard @FF AD5X 0.25 nozzle", - "only_one_wall_top": "1", - "prime_tower_width": "45", - "print_settings_id": "0.12mm Standard @FF AD5X 0.25 nozzle", - "support_interface_spacing": "0.2", - "support_type": "tree(auto)", - "version": "2.2.0.0", - "wall_loops": "3" + "type": "process", + "brim_type": "auto_brim", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "setting_id": "GP012", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "name": "0.12mm Standard @FF AD5X 0.25 nozzle", + "only_one_wall_top": "1", + "prime_tower_width": "45", + "print_settings_id": "0.12mm Standard @FF AD5X 0.25 nozzle", + "support_interface_spacing": "0.2", + "support_type": "tree(auto)", + "version": "2.2.0.0", + "wall_loops": "3" } diff --git a/resources/profiles/Flashforge/process/0.12mm Standard @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.12mm Standard @FF G4P 0.25 nozzle.json index 737c6d1357..71f052dc38 100644 --- a/resources/profiles/Flashforge/process/0.12mm Standard @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Standard @FF G4P 0.25 nozzle.json @@ -6,9 +6,7 @@ "filter_out_gap_fill": "0.1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.25 nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], "gap_fill_target": "topbottom", "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", "initial_layer_infill_speed": "80", diff --git a/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M 0.25 Nozzle.json index 4830b0deb1..603254233f 100644 --- a/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M 0.25 Nozzle.json @@ -4,9 +4,7 @@ "inherits": "0.20mm Standard @Flashforge AD5M 0.4 Nozzle", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.25 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M 0.25 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "setting_id": "GP012", @@ -44,4 +42,4 @@ "tree_support_tip_diameter": "1.2", "version": "1.8.0.0", "wipe_speed": "80%" -} \ No newline at end of file +} diff --git a/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json index a7868314b1..4b2b1aafba 100644 --- a/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json @@ -4,9 +4,7 @@ "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M Pro 0.25 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M Pro 0.25 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "setting_id": "GP011", @@ -44,4 +42,4 @@ "tree_support_tip_diameter": "1.2", "version": "1.8.0.0", "wipe_speed": "80%" -} \ No newline at end of file +} diff --git a/resources/profiles/Flashforge/process/0.14mm Standard @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.14mm Standard @FF AD5X 0.25 nozzle.json index 0eefa4840e..199869de5d 100644 --- a/resources/profiles/Flashforge/process/0.14mm Standard @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/process/0.14mm Standard @FF AD5X 0.25 nozzle.json @@ -1,24 +1,22 @@ { - "type": "process", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "setting_id": "GP012", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.25 nozzle" - ], - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "layer_height": "0.14", - "name": "0.14mm Standard @FF AD5X 0.25 nozzle", - "only_one_wall_top": "1", - "prime_tower_width": "45", - "print_settings_id": "0.14mm Standard @FF AD5X 0.25 nozzle", - "support_interface_spacing": "0.2", - "support_type": "tree(auto)", - "version": "2.2.0.0", - "wall_loops": "3" + "type": "process", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "setting_id": "GP012", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "layer_height": "0.14", + "name": "0.14mm Standard @FF AD5X 0.25 nozzle", + "only_one_wall_top": "1", + "prime_tower_width": "45", + "print_settings_id": "0.14mm Standard @FF AD5X 0.25 nozzle", + "support_interface_spacing": "0.2", + "support_type": "tree(auto)", + "version": "2.2.0.0", + "wall_loops": "3" } diff --git a/resources/profiles/Flashforge/process/0.14mm Standard @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.14mm Standard @FF G4P 0.25 nozzle.json index 920fe51485..ce0fc037ba 100644 --- a/resources/profiles/Flashforge/process/0.14mm Standard @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/process/0.14mm Standard @FF G4P 0.25 nozzle.json @@ -6,9 +6,7 @@ "filter_out_gap_fill": "0.1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.25 nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], "gap_fill_target": "topbottom", "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", "initial_layer_infill_speed": "80", diff --git a/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json index c2a9c695e8..d91eca2a2e 100644 --- a/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json @@ -3,9 +3,7 @@ "from": "system", "setting_id": "GP001", "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.25 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M 0.25 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", diff --git a/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json index dce626df67..8201f71eae 100644 --- a/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json @@ -3,9 +3,7 @@ "from": "system", "setting_id": "GP001", "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M Pro 0.25 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M Pro 0.25 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", diff --git a/resources/profiles/Flashforge/process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json index 2ee3d79d14..5a39041870 100644 --- a/resources/profiles/Flashforge/process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json @@ -104,7 +104,5 @@ "wall_loops": "2", "wall_infill_order": "inner wall/outer wall/infill", "wall_generator": "arachne", - "compatible_printers": [ - "Flashforge Guider 2s 0.4 nozzle" - ] + "compatible_printers": ["Flashforge Guider 2s 0.4 nozzle"] } diff --git a/resources/profiles/Flashforge/process/0.16mm Standard @FF AD5X.json b/resources/profiles/Flashforge/process/0.16mm Standard @FF AD5X.json index 79b79b0537..25d74fc796 100644 --- a/resources/profiles/Flashforge/process/0.16mm Standard @FF AD5X.json +++ b/resources/profiles/Flashforge/process/0.16mm Standard @FF AD5X.json @@ -1,30 +1,28 @@ { - "type": "process", - "brim_type": "auto_brim", - "elefant_foot_compensation": "0.1", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "setting_id": "GP002", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" - ], - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", - "internal_solid_infill_speed": "300", - "is_custom_defined": "0", - "layer_height": "0.16", - "name": "0.16mm Standard @FF AD5X", - "only_one_wall_top": "1", - "prime_tower_width": "45", - "print_settings_id": "0.16mm Standard @FF AD5X", - "skirt_loops": "0", - "sparse_infill_speed": "330", - "support_bottom_z_distance": "0.14", - "support_interface_spacing": "0.2", - "support_top_z_distance": "0.14", - "support_type": "tree(auto)", - "version": "2.1.1.0" + "type": "process", + "brim_type": "auto_brim", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "setting_id": "GP002", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "internal_solid_infill_speed": "300", + "is_custom_defined": "0", + "layer_height": "0.16", + "name": "0.16mm Standard @FF AD5X", + "only_one_wall_top": "1", + "prime_tower_width": "45", + "print_settings_id": "0.16mm Standard @FF AD5X", + "skirt_loops": "0", + "sparse_infill_speed": "330", + "support_bottom_z_distance": "0.14", + "support_interface_spacing": "0.2", + "support_top_z_distance": "0.14", + "support_type": "tree(auto)", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/process/0.16mm Standard @FF G4P HF.json b/resources/profiles/Flashforge/process/0.16mm Standard @FF G4P HF.json index 133e7fa327..76d32da92b 100644 --- a/resources/profiles/Flashforge/process/0.16mm Standard @FF G4P HF.json +++ b/resources/profiles/Flashforge/process/0.16mm Standard @FF G4P HF.json @@ -5,9 +5,7 @@ "filter_out_gap_fill": "0.1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], "gap_fill_target": "topbottom", "infill_wall_overlap": "50%", "inherits": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", diff --git a/resources/profiles/Flashforge/process/0.16mm Standard @FF G4P.json b/resources/profiles/Flashforge/process/0.16mm Standard @FF G4P.json index ba3083e659..94562568de 100644 --- a/resources/profiles/Flashforge/process/0.16mm Standard @FF G4P.json +++ b/resources/profiles/Flashforge/process/0.16mm Standard @FF G4P.json @@ -5,9 +5,7 @@ "filter_out_gap_fill": "0.1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], "gap_fill_target": "topbottom", "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", "initial_layer_speed": "60", diff --git a/resources/profiles/Flashforge/process/0.18mm Fine @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.18mm Fine @FF AD5X 0.6 nozzle.json index 1734f42ad1..66e67f73e0 100644 --- a/resources/profiles/Flashforge/process/0.18mm Fine @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/process/0.18mm Fine @FF AD5X 0.6 nozzle.json @@ -1,25 +1,23 @@ { - "type": "process", - "brim_type": "auto_brim", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "infill_wall_overlap": "20%", - "inherits": "0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle", - "is_custom_defined": "0", - "name": "0.18mm Fine @FF AD5X 0.6 nozzle", - "only_one_wall_top": "1", - "prime_tower_brim_width": "5", - "prime_tower_width": "45", - "print_settings_id": "0.18mm Fine @FF AD5X 0.6 nozzle", - "skirt_loops": "0", - "support_bottom_z_distance": "0.22", - "support_top_z_distance": "0.22", - "version": "2.1.1.0" + "type": "process", + "brim_type": "auto_brim", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "infill_wall_overlap": "20%", + "inherits": "0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle", + "is_custom_defined": "0", + "name": "0.18mm Fine @FF AD5X 0.6 nozzle", + "only_one_wall_top": "1", + "prime_tower_brim_width": "5", + "prime_tower_width": "45", + "print_settings_id": "0.18mm Fine @FF AD5X 0.6 nozzle", + "skirt_loops": "0", + "support_bottom_z_distance": "0.22", + "support_top_z_distance": "0.22", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json index caa6ab0dc7..1494f1ddd0 100644 --- a/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json @@ -4,9 +4,7 @@ "inherits": "0.30mm Standard @Flashforge AD5M 0.6 Nozzle", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.6 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M 0.6 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "layer_height": "0.18", diff --git a/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json index 002e743952..2717caae39 100644 --- a/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json @@ -4,9 +4,7 @@ "inherits": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M Pro 0.6 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M Pro 0.6 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "layer_height": "0.18", diff --git a/resources/profiles/Flashforge/process/0.18mm Standard @Flashforge G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.18mm Standard @Flashforge G3U 0.6 Nozzle.json index 9f263a4da9..9f77dcfae1 100644 --- a/resources/profiles/Flashforge/process/0.18mm Standard @Flashforge G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.18mm Standard @Flashforge G3U 0.6 Nozzle.json @@ -4,9 +4,7 @@ "setting_id": "GP001", "instantiation": "true", "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.6 Nozzle" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.6 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "is_custom_defined": "0", diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @FF AD5X.json b/resources/profiles/Flashforge/process/0.20mm Standard @FF AD5X.json index 705834eb2b..1bd8facdbf 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @FF AD5X.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @FF AD5X.json @@ -1,28 +1,26 @@ { - "type": "process", - "brim_type": "auto_brim", - "elefant_foot_compensation": "0.1", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "setting_id": "GP002", - "instantiation": "true", - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" - ], - "initial_layer_print_height": "0.25", - "is_custom_defined": "0", - "name": "0.20mm Standard @FF AD5X", - "only_one_wall_top": "1", - "prime_tower_width": "45", - "print_settings_id": "0.20mm Standard @FF AD5X", - "skirt_loops": "0", - "support_bottom_z_distance": "0.16", - "support_interface_spacing": "0.2", - "support_top_z_distance": "0.16", - "support_type": "tree(auto)", - "version": "2.1.1.0" + "type": "process", + "brim_type": "auto_brim", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "setting_id": "GP002", + "instantiation": "true", + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "initial_layer_print_height": "0.25", + "is_custom_defined": "0", + "name": "0.20mm Standard @FF AD5X", + "only_one_wall_top": "1", + "prime_tower_width": "45", + "print_settings_id": "0.20mm Standard @FF AD5X", + "skirt_loops": "0", + "support_bottom_z_distance": "0.16", + "support_interface_spacing": "0.2", + "support_top_z_distance": "0.16", + "support_type": "tree(auto)", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P HF.json b/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P HF.json index 3ef4833b2d..de53a8fe9d 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P HF.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P HF.json @@ -5,9 +5,7 @@ "filter_out_gap_fill": "0.1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], "gap_fill_target": "topbottom", "infill_wall_overlap": "50%", "inherits": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P PLA600.json b/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P PLA600.json index 75abf8887a..2d4705eeac 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P PLA600.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P PLA600.json @@ -5,9 +5,7 @@ "filter_out_gap_fill": "0.1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], "gap_fill_target": "topbottom", "gap_infill_speed": "250", "infill_wall_overlap": "50%", diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P.json b/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P.json index d5f499b1bb..cbec21e6fe 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @FF G4P.json @@ -6,9 +6,7 @@ "filter_out_gap_fill": "0.1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], "gap_fill_target": "topbottom", "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", "initial_layer_print_height": "0.25", diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD3 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD3 0.4 Nozzle.json index a60d3b2227..c2aff0cfa3 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD3 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD3 0.4 Nozzle.json @@ -6,7 +6,7 @@ "setting_id": "GP001", "instantiation": "true", "layer_height": "0.2", - "initial_layer_print_height" : "0.2", + "initial_layer_print_height": "0.2", "line_width": "0.4", "initial_layer_line_width": "0.4", "outer_wall_line_width": "0.4", @@ -54,9 +54,7 @@ "wipe_speed": "200", "reduce_crossing_wall": "1", "max_travel_detour_distance": "50", - "compatible_printers": [ - "Flashforge Adventurer 3 Series 0.4 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 3 Series 0.4 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "" } diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M 0.4 Nozzle.json index a8538c7449..e87fb47da4 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M 0.4 Nozzle.json @@ -5,9 +5,7 @@ "from": "system", "setting_id": "GP001", "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.4 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M 0.4 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "only_one_wall_top": "0", @@ -17,5 +15,3 @@ "skirt_loops": "0", "version": "2.1.1.0" } - - diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle.json index 604690da88..2ca9f7202a 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle.json @@ -5,9 +5,7 @@ "from": "system", "setting_id": "GP002", "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M Pro 0.4 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M Pro 0.4 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "only_one_wall_top": "0", @@ -16,5 +14,4 @@ "print_settings_id": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", "skirt_loops": "0", "version": "2.1.1.0" -} - +} diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json index c2024336d4..ced4e26924 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json @@ -20,9 +20,7 @@ "brim_object_gap": "0.1", "brim_type": "no_brim", "brim_width": "5", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.4 Nozzle" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.4 Nozzle"], "compatible_printers_condition": "", "default_acceleration": "10000", "default_jerk": "0", diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json index 6783df37eb..9f7b928750 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json @@ -105,7 +105,5 @@ "wall_loops": "2", "wall_infill_order": "inner wall/outer wall/infill", "wall_generator": "arachne", - "compatible_printers": [ - "Flashforge Guider 2s 0.4 nozzle" - ] + "compatible_printers": ["Flashforge Guider 2s 0.4 nozzle"] } diff --git a/resources/profiles/Flashforge/process/0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle.json index af0b4da185..af9fd1e4b2 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle.json @@ -1,40 +1,40 @@ { - "type": "process", - "name": "0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle", - "inherits": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", - "from": "system", - "setting_id": "GP003", - "instantiation": "true", - "bottom_shell_layers": "4", - "bridge_flow": "0.96", - "bridge_speed": "20", - "gap_infill_speed": "100", - "infill_wall_overlap": "35%", - "initial_layer_speed": "30", - "initial_layer_travel_speed": "70%", - "inner_wall_speed": "100", - "internal_bridge_speed": "40", - "internal_solid_infill_speed": "100", - "is_custom_defined": "0", - "outer_wall_acceleration": "3000", - "outer_wall_speed": "100", - "print_settings_id": "0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle", - "prime_tower_brim_width": "5", - "sparse_infill_acceleration": "70%", - "sparse_infill_density": "50%", - "sparse_infill_pattern": "zig-zag", - "sparse_infill_speed": "100", - "support_bottom_interface_spacing": "0.2", - "support_bottom_z_distance": "0.15", - "support_interface_spacing": "0.2", - "support_interface_top_layers": "2", - "support_line_width": "0.4", - "support_on_build_plate_only": "1", - "support_speed": "80", - "support_type": "tree(auto)", - "top_bottom_infill_wall_overlap": "50%", - "top_surface_speed": "100", - "version": "2.1.0.0", - "wall_loops": "3", - "xy_hole_compensation": "0.06" + "type": "process", + "name": "0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle", + "inherits": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", + "from": "system", + "setting_id": "GP003", + "instantiation": "true", + "bottom_shell_layers": "4", + "bridge_flow": "0.96", + "bridge_speed": "20", + "gap_infill_speed": "100", + "infill_wall_overlap": "35%", + "initial_layer_speed": "30", + "initial_layer_travel_speed": "70%", + "inner_wall_speed": "100", + "internal_bridge_speed": "40", + "internal_solid_infill_speed": "100", + "is_custom_defined": "0", + "outer_wall_acceleration": "3000", + "outer_wall_speed": "100", + "print_settings_id": "0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle", + "prime_tower_brim_width": "5", + "sparse_infill_acceleration": "70%", + "sparse_infill_density": "50%", + "sparse_infill_pattern": "zig-zag", + "sparse_infill_speed": "100", + "support_bottom_interface_spacing": "0.2", + "support_bottom_z_distance": "0.15", + "support_interface_spacing": "0.2", + "support_interface_top_layers": "2", + "support_line_width": "0.4", + "support_on_build_plate_only": "1", + "support_speed": "80", + "support_type": "tree(auto)", + "top_bottom_infill_wall_overlap": "50%", + "top_surface_speed": "100", + "version": "2.1.0.0", + "wall_loops": "3", + "xy_hole_compensation": "0.06" } diff --git a/resources/profiles/Flashforge/process/0.24mm Draft @FF AD5X.json b/resources/profiles/Flashforge/process/0.24mm Draft @FF AD5X.json index feb9c96f75..c55dcfaa1a 100644 --- a/resources/profiles/Flashforge/process/0.24mm Draft @FF AD5X.json +++ b/resources/profiles/Flashforge/process/0.24mm Draft @FF AD5X.json @@ -1,30 +1,28 @@ { - "type": "process", - "brim_type": "auto_brim", - "elefant_foot_compensation": "0.1", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "setting_id": "GP002", - "instantiation": "true", - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "gap_infill_speed": "180", - "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", - "compatible_printers": [ - "Flashforge AD5X 0.4 nozzle" - ], - "initial_layer_print_height": "0.25", - "internal_solid_infill_speed": "230", - "is_custom_defined": "0", - "layer_height": "0.24", - "name": "0.24mm Draft @FF AD5X", - "only_one_wall_top": "1", - "prime_tower_width": "45", - "print_settings_id": "0.24mm Draft @FF AD5X", - "skirt_loops": "0", - "sparse_infill_speed": "230", - "support_interface_spacing": "0.2", - "support_type": "tree(auto)", - "version": "2.1.1.0" + "type": "process", + "brim_type": "auto_brim", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "setting_id": "GP002", + "instantiation": "true", + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "gap_infill_speed": "180", + "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], + "initial_layer_print_height": "0.25", + "internal_solid_infill_speed": "230", + "is_custom_defined": "0", + "layer_height": "0.24", + "name": "0.24mm Draft @FF AD5X", + "only_one_wall_top": "1", + "prime_tower_width": "45", + "print_settings_id": "0.24mm Draft @FF AD5X", + "skirt_loops": "0", + "sparse_infill_speed": "230", + "support_interface_spacing": "0.2", + "support_type": "tree(auto)", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json index 334adc4f9d..549ea237c2 100644 --- a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json @@ -16,9 +16,7 @@ "support_interface_speed": "40", "support_speed": "100", "support_top_z_distance": "0.15", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.4 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M 0.4 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "skirt_loops": "0", diff --git a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json index df1aa8afe7..e3d2aa8fc2 100644 --- a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json @@ -17,9 +17,7 @@ "support_interface_spacing": "0.3", "support_line_width": "0.4", "top_surface_line_width": "0.4", - "compatible_printers": [ - "Flashforge Adventurer 5M Pro 0.4 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M Pro 0.4 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "skirt_loops": "0", diff --git a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json index 7f6d35ca17..3c51b1d96a 100644 --- a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json @@ -7,9 +7,7 @@ "bridge_speed": "15", "infill_wall_overlap": "25%", "inherits": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.4 Nozzle" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.4 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "internal_bridge_speed": "30", diff --git a/resources/profiles/Flashforge/process/0.24mm Fine @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/process/0.24mm Fine @FF AD5X 0.8 nozzle.json index 5ff42fb4c5..83b9d71866 100644 --- a/resources/profiles/Flashforge/process/0.24mm Fine @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/process/0.24mm Fine @FF AD5X 0.8 nozzle.json @@ -1,26 +1,24 @@ { - "type": "process", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "infill_wall_overlap": "20%", - "inherits": "0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle", - "internal_bridge_speed": "35", - "is_custom_defined": "0", - "name": "0.24mm Fine @FF AD5X 0.8 nozzle", - "only_one_wall_top": "1", - "prime_tower_brim_width": "5", - "prime_tower_width": "45", - "prime_volume": "100", - "print_settings_id": "0.24mm Fine @FF AD5X 0.8 nozzle", - "solid_infill_direction": "0", - "thick_internal_bridges": "0", - "top_shell_layers": "4", - "version": "2.1.1.0" + "type": "process", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "infill_wall_overlap": "20%", + "inherits": "0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle", + "internal_bridge_speed": "35", + "is_custom_defined": "0", + "name": "0.24mm Fine @FF AD5X 0.8 nozzle", + "only_one_wall_top": "1", + "prime_tower_brim_width": "5", + "prime_tower_width": "45", + "prime_volume": "100", + "print_settings_id": "0.24mm Fine @FF AD5X 0.8 nozzle", + "solid_infill_direction": "0", + "thick_internal_bridges": "0", + "top_shell_layers": "4", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M 0.8 Nozzle.json index 9abb2828b5..586d7f65bd 100644 --- a/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M 0.8 Nozzle.json @@ -5,9 +5,7 @@ "from": "system", "instantiation": "true", "layer_height": "0.24", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.8 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M 0.8 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "bottom_shell_layers": "2", diff --git a/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle.json index 3808a1adda..bccd740625 100644 --- a/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle.json @@ -5,9 +5,7 @@ "from": "system", "instantiation": "true", "layer_height": "0.24", - "compatible_printers": [ - "Flashforge Adventurer 5M Pro 0.8 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M Pro 0.8 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "bottom_shell_layers": "2", diff --git a/resources/profiles/Flashforge/process/0.24mm Standard @FF G4P HF.json b/resources/profiles/Flashforge/process/0.24mm Standard @FF G4P HF.json index a28f8fe4d9..a3a1a605f1 100644 --- a/resources/profiles/Flashforge/process/0.24mm Standard @FF G4P HF.json +++ b/resources/profiles/Flashforge/process/0.24mm Standard @FF G4P HF.json @@ -5,9 +5,7 @@ "filter_out_gap_fill": "0.1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 HF nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 HF nozzle"], "gap_fill_target": "topbottom", "gap_infill_speed": "180", "infill_wall_overlap": "50%", diff --git a/resources/profiles/Flashforge/process/0.24mm Standard @FF G4P.json b/resources/profiles/Flashforge/process/0.24mm Standard @FF G4P.json index d5410f829d..45b0ddef64 100644 --- a/resources/profiles/Flashforge/process/0.24mm Standard @FF G4P.json +++ b/resources/profiles/Flashforge/process/0.24mm Standard @FF G4P.json @@ -5,9 +5,7 @@ "filter_out_gap_fill": "0.1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.4 nozzle"], "gap_fill_target": "topbottom", "gap_infill_speed": "180", "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", diff --git a/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 HF nozzle.json index 6790550e5b..c2ef996bb2 100644 --- a/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 HF nozzle.json @@ -12,9 +12,7 @@ "flush_into_support": "1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], "gap_infill_speed": "70", "infill_wall_overlap": "15%", "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", diff --git a/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 nozzle.json index 543b4de6a5..08e845b639 100644 --- a/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 nozzle.json @@ -11,9 +11,7 @@ "flush_into_support": "1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], "infill_wall_overlap": "15%", "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", "initial_layer_acceleration": "800", diff --git a/resources/profiles/Flashforge/process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json index bb8196f007..dce9643a6c 100644 --- a/resources/profiles/Flashforge/process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json @@ -105,7 +105,5 @@ "wall_loops": "2", "wall_infill_order": "inner wall/outer wall/infill", "wall_generator": "arachne", - "compatible_printers": [ - "Flashforge Guider 2s 0.4 nozzle" - ] + "compatible_printers": ["Flashforge Guider 2s 0.4 nozzle"] } diff --git a/resources/profiles/Flashforge/process/0.30mm Fast @Flashforge AD3 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.30mm Fast @Flashforge AD3 0.4 Nozzle.json index 9fb5571ceb..3b47dca5ef 100644 --- a/resources/profiles/Flashforge/process/0.30mm Fast @Flashforge AD3 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Fast @Flashforge AD3 0.4 Nozzle.json @@ -6,7 +6,7 @@ "setting_id": "GP001", "instantiation": "true", "layer_height": "0.3", - "initial_layer_print_height" : "0.3", + "initial_layer_print_height": "0.3", "line_width": "0.4", "initial_layer_line_width": "0.4", "outer_wall_line_width": "0.4", @@ -54,9 +54,7 @@ "wipe_speed": "200", "reduce_crossing_wall": "1", "max_travel_detour_distance": "50", - "compatible_printers": [ - "Flashforge Adventurer 3 Series 0.4 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 3 Series 0.4 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "" } diff --git a/resources/profiles/Flashforge/process/0.30mm Standard @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.30mm Standard @FF AD5X 0.6 nozzle.json index 813424e0f3..62c632a7a3 100644 --- a/resources/profiles/Flashforge/process/0.30mm Standard @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Standard @FF AD5X 0.6 nozzle.json @@ -1,25 +1,23 @@ { - "type": "process", - "brim_type": "auto_brim", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "setting_id": "GP004", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "infill_wall_overlap": "20%", - "inherits": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", - "is_custom_defined": "0", - "name": "0.30mm Standard @FF AD5X 0.6 nozzle", - "only_one_wall_top": "1", - "prime_tower_width": "45", - "print_settings_id": "0.30mm Standard @FF AD5X 0.6 nozzle", - "skirt_loops": "0", - "support_bottom_z_distance": "0.3", - "support_top_z_distance": "0.3", - "version": "2.1.1.0" + "type": "process", + "brim_type": "auto_brim", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "setting_id": "GP004", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "infill_wall_overlap": "20%", + "inherits": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", + "is_custom_defined": "0", + "name": "0.30mm Standard @FF AD5X 0.6 nozzle", + "only_one_wall_top": "1", + "prime_tower_width": "45", + "print_settings_id": "0.30mm Standard @FF AD5X 0.6 nozzle", + "skirt_loops": "0", + "support_bottom_z_distance": "0.3", + "support_top_z_distance": "0.3", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/process/0.30mm Standard @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.30mm Standard @FF G4P 0.6 nozzle.json index 453cb1b33b..01c3582bb9 100644 --- a/resources/profiles/Flashforge/process/0.30mm Standard @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Standard @FF G4P 0.6 nozzle.json @@ -9,9 +9,7 @@ "flush_into_support": "1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], "infill_wall_overlap": "15%", "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", "initial_layer_acceleration": "800", diff --git a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD3 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD3 0.6 Nozzle.json index 972ad604de..894ebeefab 100644 --- a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD3 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD3 0.6 Nozzle.json @@ -6,7 +6,7 @@ "setting_id": "GP003", "instantiation": "true", "layer_height": "0.3", - "initial_layer_print_height" : "0.3", + "initial_layer_print_height": "0.3", "line_width": "0.6", "initial_layer_line_width": "0.6", "outer_wall_line_width": "0.6", @@ -54,9 +54,7 @@ "wipe_speed": "200", "reduce_crossing_wall": "1", "max_travel_detour_distance": "50", - "compatible_printers": [ - "Flashforge Adventurer 3 Series 0.6 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 3 Series 0.6 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "" -} \ No newline at end of file +} diff --git a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M 0.6 Nozzle.json index 4b21d1c81f..0e9a01da0d 100644 --- a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M 0.6 Nozzle.json @@ -5,9 +5,7 @@ "from": "system", "setting_id": "GP003", "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.6 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M 0.6 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "only_one_wall_top": "0", diff --git a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle.json index adfe5c29a3..13c43a8167 100644 --- a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle.json @@ -5,9 +5,7 @@ "from": "system", "setting_id": "GP004", "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M Pro 0.6 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M Pro 0.6 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "only_one_wall_top": "0", diff --git a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge G3U 0.6 Nozzle.json index d969d92eed..c6bbabb0b9 100644 --- a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge G3U 0.6 Nozzle.json @@ -6,9 +6,7 @@ "setting_id": "GP003", "instantiation": "true", "layer_height": "0.3", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.6 Nozzle" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.6 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "bottom_solid_infill_flow_ratio": "1.02", diff --git a/resources/profiles/Flashforge/process/0.32mm Standard @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/process/0.32mm Standard @FF G4P 0.8 HF nozzle.json index 216e9d4929..06a606afff 100644 --- a/resources/profiles/Flashforge/process/0.32mm Standard @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/process/0.32mm Standard @FF G4P 0.8 HF nozzle.json @@ -11,9 +11,7 @@ "flush_into_support": "1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], "infill_wall_overlap": "15%", "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", "initial_layer_acceleration": "800", diff --git a/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 HF nozzle.json index ea7b9c5764..d12a29d263 100644 --- a/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 HF nozzle.json @@ -11,9 +11,7 @@ "flush_into_support": "1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], "gap_infill_speed": "70", "infill_wall_overlap": "15%", "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", diff --git a/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 nozzle.json index 2a265062bd..9b7f89c97e 100644 --- a/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 nozzle.json @@ -9,9 +9,7 @@ "flush_into_support": "1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], "infill_wall_overlap": "15%", "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", "initial_layer_acceleration": "800", diff --git a/resources/profiles/Flashforge/process/0.3mm Standard @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/process/0.3mm Standard @FF G4P 0.6 HF nozzle.json index 409afa7be1..217751fbdf 100644 --- a/resources/profiles/Flashforge/process/0.3mm Standard @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/process/0.3mm Standard @FF G4P 0.6 HF nozzle.json @@ -11,9 +11,7 @@ "flush_into_support": "1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], "gap_infill_speed": "70", "infill_wall_overlap": "15%", "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", diff --git a/resources/profiles/Flashforge/process/0.40mm Standard @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/process/0.40mm Standard @FF AD5X 0.8 nozzle.json index 31ef008b84..5e437fc14b 100644 --- a/resources/profiles/Flashforge/process/0.40mm Standard @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/process/0.40mm Standard @FF AD5X 0.8 nozzle.json @@ -1,27 +1,25 @@ { - "type": "process", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "infill_wall_overlap": "20%", - "inherits": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", - "internal_bridge_speed": "35", - "is_custom_defined": "0", - "name": "0.40mm Standard @FF AD5X 0.8 nozzle", - "only_one_wall_top": "1", - "prime_tower_width": "45", - "prime_volume": "100", - "print_settings_id": "0.40mm Standard @FF AD5X 0.8 nozzle", - "solid_infill_direction": "0", - "support_bottom_z_distance": "0.3", - "support_top_z_distance": "0.3", - "thick_internal_bridges": "0", - "top_shell_thickness": "0", - "version": "2.1.1.0" + "type": "process", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "infill_wall_overlap": "20%", + "inherits": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", + "internal_bridge_speed": "35", + "is_custom_defined": "0", + "name": "0.40mm Standard @FF AD5X 0.8 nozzle", + "only_one_wall_top": "1", + "prime_tower_width": "45", + "prime_volume": "100", + "print_settings_id": "0.40mm Standard @FF AD5X 0.8 nozzle", + "solid_infill_direction": "0", + "support_bottom_z_distance": "0.3", + "support_top_z_distance": "0.3", + "thick_internal_bridges": "0", + "top_shell_thickness": "0", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/process/0.40mm Standard @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/process/0.40mm Standard @FF G4P 0.8 HF nozzle.json index 714d21ffc8..38f4b2cca9 100644 --- a/resources/profiles/Flashforge/process/0.40mm Standard @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/process/0.40mm Standard @FF G4P 0.8 HF nozzle.json @@ -9,9 +9,7 @@ "flush_into_support": "1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], "infill_wall_overlap": "15%", "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", "initial_layer_acceleration": "800", diff --git a/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M 0.8 Nozzle.json index b9664ae7cc..ead830f46e 100644 --- a/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M 0.8 Nozzle.json @@ -4,9 +4,7 @@ "inherits": "0.30mm Standard @Flashforge AD5M 0.6 Nozzle", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.8 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M 0.8 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "setting_id": "GP002", @@ -35,4 +33,4 @@ "tree_support_tip_diameter": "1.2", "version": "1.8.0.0", "wipe_speed": "60%" -} \ No newline at end of file +} diff --git a/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle.json index 6688f655b6..6facad3f97 100644 --- a/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle.json @@ -4,9 +4,7 @@ "inherits": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Adventurer 5M Pro 0.8 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M Pro 0.8 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "setting_id": "GP001", @@ -35,4 +33,4 @@ "tree_support_tip_diameter": "1.2", "version": "1.8.0.0", "wipe_speed": "60%" -} \ No newline at end of file +} diff --git a/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge G3U 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge G3U 0.8 Nozzle.json index 5f444a2ed9..a7a54bca75 100644 --- a/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge G3U 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge G3U 0.8 Nozzle.json @@ -6,9 +6,7 @@ "setting_id": "GP003", "instantiation": "true", "layer_height": "0.4", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.8 Nozzle" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.8 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "bridge_flow": "0.96", diff --git a/resources/profiles/Flashforge/process/0.42mm Draft @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.42mm Draft @FF AD5X 0.6 nozzle.json index 4f2757e8d8..c3f8e12cd4 100644 --- a/resources/profiles/Flashforge/process/0.42mm Draft @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/process/0.42mm Draft @FF AD5X 0.6 nozzle.json @@ -1,25 +1,23 @@ { - "type": "process", - "brim_type": "auto_brim", - "enable_prime_tower": "1", - "exclude_object": "1", - "from": "system", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.6 nozzle" - ], - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "infill_wall_overlap": "20%", - "inherits": "0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle", - "is_custom_defined": "0", - "name": "0.42mm Draft @FF AD5X 0.6 nozzle", - "only_one_wall_top": "1", - "prime_tower_brim_width": "5", - "prime_tower_width": "45", - "print_settings_id": "0.42mm Draft @FF AD5X 0.6 nozzle", - "skirt_loops": "0", - "support_bottom_z_distance": "0.3", - "support_top_z_distance": "0.3", - "version": "2.1.1.0" + "type": "process", + "brim_type": "auto_brim", + "enable_prime_tower": "1", + "exclude_object": "1", + "from": "system", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "infill_wall_overlap": "20%", + "inherits": "0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle", + "is_custom_defined": "0", + "name": "0.42mm Draft @FF AD5X 0.6 nozzle", + "only_one_wall_top": "1", + "prime_tower_brim_width": "5", + "prime_tower_width": "45", + "print_settings_id": "0.42mm Draft @FF AD5X 0.6 nozzle", + "skirt_loops": "0", + "support_bottom_z_distance": "0.3", + "support_top_z_distance": "0.3", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json index 6e046e419b..5045909831 100644 --- a/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json @@ -5,9 +5,7 @@ "from": "system", "instantiation": "true", "layer_height": "0.42", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.6 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M 0.6 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "infill_wall_overlap": "40%", diff --git a/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json index cd435f1fec..4a12f316fa 100644 --- a/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json @@ -5,9 +5,7 @@ "from": "system", "instantiation": "true", "layer_height": "0.42", - "compatible_printers": [ - "Flashforge Adventurer 5M Pro 0.6 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M Pro 0.6 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "bridge_flow": "0.96", diff --git a/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 HF nozzle.json index 2fc024a3ac..5def134a83 100644 --- a/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 HF nozzle.json @@ -11,9 +11,7 @@ "flush_into_support": "1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 HF nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 HF nozzle"], "gap_infill_speed": "70", "infill_wall_overlap": "15%", "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", diff --git a/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 nozzle.json index 86e29d4206..78fa5ddce5 100644 --- a/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 nozzle.json @@ -9,9 +9,7 @@ "flush_into_support": "1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.6 nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], "infill_wall_overlap": "15%", "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", "initial_layer_acceleration": "800", diff --git a/resources/profiles/Flashforge/process/0.42mm Standard @Flashforge G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.42mm Standard @Flashforge G3U 0.6 Nozzle.json index 2ee142fabd..531e8c9b41 100644 --- a/resources/profiles/Flashforge/process/0.42mm Standard @Flashforge G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.42mm Standard @Flashforge G3U 0.6 Nozzle.json @@ -4,9 +4,7 @@ "setting_id": "GP001", "instantiation": "true", "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.6 Nozzle" - ], + "compatible_printers": ["Flashforge Guider 3 Ultra 0.6 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "initial_layer_print_height": "0.3", diff --git a/resources/profiles/Flashforge/process/0.48mm Standard @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/process/0.48mm Standard @FF G4P 0.8 HF nozzle.json index f9392951c9..739d0f1565 100644 --- a/resources/profiles/Flashforge/process/0.48mm Standard @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/process/0.48mm Standard @FF G4P 0.8 HF nozzle.json @@ -9,9 +9,7 @@ "flush_into_support": "1", "from": "system", "instantiation": "true", - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], + "compatible_printers": ["Flashforge Guider4 Pro 0.8 HF nozzle"], "infill_wall_overlap": "15%", "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", "initial_layer_acceleration": "800", diff --git a/resources/profiles/Flashforge/process/0.56mm Draft @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/process/0.56mm Draft @FF AD5X 0.8 nozzle.json index d716b779e9..7503df7d7c 100644 --- a/resources/profiles/Flashforge/process/0.56mm Draft @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/process/0.56mm Draft @FF AD5X 0.8 nozzle.json @@ -1,29 +1,27 @@ { - "type": "process", - "from": "system", - "instantiation": "true", - "compatible_printers": [ - "Flashforge AD5X 0.8 nozzle" - ], - "enable_prime_tower": "1", - "exclude_object": "1", - "filter_out_gap_fill": "0.1", - "gap_fill_target": "topbottom", - "infill_wall_overlap": "20%", - "inherits": "0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle", - "internal_bridge_speed": "35", - "is_custom_defined": "0", - "name": "0.56mm Draft @FF AD5X 0.8 nozzle", - "only_one_wall_top": "1", - "prime_tower_brim_width": "5", - "prime_tower_width": "45", - "prime_volume": "100", - "print_settings_id": "0.56mm Draft @FF AD5X 0.8 nozzle", - "solid_infill_direction": "0", - "support_bottom_z_distance": "0.3", - "support_top_z_distance": "0.3", - "thick_internal_bridges": "0", - "top_shell_layers": "4", - "top_shell_thickness": "0", - "version": "2.1.1.0" + "type": "process", + "from": "system", + "instantiation": "true", + "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], + "enable_prime_tower": "1", + "exclude_object": "1", + "filter_out_gap_fill": "0.1", + "gap_fill_target": "topbottom", + "infill_wall_overlap": "20%", + "inherits": "0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle", + "internal_bridge_speed": "35", + "is_custom_defined": "0", + "name": "0.56mm Draft @FF AD5X 0.8 nozzle", + "only_one_wall_top": "1", + "prime_tower_brim_width": "5", + "prime_tower_width": "45", + "prime_volume": "100", + "print_settings_id": "0.56mm Draft @FF AD5X 0.8 nozzle", + "solid_infill_direction": "0", + "support_bottom_z_distance": "0.3", + "support_top_z_distance": "0.3", + "thick_internal_bridges": "0", + "top_shell_layers": "4", + "top_shell_thickness": "0", + "version": "2.1.1.0" } diff --git a/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M 0.8 Nozzle.json index c25b1e78e0..0b9b9cac23 100644 --- a/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M 0.8 Nozzle.json @@ -5,9 +5,7 @@ "from": "system", "instantiation": "true", "layer_height": "0.56", - "compatible_printers": [ - "Flashforge Adventurer 5M 0.8 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M 0.8 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "bottom_shell_layers": "2", diff --git a/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle.json index 9f61cb79c6..d77299f69c 100644 --- a/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle.json @@ -5,9 +5,7 @@ "from": "system", "instantiation": "true", "layer_height": "0.56", - "compatible_printers": [ - "Flashforge Adventurer 5M Pro 0.8 Nozzle" - ], + "compatible_printers": ["Flashforge Adventurer 5M Pro 0.8 Nozzle"], "filename_format": "{input_filename_base}.gcode", "post_process": "", "bottom_shell_layers": "2", diff --git a/resources/profiles/Flashforge/process/fdm_process_common.json b/resources/profiles/Flashforge/process/fdm_process_common.json index 3712c915a4..7f095277da 100644 --- a/resources/profiles/Flashforge/process/fdm_process_common.json +++ b/resources/profiles/Flashforge/process/fdm_process_common.json @@ -1,71 +1,71 @@ { - "type": "process", - "name": "fdm_process_common", - "from": "system", - "instantiation": "false", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", - "bridge_flow": "0.95", - "bridge_speed": "25", - "brim_width": "5", - "print_sequence": "by layer", - "default_acceleration": "10000", - "bridge_no_support": "0", - "elefant_foot_compensation": "0.1", - "outer_wall_line_width": "0.42", - "outer_wall_speed": "120", - "line_width": "0.45", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "grid", - "initial_layer_line_width": "0.42", - "initial_layer_print_height": "0.2", - "initial_layer_speed": "20", - "gap_infill_speed": "30", - "infill_combination": "0", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "15%", - "sparse_infill_speed": "50", - "interface_shells": "0", - "detect_overhang_wall": "0", - "reduce_infill_retraction": "0", - "filename_format": "{input_filename_base}.gcode", - "wall_loops": "2", - "inner_wall_line_width": "0.45", - "inner_wall_speed": "40", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "nearest", - "skirt_distance": "2", - "skirt_height": "2", - "minimum_sparse_infill_area": "0", - "internal_solid_infill_line_width": "0.45", - "internal_solid_infill_speed": "40", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "support_filament": "0", - "support_line_width": "0.42", - "support_interface_filament": "0", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.15", - "support_interface_loop_pattern": "0", - "support_interface_top_layers": "2", - "support_interface_spacing": "0", - "support_interface_speed": "80", - "support_interface_pattern": "auto", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2", - "support_speed": "40", - "support_threshold_angle": "30", - "support_object_xy_distance": "0.5", - "detect_thin_wall": "0", - "top_surface_line_width": "0.42", - "top_surface_speed": "30", - "travel_speed": "400", - "enable_prime_tower": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [] -} \ No newline at end of file + "type": "process", + "name": "fdm_process_common", + "from": "system", + "instantiation": "false", + "adaptive_layer_height": "0", + "reduce_crossing_wall": "0", + "bridge_flow": "0.95", + "bridge_speed": "25", + "brim_width": "5", + "print_sequence": "by layer", + "default_acceleration": "10000", + "bridge_no_support": "0", + "elefant_foot_compensation": "0.1", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "120", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "grid", + "initial_layer_line_width": "0.42", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "20", + "gap_infill_speed": "30", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "15%", + "sparse_infill_speed": "50", + "interface_shells": "0", + "detect_overhang_wall": "0", + "reduce_infill_retraction": "0", + "filename_format": "{input_filename_base}.gcode", + "wall_loops": "2", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "40", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "nearest", + "skirt_distance": "2", + "skirt_height": "2", + "minimum_sparse_infill_area": "0", + "internal_solid_infill_line_width": "0.45", + "internal_solid_infill_speed": "40", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "support_filament": "0", + "support_line_width": "0.42", + "support_interface_filament": "0", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.15", + "support_interface_loop_pattern": "0", + "support_interface_top_layers": "2", + "support_interface_spacing": "0", + "support_interface_speed": "80", + "support_interface_pattern": "auto", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2", + "support_speed": "40", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.5", + "detect_thin_wall": "0", + "top_surface_line_width": "0.42", + "top_surface_speed": "30", + "travel_speed": "400", + "enable_prime_tower": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [] +} diff --git a/resources/profiles/Flashforge/process/fdm_process_flashforge_0.20.json b/resources/profiles/Flashforge/process/fdm_process_flashforge_0.20.json index 506873d376..6f82923fa3 100644 --- a/resources/profiles/Flashforge/process/fdm_process_flashforge_0.20.json +++ b/resources/profiles/Flashforge/process/fdm_process_flashforge_0.20.json @@ -19,4 +19,4 @@ "gcode_label_objects": "0", "slow_down_layers": "1", "wipe_speed": "200" -} \ No newline at end of file +} diff --git a/resources/profiles/Flashforge/process/fdm_process_flashforge_0.30.json b/resources/profiles/Flashforge/process/fdm_process_flashforge_0.30.json index 6a3cfe566f..39c3522e31 100644 --- a/resources/profiles/Flashforge/process/fdm_process_flashforge_0.30.json +++ b/resources/profiles/Flashforge/process/fdm_process_flashforge_0.30.json @@ -27,4 +27,4 @@ "gcode_label_objects": "0", "slow_down_layers": "1", "wipe_speed": "200" -} \ No newline at end of file +} diff --git a/resources/profiles/Flashforge/process/fdm_process_flashforge_0.40.json b/resources/profiles/Flashforge/process/fdm_process_flashforge_0.40.json index 09cb998b1e..afca287cde 100644 --- a/resources/profiles/Flashforge/process/fdm_process_flashforge_0.40.json +++ b/resources/profiles/Flashforge/process/fdm_process_flashforge_0.40.json @@ -27,4 +27,4 @@ "gcode_label_objects": "0", "slow_down_layers": "1", "wipe_speed": "200" -} \ No newline at end of file +} diff --git a/resources/profiles/Flashforge/process/fdm_process_flashforge_common.json b/resources/profiles/Flashforge/process/fdm_process_flashforge_common.json index 79824795e5..6013168c22 100644 --- a/resources/profiles/Flashforge/process/fdm_process_flashforge_common.json +++ b/resources/profiles/Flashforge/process/fdm_process_flashforge_common.json @@ -1,72 +1,72 @@ { - "type": "process", - "name": "fdm_process_flashforge_common", - "inherits": "fdm_process_common", - "from": "system", - "instantiation": "false", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bridge_flow": "1", - "brim_object_gap": "0.1", - "compatible_printers_condition": "", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.15", - "enable_arc_fitting": "0", - "outer_wall_acceleration": "5000", - "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.42", - "internal_bridge_support_thickness": "0.8", - "initial_layer_acceleration": "500", - "travel_acceleration": "10000", - "inner_wall_acceleration": "5000", - "initial_layer_line_width": "0.50", - "sparse_infill_speed": "100", - "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": "40", - "overhang_3_4_speed": "20", - "overhang_4_4_speed": "10", - "only_one_wall_top": "1", - "seam_position": "aligned", - "skirt_height": "1", - "skirt_loops": "2", - "brim_type": "no_brim", - "exclude_object": "0", - "wall_generator": "classic", - "minimum_sparse_infill_area": "15", - "internal_solid_infill_line_width": "0.42", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "default", - "support_top_z_distance": "0.18", - "support_bottom_z_distance": "0.18", - "support_interface_bottom_layers": "2", - "support_interface_spacing": "0.5", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "2.5", - "support_speed": "150", - "support_threshold_angle": "30", - "support_object_xy_distance": "0.3", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "top_surface_pattern": "monotonicline", - "top_surface_acceleration": "2000", - "top_shell_layers": "5", - "top_shell_thickness": "1", - "initial_layer_speed": "50", - "initial_layer_infill_speed": "65", - "internal_solid_infill_speed": "150", - "top_surface_speed": "200", - "travel_speed": "500", - "wipe_tower_no_sparse_layers": "0", - "compatible_printers": [] + "type": "process", + "name": "fdm_process_flashforge_common", + "inherits": "fdm_process_common", + "from": "system", + "instantiation": "false", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bridge_flow": "1", + "brim_object_gap": "0.1", + "compatible_printers_condition": "", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.15", + "enable_arc_fitting": "0", + "outer_wall_acceleration": "5000", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.42", + "internal_bridge_support_thickness": "0.8", + "initial_layer_acceleration": "500", + "travel_acceleration": "10000", + "inner_wall_acceleration": "5000", + "initial_layer_line_width": "0.50", + "sparse_infill_speed": "100", + "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": "40", + "overhang_3_4_speed": "20", + "overhang_4_4_speed": "10", + "only_one_wall_top": "1", + "seam_position": "aligned", + "skirt_height": "1", + "skirt_loops": "2", + "brim_type": "no_brim", + "exclude_object": "0", + "wall_generator": "classic", + "minimum_sparse_infill_area": "15", + "internal_solid_infill_line_width": "0.42", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "default", + "support_top_z_distance": "0.18", + "support_bottom_z_distance": "0.18", + "support_interface_bottom_layers": "2", + "support_interface_spacing": "0.5", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "2.5", + "support_speed": "150", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.3", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "top_surface_pattern": "monotonicline", + "top_surface_acceleration": "2000", + "top_shell_layers": "5", + "top_shell_thickness": "1", + "initial_layer_speed": "50", + "initial_layer_infill_speed": "65", + "internal_solid_infill_speed": "150", + "top_surface_speed": "200", + "travel_speed": "500", + "wipe_tower_no_sparse_layers": "0", + "compatible_printers": [] } From 088c8f5a8bee8218c138f4eda481db313c1967fb Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Thu, 20 Feb 2025 17:22:25 +0800 Subject: [PATCH 084/129] Fix crash when selected bed type is not supported by current version. This could happen if you downgrade Orca to old version that does not have that bed type --- src/slic3r/GUI/Plater.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index f141755688..5a68b1a45a 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1298,8 +1298,10 @@ void Sidebar::update_all_preset_comboboxes() "curr_bed_type"); if (!str_bed_type.empty()) { int bed_type_value = atoi(str_bed_type.c_str()); - if (bed_type_value == 0) - bed_type_value = 1; + if (bed_type_value <= 0 || bed_type_value >= btCount) { + bed_type_value = preset_bundle.printers.get_edited_preset().get_default_bed_type(&preset_bundle); + } + m_bed_type_list->SelectAndNotify(bed_type_value - 1); } else { BedType bed_type = preset_bundle.printers.get_edited_preset().get_default_bed_type(&preset_bundle); From 831743997dc9267f25fddbb4c55564ae82be5c53 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Thu, 20 Feb 2025 17:41:41 +0800 Subject: [PATCH 085/129] Fix issue that current bed type is changed after upgrading from 2.2 --- src/libslic3r/PrintConfig.cpp | 4 ++-- src/libslic3r/PrintConfig.hpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index b25a7d4177..070152c7a0 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -804,18 +804,18 @@ void PrintConfigDef::init_fff_params() def->mode = comSimple; def->enum_keys_map = &s_keys_map_BedType; // Orca: make sure the order of the values is the same as the BedType enum - def->enum_values.emplace_back("Supertack Plate"); def->enum_values.emplace_back("Cool Plate"); def->enum_values.emplace_back("Engineering Plate"); def->enum_values.emplace_back("High Temp Plate"); def->enum_values.emplace_back("Textured PEI Plate"); def->enum_values.emplace_back("Textured Cool Plate"); - def->enum_labels.emplace_back(L("Cool Plate (SuperTack)")); + def->enum_values.emplace_back("Supertack Plate"); def->enum_labels.emplace_back(L("Smooth Cool Plate")); def->enum_labels.emplace_back(L("Engineering Plate")); def->enum_labels.emplace_back(L("Smooth High Temp Plate")); def->enum_labels.emplace_back(L("Textured PEI Plate")); def->enum_labels.emplace_back(L("Textured Cool Plate")); + def->enum_labels.emplace_back(L("Cool Plate (SuperTack)")); def->set_default_value(new ConfigOptionEnum(btPC)); // BBS diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 02db0c061b..b11225ea6c 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -268,12 +268,12 @@ enum OverhangFanThreshold { // BBS enum BedType { btDefault = 0, - btSuperTack, btPC, btEP, btPEI, btPTE, btPCT, + btSuperTack, btCount }; From c83f9c6a87a0fdc21a30aeaedd5c570e3c5dd534 Mon Sep 17 00:00:00 2001 From: Heiko Liebscher Date: Thu, 20 Feb 2025 13:20:25 +0100 Subject: [PATCH 086/129] add some fixes after update locale beta 2.3.0 (#8463) add some fixes after update locale beta 2.3.0 --- localization/i18n/de/OrcaSlicer_de.po | 28 ++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 5e3da194e8..70de71a6fb 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -9707,6 +9707,8 @@ msgid "" "While the object %1% itself fits the build volume, it exceeds the maximum " "build volume height because of material shrinkage compensation." msgstr "" +"Obwohl das Objekt %1% selbst in das Bauvolumen passt, überschreitet es die " +"maximale Bauvolumenhöhe aufgrund der Material-Schrumpfungskompensation." #, boost-format msgid "The object %1% exceeds the maximum build volume height." @@ -10833,7 +10835,7 @@ msgstr "" "analysiert und berechnet wird." msgid "Painted" -msgstr "" +msgstr "Bemalt" msgid "Brim-object gap" msgstr "Lücke zwischen Rand und Objekt" @@ -11905,7 +11907,7 @@ msgstr "" "Filamentdurchmesser = sqrt( (4 * Pellet-Flusskoeffizient) / PI )" msgid "Shrinkage (XY)" -msgstr "" +msgstr "Schrumpfung (XY)" #, no-c-format, no-boost-format msgid "" @@ -11923,7 +11925,7 @@ msgstr "" "durchgeführt wird." msgid "Shrinkage (Z)" -msgstr "" +msgstr "Schrumpfung (Z)" #, no-c-format, no-boost-format msgid "" @@ -14342,20 +14344,26 @@ msgstr "" "erreichen. Wenn als Prozentsatz angegeben, wird er in Bezug auf den " "Düsendurchmesser berechnet." -#, c-format, boost-format msgid "" "Sets the starting flow ratio while transitioning from the last bottom layer " "to the spiral. Normally the spiral transition scales the flow ratio from " "0% to 100% during the first loop which can in some cases lead to under " "extrusion at the start of the spiral." msgstr "" +"Legt das Startflussverhältnis beim Übergang von der letzten unteren Schicht " +"zur Spirale fest. Normalerweise skaliert der Spiralenübergang das " +"Flussverhältnis von 0% auf 100% während der ersten Schleife, was in einigen " +"Fällen zu einer Unterextrusion am Anfang der Spirale führen kann." -#, c-format, boost-format msgid "" "Sets the finishing flow ratio while ending the spiral. Normally the spiral " "transition scales the flow ratio from 100% to 0% during the last loop which " "can in some cases lead to under extrusion at the end of the spiral." msgstr "" +"Legt das Endflussverhältnis beim Beenden der Spirale fest. Normalerweise " +"skaliert die Spiralenübergang das Flussverhältnis von 100% auf 0% während " +"der letzten Schleife, was in einigen Fällen zu einer Unterextrusion am Ende " +"der Spirale führen kann." msgid "" "If smooth or traditional mode is selected, a timelapse video will be " @@ -16832,18 +16840,20 @@ msgid "" "The selected bed type does not match the file. Please confirm before " "starting the print." msgstr "" +"Der ausgewählte Betttyp stimmt nicht mit der Datei überein. Bitte bestätigen " +"Sie dies, bevor Sie mit dem Druck beginnen." msgid "Time-lapse" -msgstr "" +msgstr "Zeitraffer" msgid "Heated Bed Leveling" -msgstr "" +msgstr "Beheiztes Bett Nivellierung" msgid "Textured Build Plate (Side A)" -msgstr "" +msgstr "Strukturierte Bauplatte (Seite A)" msgid "Smooth Build Plate (Side B)" -msgstr "" +msgstr "Glatte Bauplatte (Seite B)" msgid "Unable to perform boolean operation on selected parts" msgstr "" From b463e0cba9a9d9a853ff03f47084b8a2c9c6fb9a Mon Sep 17 00:00:00 2001 From: Alexandre Folle de Menezes Date: Thu, 20 Feb 2025 09:20:46 -0300 Subject: [PATCH 087/129] Lots of fixes for the pt-BR translation (#8464) * Misc fixes on the pt-BR translation * Fix the pt-BR translation of "Wipe Tower" * Fix the pt-br translation of "ooze" * Fix pt-BR translations of "flip", "roll", "rotate" * Fix translations of "preset", "profile", "template", "model" * Fix the pt-br translation of "nozzle" * Fix the pt-br translation of "overhang" * Fix the pt-br translation of "threshold" * Fix the pt-br translation of "scarf joint" --- localization/i18n/pt_BR/OrcaSlicer_pt_BR.po | 1171 ++++++++++--------- 1 file changed, 610 insertions(+), 561 deletions(-) diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index d5b7ebe75f..8d06c5d385 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-02-19 19:44+0800\n" -"PO-Revision-Date: 2025-02-16 12:19-0300\n" +"PO-Revision-Date: 2025-02-17 11:39-0300\n" "Last-Translator: Alexandre Folle de Menezes \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt_BR\n" @@ -32,7 +32,7 @@ msgid "Reset direction" msgstr "Redefinir direção" msgid "Ctrl + Mouse wheel" -msgstr "Ctrl + Roda do Mouse" +msgstr "Ctrl + Roda do mouse" msgid "Pen size" msgstr "Tamanho da caneta" @@ -59,7 +59,7 @@ msgid "Erase all painting" msgstr "Apagar toda a pintura" msgid "Highlight overhang areas" -msgstr "Destacar áreas com 'overhangs'" +msgstr "Destacar áreas com saliências" msgid "Gap fill" msgstr "Preenchimento de vão" @@ -71,18 +71,16 @@ msgid "Gap area" msgstr "Área das lacunas" msgid "Tool type" -msgstr "Tipo da ferramenta" +msgstr "Tipo de ferramenta" msgid "Smart fill angle" -msgstr "" -"Ângulo do\n" -"preench. inteligente" +msgstr "Ângulo de preenchimento inteligente" msgid "On overhangs only" -msgstr "Apenas em 'overhangs'" +msgstr "Apenas em saliências" msgid "Auto support threshold angle: " -msgstr "Ângulo max. do suporte automático: " +msgstr "Ângulo limiar de suporte automático: " msgid "Circle" msgstr "Círculo" @@ -101,7 +99,7 @@ msgid "Allows painting only on facets selected by: \"%1%\"" msgstr "Permite pintura apenas em facetas selecionadas por: \"%1%\"" msgid "Highlight faces according to overhang angle." -msgstr "Realçar faces conforme a inclinação." +msgstr "Realçar faces conforme o ângulo de saliência." msgid "No auto support" msgstr "Sem suporte automático" @@ -155,7 +153,7 @@ msgid "Smart fill" msgstr "Preenchimento inteligente" msgid "Bucket fill" -msgstr "Balde de preenchimento" +msgstr "Preenchimento de balde" msgid "Height range" msgstr "Intervalo de altura" @@ -167,7 +165,7 @@ msgid "Toggle Wireframe" msgstr "Alternar malha" msgid "Shortcut Key " -msgstr "Tecla " +msgstr "Tecla de atalho " msgid "Triangle" msgstr "Triângulo" @@ -216,7 +214,7 @@ msgid "Error: Please close all toolbar menus first" msgstr "Erro: Por favor, feche todos os menus da barra de ferramentas primeiro" msgid "in" -msgstr "in" +msgstr "pol" msgid "mm" msgstr "mm" @@ -234,7 +232,7 @@ msgid "Scale ratios" msgstr "Proporções de escala" msgid "Object Operations" -msgstr "Operações do Objeto" +msgstr "Operações de Objeto" msgid "Volume Operations" msgstr "Operações de Volume" @@ -361,7 +359,7 @@ msgid "" "Click to flip the cut plane\n" "Drag to move the cut plane" msgstr "" -"Clique para girar o plano de corte\n" +"Clique para virar o plano de corte\n" "Arraste para mover o plano de corte" msgid "" @@ -369,7 +367,7 @@ msgid "" "Drag to move the cut plane\n" "Right-click a part to assign it to the other side" msgstr "" -"Clique para girar o plano de corte\n" +"Clique para virar o plano de corte\n" "Arraste para mover o plano de corte\n" "Clique com o botão direito em uma peça para atribuí-la ao outro lado" @@ -539,7 +537,7 @@ msgstr "" "corrigí-las agora?" msgid "Repairing model object" -msgstr "Reparando objeto do modelo" +msgstr "Reparando objeto modelo" msgid "Cut by line" msgstr "Corte por linha" @@ -572,7 +570,7 @@ msgstr "Simplificar" msgid "Simplification is currently only allowed when a single part is selected" msgstr "" -"A simplificação só é permitida quando uma única peça é selecionada no momento" +"A simplificação só é permitida atualmente quando uma única peça está selecionada" msgid "Error" msgstr "Erro" @@ -608,7 +606,7 @@ msgstr "" "Não é possível aplicar quando a visualização do processo está em andamento." msgid "Operation already cancelling. Please wait few seconds." -msgstr "Operação já sendo cancelada. Por favor, aguarde alguns segundos." +msgstr "Operação já está sendo cancelada. Por favor, aguarde alguns segundos." msgid "Face recognition" msgstr "Reconhecimento facial" @@ -662,7 +660,7 @@ msgid "" "depth" msgstr "" "Profundidade\n" -"Integrada" +"embutida" msgid "Input text" msgstr "Texto de entrada" @@ -996,7 +994,7 @@ msgid "Undo rotation" msgstr "Desfazer rotação" msgid "Rotate text Clock-wise." -msgstr "Girar o texto no sentido horário." +msgstr "Rotacionar texto no sentido horário." msgid "Unlock the text's rotation when moving text along the object's surface." msgstr "" @@ -1409,7 +1407,7 @@ msgid "Reverse rotation" msgstr "Rotação reversa" msgid "Rotate around center:" -msgstr "Girar ao redor do centro:" +msgstr "Rotacionar ao redor do centro:" msgid "Parallel distance:" msgstr "Distância paralela:" @@ -1554,7 +1552,7 @@ msgid "Rebuild" msgstr "Reconstruindo" msgid "Loading current presets" -msgstr "Carregando presets atuais" +msgstr "Carregando predefinições atuais" msgid "Loading a mode view" msgstr "Carregando uma visualização de modo" @@ -1575,14 +1573,14 @@ msgid "Choose one file (gcode/3mf):" msgstr "Escolha um arquivo (gcode/3mf):" msgid "Some presets are modified." -msgstr "Alguns presets foram modificados." +msgstr "Algumas predefinições foram modificadas." msgid "" "You can keep the modified presets to the new project, discard or save " "changes as new presets." msgstr "" -"Você pode manter os modelos modificados no novo projeto, descartar ou salvar " -"as alterações como novos modelos." +"Você pode manter as predefinições modificadas no novo projeto, descartar ou salvar as " +"alterações como novas predefinições." msgid "User logged out" msgstr "Usuário desconectado" @@ -1609,17 +1607,17 @@ 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 "" -"O número de presets de usuário em cache na nuvem excedeu o limite superior, " -"os presets de usuário recém-criados só podem ser usados localmente." +"O número de predefinições de usuário em cache na nuvem excedeu o limite superior, " +"as predefinições de usuário recém-criados só podem ser usadas localmente." msgid "Sync user presets" -msgstr "Sincronizar presets do usuário" +msgstr "Sincronizar predefinições de usuário" msgid "Loading user preset" -msgstr "Carregando preset do usuário" +msgstr "Carregando predefinição de usuário" msgid "Switching application language" -msgstr "Alterando o idioma do aplicativo" +msgstr "Alternando o idioma do aplicativo" msgid "Select the language" msgstr "Selecione o idioma" @@ -1720,43 +1718,43 @@ msgid "Wipe options" msgstr "Opções de limpeza" msgid "Bed adhesion" -msgstr "Adesão à Mesa" +msgstr "Adesão à mesa" msgid "Add part" -msgstr "Adicionar Peça" +msgstr "Adicionar peça" msgid "Add negative part" -msgstr "Adicionar Peça Negativa" +msgstr "Adicionar peça negativa" msgid "Add modifier" -msgstr "Adicionar Modificador" +msgstr "Adicionar modificador" msgid "Add support blocker" -msgstr "Adicionar Bloqueador de Suporte" +msgstr "Adicionar bloqueador de suporte" msgid "Add support enforcer" -msgstr "Adicionar Reforço de Suporte" +msgstr "Adicionar reforço de suporte" msgid "Add text" -msgstr "Adicionar Texto" +msgstr "Adicionar texto" msgid "Add negative text" -msgstr "Adicionar Texto Negativo" +msgstr "Adicionar texto negativo" msgid "Add text modifier" -msgstr "Adicionar Modificador de Texto" +msgstr "Adicionar modificador de texto" msgid "Add SVG part" -msgstr "Adicionar Peça SVG" +msgstr "Adicionar peça SVG" msgid "Add negative SVG" -msgstr "Adicionar SVG Negativo" +msgstr "Adicionar SVG negativo" msgid "Add SVG modifier" -msgstr "Adicionar Modificador SVG" +msgstr "Adicionar modificador SVG" msgid "Select settings" -msgstr "Selecionar Configurações" +msgstr "Selecionar configurações" msgid "Hide" msgstr "Ocultar" @@ -1825,10 +1823,10 @@ msgid "Text" msgstr "Texto" msgid "Height range Modifier" -msgstr "Modificador em altura" +msgstr "Modificador de intervalo de altura" msgid "Add settings" -msgstr "Adicionar Configurações" +msgstr "Adicionar configurações" msgid "Change type" msgstr "Alterar tipo" @@ -1867,7 +1865,7 @@ msgid "Replace with STL" msgstr "Substituir por STL" msgid "Replace the selected part with new STL" -msgstr "Substituir a peça selecionada por um novo STL" +msgstr "Substituir a peça selecionada por novo STL" msgid "Change filament" msgstr "Alterar filamento" @@ -1907,13 +1905,13 @@ msgid "Edit in Parameter Table" msgstr "Editar na Tabela de Parâmetros" msgid "Convert from inch" -msgstr "Converter de polegada" +msgstr "Converter de polegadas" msgid "Restore to inch" msgstr "Restaurar para polegadas" msgid "Convert from meter" -msgstr "Converter de metro" +msgstr "Converter de metros" msgid "Restore to meter" msgstr "Restaurar para metros" @@ -1928,10 +1926,10 @@ msgid "Assemble the selected objects to an object with single part" msgstr "Montar os objetos selecionados em um objeto com uma única peça" msgid "Mesh boolean" -msgstr "Operações booleanas" +msgstr "Malha booleana" msgid "Mesh boolean operations including union and subtraction" -msgstr "Operações booleanas incluindo união e subtração" +msgstr "Operações booleanas de malha, incluindo união e subtração" msgid "Along X axis" msgstr "Ao longo do eixo X" @@ -1982,13 +1980,13 @@ msgid "Show Labels" msgstr "Mostrar Etiquetas" msgid "To objects" -msgstr "Para Objetos" +msgstr "Para objetos" msgid "Split the selected object into multiple objects" msgstr "Dividir o objeto selecionado em vários objetos" msgid "To parts" -msgstr "Para Peças" +msgstr "Para peças" msgid "Split the selected object into multiple parts" msgstr "Dividir o objeto selecionado em várias peças" @@ -2000,7 +1998,7 @@ msgid "Split the selected object" msgstr "Dividir o objeto selecionado" msgid "Auto orientation" -msgstr "Orientação Automática" +msgstr "Orientação automática" msgid "Auto orient the object to improve print quality." msgstr "" @@ -2031,10 +2029,10 @@ msgid "reload all from disk" msgstr "recarregar tudo do disco" msgid "Auto Rotate" -msgstr "Auto-orientação" +msgstr "Auto Rotação" msgid "auto rotate current plate" -msgstr "girar automaticamente a mesa atual" +msgstr "rotacionar automaticamente a mesa atual" msgid "Delete Plate" msgstr "Apagar Mesa" @@ -2282,7 +2280,7 @@ msgid "Repairing was canceled" msgstr "A reparação foi cancelada" msgid "Additional process preset" -msgstr "Preset de processo adicional" +msgstr "Predefinição de processo adicional" msgid "Remove parameter" msgstr "Remover parâmetro" @@ -2376,7 +2374,7 @@ msgid "Pause" msgstr "Pausa" msgid "Template" -msgstr "Modelo" +msgstr "Gabarito" msgid "Custom" msgstr "Personalizado" @@ -2385,7 +2383,7 @@ msgid "Pause:" msgstr "Pausa:" msgid "Custom Template:" -msgstr "Modelo Personalizado:" +msgstr "Gabarito Personalizado:" msgid "Custom G-code:" msgstr "G-Code Personalizado:" @@ -2415,10 +2413,10 @@ msgid "Insert custom G-code at the beginning of this layer." msgstr "Inserir G-Code personalizado no início desta camada." msgid "Add Custom Template" -msgstr "Adicionar Modelo Personalizado" +msgstr "Adicionar Gabarito Personalizado" msgid "Insert template custom G-code at the beginning of this layer." -msgstr "Inserir modelo de G-Code personalizado no início desta camada." +msgstr "Inserir gabarito de G-Code personalizado no início desta camada." msgid "Filament " msgstr "Filamento " @@ -2430,7 +2428,7 @@ msgid "Delete Pause" msgstr "Excluir Pausa" msgid "Delete Custom Template" -msgstr "Excluir Modelo Personalizado" +msgstr "Excluir Gabarito Personalizado" msgid "Edit Custom G-code" msgstr "Editar G-Code Personalizado" @@ -2769,8 +2767,8 @@ msgid "" "The SLA archive doesn't contain any presets. Please activate some SLA " "printer preset first before importing that SLA archive." msgstr "" -"O arquivo SLA não contém nenhum perfil. Por favor, ative alguns perfis de " -"impressora SLA antes de importar esse arquivo SLA." +"O arquivo SLA não contém nenhuma predefinição. Por favor, ative algumas predefinições " +"de impressora SLA antes de importar esse arquivo SLA." msgid "Importing canceled." msgstr "Importação cancelada." @@ -2782,17 +2780,15 @@ msgid "" "The imported SLA archive did not contain any presets. The current SLA " "presets were used as fallback." msgstr "" -"O arquivo SLA importado não contém nenhum perfil. Os perfis SLA atuais foram " -"usados como alternativa." +"O arquivo SLA importado não contém nenhuma predefinição. As predefinições SLA atuais " +"foram usadas como alternativa." msgid "You cannot load SLA project with a multi-part object on the bed" -msgstr "" -"Você não pode carregar um projeto SLA com um objeto de várias peças na mesa" +msgstr "Você não pode carregar um projeto SLA com um objeto muilti-peças na mesa" msgid "Please check your object list before preset changing." msgstr "" -"Por favor, verifique sua lista de objetos antes de mudar a configuração " -"predefinida." +"Por favor, verifique sua lista de objetos antes de mudar a predefinição." msgid "Attention!" msgstr "Atenção!" @@ -2883,8 +2879,8 @@ msgid "" "Nozzle\n" "Temperature" msgstr "" -"Bico\n" -"Temperatura" +"Temperatura\n" +"do Bico" msgid "max" msgstr "máx" @@ -2952,7 +2948,7 @@ msgid "" msgstr "" "A temperatura do bico e a fluxo volumétrico máximo afetarão os resultados da " "calibração. Preencha os mesmos valores que a impressão atual. Eles podem ser " -"preenchidos automaticamente selecionando um perfil de filamento." +"preenchidos automaticamente selecionando uma predefinição de filamento." msgid "Nozzle Diameter" msgstr "Diâmetro do bico" @@ -4310,7 +4306,7 @@ msgid "Time Estimation" msgstr "Estimativa de Tempo" msgid "Normal mode" -msgstr "Modo Normal" +msgstr "Modo normal" msgid "Total Filament" msgstr "Filamento Total" @@ -4319,10 +4315,10 @@ msgid "Model Filament" msgstr "Modelo do Filamento" msgid "Prepare time" -msgstr "Tempo de Preparo" +msgstr "Tempo de preparo" msgid "Model printing time" -msgstr "Tempo de Impressão do Modelo" +msgstr "Tempo de impressão do modelo" msgid "Switch to silent mode" msgstr "Mudar para o modo silencioso" @@ -4415,7 +4411,7 @@ msgid "0 means auto spacing." msgstr "0 significa auto-espaçamento." msgid "Auto rotate for arrangement" -msgstr "Girar automaticamente para arranjar" +msgstr "Rotacionar automaticamente para arranjar" msgid "Allow multiple materials on same plate" msgstr "Permitir vários materiais na mesma mesa" @@ -4607,7 +4603,7 @@ msgid "Application is closing" msgstr "Aplicativo está fechando" msgid "Closing Application while some presets are modified." -msgstr "Fechando o aplicativo enquanto alguns perfis estão sendo modificados." +msgstr "Fechando o aplicativo enquanto algumas predefinições são modificadas." msgid "Logging" msgstr "Registro" @@ -4802,7 +4798,7 @@ msgid "Export current plate as G-code" msgstr "Exportar a mesa atual como G-code" msgid "Export Preset Bundle" -msgstr "Exportar Pacote de Presets" +msgstr "Exportar Pacote de Predefinições" msgid "Export current configuration to files" msgstr "Exportar configuração atual para arquivos" @@ -4901,10 +4897,10 @@ msgid "Show object labels in 3D scene" msgstr "Mostrar etiquetas de objeto na cena 3D" msgid "Show &Overhang" -msgstr "Mostrar &Sobrecarga" +msgstr "Mostrar &Saliência" msgid "Show object overhang highlight in 3D scene" -msgstr "Mostrar destaque de sobrecarga de objeto na cena 3D" +msgstr "Mostrar destaque de saliência de objeto na cena 3D" msgid "Show Selected Outline (Experimental)" msgstr "" @@ -5090,9 +5086,9 @@ msgid "" msgstr "" "Você deseja sincronizar seus dados pessoais da Bambu Cloud? \n" "Isso inclui as seguintes informações:\n" -"1. Os perfis de Processo\n" -"2. Os perfis de Filamento\n" -"3. Os perfis de Impressora" +"1. As predefinições de Processo\n" +"2. As predefinições de Filamento\n" +"3. As predefinições de Impressora" msgid "Synchronization" msgstr "Sincronização" @@ -5392,13 +5388,13 @@ msgid "Invert Z axis" msgstr "Inverter eixo Z" msgid "Invert Yaw axis" -msgstr "Inverter eixo de guinada" +msgstr "Inverter eixo de Guinada" msgid "Invert Pitch axis" -msgstr "Inverter eixo de arfagem" +msgstr "Inverter eixo de Arfagem" msgid "Invert Roll axis" -msgstr "Inverter eixo de rotação" +msgstr "Inverter eixo de Rolamento" msgid "Printing Progress" msgstr "Progresso da Impressão" @@ -5932,7 +5928,7 @@ msgstr "" "Verifica se o bico está com filamento acumulado ou outros objetos estranhos." msgid "Nozzle Type" -msgstr "Tipo de bico" +msgstr "Tipo de Bico" msgid "Stainless Steel" msgstr "Aço inoxidável" @@ -5954,7 +5950,7 @@ msgid "Advance" msgstr "Avançado" msgid "Compare presets" -msgstr "Comparar presets" +msgstr "Comparar predefinições" msgid "View all object's settings" msgstr "Ver todas as configurações do objeto" @@ -6015,7 +6011,7 @@ msgid "Filament changes" msgstr "Mudanças de filamento" msgid "Click to edit preset" -msgstr "Clique para editar o preset" +msgstr "Clique para editar predefinição" msgid "Connection" msgstr "Conexão" @@ -6057,8 +6053,8 @@ msgid "" "Sync filaments with AMS will drop all current selected filament presets and " "colors. Do you want to continue?" msgstr "" -"Sincronizar filamentos com AMS eliminará todas os presets de filamento e " -"cores selecionadas atualmente. Deseja continuar?" +"Sincronizar filamentos com AMS eliminará todas as predefinições de filamento e cores " +"selecionadas atualmente. Deseja continuar?" msgid "" "Already did a synchronization, do you want to sync only changes or resync " @@ -6081,9 +6077,9 @@ msgid "" "Orca Slicer or restart Orca Slicer to check if there is an update to system " "presets." msgstr "" -"Alguns filamentos desconhecidos foram mapeados para preset genérico. Por " -"favor, atualize o Orca Slicer ou reinicie o Orca Slicer para verificar se há " -"uma atualização para presets do sistema." +"Alguns filamentos desconhecidos foram mapeados para a predefinição genérica. Por favor, " +"atualize o Orca Slicer ou reinicie o Orca Slicer para verificar se há uma " +"atualização para as predefinições do sistema." #, boost-format msgid "Do you want to save changes to \"%1%\"?" @@ -6112,18 +6108,18 @@ msgid "" "clogged when printing this filament in a closed enclosure. Please open the " "front door and/or remove the upper glass." msgstr "" -"A temperatura atual da mesa aquecida está relativamente alta. A boquilha " -"pode ficar obstruída ao imprimir este filamento em um compartimento fechado. " -"Por favor, abra a porta frontal e/ou remova o vidro superior." +"A temperatura atual da mesa aquecida está relativamente alta. O bico pode ficar " +"obstruído ao imprimir este filamento em um compartimento fechado. Por favor, abra a " +"porta frontal e/ou remova o vidro superior." 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 "" -"A dureza do bico necessária pelo filamento é maior do que a dureza padrão do " -"bico da impressora. Por favor, substitua a boquilha endurecida ou o " -"filamento, caso contrário, a boquilha será desgastada ou danificada." +"A dureza do bico necessária para o filamento é maior do que a dureza padrão do bico " +"da impressora. Por favor substitua o bico endurecido ou o filamento, caso contrário " +"o bico será desgastado ou danificado." msgid "" "Enabling traditional timelapse photography may cause surface imperfections. " @@ -6176,7 +6172,7 @@ msgstr "Por favor, corrija-os nas guias de parâmetros" msgid "The 3mf has following modified G-codes in filament or printer presets:" msgstr "" -"O 3mf possui os seguintes G-codes modificados em presets de filamento ou " +"O 3mf possui os seguintes G-codes modificados em predefinições de filamento ou " "impressora:" msgid "" @@ -6190,18 +6186,18 @@ msgid "Modified G-codes" msgstr "G-codes modificados" msgid "The 3mf has following customized filament or printer presets:" -msgstr "" -"O 3mf possui os seguintes perfis de filamento ou impressora personalizados:" +msgstr "O 3mf possui as seguintes predefinições de filamento ou impressora " +"personalizadas:" msgid "" "Please confirm that the G-codes within these presets are safe to prevent any " "damage to the machine!" msgstr "" -"Por favor, confirme se os G-codes dentro desses presets são seguros para " -"evitar qualquer dano à máquina!" +"Por favor, confirme se os G-codes dentro dessas predefinições são seguros para evitar " +"qualquer dano à máquina!" msgid "Customized Preset" -msgstr "Perfil Personalizado" +msgstr "Predefinição Personalizada" msgid "Name of components inside step file is not UTF8 format!" msgstr "" @@ -6376,8 +6372,7 @@ msgstr "" "de Preparação" msgid "You can keep the modified presets to the new project or discard them" -msgstr "" -"Você pode manter os presets modificados no novo projeto ou descartá-los" +msgstr "Você pode manter as predefinições modificadas no novo projeto ou descartá-las" msgid "Creating a new project" msgstr "Criando um novo projeto" @@ -6653,11 +6648,10 @@ msgid "Do you want to continue?" msgstr "Você deseja continuar?" msgid "Language selection" -msgstr "Seleção de Idioma" +msgstr "Seleção de idioma" msgid "Switching application language while some presets are modified." -msgstr "" -"A mudança do idioma do aplicativo enquanto alguns presets estão modificados." +msgstr "Alternando idioma do aplicativo enquanto algumas predefinições são modificadas." msgid "Changing application language" msgstr "Alterando o idioma do aplicativo" @@ -6781,7 +6775,7 @@ msgid "" "Touchpad: Alt+move for rotation, Shift+move for panning." msgstr "" "Selecione o estilo de navegação da câmera.\n" -"Padrão: LMB + mover para rotacionar, RMB/MMB + mover para fazer pan.\n" +"Padrão: LMB+mover para rotacionar, RMB/MMB+mover para fazer pan.\n" "Touchpad: Alt+mover para rotacionar, Shift+mover para fazer pan." msgid "Zoom to mouse position" @@ -6863,19 +6857,19 @@ msgstr "Rede" msgid "Auto sync user presets(Printer/Filament/Process)" msgstr "" -"Sincronização automática de presets do usuário(Impressora/Filamento/Processo)" +"Sincronização automática de predefinições do usuário(Impressora/Filamento/Processo)" msgid "User Sync" msgstr "Sincronização do Usuário" msgid "Update built-in Presets automatically." -msgstr "Atualizar presets integrados automaticamente." +msgstr "Atualizar automaticamente Predefinições integradas." msgid "System Sync" msgstr "Sincronização do Sistema" msgid "Clear my choice on the unsaved presets." -msgstr "Limpar minha escolha nos presets não salvos." +msgstr "Limpar minha escolha nas predefinições não salvas." msgid "Associate files to OrcaSlicer" msgstr "Associar arquivos ao OrcaSlicer" @@ -6981,7 +6975,7 @@ msgid "User sync" msgstr "Sincronização do usuário" msgid "Preset sync" -msgstr "Sincronização de preset" +msgstr "Sincronização de predefinição" msgid "Preferences sync" msgstr "Sincronização de preferências" @@ -7059,13 +7053,13 @@ msgid "Switch cloud environment, Please login again!" msgstr "Mudar o ambiente de nuvem, Por favor, faça login novamente!" msgid "System presets" -msgstr "Presets do sistema" +msgstr "Predefinições do sistema" msgid "User presets" -msgstr "Presets do usuário" +msgstr "Predefinições do usuário" msgid "Incompatible presets" -msgstr "Presets incompatíveis" +msgstr "Predefinições incompatíveis" msgid "AMS filaments" msgstr "Filamentos AMS" @@ -7077,13 +7071,13 @@ msgid "Please choose the filament colour" msgstr "Por favor, escolha a cor do filamento" msgid "Add/Remove presets" -msgstr "Adicionar/Remover presets" +msgstr "Adicionar/Remover predefinições" msgid "Edit preset" -msgstr "Editar preset" +msgstr "Editar predefinições" msgid "Project-inside presets" -msgstr "Presets dentro do projeto" +msgstr "Predefinições dentro do projeto" msgid "Add/Remove filaments" msgstr "Adicionar/Remover filamentos" @@ -7092,13 +7086,13 @@ msgid "Add/Remove materials" msgstr "Adicionar/Remover materiais" msgid "Select/Remove printers(system presets)" -msgstr "Selecionar/Remover impressoras (presets do sistema)" +msgstr "Selecionar/Remover impressoras (predefinições do sistema)" msgid "Create printer" msgstr "Criar impressora" msgid "The selected preset is null!" -msgstr "O preset selecionada é nulo!" +msgstr "A predefinição selecionada é nula!" msgid "End" msgstr "Fim" @@ -7187,10 +7181,10 @@ msgid "Save %s as" msgstr "Salvar %s como" msgid "User Preset" -msgstr "Preset do usuário" +msgstr "Predefinição do Usuário" msgid "Preset Inside Project" -msgstr "Preset dentro do projeto" +msgstr "Predefinição Dentro do Projeto" msgid "Name is unavailable." msgstr "O nome não está disponível." @@ -7200,20 +7194,20 @@ msgstr "Sobrescrever um perfil de sistema não é permitido" #, boost-format msgid "Preset \"%1%\" already exists." -msgstr "O perfil \"%1%\" já existe." +msgstr "A predefinição \"%1%\" já existe." #, boost-format msgid "Preset \"%1%\" already exists and is incompatible with current printer." -msgstr "O perfil \"%1%\" já existe e é incompatível com a impressora atual." +msgstr "A predefinição \"%1%\" já existe e é incompatível com a impressora atual." msgid "Please note that saving action will replace this preset" -msgstr "Por favor, note que a ação de salvar substituirá este perfil" +msgstr "Por favor, note que a ação de salvar substituirá esta predefinição" msgid "The name cannot be the same as a preset alias name." -msgstr "O nome não pode ser o mesmo que um nome de alias de perfil." +msgstr "O nome não pode ser o mesmo que um nome de alias de predefinição." msgid "Save preset" -msgstr "Salvar perfil" +msgstr "Salvar predefinição" msgctxt "PresetName" msgid "Copy" @@ -7221,11 +7215,11 @@ msgstr "Cópia" #, boost-format msgid "Printer \"%1%\" is selected with preset \"%2%\"" -msgstr "A impressora \"%1%\" está selecionada com o perfil \"%2%\"" +msgstr "A impressora \"%1%\" está selecionada com a predefinição \"%2%\"" #, boost-format msgid "Please choose an action with \"%1%\" preset after saving." -msgstr "Por favor, escolha uma ação com o perfil \"%1%\" após salvar." +msgstr "Por favor, escolha uma ação com a predefinição \"%1%\" após o salvamento." #, boost-format msgid "For \"%1%\", change \"%2%\" to \"%3%\" " @@ -7233,7 +7227,7 @@ msgstr "Para \"%1%\", mude \"%2%\" para \"%3%\" " #, boost-format msgid "For \"%1%\", add \"%2%\" as a new preset" -msgstr "Para \"%1%\", adicione \"%2%\" como um novo perfil" +msgstr "Para \"%1%\", adicione \"%2%\" como uma nova predefinição" #, boost-format msgid "Simply switch to \"%1%\"" @@ -7387,8 +7381,8 @@ msgid "" "The selected printer (%s) is incompatible with the chosen printer profile in " "the slicer (%s)." msgstr "" -"A impressora selecionada (%s) é incompatível com o perfil escolhido de " -"impressora no fatiador (%s)." +"A impressora selecionada (%s) é incompatível com o perfil de impressora escolhido no " +"fatiador (%s)." msgid "An SD card needs to be inserted to record timelapse." msgstr "Um cartão SD precisa ser inserido para gravar o timelapse." @@ -7445,7 +7439,7 @@ msgstr "" #, c-format, boost-format msgid "nozzle in preset: %s %s" -msgstr "bico no perfil: %s %s" +msgstr "bico na predefinição: %s %s" #, c-format, boost-format msgid "nozzle memorized: %.2f %s" @@ -7514,8 +7508,7 @@ msgstr "" msgid "The selected printer is incompatible with the chosen printer presets." msgstr "" -"A impressora selecionada é incompatível com os perfis de impressora " -"escolhidos." +"A impressora selecionada é incompatível com as predefinições de impressora escolhidas." msgid "An SD card needs to be inserted before send to printer SD card." msgstr "" @@ -7680,14 +7673,13 @@ msgid "Save current %s" msgstr "Salvar %s atual" msgid "Delete this preset" -msgstr "Excluir este preset" +msgstr "Excluir esta predefinição" msgid "Search in preset" -msgstr "Pesquisar nos presets" +msgstr "Pesquisar nas predefinições" msgid "Click to reset all settings to the last saved preset." -msgstr "" -"Clique para redefinir todas as configurações para o último preset salvo." +msgstr "Clique para redefinir todas as configurações para a última predefinição salva." msgid "" "Prime tower is required for smooth timelapse. There may be flaws on the " @@ -7813,21 +7805,22 @@ msgid "" "by right-click the empty position of build plate and choose \"Add " "Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" -"Ao gravar um timelapse sem o hotend aparecer, é recomendável adicionar uma " -"\"Torre Prime para Timelapse\" \n" -"clique com o botão direito na posição vazia da mesa e escolha \"Adicionar " -"Primitivo\"->\"Torre Prime para Timelapse\"." +"Ao gravar um timelapse sem o hotend aparecer, é recomendável adicionar uma \"Torre de " +"Limpeza para Timelapse\" \n" +"clique com o botão direito na posição vazia da mesa e escolha \"Adicionar Primitivo\"-" +">\"Torre de Limpeza para Timelapse\"." msgid "" "A copy of the current system preset will be created, which will be detached " "from the system preset." msgstr "" -"Uma cópia do perfil de sistema atual será criada, que será desanexada da " -"perfil de sistema." +"Uma cópia da predefinição de sistema atual será criada, que será desanexada da predefinição " +"de sistema." msgid "" "The current custom preset will be detached from the parent system preset." -msgstr "O perfil customizado atual será desanexado do perfil de sistema pai." +msgstr "" +"A predefinição customizada atual será desanexada da predefinição de sistema pai." msgid "Modifications to the current profile will be saved." msgstr "Modificações ao perfil atual serão salvas." @@ -7840,29 +7833,29 @@ msgstr "" "Você quer prosseguir?" msgid "Detach preset" -msgstr "Desanexar perfil" +msgstr "Desanexar predefinição" msgid "This is a default preset." -msgstr "Esse é um perfil padrão." +msgstr "Essa é uma predefinição padrão." msgid "This is a system preset." -msgstr "Esse é um perfil do sistema." +msgstr "Essa é uma predefinição do sistema." msgid "Current preset is inherited from the default preset." -msgstr "Perfil atual é herdado do perfil padrão." +msgstr "A predefinição atual é herdada da predefinição padrão." msgid "Current preset is inherited from" -msgstr "Perfil atual é herdado de" +msgstr "A predefinição atual é herdada de" msgid "It can't be deleted or modified." msgstr "Não pode ser excluído ou modificado." msgid "" "Any modifications should be saved as a new preset inherited from this one." -msgstr "Qualquer modificação deve ser salva como um novo perfil herdade deste." +msgstr "Qualquer modificação deve ser salva como uma nova predefinição herdada deste." msgid "To do that please specify a new name for the preset." -msgstr "Para fazer isso, por favor especifique um novo nome para o perfil." +msgstr "Para fazer isso, por favor especifique um novo nome para a predefinição." msgid "Additional information:" msgstr "Informação adicional:" @@ -7910,7 +7903,7 @@ msgid "Bridging" msgstr "Ponte" msgid "Overhangs" -msgstr "Overhangs" +msgstr "Saliências" msgid "Walls" msgstr "Perímetros" @@ -7925,17 +7918,17 @@ msgid "Other layers speed" msgstr "Velocidade de outras camadas" msgid "Overhang speed" -msgstr "Velocidade em overhangs" +msgstr "Velocidade em saliências" 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 "" -"Esta é a velocidade para vários graus de avanço. Os graus de avanço são " -"expressos como uma porcentagem da largura da linha. A velocidade 0 significa " -"que não há desaceleração para o intervalo de graus de avanço e a velocidade " -"do perímetro é usada" +"Esta é a velocidade para vários degraus de saliência. Os degraus de saliência são " +"expressos como uma porcentagem da largura da linha. A velocidade 0 significa que não " +"há desaceleração para o intervalo de degraus de saliência e a velocidade do perímetro " +"é usada" msgid "Bridge" msgstr "Ponte" @@ -7971,7 +7964,7 @@ msgid "Filament for Features" msgstr "" msgid "Ooze prevention" -msgstr "" +msgstr "Prevenção de vazamento" msgid "Skirt" msgstr "Saia" @@ -8026,7 +8019,7 @@ msgstr "Temperatura recomendada do bico" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "" -"Faixa de temperatura recomendada para esta boquilha. 0 significa não definido" +"Faixa de temperatura do bico recomendada para este filamento. 0 significa não definido" msgid "Flow ratio and Pressure Advance" msgstr "" @@ -8123,10 +8116,10 @@ msgid "" "maximum fan speed according to layer printing time" msgstr "" "A velocidade do ventilador de resfriamento da peça começará a funcionar na " -"velocidade mínima quando o tempo estimado da camada não for mais longo do " -"que o tempo da camada ajustado. Quando o tempo da camada for menor que o " -"limite, a velocidade do ventilador é interpolada entre a velocidade mínima e " -"máxima de acordo com o tempo de impressão da camada" +"velocidade mínima quando o tempo estimado da camada não for mais longo do que o " +"tempo da camada ajustado. Quando o tempo da camada for menor que o limiar, a " +"velocidade do ventilador é interpolada entre a velocidade mínima e máxima de acordo " +"com o tempo de impressão da camada" msgid "Max fan speed threshold" msgstr "Limiar de velocidade máxima do ventilador" @@ -8154,10 +8147,10 @@ msgid "Filament start G-code" msgstr "G-code de início do filamento" msgid "Filament end G-code" -msgstr "G-code final do filamento" +msgstr "G-code de final do filamento" msgid "Wipe tower parameters" -msgstr "Parâmetros da Torre Prime" +msgstr "Parâmetros da torre de limpeza" msgid "Toolchange parameters with single extruder MM printers" msgstr "" @@ -8233,7 +8226,7 @@ msgid "Pause G-code" msgstr "G-Code de pausa" msgid "Template Custom G-code" -msgstr "G-Code personalizado do modelo" +msgstr "G-Code personalizado do gabarito" msgid "Motion ability" msgstr "Movimento" @@ -8267,7 +8260,7 @@ msgid "Nozzle diameter" msgstr "Diâmetro do bico" msgid "Wipe tower" -msgstr "Torre Prime" +msgstr "Torre de limpeza" msgid "Single extruder multi-material parameters" msgstr "Parâmetros de múltiplos materiais com um único extrusor" @@ -8307,39 +8300,39 @@ msgid "" "%d Filament Preset and %d Process Preset is attached to this printer. Those " "presets would be deleted if the printer is deleted." msgstr "" -"%d Preset de Filamento e %d Preset de Processo estão vinculados a esta " -"impressora. Esses presets serão excluídos se a impressora for deletada." +"%d Predefinição de Filamento e %d Predefinição de Processo estão vinculados a esta " +"impressora. Essas predefinições serão excluídos se a impressora for deletada." msgid "Presets inherited by other presets can not be deleted!" -msgstr "Os perfis herdados por outros perfis não podem ser excluídos!" +msgstr "As predefinições herdados por outras predefinições não podem ser excluídas!" msgid "The following presets inherit this preset." msgid_plural "The following preset inherits this preset." -msgstr[0] "Os seguintes perfis herdam este perfil." -msgstr[1] "O seguinte perfil herda este perfil." +msgstr[0] "As seguintes predefinições herdam esta predefinição." +msgstr[1] "A seguinte predefinição herda esta predefinição." #. TRN Remove/Delete #, boost-format msgid "%1% Preset" -msgstr "%1% Perfil" +msgstr "%1% Predefinição" msgid "Following preset will be deleted too." msgid_plural "Following presets will be deleted too." -msgstr[0] "O seguinte perfil também será excluído." -msgstr[1] "Os seguintes perfis também serão excluídos." +msgstr[0] "A seguinte predefinição também será excluída." +msgstr[1] "As seguintes predefinições também serão excluídas." 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 "" -"Tem certeza de que deseja excluir o perfil selecionado? \n" -"Se o perfil corresponde a um filamento atualmente em uso em sua impressora, " +"Tem certeza de que deseja excluir a predefinição selecionada?\n" +"Se a predefinição corresponde a um filamento atualmente em uso em sua impressora, " "redefina as informações do filamento para esse slot." #, boost-format msgid "Are you sure to %1% the selected preset?" -msgstr "Tem certeza de %1% o perfil selecionado?" +msgstr "Tem certeza de %1% a predefinição selecionada?" msgid "All" msgstr "Todos" @@ -8397,14 +8390,14 @@ msgid "Keep the selected options." msgstr "Manter as opções selecionadas." msgid "Transfer the selected options to the newly selected preset." -msgstr "Transferir as opções selecionadas para o perfil recém-selecionado." +msgstr "Transferir as opções selecionadas para a predefinição recém-selecionada." #, boost-format msgid "" "Save the selected options to preset \n" "\"%1%\"." msgstr "" -"Salvar as opções selecionadas para o perfil \n" +"Salvar as opções selecionadas para a predefinição \n" "\"%1%\"." #, boost-format @@ -8412,39 +8405,39 @@ msgid "" "Transfer the selected options to the newly selected preset \n" "\"%1%\"." msgstr "" -"Transferir as opções selecionadas para o perfil recém-selecionado \n" +"Transferir as opções selecionadas para a predefinição recém-selecionada \n" "\"%1%\"." #, boost-format msgid "Preset \"%1%\" contains the following unsaved changes:" -msgstr "O perfil \"%1%\" contém as seguintes alterações não salvas:" +msgstr "A predefinição \"%1%\" contém as seguintes alterações não salvas:" #, boost-format msgid "" "Preset \"%1%\" is not compatible with the new printer profile and it " "contains the following unsaved changes:" msgstr "" -"O perfil \"%1%\" não é compatível com o novo perfil da impressora e contém " -"as seguintes alterações não salvas:" +"A predefinição \"%1%\" não é compatível com o novo perfil de impressora e contém as " +"seguintes alterações não salvas:" #, boost-format msgid "" "Preset \"%1%\" is not compatible with the new process profile and it " "contains the following unsaved changes:" msgstr "" -"O perfil \"%1%\" não é compatível com o novo perfil de processo e contém as " +"A predefinição \"%1%\" não é compatível com o novo perfil de processo e contém as " "seguintes alterações não salvas:" #, boost-format msgid "You have changed some settings of preset \"%1%\". " -msgstr "Você alterou algumas configurações do preset \"%1%\". " +msgstr "Você alterou algumas configurações da predefinição \"%1%\". " msgid "" "\n" "You can save or discard the preset values you have modified." msgstr "" "\n" -"Você pode salvar ou descartar os valores predefinidos que você modificou." +"Você pode salvar ou descartar os valores de predefinição que você modificou." msgid "" "\n" @@ -8452,8 +8445,8 @@ msgid "" "transfer the values you have modified to the new preset." msgstr "" "\n" -"Você pode salvar ou descartar os valores predefinidos que você modificou, ou " -"escolher transferir os valores modificados para o novo preset." +"Você pode salvar ou descartar os valores de predefinição que você modificou, ou " +"escolher transferir os valores modificados para a nova predefinição." msgid "You have previously modified your settings." msgstr "Você modificou suas configurações anteriormente." @@ -8464,7 +8457,7 @@ msgid "" "the modified values to the new project" msgstr "" "\n" -"Você pode descartar os valores predefinidos que você modificou, ou escolher " +"Você pode descartar os valores de predefinição que você modificou, ou escolher " "transferir os valores modificados para o novo projeto" msgid "Extruders count" @@ -8477,10 +8470,10 @@ msgid "Capabilities" msgstr "Capacidades" msgid "Show all presets (including incompatible)" -msgstr "Mostrar todos os perfis (incluindo os incompatíveis)" +msgstr "Mostrar todas as predefinições (incluindo as incompatíveis)" msgid "Select presets to compare" -msgstr "Selecione os perfis para comparar" +msgstr "Selecione as predefinições para comparar" msgid "" "You can only transfer to current active profile because it has been modified." @@ -8492,8 +8485,8 @@ msgid "" "Note: New modified presets will be selected in settings tabs after close " "this dialog." msgstr "" -"Transfira as opções selecionadas do perfil à esquerda para o da direita.\n" -"Nota: Novos perfis modificados serão selecionados nas guias de configurações " +"Transfira as opções selecionadas da predefinição da esquerda para o da direita.\n" +"Nota: Novas predefinições modificados serão selecionados nas guias de configurações " "após fechar este diálogo." msgid "Transfer values from left to right" @@ -8503,8 +8496,8 @@ msgid "" "If enabled, this dialog can be used for transfer selected values from left " "to right preset." msgstr "" -"Se ativo, este diálogo pode ser usado para transferir valores selecionados " -"do perfil à esquerda para o da direita." +"Se ativo, este diálogo pode ser usado para transferir valores selecionados da " +"predefinição da esquerda para a da direita." msgid "Add File" msgstr "Adicionar arquivo" @@ -9330,7 +9323,7 @@ msgid "Outer wall" msgstr "Perímetro externo" msgid "Overhang wall" -msgstr "Overhang" +msgstr "Perímetro saliente" msgid "Sparse infill" msgstr "Preenchimento esparso" @@ -9502,9 +9495,9 @@ msgid "" "together. Otherwise, the extruder and nozzle may be blocked or damaged " "during printing" msgstr "" -"Não é possível imprimir vários filamentos que têm grande diferença de " -"temperatura juntos. Caso contrário, o extrusor e a bocal podem ficar " -"bloqueados ou danificados durante a impressão" +"Não é possível imprimir juntos vários filamentos que têm grande diferença de " +"temperatura. Caso contrário, o extrusor e bico podem ficar bloqueados ou danificados " +"durante a impressão" msgid "No extrusions under current settings." msgstr "Nenhuma extrusão com as configurações atuais." @@ -9563,18 +9556,23 @@ msgid "" "well when the prime tower is enabled. It's very experimental, so please " "proceed with caution." msgstr "" +"Diferentes diâmetros de bico e diferentes diâmetros de filamento podem não funcionar " +"bem quando a torre principal estiver habilitada. É muito experimental, então prossiga " +"com cautela." msgid "" "The Wipe Tower is currently only supported with the relative extruder " "addressing (use_relative_e_distances=1)." msgstr "" -"A Torre Prime atualmente só é suportada com o endereçamento relativo da " +"A Torre de Limpeza só é suportada atualmente com o endereçamento relativo da " "extrusora (use_relative_e_distances=1)." msgid "" "Ooze prevention is only supported with the wipe tower when " "'single_extruder_multi_material' is off." msgstr "" +"A prevenção de vazamento só é suportada pela torre de limpeza quando " +"'single_extruder_multi_material' está desativado." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -9662,7 +9660,7 @@ msgstr "" "favor, habilite o suporte." msgid "Layer height cannot exceed nozzle diameter" -msgstr "A altura da camada não pode exceder o diâmetro da bocal" +msgstr "A altura da camada não pode exceder o diâmetro do bico" msgid "" "Relative extruder addressing requires resetting the extruder position at " @@ -9757,7 +9755,7 @@ msgid "Generating G-code" msgstr "Gerando G-code" msgid "Failed processing of the filename_format template." -msgstr "Falha no processamento do modelo filename_format." +msgstr "Falha no processamento do gabarito filename_format." msgid "Printable area" msgstr "Área de impressão" @@ -9829,7 +9827,7 @@ msgstr "" "inicial" msgid "Printer preset names" -msgstr "Nomes de presets da impressora" +msgstr "Nomes de predefinições de impressora" msgid "Use 3rd-party print host" msgstr "Usar host de impressão de terceiros" @@ -9908,7 +9906,7 @@ msgstr "" "certificados autoassinados se a conexão falhar." msgid "Names of presets related to the physical printer" -msgstr "Nomes dos presets relacionados à impressora física" +msgstr "Nomes das predefinições relacionados à impressora física" msgid "Authorization Type" msgstr "Tipo de autorização" @@ -10126,7 +10124,7 @@ msgid "Nowhere" msgstr "Nunca" msgid "Force cooling for overhangs and bridges" -msgstr "" +msgstr "Resfriamento forçado para saliências e pontes" msgid "" "Enable this option to allow adjustment of the part cooling fan speed for " @@ -10134,9 +10132,13 @@ msgid "" "speed specifically for these features can improve overall print quality and " "reduce warping." msgstr "" +"Habilite esta opção para permitir o ajuste da velocidade do ventilador de " +"resfriamento da peça especificamente para saliências, pontes internas e externas. " +"Definir a velocidade do ventilador especificamente para esses recursos pode " +"melhorar a qualidade geral da impressão e reduzir a deformação." msgid "Overhangs and external bridges fan speed" -msgstr "" +msgstr "Velocidade do ventilador para saliências e pontes externas" msgid "" "Use this part cooling fan speed when printing bridges or overhang walls with " @@ -10149,9 +10151,18 @@ msgid "" "speed threshold set above. It is also adjusted upwards up to the maximum fan " "speed threshold when the minimum layer time threshold is not met." msgstr "" +"Use esta parte da velocidade do ventilador de resfriamento ao imprimir pontes ou " +"paredes salientes com um limite de saliência que exceda o valor definido no parâmetro " +"'Limiar de resfriamento de saliências' acima. Aumentar o resfriamento especificamente " +"para saliências e pontes pode melhorar a qualidade geral de impressão desses recursos.\n" +"\n" +"Observe que esta velocidade do ventilador é fixada na extremidade inferior pelo limiar " +"mínimo de velocidade do ventilador definido acima. Ela também é ajustada para cima até " +"o limiar máximo de velocidade do ventilador quando o limiar mínimo de tempo da camada " +"não é atingido." msgid "Overhang cooling activation threshold" -msgstr "" +msgstr "Limiar de ativação de resfriamento de saliência" #, c-format, boost-format msgid "" @@ -10161,6 +10172,12 @@ msgid "" "by the layer beneath it. Setting this value to 0% forces the cooling fan to " "run for all outer walls, regardless of the overhang degree." msgstr "" +"Quando a saliência excede esse limiar especificado, força o ventilador de resfriamento " +"a funcionar na 'Velocidade da ventoinha de saliência' definida abaixo. Esse limiar é " +"expresso como uma porcentagem, indicando a parte da largura de cada linha que não é " +"suportada pela camada abaixo dela. Definir esse valor como 0% força o ventilador de " +"resfriamento a funcionar para todas as paredes externas, independentemente do grau de " +"saliência." msgid "External bridge infill direction" msgstr "" @@ -10278,7 +10295,7 @@ msgstr "" "padrão de preenchimento superior" msgid "One wall threshold" -msgstr "Limite de perímetro único" +msgstr "Limiar de perímetro único" #, no-c-format, no-boost-format msgid "" @@ -10312,20 +10329,20 @@ msgstr "" "de preenchimento inferior" msgid "Extra perimeters on overhangs" -msgstr "Perímetros extras em overhangs" +msgstr "Perímetros extras em saliências" msgid "" "Create additional perimeter paths over steep overhangs and areas where " "bridges cannot be anchored. " msgstr "" -"Crie caminhos de perímetro adicionais em overhangs íngremes e áreas onde " -"pontes não podem ser ancoradas. " +"Crie caminhos de perímetro adicionais em saliências íngremes e áreas onde pontes " +"não podem ser ancoradas. " msgid "Reverse on even" msgstr "" msgid "Overhang reversal" -msgstr "Reversão de suspensão" +msgstr "Reversão de saliência" msgid "" "Extrude perimeters that have a part over an overhang in the reverse " @@ -10335,6 +10352,12 @@ msgid "" "This setting can also help reduce part warping due to the reduction of " "stresses in the part walls." msgstr "" +"Extrusar perímetros que tenham uma parte sobre uma saliência na direção reversa em " +"camadas uniformes. Esse padrão alternado pode melhorar drasticamente saliências " +"íngremes.\n" +"\n" +"Essa configuração também pode ajudar a reduzir a deformação das peças devido à redução " +"de tensões nas paredes das peças." msgid "Reverse only internal perimeters" msgstr "Inverter apenas os perímetros internos" @@ -10353,6 +10376,18 @@ msgid "" "Reverse Threshold to 0 so that all internal walls print in alternating " "directions on even layers irrespective of their overhang degree." msgstr "" +"Aplique a lógica de perímetros reversos somente em perímetros internos.\n" +"\n" +"Esta configuração reduz muito as tensões das peças, pois elas agora são distribuídas " +"em direções alternadas. Isso deve reduzir a deformação das peças, mantendo também a " +"qualidade da parede externa. Este recurso pode ser muito útil para materiais propensos " +"à deformação, como ABS/ASA, e também para filamentos elásticos, como TPU e Silk PLA. " +"Também pode ajudar a reduzir a deformação em regiões flutuantes sobre suportes.\n" +"\n" +"Para que essa configuração seja mais eficaz, é recomendável definir o Limiar Reverso " +"como 0 para que todas as paredes internas sejam impressas em direções alternadas em " +"camadas uniformes, independentemente do grau de saliência." + msgid "Bridge counterbore holes" msgstr "Pontes para furos rebaixados" @@ -10378,10 +10413,10 @@ msgid "Sacrificial layer" msgstr "Camada de sacrifício" msgid "Reverse threshold" -msgstr "Limiar de inversão" +msgstr "Limiar reverso" msgid "Overhang reversal threshold" -msgstr "Limiar de inversão de overhang" +msgstr "Limiar de reversão de saliência" #, no-c-format, no-boost-format msgid "" @@ -10391,6 +10426,11 @@ msgid "" "When Detect overhang wall is not enabled, this option is ignored and " "reversal happens on every even layers regardless." msgstr "" +"Número de mm que a saliência precisa ter para que a reversão seja considerada útil. " +"Pode ser uma % da largura do perímetro.\n" +"O valor 0 permite a reversão em todas as camadas pares, sempre.\n" +"Quando Detectar parede saliente não está habilitado, esta opção é ignorada e a " +"reversão acontece em todas as camadas pares, sempre." msgid "Classic mode" msgstr "Modo clássico" @@ -10399,12 +10439,12 @@ msgid "Enable this option to use classic mode" msgstr "Ative esta opção para usar o modo clássico" msgid "Slow down for overhang" -msgstr "Reduzir velocidade em overhangs" +msgstr "Reduzir velocidade em saliências" msgid "Enable this option to slow printing down for different overhang degree" msgstr "" -"Ative esta opção para diminuir a velocidade de impressão em diferentes graus " -"de inclinação" +"Ative esta opção para diminuir a velocidade de impressão para diferentes de degraus " +"de saliência" msgid "Slow down for curled perimeters" msgstr "Reduzir vel. para perímetros encurvados" @@ -10530,6 +10570,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" +"Uma expressão booleana usando os valores de configuração de um perfil de impressora " +"ativo. Se essa expressão for avaliada como true, esse perfil será considerado compatível " +"com o perfil de impressora ativo." msgid "Compatible process profiles" msgstr "Perfis de processo compatíveis" @@ -10542,6 +10585,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" +"Uma expressão booleana usando os valores de configuração de um perfil de impressão " +"ativo. Se essa expressão for avaliada como true, esse perfil será considerado compatível " +"com o perfil de impressão ativo." msgid "Print sequence, layer by layer or object by object" msgstr "Sequência de impressão, camada por camada ou objeto por objeto" @@ -10570,11 +10616,10 @@ msgid "" "that layer can be cooled for longer time. This can improve the cooling " "quality for needle and small details" msgstr "" -"Ative esta opção para diminuir a velocidade de impressão para que o tempo da " -"camada final não seja menor do que o limite de tempo da camada em \"Limiar " -"de velocidade máxima do ventilador\", para que a camada possa ser resfriada " -"por mais tempo. Isso pode melhorar a qualidade de resfriamento para detalhes " -"pequenos" +"Ative esta opção para diminuir a velocidade de impressão para que o tempo da camada " +"final não seja menor do que o limiar de tempo da camada em \"Limiar de velocidade " +"máxima do ventilador\", para que a camada possa ser resfriada por mais tempo. Isso " +"pode melhorar a qualidade de resfriamento para detalhes pequenos" msgid "Normal printing" msgstr "Impressão normal" @@ -10663,9 +10708,8 @@ msgid "" "have this feature turned on. However, consider turning it off if you are " "using large nozzles." msgstr "" -"Se ativado, serão usadas pontes internas grossas. Geralmente é recomendado " -"ter este recurso ativado. No entanto, considere desativá-lo se estiver " -"usando bocais grandes." +"Se ativado, serão usadas pontes internas grossas. Geralmente é recomendado ter este " +"recurso ativado. No entanto, considere desativá-lo se estiver usando bicos grandes." msgid "Extra bridge layers (beta)" msgstr "Camadas extra de ponte (beta)" @@ -10903,8 +10947,7 @@ msgstr "Limiar de pequenos perímetros" msgid "" "This sets the threshold for small perimeter length. Default threshold is 0mm" msgstr "" -"Isso define o limite para o comprimento do perímetro pequeno. O limite " -"padrão é 0mm" +"Isso define o limiar para o comprimento do perímetro pequeno. O limiar padrão é 0mm" msgid "Walls printing order" msgstr "Ordem de impressão dos perímetros" @@ -10941,15 +10984,14 @@ msgstr "" "ligeiramente reduzida, pois o perímetro externo é deformado ao ser esmagado " "pelo perímetro interno.\n" "\n" -"Use Interior/Exterior/Interior para o melhor acabamento superficial externo " -"e precisão dimensional, pois o perímetro externo é impresso sem interrupções " -"a partir de um perímetro interno. No entanto, o desempenho da inclinaçãoserá " -"reduzido, pois não há perímetro interno para imprimir o perímetro externo. " -"Esta opção requer um mínimo de 3 perímetros para ser eficaz, pois imprime os " -"perímetros internos a partir do terceiro perímetro em diante primeiro, " -"depois o perímetro externo e, por fim, o primeiro perímetro interno. Esta " -"opção é recomendada em relação à opção Exterior/Interior na maioria dos " -"casos. \n" +"Use Interior/Exterior/Interior para o melhor acabamento superficial externo e " +"precisão dimensional, pois o perímetro externo é impresso sem interrupções a partir " +"de um perímetro interno. No entanto, o desempenho da saliência será reduzido, pois " +"não há perímetro interno para imprimir o perímetro externo. Esta opção requer um " +"mínimo de 3 perímetros para ser eficaz, pois imprime os perímetros internos a partir " +"do terceiro perímetro em diante primeiro, depois o perímetro externo e, por fim, o " +"primeiro perímetro interno. Esta opção é recomendada em relação à opção Exterior/" +"Interior na maioria dos casos. \n" "\n" "Use Exterior/Interior para obter os mesmos benefícios de qualidade de parede " "externa e precisão dimensional da opção Interior/Exterior/Interior. No " @@ -10984,11 +11026,11 @@ msgstr "" "as paredes são impressas primeiro, o que funciona melhor na maioria dos " "casos.\n" "\n" -"Imprimir as paredes primeiro pode ajudar com overhangs extremos, pois as " -"paredes têm o preenchimento vizinho para aderir. No entanto, o preenchimento " -"empurrará levemente as paredes impressas onde está conectado a elas, " -"resultando em um acabamento de superfície externa pior. Também pode fazer " -"com que o preenchimento apareça através das superfícies externas da peça." +"Imprimir as paredes primeiro pode ajudar com saliências extremas, pois as paredes têm " +"o preenchimento vizinho para aderir. No entanto, o preenchimento empurrará levemente " +"as paredes impressas onde está conectado a elas, resultando em um acabamento de " +"superfície externa pior. Também pode fazer com que o preenchimento apareça através " +"das superfícies externas da peça." msgid "Wall loop direction" msgstr "Direção da volta do perímetro" @@ -11017,7 +11059,7 @@ msgid "" "Distance of the nozzle tip to the lower rod. Used for collision avoidance in " "by-object printing." msgstr "" -"Distância da ponta do bico ao tubo inferior. Usado para evitar colisões na " +"Distância da ponta do bico até a haste inferior. Usado para evitar colisões na " "impressão por objeto." msgid "Height to lid" @@ -11220,7 +11262,7 @@ msgid "" msgstr "" msgid "Enable adaptive pressure advance for overhangs (beta)" -msgstr "" +msgstr "Habilitar avanço de pressão adaptável para saliências (beta)" msgid "" "Enable adaptive PA for overhangs as well as when flow changes within the " @@ -11228,9 +11270,13 @@ msgid "" "set accurately, it will cause uniformity issues on the external surfaces " "before and after overhangs.\n" msgstr "" +"Habilite o PA adaptável para saliências, bem como quando o fluxo muda dentro do mesmo " +"recurso. Esta é uma opção experimental, pois se o perfil do PA não for definido com " +"precisão, ele causará problemas de uniformidade nas superfícies externas antes e depois " +"das saliências.\n" msgid "Pressure advance for bridges" -msgstr "" +msgstr "Avanço de pressão para pontes" msgid "" "Pressure advance value for bridges. Set to 0 to disable. \n" @@ -11402,7 +11448,7 @@ msgid "Loading speed" msgstr "Velocidade de carregamento" msgid "Speed used for loading the filament on the wipe tower." -msgstr "Velocidade usada para carregar o filamento na Torre Prime." +msgstr "Velocidade usada para carregar o filamento na torre de limpeza." msgid "Loading speed at the start" msgstr "Velocidade de carregamento no início" @@ -11417,7 +11463,7 @@ msgid "" "Speed used for unloading the filament on the wipe tower (does not affect " "initial part of unloading just after ramming)." msgstr "" -"Velocidade usada para descarregar o filamento na Torre Prime (não afeta a " +"Velocidade usada para descarregar o filamento na torre de limpeza (não afeta a " "parte inicial do descarregamento logo após o moldeamento)." msgid "Unloading speed at the start" @@ -11475,7 +11521,7 @@ msgstr "" "velocidade." msgid "Minimal purge on wipe tower" -msgstr "Purga mínima na Torre Prime" +msgstr "Purga mínima na torre de limpeza" msgid "" "After a tool change, the exact position of the newly loaded filament inside " @@ -11484,12 +11530,12 @@ msgid "" "object, Orca Slicer will always prime this amount of material into the wipe " "tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" -"Após uma troca de filamento, a posição exata do filamento recém-carregado " -"dentro do bico pode não ser conhecida, e a pressão do filamento " -"provavelmente ainda não está estável. Antes de purgar a cabeça de impressão " -"em um preenchimento ou em um objeto de sacrifício, o Orca Slicer sempre " -"preparará essa quantidade de material na Torre Prime para produzir extrusões " -"sucessivas de preenchimento ou de objeto de sacrifício de forma confiável." +"Após uma troca de ferramenta, a posição exata do filamento recém-carregado dentro do " +"bico pode não ser conhecida, e a pressão do filamento provavelmente ainda não está " +"estável. Antes de purgar a cabeça de impressão em um preenchimento ou em um objeto de " +"sacrifício, o Orca Slicer sempre preparará essa quantidade de material na torre de " +"limpeza para produzir extrusões sucessivas de preenchimento ou de objeto de sacrifício " +"de forma confiável." msgid "Speed of the last cooling move" msgstr "Velocidade do último movimento de resfriamento" @@ -11518,11 +11564,11 @@ msgid "" "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 "" -"Realizar moldeamentoao usando impressora multi-extrusora(ou seja, quando a " -"opção 'Único Extrusor Multimaterial' em Configurações de Impressora está " -"desmarcada). Quando ativo, uma pequena quantidade de filamento é rapidamente " -"extrudado na Torre Prime logo antes da troca de extrusora. Esta opção é " -"usada apenas quando a Torre Prime está habilitada." +"Realizar moldeamento usando impressora multi-extrusora (ou seja, quando a opção " +"'Único Extrusor Multimaterial' em Configurações de Impressora está desmarcada). " +"Quando ativo, uma pequena quantidade de filamento é rapidamente extrudado na " +"torre de limpeza logo antes da troca de ferramenta. Esta opção é usada apenas " +"quando a torre de limpeza está habilitada." msgid "Multi-tool ramming volume" msgstr "Volume de moldeamento multi-extrusora" @@ -11928,7 +11974,7 @@ msgid "" msgstr "" msgid "Internal bridges fan speed" -msgstr "" +msgstr "Velocidade do ventilador das pontes internas" msgid "" "The part cooling fan speed used for all internal bridges. Set to -1 to use " @@ -12046,6 +12092,10 @@ msgid "" "(in mm). This setting applies to top, bottom and solid infill and, if using " "the classic perimeter generator, to wall gap fill. " msgstr "" +"Não imprimir preenchimento de lacuna com um comprimento menor que o limiar especificado " +"(em mm). Esta configuração se aplica ao preenchimento superior, inferior e sólido e, " +"se estiver usando o gerador de perímetro clássico, ao preenchimento de lacuna de " +"parede." msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " @@ -12136,11 +12186,11 @@ msgid "" "The nozzle's hardness. Zero means no checking for nozzle's hardness during " "slicing." msgstr "" -"A dureza do bico. Zero significa que não há verificação da dureza do bico " -"durante a fatiamento." +"A dureza do bico. Zero significa que não há verificação da dureza do bico durante o " +"fatiamento." msgid "HRC" -msgstr "RH" +msgstr "HRC" msgid "Printer structure" msgstr "Estrutura da impressora" @@ -12197,10 +12247,10 @@ msgstr "" "Use 0 para desativar." msgid "Only overhangs" -msgstr "Apenas overhangs" +msgstr "Apenas saliências" msgid "Will only take into account the delay for the cooling of overhangs." -msgstr "Levará em conta apenas o atraso para o resfriamento dos s." +msgstr "Levará em conta apenas o atraso para o resfriamento das saliências." msgid "Fan kick-start time" msgstr "Tempo de inicialização do ventilador" @@ -12505,6 +12555,8 @@ msgid "" "The distance to keep from the edges. A value of 0 sets this to half of the " "nozzle diameter" msgstr "" +"A distância a ser mantida das bordas. Um valor de 0 define isso como metade do " +"diâmetro do bico" msgid "Ironing speed" msgstr "Velocidade do passar ferro" @@ -12743,14 +12795,13 @@ msgstr "" "\n" "Um valor de 0 desativa o recurso.\n" "\n" -"Para uma impressora de acionamento direto de alta velocidade e alto fluxo " -"(como a Bambu lab ou Voron), esse valor geralmente não é necessário. No " -"entanto, pode fornecer alguns benefícios marginais em certos casos em que as " -"velocidades das características variam muito. Por exemplo, quando há " -"desacelerações agressivas devido a overhangs. Nesses casos, um valor alto de " -"cerca de 300-350mm3/s2 é recomendado, pois isso permite apenas suavização " -"suficiente para ajudar o Pressure advance a alcançar uma transição de fluxo " -"mais suave.\n" +"Para uma impressora de acionamento direto de alta velocidade e alto fluxo (como a " +"Bambu lab ou Voron), esse valor geralmente não é necessário. No entanto, pode " +"fornecer alguns benefícios marginais em certos casos em que as velocidades das " +"características variam muito. Por exemplo, quando há desacelerações agressivas " +"devido a saliências. Nesses casos, um valor alto de cerca de 300-350mm3/s2 é " +"recomendado, pois isso permite apenas suavização suficiente para ajudar o Pressure " +"advance a alcançar uma transição de fluxo mais suave.\n" "\n" "Para impressoras mais lentas sem Pressure advance, o valor deve ser definido " "muito mais baixo. Um valor de 10-15mm3/s2 é um bom ponto de partida para " @@ -12778,7 +12829,7 @@ msgid "" msgstr "" msgid "Apply only on external features" -msgstr "" +msgstr "Aplicar somente em recursos externos" msgid "" "Applies extrusion rate smoothing only on external perimeters and overhangs. " @@ -12786,6 +12837,10 @@ msgid "" "visible overhangs without impacting the print speed of features that will " "not be visible to the user." msgstr "" +"Aplica suavização de taxa de extrusão somente em perímetros externos e saliências. " +"Isso pode ajudar a reduzir artefatos devido a transições de velocidade bruscas em " +"saliências visíveis externamente sem impactar a velocidade de impressão de recursos " +"que não serão visíveis ao usuário." msgid "Minimum speed for part cooling fan" msgstr "Velocidade mínima para o ventilador de resfriamento da peça" @@ -12937,25 +12992,25 @@ msgid "User can self-define the project file name when export" msgstr "O usuário pode auto-definir o nome do arquivo do projeto ao exportar" msgid "Make overhangs printable" -msgstr "Overhangs imprimíveis" +msgstr "Tornar saliências imprimíveis" msgid "Modify the geometry to print overhangs without support material." -msgstr "Modifica a geometria para imprimir overhangs sem suporte." +msgstr "Modifica a geometria para imprimir saliências sem suporte." msgid "Make overhangs printable - Maximum angle" -msgstr "Overhangs imprimíveis - ângulo máx" +msgstr "Tornar saliências imprimíveis - Ângulo máximo" 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 "" -"Ângulo máximo do overhang permitido antes de fazer ângulos mais íngremes " -"imprimíveis. 90° não vai fazer nenhuma mudança no modelo e vai permitir " -"qualquer overhang. 0 vai substituir todos overhangs por uma forma cônica." +"Ângulo máximo da saliência permitido antes de fazer ângulos mais íngremes imprimíveis. " +"90° não vai fazer nenhuma mudança no modelo e vai permitir qualquer overhang. 0 vai " +"substituir todas as saliências por uma forma cônica." msgid "Make overhangs printable - Hole area" -msgstr "Overhangs imprimíveis - área do furo" +msgstr "Tornar saliências imprimíveis - Área do furo" msgid "" "Maximum area of a hole in the base of the model before it's filled by " @@ -12965,22 +13020,22 @@ msgstr "" "uma forma cônica. Um valor 0 irá preencher todos os furos do modelo." msgid "mm²" -msgstr "mm2" +msgstr "mm²" msgid "Detect overhang wall" -msgstr "Detectar overhangs" +msgstr "Detectar paredes salientes" #, 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 "" -"Detecta a porcentagem relativa de overhang em relação a largura do perímetro " -"e usa uma velocidade diferente de impressão. Para overhangs 100%%, a " -"velocidade de ponte é usada." +"Detecta a porcentagem relativa de saliência em relação a largura do perímetro e usa " +"uma velocidade diferente de impressão. Para saliências 100%%, a velocidade de ponte é " +"usada." msgid "Filament to print walls" -msgstr "" +msgstr "Filamento para imprimir paredes" msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " @@ -13098,8 +13153,8 @@ msgid "" "Only trigger retraction when the travel distance is longer than this " "threshold" msgstr "" -"Disparar a retração somente quando a distância da deslocamento for maior que " -"este limite" +"Acionar a retração somente quando a distância da deslocamento for maior que este " +"limiar" msgid "Retract amount before wipe" msgstr "Quantidade de retração antes da limpeza" @@ -13131,8 +13186,8 @@ msgid "" "Some amount of material in extruder is pulled back to avoid ooze during long " "travel. Set zero to disable retraction" msgstr "" -"Alguma quantidade de material no extrusor é puxada para trás para evitar " -"oozing durante viagens longas. Defina zero para desativar a retração" +"Alguma quantidade de material na extrusora é puxada para trás para evitar vazamento " +"durante viagens longas. Defina zero para desativar a retração" msgid "Long retraction when cut(experimental)" msgstr "Retração longa quando cortado(experimental)" @@ -13352,25 +13407,25 @@ msgstr "" "do diâmetro atual do extrusor. O valor padrão para este parâmetro é 10%." msgid "Scarf joint seam (beta)" -msgstr "Costura Scarf (beta)" +msgstr "Costura junta cachecol (beta)" msgid "Use scarf joint to minimize seam visibility and increase seam strength." msgstr "" -"Use a Costura Scarf para minimizar a visibilidade da costura e aumentar a " +"Use a junta cachecol para minimizar a visibilidade da costura e aumentar a " "resistência da costura." msgid "Conditional scarf joint" -msgstr "Costura Scarf condicional" +msgstr "Junta cachecol condicional" msgid "" "Apply scarf joints only to smooth perimeters where traditional seams do not " "conceal the seams at sharp corners effectively." msgstr "" -"Aplique a Costura Scarf apenas em perímetros suaves onde costuras " -"tradicionais não escondem as costuras em cantos agudos de forma eficaz." +"Aplique juntas cachecol apenas em perímetros suaves onde costuras tradicionais não " +"escondem as costuras em cantos agudos de forma eficaz." msgid "Conditional angle threshold" -msgstr "Ângulo condicional" +msgstr "Limiar de ângulo condicional" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " @@ -13379,14 +13434,14 @@ msgid "" "(indicating the absence of sharp corners), a scarf joint seam will be used. " "The default value is 155°." msgstr "" -"Esta opção define o ângulo limite para aplicar uma costura scarf " +"Esta opção define o ângulo limiar para aplicar uma costura junta cachecol " "condicional.\n" -"Se o ângulo máximo dentro do loop do perímetro exceder esse valor (indicando " -"a ausência de cantos afiados), será usada uma costura scarf. O valor padrão " +"Se o ângulo máximo dentro do loop do perímetro exceder esse valor (indicando a " +"ausência de cantos afiados), será usada uma costura junta cachecol. O valor padrão " "é 155°." msgid "Conditional overhang threshold" -msgstr "Overhang condicional" +msgstr "Limiar de saliência condicional" #, no-c-format, no-boost-format msgid "" @@ -13396,14 +13451,13 @@ msgid "" "at 40% of the external wall's width. Due to performance considerations, the " "degree of overhang is estimated." msgstr "" -"Esta opção determina o limiar de inclinação para a aplicação de costuras " -"Scarf. Se a parte sem suporte do perímetro for inferior a esse limite, as " -"costuras Scarf serão aplicadas. O limite padrão é definido em 40% da largura " -"do perímetro externo. Devido a considerações de desempenho, o grau de " -"inclinação é estimado." +"Esta opção determina o limiar de saliência para a aplicação de juntas cachecol. Se a " +"parte sem suporte do perímetro for inferior a esse limiar, as costuras junta cachecol " +"serão aplicadas. O limiar padrão é definido em 40% da largura do perímetro externo. " +"Devido a considerações de desempenho, o grau de saliência é estimado." msgid "Scarf joint speed" -msgstr "Velocidade da Costura Scarf" +msgstr "Velocidade da junta cachecol" msgid "" "This option sets the printing speed for scarf joints. It is recommended to " @@ -13415,64 +13469,64 @@ msgid "" "percentage (e.g., 80%), the speed is calculated based on the respective " "outer or inner wall speed. The default value is set to 100%." msgstr "" -"Esta opção define a velocidade de impressão para as costuras Scarf. É " -"recomendável imprimir as costuras Scarf em uma velocidade baixa (menor que " -"100 mm/s). Também é aconselhável habilitar 'Suavização da taxa de extrusão' " -"se a velocidade definida variar significativamente da velocidade das paredes " -"externas ou internas. Se a velocidade especificada aqui for maior que a " -"velocidade das paredes externas ou internas, a impressora utilizará a mais " -"lenta das duas velocidades. Quando especificado como uma porcentagem (por " -"exemplo, 80%), a velocidade é calculada com base na velocidade do perímetro " -"externo ou interna respectiva. O valor padrão é definido como 100%." +"Esta opção define a velocidade de impressão para as juntas cachecol. É recomendável " +"imprimir as juntas cachecol em uma velocidade baixa (menor que 100 mm/s). Também é " +"aconselhável habilitar 'Suavização da taxa de extrusão' se a velocidade definida " +"variar significativamente da velocidade das paredes externas ou internas. Se a " +"velocidade especificada aqui for maior que a velocidade das paredes externas ou " +"internas, a impressora utilizará a mais lenta das duas velocidades. Quando " +"especificado como uma porcentagem (por exemplo, 80%), a velocidade é calculada com " +"base na velocidade do perímetro externo ou interna respectiva. O valor padrão é " +"definido como 100%." msgid "Scarf joint flow ratio" -msgstr "Fluxo da Costura Scarf" +msgstr "Fluxo da junta cachecol" msgid "This factor affects the amount of material for scarf joints." -msgstr "Este fator afeta a quantidade de material para as costuras Scarf." +msgstr "Este fator afeta a quantidade de material para as juntas cachecol." msgid "Scarf start height" -msgstr "Altura inicial da junta Scarf" +msgstr "Altura inicial do cachecol" msgid "" "Start height of the scarf.\n" "This amount can be specified in millimeters or as a percentage of the " "current layer height. The default value for this parameter is 0." msgstr "" -"Altura inicial da costura Scarf.\n" -"Esta quantidade pode ser especificada em milímetros ou como uma porcentagem " -"da altura atual da camada. O valor padrão para este parâmetro é 0." +"Altura inicial do cachecol.\n" +"Esta quantidade pode ser especificada em milímetros ou como uma porcentagem da " +"altura atual da camada. O valor padrão para este parâmetro é 0." msgid "Scarf around entire wall" -msgstr "Costura Scarf em torno do perímetro" +msgstr "Cachecol em torno de todo perímetro" msgid "The scarf extends to the entire length of the wall." -msgstr "A junta Scarf se estende por todo o comprimento do perímetro." +msgstr "O cachecol se estende por todo o comprimento do perímetro." msgid "Scarf length" -msgstr "Comprimento da Costura Scarf" +msgstr "Comprimento do cachecol" msgid "" "Length of the scarf. Setting this parameter to zero effectively disables the " "scarf." msgstr "" -"Comprimento da costura Scarf. Definir este parâmetro como zero desabilita a " -"costura Scarf." +"Comprimento do cachecol. Definir este parâmetro como zero efetivamente desabilita o " +"cachecol." msgid "Scarf steps" -msgstr "Passos da junta Scarf" +msgstr "Degraus do cachecol" msgid "Minimum number of segments of each scarf." -msgstr "Número mínimo de segmentos de cada costura scarf." +msgstr "Número mínimo de segmentos de cada cachecol." msgid "Scarf joint for inner walls" -msgstr "Junta Scarf em paredes internas" +msgstr "Junta cachecol em paredes internas" msgid "Use scarf joint for inner walls as well." -msgstr "Usar costura Scarf em paredes internas também." +msgstr "Usar junta cachecol em paredes internas também." msgid "Role base wipe speed" -msgstr "Velocidade base de limpeza da função" +msgstr "Velocidade de limpeza baseada na função" msgid "" "The wipe speed is determined by the speed of the current extrusion role.e.g. " @@ -13629,8 +13683,8 @@ msgid "" "Sparse infill area which is smaller than threshold value is replaced by " "internal solid infill" msgstr "" -"A área de preenchimento esparso que é menor que o valor de limiar é " -"substituída por preenchimento sólido interno" +"A área de preenchimento esparso que é menor que o valor limiar é substituída por " +"preenchimento sólido interno" msgid "Solid infill" msgstr "" @@ -13793,10 +13847,10 @@ msgid "" "print the wipe tower. User is responsible for ensuring there is no collision " "with the print." msgstr "" -"Se ativado, a Torre Prime não será impressa em camadas sem troca de " -"ferramenta. Em camadas com uma troca de ferramenta, a extrusora viajará para " -"baixo para imprimir a Torre Prime. O usuário é responsável por garantir que " -"não haja colisão com a impressão." +"Se ativado, a torre de limpeza não será impressa em camadas sem troca de ferramenta. " +"Em camadas com uma troca de ferramenta, a extrusora viajará para baixo para imprimir " +"a torre de limpeza. O usuário é responsável por garantir que não haja colisão com a " +"impressão." msgid "Prime all printing extruders" msgstr "Primer todos os extrusores de impressão" @@ -13888,8 +13942,7 @@ msgid "Pattern angle" msgstr "Ângulo de padrão" msgid "Use this setting to rotate the support pattern on the horizontal plane." -msgstr "" -"Use esta configuração para girar o padrão de suporte no plano horizontal." +msgstr "Use esta configuração para rotacionar o padrão de suporte no plano horizontal." msgid "On build plate only" msgstr "Somente na mesa" @@ -13908,10 +13961,10 @@ msgstr "" "etc." msgid "Remove small overhangs" -msgstr "Remover pequenos overhangs" +msgstr "Remover pequenas saliências" msgid "Remove small overhangs that possibly need no supports." -msgstr "Remova pequenos balanços que possivelmente não precisam de suporte." +msgstr "Remova pequenas saliências que possivelmente não precisam de suporte." msgid "Top Z distance" msgstr "Distância Z superior" @@ -14052,14 +14105,12 @@ msgid "" "style will create similar structure to normal support under large flat " "overhangs." msgstr "" -"Estilo e forma do suporte. Para suporte normal, projetar os suportes em uma " -"grade regular criará suportes mais estáveis (padrão), enquanto torres de " -"suporte ajustadas economizarão material e reduzirão a cicatrização do " -"objeto.\n" -"Para suporte de árvore, estilo fino e orgânico mesclarão os galhos de forma " -"mais agressiva e economizarão muito material (orgânico padrão), enquanto o " -"estilo híbrido criará uma estrutura semelhante ao suporte normal em grandes " -"overhangs planas." +"Estilo e forma do suporte. Para suporte normal, projetar os suportes em uma grade " +"regular criará suportes mais estáveis (padrão), enquanto torres de suporte ajustadas " +"economizarão material e reduzirão a cicatrização do objeto.\n" +"Para suporte de árvore, estilo fino e orgânico mesclarão os galhos de forma mais " +"agressiva e economizarão muito material (orgânico padrão), enquanto o estilo híbrido " +"criará uma estrutura semelhante ao suporte normal em grandes saliências planas." msgid "Default (Grid/Organic" msgstr "" @@ -14092,36 +14143,38 @@ msgstr "" "impressão. Esta opção será inválida quando a Torre Prime estiver ativa." msgid "Threshold angle" -msgstr "Ângulo de limite" +msgstr "Ângulo limiar" msgid "" "Support will be generated for overhangs whose slope angle is below the " "threshold." msgstr "" -"O suporte será gerado para overhangs cujo ângulo de inclinação estiver " -"abaixo do limite." +"O suporte será gerado para saliências cujo ângulo de inclinação estiver abaixo do " +"limiar." msgid "Threshold overlap" -msgstr "" +msgstr "Sobreposição de limiar" msgid "" "If threshold angle is zero, support will be generated for overhangs whose " "overlap is below the threshold. The smaller this value is, the steeper the " "overhang that can be printed without support." msgstr "" +"Se o ângulo limiar for zero, o suporte será gerado para saliências cuja sobreposição " +"estiver abaixo do limiar. Quanto menor for esse valor, mais íngreme será a saliência " +"que pode ser impressa sem suporte." msgid "Tree support branch angle" -msgstr "Ângulo da ramificação" +msgstr "Ângulo da ramificação da árvore de suporte" 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 "" -"Esta configuração determina o ângulo máximo de inclinação que as " -"ramificações de suporte de árvore podem fazer. Se o ângulo for aumentado, as " -"ramificações podem ser impressas de forma mais horizontal, permitindo que " -"alcancem mais longe." +"Esta configuração determina o ângulo máximo de saliência que as ramificações de " +"suporte de árvore podem fazer. Se o ângulo for aumentado, as ramificações podem ser " +"impressas de forma mais horizontal, permitindo que alcancem mais longe." msgid "Preferred Branch Angle" msgstr "Ângulo preferido da ramificação" @@ -14158,10 +14211,10 @@ msgid "" "needed." msgstr "" "Ajusta a densidade da estrutura de suporte usada para gerar as pontas das " -"ramificações. Um valor mais alto resulta em overhangs melhores, mas os " -"suportes são mais difíceis de remover, portanto, é recomendável ativar as " -"interfaces superiores de suporte em vez de um valor de densidade de ramo " -"alto se forem necessárias interfaces densas." +"ramificações. Um valor mais alto resulta em saliências melhores, mas os suportes são " +"mais difíceis de remover, portanto, é recomendável ativar as interfaces superiores " +"de suporte em vez de um valor de densidade de ramo alto se forem necessárias " +"interfaces densas." msgid "Adaptive layer height" msgstr "Altura de camada adaptativa" @@ -14367,7 +14420,7 @@ msgstr "" "quando imprimir uma nova peça após o deslocamento" msgid "Wipe Distance" -msgstr "Distância de limpeza" +msgstr "Distância de Limpeza" msgid "" "Describe how long the nozzle will move along the last path when " @@ -14423,10 +14476,10 @@ msgid "Width of prime tower" msgstr "Largura da Torre Prime" msgid "Wipe tower rotation angle" -msgstr "Ângulo de rotação da Torre Prime" +msgstr "Ângulo de rotação da torre de limpeza" msgid "Wipe tower rotation angle with respect to x-axis." -msgstr "Ângulo de rotação da Torre Prime em relação ao eixo x." +msgstr "Ângulo de rotação da torre de limpeza em relação ao eixo x." msgid "Stabilization cone apex angle" msgstr "Ângulo do ápice do cone de estabilização" @@ -14435,11 +14488,11 @@ msgid "" "Angle at the apex of the cone that is used to stabilize the wipe tower. " "Larger angle means wider base." msgstr "" -"Ângulo no ápice do cone usado para estabilizar a Torre Prime. Um ângulo " -"maior significa uma base mais larga." +"Ângulo no ápice do cone usado para estabilizar a torre de limpeza. Um ângulo maior " +"significa uma base mais larga." msgid "Maximum wipe tower print speed" -msgstr "Velocidade máxima de impressão da Torre Prime" +msgstr "Velocidade máxima de impressão da torre de limpeza" msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe " @@ -14462,32 +14515,32 @@ msgid "" "For the wipe tower external perimeters the internal perimeter speed is used " "regardless of this setting." msgstr "" -"A velocidade máxima de impressão ao purgar na Torre Prime e ao imprimir as " -"camadas esparsas da Torre Prime. Ao purgar, se a velocidade do preenchimento " -"esparso ou a velocidade calculada a partir da velocidade volumétrica máxima " -"do filamento for menor, a menor será utilizada.\n" +"A velocidade máxima de impressão ao purgar na torre de limpeza e ao imprimir as " +"camadas esparsas da torre de limpeza. Ao purgar, se a velocidade do preenchimento " +"esparso ou a velocidade calculada a partir da velocidade volumétrica máxima do " +"filamento for menor, a menor será utilizada.\n" "\n" -"Ao imprimir as camadas esparsas, se a velocidade do perímetro interno ou a " -"velocidade calculada a partir da velocidade volumétrica máxima do filamento " -"for menor, a menor será utilizada.\n" +"Ao imprimir as camadas esparsas, se a velocidade do perímetro interno ou a velocidade " +"calculada a partir da velocidade volumétrica máxima do filamento for menor, a menor " +"será utilizada.\n" "\n" -"Aumentar essa velocidade pode afetar a estabilidade da torre, bem como " -"aumentar a força com que o bico colide com quaisquer bolhas que possam ter " -"se formado na Torre Prime.\n" +"Aumentar essa velocidade pode afetar a estabilidade da torre, bem como aumentar a " +"força com que o bico colide com quaisquer bolhas que possam ter se formado na torre " +"de limpeza.\n" "\n" -"Antes de aumentar esse parâmetro além do padrão de 90mm/s, certifique-se de " -"que sua impressora pode realizar pontes de forma confiável nas velocidades " -"aumentadas e que a extrusão ao trocar a ferramenta está bem controlada.\n" +"Antes de aumentar esse parâmetro além do padrão de 90mm/s, certifique-se de que sua " +"impressora pode realizar pontes de forma confiável nas velocidades aumentadas e que " +"o vazamento ao trocar a ferramenta está bem controlado.\n" "\n" -"Para os perímetros externos da Torre Prime, a velocidade do perímetro " -"interno é utilizada independentemente dessa configuração." +"Para os perímetros externos da torre de limpeza, a velocidade do perímetro interno é " +"utilizada independentemente dessa configuração." 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 "" -"Extrusor a ser usada ao imprimir o perímetro da Torre Prime. Defina como 0 " -"para usar a disponível (não solúvel é preferido)." +"Extrusor a ser usada ao imprimir o perímetro da torre de limpeza. Defina como 0 para " +"usar a disponível (não solúvel é preferido)." msgid "Purging volumes - load/unload volumes" msgstr "Volumes de purga - volumes de carga/descarga" @@ -14497,9 +14550,9 @@ msgid "" "wipe tower. These values are used to simplify creation of the full purging " "volumes below." msgstr "" -"Este vetor salva os volumes necessários para mudar de/para cada ferramenta " -"usada na Torre Prime. Esses valores são usados para simplificar a criação " -"dos volumes de purga completos abaixo." +"Este vetor salva os volumes necessários para mudar de/para cada ferramenta usada na " +"torre de limpeza. Esses valores são usados para simplificar a criação dos volumes de " +"purga completos abaixo." msgid "" "Purging after filament change will be done inside objects' infills. This may " @@ -14507,11 +14560,11 @@ msgid "" "printed with transparent filament, the mixed color infill will be seen " "outside. It will not take effect, unless the prime tower is enabled." msgstr "" -"A purga após a troca de filamento será feita dentro do preenchimento dos " -"objetos. Isso pode reduzir a quantidade de resíduos e diminuir o tempo de " -"impressão. Se as paredes forem impressas com filamento transparente, o " -"preenchimento de cor mista será visível do lado de fora. Isso não terá " -"efeito, a menos que a Torre Prime esteja ativa." +"A purga após a troca de filamento será feita dentro do preenchimento dos objetos. " +"Isso pode reduzir a quantidade de resíduos e diminuir o tempo de impressão. Se as " +"paredes forem impressas com filamento transparente, o preenchimento de cor mista " +"será visível do lado de fora. Isso não terá efeito, a menos que a torre de limpeza " +"esteja ativa." msgid "" "Purging after filament change will be done inside objects' support. This may " @@ -14527,10 +14580,9 @@ msgid "" "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 "" -"Este objeto será usado para purgar o bico após uma troca de filamento para " -"economizar filamento e diminuir o tempo de impressão. As cores dos objetos " -"serão misturadas como resultado. Isso não terá efeito, a menos que a Torre " -"Prime esteja ativa." +"Este objeto será usado para purgar o bico após uma troca de filamento para economizar " +"filamento e diminuir o tempo de impressão. As cores dos objetos serão misturadas como " +"resultado. Isso não terá efeito, a menos que a torre de limpeza esteja ativa." msgid "Maximal bridging distance" msgstr "Distância máxima de ponte" @@ -14539,10 +14591,10 @@ msgid "Maximal distance between supports on sparse infill sections." msgstr "Distância máxima entre suportes em seções de preenchimento esparso." msgid "Wipe tower purge lines spacing" -msgstr "Espaçamento das linhas de purga da Torre Prime" +msgstr "Espaçamento das linhas de purga da torre de limpeza" msgid "Spacing of purge lines on the wipe tower." -msgstr "Espaçamento das linhas de purga na Torre Prime." +msgstr "Espaçamento das linhas de purga na torre de limpeza." msgid "Extra flow for purging" msgstr "" @@ -14552,6 +14604,9 @@ msgid "" "purging lines thicker or narrower than they normally would be. The spacing " "is adjusted automatically." msgstr "" +"Fluxo extra usado para as linhas de purga na torre de limpeza. Isso torna as linhas de " +"purga mais grossas ou mais estreitas do que normalmente seriam. O espaçamento é " +"ajustado automaticamente." msgid "Idle temperature" msgstr "" @@ -14561,6 +14616,9 @@ msgid "" "setups.This is only used when 'Ooze prevention' is active in Print Settings. " "Set to 0 to disable." msgstr "" +"Temperatura do bico quando a ferramenta não está sendo usada em configurações de " +"multiferramentas. Isso é usado apenas quando 'Prevenção de vazamento' está ativo em " +"Definições de Impressão. Defina como 0 para desabilitar." msgid "X-Y hole compensation" msgstr "Compensação XY de furos" @@ -14624,7 +14682,7 @@ msgid "Polyhole twist" msgstr "Torção de polifuros" msgid "Rotate the polyhole every layer." -msgstr "Girar o polifuro a cada camada." +msgstr "Rotacionar o polifuro a cada camada." msgid "G-code thumbnails" msgstr "Miniaturas de G-code" @@ -14656,9 +14714,9 @@ msgid "" "printers. Default is checked" msgstr "" "A extrusão relativa é recomendada ao usar a opção \"label_objects\". Algumas " -"extrusoras funcionam melhor com esta opção desmarcada (modo de extrusão " -"absoluta). A Torre Prime é compatível apenas com o modo relativo. É " -"recomendado na maioria das impressoras. O padrão é ativado" +"extrusoras funcionam melhor com esta opção desmarcada (modo de extrusão absoluta). " +"A torre de limpeza é compatível apenas com o modo relativo. É recomendado na maioria " +"das impressoras. O padrão é ativado" msgid "" "Classic wall generator produces walls with constant extrusion width and for " @@ -14706,7 +14764,7 @@ msgstr "" "ou superextrusão. É expresso como uma porcentagem sobre o diâmetro do bico" msgid "Wall transitioning threshold angle" -msgstr "Ângulo de limite de transição de perímetro" +msgstr "Ângulo limiar de transição de perímetro" msgid "" "When to create transitions between even and odd numbers of walls. A wedge " @@ -14855,7 +14913,7 @@ msgid "Rotation angle around the Z axis in degrees." msgstr "Ângulo de rotação ao redor do eixo Z em graus." msgid "Rotate around Y" -msgstr "Girar ao redor de Y" +msgstr "Rotacionar ao redor de Y" msgid "Rotation angle around the Y axis in degrees." msgstr "Ângulo de rotação ao redor do eixo Y em graus." @@ -14933,10 +14991,10 @@ msgstr "" "impresso." msgid "Has wipe tower" -msgstr "Tem Torre Prime" +msgstr "Tem torre de limpeza" msgid "Whether or not wipe tower is being generated in the print." -msgstr "Se a Torre Prime está sendo gerada ou não na impressão." +msgstr "Se a torre de limpeza está sendo gerada ou não na impressão." msgid "Initial extruder" msgstr "Extrusora inicial" @@ -15107,29 +15165,29 @@ msgid "Minute" msgstr "Minuto" msgid "Print preset name" -msgstr "Nome do perfil de impressão" +msgstr "Nome da predefinição de impressão" msgid "Name of the print preset used for slicing." -msgstr "Nome do perfil de impressão usado para fatiar." +msgstr "Nome da predefinição de impressão usado para fatiar." msgid "Filament preset name" -msgstr "Nome do perfil de filamento" +msgstr "Nome da predefinição de filamento" msgid "" "Names of the filament presets used for slicing. The variable is a vector " "containing one name for each extruder." msgstr "" -"Nomes dos perfis de filamento usados para fatiar. A variável é um vetor " +"Nomes das predefinições de filamento usadas para fatiar. A variável é um vetor " "contendo um nome para cada extrusora." msgid "Printer preset name" -msgstr "Nome do perfil de impressora" +msgstr "Nome da predefinição de impressora" msgid "Name of the printer preset used for slicing." -msgstr "Nome do perfil de impressora usado para fatiar." +msgstr "Nome da predefinição de impressora usado para fatiar." msgid "Physical printer name" -msgstr "Nome da impressora física" +msgstr "Nome da predefinição física" msgid "Name of the physical printer used for slicing." msgstr "Nome da impressora física utilizada para fatiar." @@ -15185,7 +15243,7 @@ msgid "Generating infill toolpath" msgstr "Gerando caminho da ferramenta de preenchimento" msgid "Detect overhangs for auto-lift" -msgstr "Detectar overhangs para levantamento automático" +msgstr "Detectar saliências para levantamento automático" msgid "Generating support" msgstr "Gerando suporte" @@ -15200,7 +15258,7 @@ msgid "floating cantilever" msgstr "balanço flutuante" msgid "large overhangs" -msgstr "overhangs grandes" +msgstr "saliências grandes" #, c-format, boost-format msgid "" @@ -15237,7 +15295,7 @@ msgid "Support: generate toolpath at layer %d" msgstr "Suporte: gerar caminho da ferramenta na camada %d" msgid "Support: detect overhangs" -msgstr "Suporte: detectar overhangs" +msgstr "Suporte: detectar saliências" msgid "Support: generate contact points" msgstr "Suporte: gerar pontos de contato" @@ -15387,16 +15445,16 @@ msgstr "O nome não pode estar vazio." #, c-format, boost-format msgid "The selected preset: %s is not found." -msgstr "O preset selecionado: %s não foi encontrado." +msgstr "A predefinição selecionada: %s não foi encontrada." msgid "The name cannot be the same as the system preset name." -msgstr "O nome não pode ser o mesmo que o nome do preset do sistema." +msgstr "O nome não pode ser o mesmo que o nome da predefinição do sistema." msgid "The name is the same as another existing preset name" -msgstr "O nome é o mesmo que outro nome de preset existente" +msgstr "O nome é o mesmo que outro nome de predefinição existente" msgid "create new preset failed." -msgstr "falha ao criar novo preset." +msgstr "falha ao criar nova predefinição." msgid "" "Are you sure to cancel the current calibration and return to the home page?" @@ -15462,11 +15520,10 @@ msgid "Please select at least one filament for calibration" msgstr "Por favor, selecione pelo menos um filamento para calibrar" msgid "Flow rate calibration result has been saved to preset" -msgstr "O resultado da calibração de fluxo foi salvo no preset" +msgstr "O resultado da calibração de fluxo foi salva na predefinição" msgid "Max volumetric speed calibration result has been saved to preset" -msgstr "" -"O resultado da calibração de fluxo volumétrico máximo foi salvo no preset" +msgstr "O resultado da calibração de fluxo volumétrico máximo foi salvo na predefinição" msgid "When do you need Flow Dynamics Calibration" msgstr "Quando você precisa da Calibração de Dinâmica de Fluxo" @@ -15657,10 +15714,10 @@ msgid "Input Value" msgstr "Valor de entrada" msgid "Save to Filament Preset" -msgstr "Salvar no Preset de Filamento" +msgstr "Salvar na Predefinição de Filamento" msgid "Preset" -msgstr "Preset" +msgstr "Predefinição" msgid "Record Factor" msgstr "Registrar Fator" @@ -15675,7 +15732,7 @@ msgid "Please input a valid value (0.0 < flow ratio < 2.0)" msgstr "Por favor, insira um valor válido (0.0 < fluxo < 2.0)" msgid "Please enter the name of the preset you want to save." -msgstr "Por favor, insira o nome do preset que você deseja salvar." +msgstr "Por favor, insira o nome da predefinição que você deseja salvar." msgid "Calibration1" msgstr "Calibração1" @@ -16146,7 +16203,7 @@ msgid "Log Info" msgstr "Informações do Registro" msgid "Select filament preset" -msgstr "Selecionar Preset de Filamento" +msgstr "Selecionar predefinição de filamento" msgid "Create Filament" msgstr "Criar Filamento" @@ -16155,16 +16212,16 @@ msgid "Create Based on Current Filament" msgstr "Criar com Base no Filamento Atual" msgid "Copy Current Filament Preset " -msgstr "Copiar Preset de Filamento Atual " +msgstr "Copiar Predefinição de Filamento Atual " msgid "Basic Information" msgstr "Informações Básicas" msgid "Add Filament Preset under this filament" -msgstr "Adicionar Preset de Filamento sob este filamento" +msgstr "Adicionar Predefinição de Filamento sob este filamento" msgid "We could create the filament presets for your following printer:" -msgstr "Nós criamos presets de filamento para a sua impressora:" +msgstr "Nós criamos predefinições de filamento para a sua impressora:" msgid "Select Vendor" msgstr "Selecionar Fornecedor" @@ -16179,7 +16236,7 @@ msgid "Select Type" msgstr "Selecionar Tipo" msgid "Select Filament Preset" -msgstr "Selecionar Preset de Filamento" +msgstr "Selecionar Predefinição de Filamento" msgid "Serial" msgstr "Série" @@ -16188,7 +16245,7 @@ msgid "e.g. Basic, Matte, Silk, Marble" msgstr "por exemplo, Básico, Fosco, Seda, Mármore" msgid "Filament Preset" -msgstr "Preset de Filamento" +msgstr "Predefinição de Filamento" msgid "Create" msgstr "Criar" @@ -16232,8 +16289,8 @@ msgstr "O fornecedor não pode ser um número. Por favor, insira novamente." msgid "" "You have not selected a printer or preset yet. Please select at least one." msgstr "" -"Você ainda não selecionou uma impressora ou preset. Por favor, selecione " -"pelo menos um." +"Você ainda não selecionou uma impressora ou predefinição. Por favor, selecione " +"pelo menos uma." #, c-format, boost-format msgid "" @@ -16242,11 +16299,11 @@ msgid "" "name. Do you want to continue?" msgstr "" "O nome do Filamento %s que você criou já existe. \n" -"Se você continuar a criar, a preset criado será exibido com o seu nome " +"Se você continuar a criação, a predefinição criada será exibida com o seu nome " "completo. Você quer continuar?" msgid "Some existing presets have failed to be created, as follows:\n" -msgstr "Alguns presets existentes falharam ao serem criados, como segue:\n" +msgstr "Algumas predefinições existentes falharam ao serem criadas, como segue:\n" msgid "" "\n" @@ -16260,9 +16317,9 @@ msgid "" "selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" -"Renomearíamos os presets como \"Fornecedor Tipo Serial @ impressora que você " +"Renomearíamos as predefinições como \"Fornecedor Tipo Serial @ impressora que você " "selecionou\". \n" -"Para adicionar preset para mais impressoras, Por favor, vá para a seleção de " +"Para adicionar predefinição para mais impressoras, por favor vá para a seleção de " "impressoras" msgid "Create Printer/Nozzle" @@ -16275,13 +16332,13 @@ msgid "Create Nozzle for Existing Printer" msgstr "Criar Bico para Impressora Existente" msgid "Create from Template" -msgstr "Criar a Partir de um Modelo" +msgstr "Criar a partir de um Gabarito" msgid "Create Based on Current Printer" msgstr "Criar com Base na Impressora Atual" msgid "Import Preset" -msgstr "Importar Preset" +msgstr "Importar Predefinição" msgid "Create Type" msgstr "Tipo de Criação" @@ -16330,8 +16387,7 @@ msgid "Exception in obtaining file size, please import again." msgstr "Exceção ao obter o tamanho do arquivo, por favor importe novamente." msgid "Preset path is not find, please reselect vendor." -msgstr "" -"O caminho do preset não é encontrado, por favor reselecione o fornecedor." +msgstr "O caminho da predefinição não é encontrado, por favor reselecione o fornecedor." msgid "The printer model was not found, please reselect." msgstr "O modelo da impressora não foi encontrado, por favor reselecione." @@ -16340,19 +16396,19 @@ msgid "The nozzle diameter is not found, please reselect." msgstr "O diâmetro do bico não foi encontrado, por favor reselecione." msgid "The printer preset is not found, please reselect." -msgstr "O preset da impressora não foi encontrado, por favor reselecione." +msgstr "A predefinição de impressora não foi encontrada, por favor reselecione." msgid "Printer Preset" -msgstr "Preset de Impressora" +msgstr "Predefinição de Impressora" msgid "Filament Preset Template" -msgstr "Modelo de Preset de Filamento" +msgstr "Gabarito de Predefinição de Filamento" msgid "Deselect All" msgstr "Desselecionar Tudo" msgid "Process Preset Template" -msgstr "Processar Modelo de Preset" +msgstr "Processar Gabarito de Predefinição" msgid "Back Page 1" msgstr "Voltar à Página 1" @@ -16361,7 +16417,7 @@ msgid "" "You have not yet chosen which printer preset to create based on. Please " "choose the vendor and model of the printer" msgstr "" -"Você ainda não escolheu em qual preset de impressora basear-se. Por favor, " +"Você ainda não escolheu em qual predefinição de impressora basear-se. Por favor " "escolha o fornecedor e modelo da impressora" msgid "" @@ -16383,25 +16439,25 @@ msgid "" "reserve.\n" "\tCancel: Do not create a preset, return to the creation interface." msgstr "" -"O modelo de impressora que você criou já possui um modelo com o mesmo nome. " -"Deseja substituí-lo?\n" -" \tSim: Substituir o modelo de impressora com o mesmo nome, e os modelos de " -"filamento e processo com o mesmo nome do modelo serão recriados, \n" -" e os modelos de filamento e processo sem o mesmo nome do modelo serão " -"preservados.\n" -" \tCancelar: Não criar um modelo, retornar para a interface de criação." +"A predefinição de impressora que você criou já possui uma predefinição com o mesmo " +"nome. Deseja substituí-la?\n" +"\tSim: Substituir a predefinição de impressora com o mesmo nome, e as predefinições " +"de filamento e processo com o mesmo nome da predefinição serão recriados, \n" +"e as predefinições de filamento e processo sem o mesmo nome da predefinição serão " +"reserva.\n" +"\tCancelar: Não criar uma predefinição, retornar para a interface de criação." msgid "You need to select at least one filament preset." -msgstr "Você precisa selecionar pelo menos um modelo de filamento." +msgstr "Você precisa selecionar pelo menos uma predefinição de filamento." msgid "You need to select at least one process preset." -msgstr "Você precisa selecionar pelo menos um modelo de processo." +msgstr "Você precisa selecionar pelo menos uma predefinição de processo." msgid "Create filament presets failed. As follows:\n" -msgstr "Falha ao criar modelos de filamento. Como segue:\n" +msgstr "Falha ao criar predefinições de filamento. Como segue:\n" msgid "Create process presets failed. As follows:\n" -msgstr "Falha ao criar modelos de processo. Como segue:\n" +msgstr "Falha ao criar predefinições de processo. Como segue:\n" msgid "Vendor is not find, please reselect." msgstr "Fornecedor não encontrado, por favor selecione novamente." @@ -16413,8 +16469,8 @@ msgid "" "You have not selected the vendor and model or entered the custom vendor and " "model." msgstr "" -"Você não selecionou um fornecedor e modelo nem colocou fornecer e modelo " -"personalizado." +"Você não selecionou um fornecedor e modelo nem colocou fornecedor e modelo " +"personalizados." msgid "" "There may be escape characters in the custom printer vendor or model. Please " @@ -16448,8 +16504,7 @@ msgid "Printer Created" msgstr "Impressora criada" msgid "Please go to printer settings to edit your presets" -msgstr "" -"Por favor vá parar configurações de impressora para editar os seus presets" +msgstr "Por favor vá para configurações de impressora para editar as suas predefinições" msgid "Filament Created" msgstr "Filamento criado" @@ -16460,11 +16515,11 @@ msgid "" "volumetric speed has a significant impact on printing quality. Please set " "them carefully." msgstr "" -"Por favor, vá para as configurações do filamento para editar seus presets, " -"se necessário. \n" -"Por favor, note que a temperatura do bico, temperatura da mesa aquecida e " -"velocidade volumétrica máxima têm um impacto significativo na qualidade de " -"impressão. Por favor, ajuste-os com cuidado." +"Por favor, vá para as configurações do filamento para editar suas predefinições, se " +"necessário. \n" +"Por favor, note que a temperatura do bico, temperatura da mesa aquecida e velocidade " +"volumétrica máxima têm um impacto significativo na qualidade de impressão. Por " +"favor, ajuste-os com cuidado." msgid "" "\n" @@ -16476,10 +16531,10 @@ msgid "" msgstr "" "\n" "\n" -"Orca detectou que a função de sincronização das suas predefinições de " -"usuário não está habilitada, o que pode resultar em falhas nas configurações " -"de Filamento na página do Dispositivo. \n" -"Clique em \"Sincronizar presets do usuário\" para habilitar a função de " +"Orca detectou que a função de sincronização das suas predefinições de usuário não " +"está habilitada, o que pode resultar em falhas nas configurações de Filamento na " +"página do Dispositivo. \n" +"Clique em \"Sincronizar predefinições do usuário\" para habilitar a função de " "sincronização." msgid "Printer Setting" @@ -16492,13 +16547,13 @@ msgid "Filament bundle(.orca_filament)" msgstr "Pacote de filamento (.orca_filament)" msgid "Printer presets(.zip)" -msgstr "Presets da impressora (.zip)" +msgstr "Predefinições de impressora (.zip)" msgid "Filament presets(.zip)" -msgstr "Presets de filamento (.zip)" +msgstr "Predefinições de filamento (.zip)" msgid "Process presets(.zip)" -msgstr "Presets de processo (.zip)" +msgstr "Predefinições de processo (.zip)" msgid "initialize fail" msgstr "falha na inicialização" @@ -16533,7 +16588,7 @@ msgid "" "Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" -"Presets da impressora e todos os filamentos e processos que pertencem à " +"Predefinições de impressora e todos os filamentos e processos que pertencem à " "impressora. \n" "Pode ser compartilhado com outros." @@ -16541,47 +16596,46 @@ msgid "" "User's filament preset set. \n" "Can be shared with others." msgstr "" -"Conjunto de presets de filamento do usuário. \n" +"Conjunto de predefinições de filamento do usuário. \n" "Pode ser compartilhado com outros." msgid "" "Only display printer names with changes to printer, filament, and process " "presets." msgstr "" -"Só exibir nomes de impressoras com alterações nos presets de impressora, " +"Exibir apenas nomes de impressoras com alterações nas predefinições de impressora, " "filamento e processo." msgid "Only display the filament names with changes to filament presets." msgstr "" -"Apenas exibir os nomes dos filamentos com alterações nos presets de " -"filamento." +"Exibir apenas os nomes dos filamentos com alterações nas predefinições de filamento." msgid "" "Only printer names with user printer presets will be displayed, and each " "preset you choose will be exported as a zip." msgstr "" -"Apenas os nomes das impressoras com presets de impressora do usuário serão " -"exibidos, e cada preset escolhido será exportado como um arquivo zip." +"Apenas os nomes das impressoras com predefinições de impressora do usuário serão " +"exibidos, e cada predefinição escolhida será exportada como um arquivo zip." 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 "" -"Apenas os nomes dos filamentos com presets de filamento do usuário serão " +"Apenas os nomes dos filamentos com predefinições de filamento do usuário serão " "exibidos, \n" -"e todas as presets de filamento do usuário em cada nome de filamento " -"selecionado serão exportadas como um arquivo zip." +"e todas as predefinições de filamento do usuário em cada nome de filamento " +"selecionadas serão exportadas como um arquivo zip." 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 "" -"Apenas os nomes das impressoras com presets de processo alterados serão " +"Apenas os nomes das impressoras com predefinições de processo alterados serão " "exibidos, \n" -"e todos os presets de processo do usuário em cada nome de impressora " -"selecionado serão exportados como um arquivo zip." +"e todas os predefinições de processo do usuário em cada nome de impressora " +"selecionadas serão exportados como um arquivo zip." msgid "Please select at least one printer or filament." msgstr "Por favor, selecione pelo menos uma impressora ou filamento." @@ -16598,34 +16652,34 @@ msgid "Edit Filament" msgstr "Editar Filamento" msgid "Filament presets under this filament" -msgstr "Presets de filamento sob este filamento" +msgstr "Predefinições de filamento sob este filamento" msgid "" "Note: If the only preset under this filament is deleted, the filament will " "be deleted after exiting the dialog." msgstr "" -"Nota: Se o único preset sob este filamento for excluído, o filamento será " +"Nota: Se a única predefinição sob este filamento for excluída, o filamento será " "excluído após sair da janela." msgid "Presets inherited by other presets can not be deleted" -msgstr "Presets herdados por outros presets não podem ser excluídos" +msgstr "Predefinições herdadas por outras predefinições não podem ser excluídos" msgid "The following presets inherits this preset." msgid_plural "The following preset inherits this preset." -msgstr[0] "Os seguintes presets herdam este preset." -msgstr[1] "A seguinte predefinição herda essa predefinição." +msgstr[0] "As seguintes predefinições herdam esta predefinição." +msgstr[1] "A seguinte predefinição herda esta predefinição." msgid "Delete Preset" -msgstr "Excluir Preset" +msgstr "Excluir Predefinição" msgid "Are you sure to delete the selected preset?" -msgstr "Tem certeza de que deseja excluir o preset selecionado?" +msgstr "Tem certeza de que deseja excluir a predefinição selecionada?" msgid "Delete preset" -msgstr "Excluir preset" +msgstr "Excluir predefinição" msgid "+ Add Preset" -msgstr "+ Adicionar Preset" +msgstr "+ Adicionar Predefinição" msgid "Delete Filament" msgstr "Excluir Filamento" @@ -16635,33 +16689,32 @@ msgid "" "If you are using this filament on your printer, please reset the filament " "information for that slot." msgstr "" -"Todos os presets de filamento pertencentes a este filamento seriam " -"excluídas. \n" -"Se você estiver usando este filamento em sua impressora, redefina as " -"informações do filamento para esse slot." +"Todos as predefinições de filamento pertencentes a este filamento seriam excluídas. \n" +"Se você estiver usando este filamento em sua impressora, redefina as informações do " +"filamento para esse slot." msgid "Delete filament" msgstr "Excluir filamento" msgid "Add Preset" -msgstr "Adicionar Preset" +msgstr "Adicionar Predefinição" msgid "Add preset for new printer" -msgstr "Adicionar preset para nova impressora" +msgstr "Adicionar predefinição para nova impressora" msgid "Copy preset from filament" -msgstr "Copiar preset do filamento" +msgstr "Copiar predefinição do filamento" msgid "The filament choice not find filament preset, please reselect it" msgstr "" -"O filamento selecionado não encontra preset de filamento, por favor " -"selecione novamente" +"O filamento selecionado não encontra predefinição de filamento, por favor selecione " +"novamente" msgid "[Delete Required]" msgstr "[Excluir Necessário]" msgid "Edit Preset" -msgstr "Editar Preset" +msgstr "Editar Predefinição" msgid "For more information, please check out Wiki" msgstr "Para mais informações, por favor consulte a Wiki" @@ -16680,7 +16733,7 @@ msgid "" "Your nozzle diameter in preset is not consistent with memorized nozzle " "diameter. Did you change your nozzle lately?" msgstr "" -"O diâmetro do bico no seu perfil não está consistente com o diâmetro do bico " +"O diâmetro do bico na sua predefinição não está consistente com o diâmetro do bico " "memorizado. Você mudou seu bico recentemente?" #, c-format, boost-format @@ -17218,9 +17271,9 @@ msgid "" "overhangs?" msgstr "" "Modo sanduíche\n" -"Você sabia que pode usar o modo sanduíche (interno-externo-interno) para " -"melhorar a precisão e a consistência da camada se o seu modelo não tiver " -"overhangs muito íngremes?" +"Você sabia que pode usar o modo sanduíche (interno-externo-interno) para melhorar a " +"precisão e a consistência da camada se o seu modelo não tiver saliências muito " +"íngremes?" #: resources/data/hints.ini: [hint:Chamber temperature] msgid "" @@ -17292,8 +17345,8 @@ msgid "" "the surface quality of your overhangs?" msgstr "" "Inverter em ímpar\n" -"Você sabia que a função Inverter em ímpar pode melhorar " -"significativamente a qualidade da superfície dos overhangs?" +"Você sabia que a função Inverter em ímpar pode melhorar significativamente a " +"qualidade da superfície das saliências?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -17338,8 +17391,8 @@ msgid "" "printing by a simple click?" msgstr "" "Auto-orientar\n" -"Você sabia que pode girar objetos para uma orientação ideal para impressão " -"com um simples clique?" +"Você sabia que pode rotacionar objetos para uma orientação ideal para impressão com " +"um simples clique?" #: resources/data/hints.ini: [hint:Lay on Face] msgid "" @@ -17632,30 +17685,29 @@ msgstr "" #~ msgstr "IP e Código de Acesso Verificados! Você pode fechar a janela" #~ msgid "Force cooling for overhang and bridge" -#~ msgstr "Forçar resfriamento para overhangs e pontes" +#~ msgstr "Forçar resfriamento para saliências e pontes" #~ msgid "" #~ "Enable this option to optimize part cooling fan speed for overhang and " #~ "bridge to get better cooling" #~ msgstr "" -#~ "Ative esta opção para otimizar a velocidade do ventilador de resfriamento " -#~ "de peças para overhangs e ponte para obter melhor resfriamento" +#~ "Ative esta opção para otimizar a velocidade do ventilador de resfriamento de " +#~ "peças para saliência e ponte para obter melhor resfriamento" #~ msgid "Fan speed for overhang" -#~ msgstr "Velocidade do ventilador para overhangs" +#~ msgstr "Velocidade do ventilador para saliência" #~ 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 "" -#~ "Forçar o ventilador de resfriamento da peça a ser nesta velocidade ao " -#~ "imprimir ponte ou overhang que tenha um grande grau de inclinação. Forçar " -#~ "o resfriamento para overhang e ponte pode obter melhor qualidade para " -#~ "estas partes" +#~ "Forçar o ventilador de resfriamento da peça a ser nesta velocidade ao imprimir " +#~ "ponte ou parede saliente que tenha um grande grau de saliência. Forçar o resfriamento " +#~ "para saliência e ponte pode obter melhor qualidade para estas partes" #~ msgid "Cooling overhang threshold" -#~ msgstr "Overhang limiar de resfriamento" +#~ msgstr "Limiar de resfriamento de saliência" #, c-format #~ msgid "" @@ -17664,11 +17716,11 @@ msgstr "" #~ "width of the line without support from lower layer. 0% means forcing " #~ "cooling for all outer wall no matter how much overhang degree" #~ msgstr "" -#~ "Forçar o ventilador de resfriamento a ser uma velocidade específica " -#~ "quando o grau de inclinação da peça impressa excede este valor. Expresso " -#~ "como porcentagem, que indica quanto da largura da linha sem suporte da " -#~ "camada inferior.Zero significa forçar o resfriamento para toda o " -#~ "perímetro externo, não importa quanto seja o grau de inclinação" +#~ "Forçar o ventilador de resfriamento a ser uma velocidade específica quando o grau " +#~ "de saliência da peça impressa excede este valor. Expresso como porcentagem, que " +#~ "indica quanto da largura da linha sem suporte da camada inferior.Zero significa " +#~ "forçar o resfriamento para toda o perímetro externo, não importa quanto seja o " +#~ "grau de saliência" #~ msgid "Bridge infill direction" #~ msgstr "Direção de preenchimento de ponte" @@ -17814,16 +17866,16 @@ msgstr "" #~ msgstr "" #~ "Aplicar a lógica de perímetros reversos apenas em perímetros internos.\n" #~ "\n" -#~ "Este ajuste reduz muito as tensões na peça, já que agora são distribuídas " -#~ "em direções alternadas. Isso deve reduzir a deformação da peça, mantendo " -#~ "a qualidade do perímetro externo. Este recurso pode ser muito útil para " -#~ "materiais propensos a deformações, como ABS/ASA, e também para filamentos " -#~ "elásticos, como TPU e Silk PLA. Também pode ajudar a reduzir a deformação " -#~ "em regiões flutuantes sobre suportes.\n" +#~ "Este ajuste reduz muito as tensões na peça, já que agora são distribuídas em " +#~ "direções alternadas. Isso deve reduzir a deformação da peça, mantendo a qualidade " +#~ "do perímetro externo. Este recurso pode ser muito útil para materiais propensos a " +#~ "deformações, como ABS/ASA, e também para filamentos elásticos, como TPU e Silk " +#~ "PLA. Também pode ajudar a reduzir a deformação em regiões salientes sobre " +#~ "suportes.\n" #~ "\n" -#~ "Para que este ajuste seja mais eficaz, recomenda-se definir o Limiar " -#~ "Reverso como 0 para que todos os perímetros internos sejam impressos em " -#~ "direções alternadas em camadas ímpares, independentemente de seu grau de ." +#~ "Para que este ajuste seja mais eficaz, recomenda-se definir o Limiar Reverso como " +#~ "0 para que todos os perímetros internos sejam impressos em direções alternadas em " +#~ "camadas ímpares, independentemente de seu grau de saliência." #, no-c-format, no-boost-format #~ msgid "" @@ -17831,10 +17883,9 @@ msgstr "" #~ "useful. Can be a % of the perimeter width.\n" #~ "Value 0 enables reversal on every odd layers regardless." #~ msgstr "" -#~ "Número de milímetros que o precisa ter para que a reversão seja " -#~ "considerada útil. Pode ser um % da largura do perímetro.\n" -#~ "O valor 0 permite a reversão em todas as camadas ímpares " -#~ "independentemente." +#~ "Número de milímetros que a saliência precisa ter para que a reversão seja considerada útil. " +#~ "Pode ser um % da largura do perímetro.\n" +#~ "O valor 0 permite a reversão em todas as camadas ímpares independentemente." #~ msgid "" #~ "The direction which the wall loops are extruded when looking down from " @@ -18016,10 +18067,9 @@ msgstr "" #~ "inclinadas, evitando a criação de pontes internas desnecessárias. Isso " #~ "funciona bem para a maioria dos modelos difíceis.\n" #~ "\n" -#~ "Sem filtragem - Cria pontes internas em cada inclinação interna " -#~ "potencial. Esta opção é útil para modelos com superfície superior " -#~ "fortemente inclinada. No entanto, na maioria dos casos, cria pontes " -#~ "desnecessárias demais." +#~ "Sem filtragem - Cria pontes internas em cada saliência interna potencial. Esta " +#~ "opção é útil para modelos com superfície superior fortemente inclinada. No " +#~ "entanto, na maioria dos casos, cria pontes desnecessárias demais." #~ msgid "Shrinkage" #~ msgstr "Retração" @@ -18085,7 +18135,7 @@ msgstr "" #~ "podem existir potenciais perímetros curvados (warping)" #~ msgid "Speed of bridge and completely overhang wall" -#~ msgstr "Velocidade de ponte e paredes compostas completamente de overhangs" +#~ msgstr "Velocidade de ponte e paredes completamente salientes" #~ msgid "" #~ "Speed of internal bridge. If the value is expressed as a percentage, it " @@ -18126,7 +18176,7 @@ msgstr "" #~ "estimador de tempo do G-code." #~ msgid "Filter out gaps smaller than the threshold specified" -#~ msgstr "Filtrar vazios menores que o limite especificado" +#~ msgstr "Filtrar vazios menores que o limiar especificado" #~ msgid "" #~ "Enable this option for chamber temperature control. An M191 command will " @@ -18158,14 +18208,13 @@ msgstr "" #~ "Different nozzle diameters and different filament diameters is not " #~ "allowed when prime tower is enabled." #~ msgstr "" -#~ "Diâmetros de bico diferentes e diâmetros de filamento diferentes não são " -#~ "permitidos quando a Torre Prime está ativa." +#~ "Diâmetros de bico diferentes e diâmetros de filamento diferentes não são permitidos " +#~ "quando a torre de limpeza está ativa." #~ msgid "" #~ "Ooze prevention is currently not supported with the prime tower enabled." #~ msgstr "" -#~ "A prevenção de vazamento atualmente não é suportada com a Torre Prime " -#~ "ativa." +#~ "A prevenção de vazamento atualmente não é suportada com a torre de limpeza ativa." #~ msgid "" #~ "Interlocking depth of a segmented region. Zero disables this feature." @@ -18174,7 +18223,7 @@ msgstr "" #~ "essa funcionalidade." #~ msgid "Wipe tower extruder" -#~ msgstr "Extrusora da Torre Prime" +#~ msgstr "Extrusora da torre de limpeza" #~ msgid "Current association: " #~ msgstr "Associação atual: " From 493431ba552e741f6e3168a3e65a8b1b69714922 Mon Sep 17 00:00:00 2001 From: GlauTech <33813227+GlauTechCo@users.noreply.github.com> Date: Thu, 20 Feb 2025 15:21:03 +0300 Subject: [PATCH 088/129] Update TURKISH translations (#8466) * Update TURKISH translations * Update TURKISH translations Update TURKISH translations --- localization/i18n/tr/OrcaSlicer_tr.po | 4035 +++++++++++++------------ 1 file changed, 2021 insertions(+), 2014 deletions(-) diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 063db956e1..fa0f0fc466 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-02-19 19:44+0800\n" -"PO-Revision-Date: 2025-02-03 13:32+0300\n" +"PO-Revision-Date: 2025-02-20 01:24+0300\n" "Last-Translator: GlauTech\n" "Language-Team: \n" "Language: tr\n" @@ -551,8 +551,8 @@ msgstr "Oranı azalt" #, boost-format msgid "" -"Processing model '%1%' with more than 1M triangles could be slow. It is " -"highly recommended to simplify the model." +"Processing model '%1%' with more than 1M triangles could be slow. It is highly " +"recommended to simplify the model." msgstr "" "1 milyondan fazla üçgen içeren '%1%' modelinin işlenmesi yavaş olabilir. " "Modelin basitleştirilmesi önemle tavsiye edilir." @@ -728,8 +728,8 @@ msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." msgstr "" -"Metin seçilen yazı tipi kullanılarak yazılamıyor. Lütfen farklı bir yazı " -"tipi seçmeyi deneyin." +"Metin seçilen yazı tipi kullanılarak yazılamıyor. Lütfen farklı bir yazı tipi " +"seçmeyi deneyin." msgid "Embossed text cannot contain only white spaces." msgstr "Kabartmalı metin yalnızca beyaz boşluklardan oluşamaz." @@ -1010,12 +1010,12 @@ msgstr "Metni kameraya doğru yönlendirin." #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Application selected a similar " -"one(\"%2%\"). You have to specify font for enable edit text." +"Can't load exactly same font(\"%1%\"). Application selected a similar one(\"%2%" +"\"). You have to specify font for enable edit text." msgstr "" -"Tam olarak aynı yazı tipi yüklenemiyor(\"%1%\"). Uygulama benzer bir " -"uygulama seçti(\"%2%\"). Metni düzenlemeyi etkinleştirmek için yazı tipini " -"belirtmeniz gerekir." +"Tam olarak aynı yazı tipi yüklenemiyor(\"%1%\"). Uygulama benzer bir uygulama " +"seçti(\"%2%\"). Metni düzenlemeyi etkinleştirmek için yazı tipini belirtmeniz " +"gerekir." msgid "No symbol" msgstr "Sembol yok" @@ -1131,8 +1131,7 @@ msgid "Path can't be healed from self-intersection and multiple points." msgstr "Yol kendi kendine kesişmeden ve birden fazla noktadan iyileştirilemez." msgid "" -"Final shape contains self-intersection or multiple points with same " -"coordinate." +"Final shape contains self-intersection or multiple points with same coordinate." msgstr "" "Son şekil, kendi kesişimini veya aynı koordinata sahip birden fazla noktayı " "içerir." @@ -1311,11 +1310,9 @@ msgstr "İptal et" msgid "Measure" msgstr "Ölçüm" -msgid "" -"Please confirm explosion ratio = 1,and please select at least one object" +msgid "Please confirm explosion ratio = 1,and please select at least one object" msgstr "" -"Lütfen patlama oranının = 1 olduğunu onaylayın ve lütfen en az bir nesne " -"seçin" +"Lütfen patlama oranının = 1 olduğunu onaylayın ve lütfen en az bir nesne seçin" msgid "Please select at least one object." msgstr "Lütfen en az bir nesne seçin." @@ -1455,8 +1452,8 @@ msgid "" msgstr "\"%1%\" yapılandırma dosyası yüklendi ancak bazı değerler tanınamadı." 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." +"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 hafızasının yetersiz olması nedeniyle sonlandırılacak. Bir hata " "olabilir. Sorunu ekibimize bildirirseniz seviniriz." @@ -1536,8 +1533,8 @@ msgstr "Bilgi" 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." +"Please note, application settings will be lost, but printer profiles will not " +"be affected." msgstr "" "OrcaSlicer konfigürasyon dosyası bozulmuş olabilir ve ayrıştırılamayabilir.\n" "OrcaSlicer, konfigürasyon dosyasını yeniden oluşturmayı denedi.\n" @@ -1557,8 +1554,7 @@ msgid "Choose one file (3mf):" msgstr "Dosya seçin (3mf):" msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" -msgstr "" -"Bir veya daha fazla dosya seçin (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "Bir veya daha fazla dosya seçin (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "Bir veya daha fazla dosya seçin (3mf/step/stl/svg/obj/amf):" @@ -1573,8 +1569,8 @@ msgid "Some presets are modified." msgstr "Bazı ön ayarlar değiştirildi." msgid "" -"You can keep the modified presets to the new project, discard or save " -"changes as new presets." +"You can keep the modified presets to the new project, discard or save changes " +"as new presets." msgstr "" "Modifield ön ayarlarını yeni projede tutabilir, değişiklikleri atabilir veya " "yeni ön ayarlar olarak kaydedebilirsiniz." @@ -1583,8 +1579,7 @@ msgid "User logged out" msgstr "Kullanıcı oturumu kapattı" msgid "new or open project file is not allowed during the slicing process!" -msgstr "" -"dilimleme işlemi sırasında yeni veya açık proje dosyasına izin verilmez!" +msgstr "dilimleme işlemi sırasında yeni veya açık proje dosyasına izin verilmez!" msgid "Open Project" msgstr "Projeyi Aç" @@ -1593,8 +1588,8 @@ 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'ın sürümü çok düşük ve normal şekilde kullanılabilmesi için en " -"son sürüme güncellenmesi gerekiyor" +"Orca Slicer'ın sürümü çok düşük ve normal şekilde kullanılabilmesi için en son " +"sürüme güncellenmesi gerekiyor" msgid "Privacy Policy Update" msgstr "Gizlilik Politikası Güncellemesi" @@ -1603,8 +1598,8 @@ 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 "" -"Bulutta önbelleğe alınan kullanıcı ön ayarlarının sayısı üst sınırı aştı; " -"yeni oluşturulan kullanıcı ön ayarları yalnızca yerel olarak kullanılabilir." +"Bulutta önbelleğe alınan kullanıcı ön ayarlarının sayısı üst sınırı aştı; yeni " +"oluşturulan kullanıcı ön ayarları yalnızca yerel olarak kullanılabilir." msgid "Sync user presets" msgstr "Kullanıcı ön ayarlarını senkronize edin" @@ -1807,10 +1802,10 @@ msgid "" "Yes - Change these settings automatically\n" "No - Do not change these settings for me" msgstr "" -"Bu modelin üst yüzeyinde metin kabartması bulunmaktadır. En iyi sonuçları " -"elde etmek amacıyla, 'Üst Yüzeylerde Yalnızca Bir Duvar'ın en iyi şekilde " -"çalışması için 'Tek Duvar Eşiği(min_width_top_surface)' seçeneğini 0'a " -"ayarlamanız önerilir.\n" +"Bu modelin üst yüzeyinde metin kabartması bulunmaktadır. En iyi sonuçları elde " +"etmek amacıyla, 'Üst Yüzeylerde Yalnızca Bir Duvar'ın en iyi şekilde çalışması " +"için 'Tek Duvar Eşiği(min_width_top_surface)' seçeneğini 0'a ayarlamanız " +"önerilir.\n" "Evet - Bu ayarları otomatik olarak değiştir\n" "Hayır - Bu ayarları benim için değiştirme" @@ -2137,8 +2132,7 @@ msgid "Switch to per-object setting mode to edit modifier settings." msgstr "Değiştirici ayarlarını düzenlemek için nesne başına ayar moduna geçin." msgid "" -"Switch to per-object setting mode to edit process settings of selected " -"objects." +"Switch to per-object setting mode to edit process settings of selected objects." msgstr "" "Seçilen nesnelerin işlem ayarlarını düzenlemek için nesne başına ayar moduna " "geçin." @@ -2163,8 +2157,8 @@ 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 information first." +"To manipulate with solid parts or negative volumes you have to invalidate cut " +"information first." msgstr "" "Bu eylem kesilmiş bir yazışmayı bozacaktır.\n" "Bundan sonra model tutarlılığı garanti edilemez.\n" @@ -2227,8 +2221,7 @@ msgstr "İlk seçilen öğe bir nesne ise ikincisi de nesne olmalıdır." msgid "" "If first selected item is a part, the second one should be part in the same " "object." -msgstr "" -"İlk seçilen öğe bir parça ise ikincisi aynı nesnenin parçası olmalıdır." +msgstr "İlk seçilen öğe bir parça ise ikincisi aynı nesnenin parçası olmalıdır." msgid "The type of the last solid object part is not to be changed." msgstr "Son katı nesne parçasının tipi değiştirilNozullidir." @@ -2585,16 +2578,13 @@ msgstr "" msgid "Arranging done." msgstr "Hizalama tamamlandı." -msgid "" -"Arrange failed. Found some exceptions when processing object geometries." +msgid "Arrange failed. Found some exceptions when processing object geometries." msgstr "" -"Hizalama başarısız oldu. Nesne geometrilerini işlerken bazı istisnalar " -"bulundu." +"Hizalama başarısız oldu. Nesne geometrilerini işlerken bazı istisnalar bulundu." #, 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 "" "Hizalama tek plakaya sığmayan aşağıdaki nesneler göz ardı edildi:\n" @@ -2658,8 +2648,8 @@ msgstr "Görev iptal edildi." msgid "Upload task timed out. Please check the network status and try again." msgstr "" -"Yükleme görevi zaman aşımına uğradı. Lütfen ağ durumunu kontrol edin ve " -"tekrar deneyin." +"Yükleme görevi zaman aşımına uğradı. Lütfen ağ durumunu kontrol edin ve tekrar " +"deneyin." msgid "Cloud service connection failed. Please try again." msgstr "Bulut hizmeti bağlantısı başarısız oldu. Lütfen tekrar deneyin." @@ -2694,15 +2684,14 @@ msgstr "" "deneyin." msgid "Print file not found, Please slice it again and send it for printing." -msgstr "" -"Yazdırma dosyası bulunamadı. Lütfen tekrar dilimleyip baskıya gönderin." +msgstr "Yazdırma dosyası bulunamadı. Lütfen tekrar dilimleyip baskıya gönderin." msgid "" "Failed to upload print file to FTP. Please check the network status and try " "again." msgstr "" -"Yazdırma dosyası FTP'ye yüklenemedi. Lütfen ağ durumunu kontrol edin ve " -"tekrar deneyin." +"Yazdırma dosyası FTP'ye yüklenemedi. Lütfen ağ durumunu kontrol edin ve tekrar " +"deneyin." msgid "Sending print job over LAN" msgstr "Yazdırma işi LAN üzerinden gönderiliyor" @@ -2751,8 +2740,8 @@ msgid "Importing SLA archive" msgstr "SLA arşivi içe aktarılıyor" msgid "" -"The SLA archive doesn't contain any presets. Please activate some SLA " -"printer preset first before importing that SLA archive." +"The SLA archive doesn't contain any presets. Please activate some SLA printer " +"preset first before importing that SLA archive." msgstr "" "SLA arşivi herhangi bir ön ayar içermez. Lütfen SLA arşivini içe aktarmadan " "önce bazı SLA yazıcı ön ayarlarını etkinleştirin." @@ -2764,8 +2753,8 @@ msgid "Importing done." msgstr "İçe aktarma tamamlandı." msgid "" -"The imported SLA archive did not contain any presets. The current SLA " -"presets were used as fallback." +"The imported SLA archive did not contain any presets. The current SLA presets " +"were used as fallback." msgstr "" "İçe aktarılan SLA arşivi herhangi bir ön ayar içermiyordu. Geçerli SLA ön " "ayarları geri dönüş olarak kullanıldı." @@ -2822,8 +2811,8 @@ msgid "" "This software uses open source components whose copyright and other " "proprietary rights belong to their respective owners" msgstr "" -"Bu yazılım, telif hakkı ve diğer mülkiyet hakları ilgili sahiplerine ait " -"olan açık kaynaklı bileşenleri kullanır" +"Bu yazılım, telif hakkı ve diğer mülkiyet hakları ilgili sahiplerine ait olan " +"açık kaynaklı bileşenleri kullanır" #, c-format, boost-format msgid "About %s" @@ -2834,8 +2823,7 @@ msgstr "OrcaSlicer, BambuStudio, PrusaSlicer ve SuperSlicer'ı temel alır." msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." msgstr "" -"BambuStudio orijinal olarak PrusaResearch'ün PrusaSlicer'ını temel " -"almaktadır." +"BambuStudio orijinal olarak PrusaResearch'ün PrusaSlicer'ını temel almaktadır." msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." msgstr "" @@ -2914,8 +2902,7 @@ msgstr "Lütfen geçerli bir değer girin (K %.1f~%.1f içinde)" #, c-format, boost-format msgid "Please input a valid value (K in %.1f~%.1f, N in %.1f~%.1f)" -msgstr "" -"Lütfen geçerli bir değer girin (K %.1f~%.1f içinde, N %.1f~%.1f içinde)" +msgstr "Lütfen geçerli bir değer girin (K %.1f~%.1f içinde, N %.1f~%.1f içinde)" msgid "Other Color" msgstr "Diğer renk" @@ -2927,9 +2914,9 @@ msgid "Dynamic flow calibration" msgstr "Dinamik akış kalibrasyonu" 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." +"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 "" "Nozul sıcaklığı ve maksimum hacimsel hız kalibrasyon sonuçlarını " "etkileyecektir. Lütfen gerçek yazdırmayla aynı değerleri girin. Bir filament " @@ -2966,8 +2953,8 @@ msgid "Next" msgstr "Sonraki" 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 " +"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 "" "Kalibrasyon tamamlandı. Lütfen sıcak yatağınızdaki en düzgün ekstrüzyon " @@ -3020,7 +3007,7 @@ msgid "Print with the filament mounted on the back of chassis" msgstr "Şasinin arkasına monte edilmiş filamentle yazdırma" msgid "Current AMS humidity" -msgstr "" +msgstr "Mevcut AMS nemi" msgid "" "Please change the desiccant when it is too wet. The indicator may not " @@ -3033,8 +3020,7 @@ msgstr "" "değiştirildiğinde. nemin emilmesi saatler alır, düşük sıcaklıklar da süreci " "yavaşlatır." -msgid "" -"Config which AMS slot should be used for a filament used in the print job" +msgid "Config which AMS slot should be used for a filament used in the print job" msgstr "" "Yazdırma işinde kullanılan filament için hangi AMS yuvasının kullanılması " "gerektiğini yapılandırma" @@ -3064,8 +3050,7 @@ msgid "" "When the current material run out, the printer will continue to print in the " "following order." msgstr "" -"Mevcut malzeme bittiğinde yazıcı aşağıdaki sırayla yazdırmaya devam " -"edecektir." +"Mevcut malzeme bittiğinde yazıcı aşağıdaki sırayla yazdırmaya devam edecektir." msgid "Group" msgstr "Grup" @@ -3073,8 +3058,7 @@ msgstr "Grup" msgid "The printer does not currently support auto refill." msgstr "Yazıcı şu anda otomatik yeniden doldurmayı desteklemiyor." -msgid "" -"AMS filament backup is not enabled, please enable it in the AMS settings." +msgid "AMS filament backup is not enabled, please enable it in the AMS settings." msgstr "" "AMS filament yedekleme özelliği etkin değil, lütfen AMS ayarlarından " "etkinleştirin." @@ -3103,8 +3087,8 @@ msgid "Insertion update" msgstr "Ekleme güncellemesi" msgid "" -"The AMS will automatically read the filament information when inserting a " -"new Bambu Lab filament. This takes about 20 seconds." +"The AMS will automatically read the filament information when inserting a new " +"Bambu Lab filament. This takes about 20 seconds." msgstr "" "AMS, yeni bir Bambu Lab filamenti takıldığında filament bilgilerini otomatik " "olarak okuyacaktır. Bu yaklaşık 20 saniye sürer." @@ -3127,17 +3111,16 @@ msgid "Power on update" msgstr "Güncellemeyi aç" 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." +"The AMS will automatically read the information of inserted filament on start-" +"up. It will take about 1 minute.The reading process will roll filament spools." msgstr "" "AMS, başlangıçta takılan filamentin bilgilerini otomatik olarak okuyacaktır. " "Yaklaşık 1 dakika sürecektir. Okuma işlemi filament makaralarını saracaktır." 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." +"The AMS will not automatically read information from inserted filament during " +"startup and will continue to use the information recorded before the last " +"shutdown." msgstr "" "AMS, başlatma sırasında takılan filamentden bilgileri otomatik olarak okumaz " "ve son kapatmadan önce kaydedilen bilgileri kullanmaya devam eder." @@ -3151,8 +3134,8 @@ msgid "" "automatically." msgstr "" "AMS, filament bilgisi güncellendikten sonra Bambu filamentin kalan " -"kapasitesini tahmin edecek. Yazdırma sırasında kalan kapasite otomatik " -"olarak güncellenecektir." +"kapasitesini tahmin edecek. Yazdırma sırasında kalan kapasite otomatik olarak " +"güncellenecektir." msgid "AMS filament backup" msgstr "AMS filament yedeklemesi" @@ -3184,8 +3167,8 @@ msgid "" "Failed to download the plug-in. Please check your firewall settings and vpn " "software, check and retry." msgstr "" -"Eklenti indirilemedi. Lütfen güvenlik duvarı ayarlarınızı ve vpn " -"yazılımınızı kontrol edin, kontrol edip yeniden deneyin." +"Eklenti indirilemedi. Lütfen güvenlik duvarı ayarlarınızı ve vpn yazılımınızı " +"kontrol edin, kontrol edip yeniden deneyin." msgid "" "Failed to install the plug-in. Please check whether it is blocked or deleted " @@ -3258,8 +3241,8 @@ msgstr "G kodu dışa aktarılırken bilinmeyen bir hata oluştu." #, boost-format msgid "" -"Copying of the temporary G-code to the output G-code failed. Maybe the SD " -"card is write locked?\n" +"Copying of the temporary G-code to the output G-code failed. Maybe the SD card " +"is write locked?\n" "Error message: %1%" msgstr "" "Geçici G kodunun çıkış G koduna kopyalanması başarısız oldu. Belki SD kart " @@ -3273,8 +3256,8 @@ msgid "" "device. The corrupted output G-code is at %1%.tmp." msgstr "" "Geçici G kodunun çıkış G koduna kopyalanması başarısız oldu. Hedef cihazda " -"sorun olabilir, lütfen tekrar dışa aktarmayı veya farklı bir cihaz " -"kullanmayı deneyin. Bozuk çıktı G kodu %1%.tmp konumunda." +"sorun olabilir, lütfen tekrar dışa aktarmayı veya farklı bir cihaz kullanmayı " +"deneyin. Bozuk çıktı G kodu %1%.tmp konumunda." #, boost-format msgid "" @@ -3294,8 +3277,8 @@ msgstr "" #, boost-format msgid "" -"Copying of the temporary G-code has finished but the exported code couldn't " -"be opened during copy check. The output G-code is at %1%.tmp." +"Copying of the temporary G-code has finished but the exported code couldn't be " +"opened during copy check. The output G-code is at %1%.tmp." msgstr "" "Geçici G kodunun kopyalanması tamamlandı ancak kopya kontrolü sırasında dışa " "aktarılan kod açılamadı. Çıkış G kodu %1%.tmp konumundadır." @@ -3376,8 +3359,7 @@ msgstr "Cihaz Durumu" msgid "Actions" msgstr "İşlemler" -msgid "" -"Please select the devices you would like to manage here (up to 6 devices)" +msgid "Please select the devices you would like to manage here (up to 6 devices)" msgstr "Lütfen buradan yönetmek istediğiniz cihazları seçin (en fazla 6 cihaz)" msgid "Add" @@ -3507,8 +3489,8 @@ msgid "Send to" msgstr "Gönderildi" msgid "" -"printers at the same time.(It depends on how many devices can undergo " -"heating at the same time.)" +"printers at the same time.(It depends on how many devices can undergo heating " +"at the same time.)" msgstr "" "aynı anda kaç yazıcının ısıtma işleminden geçebileceği, aynı anda " "ısıtılabilecek cihaz sayısına bağlıdır." @@ -3598,8 +3580,7 @@ msgstr "Hata! Geçersiz model" msgid "The selected file contains no geometry." msgstr "Seçilen dosya geometri içermiyor." -msgid "" -"The selected file contains several disjoint areas. This is not supported." +msgid "The selected file contains several disjoint areas. This is not supported." msgstr "Seçilen dosya birkaç ayrık alan içeriyor. Bu desteklenmiyor." msgid "Choose a file to import bed texture from (PNG/SVG):" @@ -3612,11 +3593,11 @@ msgid "Bed Shape" msgstr "Yatak Şekli" msgid "" -"The recommended minimum temperature is less than 190 degree or the " -"recommended maximum temperature is greater than 300 degree.\n" +"The recommended minimum temperature is less than 190 degree or the recommended " +"maximum temperature is greater than 300 degree.\n" msgstr "" -"Önerilen minimum sıcaklık 190 dereceden azdır veya önerilen maksimum " -"sıcaklık 300 dereceden yüksektir.\n" +"Önerilen minimum sıcaklık 190 dereceden azdır veya önerilen maksimum sıcaklık " +"300 dereceden yüksektir.\n" msgid "" "The recommended minimum temperature cannot be higher than the recommended " @@ -3641,8 +3622,7 @@ msgid "" "Recommended nozzle temperature of this filament type is [%d, %d] degree " "centigrade" msgstr "" -"Bu filament tipinin tavsiye edilen Nozul sıcaklığı [%d, %d] derece " -"santigrattır" +"Bu filament tipinin tavsiye edilen Nozul sıcaklığı [%d, %d] derece santigrattır" msgid "" "Too small max volumetric speed.\n" @@ -3653,13 +3633,13 @@ msgstr "" #, 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" +"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 "" -"Mevcut hazne sıcaklığı malzemenin güvenli sıcaklığından yüksektir, " -"malzemenin yumuşamasına ve tıkanmasına neden olabilir Malzeme için maksimum " -"güvenli sıcaklık %d'dir" +"Mevcut hazne sıcaklığı malzemenin güvenli sıcaklığından yüksektir, malzemenin " +"yumuşamasına ve tıkanmasına neden olabilir Malzeme için maksimum güvenli " +"sıcaklık %d'dir" msgid "" "Too small layer height.\n" @@ -3713,16 +3693,16 @@ msgstr "" "Değer 0'a sıfırlanacaktır." msgid "" -"Alternate extra wall does't work well when ensure vertical shell thickness " -"is set to All. " +"Alternate extra wall does't work well when ensure vertical shell thickness is " +"set to All. " msgstr "" -"Alternatif ekstra duvar, dikey kabuk kalınlığının Tümü olarak " -"ayarlandığından emin olunduğunda iyi çalışmaz. " +"Alternatif ekstra duvar, dikey kabuk kalınlığının Tümü olarak ayarlandığından " +"emin olunduğunda iyi çalışmaz. " msgid "" "Change these settings automatically? \n" -"Yes - Change ensure vertical shell thickness to Moderate and enable " -"alternate extra wall\n" +"Yes - Change ensure vertical shell thickness to Moderate and enable alternate " +"extra wall\n" "No - Don't use alternate extra wall" msgstr "" "Bu ayarlar otomatik olarak değiştirilsin mi? \n" @@ -3783,8 +3763,7 @@ msgstr "" "olduğunda ve timelapse türü geleneksel olduğunda çalışır." msgid " But machines with I3 structure will not generate timelapse videos." -msgstr "" -" Ancak I3 yapısına sahip yazıcılar timelapse videolar oluşturmayacaktır." +msgstr " Ancak I3 yapısına sahip yazıcılar timelapse videolar oluşturmayacaktır." msgid "" "Change these settings automatically? \n" @@ -3792,8 +3771,7 @@ msgid "" "No - Give up using spiral mode this time" msgstr "" "Bu ayarlar otomatik olarak değiştirilsin mi?\n" -"Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak " -"etkinleştirin\n" +"Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak etkinleştirin\n" "Hayır - Bu sefer spiral modunu kullanmaktan vazgeçin" msgid "Auto bed leveling" @@ -3926,9 +3904,9 @@ msgid "Update failed." msgstr "Güncelleme başarısız." 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." +"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 "" "Mevcut hazne sıcaklığı veya hedef hazne sıcaklığı 45 ° C'yi aşıyor Ekstruder " "tıkanmasını önlemek için düşük sıcaklıkta filament (PLA / PETG / TPU) " @@ -3936,8 +3914,8 @@ msgstr "" 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℃." +"avoid extruder clogging,it is not allowed to set the chamber temperature above " +"45℃." msgstr "" "Ekstrudere düşük sıcaklıkta filament (PLA / PETG / TPU) yüklendi. Ekstruder " "tıkanmasını önlemek için hazne sıcaklığının 45 ° C'nin üzerine ayarlanmasına " @@ -3955,8 +3933,7 @@ msgstr "" msgid "Failed to start printing job" msgstr "Yazdırma işi başlatılamadı" -msgid "" -"This calibration does not support the currently selected nozzle diameter" +msgid "This calibration does not support the currently selected nozzle diameter" msgstr "Bu kalibrasyon, şu anda seçilen nozzle çapını desteklememektedir" msgid "Current flowrate cali param is invalid" @@ -3978,15 +3955,15 @@ msgid "Bambu PET-CF/PA6-CF is not supported by AMS." msgstr "Bambu PET-CF/PA6-CF, AMS tarafından desteklenNozulktedir." msgid "" -"Damp PVA will become flexible and get stuck inside AMS,please take care to " -"dry it before use." +"Damp PVA will become flexible and get stuck inside AMS,please take care to dry " +"it before use." msgstr "" -"Nemli PVA esnekleşecek ve AMS'nin içine sıkışacaktır, lütfen kullanmadan " -"önce kurutmaya dikkat edin." +"Nemli PVA esnekleşecek ve AMS'nin içine sıkışacaktır, lütfen kullanmadan önce " +"kurutmaya dikkat edin." msgid "" -"CF/GF filaments are hard and brittle, It's easy to break or get stuck in " -"AMS, please use with caution." +"CF/GF filaments are hard and brittle, It's easy to break or get stuck in AMS, " +"please use with caution." msgstr "" "CF/GF filamentleri sert ve kırılgandır. AMS'de kırılması veya sıkışması " "kolaydır, lütfen dikkatli kullanın." @@ -5025,8 +5002,8 @@ msgstr[1] "" msgid "" "\n" -"Hint: Make sure you have added the corresponding printer before importing " -"the configs." +"Hint: Make sure you have added the corresponding printer before importing the " +"configs." msgstr "" "\n" "İpucu: Yapılandırmaları içe aktarmadan önce ilgili yazıcıyı eklediğinizden " @@ -5075,10 +5052,8 @@ msgid "Please confirm if the printer is connected." msgstr "Lütfen yazıcının bağlı olup olmadığını onaylayın." msgid "" -"The printer is currently busy downloading. Please try again after it " -"finishes." -msgstr "" -"Yazıcı şu anda indirmeyle meşgul. Lütfen bittikten sonra tekrar deneyin." +"The printer is currently busy downloading. Please try again after it finishes." +msgstr "Yazıcı şu anda indirmeyle meşgul. Lütfen bittikten sonra tekrar deneyin." msgid "Printer camera is malfunctioning." msgstr "Yazıcı kamerası arızalı." @@ -5087,8 +5062,7 @@ msgid "Problem occurred. Please update the printer firmware and try again." msgstr "" "Sorun oluştu. Lütfen yazıcının ürün yazılımını güncelleyin ve tekrar deneyin." -msgid "" -"LAN Only Liveview is off. Please turn on the liveview on printer screen." +msgid "LAN Only Liveview is off. Please turn on the liveview on printer screen." msgstr "" "Yalnızca LAN Canlı İzleme kapalı. Lütfen yazıcı ekranındaki canlı " "görüntülemeyi açın." @@ -5103,8 +5077,8 @@ msgid "Connection Failed. Please check the network and try again" msgstr "Bağlantı Başarısız. Lütfen ağı kontrol edip tekrar deneyin" msgid "" -"Please check the network and try again, You can restart or update the " -"printer if the issue persists." +"Please check the network and try again, You can restart or update the printer " +"if the issue persists." msgstr "" "Lütfen ağı kontrol edip tekrar deneyin. Sorun devam ederse yazıcıyı yeniden " "başlatabilir veya güncelleyebilirsiniz." @@ -5113,7 +5087,7 @@ msgid "The printer has been logged out and cannot connect." msgstr "Yazıcıda oturum kapatıldı ve bağlanamıyor." msgid "Video Stopped." -msgstr "" +msgstr "Video Durduruldu." msgid "LAN Connection Failed (Failed to start liveview)" msgstr "LAN Bağlantısı Başarısız Oldu (Canlı izleme başlatılamadı)" @@ -5224,6 +5198,8 @@ msgid "" "Please check if the SD card is inserted into the printer.\n" "If it still cannot be read, you can try formatting the SD card." msgstr "" +"Lütfen SD kartın yazıcıya takılı olup olmadığını kontrol edin.\n" +"Hala okunamıyorsa SD kartı biçimlendirmeyi deneyebilirsiniz." msgid "LAN Connection Failed (Failed to view sdcard)" msgstr "LAN Bağlantısı Başarısız (SD kart görüntülenemedi)" @@ -5237,8 +5213,7 @@ msgid_plural "" "You are going to delete %u files from printer. Are you sure to continue?" msgstr[0] "" "%u dosyasını yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" -msgstr[1] "" -"%u dosyayı yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" +msgstr[1] "%u dosyayı yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" msgid "Delete files" msgstr "Dosyaları sil" @@ -5263,8 +5238,8 @@ 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 dosyası hiçbir G kodu verisi içermiyor. Lütfen dosyayı Bambu " -"Studio ile dilimleyin ve yeni bir .gcode.3mf dosyasını dışa aktarın." +".gcode.3mf dosyası hiçbir G kodu verisi içermiyor. Lütfen dosyayı Bambu Studio " +"ile dilimleyin ve yeni bir .gcode.3mf dosyasını dışa aktarın." #, c-format, boost-format msgid "File '%s' was lost! Please download it again." @@ -5298,8 +5273,8 @@ msgid "" "Reconnecting the printer, the operation cannot be completed immediately, " "please try again later." msgstr "" -"Yazıcıyı yeniden bağladığınızda işlem hemen tamamlanamıyor, lütfen daha " -"sonra tekrar deneyin." +"Yazıcıyı yeniden bağladığınızda işlem hemen tamamlanamıyor, lütfen daha sonra " +"tekrar deneyin." msgid "File does not exist." msgstr "Dosya bulunmuyor." @@ -5382,8 +5357,8 @@ msgid "" "(The model has already been rated. Your rating will overwrite the previous " "rating.)" msgstr "" -"(Model zaten derecelendirilmiştir. Derecelendirmeniz önceki " -"derecelendirmenin üzerine yazılacaktır)" +"(Model zaten derecelendirilmiştir. Derecelendirmeniz önceki derecelendirmenin " +"üzerine yazılacaktır)" msgid "Rate" msgstr "Derecelendir" @@ -5461,8 +5436,8 @@ msgid "" "Please heat the nozzle to above 170 degree before loading or unloading " "filament." msgstr "" -"Filamenti yüklemeden veya boşaltmadan önce lütfen nozulu 170 derecenin " -"üzerine ısıtın." +"Filamenti yüklemeden veya boşaltmadan önce lütfen nozulu 170 derecenin üzerine " +"ısıtın." msgid "Still unload" msgstr "Daha Fazla Boşalt" @@ -5673,23 +5648,27 @@ msgid "Not for now" msgstr "Şu an için değil" msgid "Server Exception" -msgstr "" +msgstr "Sunucu İstisnası" msgid "" "The server is unable to respond. Please click the link below to check the " "server status." msgstr "" +"Sunucu yanıt veremiyor. Sunucu durumunu kontrol etmek için lütfen aşağıdaki " +"bağlantıya tıklayın." msgid "" -"If the server is in a fault state, you can temporarily use offline printing " -"or local network printing." +"If the server is in a fault state, you can temporarily use offline printing or " +"local network printing." msgstr "" +"Sunucu arıza durumundaysa, geçici olarak çevrimdışı yazdırmayı veya yerel " +"ağdan yazdırmayı kullanabilirsiniz." msgid "How to use LAN only mode" -msgstr "" +msgstr "Yalnızca LAN modu nasıl kullanılır?" msgid "Don't show this dialog again" -msgstr "" +msgstr "Bu iletişim kutusunu bir daha gösterme" msgid "3D Mouse disconnected." msgstr "3D Fare bağlantısı kesildi." @@ -5819,8 +5798,7 @@ msgid "Range" msgstr "Aralık" msgid "" -"The application cannot run normally because OpenGL version is lower than " -"2.0.\n" +"The application cannot run normally because OpenGL version is lower than 2.0.\n" msgstr "" "OpenGL sürümü 2.0'dan düşük olduğundan uygulama normal şekilde çalışamıyor.\n" @@ -5859,11 +5837,11 @@ msgid "Enable detection of build plate position" msgstr "Yapı plakası konumunun algılanmasını etkinleştir" msgid "" -"The localization tag of build plate is detected, and printing is paused if " -"the tag is not in predefined range." +"The localization tag of build plate is detected, and printing is paused if the " +"tag is not in predefined range." msgstr "" -"Baskı plakasının yerelleştirme etiketi algılanır ve etiket önceden " -"tanımlanmış aralıkta değilse yazdırma duraklatılır." +"Baskı plakasının yerelleştirme etiketi algılanır ve etiket önceden tanımlanmış " +"aralıkta değilse yazdırma duraklatılır." msgid "First Layer Inspection" msgstr "Birinci Katman Denetimi" @@ -6001,8 +5979,8 @@ msgstr "Peletler" msgid "" "No AMS filaments. Please select a printer in 'Device' page to load AMS info." msgstr "" -"AMS filamentleri yok. AMS bilgilerini yüklemek için lütfen 'Cihaz' " -"sayfasında bir yazıcı seçin." +"AMS filamentleri yok. AMS bilgilerini yüklemek için lütfen 'Cihaz' sayfasında " +"bir yazıcı seçin." msgid "Sync filaments with AMS" msgstr "Filamentleri AMS ile senkronize et" @@ -6015,11 +5993,10 @@ msgstr "" "ayarlarını ve renklerini kaldıracaktır. Devam etmek istiyor musun?" msgid "" -"Already did a synchronization, do you want to sync only changes or resync " -"all?" +"Already did a synchronization, do you want to sync only changes or resync all?" msgstr "" -"Zaten bir senkronizasyon yaptınız. Yalnızca değişiklikleri senkronize etmek " -"mi yoksa tümünü yeniden senkronize etmek mi istiyorsunuz?" +"Zaten bir senkronizasyon yaptınız. Yalnızca değişiklikleri senkronize etmek mi " +"yoksa tümünü yeniden senkronize etmek mi istiyorsunuz?" msgid "Sync" msgstr "Senkronizasyon" @@ -6031,13 +6008,12 @@ msgid "There are no compatible filaments, and sync is not performed." msgstr "Uyumlu filament yok ve senkronizasyon gerçekleştirilmiyor." 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." +"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 "" -"Genel ön ayara eşlenen bazı bilinmeyen filamentler var. Sistem ön " -"ayarlarında bir güncelleme olup olmadığını kontrol etmek için lütfen Orca " -"Slicer'ı güncelleyin veya Orca Slicer'ı yeniden başlatın." +"Genel ön ayara eşlenen bazı bilinmeyen filamentler var. Sistem ön ayarlarında " +"bir güncelleme olup olmadığını kontrol etmek için lütfen Orca Slicer'ı " +"güncelleyin veya Orca Slicer'ı yeniden başlatın." #, boost-format msgid "Do you want to save changes to \"%1%\"?" @@ -6062,26 +6038,26 @@ msgid "Restore" msgstr "Geri Yükleme" 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." +"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 "" -"Mevcut sıcak yatak sıcaklığı oldukça yüksek. Bu filamenti kapalı bir " -"muhafaza içinde bastırırken nozzle tıkanabilir. Lütfen ön kapağı açın ve/" -"veya üst camı çıkarın." +"Mevcut sıcak yatak sıcaklığı oldukça yüksek. Bu filamenti kapalı bir muhafaza " +"içinde bastırırken nozzle tıkanabilir. Lütfen ön kapağı açın ve/veya üst camı " +"çıkarın." 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." +"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 "" "Filamentin gerektirdiği nozul sertliği, yazıcının varsayılan nozul " "sertliğinden daha yüksektir. Lütfen sertleşmiş nozulu veya filamenti " "değiştirin, aksi takdirde nozul aşınır veya hasar görür." msgid "" -"Enabling traditional timelapse photography may cause surface imperfections. " -"It is recommended to change to smooth mode." +"Enabling traditional timelapse photography may cause surface imperfections. It " +"is recommended to change to smooth mode." msgstr "" "Geleneksel timelapse etkinleştirilmesi yüzey kusurlarına neden olabilir. " "Yumuşak moda geçilmesi önerilir." @@ -6098,8 +6074,7 @@ msgstr "Dosya yükleniyor: %s" msgid "The 3mf is not supported by OrcaSlicer, load geometry data only." msgstr "" -"OrcaSlicer, 3mf formatını desteklememektedir. Sadece geometri verilerini " -"yükle." +"OrcaSlicer, 3mf formatını desteklememektedir. Sadece geometri verilerini yükle." msgid "Load 3mf" msgstr "3mf yükle" @@ -6131,8 +6106,8 @@ msgstr "Lütfen bunları parametre sekmelerinde düzeltin" msgid "The 3mf has following modified G-codes in filament or printer presets:" msgstr "" -"3mf dosyasında filament veya yazıcı ön ayarlarında şu değiştirilmiş G-" -"kodları bulunmaktadır:" +"3mf dosyasında filament veya yazıcı ön ayarlarında şu değiştirilmiş G-kodları " +"bulunmaktadır:" msgid "" "Please confirm that these modified G-codes are safe to prevent any damage to " @@ -6362,15 +6337,15 @@ msgstr "İndirme başarısız oldu, Dosya boyutu sorunlu." #, c-format, boost-format msgid "Project downloaded %d%%" msgstr "" -"Proje %d%% indirildiBambu Studio’ya içe aktarma başarısız oldu. Lütfen " -"dosyayı indirin ve manuel olarak içe aktarın." +"Proje %d%% indirildiBambu Studio’ya içe aktarma başarısız oldu. Lütfen dosyayı " +"indirin ve manuel olarak içe aktarın." msgid "" -"Importing to Orca Slicer failed. Please download the file and manually " -"import it." +"Importing to Orca Slicer failed. Please download the file and manually import " +"it." msgstr "" -"Orca Slicer'ya aktarma başarısız oldu. Lütfen dosyayı indirin ve manuel " -"olarak İçe aktarın." +"Orca Slicer'ya aktarma başarısız oldu. Lütfen dosyayı indirin ve manuel olarak " +"İçe aktarın." msgid "Import SLA archive" msgstr "SLA arşivini içe aktar" @@ -6412,9 +6387,10 @@ msgstr "Proje olarak aç" msgid "Import geometry only" msgstr "Yalnızca geometriyi içe aktar" -msgid "" -"This option can be changed later in preferences, under 'Load Behaviour'." +msgid "This option can be changed later in preferences, under 'Load Behaviour'." msgstr "" +"Bu seçenek daha sonra ‘Yükleme Davranışı’ altındaki tercihlerde " +"değiştirilebilir." msgid "Only one G-code file can be opened at the same time." msgstr "Aynı anda yalnızca bir G kodu dosyası açılabilir." @@ -6433,8 +6409,8 @@ msgstr "Tüm nesneler kaldırılacak, devam edilsin mi?" msgid "The current project has unsaved changes, save it before continue?" msgstr "" -"Mevcut projede kaydedilmemiş değişiklikler var. Devam etmeden önce " -"kaydedilsin mi?" +"Mevcut projede kaydedilmemiş değişiklikler var. Devam etmeden önce kaydedilsin " +"mi?" msgid "Number of copies:" msgstr "Kopya sayısı:" @@ -6459,15 +6435,15 @@ msgstr "Dilimlenmiş dosyayı şu şekilde kaydedin:" #, c-format, boost-format msgid "" -"The file %s has been sent to the printer's storage space and can be viewed " -"on the printer." +"The file %s has been sent to the printer's storage space and can be viewed on " +"the printer." msgstr "" "%s dosyası yazıcının depolama alanına gönderildi ve yazıcıda " "görüntülenebiliyor." msgid "" -"Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try again." +"Unable to perform boolean operation on model meshes. Only positive parts will " +"be kept. You may fix the meshes and try again." msgstr "" "Model ağlarında boole işlemi gerçekleştirilemiyor. Yalnızca olumlu kısımlar " "tutulacaktır. Kafesleri düzeltip tekrar deneyebilirsiniz." @@ -6489,8 +6465,8 @@ msgid "Reason: \"%1%\" and another part have no intersection." msgstr "Sebep: “%1%” ile başka bir parçanın kesişimi yok." msgid "" -"Unable to perform boolean operation on model meshes. Only positive parts " -"will be exported." +"Unable to perform boolean operation on model meshes. Only positive parts will " +"be exported." msgstr "" "Model ağlarında boole işlemi gerçekleştirilemiyor. Yalnızca pozitif parçalar " "ihraç edilecektir." @@ -6518,8 +6494,8 @@ msgid "" "Suggest to use auto-arrange to avoid collisions when printing." msgstr "" "Nesneye Göre Yazdır:\n" -"Yazdırma sırasında çarpışmaları önlemek için otomatik düzenlemeyi " -"kullanmanızı önerin." +"Yazdırma sırasında çarpışmaları önlemek için otomatik düzenlemeyi kullanmanızı " +"önerin." msgid "Send G-code" msgstr "G-kodu gönder" @@ -6579,8 +6555,8 @@ msgid "Tips:" msgstr "İpuçları:" msgid "" -"\"Fix Model\" feature is currently only on Windows. Please repair the model " -"on Orca Slicer(windows) or CAD softwares." +"\"Fix Model\" feature is currently only on Windows. Please repair the model on " +"Orca Slicer(windows) or CAD softwares." msgstr "" "\"Modeli Onar\" özelliği şu anda yalnızca Windows'ta bulunmaktadır. Lütfen " "modeli Orca Slicer (windows) veya CAD yazılımlarında onarın." @@ -6588,8 +6564,8 @@ msgstr "" #, 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." +"still want to do this printing, please set this filament's bed temperature to " +"non zero." msgstr "" "Plaka% d: %s'nin %s(%s) filamentinı yazdırmak için kullanılması önerilmez. " "Eğer yine de bu baskıyı yapmak istiyorsanız, lütfen bu filamentin yatak " @@ -6665,8 +6641,8 @@ msgid "Stealth Mode" msgstr "Gizli mod" msgid "" -"This stops the transmission of data to Bambu's cloud services. Users who " -"don't use BBL machines or use LAN mode only can safely turn on this function." +"This stops the transmission of data to Bambu's cloud services. Users who don't " +"use BBL machines or use LAN mode only can safely turn on this function." msgstr "" "Bu, Bambu’nun bulut hizmetlerine veri aktarımını durdurur. BBL makinelerini " "kullanmayan veya yalnızca LAN modunu kullanan kullanıcılar bu işlevi güvenle " @@ -6691,9 +6667,9 @@ msgid "Allow only one OrcaSlicer instance" msgstr "Yalnızca bir OrcaSlicer örneğine izin ver" msgid "" -"On OSX there is always only one instance of app running by default. However " -"it is allowed to run multiple instances of same app from the command line. " -"In such case this settings will allow only one instance." +"On OSX there is always only one instance of app running by default. However it " +"is allowed to run multiple instances of same app from the command line. In " +"such case this settings will allow only one instance." msgstr "" "OSX’te her zaman varsayılan olarak çalışan tek bir uygulama örneği vardır. " "Ancak aynı uygulamanın birden fazla örneğinin komut satırından " @@ -6701,9 +6677,8 @@ msgstr "" "örneğe izin verecektir." msgid "" -"If this is enabled, when starting OrcaSlicer and another instance of the " -"same OrcaSlicer is already running, that instance will be reactivated " -"instead." +"If this is enabled, when starting OrcaSlicer and another instance of the same " +"OrcaSlicer is already running, that instance will be reactivated instead." msgstr "" "Bu etkinleştirilirse, OrcaSlicer başlatıldığında ve aynı OrcaSlicer’ın başka " "bir örneği zaten çalışıyorken, bunun yerine bu örnek yeniden " @@ -6776,8 +6751,7 @@ msgstr "Hacimleri temizleme: Renk her değiştiğinde otomatik olarak hesapla." msgid "If enabled, auto-calculate every time the color changed." msgstr "Etkinleştirilirse, renk her değiştiğinde otomatik hesapla." -msgid "" -"Flushing volumes: Auto-calculate every time when the filament is changed." +msgid "Flushing volumes: Auto-calculate every time when the filament is changed." msgstr "" "Yıkama hacimleri: Filament her değiştirildiğinde otomatik olarak hesaplanır." @@ -6795,12 +6769,11 @@ msgstr "" "hatırlayacak ve otomatik olarak değiştirecektir." msgid "Multi-device Management(Take effect after restarting Orca)." -msgstr "" -"Çoklu Cihaz Yönetimi(Studio yeniden başlatıldıktan sonra geçerli olur)." +msgstr "Çoklu Cihaz Yönetimi(Studio yeniden başlatıldıktan sonra geçerli olur)." msgid "" -"With this option enabled, you can send a task to multiple devices at the " -"same time and manage multiple devices." +"With this option enabled, you can send a task to multiple devices at the same " +"time and manage multiple devices." msgstr "" "Bu seçenek etkinleştirildiğinde, aynı anda birden fazla cihaza bir görev " "gönderebilir ve birden fazla cihazı yönetebilirsiniz." @@ -6845,8 +6818,8 @@ msgstr ".stl dosyalarını OrcaSlicer ile ilişkilendirin" msgid "If enabled, sets OrcaSlicer as default application to open .stl files" msgstr "" -"Etkinleştirilirse OrcaSlicer'ı .stl dosyalarını açmak için varsayılan " -"uygulama olarak ayarlar" +"Etkinleştirilirse OrcaSlicer'ı .stl dosyalarını açmak için varsayılan uygulama " +"olarak ayarlar" msgid "Associate .step/.stp files to OrcaSlicer" msgstr ".step/.stp dosyalarını OrcaSlicer ile ilişkilendirin" @@ -6863,22 +6836,22 @@ msgid "Associate URLs to OrcaSlicer" msgstr "URL’leri OrcaSlicer ile ilişkilendirin" msgid "Load All" -msgstr "" +msgstr "Tümünü Yükle" msgid "Ask When Relevant" -msgstr "" +msgstr "İlgili Olduğunda Sor" msgid "Always Ask" -msgstr "" +msgstr "Her Zaman Sor" msgid "Load Geometry Only" -msgstr "" +msgstr "Yalnızca Geometriyi Yükle" msgid "Load Behaviour" -msgstr "" +msgstr "Yükleme Davranışı" msgid "Should printer/filament/process settings be loaded when opening a .3mf?" -msgstr "" +msgstr "Bir .3mf açılırken yazıcı/filament/işlem ayarları yüklenmeli mi?" msgid "Maximum recent projects" msgstr "Maksimum yeni proje" @@ -6895,11 +6868,10 @@ msgstr "Değiştirilmiş G-kodları içeren 3MF dosyalarını yüklerken uyarı msgid "Auto-Backup" msgstr "Otomatik yedekleme" -msgid "" -"Backup your project periodically for restoring from the occasional crash." +msgid "Backup your project periodically for restoring from the occasional crash." msgstr "" -"Ara sıra meydana gelen çökmelerden sonra geri yüklemek için projenizi " -"düzenli aralıklarla yedekleyin." +"Ara sıra meydana gelen çökmelerden sonra geri yüklemek için projenizi düzenli " +"aralıklarla yedekleyin." msgid "every" msgstr "her" @@ -7223,22 +7195,22 @@ msgid "Busy" msgstr "Meşgul" msgid "Bambu Cool Plate" -msgstr "Bambu Soğuk Plaka" +msgstr "Bambu Cool Plate" msgid "PLA Plate" msgstr "PLA Plaka" msgid "Bambu Engineering Plate" -msgstr "Bambu Mühendislik Plakası" +msgstr "Bambu Engineering Plate" msgid "Bambu Smooth PEI Plate" -msgstr "Bambu Pürüzsüz PEI Plaka" +msgstr "Bambu Smooth PEI Plate" msgid "High temperature Plate" -msgstr "Yüksek Sıcaklık Plakası" +msgstr "High Temperature Plate" msgid "Bambu Textured PEI Plate" -msgstr "Bambu Dokulu PEI Plaka" +msgstr "Bambu Textured PEI Plate" msgid "Send print job to" msgstr "Yazdırma işini şuraya gönder" @@ -7256,8 +7228,7 @@ msgid "Error code" msgstr "Hata kodu" msgid "No login account, only printers in LAN mode are displayed" -msgstr "" -"Oturum açma hesabı yok, yalnızca LAN modundaki yazıcılar görüntüleniyor" +msgstr "Oturum açma hesabı yok, yalnızca LAN modundaki yazıcılar görüntüleniyor" msgid "Connecting to server" msgstr "Sunucuya baglanıyor" @@ -7285,8 +7256,8 @@ msgid "" "Filament %s exceeds the number of AMS slots. Please update the printer " "firmware to support AMS slot assignment." msgstr "" -"%s filamenti AMS yuvası sayısını aşıyor. AMS yuvası atamasını desteklemek " -"için lütfen yazıcının ürün yazılımını güncelleyin." +"%s filamenti AMS yuvası sayısını aşıyor. AMS yuvası atamasını desteklemek için " +"lütfen yazıcının ürün yazılımını güncelleyin." msgid "" "Filament exceeds the number of AMS slots. Please update the printer firmware " @@ -7325,8 +7296,7 @@ msgstr "" "desteklemek için lütfen yazıcının ürün yazılımını güncelleyin." msgid "" -"The printer firmware only supports sequential mapping of filament => AMS " -"slot." +"The printer firmware only supports sequential mapping of filament => AMS slot." msgstr "" "Yazıcı ürün yazılımı yalnızca filament => AMS yuvasının sıralı eşlemesini " "destekler." @@ -7387,8 +7357,8 @@ 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." +"they are the required filaments. If they are okay, press \"Confirm\" to start " +"printing." msgstr "" "AMS eşlemelerinde bazı bilinmeyen filamentler var. Lütfen bunların gerekli " "filamentler olup olmadığını kontrol edin. Sorun yoksa, yazdırmayı başlatmak " @@ -7413,15 +7383,13 @@ msgstr "" #, c-format, boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " -"damage" +"Printing high temperature material(%s material) with %s may cause nozzle damage" msgstr "" "Yüksek sıcaklıktaki malzemeyi (%s malzeme) %s ile yazdırmak püskürtme ucu " "hasarına neden olabilir" msgid "Please fix the error above, otherwise printing cannot continue." -msgstr "" -"Lütfen yukarıdaki hatayı düzeltin, aksi takdirde yazdırma devam edemez." +msgstr "Lütfen yukarıdaki hatayı düzeltin, aksi takdirde yazdırma devam edemez." msgid "" "Please click the confirm button if you still want to proceed with printing." @@ -7450,7 +7418,7 @@ msgid "Bind with Pin Code" msgstr "Pin Koduyla Bağla" msgid "Bind with Access Code" -msgstr "" +msgstr "Erişim Kodu ile Bağla" msgid "Send to Printer SD card" msgstr "Yazıcı SD kartına gönder" @@ -7542,16 +7510,16 @@ msgstr "Şartlar ve koşullar" msgid "" "Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab " -"device, please read the terms and conditions.By clicking to agree to use " -"your Bambu Lab device, you agree to abide by the Privacy Policy and Terms of " +"device, please read the terms and conditions.By clicking to agree to use your " +"Bambu Lab device, you agree to abide by the Privacy Policy and 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 "" -"Bir Bambu Lab cihazı satın aldığınız için teşekkür ederiz.Bambu Lab " -"cihazınızı kullanmadan önce lütfen şartlar ve koşulları okuyun.Bambu Lab " -"cihazınızı kullanmayı kabul etmek için tıklayarak, Gizlilik Politikasına ve " -"Kullanım Koşullarına (topluca \"Şartlar\" olarak anılacaktır) uymayı kabul " -"etmiş olursunuz. \"). Bambu Lab Gizlilik Politikasına uymuyorsanız veya bu " +"Bir Bambu Lab cihazı satın aldığınız için teşekkür ederiz.Bambu Lab cihazınızı " +"kullanmadan önce lütfen şartlar ve koşulları okuyun.Bambu Lab cihazınızı " +"kullanmayı kabul etmek için tıklayarak, Gizlilik Politikasına ve Kullanım " +"Koşullarına (topluca \"Şartlar\" olarak anılacaktır) uymayı kabul etmiş " +"olursunuz. \"). Bambu Lab Gizlilik Politikasına uymuyorsanız veya bu " "Politikayı kabul etmiyorsanız lütfen Bambu Lab ekipmanlarını ve hizmetlerini " "kullanmayın." @@ -7575,11 +7543,11 @@ msgid "" "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." +"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 Baskı topluluğunda, kendi dilimleme parametrelerimizi ve ayarlarımızı " "düzenlerken birbirimizin başarılarından ve başarısızlıklarından öğreniyoruz. " @@ -7630,20 +7598,19 @@ msgid "Click to reset all settings to the last saved preset." msgstr "Tüm ayarları en son kaydedilen ön ayara sıfırlamak için tıklayın." msgid "" -"Prime tower is required for smooth timelapse. There may be flaws on the " -"model without prime tower. Are you sure you want to disable prime tower?" +"Prime tower is required for smooth timelapse. There may be flaws on the model " +"without prime tower. Are you sure you want to disable prime tower?" msgstr "" "Sorunsuz timeplace için Prime Tower gereklidir. Prime tower olmayan modelde " "kusurlar olabilir. Prime tower'ı devre dışı bırakmak istediğinizden emin " "misiniz?" 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?" +"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 "" -"Sorunsuz hızlandırılmış çekim için Prime Tower gereklidir. Prime tower " -"olmayan modelde kusurlar olabilir. Prime tower'ı etkinleştirmek istiyor " -"musunuz?" +"Sorunsuz hızlandırılmış çekim için Prime Tower gereklidir. Prime tower olmayan " +"modelde kusurlar olabilir. Prime tower'ı etkinleştirmek istiyor musunuz?" msgid "Still print by object?" msgstr "Hala nesneye göre yazdırıyor musunuz?" @@ -7668,12 +7635,12 @@ msgstr "" 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." +"settings: at least 2 interface layers, at least 0.1mm top z distance or using " +"support materials on interface." msgstr "" -"\"Güçlü Ağaç\" ve \"Ağaç Hibrit\" stilleri için şu ayarları öneriyoruz: en " -"az 2 arayüz katmanı, en az 0,1 mm üst z mesafesi veya arayüzde destek " -"malzemeleri kullanılması." +"\"Güçlü Ağaç\" ve \"Ağaç Hibrit\" stilleri için şu ayarları öneriyoruz: en az " +"2 arayüz katmanı, en az 0,1 mm üst z mesafesi veya arayüzde destek malzemeleri " +"kullanılması." msgid "" "When using support material for the support interface, We recommend the " @@ -7691,8 +7658,8 @@ msgid "" "precise dimensions or is part of an assembly, it's important to double-check " "whether this change in geometry impacts the functionality of your print." msgstr "" -"Bu seçeneğin etkinleştirilmesi modelin şeklini değiştirecektir. Baskınız " -"kesin boyutlar gerektiriyorsa veya bir montajın parçasıysa geometrideki bu " +"Bu seçeneğin etkinleştirilmesi modelin şeklini değiştirecektir. Baskınız kesin " +"boyutlar gerektiriyorsa veya bir montajın parçasıysa geometrideki bu " "değişikliğin baskınızın işlevselliğini etkileyip etkilemediğini bir kez daha " "kontrol etmeniz önemlidir." @@ -7707,12 +7674,11 @@ msgstr "" "min_layer_height olarak ayarlanacak\n" msgid "" -"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " -"height limits ,this may cause printing quality issues." +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height " +"limits ,this may cause printing quality issues." msgstr "" -"Katman yüksekliği, Yazıcı Ayarları -> Ekstruder -> Katman yüksekliği " -"sınırları bölümündeki sınırı aşıyor bu durum baskı kalitesi sorunlarına " -"neden olabilir." +"Katman yüksekliği, Yazıcı Ayarları -> Ekstruder -> Katman yüksekliği sınırları " +"bölümündeki sınırı aşıyor bu durum baskı kalitesi sorunlarına neden olabilir." msgid "Adjust to the set range automatically? \n" msgstr "Ayarlanan aralığa otomatik olarak ayarlansın mı? \n" @@ -7726,8 +7692,8 @@ msgstr "Atla" msgid "" "Experimental feature: Retracting and cutting off the filament at a greater " "distance during filament changes to minimize flush.Although it can notably " -"reduce flush, it may also elevate the risk of nozzle clogs or other " -"printing complications." +"reduce flush, it may also elevate the risk of nozzle clogs or other printing " +"complications." msgstr "" "Deneysel özellik: Filament değişiklikleri sırasında, floşu en aza indirmek " "için filamanı daha büyük bir mesafeden geri çekmek ve kesmek. Flush’u önemli " @@ -7742,15 +7708,15 @@ msgid "" msgstr "" "Deneysel özellik: Filament değişiklikleri sırasında, filamanın en aza " "indirilmesi için filamanın daha büyük bir mesafeden geri çekilmesi ve " -"kesilmesi. Akmayı önemli ölçüde azaltabilmesine rağmen, aynı zamanda " -"püskürtme uçları tıkanması veya diğer yazdırma komplikasyonları riskini de " -"artırabilir. Lütfen en son yazıcı ürün yazılımını kullanın." +"kesilmesi. Akmayı önemli ölçüde azaltabilmesine rağmen, aynı zamanda püskürtme " +"uçları tıkanması veya diğer yazdırma komplikasyonları riskini de artırabilir. " +"Lütfen en son yazıcı ürün yazılımını kullanın." 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" @@ -7764,8 +7730,7 @@ msgstr "" "Mevcut sistem ön ayarının, sistem ön ayarından ayrılacak bir kopyası " "oluşturulacaktır." -msgid "" -"The current custom preset will be detached from the parent system preset." +msgid "The current custom preset will be detached from the parent system preset." msgstr "Geçerli özel ön ayar, ana sistem ön ayarından ayrılacaktır." msgid "Modifications to the current profile will be saved." @@ -7869,13 +7834,13 @@ msgid "Overhang speed" msgstr "Çıkıntı Hızı" 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" +"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 "" "Bu, çeşitli sarkma dereceleri için hızdır. Çıkıntı dereceleri çizgi " -"genişliğinin yüzdesi olarak ifade edilir. 0 hız, sarkma derecesi aralığı " -"için yavaşlamanın olmadığı anlamına gelir ve duvar hızı kullanılır" +"genişliğinin yüzdesi olarak ifade edilir. 0 hız, sarkma derecesi aralığı için " +"yavaşlamanın olmadığı anlamına gelir ve duvar hızı kullanılır" msgid "Bridge" msgstr "Köprü" @@ -7984,66 +7949,66 @@ msgid "Nozzle temperature when printing" msgstr "Yazdırma sırasında nozul sıcaklığı" msgid "Cool Plate (SuperTack)" -msgstr "Soğuk Plaka (SuperTack)" +msgstr "Cool Plate (SuperTack)" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament " -"does not support to print on the Cool Plate SuperTack" +"Bed temperature when cool plate is installed. Value 0 means the filament does " +"not support to print on the Cool Plate SuperTack" msgstr "" -"Soğutma plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin Soğuk " -"Plaka SuperTack üzerine yazdırmayı desteklemediği anlamına gelir" +"Cool Plate takıldığında yatak sıcaklığı. 0 değeri, filamentin Cool Plate " +"SuperTack üzerine yazdırmayı desteklemediği anlamına gelir" msgid "Cool Plate" -msgstr "Soğuk Plaka" +msgstr "Cool Plate" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament " -"does not support to print on the Cool Plate" +"Bed temperature when cool plate is installed. Value 0 means the filament does " +"not support to print on the Cool Plate" msgstr "" -"Soğutma plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin Cool " -"Plate üzerine yazdırmayı desteklemediği anlamına gelir" +"Cool Plate takıldığında yatak sıcaklığı. 0 değeri, filamentin Cool Plate " +"üzerine yazdırmayı desteklemediği anlamına gelir" msgid "Textured Cool plate" -msgstr "Dokulu Soğuk Plaka" +msgstr "Textured Cool Plate" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament " -"does not support to print on the Textured Cool Plate" +"Bed temperature when cool plate is installed. Value 0 means the filament does " +"not support to print on the Textured Cool Plate" msgstr "" -"Soğuk plaka takıldığında yatak sıcaklığı. 0 Değeri, filamentin Dokulu Soğuk " -"Plaka üzerine yazdırmayı desteklemediği anlamına gelir." +"Cool Plate takıldığında yatak sıcaklığı. 0 Değeri, filamentin Textured Cool " +"Plate üzerine yazdırmayı desteklemediği anlamına gelir" msgid "Engineering plate" -msgstr "Mühendislik plakası" +msgstr "Engineering Plate" msgid "" "Bed temperature when engineering plate is installed. Value 0 means the " "filament does not support to print on the Engineering Plate" msgstr "" -"Mühendislik plakası takıldığında yatak sıcaklığı. Değer 0, filamentin " -"Mühendislik Plakasına yazdırmayı desteklemediği anlamına gelir" +"Engineering Plate takıldığında yatak sıcaklığı. Değer 0, filamentin " +"Engineering Plate yazdırmayı desteklemediği anlamına gelir" msgid "Smooth PEI Plate / High Temp Plate" -msgstr "Düz PEI Plakası / Yüksek Sıcaklık Plakası" +msgstr "Smooth PEI Plate / High Temp Plate" 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 "" -"Düz PEI Plakası/Yüksek Sıcaklık Plakası takılığın da yatak sıcaklığı. 0 " -"Değeri, filamentin Düz PEI Plakası/Yüksek Sıcaklık Plakası üzerin de baskı " -"yapmayı desteklemediği anlamına gelir." +"Smooth PEI Plate / High Temp Plate takılığın da yatak sıcaklığı. 0 Değeri, " +"filamentin Smooth PEI Plate / High Temp Plate üzerine baskı yapmayı " +"desteklemediği anlamına gelir" msgid "Textured PEI Plate" -msgstr "Dokulu PEI Plaka" +msgstr "Textured PEI Plate" 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 "" -"Dokulu PEI Plaka takıldığın da yatak sıcaklığı. 0 Değeri, filamentin Dokulu " -"PEI Plaka üzerine yazdırmayı desteklemediği anlamına gelir" +"Textured PEI Plate takıldığın da yatak sıcaklığı. 0 Değeri, filamentin " +"Textured PEI Plate üzerine yazdırmayı desteklemediği anlamına gelir" msgid "Volumetric speed limitation" msgstr "Hacimsel Hız Sınırlaması" @@ -8061,15 +8026,15 @@ msgid "Min fan speed threshold" msgstr "Minimum fan hızı" 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" +"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 "" "Tahmini katman süresi ayardaki katman süresinden uzun olmadığında parça " -"soğutma fanı hızı minimum hızda çalışmaya başlayacaktır. Katman süresi " -"eşikten kısa olduğunda fan hızı, katman yazdırma süresine göre minimum ve " -"maksimum fan hızı arasında enterpole edilir" +"soğutma fanı hızı minimum hızda çalışmaya başlayacaktır. Katman süresi eşikten " +"kısa olduğunda fan hızı, katman yazdırma süresine göre minimum ve maksimum fan " +"hızı arasında enterpole edilir" msgid "Max fan speed threshold" msgstr "Maksimum fan hızı" @@ -8115,7 +8080,7 @@ msgid "Dependencies" msgstr "Bağımlılıklar" msgid "Profile dependencies" -msgstr "Profil bağımlılıkları" +msgstr "Profil Bağımlılıkları" msgid "Printable space" msgstr "Plaka Ayarı" @@ -8200,13 +8165,13 @@ msgstr "Yazıcının ekstruder sayısı." msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" -"Do you want to change the diameter for all extruders to first extruder " -"nozzle diameter value?" +"Do you want to change the diameter for all extruders to first extruder nozzle " +"diameter value?" msgstr "" "Tek Ekstruder Çoklu Malzeme seçilir, \n" "ve tüm ekstrüderlerin aynı çapa sahip olması gerekir.\n" -"Tüm ekstruderlerin çapını ilk ekstruder bozul çapı değerine değiştirmek " -"ister misiniz?" +"Tüm ekstruderlerin çapını ilk ekstruder bozul çapı değerine değiştirmek ister " +"misiniz?" msgid "Nozzle diameter" msgstr "Nozul çapı" @@ -8280,8 +8245,8 @@ msgid "" "please reset the filament information for that slot." msgstr "" "Seçilen ön ayarı silmek istediğinizden emin misiniz? \n" -"Eğer ön ayar, şu anda yazıcınızda kullanılan bir filamente karşılık " -"geliyorsa, lütfen o slot için filament bilgilerini sıfırlayın." +"Eğer ön ayar, şu anda yazıcınızda kullanılan bir filamente karşılık geliyorsa, " +"lütfen o slot için filament bilgilerini sıfırlayın." #, boost-format msgid "Are you sure to %1% the selected preset?" @@ -8367,19 +8332,19 @@ msgstr "\"%1%\" ön ayarı aşağıdaki kaydedilmemiş değişiklikleri içeriyo #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new printer profile and it " -"contains the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new printer profile and it contains " +"the following unsaved changes:" msgstr "" "Ön ayar \"%1%\", yeni yazıcı profiliyle uyumlu değil ve aşağıdaki " "kaydedilmemiş değişiklikleri içeriyor:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new process profile and it " -"contains the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new process profile and it contains " +"the following unsaved changes:" msgstr "" -"Ön ayar \"%1%\", yeni işlem profiliyle uyumlu değil ve aşağıdaki " -"kaydedilmemiş değişiklikleri içeriyor:" +"Ön ayar \"%1%\", yeni işlem profiliyle uyumlu değil ve aşağıdaki kaydedilmemiş " +"değişiklikleri içeriyor:" #, boost-format msgid "You have changed some settings of preset \"%1%\". " @@ -8406,12 +8371,12 @@ msgstr "Daha önce ayarlarınızı değiştirdiniz." msgid "" "\n" -"You can discard the preset values you have modified, or choose to transfer " -"the modified values to the new project" +"You can discard the preset values you have modified, or choose to transfer the " +"modified values to the new project" msgstr "" "\n" -"Değiştirdiğiniz ön ayar değerlerini atabilir veya değiştirilen değerleri " -"yeni projeye aktarmayı seçebilirsiniz." +"Değiştirdiğiniz ön ayar değerlerini atabilir veya değiştirilen değerleri yeni " +"projeye aktarmayı seçebilirsiniz." msgid "Extruders count" msgstr "Ekstruder sayısı" @@ -8435,19 +8400,19 @@ msgstr "" msgid "" "Transfer the selected options from left preset to the right.\n" -"Note: New modified presets will be selected in settings tabs after close " -"this dialog." +"Note: New modified presets will be selected in settings tabs after close this " +"dialog." msgstr "" "Seçilen seçenekleri sol ön ayardan sağa aktarın.\n" -"Not: Bu iletişim kutusunu kapattıktan sonra ayarlar sekmelerinde " -"değiştirilen yeni ön ayarlar seçilecektir." +"Not: Bu iletişim kutusunu kapattıktan sonra ayarlar sekmelerinde değiştirilen " +"yeni ön ayarlar seçilecektir." msgid "Transfer values from left to right" msgstr "Değerleri soldan sağa aktarın" msgid "" -"If enabled, this dialog can be used for transfer selected values from left " -"to right preset." +"If enabled, this dialog can be used for transfer selected values from left to " +"right preset." msgstr "" "Etkinleştirilirse, bu iletişim kutusu seçilen değerleri soldan sağa ön ayara " "aktarmak için kullanılabilir." @@ -8588,22 +8553,22 @@ msgstr "Sıkıştırma özelleştirme" 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" +"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 "" "Sıkıştırma, tek ekstruderli bir MM yazıcıda takım değişiminden hemen önce " -"yapılan hızlı ekstrüzyonu ifade eder. Amacı, yeni filamentin " -"yerleştirilmesini engellememesi ve daha sonra yeniden yerleştirilebilmesi " -"için boşaltılmış filamentin ucunu düzgün bir şekilde şekillendirmektir. Bu " -"aşama önemlidir ve farklı malzemeler iyi bir şekil elde etmek için farklı " -"ekstrüzyon hızları gerektirebilir. Bu nedenle, sıkıştırma sırasındaki " -"ekstrüzyon hızları ayarlanabilir.\n" +"yapılan hızlı ekstrüzyonu ifade eder. Amacı, yeni filamentin yerleştirilmesini " +"engellememesi ve daha sonra yeniden yerleştirilebilmesi için boşaltılmış " +"filamentin ucunu düzgün bir şekilde şekillendirmektir. Bu aşama önemlidir ve " +"farklı malzemeler iyi bir şekil elde etmek için farklı ekstrüzyon hızları " +"gerektirebilir. Bu nedenle, sıkıştırma sırasındaki ekstrüzyon hızları " +"ayarlanabilir.\n" "\n" "Bu uzman düzeyinde bir ayardır, yanlış ayarlama muhtemelen sıkışmalara, " "ekstruder tekerleğinin filamente sürtünmesine vb. yol açacaktır." @@ -8670,22 +8635,22 @@ msgid "To" msgstr "İle" msgid "" -"Windows Media Player is required for this task! Do you want to enable " -"'Windows Media Player' for your operation system?" +"Windows Media Player is required for this task! Do you want to enable 'Windows " +"Media Player' for your operation system?" msgstr "" "Bu görev için Windows Media Player gereklidir! İşletim sisteminiz için " "‘Windows Media Player’ı etkinleştirmek istiyor musunuz?" msgid "" -"BambuSource has not correctly been registered for media playing! Press Yes " -"to re-register it. You will be promoted twice" +"BambuSource has not correctly been registered for media playing! Press Yes to " +"re-register it. You will be promoted twice" msgstr "" -"BambuSource medya oynatımı için doğru şekilde kaydedilmemiş! Yeniden " -"kaydetmek için Evet’e basın." +"BambuSource medya oynatımı için doğru şekilde kaydedilmemiş! Yeniden kaydetmek " +"için Evet’e basın." msgid "" -"Missing BambuSource component registered for media playing! Please re-" -"install BambuStudio or seek after-sales help." +"Missing BambuSource component registered for media playing! Please re-install " +"BambuStudio or seek after-sales help." msgstr "" "Medya oynatma için kayıtlı BambuSource bileşeni eksik! Lütfen BambuStudio’yu " "yeniden yükleyin veya satış sonrası yardım isteyin." @@ -8698,9 +8663,9 @@ msgstr "" "çalışmayabilir! Düzeltmek için Evet’e basın." msgid "" -"Your system is missing H.264 codecs for GStreamer, which are required to " -"play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-" -"libav packages, then restart Orca Slicer?)" +"Your system is missing H.264 codecs for GStreamer, which are required to play " +"video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav " +"packages, then restart Orca Slicer?)" msgstr "" "Sisteminizde video oynatmak için gerekli olan GStreamer H.264 codec " "bileşenleri eksik. (gstreamer1.0-plugins-bad veya gstreamer1.0-libav " @@ -8770,9 +8735,9 @@ 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." +"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 "" "Seçilen nesneleri veya tüm nesneleri otomatik olarak yönlendirir. Seçilen " "nesneler varsa, yalnızca seçilenleri yönlendirir. Aksi takdirde, geçerli " @@ -8995,8 +8960,8 @@ msgstr "Ağ eklentisi güncellemesi" msgid "" "Click OK to update the Network plug-in when Orca Slicer launches next time." msgstr "" -"Orca Slicer bir sonraki sefer başlatıldığında Ağ eklentisini güncellemek " -"için Tamam'a tıklayın." +"Orca Slicer bir sonraki sefer başlatıldığında Ağ eklentisini güncellemek için " +"Tamam'a tıklayın." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" @@ -9051,21 +9016,25 @@ msgid "Confirm and Update Nozzle" msgstr "Nozulu Onaylayın ve Güncelleyin" msgid "Connect the printer using IP and access code" -msgstr "" +msgstr "IP ve erişim kodunu kullanarak yazıcıyı bağlayın" -msgid "" -"Step 1. Please confirm Orca Slicer and your printer are in the same LAN." +msgid "Step 1. Please confirm Orca Slicer and your printer are in the same LAN." msgstr "" +"1. Adım: Lütfen Orca Slicer ve yazıcınızın aynı LAN’da olduğunu onaylayın." msgid "" "Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" +"2. Adım: Aşağıdaki IP ve Erişim Kodu yazıcınızdaki gerçek değerlerden " +"farklıysa, lütfen bunları düzeltin." msgid "" -"Step 3. Please obtain the device SN from the printer side; it is usually " -"found in the device information on the printer screen." +"Step 3. Please obtain the device SN from the printer side; it is usually found " +"in the device information on the printer screen." msgstr "" +"3. Adım: Lütfen yazıcı tarafından cihaz SN’sini edinin; genellikle yazıcı " +"ekranındaki cihaz bilgilerinde bulunur." msgid "IP" msgstr "IP" @@ -9074,37 +9043,37 @@ msgid "Access Code" msgstr "Giriş kodu" msgid "Printer model" -msgstr "" +msgstr "Yazıcı modeli" msgid "Printer name" -msgstr "" +msgstr "Yazıcı adı" msgid "Where to find your printer's IP and Access Code?" msgstr "Yazıcınızın IP'sini ve Erişim Kodunu nerede bulabilirsiniz?" msgid "Connect" -msgstr "" +msgstr "Bağlan" msgid "Manual Setup" -msgstr "" +msgstr "Manuel Kurulum" msgid "connecting..." -msgstr "" +msgstr "bağlanıyor…" msgid "Failed to connect to printer." -msgstr "" +msgstr "Yazıcıya bağlanılamadı." msgid "Failed to publish login request." -msgstr "" +msgstr "Oturum açma isteği yayınlanamadı." msgid "The printer has already been bound." -msgstr "" +msgstr "Yazıcı önceden bağlanmış." msgid "The printer mode is incorrect, please switch to LAN Only." -msgstr "" +msgstr "Yazıcı modu yanlış, lütfen Yalnızca LAN’a geçin." msgid "Connecting to printer... The dialog will close later" -msgstr "" +msgstr "Yazıcıya bağlanılıyor… İletişim kutusu daha sonra kapanacaktır" msgid "Connection failed, please double check IP and Access Code" msgstr "" @@ -9145,8 +9114,8 @@ msgid "Updating successful" msgstr "Güncelleme başarılı" 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." +"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 "" "Güncellemek istediğinizden emin misiniz? Bu yaklaşık 10 dakika sürecektir. " "Yazıcı güncellenirken gücü kapatmayın." @@ -9165,10 +9134,9 @@ msgid "" "printing. Do you want to update now? You can also update later on printer or " "update next time starting Orca." msgstr "" -"Ürün yazılımı sürümü anormal. Yazdırmadan önce onarım ve güncelleme " -"yapılması gerekir. Şimdi güncellemek istiyor musunuz? Ayrıca daha sonra " -"yazıcıda güncelleyebilir veya stüdyoyu bir sonraki başlatışınızda " -"güncelleyebilirsiniz." +"Ürün yazılımı sürümü anormal. Yazdırmadan önce onarım ve güncelleme yapılması " +"gerekir. Şimdi güncellemek istiyor musunuz? Ayrıca daha sonra yazıcıda " +"güncelleyebilir veya stüdyoyu bir sonraki başlatışınızda güncelleyebilirsiniz." msgid "Extension Board" msgstr "Uzatma Kartı" @@ -9240,8 +9208,8 @@ msgid "Open G-code file:" msgstr "G kodu dosyasını açın:" msgid "" -"One object has empty initial layer and can't be printed. Please Cut the " -"bottom or enable supports." +"One object has empty initial layer and can't be printed. Please Cut the bottom " +"or enable supports." msgstr "" "Bir nesnenin başlangıç katmanı boş ve yazdırılamıyor. Lütfen alt kısmı kesin " "veya destekleri etkinleştirin." @@ -9326,8 +9294,8 @@ msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "%1% çizgi genişliği hesaplanamadı. \"%2%\" değeri alınamıyor " msgid "" -"Invalid spacing supplied to Flow::with_spacing(), check your layer height " -"and extrusion width" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height and " +"extrusion width" msgstr "" "Flow::with_spacing()'e sağlanan geçersiz boşluk, kat yüksekliğinizi ve " "ekstrüzyon genişliğinizi kontrol edin" @@ -9460,8 +9428,8 @@ msgstr " dışlama alanına çok yakın ve çarpışmalara neden olacak.\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" +"together. Otherwise, the extruder and nozzle may be blocked or damaged during " +"printing" msgstr "" "Birlikte büyük sıcaklık farkına sahip birden fazla filament basılamaz. Aksi " "takdirde baskı sırasında ekstruder ve nozul tıkanabilir veya hasar görebilir" @@ -9477,8 +9445,8 @@ msgstr "" "modu desteklenmez." msgid "" -"Please select \"By object\" print sequence to print multiple objects in " -"spiral vase mode." +"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." @@ -9502,8 +9470,8 @@ msgstr "%1% nesnesi maksimum yapı hacmi yüksekliğini aşıyor." #, boost-format msgid "" -"While the object %1% itself fits the build volume, its last layer exceeds " -"the maximum build volume height." +"While the object %1% itself fits the build volume, its last layer exceeds the " +"maximum build volume height." msgstr "" "%1% nesnesinin kendisi yapı hacmine uysa da, son katmanı maksimum yapı hacmi " "yüksekliğini aşıyor." @@ -9519,9 +9487,9 @@ 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 may not work " -"well when the prime tower is enabled. It's very experimental, so please " -"proceed with caution." +"Different nozzle diameters and different filament diameters may not work well " +"when the prime tower is enabled. It's very experimental, so please proceed " +"with caution." msgstr "" "Farklı püskürtme ucu çapları ve farklı filaman çapları, ana kule " "etkinleştirildiğinde iyi çalışmayabilir. Oldukça deneysel olduğundan lütfen " @@ -9552,11 +9520,11 @@ msgid "The prime tower is not supported in \"By object\" print." msgstr "Prime tower, \"Nesneye göre\" yazdırmada desteklenmez." msgid "" -"The prime tower is not supported when adaptive layer height is on. It " -"requires that all objects have the same layer height." +"The prime tower is not supported when adaptive layer height is on. It requires " +"that all objects have the same layer height." msgstr "" -"Uyarlanabilir katman yüksekliği açıkken ana kule desteklenmez. Tüm " -"nesnelerin aynı katman yüksekliğine sahip olmasını gerektirir." +"Uyarlanabilir katman yüksekliği açıkken ana kule desteklenmez. Tüm nesnelerin " +"aynı katman yüksekliğine sahip olmasını gerektirir." msgid "The prime tower requires \"support gap\" to be multiple of layer height" msgstr "" @@ -9564,12 +9532,11 @@ msgstr "" msgid "The prime tower requires that all objects have the same layer heights" msgstr "" -"Prime tower, tüm nesnelerin aynı katman yüksekliğine sahip olmasını " -"gerektirir" +"Prime tower, tüm nesnelerin aynı katman yüksekliğine sahip olmasını gerektirir" msgid "" -"The prime tower requires that all objects are printed over the same number " -"of raft layers" +"The prime tower requires that all objects are printed over the same number of " +"raft layers" msgstr "" "Ana kule, tüm nesnelerin aynı sayıda sal katmanı üzerine yazdırılmasını " "gerektirir" @@ -9582,8 +9549,8 @@ msgstr "" "gerektirir." msgid "" -"The prime tower is only supported if all objects have the same variable " -"layer height" +"The prime tower is only supported if all objects have the same variable layer " +"height" msgstr "" "Prime tower yalnızca tüm nesnelerin aynı değişken katman yüksekliğine sahip " "olması durumunda desteklenir" @@ -9597,8 +9564,7 @@ msgstr "Çok büyük çizgi genişliği" msgid "" "The prime tower requires that support has the same layer height with object." msgstr "" -"Prime kulesi için, destek, nesne ile aynı katman yüksekliğine sahip " -"olmalıdır." +"Prime kulesi için, destek, nesne ile aynı katman yüksekliğine sahip olmalıdır." msgid "" "Organic support tree tip diameter must not be smaller than support material " @@ -9611,8 +9577,8 @@ msgid "" "Organic support branch diameter must not be smaller than 2x support material " "extrusion width." msgstr "" -"Organik destek dalı çapı, destek malzemesi ekstrüzyon genişliğinin 2 " -"katından daha küçük olamaz." +"Organik destek dalı çapı, destek malzemesi ekstrüzyon genişliğinin 2 katından " +"daha küçük olamaz." msgid "" "Organic support branch diameter must not be smaller than support tree tip " @@ -9629,34 +9595,32 @@ msgid "Layer height cannot exceed nozzle diameter" msgstr "Katman yüksekliği nozul çapını aşamaz" msgid "" -"Relative extruder addressing requires resetting the extruder position at " -"each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " +"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 "" -"Göreceli ekstruder adreslemesi, kayan nokta doğruluğunun kaybını önlemek " -"için her katmandaki ekstruder konumunun sıfırlanmasını gerektirir. " -"Layer_gcode'a \"G92 E0\" ekleyin." +"Göreceli ekstruder adreslemesi, kayan nokta doğruluğunun kaybını önlemek için " +"her katmandaki ekstruder konumunun sıfırlanmasını gerektirir. Layer_gcode'a " +"\"G92 E0\" ekleyin." msgid "" "\"G92 E0\" was found in before_layer_gcode, which is incompatible with " "absolute extruder addressing." msgstr "" -"Before_layer_gcode'da \"G92 E0\" bulundu ve bu, mutlak ekstruder " -"adreslemeyle uyumsuzdu." +"Before_layer_gcode'da \"G92 E0\" bulundu ve bu, mutlak ekstruder adreslemeyle " +"uyumsuzdu." msgid "" "\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " "extruder addressing." msgstr "" -"Layer_gcode'da mutlak ekstruder adreslemeyle uyumlu olmayan \"G92 E0\" " -"bulundu." +"Layer_gcode'da mutlak ekstruder adreslemeyle uyumlu olmayan \"G92 E0\" bulundu." #, c-format, boost-format msgid "Plate %d: %s does not support filament %s" msgstr "Plaka %d: %s, %s filamentini desteklemiyor" -msgid "" -"Setting the jerk speed too low could lead to artifacts on curved surfaces" +msgid "Setting the jerk speed too low could lead to artifacts on curved surfaces" msgstr "" "Sarsıntı hızının çok düşük ayarlanması kavisli yüzeylerde bozulmalara neden " "olabilir" @@ -9666,8 +9630,8 @@ msgid "" "machine_max_jerk_y).\n" "Orca will automatically cap the jerk speed to ensure it doesn't surpass the " "printer's capabilities.\n" -"You can adjust the maximum jerk setting in your printer's configuration to " -"get higher speeds." +"You can adjust the maximum jerk setting in your printer's configuration to get " +"higher speeds." msgstr "" "Sarsıntı ayarı yazıcının maksimum sarsıntısını aşıyor (machine_max_jerk_x/" "machine_max_jerk_y).\n" @@ -9681,8 +9645,8 @@ msgid "" "(machine_max_acceleration_extruding).\n" "Orca will automatically cap the acceleration speed to ensure it doesn't " "surpass the printer's capabilities.\n" -"You can adjust the machine_max_acceleration_extruding value in your " -"printer's configuration to get higher speeds." +"You can adjust the machine_max_acceleration_extruding value in your printer's " +"configuration to get higher speeds." msgstr "" "Hızlanma ayarı yazıcının maksimum hızlanmasını aşıyor " "(machine_max_acceleration_extruding).\n" @@ -9694,8 +9658,8 @@ msgstr "" msgid "" "The travel acceleration setting exceeds the printer's maximum travel " "acceleration (machine_max_acceleration_travel).\n" -"Orca will automatically cap the travel acceleration speed to ensure it " -"doesn't surpass the printer's capabilities.\n" +"Orca will automatically cap the travel acceleration speed to ensure it doesn't " +"surpass the printer's capabilities.\n" "You can adjust the machine_max_acceleration_travel value in your printer's " "configuration to get higher speeds." msgstr "" @@ -9710,8 +9674,8 @@ msgid "" "Filament shrinkage will not be used because filament shrinkage for the used " "filaments differs significantly." msgstr "" -"Filament büzülmesi kullanılmayacaktır çünkü kullanılan filamentlerin " -"filament büzülmesi önemli ölçüde farklılık göstermektedir." +"Filament büzülmesi kullanılmayacaktır çünkü kullanılan filamentlerin filament " +"büzülmesi önemli ölçüde farklılık göstermektedir." msgid "Generating skirt & brim" msgstr "Etek ve kenar oluşturma" @@ -9750,8 +9714,7 @@ msgid "Elephant foot compensation" msgstr "Fil ayağı telafi oranı" msgid "" -"Shrink the initial layer on build plate to compensate for elephant foot " -"effect" +"Shrink the initial layer on build plate to compensate for elephant foot effect" msgstr "" "Fil ayağı etkisini telafi etmek için baskı plakasındaki ilk katmanı küçültün" @@ -9775,8 +9738,8 @@ msgid "" "Slicing height for each layer. Smaller layer height means more accurate and " "more printing time" msgstr "" -"Her katman için dilimleme yüksekliği. Daha küçük katman yüksekliği, daha " -"doğru ve daha fazla baskı süresi anlamına gelir" +"Her katman için dilimleme yüksekliği. Daha küçük katman yüksekliği, daha doğru " +"ve daha fazla baskı süresi anlamına gelir" msgid "Printable height" msgstr "Yazdırılabilir yükseklik" @@ -9800,8 +9763,8 @@ msgstr "3. taraf yazdırma ana bilgisayarını kullanın" msgid "Allow controlling BambuLab's printer through 3rd party print hosts" msgstr "" -"BambuLab yazıcısının 3. taraf yazdırma ana bilgisayarları aracılığıyla " -"kontrol edilmesine izin ver" +"BambuLab yazıcısının 3. taraf yazdırma ana bilgisayarları aracılığıyla kontrol " +"edilmesine izin ver" msgid "Hostname, IP or URL" msgstr "Ana bilgisayar adı, IP veya URL" @@ -9810,15 +9773,15 @@ msgid "" "Orca Slicer 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/" +"user name and password into the URL in the following format: https://username:" +"password@your-octopi-address/" msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " -"Bu alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini " -"veya URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu " -"HAProxy'nin arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve " -"parolanın aşağıdaki biçimdeki URL'ye girilmesiyle erişilebilir: https://" -"username:password@your-octopi-address/" +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini veya " +"URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu HAProxy'nin " +"arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve parolanın aşağıdaki " +"biçimdeki URL'ye girilmesiyle erişilebilir: https://username:password@your-" +"octopi-address/" msgid "Device UI" msgstr "Cihaz kullanıcı arayüzü" @@ -9826,8 +9789,7 @@ msgstr "Cihaz kullanıcı arayüzü" msgid "" "Specify the URL of your device user interface if it's not same as print_host" msgstr "" -"Print_Host ile aynı değilse cihazınızın kullanıcı arayüzünün URL'sini " -"belirtin" +"Print_Host ile aynı değilse cihazınızın kullanıcı arayüzünün URL'sini belirtin" msgid "API Key / Password" msgstr "API Anahtarı / Şifre" @@ -9836,9 +9798,8 @@ msgid "" "Orca Slicer can upload G-code files to a printer host. This field should " "contain the API Key or the password required for authentication." msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " -"Bu alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi " -"içermelidir." +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi içermelidir." msgid "Name of the printer" msgstr "Yazıcı adı" @@ -9848,12 +9809,11 @@ msgstr "HTTPS CA Dosyası" 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." +"in crt/pem format. If left blank, the default OS CA certificate repository is " +"used." msgstr "" -"HTTPS OctoPrint bağlantıları için crt/pem formatında özel CA sertifika " -"dosyası belirtilebilir. Boş bırakılırsa varsayılan OS CA sertifika deposu " -"kullanılır." +"HTTPS OctoPrint bağlantıları için crt/pem formatında özel CA sertifika dosyası " +"belirtilebilir. Boş bırakılırsa varsayılan OS CA sertifika deposu kullanılır." msgid "User" msgstr "Kullanıcı" @@ -9870,8 +9830,8 @@ msgid "" "certificates if connection fails." msgstr "" "Eksik veya çevrimdışı dağıtım noktaları olması durumunda HTTPS sertifikası " -"iptal kontrollerini göz ardı edin. Bağlantı başarısız olursa, kendinden " -"imzalı sertifikalar için bu seçeneğin etkinleştirilmesi istenebilir." +"iptal kontrollerini göz ardı edin. Bağlantı başarısız olursa, kendinden imzalı " +"sertifikalar için bu seçeneğin etkinleştirilmesi istenebilir." msgid "Names of presets related to the physical printer" msgstr "Fiziksel yazıcıyla ilgili ön ayarların adları" @@ -9895,15 +9855,15 @@ msgid "Avoid crossing wall - Max detour length" msgstr "Duvarı geçmekten kaçının - maksimum servis yolu uzunluğu" 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" +"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 "" -"Duvarı geçmekten kaçınmak için maksimum sapma mesafesi. Yoldan sapma " -"mesafesi bu değerden büyükse yoldan sapmayın. Yol uzunluğu, mutlak bir değer " -"olarak veya doğrudan seyahat yolunun yüzdesi (örneğin %50) olarak " -"belirtilebilir. Devre dışı bırakmak için sıfır" +"Duvarı geçmekten kaçınmak için maksimum sapma mesafesi. Yoldan sapma mesafesi " +"bu değerden büyükse yoldan sapmayın. Yol uzunluğu, mutlak bir değer olarak " +"veya doğrudan seyahat yolunun yüzdesi (örneğin %50) olarak belirtilebilir. " +"Devre dışı bırakmak için sıfır" msgid "mm or %" msgstr "mm veya %" @@ -9912,39 +9872,39 @@ msgid "Other layers" msgstr "Diğer katmanlar" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Cool Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the Cool Plate" msgstr "" -"İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin " -"Cool Plate üzerine yazdırmayı desteklemediği anlamına gelir" +"İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin Cool " +"Plate üzerine yazdırmayı desteklemediği anlamına gelir" 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 Textured Cool Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the Textured Cool Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 Değeri, filamentin " "Dokulu Soğuk Plaka üzerine yazdırmayı desteklemediği anlamına gelir." msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Engineering Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the Engineering Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. Değer 0, filamentin " "Mühendislik Plakasına yazdırmayı desteklemediği anlamına gelir" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the High Temp Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin " "Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına gelir" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Textured PEI Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the Textured PEI Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 Değeri, filamentin " "Dokulu PEI Plaka üzerine yazdırmayı desteklemediği anlamına gelir" @@ -9973,8 +9933,8 @@ msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Textured Cool Plate" msgstr "" -"İlk katmanın yatak sıcaklığı. 0 Değeri, filamentin Dokulu Soğuk Plaka " -"üzerine yazdırmayı desteklemediği anlamına gelir." +"İlk katmanın yatak sıcaklığı. 0 Değeri, filamentin Dokulu Soğuk Plaka üzerine " +"yazdırmayı desteklemediği anlamına gelir." msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " @@ -10001,16 +9961,16 @@ msgid "Bed types supported by the printer" msgstr "Yazıcının desteklediği yatak türleri" msgid "Smooth Cool Plate" -msgstr "Pürüzsüz Soğuk Plaka" +msgstr "Smooth Cool Plate" msgid "Engineering Plate" -msgstr "Mühendislik Plakası" +msgstr "Engineering Plate" msgid "Smooth High Temp Plate" -msgstr "Pürüzsüz Yüksek Sıcaklık Plaka" +msgstr "Smooth High Temp Plate" msgid "Textured Cool Plate" -msgstr "Dokulu Soğuk Plaka" +msgstr "Textured Cool Plate" msgid "First layer print sequence" msgstr "İlk katman yazdırma sırası" @@ -10045,57 +10005,55 @@ msgstr "Alt katman kalınlığı" 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 determined by bottom " +"having too thin shell when layer height is small. 0 means that this setting is " +"disabled and thickness of bottom shell is absolutely determined by bottom " "shell layers" msgstr "" -"Alt kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince " -"ise dilimleme sırasında alt katı katmanların sayısı arttırılır. Bu, katman " -"yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu " -"ayarın devre dışı olduğu ve alt kabuğun kalınlığının mutlaka alt kabuk " -"katmanları tarafından belirlendiği anlamına gelir" +"Alt kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince ise " +"dilimleme sırasında alt katı katmanların sayısı arttırılır. Bu, katman " +"yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu ayarın " +"devre dışı olduğu ve alt kabuğun kalınlığının mutlaka alt kabuk katmanları " +"tarafından belirlendiği anlamına gelir" msgid "Apply gap fill" msgstr "Boşluk doldurmayı uygula" msgid "" -"Enables gap fill for the selected solid surfaces. The minimum gap length " -"that will be filled can be controlled from the filter out tiny gaps option " -"below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length that " +"will be filled can be controlled from the filter out tiny gaps option below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " -"for maximum strength\n" -"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only, balancing print speed, reducing potential over extrusion in the solid " -"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces for " +"maximum strength\n" +"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces only, " +"balancing print speed, reducing potential over extrusion in the solid infill " +"and making sure the top and bottom surfaces have no pin hole gaps\n" "3. Nowhere: Disables gap fill for all solid infill areas. \n" "\n" "Note that if using the classic perimeter generator, gap fill may also be " "generated between perimeters, if a full width line cannot fit between them. " "That perimeter gap fill is not controlled by this setting. \n" "\n" -"If you would like all gap fill, including the classic perimeter generated " -"one, removed, set the filter out tiny gaps value to a large number, like " -"999999. \n" +"If you would like all gap fill, including the classic perimeter generated one, " +"removed, set the filter out tiny gaps value to a large number, like 999999. \n" "\n" -"However this is not advised, as gap fill between perimeters is contributing " -"to the model's strength. For models where excessive gap fill is generated " -"between perimeters, a better option would be to switch to the arachne wall " -"generator and use this option to control whether the cosmetic top and bottom " -"surface gap fill is generated" +"However this is not advised, as gap fill between perimeters is contributing to " +"the model's strength. For models where excessive gap fill is generated between " +"perimeters, a better option would be to switch to the arachne wall generator " +"and use this option to control whether the cosmetic top and bottom surface gap " +"fill is generated" msgstr "" "Seçilen katı yüzeyler için boşluk doldurmayı etkinleştirir. Doldurulacak " "minimum boşluk uzunluğu aşağıdaki küçük boşlukları filtrele seçeneğinden " "kontrol edilebilir.\n" "\n" "Seçenekler:\n" -"1. Her Yerde: Maksimum dayanıklılık için üst, alt ve iç katı yüzeylere " -"boşluk dolgusu uygular\n" +"1. Her Yerde: Maksimum dayanıklılık için üst, alt ve iç katı yüzeylere boşluk " +"dolgusu uygular\n" "2. Üst ve Alt yüzeyler: Boşluk dolgusunu yalnızca üst ve alt yüzeylere " "uygulayarak baskı hızını dengeler, katı dolgudaki aşırı ekstrüzyon " -"potansiyelini azaltır ve üst ve alt yüzeylerde iğne deliği boşluğu " -"kalmamasını sağlar\n" +"potansiyelini azaltır ve üst ve alt yüzeylerde iğne deliği boşluğu kalmamasını " +"sağlar\n" "3. Hiçbir Yer: Tüm katı dolgu alanları için boşluk doldurmayı devre dışı " "bırakır. \n" "\n" @@ -10104,8 +10062,8 @@ msgstr "" "unutmayın. Bu çevre boşluğu dolgusu bu ayarla kontrol edilmez. \n" "\n" "Oluşturulan klasik çevre de dahil olmak üzere tüm boşluk doldurmanın " -"kaldırılmasını istiyorsanız, filtreyi küçük boşluklar dışında değerini " -"999999 gibi büyük bir sayıya ayarlayın. \n" +"kaldırılmasını istiyorsanız, filtreyi küçük boşluklar dışında değerini 999999 " +"gibi büyük bir sayıya ayarlayın. \n" "\n" "Ancak çevreler arasındaki boşluğun doldurulması modelin gücüne katkıda " "bulunduğundan bu önerilmez. Çevreler arasında aşırı boşluk dolgusunun " @@ -10123,7 +10081,7 @@ msgid "Nowhere" msgstr "Hiçbir yerde" msgid "Force cooling for overhangs and bridges" -msgstr "" +msgstr "Çıkıntılar ve köprüler için soğutma gücü" msgid "" "Enable this option to allow adjustment of the part cooling fan speed for " @@ -10131,36 +10089,51 @@ msgid "" "speed specifically for these features can improve overall print quality and " "reduce warping." msgstr "" +"Özellikle çıkıntılar, iç ve dış köprüler için parça soğutma fanı hızının " +"ayarlanmasına izin vermek için bu seçeneği etkinleştirin. Fan hızını bu " +"özellikler için özel ayarlamak, genel baskı kalitesini artırabilir ve " +"eğrilmeyi azaltabilir." msgid "Overhangs and external bridges fan speed" -msgstr "" +msgstr "Çıkıntılar ve dış köprüler fan hızı" msgid "" "Use this part cooling fan speed when printing bridges or overhang walls with " "an overhang threshold that exceeds the value set in the 'Overhangs cooling " -"threshold' parameter above. Increasing the cooling specifically for " -"overhangs and bridges can improve the overall print quality of these " -"features.\n" +"threshold' parameter above. Increasing the cooling specifically for overhangs " +"and bridges can improve the overall print quality of these features.\n" "\n" "Please note, this fan speed is clamped on the lower end by the minimum fan " "speed threshold set above. It is also adjusted upwards up to the maximum fan " "speed threshold when the minimum layer time threshold is not met." msgstr "" +"Yukarıdaki ‘Çıkıntılar soğutma eşiği’ parametresinde ayarlanan değeri aşan bir " +"çıkıntı eşiğine sahip köprüleri veya çıkıntı duvarlarını yazdırırken bu parça " +"soğutma fanı hızını kullanın. Özellikle çıkıntılar ve köprüler için soğutmanın " +"artırılması, bu özelliklerin genel baskı kalitesini artırabilir.\n" +"\n" +"Lütfen bu fan hızının yukarıda ayarlanan minimum fan hızı eşiği tarafından alt " +"uçta sıkıştırıldığını unutmayın. Ayrıca minimum katman süresi eşiği " +"karşılanmadığında maksimum fan hızı eşiğine kadar yukarı doğru ayarlanır." msgid "Overhang cooling activation threshold" -msgstr "" +msgstr "Çıkıntı soğutma etkinleştirme eşiği" -#, c-format, boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " -"percentage, indicating the portion of each line's width that is unsupported " -"by the layer beneath it. Setting this value to 0% forces the cooling fan to " -"run for all outer walls, regardless of the overhang degree." +"percentage, indicating the portion of each line's width that is unsupported by " +"the layer beneath it. Setting this value to 0% forces the cooling fan to run " +"for all outer walls, regardless of the overhang degree." msgstr "" +"Çıkıntı bu belirtilen eşiği aştığında, soğutma fanını aşağıda ayarlanan " +"Çıkıntı Fan Hızında çalışmaya zorlayın. Bu eşik yüzde olarak ifade edilir ve " +"her bir çizginin genişliğinin altındaki katman tarafından desteklenmeyen " +"kısmını gösterir. Bu değerin %0 olarak ayarlanması, soğutma fanını çıkıntı " +"derecesine bakılmaksızın tüm dış duvarlar için çalışmaya zorlar." msgid "External bridge infill direction" -msgstr "" +msgstr "Dış köprü dolgu yönü" msgid "" "Bridging angle override. If left to zero, the bridging angle will be " @@ -10172,19 +10145,24 @@ msgstr "" "kullanılacaktır. Sıfır açı için 180°'yi kullanın." msgid "Internal bridge infill direction" -msgstr "" +msgstr "İç köprü dolgu yönü" msgid "" -"Internal bridging angle override. If left to zero, the bridging angle will " -"be calculated automatically. Otherwise the provided angle will be used for " +"Internal bridging angle override. If left to zero, the bridging angle will be " +"calculated automatically. Otherwise the provided angle will be used for " "internal bridges. Use 180°for zero angle.\n" "\n" "It is recommended to leave it at 0 unless there is a specific model need not " "to." msgstr "" +"İç köprüleme açısı geçersiz kılma. Sıfır olarak bırakılırsa, köprüleme açısı " +"otomatik olarak hesaplanacaktır. Aksi takdirde sağlanan açı iç köprüler için " +"kullanılacaktır. Sıfır açı için 180° kullanın.\n" +"\n" +"Belirli bir model ihtiyacı olmadığı sürece 0’da bırakılması önerilir." msgid "External bridge density" -msgstr "" +msgstr "Dış köprü yoğunluğu" msgid "" "Controls the density (spacing) of external bridge lines. 100% means solid " @@ -10194,9 +10172,15 @@ msgid "" "space for air to circulate around the extruded bridge, improving its cooling " "speed." msgstr "" +"Dış köprü çizgilerinin yoğunluğunu (aralığını) kontrol eder. 100 katı köprü " +"anlamına gelir. Varsayılan değer %100’dür.\n" +"\n" +"Daha düşük yoğunluklu dış köprüler güvenilirliği artırmaya yardımcı olabilir, " +"çünkü havanın ekstrüde köprünün etrafında dolaşması için daha fazla alan " +"vardır ve soğutma hızını artırır." msgid "Internal bridge density" -msgstr "" +msgstr "İç köprü yoğunluğu" msgid "" "Controls the density (spacing) of internal bridge lines. 100% means solid " @@ -10210,13 +10194,24 @@ msgid "" "bridge over infill option, further improving internal bridging structure " "before solid infill is extruded." msgstr "" +"İç köprü çizgilerinin yoğunluğunu (aralığını) kontrol eder. 100 katı köprü " +"anlamına gelir. Varsayılan değer %100’dür.\n" +"\n" +" Daha düşük yoğunluklu iç köprüler, üst yüzeydeki yastıklanmayı azaltmaya " +"yardımcı olabilir ve ekstrüde köprünün etrafında havanın dolaşması için daha " +"fazla alan olduğundan iç köprü güvenilirliğini artırarak soğutma hızını " +"artırır. \n" +"\n" +"Bu seçenek, dolgu üzerine ikinci iç köprü seçeneği ile birleştirildiğinde " +"özellikle iyi çalışır ve katı dolgu ekstrüde edilmeden önce iç köprüleme " +"yapısını daha da iyileştirir." msgid "Bridge flow ratio" msgstr "Köprülerde akış oranı" msgid "" -"Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag. \n" +"Decrease this value slightly(for example 0.9) to reduce the amount of material " +"for bridge, to improve sag. \n" "\n" "The actual bridge flow used is calculated by multiplying this value with the " "filament flow ratio, and if set, the object's flow ratio." @@ -10232,12 +10227,12 @@ msgstr "İç köprü akış oranı" 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.\n" +"first layer over sparse infill. Decrease this value slightly (for example 0.9) " +"to improve surface quality over sparse infill.\n" "\n" "The actual internal bridge flow used is calculated by multiplying this value " -"with the bridge flow ratio, the filament flow ratio, and if set, the " -"object's flow ratio." +"with the bridge flow ratio, the filament flow ratio, and if set, the object's " +"flow ratio." msgstr "" "Bu değer iç köprü katmanının kalınlığını belirler. Bu, seyrek dolgunun " "üzerindeki ilk katmandır. Seyrek dolguya göre yüzey kalitesini iyileştirmek " @@ -10253,8 +10248,8 @@ msgid "" "This factor affects the amount of material for top solid infill. You can " "decrease it slightly to have smooth surface finish. \n" "\n" -"The actual top surface flow used is calculated by multiplying this value " -"with the filament flow ratio, and if set, the object's flow ratio." +"The actual top surface flow used is calculated by multiplying this value with " +"the filament flow ratio, and if set, the object's flow ratio." msgstr "" "Bu faktör üst katı dolgu için malzeme miktarını etkiler. Pürüzsüz bir yüzey " "elde etmek için bunu biraz azaltabilirsiniz. \n" @@ -10304,17 +10299,17 @@ 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" +"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 if you have some thin features " "on the next layer, like letters. Set this setting to 0 to remove these " "artifacts." msgstr "" -"Eğer bir üst yüzey basılacaksa ve kısmen başka bir katman tarafından " -"kaplıysa layer genişliği bu değerin altında olan bir üst katman olarak " +"Eğer bir üst yüzey basılacaksa ve kısmen başka bir katman tarafından kaplıysa " +"layer genişliği bu değerin altında olan bir üst katman olarak " "değerlendirilmeyecek. Yalnızca çevrelerle kaplanması gereken yüzeyde 'bir " -"çevre üstte' tetiklemesine izin vermemek yararlı olabilir. Bu değer mm veya " -"a % çevre ekstrüzyon genişliğinin bir yüzdesi olabilir.\n" +"çevre üstte' tetiklemesine izin vermemek yararlı olabilir. Bu değer mm veya a " +"% çevre ekstrüzyon genişliğinin bir yüzdesi olabilir.\n" "Uyarı: Etkinleştirilirse bir sonraki katmanda harfler gibi bazı ince " "özelliklerin olması durumunda yapay yapılar oluşturulabilir. Bu yapıları " "kaldırmak için bu ayarı 0 olarak ayarlayın." @@ -10333,11 +10328,11 @@ msgid "Extra perimeters on overhangs" msgstr "Çıkıntılarda ekstra çevre (perimeter)" msgid "" -"Create additional perimeter paths over steep overhangs and areas where " -"bridges cannot be anchored. " +"Create additional perimeter paths over steep overhangs and areas where bridges " +"cannot be anchored. " msgstr "" -"Dik çıkıntılar ve köprülerin sabitlenemediği alanlar üzerinde ek çevre " -"yolları (perimeter) oluşturun. " +"Dik çıkıntılar ve köprülerin sabitlenemediği alanlar üzerinde ek çevre yolları " +"(perimeter) oluşturun. " msgid "Reverse on even" msgstr "Çiftleri ters çevirin" @@ -10346,9 +10341,9 @@ msgid "Overhang reversal" msgstr "Çıkıntıyı tersine çevir" msgid "" -"Extrude perimeters that have a part over an overhang in the reverse " -"direction on even layers. This alternating pattern can drastically improve " -"steep overhangs.\n" +"Extrude perimeters that have a part over an overhang in the reverse direction " +"on even 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." @@ -10367,11 +10362,10 @@ 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" +"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 recommended to set the " "Reverse Threshold to 0 so that all internal walls print in alternating " @@ -10386,16 +10380,16 @@ msgstr "" "Ayrıca destekler üzerindeki yüzen bölgelerdeki bükülmenin azaltılmasına da " "yardımcı olabilir.\n" "\n" -"Bu ayarın en etkili olması için, Ters Eşiğin 0’a ayarlanması önerilir; " -"böylece tüm iç duvarlar, çıkıntı derecelerine bakılmaksızın eşit katmanlara " -"alternatif yönlerde yazdırılır." +"Bu ayarın en etkili olması için, Ters Eşiğin 0’a ayarlanması önerilir; böylece " +"tüm iç duvarlar, çıkıntı derecelerine bakılmaksızın eşit katmanlara alternatif " +"yönlerde yazdırılır." msgid "Bridge counterbore holes" msgstr "Köprü havşa delikleri" msgid "" -"This option creates bridges for counterbore holes, allowing them to be " -"printed without support. Available modes include:\n" +"This option creates bridges for counterbore holes, allowing them to be printed " +"without support. Available modes include:\n" "1. None: No bridge is created.\n" "2. Partially Bridged: Only a part of the unsupported area will be bridged.\n" "3. Sacrificial Layer: A full sacrificial bridge layer is created." @@ -10403,8 +10397,7 @@ msgstr "" "Bu seçenek, havşa delikleri için köprüler oluşturarak bunların desteksiz " "yazdırılmasına olanak tanır. Mevcut modlar şunları içerir:\n" "1. Yok: Köprü oluşturulmaz.\n" -"2. Kısmen Köprülendi: Desteklenmeyen alanın yalnızca bir kısmı " -"köprülenecek.\n" +"2. Kısmen Köprülendi: Desteklenmeyen alanın yalnızca bir kısmı köprülenecek.\n" "3. Feda Katman: Tam bir feda köprü katmanı oluşturulur." msgid "Partially bridged" @@ -10421,17 +10414,17 @@ msgstr "Çıkıntıyı tersine çevirme eşiği" #, no-c-format, no-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" +"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 even layers regardless.\n" -"When Detect overhang wall is not enabled, this option is ignored and " -"reversal happens on every even layers regardless." +"When Detect overhang wall is not enabled, this option is ignored and reversal " +"happens on every even layers regardless." msgstr "" "Ters çevirmenin faydalı sayılması için çıkıntının mm sayısı olması gerekir. " "Çevre genişliğinin %’si olabilir.\n" "0 değeri ne olursa olsun her çift katmanda ters çevirmeyi mümkün kılar.\n" -"Çıkıntı duvarını algıla etkinleştirilmediğinde, bu seçenek göz ardı edilir " -"ve geri dönüş, her çift katmanda gerçekleşir." +"Çıkıntı duvarını algıla etkinleştirilmediğinde, bu seçenek göz ardı edilir ve " +"geri dönüş, her çift katmanda gerçekleşir." msgid "Classic mode" msgstr "Klasik mod" @@ -10453,16 +10446,16 @@ msgstr "Kıvrılmış çevre çizgilerinde yavaşlat" #, fuzzy, no-c-format, no-boost-format msgid "" "Enable this option to slow down printing in areas where perimeters may have " -"curled upwards.For example, additional slowdown will be applied when " -"printing overhangs on sharp corners like the front of the Benchy hull, " -"reducing curling which compounds over multiple layers.\n" +"curled upwards.For example, additional slowdown will be applied when printing " +"overhangs on sharp corners like the front of the Benchy hull, reducing curling " +"which compounds over multiple layers.\n" "\n" " It is generally recommended to have this option switched on unless your " "printer cooling is powerful enough or the print speed slow enough that " -"perimeter curling does not happen. If printing with a high external " -"perimeter speed, this parameter may introduce slight artifacts when slowing " -"down due to the large variance in print speeds. If you notice artifacts, " -"ensure your pressure advance is tuned correctly.\n" +"perimeter curling does not happen. If printing with a high external perimeter " +"speed, this parameter may introduce slight artifacts when slowing down due to " +"the large variance in print speeds. If you notice artifacts, ensure your " +"pressure advance is tuned correctly.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like " "overhangs, meaning the overhang speed is applied even if the overhanging " @@ -10479,14 +10472,14 @@ msgstr "" "kıvrılmasını önleyecek kadar yavaş olmadığı sürece, genellikle bu seçeneğin " "açık olması önerilir. Yüksek harici çevre hızıyla yazdırılıyorsa, bu " "parametre, yazdırma hızlarındaki büyük farklılıklar nedeniyle yavaşlama " -"sırasında hafif bozulmalara neden olabilir. Artefaktlar fark ederseniz " -"basınç ilerlemenizin doğru şekilde ayarlandığından emin olun.\n" +"sırasında hafif bozulmalara neden olabilir. Artefaktlar fark ederseniz basınç " +"ilerlemenizin doğru şekilde ayarlandığından emin olun.\n" "\n" "Not: Bu seçenek etkinleştirildiğinde, çıkıntı çevreleri çıkıntılar gibi ele " -"alınır; bu, çıkıntının çevresi bir köprünün parçası olsa bile çıkıntı " -"hızının uygulandığı anlamına gelir. Örneğin, çevreler 100% çıkıntılı " -"olduğunda ve onları alttan destekleyen bir duvar olmadığında 100% çıkıntı " -"hızı uygulanacaktır." +"alınır; bu, çıkıntının çevresi bir köprünün parçası olsa bile çıkıntı hızının " +"uygulandığı anlamına gelir. Örneğin, çevreler 100% çıkıntılı olduğunda ve " +"onları alttan destekleyen bir duvar olmadığında 100% çıkıntı hızı " +"uygulanacaktır." msgid "mm/s or %" msgstr "mm/s veya %" @@ -10506,8 +10499,8 @@ msgstr "" "\n" "Ayrıca, kıvrılmış çevreler için yavaşlama devre dışı bırakılırsa veya Klasik " "çıkıntı modu etkinleştirilirse, ister bir köprünün ister bir çıkıntının " -"parçası olsun, %13’ten daha az desteklenen çıkıntılı duvarların yazdırma " -"hızı olacaktır." +"parçası olsun, %13’ten daha az desteklenen çıkıntılı duvarların yazdırma hızı " +"olacaktır." msgid "mm/s" msgstr "mm/s" @@ -10516,8 +10509,8 @@ msgid "Internal" msgstr "Dahili" msgid "" -"Speed of internal bridges. If the value is expressed as a percentage, it " -"will be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it will " +"be calculated based on the bridge_speed. Default value is 150%." msgstr "" "İç köprülerin hızı. Değer yüzde olarak ifade edilirse köprü hızına göre " "hesaplanacaktır. Varsayılan değer %150’dir." @@ -10532,15 +10525,15 @@ msgid "Brim type" msgstr "Kenar tipi" msgid "" -"This controls the generation of the brim at outer and/or inner side of " -"models. Auto means the brim width is analyzed and calculated automatically." +"This controls the generation of the brim at outer and/or inner side of models. " +"Auto means the brim width is analyzed and calculated automatically." msgstr "" "Bu, modellerin dış ve/veya iç kısmındaki Kenar oluşumunu kontrol eder. " "Otomatik, kenar genişliğinin otomatik olarak analiz edilip hesaplandığı " "anlamına gelir." msgid "Painted" -msgstr "" +msgstr "Boyalı" msgid "Brim-object gap" msgstr "Kenar-nesne boşluğu" @@ -10596,6 +10589,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" +"Etkin bir yazıcı profilinin yapılandırma değerlerini kullanan bir boole " +"ifadesi. Bu ifade doğru olarak değerlendirilirse bu profilin etkin yazıcı " +"profiliyle uyumlu olduğu kabul edilir." msgid "Compatible process profiles" msgstr "Uyumlu süreç profilleri" @@ -10608,6 +10604,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" +"Etkin yazdırma profilinin yapılandırma değerlerini kullanan bir boole ifadesi. " +"Bu ifade doğru olarak değerlendirilirse bu profilin etkin yazdırma profiliyle " +"uyumlu olduğu kabul edilir." msgid "Print sequence, layer by layer or object by object" msgstr "Yazdırma sırası, katman katman veya nesne nesne" @@ -10633,13 +10632,13 @@ msgstr "Daha iyi katman soğutması için baskıyı yavaşlat" 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" +"that layer can be cooled for longer time. This can improve the cooling quality " +"for needle and small details" msgstr "" -"Son katman süresinin \"Maksimum fan hızı eşiği\"ndeki katman süresi " -"eşiğinden kısa olmamasını sağlamak amacıyla yazdırma hızını yavaşlatmak için " -"bu seçeneği etkinleştirin, böylece katman daha uzun süre soğutulabilir. Bu, " -"iğne ve küçük detaylar için soğutma kalitesini artırabilir" +"Son katman süresinin \"Maksimum fan hızı eşiği\"ndeki katman süresi eşiğinden " +"kısa olmamasını sağlamak amacıyla yazdırma hızını yavaşlatmak için bu seçeneği " +"etkinleştirin, böylece katman daha uzun süre soğutulabilir. Bu, iğne ve küçük " +"detaylar için soğutma kalitesini artırabilir" msgid "Normal printing" msgstr "Normal baskı" @@ -10648,8 +10647,7 @@ msgid "" "The default acceleration of both normal printing and travel except initial " "layer" msgstr "" -"İlk katman dışında hem normal yazdırmanın hem de ilerlemenin varsayılan " -"ivmesi" +"İlk katman dışında hem normal yazdırmanın hem de ilerlemenin varsayılan ivmesi" msgid "mm/s²" msgstr "mm/s²" @@ -10693,8 +10691,8 @@ msgid "" "Close all cooling fan for the first certain layers. Cooling fan of the first " "layer used to be closed to get better build plate adhesion" msgstr "" -"İlk belirli katmanlar için tüm soğutma fanını kapatın. Daha iyi baskı " -"plakası yapışması sağlamak için ilk katmanın soğutma fanı kapatılırdı" +"İlk belirli katmanlar için tüm soğutma fanını kapatın. Daha iyi baskı plakası " +"yapışması sağlamak için ilk katmanın soğutma fanı kapatılırdı" msgid "Don't support bridges" msgstr "Köprülerde destek olmasın" @@ -10703,16 +10701,16 @@ 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 "" -"Desteği çok büyük yapan tüm köprü alanını desteklemeyin. Bridge genellikle " -"çok uzun olmasa da destek olmadan doğrudan yazdırılabilir" +"Desteği çok büyük yapan tüm köprü alanını desteklemeyin. Bridge genellikle çok " +"uzun olmasa da destek olmadan doğrudan yazdırılabilir" msgid "Thick external bridges" -msgstr "" +msgstr "Kalın dış köprüler" 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." +"look worse. If disabled, bridges look better but are reliable just for shorter " +"bridged distances." msgstr "" "Etkinleştirilirse köprüler daha güvenilir olur, daha uzun mesafeler arasında " "köprü kurabilir ancak daha kötü görünebilir. Devre dışı bırakıldığında " @@ -10724,64 +10722,91 @@ msgstr "Kalın iç köprüler" 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." +"have this feature turned on. However, consider turning it off if you are using " +"large nozzles." msgstr "" "Etkinleştirilirse kalın iç köprüler kullanılacaktır. Genellikle bu özelliğin " "açık olması önerilir. Ancak büyük nozul uçları kullanıyorsanız kapatmayı " "düşünün." msgid "Extra bridge layers (beta)" -msgstr "" +msgstr "Ekstra köprü katmanları (beta)" msgid "" -"This option enables the generation of an extra bridge layer over internal " -"and/or external bridges.\n" +"This option enables the generation of an extra bridge layer over internal and/" +"or external bridges.\n" "\n" "Extra bridge layers help improve bridge appearance and reliability, as the " -"solid infill is better supported. This is especially useful in fast " -"printers, where the bridge and solid infill speeds vary greatly. The extra " -"bridge layer results in reduced pillowing on top surfaces, as well as " -"reduced separation of the external bridge layer from its surrounding " -"perimeters.\n" +"solid infill is better supported. This is especially useful in fast printers, " +"where the bridge and solid infill speeds vary greatly. The extra bridge layer " +"results in reduced pillowing on top surfaces, as well as reduced separation of " +"the external bridge layer from its surrounding perimeters.\n" "\n" "It is generally recommended to set this to at least 'External bridge only', " "unless specific issues with the sliced model are found.\n" "\n" "Options:\n" -"1. Disabled - does not generate second bridge layers. This is the default " -"and is set for compatibility purposes.\n" +"1. Disabled - does not generate second bridge layers. This is the default and " +"is set for compatibility purposes.\n" "2. External bridge only - generates second bridge layers for external-facing " -"bridges only. Please note that small bridges that are shorter or narrower " -"than the set number of perimeters will be skipped as they would not benefit " -"from a second bridge layer. If generated, the second bridge layer will be " -"extruded parallel to the first bridge layer to reinforce the bridge " -"strength.\n" -"3. Internal bridge only - generates second bridge layers for internal " -"bridges over sparse infill only. Please note that the internal bridges count " -"towards the top shell layer count of your model. The second internal bridge " -"layer will be extruded as close to perpendicular to the first as possible. " -"If multiple regions in the same island, with varying bridge angles are " -"present, the last region of that island will be selected as the angle " -"reference.\n" +"bridges only. Please note that small bridges that are shorter or narrower than " +"the set number of perimeters will be skipped as they would not benefit from a " +"second bridge layer. If generated, the second bridge layer will be extruded " +"parallel to the first bridge layer to reinforce the bridge strength.\n" +"3. Internal bridge only - generates second bridge layers for internal bridges " +"over sparse infill only. Please note that the internal bridges count towards " +"the top shell layer count of your model. The second internal bridge layer will " +"be extruded as close to perpendicular to the first as possible. If multiple " +"regions in the same island, with varying bridge angles are present, the last " +"region of that island will be selected as the angle reference.\n" "4. Apply to all - generates second bridge layers for both internal and " "external-facing bridges\n" msgstr "" +"Bu seçenek, iç ve/veya dış köprüler üzerinde ekstra bir köprü katmanının " +"oluşturulmasına olanak sağlar.\n" +"\n" +"Ekstra köprü katmanları, katı dolgunun daha iyi desteklenmesi nedeniyle köprü " +"görünümünün ve güvenilirliğinin iyileştirilmesine yardımcı olur. Bu, özellikle " +"köprü ve katı doldurma hızlarının büyük ölçüde değiştiği hızlı yazıcılarda " +"kullanışlıdır. Ekstra köprü katmanı, üst yüzeylerde yastıklamanın " +"azaltılmasının yanı sıra, dış köprü katmanının çevre çevrelerinden daha az " +"ayrılmasıyla sonuçlanır.\n" +"\n" +"Dilimlenmiş modelde belirli sorunlar bulunmadığı sürece, genellikle bunun en " +"azından ‘Yalnızca dış köprü’ olarak ayarlanması önerilir.\n" +"\n" +"Seçenekler:\n" +"1. Devre Dışı - ikinci köprü katmanlarını oluşturmaz. Bu varsayılan değerdir " +"ve uyumluluk amacıyla ayarlanmıştır.\n" +"2. Yalnızca dış köprü - yalnızca dışa bakan köprüler için ikinci köprü " +"katmanları oluşturur. Belirlenen çevre sayısından daha kısa veya daha dar olan " +"küçük köprülerin, ikinci bir köprü katmanından faydalanamayacakları için " +"atlanacağını lütfen unutmayın. Oluşturulursa ikinci köprü katmanı, köprü " +"mukavemetini güçlendirmek için birinci köprü katmanına paralel olarak " +"ekstrüzyona tabi tutulacaktır.\n" +"3. Yalnızca iç köprü - yalnızca seyrek dolgu üzerindeki iç köprüler için " +"ikinci köprü katmanları oluşturur. Lütfen iç köprülerin modelinizin üst kabuk " +"katmanı sayımına dahil edildiğini unutmayın. İkinci iç köprü katmanı, " +"birinciye mümkün olduğu kadar dik olacak şekilde ekstrüzyona tabi " +"tutulacaktır. Aynı adada farklı köprü açılarına sahip birden fazla bölge " +"mevcutsa açı referansı olarak o adanın son bölgesi seçilecektir.\n" +"4. Tümüne uygula - hem iç hem de dış köprüler için ikinci köprü katmanları " +"oluşturur\n" msgid "Disabled" msgstr "Devredışı" msgid "External bridge only" -msgstr "" +msgstr "Yalnızca dış köprü" msgid "Internal bridge only" -msgstr "" +msgstr "Yalnızca iç köprü" msgid "Apply to all" -msgstr "" +msgstr "Hepsine uygula" msgid "Filter out small internal bridges" -msgstr "" +msgstr "Küçük iç köprüleri filtreleyin" msgid "" "This option can help reduce pillowing on top surfaces in heavily slanted or " @@ -10797,9 +10822,9 @@ msgid "" "solid infill, causing pillowing.\n" "\n" "Enabling limited filtering or no filtering will print internal bridge layer " -"over slightly unsupported internal solid infill. The options below control " -"the sensitivity of the filtering, i.e. they control where internal bridges " -"are created.\n" +"over slightly unsupported internal solid infill. The options below control the " +"sensitivity of the filtering, i.e. they control where internal bridges are " +"created.\n" "\n" "1. Filter - enables this option. This is the default behavior and works well " "in most cases.\n" @@ -10812,6 +10837,31 @@ msgid "" "overhang. This option is useful for heavily slanted top surface models; " "however, in most cases, it creates too many unnecessary bridges." msgstr "" +"Bu seçenek, aşırı eğimli veya kavisli modellerde üst yüzeylerdeki yastıklamayı " +"azaltmaya yardımcı olabilir.\n" +"\n" +"Varsayılan olarak küçük iç köprüler filtrelenir ve iç katı dolgu doğrudan " +"seyrek dolgunun üzerine yazdırılır. Bu çoğu durumda işe yarar ve üstün yüzey " +"kalitesinden çok fazla ödün vermeden yazdırmayı hızlandırır. \n" +"\n" +"Bununla birlikte, çok eğimli veya kavisli modellerde, özellikle çok düşük " +"seyrek dolgu yoğunluğunun kullanıldığı durumlarda bu, desteklenmeyen katı " +"dolgunun kıvrılmasına ve yastıklanmaya neden olmasına neden olabilir.\n" +"\n" +"Sınırlı filtrelemenin etkinleştirilmesi veya hiç filtre uygulanmaması, dahili " +"köprü katmanını hafif desteksiz iç katı dolgu üzerine yazdıracaktır. Aşağıdaki " +"seçenekler filtrelemenin hassasiyetini kontrol eder, yani iç köprülerin nerede " +"oluşturulduğunu kontrol ederler.\n" +"\n" +"1. Filtrele - bu seçeneği etkinleştirir. Bu varsayılan davranıştır ve çoğu " +"durumda iyi çalışır.\n" +"\n" +"2. Sınırlı filtreleme - aşırı eğimli yüzeylerde iç köprüler oluştururken " +"gereksiz köprülerden kaçınır. Bu, çoğu zor modelde işe yarar.\n" +"\n" +"3. Filtreleme yok - her potansiyel dahili çıkıntıda iç köprüler oluşturur. Bu " +"seçenek aşırı eğimli üst yüzey modelleri için kullanışlıdır; ancak çoğu " +"durumda çok fazla gereksiz köprü oluşturur." msgid "Filter" msgstr "Filtreli" @@ -10938,8 +10988,8 @@ msgid "" "Speed of outer wall which is outermost and visible. It's used to be slower " "than inner wall speed to get better quality." msgstr "" -"En dışta görünen ve görünen dış duvarın hızı. Daha iyi kalite elde etmek " -"için iç duvar hızından daha yavaş olması kullanılır." +"En dışta görünen ve görünen dış duvarın hızı. Daha iyi kalite elde etmek için " +"iç duvar hızından daha yavaş olması kullanılır." msgid "Small perimeters" msgstr "Küçük çevre (perimeter)" @@ -10947,8 +10997,8 @@ msgstr "Küçük çevre (perimeter)" 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." +"example: 80%) it will be calculated on the outer wall speed setting above. Set " +"to zero for auto." msgstr "" "Bu ayrı ayar, yarıçapı <= küçük_çevre_eşiği olan çevrelerin (genellikle " "delikler) hızını etkileyecektir. Yüzde olarak ifade edilirse (örneğin: %80), " @@ -10968,8 +11018,8 @@ msgstr "Duvar baskı sırası" msgid "" "Print sequence of the internal (inner) and external (outer) walls. \n" "\n" -"Use Inner/Outer for best overhangs. This is because the overhanging walls " -"can adhere to a neighbouring perimeter while printing. However, this option " +"Use Inner/Outer for best overhangs. This is because the overhanging walls can " +"adhere to a neighbouring perimeter while printing. However, this option " "results in slightly reduced surface quality as the external perimeter is " "deformed by being squashed to the internal perimeter.\n" "\n" @@ -10979,13 +11029,12 @@ msgid "" "perimeter to print the external wall against. This option requires a minimum " "of 3 walls to be effective as it prints the internal walls from the 3rd " "perimeter onwards first, then the external perimeter and, finally, the first " -"internal perimeter. This option is recommended against the Outer/Inner " -"option in most cases. \n" +"internal perimeter. This option is recommended against the Outer/Inner option " +"in most cases. \n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy " "benefits of Inner/Outer/Inner option. However, the z seams will appear less " -"consistent as the first extrusion of a new layer starts on a visible " -"surface.\n" +"consistent as the first extrusion of a new layer starts on a visible surface.\n" "\n" " " msgstr "" @@ -11000,14 +11049,14 @@ msgstr "" "kalitesi ve boyutsal doğruluk için İç/Dış/İç seçeneğini kullanın. Ancak, dış " "duvarın üzerine baskı yapılacak bir iç çevre olmadığından sarkma performansı " "düşecektir. Bu seçenek, önce 3. çevreden itibaren iç duvarları, ardından dış " -"çevreyi ve son olarak da birinci iç çevreyi yazdırdığından etkili olması " -"için en az 3 duvar gerektirir. Bu seçenek çoğu durumda Dış/İç seçeneğine " -"karşı önerilir. \n" +"çevreyi ve son olarak da birinci iç çevreyi yazdırdığından etkili olması için " +"en az 3 duvar gerektirir. Bu seçenek çoğu durumda Dış/İç seçeneğine karşı " +"önerilir. \n" "\n" -"İç/Dış/İç seçeneğinin aynı dış duvar kalitesi ve boyutsal doğruluk " -"avantajları için Dış/İç seçeneğini kullanın. Bununla birlikte, yeni bir " -"katmanın ilk ekstrüzyonu görünür bir yüzey üzerinde başladığından z " -"dikişleri daha az tutarlı görünecektir.\n" +"İç/Dış/İç seçeneğinin aynı dış duvar kalitesi ve boyutsal doğruluk avantajları " +"için Dış/İç seçeneğini kullanın. Bununla birlikte, yeni bir katmanın ilk " +"ekstrüzyonu görünür bir yüzey üzerinde başladığından z dikişleri daha az " +"tutarlı görünecektir.\n" "\n" " " @@ -11029,18 +11078,17 @@ msgid "" "\n" "Printing infill first may help with extreme overhangs as the walls have the " "neighbouring infill to adhere to. However, the infill will slightly push out " -"the printed walls where it is attached to them, resulting in a worse " -"external surface finish. It can also cause the infill to shine through the " -"external surfaces of the part." +"the printed walls where it is attached to them, resulting in a worse external " +"surface finish. It can also cause the infill to shine through the external " +"surfaces of the part." msgstr "" "Duvar/dolgu sırası. Onay kutusu işaretlenmediğinde duvarlar önce yazdırılır, " "bu çoğu durumda en iyi şekilde çalışır.\n" "\n" "Dolgunun önce yazdırılması, aşırı sarkmalarda yardımcı olabilir, çünkü " -"duvarlar komşu dolgulara yapışır. Ancak, dolgu duvarlara bağlı olduğu " -"yerlerde onları biraz dışarı iterek daha kötü bir dış yüzey bitişine neden " -"olabilir. Ayrıca, dolgunun parçanın dış yüzeylerinden parlamasına da sebep " -"olabilir." +"duvarlar komşu dolgulara yapışır. Ancak, dolgu duvarlara bağlı olduğu yerlerde " +"onları biraz dışarı iterek daha kötü bir dış yüzey bitişine neden olabilir. " +"Ayrıca, dolgunun parçanın dış yüzeylerinden parlamasına da sebep olabilir." msgid "Wall loop direction" msgstr "Duvar döngüsü yönü" @@ -11049,18 +11097,18 @@ msgid "" "The direction which the wall loops are extruded when looking down from the " "top.\n" "\n" -"By default all walls are extruded in counter-clockwise, unless Reverse on " -"even is enabled. Set this to any option other than Auto will force the wall " +"By default all walls are extruded in counter-clockwise, unless Reverse on even " +"is enabled. Set this to any option other than Auto will force the wall " "direction regardless of the Reverse on even.\n" "\n" "This option will be disabled if spiral vase mode is enabled." msgstr "" "Yukarıdan aşağıya bakıldığında duvar döngülerinin ekstrüzyona uğradığı yön.\n" "\n" -"Çift yönlü ters çevirme seçeneği etkinleştirilmediği sürece, varsayılan " -"olarak tüm duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik " -"dışında herhangi bir seçeneğe ayarlayın, Ters çevirmeden bağımsız olarak " -"duvar yönünü eşit olarak zorlayacaktır.\n" +"Çift yönlü ters çevirme seçeneği etkinleştirilmediği sürece, varsayılan olarak " +"tüm duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik dışında " +"herhangi bir seçeneğe ayarlayın, Ters çevirmeden bağımsız olarak duvar yönünü " +"eşit olarak zorlayacaktır.\n" "\n" "Spiral vazo modu etkinse bu seçenek devre dışı bırakılacaktır." @@ -11087,8 +11135,8 @@ msgid "" "Distance of the nozzle tip to the lid. Used for collision avoidance in by-" "object printing." msgstr "" -"Nozul ucunun kapağa olan mesafesi. Nesneye göre yazdırmada çarpışmayı " -"önlemek için kullanılır." +"Nozul ucunun kapağa olan mesafesi. Nesneye göre yazdırmada çarpışmayı önlemek " +"için kullanılır." msgid "" "Clearance radius around extruder. Used for collision avoidance in by-object " @@ -11108,46 +11156,44 @@ msgstr "Minimum yatak ağı" msgid "" "This option sets the min point for the allowed bed mesh area. Due to the " -"probe's XY offset, most printers are unable to probe the entire bed. To " -"ensure the probe point does not go outside the bed area, the minimum and " -"maximum points of the bed mesh should be set appropriately. OrcaSlicer " -"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " -"exceed these min/max points. This information can usually be obtained from " -"your printer manufacturer. The default setting is (-99999, -99999), which " -"means there are no limits, thus allowing probing across the entire bed." +"probe's XY offset, most printers are unable to probe the entire bed. To ensure " +"the probe point does not go outside the bed area, the minimum and maximum " +"points of the bed mesh should be set appropriately. OrcaSlicer ensures that " +"adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed these min/max " +"points. This information can usually be obtained from your printer " +"manufacturer. The default setting is (-99999, -99999), which means there are " +"no limits, thus allowing probing across the entire bed." msgstr "" -"Bu seçenek, izin verilen yatak ağ alanı için minimum noktayı ayarlar. Prob " -"XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " -"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve " -"maksimum noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, " -"adaptive_bed_mesh_min/adaptive_bed_mesh_max değerlerinin bu min/maks " -"noktalarını aşmamasını sağlar. Bu bilgi genellikle yazıcınızın üreticisinden " -"edinilebilir. Varsayılan ayar (-99999, -99999) şeklindedir; bu, herhangi bir " -"sınırın olmadığı anlamına gelir, dolayısıyla yatağın tamamında problamaya " -"izin verilir." +"Bu seçenek, izin verilen yatak ağ alanı için minimum noktayı ayarlar. Prob XY " +"ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının yatak " +"alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve maksimum " +"noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, adaptive_bed_mesh_min/" +"adaptive_bed_mesh_max değerlerinin bu min/maks noktalarını aşmamasını sağlar. " +"Bu bilgi genellikle yazıcınızın üreticisinden edinilebilir. Varsayılan ayar " +"(-99999, -99999) şeklindedir; bu, herhangi bir sınırın olmadığı anlamına " +"gelir, dolayısıyla yatağın tamamında problamaya izin verilir." msgid "Bed mesh max" msgstr "Maksimum yatak ağı" msgid "" "This option sets the max point for the allowed bed mesh area. Due to the " -"probe's XY offset, most printers are unable to probe the entire bed. To " -"ensure the probe point does not go outside the bed area, the minimum and " -"maximum points of the bed mesh should be set appropriately. OrcaSlicer " -"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " -"exceed these min/max points. This information can usually be obtained from " -"your printer manufacturer. The default setting is (99999, 99999), which " -"means there are no limits, thus allowing probing across the entire bed." +"probe's XY offset, most printers are unable to probe the entire bed. To ensure " +"the probe point does not go outside the bed area, the minimum and maximum " +"points of the bed mesh should be set appropriately. OrcaSlicer ensures that " +"adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed these min/max " +"points. This information can usually be obtained from your printer " +"manufacturer. The default setting is (99999, 99999), which means there are no " +"limits, thus allowing probing across the entire bed." msgstr "" -"Bu seçenek, izin verilen yatak ağ alanı için maksimum noktayı ayarlar. " -"Probun XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob " -"noktasının yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum " -"ve maksimum noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, " -"adaptive_bed_mesh_min/adaptive_bed_mesh_max değerlerinin bu min/maks " -"noktalarını aşmamasını sağlar. Bu bilgi genellikle yazıcınızın üreticisinden " -"edinilebilir. Varsayılan ayar (99999, 99999) şeklindedir; bu, herhangi bir " -"sınırın olmadığı anlamına gelir, dolayısıyla yatağın tamamında problamaya " -"izin verilir." +"Bu seçenek, izin verilen yatak ağ alanı için maksimum noktayı ayarlar. Probun " +"XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " +"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve maksimum " +"noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, adaptive_bed_mesh_min/" +"adaptive_bed_mesh_max değerlerinin bu min/maks noktalarını aşmamasını sağlar. " +"Bu bilgi genellikle yazıcınızın üreticisinden edinilebilir. Varsayılan ayar " +"(99999, 99999) şeklindedir; bu, herhangi bir sınırın olmadığı anlamına gelir, " +"dolayısıyla yatağın tamamında problamaya izin verilir." msgid "Probe point distance" msgstr "Prob noktası mesafesi" @@ -11164,8 +11210,8 @@ msgid "Mesh margin" msgstr "Yatak ağı boşluğu" msgid "" -"This option determines the additional distance by which the adaptive bed " -"mesh area should be expanded in the XY directions." +"This option determines the additional distance by which the adaptive bed mesh " +"area should be expanded in the XY directions." msgstr "" "Bu seçenek, uyarlanabilir yatak ağ alanının XY yönlerinde genişletilmesi " "gereken ek mesafeyi belirler." @@ -11185,9 +11231,9 @@ msgstr "Akış oranı" 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" +"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 "" "Malzeme, erimiş hal ile kristal hal arasında geçiş yaptıktan sonra hacimsel " "değişime sahip olabilir. Bu ayar, bu filamentin gcode'daki tüm ekstrüzyon " @@ -11198,9 +11244,9 @@ 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. \n" +"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. \n" "\n" "The final object flow ratio is this value multiplied by the filament flow " "ratio." @@ -11232,19 +11278,19 @@ msgstr "Uyarlanabilir basınç ilerlemesini etkinleştir (beta)" #, no-c-format, no-boost-format msgid "" -"With increasing print speeds (and hence increasing volumetric flow through " -"the nozzle) and increasing accelerations, it has been observed that the " -"effective PA value typically decreases. This means that a single PA value is " -"not always 100% optimal for all features and a compromise value is usually " -"used that does not cause too much bulging on features with lower flow speed " -"and accelerations while also not causing gaps on faster features.\n" +"With increasing print speeds (and hence increasing volumetric flow through the " +"nozzle) and increasing accelerations, it has been observed that the effective " +"PA value typically decreases. This means that a single PA value is not always " +"100% optimal for all features and a compromise value is usually used that does " +"not cause too much bulging on features with lower flow speed and accelerations " +"while also not causing gaps on faster features.\n" "\n" -"This feature aims to address this limitation by modeling the response of " -"your printer's extrusion system depending on the volumetric flow speed and " +"This feature aims to address this limitation by modeling the response of your " +"printer's extrusion system depending on the volumetric flow speed and " "acceleration it is printing at. Internally, it generates a fitted model that " "can extrapolate the needed pressure advance for any given volumetric flow " -"speed and acceleration, which is then emitted to the printer depending on " -"the current print conditions.\n" +"speed and acceleration, which is then emitted to the printer depending on the " +"current print conditions.\n" "\n" "When enabled, the pressure advance value above is overridden. However, a " "reasonable default value above is strongly recommended to act as a fallback " @@ -11253,11 +11299,11 @@ msgid "" msgstr "" "Baskı hızlarının artmasıyla (ve dolayısıyla püskürtme ucunda hacimsel akışın " "artmasıyla) ve hızlanmaların artmasıyla, etkin basınç değerinin tipik olarak " -"azaldığı gözlemlenmiştir. Bu, tek bir basınç değerinin tüm özellikler için " -"her zaman 100% optimal olmadığı ve genellikle daha düşük akış hızına ve " -"ivmeye sahip özelliklerde çok fazla çıkıntıya neden olmayan ve aynı zamanda " -"daha hızlı özelliklerde boşluklara neden olmayan bir uzlaşma değerinin " -"kullanıldığı anlamına gelir.\n" +"azaldığı gözlemlenmiştir. Bu, tek bir basınç değerinin tüm özellikler için her " +"zaman 100% optimal olmadığı ve genellikle daha düşük akış hızına ve ivmeye " +"sahip özelliklerde çok fazla çıkıntıya neden olmayan ve aynı zamanda daha " +"hızlı özelliklerde boşluklara neden olmayan bir uzlaşma değerinin kullanıldığı " +"anlamına gelir.\n" "\n" "Bu özellik, yazıcınızın ekstrüzyon sisteminin tepkisini hacimsel akış hızına " "ve baskı yaptığı ivmeye bağlı olarak modelleyerek bu sınırlamayı gidermeyi " @@ -11283,27 +11329,27 @@ msgid "" "0.026,7.91,10000\n" "\n" "How to calibrate:\n" -"1. Run the pressure advance test for at least 3 speeds per acceleration " -"value. It is recommended that the test is run for at least the speed of the " -"external perimeters, the speed of the internal perimeters and the fastest " -"feature print speed in your profile (usually its the sparse or solid " -"infill). Then run them for the same speeds for the slowest and fastest print " -"accelerations,and no faster than the recommended maximum acceleration as " -"given by the Klipper input shaper.\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration value. " +"It is recommended that the test is run for at least the speed of the external " +"perimeters, the speed of the internal perimeters and the fastest feature print " +"speed in your profile (usually its the sparse or solid infill). Then run them " +"for the same speeds for the slowest and fastest print accelerations,and no " +"faster than the recommended maximum acceleration as given by the Klipper input " +"shaper.\n" "2. Take note of the optimal PA value for each volumetric flow speed and " "acceleration. You can find the flow number by selecting flow from the color " -"scheme drop down and move the horizontal slider over the PA pattern lines. " -"The number should be visible at the bottom of the page. The ideal PA value " -"should be decreasing the higher the volumetric flow is. If it is not, " -"confirm that your extruder is functioning correctly.The slower and with less " -"acceleration you print, the larger the range of acceptable PA values. If no " -"difference is visible, use the PA value from the faster test.3. Enter the " -"triplets of PA values, Flow and Accelerations in the text box here and save " -"your filament profile\n" +"scheme drop down and move the horizontal slider over the PA pattern lines. The " +"number should be visible at the bottom of the page. The ideal PA value should " +"be decreasing the higher the volumetric flow is. If it is not, confirm that " +"your extruder is functioning correctly.The slower and with less acceleration " +"you print, the larger the range of acceptable PA values. If no difference is " +"visible, use the PA value from the faster test.3. Enter the triplets of PA " +"values, Flow and Accelerations in the text box here and save your filament " +"profile\n" "\n" msgstr "" -"Basınç ilerlemesi (basınç) değerlerinin setlerini, hacimsel akış hızlarını " -"ve ölçüldükleri ivmeleri virgülle ayırarak ekleyin. Satır başına bir değer " +"Basınç ilerlemesi (basınç) değerlerinin setlerini, hacimsel akış hızlarını ve " +"ölçüldükleri ivmeleri virgülle ayırarak ekleyin. Satır başına bir değer " "kümesi. Örneğin\n" "0.04,3.96,3000\n" "0,033,3,96,10000\n" @@ -11311,32 +11357,30 @@ msgstr "" "0.026,7.91,10000\n" "\n" "Nasıl kalibre edilir:\n" -"1. Hızlanma değeri başına en az 3 hız için basınç ilerleme testini " -"çalıştırın. Testin en azından dış çevrelerin hızı, iç çevrelerin hızı ve " -"profilinizdeki en hızlı özellik yazdırma hızı (genellikle seyrek veya katı " -"dolgudur) için çalıştırılması önerilir. Daha sonra bunları, en yavaş ve en " -"hızlı yazdırma hızlanmaları için aynı hızlarda çalıştırın ve klipper giriş " -"şekillendirici tarafından verilen önerilen maksimum hızlanmadan daha hızlı " -"değil.\n" +"1. Hızlanma değeri başına en az 3 hız için basınç ilerleme testini çalıştırın. " +"Testin en azından dış çevrelerin hızı, iç çevrelerin hızı ve profilinizdeki en " +"hızlı özellik yazdırma hızı (genellikle seyrek veya katı dolgudur) için " +"çalıştırılması önerilir. Daha sonra bunları, en yavaş ve en hızlı yazdırma " +"hızlanmaları için aynı hızlarda çalıştırın ve klipper giriş şekillendirici " +"tarafından verilen önerilen maksimum hızlanmadan daha hızlı değil.\n" "2. Her hacimsel akış hızı ve ivme için en uygun PA değerini not edin. Renk " -"şeması açılır menüsünden akışı seçerek ve yatay kaydırıcıyı PA desen " -"çizgileri üzerinde hareket ettirerek akış numarasını bulabilirsiniz. Numara " -"sayfanın altında görünmelidir. İdeal PA değeri hacimsel akış ne kadar yüksek " -"olursa o kadar azalmalıdır. Değilse, ekstruderinizin doğru şekilde " -"çalıştığını doğrulayın. Ne kadar yavaş ve daha az ivmeyle yazdırırsanız, " -"kabul edilebilir PA değerleri aralığı o kadar geniş olur. Hiçbir fark " -"görünmüyorsa, daha hızlı olan testteki PA değerini kullanın.3. Buradaki " -"metin kutusuna PA değerleri, Akış ve Hızlanma üçlüsünü girin ve filament " -"profilinizi kaydedin\n" +"şeması açılır menüsünden akışı seçerek ve yatay kaydırıcıyı PA desen çizgileri " +"üzerinde hareket ettirerek akış numarasını bulabilirsiniz. Numara sayfanın " +"altında görünmelidir. İdeal PA değeri hacimsel akış ne kadar yüksek olursa o " +"kadar azalmalıdır. Değilse, ekstruderinizin doğru şekilde çalıştığını " +"doğrulayın. Ne kadar yavaş ve daha az ivmeyle yazdırırsanız, kabul edilebilir " +"PA değerleri aralığı o kadar geniş olur. Hiçbir fark görünmüyorsa, daha hızlı " +"olan testteki PA değerini kullanın.3. Buradaki metin kutusuna PA değerleri, " +"Akış ve Hızlanma üçlüsünü girin ve filament profilinizi kaydedin\n" msgid "Enable adaptive pressure advance for overhangs (beta)" msgstr "Çıkıntılar için uyarlanabilir basınç ilerlemesini etkinleştirin (beta)" msgid "" -"Enable adaptive PA for overhangs as well as when flow changes within the " -"same feature. This is an experimental option, as if the PA profile is not " -"set accurately, it will cause uniformity issues on the external surfaces " -"before and after overhangs.\n" +"Enable adaptive PA for overhangs as well as when flow changes within the same " +"feature. This is an experimental option, as if the PA profile is not set " +"accurately, it will cause uniformity issues on the external surfaces before " +"and after overhangs.\n" msgstr "" "Aynı özellik içinde akış değiştiğinde ve çıkıntılar için uyarlanabilir PA’yı " "etkinleştirin. Bu deneysel bir seçenektir, sanki basınç profili doğru " @@ -11349,32 +11393,31 @@ msgstr "Köprüler için basınç ilerlemesi" msgid "" "Pressure advance value for bridges. Set to 0 to disable. \n" "\n" -" A lower PA value when printing bridges helps reduce the appearance of " -"slight under extrusion immediately after bridges. This is caused by the " -"pressure drop in the nozzle when printing in the air and a lower PA helps " -"counteract this." +" A lower PA value when printing bridges helps reduce the appearance of slight " +"under extrusion immediately after bridges. This is caused by the pressure drop " +"in the nozzle when printing in the air and a lower PA helps counteract this." msgstr "" "Köprüler için basınç ilerleme değeri. Devre dışı bırakmak için 0’a " "ayarlayın. \n" "\n" " Köprüleri yazdırırken daha düşük bir basınç değeri, köprülerden hemen sonra " -"hafif ekstrüzyon görünümünün azaltılmasına yardımcı olur. Bunun nedeni, " -"havada yazdırma sırasında nozuldaki basınç düşüşüdür ve daha düşük bir " -"basınç, bunu önlemeye yardımcı olur." +"hafif ekstrüzyon görünümünün azaltılmasına yardımcı olur. Bunun nedeni, havada " +"yazdırma sırasında nozuldaki basınç düşüşüdür ve daha düşük bir basınç, bunu " +"önlemeye yardımcı olur." msgid "" -"Default line width if other line widths are set to 0. If expressed as a %, " -"it will be computed over the nozzle diameter." +"Default line width if other line widths are set to 0. If expressed as a %, it " +"will be computed over the nozzle diameter." msgstr "" -"Diğer çizgi genişlikleri 0'a ayarlanmışsa varsayılan çizgi genişliği. % " -"olarak ifade edilirse nozul çapı üzerinden hesaplanacaktır." +"Diğer çizgi genişlikleri 0'a ayarlanmışsa varsayılan çizgi genişliği. % olarak " +"ifade edilirse nozul çapı üzerinden hesaplanacaktır." msgid "Keep fan always on" msgstr "Fanı her zaman açık tut" msgid "" -"If enable this setting, part cooling fan will never be stopped and will run " -"at least at minimum speed to reduce the frequency of starting and stopping" +"If enable this setting, part cooling fan will never be stopped and will run at " +"least at minimum speed to reduce the frequency of starting and stopping" msgstr "" "Bu ayarı etkinleştirirseniz, parça soğutma fanı hiçbir zaman durdurulmayacak " "ve başlatma ve durdurma sıklığını azaltmak için en azından minimum hızda " @@ -11410,9 +11453,9 @@ msgid "Layer time" msgstr "Katman süresi" 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" +"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 "" "Tahmini süresi bu değerden kısa olan katlarda parça soğutma fanı devreye " "girecektir. Fan hızı, katman yazdırma süresine göre minimum ve maksimum fan " @@ -11441,9 +11484,9 @@ msgstr "" "kontrol edilmediği anlamına gelir." 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" +"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 "" "Bu ayar, saniyede ne kadar miktarda filamentin eritilip ekstrude " "edilebileceğini gösterir. Çok yüksek ve makul olmayan hız ayarı durumunda, " @@ -11461,34 +11504,34 @@ msgid "" "machines, it's typically 0. For statistics only" msgstr "" "Filamenti değiştirdiğinizde yeni filament yükleme zamanı. Genellikle tek " -"ekstruderli çok malzemeli makineler için geçerlidir. Araç değiştiriciler " -"veya çok takımlı makineler için bu değer genellikle 0’dır. Yalnızca " -"istatistikler için." +"ekstruderli çok malzemeli makineler için geçerlidir. Araç değiştiriciler veya " +"çok takımlı makineler için bu değer genellikle 0’dır. Yalnızca istatistikler " +"için." msgid "Filament unload time" msgstr "Filament boşaltma süresi" msgid "" -"Time to unload old filament when switch filament. It's usually applicable " -"for single-extruder multi-material machines. For tool changers or multi-tool " +"Time to unload old filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " "machines, it's typically 0. For statistics only" msgstr "" "Filamenti değiştirdiğinizde eski filamenti boşaltma zamanı. Genellikle tek " -"ekstruderli çok malzemeli makineler için geçerlidir. Araç değiştiriciler " -"veya çok takımlı makineler için bu değer genellikle 0’dır. Yalnızca " -"istatistikler için." +"ekstruderli çok malzemeli makineler için geçerlidir. Araç değiştiriciler veya " +"çok takımlı makineler için bu değer genellikle 0’dır. Yalnızca istatistikler " +"için." msgid "Tool change time" msgstr "Takım değiştirme süresi" msgid "" -"Time taken to switch tools. It's usually applicable for tool changers or " -"multi-tool machines. For single-extruder multi-material machines, it's " -"typically 0. For statistics only" +"Time taken to switch tools. It's usually applicable for tool changers or multi-" +"tool machines. For single-extruder multi-material machines, it's typically 0. " +"For statistics only" msgstr "" -"Araç değiştirmek için harcanan zaman. Genellikle araç değiştiriciler veya " -"çok araçlı makineler için geçerlidir. Tek ekstruderli çok malzemeli " -"makineler için bu değer genellikle 0’dır. Yalnızca istatistikler için." +"Araç değiştirmek için harcanan zaman. Genellikle araç değiştiriciler veya çok " +"araçlı makineler için geçerlidir. Tek ekstruderli çok malzemeli makineler için " +"bu değer genellikle 0’dır. Yalnızca istatistikler için." msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -11504,16 +11547,16 @@ msgid "" "Pellet flow coefficient is empirically derived and allows for volume " "calculation for pellet printers.\n" "\n" -"Internally it is converted to filament_diameter. All other volume " -"calculations remain the same.\n" +"Internally it is converted to filament_diameter. All other volume calculations " +"remain the same.\n" "\n" "filament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )" msgstr "" "Pelet akış katsayısı ampirik olarak türetilir ve pelet yazıcıları için hacim " "hesaplamasına olanak tanır.\n" "\n" -"Dahili olarak filament_çapına dönüştürülür. Diğer tüm hacim hesaplamaları " -"aynı kalır.\n" +"Dahili olarak filament_çapına dönüştürülür. Diğer tüm hacim hesaplamaları aynı " +"kalır.\n" "\n" "filament_çapı = sqrt( (4 * pellet_akış_katsayısı) / PI )" @@ -11528,11 +11571,11 @@ msgid "" "Be sure to allow enough space between objects, as this compensation is done " "after the checks." msgstr "" -"Filamentin soğuduktan sonra alacağı büzülme yüzdesini girin (100 mm yerine " -"94 mm ölçerseniz 94%). Parça, telafi etmek için xy'de ölçeklendirilecektir. " +"Filamentin soğuduktan sonra alacağı büzülme yüzdesini girin (100 mm yerine 94 " +"mm ölçerseniz 94%). Parça, telafi etmek için xy'de ölçeklendirilecektir. " "Yalnızca çevre için kullanılan filament dikkate alınır.\n" -"Bu telafi kontrollerden sonra yapıldığından, nesneler arasında yeterli " -"boşluk bıraktığınızdan emin olun." +"Bu telafi kontrollerden sonra yapıldığından, nesneler arasında yeterli boşluk " +"bıraktığınızdan emin olun." msgid "Shrinkage (Z)" msgstr "Büzülme (Z)" @@ -11543,8 +11586,8 @@ msgid "" "if you measure 94mm instead of 100mm). The part will be scaled in Z to " "compensate." msgstr "" -"Filamentin soğuduktan sonra alacağı çekme yüzdesini girin (100 mm yerine 94 " -"mm ölçerseniz %94). Telafi etmek için parça Z olarak ölçeklendirilecektir." +"Filamentin soğuduktan sonra alacağı çekme yüzdesini girin (100 mm yerine 94 mm " +"ölçerseniz %94). Telafi etmek için parça Z olarak ölçeklendirilecektir." msgid "Loading speed" msgstr "Yükleme hızı" @@ -11592,11 +11635,11 @@ msgid "Number of cooling moves" msgstr "Soğutma hareketi sayısı" msgid "" -"Filament is cooled by being moved back and forth in the cooling tubes. " -"Specify desired number of these moves." +"Filament is cooled by being moved back and forth in the cooling tubes. Specify " +"desired number of these moves." msgstr "" -"Filament, soğutma tüpleri içinde ileri geri hareket ettirilerek soğutulur. " -"Bu sayısını belirtin." +"Filament, soğutma tüpleri içinde ileri geri hareket ettirilerek soğutulur. Bu " +"sayısını belirtin." msgid "Stamping loading speed" msgstr "Damgalama yükleme hızı" @@ -11609,8 +11652,8 @@ msgstr "Soğutma tüpünün merkezinden ölçülen damgalama mesafesi" msgid "" "If set to nonzero value, filament is moved toward the nozzle between the " -"individual cooling moves (\"stamping\"). This option configures how long " -"this movement should be before the filament is retracted again." +"individual cooling moves (\"stamping\"). This option configures how long this " +"movement should be before the filament is retracted again." msgstr "" "Sıfırdan farklı bir değere ayarlanırsa filaman bireysel soğutma hareketleri " "arasında (“damgalama”) nüzule doğru hareket ettirilir. Bu seçenek, filamanın " @@ -11629,16 +11672,15 @@ msgstr "Silme kulesi üzerinde minimum boşaltım" 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, Orca Slicer will always prime this amount of material into the wipe " -"tower to produce successive infill or sacrificial object extrusions reliably." +"stable. Before purging the print head into an infill or a sacrificial object, " +"Orca Slicer will always prime this amount of material into the wipe tower to " +"produce successive infill or sacrificial object extrusions reliably." msgstr "" "Bir takım değişiminden sonra, yeni yüklenen filamentin nozul içindeki kesin " "konumu bilinmeyebilir ve filament basıncı muhtemelen henüz stabil değildir. " "Yazdırma kafasını bir dolguya veya kurban nesneye boşaltmadan önce Orca " -"Slicer, ardışık dolgu veya kurban nesne ekstrüzyonlarını güvenilir bir " -"şekilde üretmek için her zaman bu miktardaki malzemeyi silme kulesine " -"hazırlayacaktır." +"Slicer, ardışık dolgu veya kurban nesne ekstrüzyonlarını güvenilir bir şekilde " +"üretmek için her zaman bu miktardaki malzemeyi silme kulesine hazırlayacaktır." msgid "Speed of the last cooling move" msgstr "Son soğutma hareketi hızı" @@ -11660,10 +11702,10 @@ msgid "Enable ramming for multi-tool setups" msgstr "Çoklu araç kurulumları için sıkıştırmayı etkinleştirin" msgid "" -"Perform ramming when using multi-tool 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." +"Perform ramming when using multi-tool 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 "" "Çok takımlı yazıcı kullanırken sıkıştırma gerçekleştirin (yani Yazıcı " "Ayarları'ndaki 'Tek Ekstruder Çoklu Malzeme' işaretli olmadığında). " @@ -11698,17 +11740,14 @@ msgstr "Filament malzeme türü" msgid "Soluble material" msgstr "Çözünür malzeme" -msgid "" -"Soluble material is commonly used to print support and support interface" +msgid "Soluble material is commonly used to print support and support interface" msgstr "" -"Çözünür malzeme genellikle destek ve destek arayüzünü yazdırmak için " -"kullanılır" +"Çözünür malzeme genellikle destek ve destek arayüzünü yazdırmak için kullanılır" msgid "Support material" msgstr "Destek malzemesi" -msgid "" -"Support material is commonly used to print support and support interface" +msgid "Support material is commonly used to print support and support interface" msgstr "" "Destek malzemesi yaygın olarak destek ve destek arayüzünü yazdırmak için " "kullanılır" @@ -11717,9 +11756,9 @@ msgid "Softening temperature" msgstr "Yumuşama sıcaklığı" 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 clogging." +"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 clogging." msgstr "" "Filament bu sıcaklıkta yumuşar, bu nedenle yatak sıcaklığı bununla eşit veya " "daha yüksekse, tıkanmaları önlemek için ön kapağı açmanız ve/veya üst camı " @@ -11747,8 +11786,8 @@ msgid "Sparse infill direction" msgstr "Seyrek dolgu yönü" msgid "" -"Angle for sparse infill pattern, which controls the start or main direction " -"of line" +"Angle for sparse infill pattern, which controls the start or main direction of " +"line" msgstr "" "Hattın başlangıcını veya ana yönünü kontrol eden seyrek dolgu deseni açısı" @@ -11756,10 +11795,9 @@ msgid "Solid infill direction" msgstr "Katı dolgu yönü" msgid "" -"Angle for solid infill pattern, which controls the start or main direction " -"of line" -msgstr "" -"Hattın başlangıcını veya ana yönünü kontrol eden katı dolgu deseni açısı" +"Angle for solid infill pattern, which controls the start or main direction of " +"line" +msgstr "Hattın başlangıcını veya ana yönünü kontrol eden katı dolgu deseni açısı" msgid "Rotate solid infill direction" msgstr "Katı dolgu yönünü döndür" @@ -11775,8 +11813,8 @@ msgid "" "Density of internal sparse infill, 100% turns all sparse infill into solid " "infill and internal solid infill pattern will be used" msgstr "" -"İç seyrek dolgunun yoğunluğu, %100 tüm seyrek dolguyu katı dolguya " -"dönüştürür ve iç katı dolgu modeli kullanılacaktır" +"İç seyrek dolgunun yoğunluğu, %100 tüm seyrek dolguyu katı dolguya dönüştürür " +"ve iç katı dolgu modeli kullanılacaktır" msgid "Sparse infill pattern" msgstr "Dolgu deseni" @@ -11788,7 +11826,7 @@ msgid "Grid" msgstr "Kafes" msgid "2D Lattice" -msgstr "" +msgstr "2D Kafes" msgid "Line" msgstr "Çizgi" @@ -11821,23 +11859,25 @@ msgid "Cross Hatch" msgstr "Çapraz çizgi" msgid "Quarter Cubic" -msgstr "" +msgstr "Çeyrek Küp" msgid "Lattice angle 1" -msgstr "" +msgstr "Kafes açısı 1" msgid "" -"The angle of the first set of 2D lattice elements in the Z direction. Zero " -"is vertical." +"The angle of the first set of 2D lattice elements in the Z direction. Zero is " +"vertical." msgstr "" +"İlk 2 boyutlu kafes elemanları grubunun Z yönündeki açısı. Sıfır dikeydir." msgid "Lattice angle 2" -msgstr "" +msgstr "Kafes açısı 2" msgid "" -"The angle of the second set of 2D lattice elements in the Z direction. Zero " -"is vertical." +"The angle of the second set of 2D lattice elements in the Z direction. Zero is " +"vertical." msgstr "" +"İkinci 2 boyutlu kafes elemanları grubunun Z yönündeki açısı. Sıfır dikeydir." msgid "Sparse infill anchor length" msgstr "Dolgu uzunluğu" @@ -11845,24 +11885,23 @@ msgstr "Dolgu uzunluğu" 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. Orca Slicer 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" +"calculated over infill extrusion width. Orca Slicer 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 "" "Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " -"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon " -"genişliği üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir " -"çevre segmentine bağlamaya çalışıyor. infill_anchor_max'tan daha kısa böyle " -"bir çevre segmenti bulunamazsa, dolgu hattı yalnızca bir taraftaki bir çevre " +"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon genişliği " +"üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir çevre " +"segmentine bağlamaya çalışıyor. infill_anchor_max'tan daha kısa böyle bir " +"çevre segmenti bulunamazsa, dolgu hattı yalnızca bir taraftaki bir çevre " "segmentine bağlanır ve alınan çevre segmentinin uzunluğu bu parametreyle " "sınırlıdır, ancak çapa_uzunluk_max'tan uzun olamaz.\n" -"Tek bir dolgu hattına bağlı sabitleme çevrelerini devre dışı bırakmak için " -"bu parametreyi sıfıra ayarlayın." +"Tek bir dolgu hattına bağlı sabitleme çevrelerini devre dışı bırakmak için bu " +"parametreyi sıfıra ayarlayın." msgid "0 (no open anchors)" msgstr "0 (açık bağlantı yok)" @@ -11876,24 +11915,23 @@ msgstr "Dolgu maksimum uzunluk" 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. Orca Slicer 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" +"calculated over infill extrusion width. Orca Slicer 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 "" "Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " -"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon " -"genişliği üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir " -"çevre segmentine bağlamaya çalışıyor. Bu parametreden daha kısa bir çevre " -"segmenti bulunamazsa, dolgu hattı sadece bir kenardaki bir çevre segmentine " -"bağlanır ve alınan çevre segmentinin uzunluğu infill_anchor ile sınırlıdır " -"ancak bu parametreden daha uzun olamaz.\n" -"0'a ayarlanırsa dolgu bağlantısı için eski algoritma kullanılacaktır; 1000 " -"ve 0 ile aynı sonucu oluşturmalıdır." +"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon genişliği " +"üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir çevre " +"segmentine bağlamaya çalışıyor. Bu parametreden daha kısa bir çevre segmenti " +"bulunamazsa, dolgu hattı sadece bir kenardaki bir çevre segmentine bağlanır ve " +"alınan çevre segmentinin uzunluğu infill_anchor ile sınırlıdır ancak bu " +"parametreden daha uzun olamaz.\n" +"0'a ayarlanırsa dolgu bağlantısı için eski algoritma kullanılacaktır; 1000 ve " +"0 ile aynı sonucu oluşturmalıdır." msgid "0 (Simple connect)" msgstr "0 (Basit bağlantı)" @@ -11911,26 +11949,26 @@ msgid "" "Acceleration of top surface infill. Using a lower value may improve top " "surface quality" msgstr "" -"Üst yüzey dolgusunun hızlandırılması. Daha düşük bir değerin kullanılması " -"üst yüzey kalitesini iyileştirebilir" +"Üst yüzey dolgusunun hızlandırılması. Daha düşük bir değerin kullanılması üst " +"yüzey kalitesini iyileştirebilir" msgid "Acceleration of outer wall. Using a lower value can improve quality" msgstr "" "Dış duvarın hızlanması. Daha düşük bir değer kullanmak kaliteyi artırabilir" 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." +"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 "" -"Köprülerin hızlandırılması. Değer yüzde olarak ifade edilirse (örn. %50), " -"dış duvar ivmesine göre hesaplanacaktır." +"Köprülerin hızlandırılması. Değer yüzde olarak ifade edilirse (örn. %50), dış " +"duvar ivmesine göre hesaplanacaktır." msgid "mm/s² or %" msgstr "mm/s² veya %" 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." +"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 "" "Seyrek dolgunun hızlandırılması. Değer yüzde olarak ifade edilirse (örn. " "%100), varsayılan ivmeye göre hesaplanacaktır." @@ -11960,10 +11998,8 @@ msgid "accel_to_decel" msgstr "Accel_to_decel" #, c-format, boost-format -msgid "" -"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" -msgstr "" -"Klipper'ın max_accel_to_decel değeri ivmenin bu %%'sine göre ayarlanacak" +msgid "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "Klipper'ın max_accel_to_decel değeri ivmenin bu %%'sine göre ayarlanacak" msgid "Jerk of outer walls" msgstr "Dış duvar JERK değeri" @@ -11984,8 +12020,8 @@ msgid "Jerk for travel" msgstr "Seyahat için JERK değeri" msgid "" -"Line width of initial layer. If expressed as a %, it will be computed over " -"the nozzle diameter." +"Line width of initial layer. If expressed as a %, it will be computed over the " +"nozzle diameter." msgstr "" "İlk katmanın çizgi genişliği. % olarak ifade edilirse Nozul çapı üzerinden " "hesaplanacaktır." @@ -11994,8 +12030,8 @@ msgid "Initial layer height" msgstr "Başlangıç katman yüksekliği" msgid "" -"Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhesion" +"Height of initial layer. Making initial layer height to be thick slightly can " +"improve build plate adhesion" msgstr "" "İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, baskı " "plakasının yapışmasını iyileştirebilir" @@ -12036,17 +12072,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." +"\"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." msgid "layer" msgstr "katman" @@ -12062,22 +12097,34 @@ msgid "" "Set to -1 to disable it.\n" "This setting is overridden by disable_fan_first_layers." msgstr "" +"Bu kısım soğutma fanı hızı, destek arayüzlerini yazdırırken uygulanır. Bu " +"parametrenin normal hızdan daha yüksek bir değere ayarlanması, destekler ile " +"desteklenen parça arasındaki katman bağlama gücünü azaltarak bunların " +"ayrılmasını kolaylaştırır.\n" +"Devre dışı bırakmak için -1’e ayarlayın.\n" +"Bu ayar, ilk katman fan hızı kapalı ayarı tarafından geçersiz kılınır." msgid "Internal bridges fan speed" -msgstr "" +msgstr "İç köprü fan hızı" msgid "" -"The part cooling fan speed used for all internal bridges. Set to -1 to use " -"the overhang fan speed settings instead.\n" +"The part cooling fan speed used for all internal bridges. Set to -1 to use the " +"overhang fan speed settings instead.\n" "\n" "Reducing the internal bridges fan speed, compared to your regular fan speed, " "can help reduce part warping due to excessive cooling applied over a large " "surface for a prolonged period of time." msgstr "" +"Tüm iç köprüler için kullanılan parça soğutma fanı hızı. Bunun yerine " +"çıkıntılı fan hızı ayarlarını kullanmak için -1’e ayarlayın.\n" +"\n" +"Normal fan hızınızla karşılaştırıldığında iç köprü fan hızını azaltmak, geniş " +"bir yüzeye uzun süre uygulanan aşırı soğutma nedeniyle parçanın bükülmesinin " +"azaltılmasına yardımcı olabilir." msgid "" -"Randomly jitter while printing the wall, so that the surface has a rough " -"look. This setting controls the fuzzy position" +"Randomly jitter while printing the wall, so that the surface has a rough look. " +"This setting controls the fuzzy position" msgstr "" "Duvara baskı yaparken rastgele titreme, böylece yüzeyin pürüzlü bir görünüme " "sahip olması. Bu ayar bulanık konumu kontrol eder" @@ -12105,10 +12152,8 @@ msgid "Fuzzy skin point distance" msgstr "Bulanık kaplama noktası mesafesi" msgid "" -"The average distance between the random points introduced on each line " -"segment" -msgstr "" -"Her çizgi parçasına eklenen rastgele noktalar arasındaki ortalama mesafe" +"The average distance between the random points introduced on each line segment" +msgstr "Her çizgi parçasına eklenen rastgele noktalar arasındaki ortalama mesafe" msgid "Apply fuzzy skin to first layer" msgstr "Bulanık cildi ilk katmana uygulayın" @@ -12117,57 +12162,71 @@ msgid "Whether to apply fuzzy skin on the first layer" msgstr "İlk katmana bulanık cilt uygulanıp uygulanmayacağı" msgid "Fuzzy skin noise type" -msgstr "" +msgstr "Bulanık cilt gürültü türü" msgid "" "Noise type to use for fuzzy skin generation.\n" "Classic: Classic uniform random noise.\n" "Perlin: Perlin noise, which gives a more consistent texture.\n" "Billow: Similar to perlin noise, but clumpier.\n" -"Ridged Multifractal: Ridged noise with sharp, jagged features. Creates " -"marble-like textures.\n" +"Ridged Multifractal: Ridged noise with sharp, jagged features. Creates marble-" +"like textures.\n" "Voronoi: Divides the surface into voronoi cells, and displaces each one by a " "random amount. Creates a patchwork texture." msgstr "" +"Tüylü cilt oluşumu için kullanılacak gürültü türü.\n" +"Klasik: Klasik tek tip rastgele gürültü.\n" +"Perlin: Daha tutarlı bir doku veren Perlin gürültüsü.\n" +"Billow: Perlin gürültüsüne benzer, ancak daha topaklanır.\n" +"Ridged Multifractal: Keskin, pürüzlü özelliklere sahip çıkıntılı gürültü. " +"Mermer benzeri dokular oluşturur.\n" +"Voronoi: Yüzeyi voronoi hücrelerine böler ve her birini rastgele miktarda yer " +"değiştirir. Patchwork dokusu oluşturur." msgid "Classic" msgstr "Klasik" msgid "Perlin" -msgstr "" +msgstr "Perlin" msgid "Billow" -msgstr "" +msgstr "Billow" msgid "Ridged Multifractal" -msgstr "" +msgstr "Ridged Multifractal" msgid "Voronoi" -msgstr "" +msgstr "Voronoi" msgid "Fuzzy skin feature size" -msgstr "" +msgstr "Bulanık cilt özelliği boyutu" msgid "" -"The base size of the coherent noise features, in mm. Higher values will " -"result in larger features." +"The base size of the coherent noise features, in mm. Higher values will result " +"in larger features." msgstr "" +"Tutarlı gürültü özelliklerinin mm cinsinden taban boyutu. Daha yüksek değerler " +"daha büyük özelliklerle sonuçlanacaktır." msgid "Fuzzy Skin Noise Octaves" -msgstr "" +msgstr "Bulanık Cilt Gürültüsü Oktavları" msgid "" "The number of octaves of coherent noise to use. Higher values increase the " "detail of the noise, but also increase computation time." msgstr "" +"Kullanılacak tutarlı gürültünün oktav sayısı. Daha yüksek değerler gürültünün " +"ayrıntısını artırır ancak aynı zamanda hesaplama süresini de artırır." msgid "Fuzzy skin noise persistence" -msgstr "" +msgstr "Bulanık cilt gürültüsü kalıcılığı" msgid "" "The decay rate for higher octaves of the coherent noise. Lower values will " "result in smoother noise." msgstr "" +"Tutarlı gürültünün daha yüksek oktavları için bozulma oranı. Daha düşük " +"değerler daha yumuşak gürültüye neden olur." msgid "Filter out tiny gaps" msgstr "Küçük boşlukları filtrele" @@ -12176,9 +12235,9 @@ msgid "Layers and Perimeters" msgstr "Katmanlar ve Çevreler" msgid "" -"Don't print gap fill with a length is smaller than the threshold specified " -"(in mm). This setting applies to top, bottom and solid infill and, if using " -"the classic perimeter generator, to wall gap fill. " +"Don't print gap fill with a length is smaller than the threshold specified (in " +"mm). This setting applies to top, bottom and solid infill and, if using the " +"classic perimeter generator, to wall gap fill. " msgstr "" "Belirtilen eşikten (mm cinsinden) daha küçük bir uzunluğa sahip boşluk " "dolgusunu yazdırmayın. Bu ayar üst, alt ve katı dolgu için ve klasik çevre " @@ -12188,21 +12247,21 @@ msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " "printed more slowly" msgstr "" -"Boşluk doldurma hızı. Boşluk genellikle düzensiz çizgi genişliğine sahiptir " -"ve daha yavaş yazdırılmalıdır" +"Boşluk doldurma hızı. Boşluk genellikle düzensiz çizgi genişliğine sahiptir ve " +"daha yavaş yazdırılmalıdır" msgid "Precise Z height" msgstr "Hassas z yüksekliği" msgid "" "Enable this to get precise z height of object after slicing. It will get the " -"precise object height by fine-tuning the layer heights of the last few " -"layers. Note that this is an experimental parameter." +"precise object height by fine-tuning the layer heights of the last few layers. " +"Note that this is an experimental parameter." msgstr "" "Dilimlemeden sonra nesnenin kesin z yüksekliğini elde etmek için bunu " "etkinleştirin. Son birkaç katmanın katman yüksekliklerine ince ayar yaparak " -"kesin nesne yüksekliğini elde edecektir. Bunun deneysel bir parametre " -"olduğunu unutmayın." +"kesin nesne yüksekliğini elde edecektir. Bunun deneysel bir parametre olduğunu " +"unutmayın." msgid "Arc fitting" msgstr "Ark" @@ -12211,11 +12270,11 @@ msgid "" "Enable this to get a G-code file which has G2 and G3 moves. The fitting " "tolerance is same as the resolution. \n" "\n" -"Note: For Klipper machines, this option is recommended to be disabled. " -"Klipper does not benefit from arc commands as these are split again into " -"line segments by the firmware. This results in a reduction in surface " -"quality as line segments are converted to arcs by the slicer and then back " -"to line segments by the firmware." +"Note: For Klipper machines, this option is recommended to be disabled. Klipper " +"does not benefit from arc commands as these are split again into line segments " +"by the firmware. This results in a reduction in surface quality as line " +"segments are converted to arcs by the slicer and then back to line segments by " +"the firmware." msgstr "" "G2 ve G3 hareketlerine sahip bir G kodu dosyası elde etmek için bunu " "etkinleştirin. Montaj toleransı çözünürlükle aynıdır. \n" @@ -12224,23 +12283,20 @@ msgstr "" "Klipper, yazılım tarafından tekrar çizgi bölümlerine bölündüğü için yay " "komutlarından faydalanmaz. Bu, çizgi bölümlerinin dilimleyici tarafından " "yaylara dönüştürülmesi ve ardından donanım yazılımı tarafından tekrar çizgi " -"bölümlerine dönüştürülmesi nedeniyle yüzey kalitesinde bir azalmaya neden " -"olur." +"bölümlerine dönüştürülmesi nedeniyle yüzey kalitesinde bir azalmaya neden olur." msgid "Add line number" msgstr "Satır numarası ekle" msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" msgstr "" -"Her G Kodu satırının başına satır numarası (Nx) eklemek için bunu " -"etkinleştirin" +"Her G Kodu satırının başına satır numarası (Nx) eklemek için bunu etkinleştirin" msgid "Scan first layer" msgstr "İlk katmanı tara" msgid "" -"Enable this to enable the camera on printer to check the quality of first " -"layer" +"Enable this to enable the camera on printer to check the quality of first layer" msgstr "" "Yazıcıdaki kameranın ilk katmanın kalitesini kontrol etmesini sağlamak için " "bunu etkinleştirin" @@ -12252,8 +12308,8 @@ msgid "" "The metallic material of nozzle. This determines the abrasive resistance of " "nozzle, and what kind of filament can be printed" msgstr "" -"Nozulnin metalik malzemesi. Bu, nozulun aşınma direncini ve ne tür " -"filamentin basılabileceğini belirler" +"Nozulnin metalik malzemesi. Bu, nozulun aşınma direncini ve ne tür filamentin " +"basılabileceğini belirler" msgid "Undefine" msgstr "Tanımsız" @@ -12305,8 +12361,8 @@ msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." msgstr "Yatak şekline göre [0,1] aralığında en iyi otomatik düzenleme konumu." msgid "" -"Enable this option if machine has auxiliary part cooling fan. G-code " -"command: M106 P2 S(0-255)." +"Enable this option if machine has auxiliary part cooling fan. G-code command: " +"M106 P2 S(0-255)." msgstr "" "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin. G-code " "komut: M106 P2 S(0-255)." @@ -12325,8 +12381,7 @@ msgstr "" "Fanı hedef başlangıç zamanından bu kadar saniye önce başlatın (kesirli " "saniyeleri kullanabilirsiniz). Bu süre tahmini için sonsuz ivme varsayar ve " "yalnızca G1 ve G0 hareketlerini hesaba katar (yay uydurma desteklenmez).\n" -"Fan komutlarını özel kodlardan taşımaz (bir çeşit 'bariyer' görevi " -"görürler).\n" +"Fan komutlarını özel kodlardan taşımaz (bir çeşit 'bariyer' görevi görürler).\n" "'Yalnızca özel başlangıç gcode'u etkinleştirilmişse, fan komutları başlangıç " "gcode'una taşınmayacaktır.\n" "Devre dışı bırakmak için 0'ı kullanın." @@ -12349,8 +12404,8 @@ msgid "" msgstr "" "Soğutma fanını başlatmak için hedef hıza düşmeden önce bu süre boyunca " "maksimum fan hızı komutunu verin.\n" -"Bu, düşük PWM/gücün fanın durma noktasından dönmeye başlaması veya fanın " -"daha hızlı hızlanması için yetersiz olabileceği fanlar için kullanışlıdır.\n" +"Bu, düşük PWM/gücün fanın durma noktasından dönmeye başlaması veya fanın daha " +"hızlı hızlanması için yetersiz olabileceği fanlar için kullanışlıdır.\n" "Devre dışı bırakmak için 0'a ayarlayın." msgid "Time cost" @@ -12396,44 +12451,41 @@ msgid "Pellet Modded Printer" msgstr "Pelet modlu yazıcı" msgid "Enable this option if your printer uses pellets instead of filaments" -msgstr "" -"Yazıcınız filament yerine pellet kullanıyorsa bu seçeneği etkinleştirin" +msgstr "Yazıcınız filament yerine pellet kullanıyorsa bu seçeneği etkinleştirin" msgid "Support multi bed types" msgstr "Çoklu plaka" msgid "Enable this option if you want to use multiple bed types" -msgstr "" -"Birden fazla plaka tipi kullanmak istiyorsanız bu seçeneği etkinleştirin" +msgstr "Birden fazla plaka tipi kullanmak istiyorsanız bu seçeneği etkinleştirin" msgid "Label objects" msgstr "Nesneleri etiketle" 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." +"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-Code etiketleme yazdırma hareketlerine ait oldukları nesneyle ilgili " -"yorumlar eklemek için bunu etkinleştirin; bu, Octoprint CancelObject " -"eklentisi için kullanışlıdır. Bu ayarlar Tek Ekstruder Çoklu Malzeme " -"kurulumu ve Nesneye Temizleme / Dolguya Temizleme ile uyumlu DEĞİLDİR." +"yorumlar eklemek için bunu etkinleştirin; bu, Octoprint CancelObject eklentisi " +"için kullanışlıdır. Bu ayarlar Tek Ekstruder Çoklu Malzeme kurulumu ve Nesneye " +"Temizleme / Dolguya Temizleme ile uyumlu DEĞİLDİR." msgid "Exclude objects" msgstr "Nesneleri hariç tut" msgid "Enable this option to add EXCLUDE OBJECT command in g-code" -msgstr "" -"G koduna EXCLUDE OBJECT komutunu eklemek için bu seçeneği etkinleştirin" +msgstr "G koduna EXCLUDE OBJECT komutunu eklemek için bu seçeneği etkinleştirin" msgid "Verbose G-code" msgstr "Ayrıntılı G kodu" 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." +"descriptive text. If you print from SD card, the additional weight of the file " +"could make your firmware slow down." msgstr "" "Her satırın açıklayıcı bir metinle açıklandığı, yorumlu bir G kodu dosyası " "almak için bunu etkinleştirin. SD karttan yazdırırsanız dosyanın ilave " @@ -12456,14 +12508,14 @@ msgstr "Dolgu kombinasyonu - Maksimum katman yüksekliği" msgid "" "Maximum layer height for the combined sparse infill. \n" "\n" -"Set it to 0 or 100% to use the nozzle diameter (for maximum reduction in " -"print time) or a value of ~80% to maximize sparse infill strength.\n" +"Set it to 0 or 100% to use the nozzle diameter (for maximum reduction in print " +"time) or a value of ~80% to maximize sparse infill strength.\n" "\n" -"The number of layers over which infill is combined is derived by dividing " -"this value with the layer height and rounded down to the nearest decimal.\n" +"The number of layers over which infill is combined is derived by dividing this " +"value with the layer height and rounded down to the nearest decimal.\n" "\n" -"Use either absolute mm values (eg. 0.32mm for a 0.4mm nozzle) or % values " -"(eg 80%). This value must not be larger than the nozzle diameter." +"Use either absolute mm values (eg. 0.32mm for a 0.4mm nozzle) or % values (eg " +"80%). This value must not be larger than the nozzle diameter." msgstr "" "Birleşik seyrek dolgu için maksimum katman yüksekliği. \n" "\n" @@ -12474,15 +12526,15 @@ msgstr "" "Dolgunun birleştirildiği katmanların sayısı, bu değerin katman yüksekliğine " "bölünmesiyle elde edilir ve en yakın ondalık sayıya yuvarlanır.\n" "\n" -"Mutlak mm değerlerini (örn. 0,4 mm’lik nozul için 0,32 mm) veya % " -"değerlerini (örn. %80) kullanın. Bu değer nozul çapından büyük olmamalıdır." +"Mutlak mm değerlerini (örn. 0,4 mm’lik nozul için 0,32 mm) veya % değerlerini " +"(örn. %80) kullanın. Bu değer nozul çapından büyük olmamalıdır." msgid "Filament to print internal sparse infill." msgstr "İç seyrek dolguyu yazdırmak için filament." msgid "" -"Line width of internal sparse infill. If expressed as a %, it will be " -"computed over the nozzle diameter." +"Line width of internal sparse infill. If expressed as a %, it will be computed " +"over the nozzle diameter." msgstr "" "İç seyrek dolgunun çizgi genişliği. % olarak ifade edilirse Nozul çapı " "üzerinden hesaplanacaktır." @@ -12492,15 +12544,15 @@ msgstr "Dolgu/Duvar örtüşmesi" #, no-c-format, no-boost-format msgid "" -"Infill area is enlarged slightly to overlap with wall for better bonding. " -"The percentage value is relative to line width of sparse infill. Set this " -"value to ~10-15% to minimize potential over extrusion and accumulation of " -"material resulting in rough top surfaces." +"Infill area is enlarged slightly to overlap with wall for better bonding. The " +"percentage value is relative to line width of sparse infill. Set this value to " +"~10-15% to minimize potential over extrusion and accumulation of material " +"resulting in rough top surfaces." msgstr "" "Daha iyi yapışma için dolgu alanı duvarla örtüşecek şekilde hafifçe " "genişletilir. Yüzde değeri seyrek dolgunun çizgi genişliğine göredir. Aşırı " -"ekstrüzyon ve pürüzlü üst yüzeylere neden olan malzeme birikmesi " -"potansiyelini en aza indirmek için bu değeri ~%10-15’e ayarlayın." +"ekstrüzyon ve pürüzlü üst yüzeylere neden olan malzeme birikmesi potansiyelini " +"en aza indirmek için bu değeri ~%10-15’e ayarlayın." msgid "Top/Bottom solid infill/wall overlap" msgstr "Üst/Alt katı dolgu/Duvar örtüşmesi" @@ -12508,8 +12560,8 @@ msgstr "Üst/Alt katı dolgu/Duvar örtüşmesi" #, no-c-format, no-boost-format msgid "" "Top solid infill area is enlarged slightly to overlap with wall for better " -"bonding and to minimize the appearance of pinholes where the top infill " -"meets the walls. A value of 25-30% is a good starting point, minimizing the " +"bonding and to minimize the appearance of pinholes where the top infill meets " +"the walls. A value of 25-30% is a good starting point, minimizing the " "appearance of pinholes. The percentage value is relative to line width of " "sparse infill" msgstr "" @@ -12527,12 +12579,12 @@ msgstr "Arayüz kabukları" msgid "" "Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual " -"soluble support material" +"Useful for multi-extruder prints with translucent materials or manual soluble " +"support material" msgstr "" "Bitişik malzemeler/hacimler arasında katı kabuk oluşumunu zorlayın. Yarı " -"saydam malzemelerle veya elle çözülebilen destek malzemesiyle çoklu " -"ekstruder baskıları için kullanışlıdır" +"saydam malzemelerle veya elle çözülebilen destek malzemesiyle çoklu ekstruder " +"baskıları için kullanışlıdır" msgid "Maximum width of a segmented region" msgstr "Bölümlere ayrılmış bir bölgenin maksimum genişliği" @@ -12554,8 +12606,7 @@ msgstr "" "Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği. " "“mmu_segmented_region_max_width” sıfırsa veya " "“mmu_segmented_region_interlocking_length”, “mmu_segmented_region_max_width” " -"değerinden büyükse göz ardı edilecektir. Sıfır bu özelliği devre dışı " -"bırakır." +"değerinden büyükse göz ardı edilecektir. Sıfır bu özelliği devre dışı bırakır." msgid "Use beam interlocking" msgstr "Işın kilitlemeyi kullanın" @@ -12599,8 +12650,7 @@ msgid "" "structure, measured in cells. Too few cells will result in poor adhesion." msgstr "" "Hücrelerde ölçülen, birbirine kenetlenen yapıyı oluşturmak için filamentler " -"arasındaki sınırdan mesafe. Çok az hücre yapışmanın zayıf olmasına neden " -"olur." +"arasındaki sınırdan mesafe. Çok az hücre yapışmanın zayıf olmasına neden olur." msgid "Interlocking boundary avoidance" msgstr "Birbirine kenetlenen sınırdan kaçınma" @@ -12619,9 +12669,9 @@ 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 "" -"Ütüleme, düz yüzeyi daha pürüzsüz hale getirmek için aynı yükseklikteki " -"yüzeye tekrar baskı yapmak için küçük akış kullanmaktır. Bu ayar hangi " -"katmanın ütüleneceğini kontrol eder" +"Ütüleme, düz yüzeyi daha pürüzsüz hale getirmek için aynı yükseklikteki yüzeye " +"tekrar baskı yapmak için küçük akış kullanmaktır. Bu ayar hangi katmanın " +"ütüleneceğini kontrol eder" msgid "No ironing" msgstr "Ütüleme yok" @@ -12648,8 +12698,8 @@ 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 "" -"Ütüleme sırasında çıkacak malzeme miktarı. Normal katman yüksekliğindeki " -"akışa göre. Çok yüksek değer yüzeyde aşırı ekstrüzyona neden olur" +"Ütüleme sırasında çıkacak malzeme miktarı. Normal katman yüksekliğindeki akışa " +"göre. Çok yüksek değer yüzeyde aşırı ekstrüzyona neden olur" msgid "Ironing line spacing" msgstr "Ütüleme çizgi aralığı" @@ -12658,12 +12708,13 @@ msgid "The distance between the lines of ironing" msgstr "Ütü çizgileri arasındaki mesafe" msgid "Ironing inset" -msgstr "" +msgstr "Ütüleme boşluğu" msgid "" "The distance to keep from the edges. A value of 0 sets this to half of the " "nozzle diameter" msgstr "" +"Kenarlardan korunacak mesafe. 0 değeri bunu nozül çapının yarısına ayarlar" msgid "Ironing speed" msgstr "Ütüleme hızı" @@ -12678,8 +12729,8 @@ msgid "" "The angle ironing is done at. A negative number disables this function and " "uses the default method." msgstr "" -"Köşebent ütüleme işlemi yapılır. Negatif bir sayı bu işlevi devre dışı " -"bırakır ve varsayılan yöntemi kullanır." +"Köşebent ütüleme işlemi yapılır. Negatif bir sayı bu işlevi devre dışı bırakır " +"ve varsayılan yöntemi kullanır." msgid "This gcode part is inserted at every layer change after lift z" msgstr "" @@ -12709,11 +12760,11 @@ msgstr "" "G kodu tadı Klipper olarak ayarlandığında bu seçenek göz ardı edilecektir." msgid "" -"This G-code will be used as a code for the pause print. User can insert " -"pause G-code in gcode viewer" +"This G-code will be used as a code for the pause print. User can insert pause " +"G-code in gcode viewer" msgstr "" -"Bu G kodu duraklatma yazdırması için bir kod olarak kullanılacaktır. " -"Kullanıcı gcode görüntüleyiciye duraklatma G kodunu ekleyebilir" +"Bu G kodu duraklatma yazdırması için bir kod olarak kullanılacaktır. Kullanıcı " +"gcode görüntüleyiciye duraklatma G kodunu ekleyebilir" msgid "This G-code will be used as a custom code" msgstr "Bu G kodu özel kod olarak kullanılacak" @@ -12841,8 +12892,8 @@ msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "Seyahat için maksimum ivme (M204 T), yalnızca Marlin 2 için geçerlidir" msgid "" -"Part cooling fan speed may be increased when auto cooling is enabled. This " -"is the maximum speed limitation of part cooling fan" +"Part cooling fan speed may be increased when auto cooling is enabled. This is " +"the maximum speed limitation of part cooling fan" msgstr "" "Otomatik soğutma etkinleştirildiğinde parça soğutma fanı hızı artırılabilir. " "Bu, parça soğutma fanının maksimum hız sınırlamasıdır" @@ -12854,16 +12905,16 @@ msgid "" "The largest printable layer height for extruder. Used tp limits the maximum " "layer hight when enable adaptive layer height" msgstr "" -"Ekstruder için yazdırılabilir en büyük katman yüksekliği. Uyarlanabilir " -"katman yüksekliği etkinleştirildiğinde maksimum katman yüksekliğini " -"sınırlamak için kullanılır" +"Ekstruder için yazdırılabilir en büyük katman yüksekliği. Uyarlanabilir katman " +"yüksekliği etkinleştirildiğinde maksimum katman yüksekliğini sınırlamak için " +"kullanılır" msgid "Extrusion rate smoothing" msgstr "Ekstrüzyon hızını yumuşatma" msgid "" -"This parameter smooths out sudden extrusion rate changes that happen when " -"the printer transitions from printing a high flow (high speed/larger width) " +"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" @@ -12873,13 +12924,12 @@ msgid "" "\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" +"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 " @@ -12901,13 +12951,13 @@ msgstr "" "\n" "0 değeri özelliği devre dışı bırakır. \n" "\n" -"Yüksek hızlı, yüksek akışlı doğrudan tahrikli bir yazıcı için (Bambu lab " -"veya Voron gibi) bu değer genellikle gerekli değildir. Ancak özellik " -"hızlarının büyük ölçüde değiştiği bazı durumlarda marjinal bir fayda " -"sağlayabilir. Örneğin, çıkıntılar nedeniyle agresif yavaşlamalar olduğunda. " -"Bu durumlarda 300-350mm3/s2 civarında yüksek bir değer önerilir çünkü bu, " -"basınç ilerlemesinin daha yumuşak bir akış geçişi elde etmesine yardımcı " -"olmak için yeterli yumuşatmaya izin verir.\n" +"Yüksek hızlı, yüksek akışlı doğrudan tahrikli bir yazıcı için (Bambu lab veya " +"Voron gibi) bu değer genellikle gerekli değildir. Ancak özellik hızlarının " +"büyük ölçüde değiştiği bazı durumlarda marjinal bir fayda sağlayabilir. " +"Örneğin, çıkıntılar nedeniyle agresif yavaşlamalar olduğunda. Bu durumlarda " +"300-350mm3/s2 civarında yüksek bir değer önerilir çünkü bu, basınç " +"ilerlemesinin daha yumuşak bir akış geçişi elde etmesine yardımcı olmak için " +"yeterli yumuşatmaya izin verir.\n" "\n" "Basınç avansı olmayan daha yavaş yazıcılar için değer çok daha düşük " "ayarlanmalıdır. Doğrudan tahrikli ekstruderler için 10-15mm3/s2 ve Bowden " @@ -12933,24 +12983,36 @@ msgid "" "\n" "Allowed values: 0.5-5" msgstr "" +"Daha düşük bir değer, daha düzgün ekstrüzyon hızı geçişleriyle sonuçlanır. " +"Ancak bu, önemli ölçüde daha büyük bir gcode dosyasına ve yazıcının işlemesi " +"için daha fazla talimata neden olur. \n" +"\n" +"Varsayılan 3 değeri çoğu durumda işe yarar. Yazıcınız tutukluk yapıyorsa, " +"yapılan ayarlama sayısını azaltmak için bu değeri artırın\n" +"\n" +"İzin verilen değerler: 0,5-5" msgid "Apply only on external features" -msgstr "" +msgstr "Yalnızca harici özelliklere uygula" msgid "" "Applies extrusion rate smoothing only on external perimeters and overhangs. " "This can help reduce artefacts due to sharp speed transitions on externally " -"visible overhangs without impacting the print speed of features that will " -"not be visible to the user." +"visible overhangs without impacting the print speed of features that will not " +"be visible to the user." msgstr "" +"Ekstrüzyon hızı yumuşatmayı yalnızca dış çevre ve çıkıntılara uygular. Bu, " +"kullanıcı tarafından görülmeyecek özelliklerin yazdırma hızını etkilemeden, " +"dışarıdan görülebilen çıkıntılarda keskin hız geçişlerinden kaynaklanan " +"bozulmaların azaltılmasına yardımcı olabilir." msgid "Minimum speed for part cooling fan" msgstr "Parça soğutma fanı için minimum hız" 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" +"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 "" @@ -12968,17 +13030,20 @@ msgid "" "layer hight when enable adaptive layer height" msgstr "" "Ekstruder için yazdırılabilir en düşük katman yüksekliği. Kullanılan tp, " -"uyarlanabilir katman yüksekliğini etkinleştirirken minimum katman " -"yüksekliğini sınırlar" +"uyarlanabilir katman yüksekliğini etkinleştirirken minimum katman yüksekliğini " +"sınırlar" msgid "Min print speed" msgstr "Minimum baskı hızı" msgid "" "The minimum print speed to which the printer slows down to maintain the " -"minimum layer time defined above when the slowdown for better layer cooling " -"is enabled." +"minimum layer time defined above when the slowdown for better layer cooling is " +"enabled." msgstr "" +"Daha iyi katman soğutması için yavaşlama etkinleştirildiğinde, yukarıda " +"tanımlanan minimum katman süresini korumak için yazıcının yavaşladığı minimum " +"yazdırma hızı." msgid "Diameter of nozzle" msgstr "Nozul çapı" @@ -12997,11 +13062,11 @@ msgid "Host Type" msgstr "Bağlantı Türü" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must " -"contain the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must contain " +"the kind of the host." msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " -"Bu alan ana bilgisayarın türünü içermelidir." +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"alan ana bilgisayarın türünü içermelidir." msgid "Nozzle volume" msgstr "Nozul hacmi" @@ -13020,8 +13085,7 @@ msgstr "Soğutma borusu uzunluğu" msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "" -"İçindeki soğutma hareketleri alanını sınırlamak üzere soğutma tüpünün " -"uzunluğu." +"İçindeki soğutma hareketleri alanını sınırlamak üzere soğutma tüpünün uzunluğu." msgid "High extruder current on filament swap" msgstr "Filament değişiminde yüksek ekstruder akımı" @@ -13031,9 +13095,9 @@ msgid "" "filament exchange sequence to allow for rapid ramming feed rates and to " "overcome resistance when loading a filament with an ugly shaped tip." msgstr "" -"Hızlı sıkıştırma hızlarına izin vermek ve kötü kesilmiş bir filament " -"yüklerken direncin üstesinden gelmek için filament değişim sırası sırasında " -"ekstruder motor akımını artırmak faydalı olabilir." +"Hızlı sıkıştırma hızlarına izin vermek ve kötü kesilmiş bir filament yüklerken " +"direncin üstesinden gelmek için filament değişim sırası sırasında ekstruder " +"motor akımını artırmak faydalı olabilir." msgid "Filament parking position" msgstr "Filament park konumu" @@ -13042,8 +13106,8 @@ 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 "" -"Ekstruder ucunun, boşaltıldığında filamentin park edildiği konumdan " -"uzaklığı. Bu ayar yazıcı ürün yazılımındaki değerle eşleşmelidir." +"Ekstruder ucunun, boşaltıldığında filamentin park edildiği konumdan uzaklığı. " +"Bu ayar yazıcı ürün yazılımındaki değerle eşleşmelidir." msgid "Extra loading distance" msgstr "Ekstra yükleme mesafesi" @@ -13051,8 +13115,8 @@ msgstr "Ekstra yükleme mesafesi" 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." +"positive, it is loaded further, if negative, the loading move is shorter than " +"unloading." msgstr "" "Sıfır olarak ayarlandığında, yükleme sırasında filamentin park konumundan " "taşındığı mesafe, boşaltma sırasında geri taşındığı mesafe ile aynıdır. " @@ -13070,13 +13134,13 @@ msgstr "Dolguda geri çekmeyi azalt" 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" +"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 "" "Hareket kesinlikle dolgu alanına girdiğinde geri çekilmeyin. Bu, sızıntının " "görülemeyeceği anlamına gelir. Bu, karmaşık model için geri çekme sürelerini " -"azaltabilir ve yazdırma süresinden tasarruf sağlayabilir, ancak dilimlemeyi " -"ve G kodu oluşturmayı yavaşlatır" +"azaltabilir ve yazdırma süresinden tasarruf sağlayabilir, ancak dilimlemeyi ve " +"G kodu oluşturmayı yavaşlatır" msgid "" "This option will drop the temperature of the inactive extruders to prevent " @@ -13104,22 +13168,22 @@ msgstr "Maksimum yazdırılabilir açı" 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." +"printable.90° will not change the model at all and allow any overhang, while 0 " +"will replace all overhangs with conical material." msgstr "" "Daha dik çıkıntıları yazdırılabilir hale getirdikten sonra izin verilen " -"maksimum çıkıntı açısı. 90°, modeli hiçbir şekilde değiştirmez ve herhangi " -"bir çıkıntıya izin vermez, 0 ise tüm çıkıntıları konik malzemeyle değiştirir." +"maksimum çıkıntı açısı. 90°, modeli hiçbir şekilde değiştirmez ve herhangi bir " +"çıkıntıya izin vermez, 0 ise tüm çıkıntıları konik malzemeyle değiştirir." msgid "Make overhangs printable - Hole area" msgstr "Yazdırılabilir çıkıntı delik alanı oluşturun" 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." +"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 "" -"Modelin tabanındaki bir deliğin, konik malzemeyle doldurulmadan önce " -"maksimum alanı. 0 değeri, model tabanındaki tüm delikleri dolduracaktır." +"Modelin tabanındaki bir deliğin, konik malzemeyle doldurulmadan önce maksimum " +"alanı. 0 değeri, model tabanındaki tüm delikleri dolduracaktır." msgid "mm²" msgstr "mm²" @@ -13129,11 +13193,11 @@ msgstr "Çıkıntılı duvarı algıla" #, 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." +"Detect the overhang percentage relative to line width and use different speed " +"to print. For 100%% overhang, bridge speed is used." msgstr "" -"Çizgi genişliğine göre çıkıntı yüzdesini tespit edin ve yazdırmak için " -"farklı hızlar kullanın. %%100 çıkıntı için köprü hızı kullanılır." +"Çizgi genişliğine göre çıkıntı yüzdesini tespit edin ve yazdırmak için farklı " +"hızlar kullanın. %%100 çıkıntı için köprü hızı kullanılır." msgid "Filament to print walls" msgstr "Duvarları yazdırmak için filament" @@ -13155,11 +13219,11 @@ msgid "Alternate extra wall" msgstr "Alternatif ekstra duvar" msgid "" -"This setting adds an extra wall to every other layer. This way the infill " -"gets wedged vertically between the walls, resulting in stronger prints. \n" +"This setting adds an extra wall to every other layer. This way the infill gets " +"wedged vertically between the walls, resulting in stronger prints. \n" "\n" -"When this option is enabled, the ensure vertical shell thickness option " -"needs to be disabled. \n" +"When this option is enabled, the ensure vertical shell thickness option needs " +"to be disabled. \n" "\n" "Using lightning infill together with this option is not recommended as there " "is limited infill to anchor the extra perimeters to." @@ -13170,21 +13234,20 @@ msgstr "" "Bu seçenek etkinleştirildiğinde dikey kabuk kalınlığını sağla seçeneğinin " "devre dışı bırakılması gerekir. \n" "\n" -"İlave çevrelerin sabitleneceği dolgu sınırlı olduğundan, bu seçenekle " -"birlikte yıldırım dolgusunun kullanılması önerilmez." +"İlave çevrelerin sabitleneceği dolgu sınırlı olduğundan, bu seçenekle birlikte " +"yıldırım dolgusunun kullanılması önerilmez." 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 Orca Slicer config settings by reading " -"environment variables." +"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 Orca Slicer config settings by reading environment " +"variables." msgstr "" -"Çıktı G-kodunu özel komut dosyaları aracılığıyla işlemek istiyorsanız, " -"mutlak yollarını burada listeleyin. Birden fazla betiği noktalı virgülle " -"ayırın. Betiklere ilk argüman olarak G-code dosyasının mutlak yolu aktarılır " -"ve ortam değişkenlerini okuyarak Orca Slicer yapılandırma ayarlarına " -"erişebilirler." +"Çıktı G-kodunu özel komut dosyaları aracılığıyla işlemek istiyorsanız, mutlak " +"yollarını burada listeleyin. Birden fazla betiği noktalı virgülle ayırın. " +"Betiklere ilk argüman olarak G-code dosyasının mutlak yolu aktarılır ve ortam " +"değişkenlerini okuyarak Orca Slicer yapılandırma ayarlarına erişebilirler." msgid "Printer type" msgstr "Yazıcı türü" @@ -13205,8 +13268,7 @@ msgid "Raft contact Z distance" msgstr "Raft kontak Z mesafesi" msgid "Z gap between object and raft. Ignored for soluble interface" -msgstr "" -"Nesne ve raft arasındaki Z boşluğu. Çözünür arayüz için göz ardı edildi" +msgstr "Nesne ve raft arasındaki Z boşluğu. Çözünür arayüz için göz ardı edildi" msgid "Raft expansion" msgstr "Raft genişletme" @@ -13235,8 +13297,8 @@ msgid "" "Object will be raised by this number of support layers. Use this function to " "avoid wrapping when print ABS" msgstr "" -"Nesne bu sayıdaki destek katmanı tarafından yükseltilecektir. ABS " -"yazdırırken sarmayı önlemek için bu işlevi kullanın" +"Nesne bu sayıdaki destek katmanı tarafından yükseltilecektir. ABS yazdırırken " +"sarmayı önlemek için bu işlevi kullanın" msgid "" "G-code path is generated after simplifying the contour of model to avoid too " @@ -13251,8 +13313,7 @@ msgid "Travel distance threshold" msgstr "Seyahat mesafesi" msgid "" -"Only trigger retraction when the travel distance is longer than this " -"threshold" +"Only trigger retraction when the travel distance is longer than this threshold" msgstr "" "Geri çekmeyi yalnızca hareket mesafesi bu eşikten daha uzun olduğunda " "tetikleyin" @@ -13260,8 +13321,7 @@ msgstr "" msgid "Retract amount before wipe" msgstr "Temizleme işlemi öncesi geri çekme miktarı" -msgid "" -"The length of fast retraction before wipe, relative to retraction length" +msgid "The length of fast retraction before wipe, relative to retraction length" msgstr "" "Geri çekme uzunluğuna göre, temizlemeden önce hızlı geri çekilmenin uzunluğu" @@ -13278,8 +13338,8 @@ msgid "" "Force a retraction on top layer. Disabling could prevent clog on very slow " "patterns with small movements, like Hilbert curve" msgstr "" -"Üst katmanda geri çekilmeye zorlayın. Devre dışı bırakmak, Hilbert eğrisi " -"gibi küçük hareketlerin olduğu çok yavaş modellerde tıkanmayı önleyebilir" +"Üst katmanda geri çekilmeye zorlayın. Devre dışı bırakmak, Hilbert eğrisi gibi " +"küçük hareketlerin olduğu çok yavaş modellerde tıkanmayı önleyebilir" msgid "Retraction Length" msgstr "Geri Çekme Uzunluğu" @@ -13365,8 +13425,8 @@ msgid "Traveling angle" msgstr "Seyahat açısı" msgid "" -"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results " -"in Normal Lift" +"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results in " +"Normal Lift" msgstr "" "Eğim ve Spiral Z atlama tipi için ilerleme açısı. 90°’ye ayarlamak normal " "kaldırmayla sonuçlanır" @@ -13398,8 +13458,8 @@ msgid "" "Enforce Z Hop behavior. This setting is impacted by the above settings (Only " "lift Z above/below)." msgstr "" -"Z Hop davranışını zorunlu kılın. Bu ayar yukarıdaki ayarlardan etkilenir " -"(Z'yi yalnızca yukarıya/aşağıya kaldırın)." +"Z Hop davranışını zorunlu kılın. Bu ayar yukarıdaki ayarlardan etkilenir (Z'yi " +"yalnızca yukarıya/aşağıya kaldırın)." msgid "All Surfaces" msgstr "Tüm Yüzeyler" @@ -13424,8 +13484,8 @@ msgstr "" "filament miktarını itecektir. Bu ayara nadiren ihtiyaç duyulur." msgid "" -"When the retraction is compensated after changing tool, the extruder will " -"push this additional amount of filament." +"When the retraction is compensated after changing tool, the extruder will push " +"this additional amount of filament." msgstr "" "Takım değiştirildikten sonra geri çekilme telafi edildiğinde, ekstruder bu " "ilave filament miktarını itecektir." @@ -13494,20 +13554,20 @@ msgid "" "This option causes the inner seams to be shifted backwards based on their " "depth, forming a zigzag pattern." msgstr "" -"Bu seçenek, iç dikişlerin derinliklerine göre geriye doğru kaydırılarak " -"zikzak desen oluşturulmasına neden olur." +"Bu seçenek, iç dikişlerin derinliklerine göre geriye doğru kaydırılarak zikzak " +"desen oluşturulmasına neden olur." msgid "Seam gap" msgstr "Dikiş boşluğu" 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 "" -"Kapalı döngü ekstrüzyonda dikişin görünürlüğünü azaltmak için döngü " -"kesintiye uğrar ve belirli bir miktarda kısaltılır.\n" +"Kapalı döngü ekstrüzyonda dikişin görünürlüğünü azaltmak için döngü kesintiye " +"uğrar ve belirli bir miktarda kısaltılır.\n" "Bu miktar milimetre cinsinden veya mevcut ekstruder çapının yüzdesi olarak " "belirtilebilir. Bu parametrenin varsayılan değeri %10'dur." @@ -13516,8 +13576,8 @@ msgstr "Atkı birleşim dikişi (beta)" msgid "Use scarf joint to minimize seam visibility and increase seam strength." msgstr "" -"Dikiş görünürlüğünü en aza indirmek ve dikiş mukavemetini arttırmak için " -"atkı birleşimini kullanın." +"Dikiş görünürlüğünü en aza indirmek ve dikiş mukavemetini arttırmak için atkı " +"birleşimini kullanın." msgid "Conditional scarf joint" msgstr "Koşullu atkı birleşimi" @@ -13535,9 +13595,9 @@ msgstr "Koşullu açı eşiği" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " "seam.\n" -"If the maximum angle within the perimeter loop exceeds this value " -"(indicating the absence of sharp corners), a scarf joint seam will be used. " -"The default value is 155°." +"If the maximum angle within the perimeter loop exceeds this value (indicating " +"the absence of sharp corners), a scarf joint seam will be used. The default " +"value is 155°." msgstr "" "Bu seçenek, koşullu bir atkı eklem dikişi uygulamak için eşik açısını " "ayarlar.\n" @@ -13552,8 +13612,8 @@ msgstr "Koşullu çıkıntı eşiği" msgid "" "This option determines the overhang threshold for the application of scarf " "joint seams. If the unsupported portion of the perimeter is less than this " -"threshold, scarf joint seams will be applied. The default threshold is set " -"at 40% of the external wall's width. Due to performance considerations, the " +"threshold, scarf joint seams will be applied. The default threshold is set at " +"40% of the external wall's width. Due to performance considerations, the " "degree of overhang is estimated." msgstr "" "Bu seçenek, atkı bağlantı dikişlerinin uygulanması için sarkma eşiğini " @@ -13567,22 +13627,22 @@ msgstr "Atkı birleşim hızı" msgid "" "This option sets the printing speed for scarf joints. It is recommended to " -"print scarf joints at a slow speed (less than 100 mm/s). It's also " -"advisable to enable 'Extrusion rate smoothing' if the set speed varies " -"significantly from the speed of the outer or inner walls. If the speed " -"specified here is higher than the speed of the outer or inner walls, the " -"printer will default to the slower of the two speeds. When specified as a " -"percentage (e.g., 80%), the speed is calculated based on the respective " -"outer or inner wall speed. The default value is set to 100%." +"print scarf joints at a slow speed (less than 100 mm/s). It's also advisable " +"to enable 'Extrusion rate smoothing' if the set speed varies significantly " +"from the speed of the outer or inner walls. If the speed specified here is " +"higher than the speed of the outer or inner walls, the printer will default to " +"the slower of the two speeds. When specified as a percentage (e.g., 80%), the " +"speed is calculated based on the respective outer or inner wall speed. The " +"default value is set to 100%." msgstr "" -"Bu seçenek, atkı bağlantılarının yazdırma hızını ayarlar. Atkı " -"bağlantılarının yavaş bir hızda (100 mm/s'den az) yazdırılması tavsiye " -"edilir. Ayarlanan hızın dış veya iç duvarların hızından önemli ölçüde farklı " -"olması durumunda 'Ekstrüzyon hızı yumuşatma' seçeneğinin etkinleştirilmesi " -"de tavsiye edilir. Burada belirtilen hız, dış veya iç duvarların hızından " -"daha yüksekse, yazıcı varsayılan olarak iki hızdan daha yavaş olanı " -"seçecektir. Yüzde olarak belirtildiğinde (örn. %80), hız, ilgili dış veya iç " -"duvar hızına göre hesaplanır. Varsayılan değer %100 olarak ayarlanmıştır." +"Bu seçenek, atkı bağlantılarının yazdırma hızını ayarlar. Atkı bağlantılarının " +"yavaş bir hızda (100 mm/s'den az) yazdırılması tavsiye edilir. Ayarlanan hızın " +"dış veya iç duvarların hızından önemli ölçüde farklı olması durumunda " +"'Ekstrüzyon hızı yumuşatma' seçeneğinin etkinleştirilmesi de tavsiye edilir. " +"Burada belirtilen hız, dış veya iç duvarların hızından daha yüksekse, yazıcı " +"varsayılan olarak iki hızdan daha yavaş olanı seçecektir. Yüzde olarak " +"belirtildiğinde (örn. %80), hız, ilgili dış veya iç duvar hızına göre " +"hesaplanır. Varsayılan değer %100 olarak ayarlanmıştır." msgid "Scarf joint flow ratio" msgstr "Atkı birleşimi akış oranı" @@ -13596,12 +13656,12 @@ msgstr "Atkı başlangıç ​​yüksekliği" msgid "" "Start height of the scarf.\n" -"This amount can be specified in millimeters or as a percentage of the " -"current layer height. The default value for this parameter is 0." +"This amount can be specified in millimeters or as a percentage of the current " +"layer height. The default value for this parameter is 0." msgstr "" "Atkı başlangıç yüksekliği.\n" -"Bu miktar milimetre cinsinden veya geçerli katman yüksekliğinin yüzdesi " -"olarak belirtilebilir. Bu parametrenin varsayılan değeri 0'dır." +"Bu miktar milimetre cinsinden veya geçerli katman yüksekliğinin yüzdesi olarak " +"belirtilebilir. Bu parametrenin varsayılan değeri 0'dır." msgid "Scarf around entire wall" msgstr "Tüm duvarın etrafına atkıla" @@ -13616,8 +13676,8 @@ msgid "" "Length of the scarf. Setting this parameter to zero effectively disables the " "scarf." msgstr "" -"Atkının uzunluğu. Bu parametrenin 0 a ayarlanması atkıyı dolaylı yoldan " -"devre dışı bırakır." +"Atkının uzunluğu. Bu parametrenin 0 a ayarlanması atkıyı dolaylı yoldan devre " +"dışı bırakır." msgid "Scarf steps" msgstr "Atkı kademesi" @@ -13639,9 +13699,9 @@ msgid "" "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 "" -"Temizleme hızı mevcut ekstrüzyon rolünün hızına göre belirlenir; bir dış " -"duvar ekstrüzyonunun hemen ardından bir silme eylemi yürütülürse, silme " -"eylemi için dış duvar ekstrüzyonunun hızı kullanılacaktır." +"Temizleme hızı mevcut ekstrüzyon rolünün hızına göre belirlenir; bir dış duvar " +"ekstrüzyonunun hemen ardından bir silme eylemi yürütülürse, silme eylemi için " +"dış duvar ekstrüzyonunun hızı kullanılacaktır." msgid "Wipe on loops" msgstr "Döngülerde temizleme" @@ -13658,15 +13718,15 @@ msgid "Wipe before external loop" msgstr "Harici döngüden önce silin" msgid "" -"To minimize visibility of potential overextrusion at the start of an " -"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " -"print order, the de-retraction is performed slightly on the inside from the " -"start of the external perimeter. That way any potential over extrusion is " -"hidden from the outside surface. \n" +"To minimize visibility of potential overextrusion at the start of an external " +"perimeter when printing with Outer/Inner or Inner/Outer/Inner wall print " +"order, the de-retraction is performed slightly on the inside from the start of " +"the external perimeter. That way any potential over extrusion is hidden from " +"the outside surface. \n" "\n" -"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " -"print order as in these modes it is more likely an external perimeter is " -"printed immediately after a de-retraction move." +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall print " +"order as in these modes it is more likely an external perimeter is printed " +"immediately after a de-retraction move." msgstr "" "Dış/İç veya İç/Dış/İç duvar baskı sırası ile yazdırırken, dış çevrenin " "başlangıcında olası aşırı çıkıntının görünürlüğünü en aza indirmek için, " @@ -13674,22 +13734,22 @@ msgstr "" "gerçekleştirilir. Bu şekilde herhangi bir aşırı ekstrüzyon potansiyeli dış " "yüzeyden gizlenir. \n" "\n" -"Bu, Dış/İç veya İç/Dış/İç duvar yazdırma sırası ile yazdırırken " -"kullanışlıdır, çünkü bu modlarda, bir geri çekilme hareketinin hemen " -"ardından bir dış çevrenin yazdırılması daha olasıdır." +"Bu, Dış/İç veya İç/Dış/İç duvar yazdırma sırası ile yazdırırken kullanışlıdır, " +"çünkü bu modlarda, bir geri çekilme hareketinin hemen ardından bir dış " +"çevrenin yazdırılması daha olasıdır." msgid "Wipe speed" msgstr "Temizleme hızı" 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%" +"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 "" "Temizleme hızı, bu konfigürasyonda belirtilen hız ayarına göre belirlenir. " -"Değer yüzde olarak ifade edilirse (örn. %80), yukarıdaki ilerleme hızı " -"ayarına göre hesaplanır. Bu parametrenin varsayılan değeri %80'dir" +"Değer yüzde olarak ifade edilirse (örn. %80), yukarıdaki ilerleme hızı ayarına " +"göre hesaplanır. Bu parametrenin varsayılan değeri %80'dir" msgid "Skirt distance" msgstr "Etek mesafesi" @@ -13724,13 +13784,12 @@ msgid "" "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt " "height' is used.\n" "Note: With the draft shield active, the skirt will be printed at skirt " -"distance from the object. Therefore, if brims are active it may intersect " -"with them. To avoid this, increase the skirt distance value.\n" +"distance from the object. Therefore, if brims are active it may intersect with " +"them. To avoid this, increase the skirt distance value.\n" msgstr "" -"Rüzgar taslağı nedeniyle ABS veya ASA baskının eğrilmesine ve baskı " -"yatağından ayrılmasına karşı koruma sağlamak için bir rüzgarlık " -"kullanışlıdır. Genellikle yalnızca açık çerçeveli, yani muhafazasız " -"yazıcılarda gereklidir. \n" +"Rüzgar taslağı nedeniyle ABS veya ASA baskının eğrilmesine ve baskı yatağından " +"ayrılmasına karşı koruma sağlamak için bir rüzgarlık kullanışlıdır. Genellikle " +"yalnızca açık çerçeveli, yani muhafazasız yazıcılarda gereklidir. \n" "\n" "Etkin = etek, yazdırılan en yüksek nesne kadar uzun. Aksi takdirde ‘Etek " "yüksekliği’ kullanılır.\n" @@ -13745,10 +13804,8 @@ msgid "Skirt type" msgstr "Etek tipi" msgid "" -"Combined - single skirt for all objects, Per object - individual object " -"skirt." -msgstr "" -"Birleşik - tüm nesneler için tek etek, Nesneye göre - ayrı nesne eteği." +"Combined - single skirt for all objects, Per object - individual object skirt." +msgstr "Birleşik - tüm nesneler için tek etek, Nesneye göre - ayrı nesne eteği." msgid "Combined" msgstr "Birleşik" @@ -13760,8 +13817,7 @@ msgid "Skirt loops" msgstr "Etek sayısı" msgid "Number of loops for the skirt. Zero means disabling skirt" -msgstr "" -"Etek için ilmek sayısı. Sıfır, eteği devre dışı bırakmak anlamına gelir" +msgstr "Etek için ilmek sayısı. Sıfır, eteği devre dışı bırakmak anlamına gelir" msgid "Skirt speed" msgstr "Etek hızı" @@ -13780,16 +13836,16 @@ msgid "" "\n" "Using a non zero value is useful if the printer is set up to print without a " "prime line.\n" -"Final number of loops is not taling into account whli arranging or " -"validating objects distance. Increase loop number in such case. " +"Final number of loops is not taling into account whli arranging or validating " +"objects distance. Increase loop number in such case. " msgstr "" -"Etek yazdırılırken mm cinsinden minimum filaman ekstrüzyon uzunluğu. Sıfır, " -"bu özelliğin devre dışı olduğu anlamına gelir.\n" +"Etek yazdırılırken mm cinsinden minimum filaman ekstrüzyon uzunluğu. Sıfır, bu " +"özelliğin devre dışı olduğu anlamına gelir.\n" "\n" "Yazıcı ana hat olmadan yazdırmak üzere ayarlanmışsa sıfır dışında bir değer " "kullanmak yararlı olur.\n" -"Nihai döngü sayısı, nesnelerin mesafesini düzenlerken veya doğrularken " -"dikkate alınmaz. Böyle bir durumda döngü sayısını artırın." +"Nihai döngü sayısı, nesnelerin mesafesini düzenlerken veya doğrularken dikkate " +"alınmaz. Böyle bir durumda döngü sayısını artırın." msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " @@ -13816,33 +13872,33 @@ msgid "Filament to print solid infill" msgstr "Katı dolguyu yazdırmak için filament" msgid "" -"Line width of internal solid infill. If expressed as a %, it will be " -"computed over the nozzle diameter." +"Line width of internal solid infill. If expressed as a %, it will be computed " +"over the nozzle diameter." msgstr "" -"İç katı dolgunun çizgi genişliği. % olarak ifade edilirse Nozul çapı " -"üzerinden hesaplanacaktır." +"İç katı dolgunun çizgi genişliği. % olarak ifade edilirse Nozul çapı üzerinden " +"hesaplanacaktır." msgid "Speed of internal solid infill, not the top and bottom surface" msgstr "Üst ve alt yüzeyin değil, iç katı dolgunun hızı" 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" +"model into a single walled print with solid bottom layers. The final generated " +"model has no seam" msgstr "" "Spiralleştirme, dış konturun z hareketlerini yumuşatır. Ve katı bir modeli, " -"katı alt katmanlara sahip tek duvarlı bir baskıya dönüştürür. Oluşturulan " -"son modelde dikiş yok." +"katı alt katmanlara sahip tek duvarlı bir baskıya dönüştürür. Oluşturulan son " +"modelde dikiş yok." msgid "Smooth Spiral" msgstr "Pürüzsüz spiral" msgid "" -"Smooth Spiral smooths out X and Y moves as well, resulting in no visible " -"seam at all, even in the XY directions on walls that are not vertical" +"Smooth Spiral smooths out X and Y moves as well, resulting in no visible seam " +"at all, even in the XY directions on walls that are not vertical" msgstr "" -"Pürüzsüz Spiral, X ve Y hareketlerini de yumuşatır ve dikey olmayan " -"duvarlarda XY yönlerinde bile hiçbir görünür ek yeri oluşmamasını sağlar." +"Pürüzsüz Spiral, X ve Y hareketlerini de yumuşatır ve dikey olmayan duvarlarda " +"XY yönlerinde bile hiçbir görünür ek yeri oluşmamasını sağlar." msgid "Max XY Smoothing" msgstr "Maksimum xy yumuşatma" @@ -13854,30 +13910,34 @@ msgstr "" "Düzgün bir spiral elde etmek için XY'deki noktaları hareket ettirmek için " "maksimum mesafe % olarak ifade edilirse nozül çapı üzerinden hesaplanacaktır." -#, c-format, boost-format msgid "" -"Sets the starting flow ratio while transitioning from the last bottom layer " -"to the spiral. Normally the spiral transition scales the flow ratio from " -"0% to 100% during the first loop which can in some cases lead to under " -"extrusion at the start of the spiral." +"Sets the starting flow ratio while transitioning from the last bottom layer to " +"the spiral. Normally the spiral transition scales the flow ratio from 0% to " +"100% during the first loop which can in some cases lead to under extrusion at " +"the start of the spiral." msgstr "" +"Son alt katmandan spirale geçiş sırasında başlangıç ​​akış oranını ayarlar. " +"Normalde spiral geçiş, ilk döngü sırasında akış oranını %0 dan %100 e " +"ölçeklendirir; bu da bazı durumlarda spiralin başlangıcında yetersiz " +"ekstrüzyona yol açabilir." -#, c-format, boost-format msgid "" "Sets the finishing flow ratio while ending the spiral. Normally the spiral " "transition scales the flow ratio from 100% to 0% during the last loop which " "can in some cases lead to under extrusion at the end of the spiral." msgstr "" +"Spirali sonlandırırken bitirme akış oranını ayarlar. Normalde spiral geçiş, " +"son döngü sırasında akış oranını %100 den %0 a ölçeklendirir; bu da bazı " +"durumlarda spiralin sonunda yetersiz ekstrüzyona yol açabilir." 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 "" "Düzgün veya geleneksel mod seçilirse her baskı için bir hızlandırılmış video " "oluşturulacaktır. Her katman basıldıktan sonra oda kamerasıyla anlık görüntü " @@ -13896,9 +13956,9 @@ msgstr "Sıcaklık değişimi" #. TRN PrintSettings : "Ooze prevention" > "Temperature variation" msgid "" -"Temperature difference to be applied when an extruder is not active. The " -"value is not used when 'idle_temperature' in filament settings is set to non " -"zero value." +"Temperature difference to be applied when an extruder is not active. The value " +"is not used when 'idle_temperature' in filament settings is set to non zero " +"value." msgstr "" "Ekstruder aktif olmadığında uygulanacak sıcaklık farkı. Filament ayarlarında " "‘rölanti sıcaklığı’ sıfır olmayan bir değere ayarlandığında bu değer " @@ -13950,14 +14010,12 @@ 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." +"printing, where we use M600/PAUSE to trigger the manual filament change action." msgstr "" "Sadece baskının başında özel Filament Değiştirme G-kodu'nu atlamak için bu " -"seçeneği etkinleştirin. Aracı değiştirme komutu (örneğin, T0), baskının " -"tamamı boyunca atlanacaktır. Bu, manuel çoklu malzeme baskısı için " -"kullanışlıdır, burada manuel filament değişim eylemini tetiklemek için M600/" -"PAUSE kullanırız." +"seçeneği etkinleştirin. Aracı değiştirme komutu (örneğin, T0), baskının tamamı " +"boyunca atlanacaktır. Bu, manuel çoklu malzeme baskısı için kullanışlıdır, " +"burada manuel filament değişim eylemini tetiklemek için M600/PAUSE kullanırız." msgid "Purge in prime tower" msgstr "Prime tower'da temizlik" @@ -13972,10 +14030,9 @@ msgid "No sparse layers (beta)" msgstr "Seyrek katman yok (beta)" 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." +"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 "" "Etkinleştirilirse, silme kulesi araç değişimi olmayan katmanlarda " "yazdırılmayacaktır. Araç değişimi olan katmanlarda, ekstruder silme kulesini " @@ -13996,23 +14053,23 @@ msgid "Slice gap closing radius" msgstr "Dilim aralığı kapanma yarıçapı" 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." +"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 "" -"Üçgen mesh dilimleme sırasında 2x boşluk kapatma yarıçapından küçük " -"çatlaklar doldurulmaktadır. Boşluk kapatma işlemi son yazdırma çözünürlüğünü " +"Üçgen mesh dilimleme sırasında 2x boşluk kapatma yarıçapından küçük çatlaklar " +"doldurulmaktadır. Boşluk kapatma işlemi son yazdırma çözünürlüğünü " "düşürebilir, bu nedenle değerin oldukça düşük tutulması tavsiye edilir." msgid "Slicing Mode" msgstr "Dilimleme modu" msgid "" -"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " -"close all holes in the model." +"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close " +"all holes in the model." msgstr "" -"3DLabPrint uçak modelleri için \"Çift-tek\" seçeneğini kullanın. Modeldeki " -"tüm delikleri kapatmak için \"Delikleri kapat\"ı kullanın." +"3DLabPrint uçak modelleri için \"Çift-tek\" seçeneğini kullanın. Modeldeki tüm " +"delikleri kapatmak için \"Delikleri kapat\"ı kullanın." msgid "Regular" msgstr "Düzenli" @@ -14032,11 +14089,10 @@ msgid "" "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 "" -"Bu değer, çıkış G-kodu içindeki tüm Z koordinatlarına eklenir (veya " -"çıkarılır).Bu, kötü Z endstop konumunu telafi etmek için kullanılır: " -"örneğin, endstop sıfır noktanız aslında nozulu baskı plakasından 0.3mm " -"uzakta bırakıyorsa, bu değeri -0.3 olarak ayarlayın (veya endstop'unuzu " -"düzeltin)." +"Bu değer, çıkış G-kodu içindeki tüm Z koordinatlarına eklenir (veya çıkarılır)." +"Bu, kötü Z endstop konumunu telafi etmek için kullanılır: örneğin, endstop " +"sıfır noktanız aslında nozulu baskı plakasından 0.3mm uzakta bırakıyorsa, bu " +"değeri -0.3 olarak ayarlayın (veya endstop'unuzu düzeltin)." msgid "Enable support" msgstr "Desteği etkinleştir" @@ -14049,18 +14105,21 @@ msgid "" "Normal (manual) or Tree (manual) is selected, only support enforcers are " "generated" msgstr "" +"Desteğin otomatik olarak oluşturulması için Normal (Otomatik) ve Ağaç " +"(Otomatik) kullanılır. Normal (Manuel) veya Ağaç (Manuel) seçilirse yalnızca " +"destek uygulayıcıları oluşturulur" msgid "Normal (auto)" -msgstr "" +msgstr "Normal (Otomatik)" msgid "Tree (auto)" -msgstr "" +msgstr "Ağaç (Otomatik)" msgid "Normal (manual)" -msgstr "" +msgstr "Normal (Manuel)" msgid "Tree (manual)" -msgstr "" +msgstr "Ağaç (Manuel)" msgid "Support/object xy distance" msgstr "Destek/nesne xy mesafesi" @@ -14084,11 +14143,9 @@ msgid "Support critical regions only" msgstr "Yalnızca kritik bölgeleri destekleyin" msgid "" -"Only create support for critical regions including sharp tail, cantilever, " -"etc." +"Only create support for critical regions including sharp tail, cantilever, etc." msgstr "" -"Yalnızca keskin kuyruk, konsol vb. gibi kritik bölgeler için destek " -"oluşturun." +"Yalnızca keskin kuyruk, konsol vb. gibi kritik bölgeler için destek oluşturun." msgid "Remove small overhangs" msgstr "Küçük çıkıntıları kaldır" @@ -14122,11 +14179,9 @@ msgstr "" msgid "Avoid interface filament for base" msgstr "Taban için arayüz filamentini azaltın" -msgid "" -"Avoid using support interface filament to print support base if possible." +msgid "Avoid using support interface filament to print support base if possible." msgstr "" -"Destek tabanını yazdırmak için destek arayüzü filamentini kullanmaktan " -"kaçının" +"Destek tabanını yazdırmak için destek arayüzü filamentini kullanmaktan kaçının" msgid "" "Line width of support. If expressed as a %, it will be computed over the " @@ -14201,8 +14256,8 @@ msgstr "Arayüz deseni" msgid "" "Line pattern of support interface. Default pattern for non-soluble support " -"interface is Rectilinear, while default pattern for soluble support " -"interface is Concentric" +"interface is Rectilinear, while default pattern for soluble support interface " +"is Concentric" msgstr "" "Destek arayüzünün çizgi deseni. Çözünmeyen destek arayüzü için varsayılan " "model Doğrusaldır, çözünebilir destek arayüzü için varsayılan model ise " @@ -14230,19 +14285,18 @@ 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." +"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 "" -"Destek stil ve şekli. Normal destek için, destekleri düzenli bir ızgara " -"içine projelendirmek daha stabil destekler oluşturacaktır (varsayılan), aynı " -"zamanda sıkı destek kuleleri malzeme tasarrufu sağlar ve nesne üzerindeki " -"izleri azaltır.\n" +"Destek stil ve şekli. Normal destek için, destekleri düzenli bir ızgara içine " +"projelendirmek daha stabil destekler oluşturacaktır (varsayılan), aynı zamanda " +"sıkı destek kuleleri malzeme tasarrufu sağlar ve nesne üzerindeki izleri " +"azaltır.\n" "Ağaç destek için, ince ve organik tarz, dalları daha etkili bir şekilde " "birleştirir ve büyük düz çıkıntılarda normal destekle benzer bir yapı " -"oluştururken birçok malzeme tasarrufu sağlar (varsayılan organik tarz). " -"Hybrid stil, büyük düz çıkıntıların altında normal destekle benzer bir yapı " +"oluştururken birçok malzeme tasarrufu sağlar (varsayılan organik tarz). Hybrid " +"stil, büyük düz çıkıntıların altında normal destekle benzer bir yapı " "oluşturacaktır." msgid "Default (Grid/Organic" @@ -14268,13 +14322,13 @@ msgstr "Bağımsız destek katmanı yüksekliği" 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." +"support customizing z-gap and save print time.This option will be invalid when " +"the prime tower is enabled." msgstr "" "Destek katmanı, nesne katmanından bağımsız olarak katman yüksekliğini " "kullanır. Bu, z aralığının özelleştirilmesine destek olmak ve yazdırma " -"süresinden tasarruf etmek içindir. Prime tower etkinleştirildiğinde bu " -"seçenek geçersiz olacaktır." +"süresinden tasarruf etmek içindir. Prime tower etkinleştirildiğinde bu seçenek " +"geçersiz olacaktır." msgid "Threshold angle" msgstr "Destek açısı" @@ -14285,21 +14339,24 @@ msgid "" msgstr "Eğim açısı eşiğin altında olan çıkmalar için destek oluşturulacaktır." msgid "Threshold overlap" -msgstr "" +msgstr "Eşik çakışması" msgid "" "If threshold angle is zero, support will be generated for overhangs whose " "overlap is below the threshold. The smaller this value is, the steeper the " "overhang that can be printed without support." msgstr "" +"Eşik açısı sıfır ise örtüşmesi eşiğin altında olan çıkıntılar için destek " +"oluşturulacaktır. Bu değer ne kadar küçük olursa, desteksiz yazdırılabilecek " +"çıkıntı da o kadar dik olur." msgid "Tree support branch angle" msgstr "Ağaç desteği dal açısı" 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." +"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 "" "Bu ayar, ağaç desteğinin dallarının oluşmasına izin verilen maksimum çıkıntı " "açısını belirler. Açı artırılırsa, dallar daha yatay olarak basılabilir ve " @@ -14310,13 +14367,13 @@ msgstr "Tercih Edilen Dal Açısı" #. 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." +"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 "" "Modelden kaçınmak zorunda olmadıklarında dalların tercih edilen açısı. Daha " -"dikey ve daha dengeli olmaları için daha düşük bir açı kullanın. Dalların " -"daha hızlı birleşmesi için daha yüksek bir açı kullanın." +"dikey ve daha dengeli olmaları için daha düşük bir açı kullanın. Dalların daha " +"hızlı birleşmesi için daha yüksek bir açı kullanın." msgid "Tree support branch distance" msgstr "Ağaç destek dal mesafesi" @@ -14330,11 +14387,10 @@ msgstr "Dal Yoğunluğu" #. 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." +"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 "" "Dalların uçlarını oluşturmak için kullanılan destek yapısının yoğunluğunu " "ayarlar. Daha yüksek bir değer daha iyi çıkıntılarla sonuçlanır, ancak " @@ -14346,8 +14402,8 @@ msgid "Adaptive layer height" msgstr "Uyarlanabilir katman yüksekliği" msgid "" -"Enabling this option means the height of tree support layer except the " -"first will be automatically calculated " +"Enabling this option means the height of tree support layer except the first " +"will be automatically calculated " msgstr "" "Bu seçeneğin etkinleştirilmesi, ilki hariç ağaç destek katmanının " "yüksekliğinin otomatik olarak hesaplanacağı anlamına gelir " @@ -14402,8 +14458,8 @@ msgstr "Çift duvarlı dal çapı" #. 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." +"printed with double walls for stability. Set this value to zero for no double " +"walls." msgstr "" "Bu çaptaki bir dairenin alanından daha büyük alana sahip dallar, stabilite " "için çift duvarlı olarak basılacaktır. Çift duvar olmaması için bu değeri " @@ -14422,16 +14478,15 @@ msgid "" "This setting specifies whether to add infill inside large hollows of tree " "support" msgstr "" -"Bu ayar, ağaç desteğinin büyük oyuklarının içine dolgu eklenip " -"eklenmeyeceğini belirtir" +"Bu ayar, ağaç desteğinin büyük oyuklarının içine dolgu eklenip eklenmeyeceğini " +"belirtir" msgid "Activate temperature control" msgstr "Sıcaklık kontrolünü etkinleştirin" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -14440,8 +14495,8 @@ msgid "" "either via macros or natively and is usually used when an active chamber " "heater is installed." msgstr "" -"Otomatik hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Bu " -"seçenek, “yazıcı başlangıç kodu”ndan önce bir M191 komutunun yayınlanmasını " +"Otomatik hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Bu seçenek, " +"“yazıcı başlangıç kodu”ndan önce bir M191 komutunun yayınlanmasını " "etkinleştirir\n" " oda sıcaklığını ayarlar ve bu sıcaklığa ulaşılıncaya kadar bekler. Ayrıca " "baskı sonunda M141 komutu vererek varsa hazne ısıtıcısının kapatılmasını " @@ -14456,41 +14511,39 @@ msgstr "Bölme sıcaklığı" msgid "" "For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " -"temperature can help suppress or reduce warping and potentially lead to " -"higher interlayer bonding strength. However, at the same time, a higher " -"chamber temperature will reduce the efficiency of air filtration for ABS and " -"ASA. \n" +"temperature can help suppress or reduce warping and potentially lead to higher " +"interlayer bonding strength. However, at the same time, a higher chamber " +"temperature will reduce the efficiency of air filtration for ABS and ASA. \n" "\n" "For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " "should be disabled (set to 0) as the chamber temperature should be low to " "avoid extruder clogging caused by material softening at the heat break.\n" "\n" "If enabled, this parameter also sets a gcode variable named " -"chamber_temperature, which can be used to pass the desired chamber " -"temperature to your print start macro, or a heat soak macro like this: " -"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " -"be useful if your printer does not support M141/M191 commands, or if you " -"desire to handle heat soaking in the print start macro if no active chamber " -"heater is installed." +"chamber_temperature, which can be used to pass the desired chamber temperature " +"to your print start macro, or a heat soak macro like this: PRINT_START (other " +"variables) CHAMBER_TEMP=[chamber_temperature]. This may be useful if your " +"printer does not support M141/M191 commands, or if you desire to handle heat " +"soaking in the print start macro if no active chamber heater is installed." msgstr "" "ABS, ASA, PC ve PA gibi yüksek sıcaklıktaki malzemeler için daha yüksek bir " -"oda sıcaklığı, bükülmenin bastırılmasına veya azaltılmasına yardımcı " -"olabilir ve potansiyel olarak daha yüksek katmanlar arası bağlanma " -"mukavemetine yol açabilir. Ancak aynı zamanda daha yüksek oda sıcaklığı, ABS " -"ve ASA için hava filtreleme verimliliğini azaltacaktır. \n" +"oda sıcaklığı, bükülmenin bastırılmasına veya azaltılmasına yardımcı olabilir " +"ve potansiyel olarak daha yüksek katmanlar arası bağlanma mukavemetine yol " +"açabilir. Ancak aynı zamanda daha yüksek oda sıcaklığı, ABS ve ASA için hava " +"filtreleme verimliliğini azaltacaktır. \n" "\n" "PLA, PETG, TPU, PVA ve diğer düşük sıcaklıktaki malzemeler için, ısı " "kırılmasında malzemenin yumuşamasından kaynaklanan ekstrüderin tıkanmasını " -"önlemek için oda sıcaklığının düşük olması gerektiğinden bu seçenek devre " -"dışı bırakılmalıdır (0’a ayarlanmalıdır).\n" +"önlemek için oda sıcaklığının düşük olması gerektiğinden bu seçenek devre dışı " +"bırakılmalıdır (0’a ayarlanmalıdır).\n" "\n" -"Etkinleştirilirse, bu parametre aynı zamanda istenen oda sıcaklığını " -"yazdırma başlatma makronuza veya şuna benzer bir ısı emme makrosuna iletmek " -"için kullanılabilecek Chamber_temperature adlı bir gcode değişkenini de " -"ayarlar: PRINT_START (diğer değişkenler) CHAMBER_TEMP=[chamber_temperature]. " -"Yazıcınız M141/M191 komutlarını desteklemiyorsa veya aktif oda ısıtıcısı " -"takılı değilse yazdırma başlatma makrosunda ısı bekletme işlemini " -"gerçekleştirmek istiyorsanız bu yararlı olabilir." +"Etkinleştirilirse, bu parametre aynı zamanda istenen oda sıcaklığını yazdırma " +"başlatma makronuza veya şuna benzer bir ısı emme makrosuna iletmek için " +"kullanılabilecek Chamber_temperature adlı bir gcode değişkenini de ayarlar: " +"PRINT_START (diğer değişkenler) CHAMBER_TEMP=[chamber_temperature]. Yazıcınız " +"M141/M191 komutlarını desteklemiyorsa veya aktif oda ısıtıcısı takılı değilse " +"yazdırma başlatma makrosunda ısı bekletme işlemini gerçekleştirmek " +"istiyorsanız bu yararlı olabilir." msgid "Nozzle temperature for layers after the initial one" msgstr "İlk katmandan sonraki katmanlar için nozul sıcaklığı" @@ -14516,8 +14569,8 @@ msgid "This gcode is inserted when the extrusion role is changed" msgstr "Bu gcode, ekstrüzyon rolü değiştirildiğinde eklenir" msgid "" -"Line width for top surfaces. If expressed as a %, it will be computed over " -"the nozzle diameter." +"Line width for top surfaces. If expressed as a %, it will be computed over the " +"nozzle diameter." msgstr "" "Üst yüzeyler için çizgi genişliği. % olarak ifade edilirse Nozul çapı " "üzerinden hesaplanacaktır." @@ -14546,15 +14599,15 @@ msgstr "Üst katman kalınlığı" 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 determined by top shell " +"having too thin shell when layer height is small. 0 means that this setting is " +"disabled and thickness of top shell is absolutely determined by top shell " "layers" msgstr "" -"Üst kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince " -"ise dilimleme sırasında üst katı katmanların sayısı artırılır. Bu, katman " -"yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu " -"ayarın devre dışı olduğu ve üst kabuğun kalınlığının kesinlikle üst kabuk " -"katmanları tarafından belirlendiği anlamına gelir" +"Üst kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince ise " +"dilimleme sırasında üst katı katmanların sayısı artırılır. Bu, katman " +"yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu ayarın " +"devre dışı olduğu ve üst kabuğun kalınlığının kesinlikle üst kabuk katmanları " +"tarafından belirlendiği anlamına gelir" msgid "Speed of travel which is faster and without extrusion" msgstr "Daha hızlı ve ekstrüzyonsuz seyahat hızı" @@ -14574,12 +14627,11 @@ msgid "Wipe Distance" msgstr "Temizleme mesafesi" msgid "" -"Describe how long the nozzle will move along the last path when " -"retracting. \n" +"Describe how long the nozzle will move along the last path when retracting. \n" "\n" -"Depending on how long the wipe operation lasts, how fast and long the " -"extruder/filament retraction settings are, a retraction move may be needed " -"to retract the remaining filament. \n" +"Depending on how long the wipe operation lasts, how fast and long the extruder/" +"filament retraction settings are, a retraction move may be needed to retract " +"the remaining filament. \n" "\n" "Setting a value in the retract amount before wipe setting below will perform " "any excess retraction before the wipe, else it will be performed after." @@ -14587,18 +14639,18 @@ msgstr "" "Geri çekilirken nozulun son yol boyunca ne kadar süre hareket edeceğini " "açıklayın. \n" "\n" -"Silme işleminin ne kadar sürdüğüne, ekstruder/filament geri çekme " -"ayarlarının ne kadar hızlı ve uzun olduğuna bağlı olarak, kalan filamanı " -"geri çekmek için bir geri çekme hareketine ihtiyaç duyulabilir. \n" +"Silme işleminin ne kadar sürdüğüne, ekstruder/filament geri çekme ayarlarının " +"ne kadar hızlı ve uzun olduğuna bağlı olarak, kalan filamanı geri çekmek için " +"bir geri çekme hareketine ihtiyaç duyulabilir. \n" "\n" -"Aşağıdaki silme ayarından önce geri çekme miktarına bir değer ayarlamak, " -"silme işleminden önce aşırı geri çekme işlemini gerçekleştirecektir, aksi " -"takdirde silme işleminden sonra gerçekleştirilecektir." +"Aşağıdaki silme ayarından önce geri çekme miktarına bir değer ayarlamak, silme " +"işleminden önce aşırı geri çekme işlemini gerçekleştirecektir, aksi takdirde " +"silme işleminden sonra gerçekleştirilecektir." 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." +"stabilize the chamber pressure inside the nozzle, in order to avoid appearance " +"defects when printing objects." msgstr "" "Temizleme kulesi, nesneleri yazdırırken görünüm kusurlarını önlemek amacıyla " "nozul üzerindeki kalıntıları temizlemek ve nozul içindeki oda basıncını " @@ -14611,8 +14663,8 @@ msgid "Flush multiplier" msgstr "Temizleme çarpanı" msgid "" -"The actual flushing volumes is equal to the flush multiplier multiplied by " -"the flushing volumes in the table." +"The actual flushing volumes is equal to the flush multiplier multiplied by the " +"flushing volumes in the table." msgstr "" "Gerçek temizleme hacimleri, tablodaki temizleme hacimleri ile temizleme " "çarpanının çarpımına eşittir." @@ -14636,11 +14688,11 @@ msgid "Stabilization cone apex angle" msgstr "Stabilizasyon konisi tepe açısı" msgid "" -"Angle at the apex of the cone that is used to stabilize the wipe tower. " -"Larger angle means wider base." +"Angle at the apex of the cone that is used to stabilize the wipe tower. Larger " +"angle means wider base." msgstr "" -"Silme kulesini stabilize etmek için kullanılan koninin tepe noktasındaki " -"açı. Daha büyük açı daha geniş taban anlamına gelir." +"Silme kulesini stabilize etmek için kullanılan koninin tepe noktasındaki açı. " +"Daha büyük açı daha geniş taban anlamına gelir." msgid "Maximum wipe tower print speed" msgstr "Maksimum silme kulesi yazdırma hızı" @@ -14648,16 +14700,16 @@ msgstr "Maksimum silme kulesi yazdırma hızı" msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe " "tower sparse layers. When purging, if the sparse infill speed or calculated " -"speed from the filament max volumetric speed is lower, the lowest will be " -"used instead.\n" +"speed from the filament max volumetric speed is lower, the lowest will be used " +"instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or " -"calculated speed from the filament max volumetric speed is lower, the lowest " -"will be used instead.\n" +"When printing the sparse layers, if the internal perimeter speed or calculated " +"speed from the filament max volumetric speed is lower, the lowest will be used " +"instead.\n" "\n" -"Increasing this speed may affect the tower's stability as well as increase " -"the force with which the nozzle collides with any blobs that may have formed " -"on the wipe tower.\n" +"Increasing this speed may affect the tower's stability as well as increase the " +"force with which the nozzle collides with any blobs that may have formed on " +"the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90mm/sec, make sure " "your printer can reliably bridge at the increased speeds and that ooze when " @@ -14667,9 +14719,9 @@ msgid "" "regardless of this setting." msgstr "" "Silme kulesinde temizleme yaparken ve silme kulesi seyrek katmanlarını " -"yazdırırken maksimum yazdırma hızı. Temizleme sırasında seyrek dolum hızı " -"veya filamanın maksimum hacimsel hızından hesaplanan hız daha düşükse, bunun " -"yerine en düşük olanı kullanılacaktır.\n" +"yazdırırken maksimum yazdırma hızı. Temizleme sırasında seyrek dolum hızı veya " +"filamanın maksimum hacimsel hızından hesaplanan hız daha düşükse, bunun yerine " +"en düşük olanı kullanılacaktır.\n" "\n" "Seyrek katmanları yazdırırken iç çevre hızı veya filamanın maksimum hacimsel " "hızından hesaplanan hız daha düşükse bunun yerine en düşük olanı " @@ -14687,8 +14739,8 @@ msgstr "" "kullanılır." 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)." +"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 "" "Silme kulesinin çevresini yazdırırken kullanılacak ekstruder. Mevcut olanı " "kullanmak için 0 olarak ayarlayın (çözünmeyen tercih edilir)." @@ -14701,9 +14753,9 @@ msgid "" "wipe tower. These values are used to simplify creation of the full purging " "volumes below." msgstr "" -"Bu vektör, silme kulesinde kullanılan her bir araçtan/araca geçiş için " -"gerekli hacimleri kaydeder. Bu değerler, aşağıdaki tam temizleme " -"hacimlerinin oluşturulmasını basitleştirmek için kullanılır." +"Bu vektör, silme kulesinde kullanılan her bir araçtan/araca geçiş için gerekli " +"hacimleri kaydeder. Bu değerler, aşağıdaki tam temizleme hacimlerinin " +"oluşturulmasını basitleştirmek için kullanılır." msgid "" "Purging after filament change will be done inside objects' infills. This may " @@ -14727,13 +14779,13 @@ 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." +"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 "" -"Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için " -"filament değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç " -"olarak nesnelerin renkleri karıştırılacaktır. Prime tower " -"etkinleştirilmediği sürece etkili olmayacaktır." +"Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için filament " +"değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç olarak " +"nesnelerin renkleri karıştırılacaktır. Prime tower etkinleştirilmediği sürece " +"etkili olmayacaktır." msgid "Maximal bridging distance" msgstr "Maksimum köprüleme mesafesi" @@ -14742,8 +14794,8 @@ msgid "Maximal distance between supports on sparse infill sections." msgstr "" "Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için bir " "filament değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç " -"olarak nesnelerin renkleri karıştırılacaktır. Prime tower " -"etkinleştirilmediği sürece etkili olmayacaktır." +"olarak nesnelerin renkleri karıştırılacaktır. Prime tower etkinleştirilmediği " +"sürece etkili olmayacaktır." msgid "Wipe tower purge lines spacing" msgstr "Silme kulesi temizleme hatları aralığı" @@ -14756,20 +14808,20 @@ msgstr "Temizleme için ekstra akış" msgid "" "Extra flow used for the purging lines on the wipe tower. This makes the " -"purging lines thicker or narrower than they normally would be. The spacing " -"is adjusted automatically." +"purging lines thicker or narrower than they normally would be. The spacing is " +"adjusted automatically." msgstr "" -"Silme kulesindeki temizleme hatları için ekstra akış kullanılır. Bu, " -"temizleme hatlarının normalde olduğundan daha kalın veya daha dar olmasına " -"neden olur. Aralık otomatik olarak ayarlanır." +"Silme kulesindeki temizleme hatları için ekstra akış kullanılır. Bu, temizleme " +"hatlarının normalde olduğundan daha kalın veya daha dar olmasına neden olur. " +"Aralık otomatik olarak ayarlanır." msgid "Idle temperature" msgstr "Boşta sıcaklık" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to 0 " +"to disable." msgstr "" "Alet şu anda çoklu alet kurulumlarında kullanılmadığında püskürtme ucu " "sıcaklığı. Bu yalnızca Yazdırma Ayarlarında ‘Sızıntı önleme’ etkin olduğunda " @@ -14784,36 +14836,36 @@ msgid "" "function is used to adjust size slightly when the object has assembling issue" msgstr "" "Nesnenin delikleri XY düzleminde yapılandırılan değer kadar büyütülür veya " -"küçültülür. Pozitif değer delikleri büyütür. Negatif değer delikleri " -"küçültür. Bu fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe " -"ayarlamak için kullanılır" +"küçültülür. Pozitif değer delikleri büyütür. Negatif değer delikleri küçültür. " +"Bu fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " +"kullanılır" msgid "X-Y contour compensation" msgstr "X-Y kontur telafisi" 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" +"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 "" "Nesnenin konturu XY düzleminde yapılandırılan değer kadar büyütülür veya " -"küçültülür. Pozitif değer konturu büyütür. Negatif değer konturu küçültür. " -"Bu fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " +"küçültülür. Pozitif değer konturu büyütür. Negatif değer konturu küçültür. Bu " +"fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " "kullanılır" msgid "Convert holes to polyholes" msgstr "Delikleri çokgen deliklere dönüştür" 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 " +"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 "" -"Birden fazla katmana yayılan neredeyse dairesel delikleri arayın ve " -"geometriyi çoklu deliklere dönüştürün. Çoklu deliği hesaplamak için nozul " -"boyutunu ve (en büyük) çapı kullanın.\n" +"Birden fazla katmana yayılan neredeyse dairesel delikleri arayın ve geometriyi " +"çoklu deliklere dönüştürün. Çoklu deliği hesaplamak için nozul boyutunu ve (en " +"büyük) çapı kullanın.\n" "Bakın http://hydraraptor.blogspot.com/2011/02/polyholes.html" msgid "Polyhole detection margin" @@ -14823,14 +14875,14 @@ msgstr "Çokgen delik tespiti marjı" 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 leeway to " -"broaden the detection.\n" +"be on the circle circumference. This setting allows you some leeway to broaden " +"the detection.\n" "In mm or in % of the radius." msgstr "" "Bir noktanın dairenin tahmini yarıçapına göre maksimum sapması.\n" "Silindirler genellikle farklı boyutlarda üçgenler olarak ihraç edildiğinden, " -"noktalar daire çevresinde olmayabilir. Bu ayar, algılamayı genişletmeniz " -"için size biraz alan sağlar.\n" +"noktalar daire çevresinde olmayabilir. Bu ayar, algılamayı genişletmeniz için " +"size biraz alan sağlar.\n" "inc mm cinsinden veya yarıçapın %'si cinsinden." msgid "Polyhole twist" @@ -14853,11 +14905,11 @@ msgid "Format of G-code thumbnails" msgstr "G kodu küçük resimlerinin formatı" msgid "" -"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, " -"QOI for low memory firmware" +"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, QOI " +"for low memory firmware" msgstr "" -"G kodu küçük resimlerinin formatı: En iyi kalite için PNG, en küçük boyut " -"için JPG, düşük bellekli donanım yazılımı için QOI" +"G kodu küçük resimlerinin formatı: En iyi kalite için PNG, en küçük boyut için " +"JPG, düşük bellekli donanım yazılımı için QOI" msgid "Use relative E distances" msgstr "Göreceli (relative) E mesafelerini kullan" @@ -14869,17 +14921,17 @@ msgid "" "printers. Default is checked" msgstr "" "\"label_objects\" seçeneği kullanılırken göreceli ekstrüzyon önerilir. Bazı " -"ekstrüderler bu seçenek işaretlenmediğinde daha iyi çalışır (mutlak " -"ekstrüzyon modu). Silme kulesi yalnızca göreceli modla uyumludur. Çoğu " -"yazıcıda önerilir. Varsayılan işaretlendi." +"ekstrüderler bu seçenek işaretlenmediğinde daha iyi çalışır (mutlak ekstrüzyon " +"modu). Silme kulesi yalnızca göreceli modla uyumludur. Çoğu yazıcıda önerilir. " +"Varsayılan işaretlendi." 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" +"very thin areas is used gap-fill. Arachne engine produces walls with variable " +"extrusion width" msgstr "" -"Klasik duvar oluşturucu sabit ekstrüzyon genişliğine sahip duvarlar üretir " -"ve çok ince alanlar için boşluk doldurma kullanılır. Arachne motoru değişken " +"Klasik duvar oluşturucu sabit ekstrüzyon genişliğine sahip duvarlar üretir ve " +"çok ince alanlar için boşluk doldurma kullanılır. Arachne motoru değişken " "ekstrüzyon genişliğine sahip duvarlar üretir" msgid "Arachne" @@ -14901,38 +14953,37 @@ msgid "Wall transitioning filter margin" msgstr "Duvar geçiş filtresi oranı" 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 "" -"Fazladan bir duvar ile bir eksik arasında ileri geri geçişi önleyin. Bu " -"kenar boşluğu, [Minimum duvar genişliği - kenar boşluğu, 2 * Minimum duvar " -"genişliği + kenar boşluğu] şeklinde takip eden ekstrüzyon genişlikleri " -"aralığını genişletir. Bu marjın arttırılması geçiş sayısını azaltır, bu da " -"ekstrüzyonun başlama/durma sayısını ve seyahat süresini azaltır. Bununla " -"birlikte, büyük ekstrüzyon genişliği değişimi, yetersiz veya aşırı " -"ekstrüzyon sorunlarına yol açabilir. Nozul çapına göre yüzde olarak ifade " -"edilir" +"Fazladan bir duvar ile bir eksik arasında ileri geri geçişi önleyin. Bu kenar " +"boşluğu, [Minimum duvar genişliği - kenar boşluğu, 2 * Minimum duvar genişliği " +"+ kenar boşluğu] şeklinde takip eden ekstrüzyon genişlikleri aralığını " +"genişletir. Bu marjın arttırılması geçiş sayısını azaltır, bu da ekstrüzyonun " +"başlama/durma sayısını ve seyahat süresini azaltır. Bununla birlikte, büyük " +"ekstrüzyon genişliği değişimi, yetersiz veya aşırı ekstrüzyon sorunlarına yol " +"açabilir. Nozul çapına göre yüzde olarak ifade edilir" msgid "Wall transitioning threshold angle" msgstr "Duvar geçiş açısı" 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" +"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 "" -"Çift ve tek sayıdaki duvarlar arasında geçişler ne zaman oluşturulmalıdır? " -"Bu ayardan daha büyük bir açıya sahip bir kama şeklinin geçişleri olmayacak " -"ve kalan alanı dolduracak şekilde ortada hiçbir duvar basılmayacaktır. Bu " -"ayarın düşürülmesi, bu merkez duvarların sayısını ve uzunluğunu azaltır " -"ancak boşluklara veya aşırı çıkıntıya neden olabilir" +"Çift ve tek sayıdaki duvarlar arasında geçişler ne zaman oluşturulmalıdır? Bu " +"ayardan daha büyük bir açıya sahip bir kama şeklinin geçişleri olmayacak ve " +"kalan alanı dolduracak şekilde ortada hiçbir duvar basılmayacaktır. Bu ayarın " +"düşürülmesi, bu merkez duvarların sayısını ve uzunluğunu azaltır ancak " +"boşluklara veya aşırı çıkıntıya neden olabilir" msgid "Wall distribution count" msgstr "Duvar dağılım sayısı" @@ -14948,10 +14999,10 @@ msgid "Minimum feature size" msgstr "Minimum özellik boyutu" 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" +"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 "" "İnce özellikler için minimum kalınlık. Bu değerden daha ince olan model " "özellikleri yazdırılmayacak, Minimum özellik boyutundan daha kalın olan " @@ -14967,31 +15018,30 @@ msgid "" "\n" "NOTE: Bottom and top surfaces will not be affected by this value to prevent " "visual gaps on the outside of the model. Adjust 'One wall threshold' in the " -"Advanced settings below to adjust the sensitivity of what is considered a " -"top-surface. 'One wall threshold' is only visible if this setting is set " -"above the default value of 0.5, or if single-wall top surfaces is enabled." +"Advanced settings below to adjust the sensitivity of what is considered a top-" +"surface. 'One wall threshold' is only visible if this setting is set above the " +"default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" "Yazdırma süresini artırabilecek kısa, kapatılmamış duvarların yazdırılmasını " -"önlemek için bu değeri ayarlayın. Daha yüksek değerler daha fazla ve daha " -"uzun duvarları kaldırır.\n" +"önlemek için bu değeri ayarlayın. Daha yüksek değerler daha fazla ve daha uzun " +"duvarları kaldırır.\n" "\n" -"NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler " -"bu değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin " -"hassasiyetini ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar " -"eşiği'ni ayarlayın. 'Tek duvar eşiği' yalnızca bu ayar varsayılan değer olan " -"0,5'in üzerine ayarlandığında veya tek duvarlı üst yüzeyler " -"etkinleştirildiğinde görünür." +"NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler bu " +"değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin hassasiyetini " +"ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar eşiği'ni ayarlayın. " +"'Tek duvar eşiği' yalnızca bu ayar varsayılan değer olan 0,5'in üzerine " +"ayarlandığında veya tek duvarlı üst yüzeyler etkinleştirildiğinde görünür." msgid "First layer minimum wall width" msgstr "İlk katman minimum duvar genişliği" 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." +"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 "" -"İlk katman için kullanılması gereken minimum duvar genişliğinin nozul ile " -"aynı boyuta ayarlanması tavsiye edilir. Bu ayarlamanın yapışmayı artırması " +"İlk katman için kullanılması gereken minimum duvar genişliğinin nozul ile aynı " +"boyuta ayarlanması tavsiye edilir. Bu ayarlamanın yapışmayı artırması " "beklenmektedir." msgid "Minimum wall width" @@ -15000,21 +15050,21 @@ msgstr "Minimum duvar genişliği" 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" +"thickness of the feature, the wall will become as thick as the feature itself. " +"It's expressed as a percentage over nozzle diameter" msgstr "" "Modelin ince özelliklerinin yerini alacak duvarın genişliği (Minimum özellik " "boyutuna göre). Minimum duvar genişliği özelliğin kalınlığından daha inceyse " -"duvar, özelliğin kendisi kadar kalın olacaktır. Nozul çapına göre yüzde " -"olarak ifade edilir" +"duvar, özelliğin kendisi kadar kalın olacaktır. Nozul çapına göre yüzde olarak " +"ifade edilir" msgid "Detect narrow internal solid infill" msgstr "Dar iç katı dolguyu tespit et" 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 by default." +"concentric pattern will be used for the area to speed printing up. Otherwise, " +"rectilinear pattern is used by default." msgstr "" "Bu seçenek dar dahili katı dolgu alanını otomatik olarak algılayacaktır. " "Etkinleştirilirse, yazdırmayı hızlandırmak amacıyla alanda eşmerkezli desen " @@ -15060,8 +15110,7 @@ msgstr "Yönlendirme Seçenekleri" msgid "Orient options: 0-disable, 1-enable, others-auto" msgstr "" -"Yönlendirme seçenekleri: 0-devre dışı bırak, 1-etkinleştir, diğerleri-" -"otomatik" +"Yönlendirme seçenekleri: 0-devre dışı bırak, 1-etkinleştir, diğerleri-otomatik" msgid "Rotation angle around the Z axis in degrees." msgstr "Z ekseni etrafında derece cinsinden dönüş açısı." @@ -15076,9 +15125,8 @@ msgid "Data directory" msgstr "Veri dizini" msgid "" -"Load and store settings at the given directory. This is useful for " -"maintaining different profiles or including configurations from a network " -"storage." +"Load and store settings at the given directory. This is useful for maintaining " +"different profiles or including configurations from a network storage." msgstr "" "Ayarları verilen dizine yükleyin ve saklayın. Bu, farklı profilleri korumak " "veya bir ağ depolama birimindeki yapılandırmaları dahil etmek için " @@ -15101,25 +15149,24 @@ msgid "" "custom G-code travels somewhere else, it should write to this variable so " "OrcaSlicer knows where it travels from when it gets control back." msgstr "" -"Ekstruderin özel G kodu bloğunun başlangıcındaki konumu. Özel G kodu başka " -"bir yere seyahat ederse, Slicer'ın kontrolü geri aldığında nereden seyahat " +"Ekstruderin özel G kodu bloğunun başlangıcındaki konumu. Özel G kodu başka bir " +"yere seyahat ederse, Slicer'ın kontrolü geri aldığında nereden seyahat " "ettiğini bilmesi için bu değişkene yazması gerekir." msgid "" -"Retraction state at the beginning of the custom G-code block. If the custom " -"G-code moves the extruder axis, it should write to this variable so " -"OrcaSlicer de-retracts correctly when it gets control back." +"Retraction state at the beginning of the custom G-code block. If the custom G-" +"code moves the extruder axis, it should write to this variable so OrcaSlicer " +"de-retracts correctly when it gets control back." msgstr "" "Özel G kodu bloğunun başlangıcındaki geri çekilme durumu. Özel G kodu " -"ekstruder eksenini hareket ettirirse, Slicer'ın kontrolü geri aldığında " -"doğru şekilde geri çekme yapması için bu değişkene yazması gerekir." +"ekstruder eksenini hareket ettirirse, Slicer'ın kontrolü geri aldığında doğru " +"şekilde geri çekme yapması için bu değişkene yazması gerekir." msgid "Extra de-retraction" msgstr "Ekstra deretraksiyon" msgid "Currently planned extra extruder priming after de-retraction." -msgstr "" -"Şu anda, geri çekilmeden sonra ekstra ekstruder hazırlaması planlanıyor." +msgstr "Şu anda, geri çekilmeden sonra ekstra ekstruder hazırlaması planlanıyor." msgid "Absolute E position" msgstr "Mutlak E konumu" @@ -15141,8 +15188,7 @@ msgid "Current object index" msgstr "Geçerli nesne dizini" msgid "" -"Specific for sequential printing. Zero-based index of currently printed " -"object." +"Specific for sequential printing. Zero-based index of currently printed object." msgstr "" "Sıralı yazdırmaya özel. Şu anda yazdırılan nesnenin sıfır tabanlı dizini." @@ -15156,8 +15202,7 @@ msgid "Initial extruder" msgstr "İlk ekstruder" msgid "" -"Zero-based index of the first extruder used in the print. Same as " -"initial_tool." +"Zero-based index of the first extruder used in the print. Same as initial_tool." msgstr "" "Baskıda kullanılan ilk ekstruderin sıfır bazlı indeksi. başlangıç_aracı ile " "aynı." @@ -15169,14 +15214,12 @@ msgid "" "Zero-based index of the first extruder used in the print. Same as " "initial_extruder." msgstr "" -"Baskıda kullanılan ilk ekstruderin sıfır bazlı indeksi. İlk ekstruder ile " -"aynı." +"Baskıda kullanılan ilk ekstruderin sıfır bazlı indeksi. İlk ekstruder ile aynı." msgid "Is extruder used?" msgstr "Ekstruder kullanılıyor mu?" -msgid "" -"Vector of booleans stating whether a given extruder is used in the print." +msgid "Vector of booleans stating whether a given extruder is used in the print." msgstr "" "Belirli bir ekstruderin baskıda kullanılıp kullanılmadığını belirten bool " "vektörü." @@ -15214,18 +15257,18 @@ msgid "" "Weight per extruder extruded during the entire print. Calculated from " "filament_density value in Filament Settings." msgstr "" -"Baskının tamamı boyunca ekstrüzyon yapılan ekstruder başına ağırlık. " -"Filament Ayarlarındaki filaman yoğunluğu değerinden hesaplanır." +"Baskının tamamı boyunca ekstrüzyon yapılan ekstruder başına ağırlık. Filament " +"Ayarlarındaki filaman yoğunluğu değerinden hesaplanır." msgid "Total weight" msgstr "Toplam ağırlık" msgid "" -"Total weight of the print. Calculated from filament_density value in " -"Filament Settings." +"Total weight of the print. Calculated from filament_density value in Filament " +"Settings." msgstr "" -"Baskının toplam ağırlığı. Filament Ayarlarındaki filaman yoğunluğu " -"değerinden hesaplanır." +"Baskının toplam ağırlığı. Filament Ayarlarındaki filaman yoğunluğu değerinden " +"hesaplanır." msgid "Total layer count" msgstr "Toplam katman sayısı" @@ -15244,8 +15287,7 @@ msgstr "Örnek sayısı" msgid "Total number of object instances in the print, summed over all objects." msgstr "" -"Tüm nesneler üzerinden toplanan, yazdırmadaki nesne örneklerinin toplam " -"sayısı." +"Tüm nesneler üzerinden toplanan, yazdırmadaki nesne örneklerinin toplam sayısı." msgid "Scale per object" msgstr "Nesne başına ölçeklendirme" @@ -15274,8 +15316,8 @@ msgstr "" "cinsindendir." msgid "" -"The vector has two elements: x and y dimension of the bounding box. Values " -"in mm." +"The vector has two elements: x and y dimension of the bounding box. Values in " +"mm." msgstr "" "Vektörün iki öğesi vardır: sınırlayıcı kutunun x ve y boyutu. Değerler mm " "cinsindendir." @@ -15287,8 +15329,8 @@ msgid "" "Vector of points of the first layer convex hull. Each element has the " "following format:'[x, y]' (x and y are floating-point numbers in mm)." msgstr "" -"Birinci katmanın dışbükey gövdesinin noktalarının vektörü. Her öğe şu " -"formata sahiptir:'[x, y]' (x ve y, mm cinsinden kayan noktalı sayılardır)." +"Birinci katmanın dışbükey gövdesinin noktalarının vektörü. Her öğe şu formata " +"sahiptir:'[x, y]' (x ve y, mm cinsinden kayan noktalı sayılardır)." msgid "Bottom-left corner of first layer bounding box" msgstr "İlk katman sınırlayıcı kutusunun sol alt köşesi" @@ -15355,8 +15397,8 @@ msgid "Number of extruders" msgstr "Ekstruder sayısı" msgid "" -"Total number of extruders, regardless of whether they are used in the " -"current print." +"Total number of extruders, regardless of whether they are used in the current " +"print." msgstr "" "Geçerli baskıda kullanılıp kullanılmadığına bakılmaksızın ekstrüderlerin " "toplam sayısı." @@ -15494,8 +15536,7 @@ msgstr "Sağlanan dosya boş olduğundan okunamadı" msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Bilinmeyen dosya formatı. Giriş dosyası .3mf veya .zip.amf uzantılı " -"olmalıdır." +"Bilinmeyen dosya formatı. Giriş dosyası .3mf veya .zip.amf uzantılı olmalıdır." msgid "Canceled" msgstr "İptal edildi" @@ -15554,8 +15595,7 @@ msgstr "Bitir" msgid "How to use calibration result?" msgstr "Kalibrasyon sonucu nasıl kullanılır?" -msgid "" -"You could change the Flow Dynamics Calibration Factor in material editing" +msgid "You could change the Flow Dynamics Calibration Factor in material editing" msgstr "" "Malzeme düzenlemede Akış Dinamiği Kalibrasyon Faktörünü değiştirebilirsiniz" @@ -15617,8 +15657,7 @@ msgstr "yeni ön ayar oluşturma başarısız oldu." msgid "" "Are you sure to cancel the current calibration and return to the home page?" msgstr "" -"Mevcut kalibrasyonu iptal edip ana sayfaya dönmek istediğinizden emin " -"misiniz?" +"Mevcut kalibrasyonu iptal edip ana sayfaya dönmek istediğinizden emin misiniz?" msgid "No Printer Connected!" msgstr "Yazıcı Bağlı Değil!" @@ -15633,16 +15672,16 @@ msgid "The input value size must be 3." msgstr "Giriş değeri boyutu 3 olmalıdır." msgid "" -"This machine type can only hold 16 history results per nozzle. You can " -"delete the existing historical results and then start calibration. Or you " -"can continue the calibration, but you cannot create new calibration " -"historical results. \n" +"This machine type can only hold 16 history results per nozzle. You can delete " +"the existing historical results and then start calibration. Or you can " +"continue the calibration, but you cannot create new calibration historical " +"results. \n" "Do you still want to continue the calibration?" msgstr "" "Bu makine tipi, püskürtme ucu başına yalnızca 16 geçmiş sonucu tutabilir. " -"Mevcut geçmiş sonuçları silebilir ve ardından kalibrasyona " -"başlayabilirsiniz. Veya kalibrasyona devam edebilirsiniz ancak yeni " -"kalibrasyon geçmişi sonuçları oluşturamazsınız.\n" +"Mevcut geçmiş sonuçları silebilir ve ardından kalibrasyona başlayabilirsiniz. " +"Veya kalibrasyona devam edebilirsiniz ancak yeni kalibrasyon geçmişi sonuçları " +"oluşturamazsınız.\n" "Hala kalibrasyona devam etmek istiyor musunuz?" msgid "Connecting to printer..." @@ -15656,9 +15695,9 @@ msgstr "Akış Dinamiği Kalibrasyonu sonucu yazıcıya kaydedildi" #, 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 override the historical result?" +"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 " +"override the historical result?" msgstr "" "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada sahip " "sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " @@ -15669,8 +15708,8 @@ msgid "" "This machine type can only hold %d history results per nozzle. This result " "will not be saved." msgstr "" -"Bu makine türü püskürtme ucu başına yalnızca %d geçmiş sonucunu tutabilir. " -"Bu sonuç kaydedilmeyecek." +"Bu makine türü püskürtme ucu başına yalnızca %d geçmiş sonucunu tutabilir. Bu " +"sonuç kaydedilmeyecek." msgid "Internal Error" msgstr "İç hata" @@ -15688,23 +15727,21 @@ msgid "When do you need Flow Dynamics Calibration" msgstr "Akış Dinamiği Kalibrasyonuna ne zaman ihtiyacınız olur" 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 "" "Artık farklı filamentler için tamamen otomatik olan otomatik kalibrasyonu " -"ekledik ve sonuç ileride kullanılmak üzere yazıcıya kaydedilecek. " -"Kalibrasyonu yalnızca aşağıdaki sınırlı durumlarda yapmanız gerekir:\n" -"1. Farklı marka/modelde yeni bir filament taktıysanız veya filament " -"nemliyse;\n" +"ekledik ve sonuç ileride kullanılmak üzere yazıcıya kaydedilecek. Kalibrasyonu " +"yalnızca aşağıdaki sınırlı durumlarda yapmanız gerekir:\n" +"1. Farklı marka/modelde yeni bir filament taktıysanız veya filament nemliyse;\n" "2. Nozul aşınmışsa veya yenisiyle değiştirilmişse;\n" -"3. Filament ayarında maksimum hacimsel hız veya baskı sıcaklığı " -"değiştirilirse." +"3. Filament ayarında maksimum hacimsel hız veya baskı sıcaklığı değiştirilirse." msgid "About this calibration" msgstr "Bu kalibrasyon hakkında" @@ -15712,17 +15749,17 @@ msgstr "Bu kalibrasyon hakkında" 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 that there are a few cases that can make the calibration results " "unreliable, such as insufficient adhesion on the build plate. Improving " -"adhesion can be achieved by washing the build plate or applying glue. For " -"more information on this topic, please refer to our Wiki.\n" +"adhesion can be achieved by washing the build plate or applying glue. For more " +"information on this topic, please refer to 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 " @@ -15733,15 +15770,15 @@ msgstr "" "Genellikle kalibrasyon gereksizdir. Baskı başlatma menüsünde \"akış " "dinamikleri kalibrasyonu\" seçeneği işaretliyken tek renkli/malzemeli bir " "baskı başlattığınızda, yazıcı eski yolu izleyecek, baskıdan önce filamenti " -"kalibre edecektir; Çok renkli/malzemeli bir baskı başlattığınızda, yazıcı " -"her filament değişimi sırasında filament için varsayılan telafi " -"parametresini kullanacaktır ve bu da çoğu durumda iyi bir sonuç verecektir.\n" +"kalibre edecektir; Çok renkli/malzemeli bir baskı başlattığınızda, yazıcı her " +"filament değişimi sırasında filament için varsayılan telafi parametresini " +"kullanacaktır ve bu da çoğu durumda iyi bir sonuç verecektir.\n" "\n" -"Yapı plakası üzerinde yetersiz yapışma gibi kalibrasyon sonuçlarını " -"güvenilmez hale getirebilecek birkaç durum olduğunu lütfen unutmayın. " -"Yapıştırma plakası yıkanarak veya yapıştırıcı uygulanarak yapışmanın " -"iyileştirilmesi sağlanabilir. Bu konu hakkında daha fazla bilgi için lütfen " -"Wiki sayfamıza bakın.\n" +"Yapı plakası üzerinde yetersiz yapışma gibi kalibrasyon sonuçlarını güvenilmez " +"hale getirebilecek birkaç durum olduğunu lütfen unutmayın. Yapıştırma plakası " +"yıkanarak veya yapıştırıcı uygulanarak yapışmanın iyileştirilmesi " +"sağlanabilir. Bu konu hakkında daha fazla bilgi için lütfen Wiki sayfamıza " +"bakın.\n" "\n" "Kalibrasyon sonuçları testimizde yaklaşık yüzde 10 titremeye sahiptir, bu da " "sonucun her kalibrasyonda tam olarak aynı olmamasına neden olabilir. Yeni " @@ -15755,8 +15792,8 @@ msgid "" "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" +"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." @@ -15785,10 +15822,10 @@ msgstr "" 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." +"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 "" "Akış Hızı Kalibrasyonu, beklenen ekstrüzyon hacimlerinin gerçek ekstrüzyon " "hacimlerine oranını ölçer. Varsayılan ayar, önceden kalibre edilmiş ve ince " @@ -15803,25 +15840,24 @@ msgid "" "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" +"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" +"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." +"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 "" "Otomatik Akış Hızı Kalibrasyonu, Bambu Lab'ın Mikro-Lidar teknolojisini " "kullanarak kalibrasyon modellerini doğrudan ölçer. Ancak, bu yöntemin " "etkinliğinin ve doğruluğunun belirli malzeme türleriyle tehlikeye " "girebileceğini lütfen unutmayın. Özellikle şeffaf veya yarı şeffaf, parlak " -"parçacıklı veya yüksek yansıtıcı yüzeye sahip filamentler bu kalibrasyon " -"için uygun olmayabilir ve arzu edilenden daha az sonuçlar üretebilir.\n" +"parçacıklı veya yüksek yansıtıcı yüzeye sahip filamentler bu kalibrasyon için " +"uygun olmayabilir ve arzu edilenden daha az sonuçlar üretebilir.\n" "\n" "Kalibrasyon sonuçları her kalibrasyon veya filament arasında farklılık " "gösterebilir. Zaman içinde ürün yazılımı güncellemeleriyle bu kalibrasyonun " @@ -15830,8 +15866,8 @@ msgstr "" "Dikkat: Akış Hızı Kalibrasyonu, yalnızca amacını ve sonuçlarını tam olarak " "anlayan kişiler tarafından denenmesi gereken gelişmiş bir işlemdir. Yanlış " "kullanım, ortalamanın altında baskılara veya yazıcının zarar görmesine neden " -"olabilir. Lütfen işlemi yapmadan önce işlemi dikkatlice okuyup " -"anladığınızdan emin olun." +"olabilir. Lütfen işlemi yapmadan önce işlemi dikkatlice okuyup anladığınızdan " +"emin olun." msgid "When you need Max Volumetric Speed Calibration" msgstr "Maksimum Hacimsel Hız Kalibrasyonuna ihtiyaç duyduğunuzda" @@ -15853,15 +15889,15 @@ msgid "We found the best Flow Dynamics Calibration Factor" msgstr "En iyi Akış Dinamiği Kalibrasyon Faktörünü bulduk" msgid "" -"Part of the calibration failed! You may clean the plate and retry. The " -"failed test result would be dropped." +"Part of the calibration failed! You may clean the plate and retry. The failed " +"test result would be dropped." msgstr "" "Kalibrasyonun bir kısmı başarısız oldu! Plakayı temizleyip tekrar " "deneyebilirsiniz. Başarısız olan test sonucu görmezden gelinir." msgid "" -"*We recommend you to add brand, materia, type, and even humidity level in " -"the Name" +"*We recommend you to add brand, materia, type, and even humidity level in the " +"Name" msgstr "*İsme marka, malzeme, tür ve hatta nem seviyesini eklemenizi öneririz" msgid "Failed" @@ -16285,21 +16321,23 @@ msgid "Error uploading to print host" msgstr "Yazdırma ana bilgisayarına yükleme hatası" msgid "" -"The selected bed type does not match the file. Please confirm before " -"starting the print." +"The selected bed type does not match the file. Please confirm before starting " +"the print." msgstr "" +"Seçilen yatak tipi dosyayla eşleşmiyor. Lütfen yazdırmaya başlamadan önce " +"onaylayın." msgid "Time-lapse" -msgstr "" +msgstr "Hızlandırılmış" msgid "Heated Bed Leveling" -msgstr "" +msgstr "Isıtmalı Yatak Seviyeleme" msgid "Textured Build Plate (Side A)" -msgstr "" +msgstr "Textured Build Plate (A Tarafı)" msgid "Smooth Build Plate (Side B)" -msgstr "" +msgstr "Smooth Build Plate (B Tarafı)" msgid "Unable to perform boolean operation on selected parts" msgstr "Seçilen parçalarda bölme işlemi gerçekleştirilemiyor" @@ -16450,8 +16488,8 @@ msgstr "" msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." msgstr "" -"Özel satıcı veya seri numarasındaki tüm girişler boşluklardan oluşuyor. " -"Lütfen tekrar girin." +"Özel satıcı veya seri numarasındaki tüm girişler boşluklardan oluşuyor. Lütfen " +"tekrar girin." msgid "The vendor can not be a number. Please re-enter." msgstr "Üretici bir sayı olamaz. Lütfen tekrar girin." @@ -16467,8 +16505,8 @@ msgid "" "name. Do you want to continue?" msgstr "" "Oluşturduğunuz %s Filament adı zaten mevcut.\n" -"Oluşturmaya devam ederseniz oluşturulan ön ayar tam adıyla " -"görüntülenecektir. Devam etmek istiyor musun?" +"Oluşturmaya devam ederseniz oluşturulan ön ayar tam adıyla görüntülenecektir. " +"Devam etmek istiyor musun?" msgid "Some existing presets have failed to be created, as follows:\n" msgstr "Aşağıdaki gibi bazı mevcut ön ayarlar oluşturulamadı:\n" @@ -16481,8 +16519,7 @@ msgstr "" "Yeniden yazmak ister misin?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Ön ayarları şu şekilde yeniden adlandırırdık: \"Satıcı Türü Seçtiğiniz Seri " @@ -16581,25 +16618,25 @@ msgid "Back Page 1" msgstr "Arka Sayfa 1" msgid "" -"You have not yet chosen which printer preset to create based on. Please " -"choose the vendor and model of the printer" +"You have not yet chosen which printer preset to create based on. Please choose " +"the vendor and model of the printer" msgstr "" -"Hangi yazıcı ön ayarının temel alınacağını henüz seçmediniz. Lütfen " -"yazıcının satıcısını ve modelini seçin" +"Hangi yazıcı ön ayarının temel alınacağını henüz seçmediniz. Lütfen yazıcının " +"satıcısını ve modelini seçin" msgid "" "You have entered an illegal input in the printable area section on the first " "page. Please check before creating it." msgstr "" -"İlk sayfadaki yazdırılabilir alan kısmına geçersiz bir giriş yaptınız. " -"Lütfen oluşturmadan önce kontrol edin." +"İlk sayfadaki yazdırılabilir alan kısmına geçersiz bir giriş yaptınız. Lütfen " +"oluşturmadan önce kontrol edin." msgid "The custom printer or model is not entered, please enter it." msgstr "Özel yazıcı veya model girilmedi lütfen giriş yapın." msgid "" -"The printer preset you created already has a preset with the same name. Do " -"you want to overwrite it?\n" +"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 " @@ -16609,8 +16646,7 @@ msgstr "" "Oluşturduğunuz yazıcı ön ayarının zaten aynı ada sahip bir ön ayarı var. " "Üzerine yazmak istiyor musunuz?\n" "\tEvet: Aynı adı taşıyan yazıcı ön ayarının üzerine yazın; aynı ön ayar adı " -"taşıyan filaman ve proses ön ayarları yeniden oluşturulacak ve aynı ön " -"ayar \n" +"taşıyan filaman ve proses ön ayarları yeniden oluşturulacak ve aynı ön ayar \n" "adı olmayan filament ve işlem ön ayarları rezerve edilecektir.\n" "\tİptal: Ön ayar oluşturmayın, oluşturma arayüzüne dönün." @@ -16656,8 +16692,7 @@ msgstr "" msgid "" "You have not yet selected the printer to replace the nozzle, please choose." -msgstr "" -"Hala nozulu değiştirmek için yazıcı seçmediniz, lütfen bir seçim yapın." +msgstr "Hala nozulu değiştirmek için yazıcı seçmediniz, lütfen bir seçim yapın." msgid "Create Printer Successful" msgstr "Yazıcı Oluşturma Başarılı" @@ -16677,8 +16712,8 @@ msgstr "Filament Oluşturuldu" 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 has a significant impact on printing quality. Please set " -"them carefully." +"volumetric speed has a significant impact on printing quality. Please set them " +"carefully." msgstr "" "İhtiyacınız olursa ön ayarlarınızı düzenlemek için lütfen filament ayarına " "gidin.\n" @@ -16740,13 +16775,13 @@ msgstr "Dışa aktarma başarılı" #, c-format, boost-format msgid "" -"The '%s' folder already exists in the current directory. Do you want to " -"clear it and rebuild it.\n" +"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 "" -"'%s' klasörü mevcut dizinde zaten mevcut. Onu temizleyip yeniden oluşturmak " -"mı istiyorsunuz?\n" +"'%s' klasörü mevcut dizinde zaten mevcut. Onu temizleyip yeniden oluşturmak mı " +"istiyorsunuz?\n" "Değilse, bir zaman son eki eklenecektir ve oluşturulduktan sonra adı " "değiştirebilirsiniz." @@ -16780,8 +16815,8 @@ msgid "" "Only printer names with user printer presets will be displayed, and each " "preset you choose will be exported as a zip." msgstr "" -"Yalnızca kullanıcı yazıcı ön ayarlarına sahip yazıcı adları görüntülenecek " -"ve seçtiğiniz her ön ayar zip olarak dışa aktarılacaktır." +"Yalnızca kullanıcı yazıcı ön ayarlarına sahip yazıcı adları görüntülenecek ve " +"seçtiğiniz her ön ayar zip olarak dışa aktarılacaktır." msgid "" "Only the filament names with user filament presets will be displayed, \n" @@ -16789,13 +16824,13 @@ msgid "" "exported as a zip." msgstr "" "Yalnızca kullanıcı filamenti ön ayarlarına sahip filament adları \n" -"görüntülenecek ve seçtiğiniz her filament adındaki tüm kullanıcı filamenti " -"ön ayarları zip olarak dışa aktarılacaktır." +"görüntülenecek ve seçtiğiniz her filament adındaki tüm kullanıcı filamenti ön " +"ayarları zip olarak dışa aktarılacaktır." 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." +"and all user process presets in each printer name you select will be exported " +"as a zip." msgstr "" "Yalnızca işlem ön ayarları değiştirilen yazıcı adları görüntülenecek \n" "ve seçtiğiniz her yazıcı adındaki tüm kullanıcı işlem ön ayarları zip olarak " @@ -16819,8 +16854,8 @@ msgid "Filament presets under this filament" msgstr "Bu filamentin altındaki filament ön ayarları" msgid "" -"Note: If the only preset under this filament is deleted, the filament will " -"be deleted after exiting the dialog." +"Note: If the only preset under this filament is deleted, the filament will be " +"deleted after exiting the dialog." msgstr "" "Not: Bu filamentin altındaki tek ön ayar silinirse, diyalogdan çıkıldıktan " "sonra filament silinecektir." @@ -16941,8 +16976,7 @@ msgstr "Aygıt sekmesinde yazdırma ana bilgisayarı web arayüzünü görüntü msgid "Replace the BambuLab's device tab with print host webui" msgstr "" -"BambuLab’ın aygıt sekmesini yazdırma ana bilgisayarı web arayüzüyle " -"değiştirin" +"BambuLab’ın aygıt sekmesini yazdırma ana bilgisayarı web arayüzüyle değiştirin" msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" @@ -16962,8 +16996,8 @@ 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." +"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 / " @@ -17018,8 +17052,8 @@ msgid "Could not connect to FlashAir" msgstr "FlashAir'e bağlanılamadı" msgid "" -"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " -"is required." +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function is " +"required." msgstr "" "Not: Firmware 2.00.02 veya daha yeni ve etkinleştirilmiş yükleme işlevine " "sahip FlashAir gereklidir." @@ -17113,36 +17147,34 @@ msgstr "" "Hata: \"%2%\"" msgid "" -"It has a small layer height, and results in almost negligible layer lines " -"and high printing quality. It is suitable for most general printing cases." +"It has a small layer height, and results in almost negligible layer lines and " +"high printing quality. It is suitable for most general printing cases." msgstr "" "Küçük bir katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir katman " "çizgileri ve yüksek baskı kalitesi sağlar. Çoğu genel yazdırma durumu için " "uygundur." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds " -"and acceleration, and the sparse infill pattern is Gyroid. So, it results in " -"much higher printing quality, but a much longer printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds and " +"acceleration, and the sparse infill pattern is Gyroid. So, it results in much " +"higher printing quality, but a much longer printing time." msgstr "" "0,2 mm’lik nozülün varsayılan profiliyle karşılaştırıldığında daha düşük hız " -"ve ivmeye sahiptir ve seyrek dolgu deseni Gyroid’dir. Böylece çok daha " -"yüksek baskı kalitesi elde edilir, ancak çok daha uzun baskı süresi elde " -"edilir." +"ve ivmeye sahiptir ve seyrek dolgu deseni Gyroid’dir. Böylece çok daha yüksek " +"baskı kalitesi elde edilir, ancak çok daha uzun baskı süresi elde edilir." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a slightly " -"bigger layer height, and results in almost negligible layer lines, and " -"slightly shorter printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has a slightly bigger " +"layer height, and results in almost negligible layer lines, and slightly " +"shorter printing time." msgstr "" -"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " -"biraz daha büyük katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir " -"düzeyde katman çizgileri ve biraz daha kısa yazdırma süresi sağlar." +"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, biraz " +"daha büyük katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir düzeyde " +"katman çizgileri ve biraz daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer " -"height, and results in slightly visible layer lines, but shorter printing " -"time." +"height, and results in slightly visible layer lines, but shorter printing time." msgstr "" "0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "büyük bir katman yüksekliğine sahiptir ve katman çizgilerinin hafifçe " @@ -17153,15 +17185,15 @@ msgid "" "height, and results in almost invisible layer lines and higher printing " "quality, but shorter printing time." msgstr "" -"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " -"katman yüksekliği daha küçüktür ve neredeyse görünmez katman çizgileri ve " -"daha yüksek baskı kalitesi, ancak daha kısa yazdırma süresi sağlar." +"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, katman " +"yüksekliği daha küçüktür ve neredeyse görünmez katman çizgileri ve daha yüksek " +"baskı kalitesi, ancak daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " -"lines, lower speeds and acceleration, and the sparse infill pattern is " -"Gyroid. So, it results in almost invisible layer lines and much higher " -"printing quality, but much longer printing time." +"lines, lower speeds and acceleration, and the sparse infill pattern is Gyroid. " +"So, it results in almost invisible layer lines and much higher printing " +"quality, but much longer printing time." msgstr "" "0,2 mm’lik nozulun varsayılan profiliyle karşılaştırıldığında, daha küçük " "katman çizgilerine, daha düşük hızlara ve ivmeye sahiptir ve seyrek dolgu " @@ -17175,14 +17207,14 @@ msgid "" "shorter printing time." msgstr "" "Varsayılan 0,2 mm püskürtme ucu profiliyle karşılaştırıldığında, daha küçük " -"katman yüksekliğine sahiptir ve minimum katman çizgileri ve daha yüksek " -"baskı kalitesi sağlar, ancak daha kısa yazdırma süresi sağlar." +"katman yüksekliğine sahiptir ve minimum katman çizgileri ve daha yüksek baskı " +"kalitesi sağlar, ancak daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " -"lines, lower speeds and acceleration, and the sparse infill pattern is " -"Gyroid. So, it results in minimal layer lines and much higher printing " -"quality, but much longer printing time." +"lines, lower speeds and acceleration, and the sparse infill pattern is Gyroid. " +"So, it results in minimal layer lines and much higher printing quality, but " +"much longer printing time." msgstr "" "0,2 mm’lik nozulun varsayılan profiliyle karşılaştırıldığında, daha küçük " "katman çizgilerine, daha düşük hızlara ve ivmeye sahiptir ve seyrek dolgu " @@ -17190,8 +17222,8 @@ msgstr "" "kalitesi elde edilir, ancak çok daha uzun baskı süresi elde edilir." msgid "" -"It has a general layer height, and results in general layer lines and " -"printing quality. It is suitable for most general printing cases." +"It has a general layer height, and results in general layer lines and printing " +"quality. It is suitable for most general printing cases." msgstr "" "Genel bir katman yüksekliğine sahiptir ve genel katman çizgileri ve baskı " "kalitesiyle sonuçlanır. Çoğu genel yazdırma durumu için uygundur." @@ -17213,8 +17245,7 @@ msgid "" msgstr "" "0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "büyük bir katman yüksekliğine sahiptir ve daha belirgin katman çizgileri ve " -"daha düşük baskı kalitesi sağlar, ancak biraz daha kısa yazdırma süresi " -"sağlar." +"daha düşük baskı kalitesi sağlar, ancak biraz daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer " @@ -17227,12 +17258,12 @@ msgstr "" msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and higher printing " -"quality, but longer printing time." +"height, and results in less apparent layer lines and higher printing quality, " +"but longer printing time." msgstr "" "0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri " -"ve daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." +"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri ve " +"daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " @@ -17251,10 +17282,9 @@ msgid "" "height, and results in almost negligible layer lines and higher printing " "quality, but longer printing time." msgstr "" -"0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " -"katman yüksekliği daha küçüktür ve neredeyse göz ardı edilebilir katman " -"çizgileri ve daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma " -"süresi sağlar." +"0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, katman " +"yüksekliği daha küçüktür ve neredeyse göz ardı edilebilir katman çizgileri ve " +"daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " @@ -17270,12 +17300,11 @@ msgstr "" msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in almost negligible layer lines and longer printing " -"time." +"height, and results in almost negligible layer lines and longer printing time." msgstr "" -"0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " -"katman yüksekliği daha küçüktür ve neredeyse göz ardı edilebilecek düzeyde " -"katman çizgileri ve daha uzun yazdırma süresi sağlar." +"0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, katman " +"yüksekliği daha küçüktür ve neredeyse göz ardı edilebilecek düzeyde katman " +"çizgileri ve daha uzun yazdırma süresi sağlar." msgid "" "It has a big layer height, and results in apparent layer lines and ordinary " @@ -17306,13 +17335,13 @@ msgstr "" msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " -"height, and results in much more apparent layer lines and much lower " -"printing quality, but shorter printing time in some printing cases." +"height, and results in much more apparent layer lines and much lower printing " +"quality, but shorter printing time in some printing cases." msgstr "" "0,6 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "büyük bir katman yüksekliğine sahiptir ve çok daha belirgin katman çizgileri " -"ve çok daha düşük baskı kalitesi sağlar, ancak bazı yazdırma durumlarında " -"daha kısa yazdırma süresi sağlar." +"ve çok daha düşük baskı kalitesi sağlar, ancak bazı yazdırma durumlarında daha " +"kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " @@ -17320,25 +17349,25 @@ msgid "" "quality, but longer printing time." msgstr "" "0,6 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"küçük bir katman yüksekliğine sahiptir ve katman çizgilerinin daha az " -"belirgin olmasına ve biraz daha yüksek baskı kalitesine, ancak daha uzun " -"yazdırma süresine neden olur." +"küçük bir katman yüksekliğine sahiptir ve katman çizgilerinin daha az belirgin " +"olmasına ve biraz daha yüksek baskı kalitesine, ancak daha uzun yazdırma " +"süresine neden olur." msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and higher printing " -"quality, but longer printing time." +"height, and results in less apparent layer lines and higher printing quality, " +"but longer printing time." msgstr "" "0,6 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri " -"ve daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." +"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri ve " +"daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." msgid "" -"It has a very big layer height, and results in very apparent layer lines, " -"low printing quality and general printing time." +"It has a very big layer height, and results in very apparent layer lines, low " +"printing quality and general printing time." msgstr "" -"Çok büyük bir katman yüksekliğine sahiptir ve çok belirgin katman " -"çizgilerine, düşük baskı kalitesine ve genel yazdırma süresine neden olur." +"Çok büyük bir katman yüksekliğine sahiptir ve çok belirgin katman çizgilerine, " +"düşük baskı kalitesine ve genel yazdırma süresine neden olur." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer " @@ -17346,9 +17375,9 @@ msgid "" "quality, but shorter printing time in some printing cases." msgstr "" "0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"büyük bir katman yüksekliğine sahiptir ve çok belirgin katman çizgileri ve " -"çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma " -"durumlarında daha kısa yazdırma süresi sağlar." +"büyük bir katman yüksekliğine sahiptir ve çok belirgin katman çizgileri ve çok " +"daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma durumlarında daha " +"kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a much bigger " @@ -17357,8 +17386,8 @@ msgid "" msgstr "" "0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, çok " "daha büyük bir katman yüksekliğine sahiptir ve son derece belirgin katman " -"çizgileri ve çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı " -"yazdırma durumlarında çok daha kısa yazdırma süresi sağlar." +"çizgileri ve çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma " +"durumlarında çok daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a slightly " @@ -17366,15 +17395,15 @@ msgid "" "lines and slightly higher printing quality, but longer printing time in some " "printing cases." msgstr "" -"0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " -"biraz daha küçük bir katman yüksekliğine sahiptir ve biraz daha az ama yine " -"de görünür katman çizgileri ve biraz daha yüksek baskı kalitesi sağlar, " -"ancak bazı yazdırma durumlarında daha uzun yazdırma süresi sağlar." +"0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, biraz " +"daha küçük bir katman yüksekliğine sahiptir ve biraz daha az ama yine de " +"görünür katman çizgileri ve biraz daha yüksek baskı kalitesi sağlar, ancak " +"bazı yazdırma durumlarında daha uzun yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer " -"height, and results in less but still apparent layer lines and slightly " -"higher printing quality, but longer printing time in some printing cases." +"height, and results in less but still apparent layer lines and slightly higher " +"printing quality, but longer printing time in some printing cases." msgstr "" "0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "küçük bir katman yüksekliğine sahiptir ve daha az ama yine de görünür katman " @@ -17441,8 +17470,7 @@ msgid "" msgstr "" "Sandviç modu\n" "Modelinizde çok dik çıkıntılar yoksa hassasiyeti ve katman tutarlılığını " -"artırmak için sandviç modunu (iç-dış-iç) kullanabileceğinizi biliyor " -"muydunuz?" +"artırmak için sandviç modunu (iç-dış-iç) kullanabileceğinizi biliyor muydunuz?" #: resources/data/hints.ini: [hint:Chamber temperature] msgid "" @@ -17500,18 +17528,18 @@ 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." +"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and 3D " +"scene operations." msgstr "" "Klavye kısayolları nasıl kullanılır?\n" -"Orca Slicer'ın çok çeşitli klavye kısayolları ve 3B sahne işlemleri " -"sunduğunu biliyor muydunuz?" +"Orca Slicer'ın çok çeşitli klavye kısayolları ve 3B sahne işlemleri sunduğunu " +"biliyor muydunuz?" #: resources/data/hints.ini: [hint:Reverse on odd] msgid "" "Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Did you know that Reverse on odd feature can significantly improve the " +"surface quality of your overhangs?" msgstr "" "Tersine çevir\n" "Tersine çevir özelliğinin çıkıntılarınızın yüzey kalitesini önemli " @@ -17524,8 +17552,8 @@ msgid "" "cutting tool?" msgstr "" "Kesme Aleti\n" -"Kesici aletle bir modeli istediğiniz açıda ve konumda kesebileceğinizi " -"biliyor muydunuz?" +"Kesici aletle bir modeli istediğiniz açıda ve konumda kesebileceğinizi biliyor " +"muydunuz?" #: resources/data/hints.ini: [hint:Fix Model] msgid "" @@ -17534,8 +17562,8 @@ msgid "" "problems on the Windows system?" msgstr "" "Modeli Düzelt\n" -"Windows sisteminde birçok dilimleme sorununu önlemek için bozuk bir 3D " -"modeli düzeltebileceğinizi biliyor muydunuz?" +"Windows sisteminde birçok dilimleme sorununu önlemek için bozuk bir 3D modeli " +"düzeltebileceğinizi biliyor muydunuz?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -17561,15 +17589,15 @@ msgid "" "printing by a simple click?" msgstr "" "Otomatik Yönlendirme\n" -"Basit bir tıklamayla nesneleri yazdırma için en uygun yöne " -"döndürebileceğinizi biliyor muydunuz?" +"Basit bir tıklamayla nesneleri yazdırma için en uygun yöne döndürebileceğinizi " +"biliyor muydunuz?" #: 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 "" "Yüzüstü yatır\n" "Bir modeli, yüzlerinden biri baskı yatağına oturacak şekilde hızla " @@ -17579,12 +17607,12 @@ msgstr "" #: 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 "" "Nesne Listesi\n" -"Tüm nesneleri/parçaları bir listede görüntüleyebileceğinizi ve her nesne/" -"parça için ayarları değiştirebileceğinizi biliyor muydunuz?" +"Tüm nesneleri/parçaları bir listede görüntüleyebileceğinizi ve her nesne/parça " +"için ayarları değiştirebileceğinizi biliyor muydunuz?" #: resources/data/hints.ini: [hint:Search Functionality] msgid "" @@ -17656,26 +17684,26 @@ msgstr "" #: 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 "" "Z dikiş konumu\n" "Z dikişinin konumunu kişiselleştirebileceğinizi ve hatta daha az görünür bir " -"konuma getirmek için baskının üzerine boyayabileceğinizi biliyor muydunuz? " -"Bu, modelinizin genel görünümünü iyileştirir. Buna bir bak!" +"konuma getirmek için baskının üzerine boyayabileceğinizi biliyor muydunuz? Bu, " +"modelinizin genel görünümünü iyileştirir. Buna bir bak!" #: 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 "" "Akış hızı için ince ayar\n" "Baskıların daha da iyi görünmesi için akış hızına ince ayar yapılabileceğini " -"biliyor muydunuz? Malzemeye bağlı olarak, bazı ince ayarlar yaparak " -"yazdırılan modelin genel yüzeyini iyileştirebilirsiniz." +"biliyor muydunuz? Malzemeye bağlı olarak, bazı ince ayarlar yaparak yazdırılan " +"modelin genel yüzeyini iyileştirebilirsiniz." #: resources/data/hints.ini: [hint:Split your prints into plates] msgid "" @@ -17697,19 +17725,19 @@ msgid "" "Layer Height option? Check it out!" msgstr "" "Uyarlanabilir Katman Yüksekliği ile baskınızı hızlandırın\n" -"Uyarlanabilir Katman Yüksekliği seçeneğini kullanarak bir modeli daha da " -"hızlı yazdırabileceğinizi biliyor muydunuz? Buna bir bak!" +"Uyarlanabilir Katman Yüksekliği seçeneğini kullanarak bir modeli daha da hızlı " +"yazdırabileceğinizi biliyor muydunuz? Buna bir bak!" #: 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." +"makes it easy to place the support material only on the sections of the model " +"that actually need it." msgstr "" "Destek boyama\n" -"Desteklerinizin yerini boyayabileceğinizi biliyor muydunuz? Bu özellik, " -"destek malzemesinin yalnızca modelin gerçekten ihtiyaç duyulan bölümlerine " +"Desteklerinizin yerini boyayabileceğinizi biliyor muydunuz? Bu özellik, destek " +"malzemesinin yalnızca modelin gerçekten ihtiyaç duyulan bölümlerine " "yerleştirilmesini kolaylaştırır." #: resources/data/hints.ini: [hint:Different types of supports] @@ -17733,14 +17761,14 @@ msgid "" msgstr "" "İpek Filament Baskı\n" "İpek filamentin başarılı bir şekilde basılabilmesi için özel dikkat " -"gösterilmesi gerektiğini biliyor muydunuz? En iyi sonuçlar için her zaman " -"daha yüksek sıcaklık ve daha düşük hız önerilir." +"gösterilmesi gerektiğini biliyor muydunuz? En iyi sonuçlar için her zaman daha " +"yüksek sıcaklık ve daha düşük hız önerilir." #: 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 "" "Daha iyi yapışma için kenar\n" "Baskı modellerinde baskı yüzeyi ile küçük bir temas arayüzü bulunduğunda " @@ -17771,14 +17799,14 @@ msgid "" "support/objects/infill during filament change?" msgstr "" "Desteğe/nesnelere/dolguya hizalayın\n" -"Filament değişimi sırasında, boşa harcanan filamenti desteğe/nesnelere/" -"dolguya yıkayarak kurtarabileceğinizi biliyor muydunuz?" +"Filament değişimi sırasında, boşa harcanan filamenti desteğe/nesnelere/dolguya " +"yıkayarak kurtarabileceğinizi biliyor muydunuz?" #: 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 "" "Gücü artırın\n" "Modelin gücünü artırmak için daha fazla duvar halkası ve daha yüksek seyrek " @@ -17840,8 +17868,7 @@ msgstr "" #~ msgid "" #~ "Step 1, please confirm Orca Slicer and your printer are in the same LAN." #~ msgstr "" -#~ "Adım 1, lütfen Orca Slicer ile yazıcınızın aynı LAN'da olduğunu " -#~ "doğrulayın." +#~ "Adım 1, lütfen Orca Slicer ile yazıcınızın aynı LAN'da olduğunu doğrulayın." #~ msgid "" #~ "Step 2, if the IP and Access Code below are different from the actual " @@ -17852,8 +17879,7 @@ msgstr "" #~ msgid "Step 3: Ping the IP address to check for packet loss and latency." #~ msgstr "" -#~ "Adım 3: Paket kaybını ve gecikmeyi kontrol etmek için IP adresine ping " -#~ "atın." +#~ "Adım 3: Paket kaybını ve gecikmeyi kontrol etmek için IP adresine ping atın." #~ msgid "IP and Access Code Verified! You may close the window" #~ msgstr "IP ve Erişim Kodu Doğrulandı! Pencereyi kapatabilirsin" @@ -17886,10 +17912,10 @@ msgstr "" #, c-format #~ msgid "" -#~ "Force cooling fan to be specific speed when overhang degree of printed " -#~ "part exceeds this value. Expressed as percentage which indicates 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" +#~ "Force cooling fan to be specific speed when overhang degree of printed part " +#~ "exceeds this value. Expressed as percentage which indicates 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 "" #~ "Yazdırılan parçanın çıkıntı derecesi bu değeri aştığında soğutma fanını " #~ "belirli bir hıza zorlar. Alt katmandan destek almadan çizginin ne kadar " @@ -17902,22 +17928,21 @@ msgstr "" #~ msgid "Bridge density" #~ msgstr "Köprü dolgu yoğunluğu" -#~ msgid "" -#~ "Density of external bridges. 100% means solid bridge. Default is 100%." +#~ msgid "Density of external bridges. 100% means solid bridge. Default is 100%." #~ msgstr "" #~ "Dış köprülerin yoğunluğu. %100 sağlam köprü anlamına gelir. Varsayılan " #~ "%100'dür." #~ msgid "" -#~ "Improve shell precision by adjusting outer wall spacing. This also " -#~ "improves layer consistency.\n" -#~ "Note: This setting will only take effect if the wall sequence is " -#~ "configured to Inner-Outer" +#~ "Improve shell precision by adjusting outer wall spacing. This also improves " +#~ "layer consistency.\n" +#~ "Note: This setting will only take effect if the wall sequence is configured " +#~ "to Inner-Outer" #~ msgstr "" #~ "Dış duvar aralığını ayarlayarak kabuk hassasiyetini artırın. Bu aynı " #~ "zamanda katman tutarlılığını da artırır.\n" -#~ "Not: Bu ayar yalnızca duvar sırası İç-Dış olarak yapılandırıldığında " -#~ "etkili olacaktır." +#~ "Not: Bu ayar yalnızca duvar sırası İç-Dış olarak yapılandırıldığında etkili " +#~ "olacaktır." #~ msgid "Thick bridges" #~ msgstr "Kalın köprüler" @@ -17926,24 +17951,24 @@ msgstr "" #~ msgstr "Küçük iç köprüleri filtreleyin (beta)" #~ msgid "" -#~ "This option can help reducing pillowing on top surfaces in heavily " -#~ "slanted or curved models.\n" +#~ "This option can help reducing pillowing on top surfaces in heavily slanted " +#~ "or curved models.\n" #~ "\n" -#~ "By default, small internal bridges are filtered out and the internal " -#~ "solid infill is printed directly over the sparse infill. This works well " -#~ "in most cases, speeding up printing without too much compromise on top " -#~ "surface quality. \n" +#~ "By default, small internal bridges are filtered out and the internal solid " +#~ "infill is printed directly over the sparse infill. This works well in most " +#~ "cases, speeding up printing without too much compromise on top surface " +#~ "quality. \n" #~ "\n" #~ "However, in heavily slanted or curved models especially where too low " #~ "sparse infill density is used, this may result in curling of the " #~ "unsupported solid infill, causing pillowing.\n" #~ "\n" #~ "Disabling this option will print internal bridge layer over slightly " -#~ "unsupported internal solid infill. The options below control the amount " -#~ "of filtering, i.e. the amount of internal bridges created.\n" +#~ "unsupported internal solid infill. The options below control the amount of " +#~ "filtering, i.e. the amount of internal bridges created.\n" #~ "\n" -#~ "Filter - enable this option. This is the default behavior and works well " -#~ "in most cases.\n" +#~ "Filter - enable this option. This is the default behavior and works well in " +#~ "most cases.\n" #~ "\n" #~ "Limited filtering - creates internal bridges on heavily slanted surfaces, " #~ "while avoiding creating unnecessary internal bridges. This works well for " @@ -17961,9 +17986,8 @@ msgstr "" #~ "yüzey kalitesinden çok fazla ödün vermeden yazdırmayı hızlandırır. \n" #~ "\n" #~ "Bununla birlikte, özellikle çok düşük seyrek dolgu yoğunluğunun " -#~ "kullanıldığı aşırı eğimli veya kavisli modellerde, bu durum " -#~ "desteklenmeyen katı dolgunun kıvrılmasına ve yastıklanmaya neden olmasına " -#~ "neden olabilir.\n" +#~ "kullanıldığı aşırı eğimli veya kavisli modellerde, bu durum desteklenmeyen " +#~ "katı dolgunun kıvrılmasına ve yastıklanmaya neden olmasına neden olabilir.\n" #~ "\n" #~ "Bu seçeneğin devre dışı bırakılması, iç köprü katmanını hafif " #~ "desteklenmeyen dahili katı dolgu üzerine yazdıracaktır. Aşağıdaki " @@ -17993,18 +18017,18 @@ msgstr "" #~ "Yalnızca devre dışı_fan_first_layers tarafından geçersiz kılınabilir." #~ 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" +#~ "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 "" -#~ "Daha düşük bir değer, daha yumuşak ekstrüzyon hızı geçişleriyle " -#~ "sonuçlanır. Ancak bu, önemli ölçüde daha büyük bir gcode dosyası ve " -#~ "yazıcının işlemesi için daha fazla talimatla sonuçlanır. \n" +#~ "Daha düşük bir değer, daha yumuşak ekstrüzyon hızı geçişleriyle sonuçlanır. " +#~ "Ancak bu, önemli ölçüde daha büyük bir gcode dosyası ve yazıcının işlemesi " +#~ "için daha fazla talimatla sonuçlanır. \n" #~ "\n" #~ "Varsayılan değer olan 3 çoğu durumda iyi çalışır. Yazıcınız takılıyorsa, " #~ "yapılan ayarlamaların sayısını azaltmak için bu değeri artırın\n" @@ -18012,8 +18036,8 @@ msgstr "" #~ "İzin verilen değerler: 1-5" #~ msgid "" -#~ "The minimum printing speed that the printer will slow down to to attempt " -#~ "to maintain the minimum layer time above, when slow down for better layer " +#~ "The minimum printing speed that the printer will slow down to to attempt to " +#~ "maintain the minimum layer time above, when slow down for better layer " #~ "cooling is enabled." #~ msgstr "" #~ "Daha iyi katman soğutması için yavaşlama etkinleştirildiğinde, yukarıdaki " @@ -18025,9 +18049,9 @@ msgstr "" #~ "normal(manual) or tree(manual) is selected, only support enforcers are " #~ "generated" #~ msgstr "" -#~ "Desteği otomatik olarak oluşturmak için normal(otomatik) ve " -#~ "ağaç(otomatik) kullanılır. Normal(manuel) veya ağaç(manuel) seçilirse " -#~ "yalnızca destek uygulayıcıları oluşturulur" +#~ "Desteği otomatik olarak oluşturmak için normal(otomatik) ve ağaç(otomatik) " +#~ "kullanılır. Normal(manuel) veya ağaç(manuel) seçilirse yalnızca destek " +#~ "uygulayıcıları oluşturulur" #~ msgid "normal(auto)" #~ msgstr "Normal(Otomatik)" @@ -18072,8 +18096,8 @@ msgstr "" #~ "useful. Can be a % of the perimeter width.\n" #~ "Value 0 enables reversal on every even layers regardless." #~ msgstr "" -#~ "Ters çevirmenin faydalı sayılması için çıkıntının mm sayısı olması " -#~ "gerekir. Çevre genişliğinin %’si olabilir.\n" +#~ "Ters çevirmenin faydalı sayılması için çıkıntının mm sayısı olması gerekir. " +#~ "Çevre genişliğinin %’si olabilir.\n" #~ "0 değeri ne olursa olsun her çift katmanda ters çevirmeyi mümkün kılar." #~ msgid "Reverse on odd" @@ -18088,8 +18112,8 @@ msgstr "" #~ "stresses in the part walls." #~ msgstr "" #~ "Tek katmanlarda ters yönde bir çıkıntının üzerinde bir kısmı bulunan " -#~ "çevreleri ekstrüzyonla çıkarın. Bu alternatif desen, dik çıkıntıları " -#~ "büyük ölçüde iyileştirebilir.\n" +#~ "çevreleri ekstrüzyonla çıkarın. Bu alternatif desen, dik çıkıntıları büyük " +#~ "ölçüde iyileştirebilir.\n" #~ "\n" #~ "Bu ayar aynı zamanda parça duvarlarındaki gerilimin azalması nedeniyle " #~ "parçanın bükülmesinin azaltılmasına da yardımcı olabilir." @@ -18099,10 +18123,10 @@ msgstr "" #~ "\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" +#~ "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 recommended to set the " #~ "Reverse Threshold to 0 so that all internal walls print in alternating " @@ -18110,16 +18134,16 @@ msgstr "" #~ msgstr "" #~ "Ters çevre mantığını yalnızca iç çevrelere uygulayın. \n" #~ "\n" -#~ "Bu ayar, parçalar artık farklı yönlerde dağıtıldığından parça " -#~ "gerilimlerini büyük ölçüde azaltır. Bu, dış duvar kalitesini korurken " -#~ "parçanın bükülmesini de azaltacaktır. Bu özellik, ABS/ASA gibi eğrilmeye " -#~ "yatkın malzemeler ve ayrıca TPU ve İpek PLA gibi elastik filamentler için " -#~ "çok faydalı olabilir. Ayrıca destekler üzerindeki yüzen bölgelerdeki " -#~ "bükülmenin azaltılmasına da yardımcı olabilir.\n" +#~ "Bu ayar, parçalar artık farklı yönlerde dağıtıldığından parça gerilimlerini " +#~ "büyük ölçüde azaltır. Bu, dış duvar kalitesini korurken parçanın " +#~ "bükülmesini de azaltacaktır. Bu özellik, ABS/ASA gibi eğrilmeye yatkın " +#~ "malzemeler ve ayrıca TPU ve İpek PLA gibi elastik filamentler için çok " +#~ "faydalı olabilir. Ayrıca destekler üzerindeki yüzen bölgelerdeki bükülmenin " +#~ "azaltılmasına da yardımcı olabilir.\n" #~ "\n" #~ "Bu ayarın en etkili olması için, tüm iç duvarların çıkıntı derecelerine " -#~ "bakılmaksızın tek katmanlar üzerine değişen yönlerde yazdırılması için " -#~ "Ters Eşiği 0'a ayarlamanız önerilir." +#~ "bakılmaksızın tek katmanlar üzerine değişen yönlerde yazdırılması için Ters " +#~ "Eşiği 0'a ayarlamanız önerilir." #, no-c-format, no-boost-format #~ msgid "" @@ -18127,25 +18151,25 @@ msgstr "" #~ "useful. Can be a % of the perimeter width.\n" #~ "Value 0 enables reversal on every odd layers regardless." #~ msgstr "" -#~ "Ters çevirmenin faydalı sayılması için çıkıntının mm sayısı olması " -#~ "gerekir. Çevre genişliğinin %'si olabilir.\n" +#~ "Ters çevirmenin faydalı sayılması için çıkıntının mm sayısı olması gerekir. " +#~ "Çevre genişliğinin %'si olabilir.\n" #~ "Değer 0 her tek katmanda terslemeyi etkinleştirir." #~ msgid "" -#~ "The direction which the wall loops are extruded when looking down from " -#~ "the top.\n" +#~ "The direction which the wall loops are extruded when looking down from the " +#~ "top.\n" #~ "\n" #~ "By default all walls are extruded in counter-clockwise, unless Reverse on " -#~ "odd is enabled. Set this to any option other than Auto will force the " -#~ "wall direction regardless of the Reverse on odd.\n" +#~ "odd is enabled. Set this to any option other than Auto will force the wall " +#~ "direction regardless of the Reverse on odd.\n" #~ "\n" #~ "This option will be disabled if spiral vase mode is enabled." #~ msgstr "" #~ "Yukarıdan aşağıya bakıldığında duvar döngülerinin ekstrüzyona uğradığı " #~ "yön.\n" #~ "\n" -#~ "Tek sayıyı ters çevir seçeneği etkinleştirilmedikçe, varsayılan olarak " -#~ "tüm duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik dışında " +#~ "Tek sayıyı ters çevir seçeneği etkinleştirilmedikçe, varsayılan olarak tüm " +#~ "duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik dışında " #~ "herhangi bir seçeneğe ayarlayın, Ters açıklığa bakılmaksızın duvar yönünü " #~ "zorlayacaktır.\n" #~ "\n" @@ -18177,9 +18201,9 @@ msgstr "" #~ 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" +#~ "(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 commands 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 " @@ -18187,9 +18211,8 @@ msgstr "" #~ "Use 0 to deactivate." #~ msgstr "" #~ "Fanı hedef başlangıç zamanından bu kadar saniye önce başlatın (kesirli " -#~ "saniyeleri kullanabilirsiniz). Bu süre tahmini için sonsuz ivme varsayar " -#~ "ve yalnızca G1 ve G0 hareketlerini hesaba katar (yay uydurma " -#~ "desteklenmez).\n" +#~ "saniyeleri kullanabilirsiniz). Bu süre tahmini için sonsuz ivme varsayar ve " +#~ "yalnızca G1 ve G0 hareketlerini hesaba katar (yay uydurma desteklenmez).\n" #~ "Fan komutlarını özel kodlardan taşımaz (bir çeşit 'bariyer' görevi " #~ "görürler).\n" #~ "'Yalnızca özel başlangıç gcode'u etkinleştirilmişse, fan komutları " @@ -18198,8 +18221,8 @@ msgstr "" #~ msgid "" #~ "A draft shield is useful to protect an ABS or ASA print from warping and " -#~ "detaching from print bed due to wind draft. It is usually needed only " -#~ "with open frame printers, i.e. without an enclosure. \n" +#~ "detaching from print bed due to wind draft. It is usually needed only with " +#~ "open frame printers, i.e. without an enclosure. \n" #~ "\n" #~ "Options:\n" #~ "Enabled = skirt is as tall as the highest printed object.\n" @@ -18218,68 +18241,67 @@ msgstr "" #~ "Etkin = etek, yazdırılan en yüksek nesne kadar uzundur.\n" #~ "Sınırlı = etek, etek yüksekliğinin belirttiği kadar uzundur.\n" #~ "\n" -#~ "Not: Rüzgarlık etkinken etek, nesneden etek mesafesinde yazdırılacaktır. " -#~ "Bu nedenle eğer kenarlar aktifse onlarla kesişebilir. Bunu önlemek için " -#~ "etek mesafesi değerini artırın.\n" +#~ "Not: Rüzgarlık etkinken etek, nesneden etek mesafesinde yazdırılacaktır. Bu " +#~ "nedenle eğer kenarlar aktifse onlarla kesişebilir. Bunu önlemek için etek " +#~ "mesafesi değerini artırın.\n" #~ msgid "Limited" #~ msgstr "Sınırlı" #~ msgid "" -#~ "Minimum filament extrusion length in mm when printing the skirt. Zero " -#~ "means this feature is disabled.\n" +#~ "Minimum filament extrusion length in mm when printing the skirt. Zero means " +#~ "this feature is disabled.\n" #~ "\n" -#~ "Using a non zero value is useful if the printer is set up to print " -#~ "without a prime line." +#~ "Using a non zero value is useful if the printer is set up to print without " +#~ "a prime line." #~ msgstr "" -#~ "Etek yazdırılırken mm cinsinden minimum filaman ekstrüzyon uzunluğu. " -#~ "Sıfır, bu özelliğin devre dışı olduğu anlamına gelir.\n" +#~ "Etek yazdırılırken mm cinsinden minimum filaman ekstrüzyon uzunluğu. Sıfır, " +#~ "bu özelliğin devre dışı olduğu anlamına gelir.\n" #~ "\n" -#~ "Yazıcı ana hat olmadan yazdırmak üzere ayarlanmışsa sıfır dışında bir " -#~ "değer kullanmak yararlı olur." +#~ "Yazıcı ana hat olmadan yazdırmak üzere ayarlanmışsa sıfır dışında bir değer " +#~ "kullanmak yararlı olur." #~ msgid "" #~ "Adjust this value to prevent short, unclosed walls from being printed, " #~ "which could increase print time. Higher values remove more and longer " #~ "walls.\n" #~ "\n" -#~ "NOTE: Bottom and top surfaces will not be affected by this value to " -#~ "prevent visual gaps on the ouside of the model. Adjust 'One wall " -#~ "threshold' in the Advanced settings below to adjust the sensitivity of " -#~ "what is considered a top-surface. 'One wall threshold' is only visible if " -#~ "this setting is set above the default value of 0.5, or if single-wall top " -#~ "surfaces is enabled." +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent " +#~ "visual gaps on the ouside of the model. Adjust 'One wall threshold' in the " +#~ "Advanced settings below to adjust the sensitivity of what is considered a " +#~ "top-surface. 'One wall threshold' is only visible if this setting is set " +#~ "above the default value of 0.5, or if single-wall top surfaces is enabled." #~ msgstr "" #~ "Yazdırma süresini artırabilecek kısa, kapatılmamış duvarların " -#~ "yazdırılmasını önlemek için bu değeri ayarlayın. Daha yüksek değerler " -#~ "daha fazla ve daha uzun duvarları kaldırır.\n" +#~ "yazdırılmasını önlemek için bu değeri ayarlayın. Daha yüksek değerler daha " +#~ "fazla ve daha uzun duvarları kaldırır.\n" #~ "\n" -#~ "NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst " -#~ "yüzeyler bu değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen " -#~ "şeyin hassasiyetini ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek " -#~ "duvar eşiği'ni ayarlayın. 'Tek duvar eşiği' yalnızca bu ayar varsayılan " -#~ "değer olan 0,5'in üzerine ayarlandığında veya tek duvarlı üst yüzeyler " +#~ "NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler " +#~ "bu değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin " +#~ "hassasiyetini ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar " +#~ "eşiği'ni ayarlayın. 'Tek duvar eşiği' yalnızca bu ayar varsayılan değer " +#~ "olan 0,5'in üzerine ayarlandığında veya tek duvarlı üst yüzeyler " #~ "etkinleştirildiğinde görünür." #~ msgid "Don't filter out small internal bridges (beta)" #~ msgstr "Küçük iç köprüleri filtrelemeyin (deneysel)" #~ msgid "" -#~ "This option can help reducing pillowing on top surfaces in heavily " -#~ "slanted or curved models.\n" +#~ "This option can help reducing pillowing on top surfaces in heavily slanted " +#~ "or curved models.\n" #~ "\n" -#~ "By default, small internal bridges are filtered out and the internal " -#~ "solid infill is printed directly over the sparse infill. This works well " -#~ "in most cases, speeding up printing without too much compromise on top " -#~ "surface quality. \n" +#~ "By default, small internal bridges are filtered out and the internal solid " +#~ "infill is printed directly over the sparse infill. This works well in most " +#~ "cases, speeding up printing without too much compromise on top surface " +#~ "quality. \n" #~ "\n" #~ "However, in heavily slanted or curved models especially where too low " #~ "sparse infill density is used, this may result in curling of the " #~ "unsupported solid infill, causing pillowing.\n" #~ "\n" #~ "Enabling this option will print internal bridge layer over slightly " -#~ "unsupported internal solid infill. The options below control the amount " -#~ "of filtering, i.e. the amount of internal bridges created.\n" +#~ "unsupported internal solid infill. The options below control the amount of " +#~ "filtering, i.e. the amount of internal bridges created.\n" #~ "\n" #~ "Disabled - Disables this option. This is the default behavior and works " #~ "well in most cases.\n" @@ -18300,9 +18322,8 @@ msgstr "" #~ "yüzey kalitesinden çok fazla ödün vermeden yazdırmayı hızlandırır. \n" #~ "\n" #~ "Bununla birlikte, özellikle çok düşük seyrek dolgu yoğunluğunun " -#~ "kullanıldığı aşırı eğimli veya kavisli modellerde, bu durum " -#~ "desteklenmeyen katı dolgunun kıvrılmasına ve yastıklanmaya neden olmasına " -#~ "neden olabilir.\n" +#~ "kullanıldığı aşırı eğimli veya kavisli modellerde, bu durum desteklenmeyen " +#~ "katı dolgunun kıvrılmasına ve yastıklanmaya neden olmasına neden olabilir.\n" #~ "\n" #~ "Bu seçeneğin etkinleştirilmesi, iç köprü katmanını hafif desteklenmeyen " #~ "dahili katı dolgu üzerine yazdıracaktır. Aşağıdaki seçenekler filtreleme " @@ -18315,16 +18336,16 @@ msgstr "" #~ "gereksiz iç köprülerin oluşmasını da önler. Bu, çoğu zor modelde işe " #~ "yarar.\n" #~ "\n" -#~ "Filtreleme yok - Her potansiyel dahili çıkıntıda dahili köprüler " -#~ "oluşturur. Bu seçenek, aşırı eğimli üst yüzey modelleri için " -#~ "kullanışlıdır. Ancak çoğu durumda çok fazla gereksiz köprü oluşturur." +#~ "Filtreleme yok - Her potansiyel dahili çıkıntıda dahili köprüler oluşturur. " +#~ "Bu seçenek, aşırı eğimli üst yüzey modelleri için kullanışlıdır. Ancak çoğu " +#~ "durumda çok fazla gereksiz köprü oluşturur." #~ msgid "Shrinkage" #~ msgstr "Büzüşme" #~ msgid "" -#~ "Your object appears to be too large. It will be scaled down to fit the " -#~ "heat bed automatically." +#~ "Your object appears to be too large. It will be scaled down to fit the heat " +#~ "bed automatically." #~ msgstr "" #~ "Nesneniz çok büyük görünüyor. Plakaya otomatik olarak uyacak şekilde " #~ "küçültülecektir." @@ -18341,15 +18362,14 @@ msgstr "" #~ "below.\n" #~ "\n" #~ "Options:\n" -#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid " -#~ "surfaces\n" +#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" #~ "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " #~ "only\n" #~ "3. Nowhere: Disables gap fill\n" #~ msgstr "" -#~ "Seçilen yüzeyler için boşluk doldurmayı etkinleştirir. Doldurulacak " -#~ "minimum boşluk uzunluğu aşağıdaki küçük boşlukları filtrele seçeneğinden " -#~ "kontrol edilebilir.\n" +#~ "Seçilen yüzeyler için boşluk doldurmayı etkinleştirir. Doldurulacak minimum " +#~ "boşluk uzunluğu aşağıdaki küçük boşlukları filtrele seçeneğinden kontrol " +#~ "edilebilir.\n" #~ "\n" #~ "Seçenekler:\n" #~ "1. Her Yerde: Üst, alt ve iç katı yüzeylere boşluk doldurma uygular\n" @@ -18365,20 +18385,20 @@ msgstr "" #~ "değeri biraz azaltın (örneğin 0,9)" #~ 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." +#~ "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 "" #~ "Bu değer iç köprü katmanının kalınlığını belirler. Bu, seyrek dolgunun " -#~ "üzerindeki ilk katmandır. Seyrek dolguya göre yüzey kalitesini " -#~ "iyileştirmek için bu değeri biraz azaltın (örneğin 0,9)." +#~ "üzerindeki ilk katmandır. Seyrek dolguya göre yüzey kalitesini iyileştirmek " +#~ "için bu değeri biraz azaltın (örneğin 0,9)." #~ msgid "" #~ "This factor affects the amount of material for top solid infill. You can " #~ "decrease it slightly to have smooth surface finish" #~ msgstr "" -#~ "Bu faktör üst katı dolgu için malzeme miktarını etkiler. Pürüzsüz bir " -#~ "yüzey elde etmek için biraz azaltabilirsiniz" +#~ "Bu faktör üst katı dolgu için malzeme miktarını etkiler. Pürüzsüz bir yüzey " +#~ "elde etmek için biraz azaltabilirsiniz" #~ msgid "This factor affects the amount of material for bottom solid infill" #~ msgstr "Bu faktör alt katı dolgu için malzeme miktarını etkiler" @@ -18405,16 +18425,15 @@ msgstr "" #~ "Filamenti değiştirdiğinizde yeni filament yükleme zamanı. Yalnızca " #~ "istatistikler için" -#~ msgid "" -#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgid "Time to unload old filament when switch filament. For statistics only" #~ msgstr "" #~ "Filamenti değiştirdiğinizde eski filamenti boşaltma zamanı. Yalnızca " #~ "istatistikler için" #~ 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." +#~ "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 "" #~ "Yazıcı donanım yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım " #~ "değişikliği sırasında (T kodu yürütülürken) yeni bir filament yükleme " @@ -18422,20 +18441,20 @@ msgstr "" #~ "eklenir." #~ 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 " +#~ "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 "" -#~ "Yazıcı ürün yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım " -#~ "değişimi sırasında (T kodu yürütülürken) filamenti boşaltma süresi. Bu " -#~ "süre, G kodu süre tahmincisi tarafından toplam baskı süresine eklenir." +#~ "Yazıcı ürün yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım değişimi " +#~ "sırasında (T kodu yürütülürken) filamenti boşaltma süresi. Bu süre, G kodu " +#~ "süre tahmincisi tarafından toplam baskı süresine eklenir." #~ msgid "Filter out gaps smaller than the threshold specified" #~ msgstr "Belirtilen eşikten daha küçük boşlukları filtrele" #~ msgid "" -#~ "Enable this option for chamber temperature control. An M191 command will " -#~ "be added before \"machine_start_gcode\"\n" +#~ "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 "" #~ "Hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Önce bir M191 " @@ -18444,24 +18463,24 @@ 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" +#~ "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 "" #~ "Daha yüksek hazne sıcaklığı, eğrilmeyi bastırmaya veya azaltmaya yardımcı " -#~ "olabilir ve ABS, ASA, PC, PA ve benzeri gibi yüksek sıcaklıktaki " -#~ "malzemeler için potansiyel olarak daha yüksek ara katman yapışmasına yol " -#~ "açabilir Aynı zamanda, ABS ve ASA'nın hava filtrasyonu daha da " -#~ "kötüleşecektir. PLA, PETG, TPU, PVA ve diğer düşük sıcaklıktaki " -#~ "malzemeler için, tıkanmaları önlemek için gerçek hazne sıcaklığı yüksek " -#~ "olmamalıdır, bu nedenle kapatma anlamına gelen 0 şiddetle tavsiye edilir" +#~ "olabilir ve ABS, ASA, PC, PA ve benzeri gibi yüksek sıcaklıktaki malzemeler " +#~ "için potansiyel olarak daha yüksek ara katman yapışmasına yol açabilir Aynı " +#~ "zamanda, ABS ve ASA'nın hava filtrasyonu daha da kötüleşecektir. PLA, PETG, " +#~ "TPU, PVA ve diğer düşük sıcaklıktaki malzemeler için, tıkanmaları önlemek " +#~ "için gerçek hazne sıcaklığı yüksek olmamalıdır, bu nedenle kapatma anlamına " +#~ "gelen 0 şiddetle tavsiye edilir" #~ msgid "" -#~ "Different nozzle diameters and different filament diameters is not " -#~ "allowed when prime tower is enabled." +#~ "Different nozzle diameters and different filament diameters is not allowed " +#~ "when prime tower is enabled." #~ msgstr "" #~ "Ana kule etkinleştirildiğinde farklı nozul çaplarına ve farklı filament " #~ "çaplarına izin verilmez." @@ -18474,11 +18493,10 @@ msgstr "" #~ "Height of initial layer. Making initial layer height to be thick slightly " #~ "can improve build plate adhension" #~ msgstr "" -#~ "İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, " -#~ "baskı plakasının yapışmasını iyileştirebilir" +#~ "İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, baskı " +#~ "plakasının yapışmasını iyileştirebilir" -#~ msgid "" -#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgid "Interlocking depth of a segmented region. Zero disables this feature." #~ msgstr "" #~ "Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği. 0 bu " #~ "özelliği devre dışı bırakır." @@ -18496,8 +18514,8 @@ msgstr "" #~ msgstr "Herhangi bir uygulamayla ilişkili değil" #~ msgid "" -#~ "Associate OrcaSlicer with prusaslicer:// links so that Orca can open " -#~ "models from Printable.com" +#~ "Associate OrcaSlicer with prusaslicer:// links so that Orca can open models " +#~ "from Printable.com" #~ msgstr "" #~ "Orca’nın Printable.com’daki modelleri açabilmesi için OrcaSlicer’ı " #~ "prusaslicer:// bağlantılarıyla ilişkilendirin" @@ -18506,8 +18524,8 @@ msgstr "" #~ msgstr "Bambstudio’yu ilişkilendirin://" #~ msgid "" -#~ "Associate OrcaSlicer with bambustudio:// links so that Orca can open " -#~ "models from makerworld.com" +#~ "Associate OrcaSlicer with bambustudio:// links so that Orca can open models " +#~ "from makerworld.com" #~ msgstr "" #~ "Orca’nın makerworld.com’daki modelleri açabilmesi için OrcaSlicer’ı " #~ "bambustudio:// bağlantılarıyla ilişkilendirin" @@ -18554,45 +18572,42 @@ msgstr "" #~ "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" +#~ "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 "" #~ "Lütfen Akış Dinamiği Kalibrasyonunun ayrıntılarını wiki'mizden " #~ "bulabilirsiniz.\n" #~ "\n" #~ "Genellikle kalibrasyon gereksizdir. Yazdırma başlat menüsündeki \"akış " -#~ "dinamiği kalibrasyonu\" seçeneği işaretliyken tek renkli/malzeme " -#~ "baskısını başlattığınızda, yazıcı eski yöntemi izleyecek, yazdırmadan " -#~ "önce filamenti kalibre edecektir; Çok renkli/malzeme baskısını " -#~ "başlattığınızda, yazıcı her filament değişiminde filament için varsayılan " -#~ "dengeleme parametresini kullanacaktır ve bu çoğu durumda iyi bir sonuç " -#~ "verecektir.\n" +#~ "dinamiği kalibrasyonu\" seçeneği işaretliyken tek renkli/malzeme baskısını " +#~ "başlattığınızda, yazıcı eski yöntemi izleyecek, yazdırmadan önce filamenti " +#~ "kalibre edecektir; Çok renkli/malzeme baskısını başlattığınızda, yazıcı her " +#~ "filament değişiminde filament için varsayılan dengeleme parametresini " +#~ "kullanacaktır ve bu çoğu durumda iyi bir sonuç verecektir.\n" #~ "\n" -#~ "Kalibrasyon sonucunun güvenilir olmamasına yol açacak birkaç durum " -#~ "olduğunu lütfen unutmayın: kalibrasyonu yapmak için doku plakası " -#~ "kullanmak; baskı plakasının yapışması iyi değil (lütfen baskı plakasını " -#~ "yıkayın veya yapıştırıcı uygulayın!) ...Daha fazlasını wiki'mizden " -#~ "bulabilirsiniz.\n" +#~ "Kalibrasyon sonucunun güvenilir olmamasına yol açacak birkaç durum olduğunu " +#~ "lütfen unutmayın: kalibrasyonu yapmak için doku plakası kullanmak; baskı " +#~ "plakasının yapışması iyi değil (lütfen baskı plakasını yıkayın veya " +#~ "yapıştırıcı uygulayın!) ...Daha fazlasını wiki'mizden bulabilirsiniz.\n" #~ "\n" -#~ "Testimizde kalibrasyon sonuçlarında yaklaşık yüzde 10'luk bir titreşim " -#~ "var ve bu da sonucun her kalibrasyonda tam olarak aynı olmamasına neden " -#~ "olabilir. Yeni güncellemelerle iyileştirmeler yapmak için hâlâ temel " -#~ "nedeni araştırıyoruz." +#~ "Testimizde kalibrasyon sonuçlarında yaklaşık yüzde 10'luk bir titreşim var " +#~ "ve bu da sonucun her kalibrasyonda tam olarak aynı olmamasına neden " +#~ "olabilir. Yeni güncellemelerle iyileştirmeler yapmak için hâlâ temel nedeni " +#~ "araştırıyoruz." #~ msgid "" -#~ "Only one of the results with the same name will be saved. Are you sure " -#~ "you want to overrides the other results?" +#~ "Only one of the results with the same name will be saved. Are you sure you " +#~ "want to overrides the other results?" #~ msgstr "" #~ "Aynı ada sahip sonuçlardan yalnızca biri kaydedilecektir. Diğer sonuçları " #~ "geçersiz kılmak istediğinizden emin misiniz?" @@ -18600,11 +18615,11 @@ 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?" +#~ "Only one of the results with the same name is saved. Are you sure you want " +#~ "to overrides the historical result?" #~ msgstr "" -#~ "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada " -#~ "sahip sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " +#~ "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada sahip " +#~ "sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " #~ "istediğinizden emin misiniz?" #~ msgid "Please find the cornor with perfect degree of extrusion" @@ -18627,11 +18642,11 @@ msgstr "" #~ "Order of wall/infill. When the tickbox is unchecked the walls are printed " #~ "first, which works best in most cases.\n" #~ "\n" -#~ "Printing walls first may help with extreme overhangs as the walls have " -#~ "the neighbouring infill to adhere to. However, the infill will slightly " -#~ "push out the printed walls where it is attached to them, resulting in a " -#~ "worse external surface finish. It can also cause the infill to shine " -#~ "through the external surfaces of the part." +#~ "Printing walls first may help with extreme overhangs as the walls have the " +#~ "neighbouring infill to adhere to. However, the infill will slightly push " +#~ "out the printed walls where it is attached to them, resulting in a worse " +#~ "external surface finish. It can also cause the infill to shine through the " +#~ "external surfaces of the part." #~ msgstr "" #~ "Duvar/dolgu sırası. Onay kutusunun işareti kaldırıldığında ilk olarak " #~ "duvarlar yazdırılır ve bu çoğu durumda en iyi sonucu verir.\n" @@ -18639,20 +18654,20 @@ msgstr "" #~ "Duvarların komşu dolgulara yapışması nedeniyle ilk önce duvarların " #~ "basılması aşırı çıkıntılara yardımcı olabilir. Ancak dolgu, baskılı " #~ "duvarları tutturulduğu yerden hafifçe dışarı doğru itecek ve bu da daha " -#~ "kötü bir dış yüzey kalitesine neden olacaktır. Ayrıca dolgunun parçanın " -#~ "dış yüzeylerinden parlamasına da neden olabilir." +#~ "kötü bir dış yüzey kalitesine neden olacaktır. Ayrıca dolgunun parçanın dış " +#~ "yüzeylerinden parlamasına da neden olabilir." #~ msgid "V" #~ msgstr "V" #~ 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" +#~ "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, Prusa Research'ün PrusaSlicer'ından Bambulab'ın " -#~ "BambuStudio'sunu temel alıyor. PrusaSlicer, Alessandro Ranellucci ve " -#~ "RepRap topluluğu tarafından hazırlanan Slic3r'dendir" +#~ "BambuStudio'sunu temel alıyor. PrusaSlicer, Alessandro Ranellucci ve RepRap " +#~ "topluluğu tarafından hazırlanan Slic3r'dendir" #~ msgid "Export &Configs" #~ msgstr "Yapılandırmaları Dışa Aktar" @@ -18668,8 +18683,8 @@ msgstr "" #~ msgstr "Dolgu açısı" #~ msgid "" -#~ "Enable this to get a G-code file which has G2 and G3 moves. And the " -#~ "fitting tolerance is same with resolution" +#~ "Enable this to get a G-code file which has G2 and G3 moves. And the fitting " +#~ "tolerance is same with resolution" #~ msgstr "" #~ "G2 ve G3 hareketlerine sahip bir G kodu dosyası elde etmek için bunu " #~ "etkinleştirin. Ve montaj toleransı çözünürlükle aynıdır" @@ -18715,20 +18730,19 @@ msgstr "" #~ "switching preset?" #~ msgstr "" #~ "\n" -#~ "Ön ayarı değiştirdikten sonra bu değiştirilen ayarları (değiştirilen " -#~ "değer) korumak ister misiniz?" +#~ "Ön ayarı değiştirdikten sonra bu değiştirilen ayarları (değiştirilen değer) " +#~ "korumak ister misiniz?" #~ msgid "" -#~ "You have previously modified your settings and are about to overwrite " -#~ "them with new ones." +#~ "You have previously modified your settings and are about to overwrite them " +#~ "with new ones." #~ msgstr "" -#~ "Ayarlarınızı daha önce değiştirdiniz ve bunların üzerine yenilerini " -#~ "yazmak üzeresiniz." +#~ "Ayarlarınızı daha önce değiştirdiniz ve bunların üzerine yenilerini yazmak " +#~ "üzeresiniz." #~ msgid "" #~ "\n" -#~ "Do you want to keep your current modified settings, or use preset " -#~ "settings?" +#~ "Do you want to keep your current modified settings, or use preset settings?" #~ msgstr "" #~ "\n" #~ "Geçerli değiştirilen ayarlarınızı korumak mı yoksa önceden ayarlanmış " @@ -18748,8 +18762,8 @@ msgstr "" #~ "Choose an AMS slot then press \"Load\" or \"Unload\" button to " #~ "automatically load or unload filiament." #~ msgstr "" -#~ "Filamenti otomatik olarak yüklemek veya çıkarmak için bir AMS yuvası " -#~ "seçin ve ardından \"Yükle\" veya \"Boşalt\" düğmesine basın." +#~ "Filamenti otomatik olarak yüklemek veya çıkarmak için bir AMS yuvası seçin " +#~ "ve ardından \"Yükle\" veya \"Boşalt\" düğmesine basın." #~ msgid "MC" #~ msgstr "MC" @@ -18782,15 +18796,15 @@ msgstr "" #~ "Over 4 studio/handy are using remote access, you can close some and try " #~ "again." #~ msgstr "" -#~ "4’ten fazla stüdyo/kullanışlı uzaktan erişim kullanıyor, bazılarını " -#~ "kapatıp tekrar deneyebilirsiniz." +#~ "4’ten fazla stüdyo/kullanışlı uzaktan erişim kullanıyor, bazılarını kapatıp " +#~ "tekrar deneyebilirsiniz." #~ msgid "" #~ "The 3mf file version is in Beta and it is newer than the current Bambu " #~ "Studio version." #~ msgstr "" -#~ "3mf dosya sürümü Beta aşamasındadır ve mevcut Bambu Studio sürümünden " -#~ "daha yenidir." +#~ "3mf dosya sürümü Beta aşamasındadır ve mevcut Bambu Studio sürümünden daha " +#~ "yenidir." #~ msgid "If you would like to try Bambu Studio Beta, you may click to" #~ msgstr "Bambu Studio Beta’yı denemek isterseniz tıklayabilirsiniz." @@ -18814,12 +18828,12 @@ msgstr "" #~ msgstr "Kabin nemi" #~ msgid "" -#~ "Green means that AMS humidity is normal, orange represent humidity is " -#~ "high, red represent humidity is too high.(Hygrometer: lower the better.)" +#~ "Green means that AMS humidity is normal, orange represent humidity is high, " +#~ "red represent humidity is too high.(Hygrometer: lower the better.)" #~ msgstr "" -#~ "Yeşil, AMS neminin normal olduğunu, turuncu nemin yüksek olduğunu, " -#~ "kırmızı ise nemin çok yüksek olduğunu gösterir.(Higrometre: ne kadar " -#~ "düşükse o kadar iyidir.)" +#~ "Yeşil, AMS neminin normal olduğunu, turuncu nemin yüksek olduğunu, kırmızı " +#~ "ise nemin çok yüksek olduğunu gösterir.(Higrometre: ne kadar düşükse o " +#~ "kadar iyidir.)" #~ msgid "Desiccant status" #~ msgstr "Kurutucu durumu" @@ -18829,18 +18843,18 @@ msgstr "" #~ "inactive. Please change the desiccant.(The bars: higher the better.)" #~ msgstr "" #~ "İki çubuktan daha düşük bir kurutucu durumu, kurutucunun etkin olmadığını " -#~ "gösterir. Lütfen kurutucuyu değiştirin.(Çubuklar: ne kadar yüksek olursa " -#~ "o kadar iyidir.)" +#~ "gösterir. Lütfen kurutucuyu değiştirin.(Çubuklar: ne kadar yüksek olursa o " +#~ "kadar iyidir.)" #~ 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." +#~ "the process. During this time, the indicator may not represent the chamber " +#~ "accurately." #~ msgstr "" #~ "Not: Kapak açıkken veya kurutucu paketi değiştirildiğinde, nemin emilmesi " -#~ "saatler veya bir gece sürebilir. Düşük sıcaklıklar da süreci yavaşlatır. " -#~ "Bu süre zarfında gösterge hazneyi doğru şekilde temsil etmeyebilir." +#~ "saatler veya bir gece sürebilir. Düşük sıcaklıklar da süreci yavaşlatır. Bu " +#~ "süre zarfında gösterge hazneyi doğru şekilde temsil etmeyebilir." #~ msgid "" #~ "Note: if new filament is inserted during printing, the AMS will not " @@ -18909,8 +18923,8 @@ msgstr "" #~ "preset?" #~ msgstr "" #~ "\"%1%\" ön ayarının bazı ayarlarını değiştirdiniz.\n" -#~ "Ön ayarı değiştirdikten sonra değiştirilen bu ayarları (yeni değer) " -#~ "korumak ister misiniz?" +#~ "Ön ayarı değiştirdikten sonra değiştirilen bu ayarları (yeni değer) korumak " +#~ "ister misiniz?" #~ msgid "" #~ "You have changed some preset settings. \n" @@ -18918,8 +18932,8 @@ msgstr "" #~ "preset?" #~ msgstr "" #~ "Bazı ön ayar ayarlarını değiştirdiniz.\n" -#~ "Ön ayarı değiştirdikten sonra değiştirilen bu ayarları (yeni değer) " -#~ "korumak ister misiniz?" +#~ "Ön ayarı değiştirdikten sonra değiştirilen bu ayarları (yeni değer) korumak " +#~ "ister misiniz?" #~ msgid " ℃" #~ msgstr " °C" @@ -18927,14 +18941,14 @@ 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." +#~ "volumetric speed have a significant impact on printing quality. Please set " +#~ "them carefully." #~ msgstr "" -#~ "İhtiyacınız olursa ön ayarlarınızı düzenlemek için lütfen filament " -#~ "ayarına gidin.\n" +#~ "İhtiyacınız olursa ön ayarlarınızı düzenlemek için lütfen filament ayarına " +#~ "gidin.\n" #~ "Lütfen püskürtme ucu sıcaklığının, sıcak yatak sıcaklığının ve maksimum " -#~ "hacimsel hızın yazdırma kalitesi üzerinde önemli bir etkiye sahip " -#~ "olduğunu unutmayın. Lütfen bunları dikkatlice ayarlayın." +#~ "hacimsel hızın yazdırma kalitesi üzerinde önemli bir etkiye sahip olduğunu " +#~ "unutmayın. Lütfen bunları dikkatlice ayarlayın." #~ msgid "Studio Version:" #~ msgstr "Stüdyo Sürümü:" @@ -18979,19 +18993,19 @@ msgstr "" #~ msgstr "Depolama Yüklemesini Test Etme" #~ msgid "" -#~ "The speed setting exceeds the printer's maximum speed " -#~ "(machine_max_speed_x/machine_max_speed_y).\n" +#~ "The speed setting exceeds the printer's maximum speed (machine_max_speed_x/" +#~ "machine_max_speed_y).\n" #~ "Orca will automatically cap the print speed to ensure it doesn't surpass " #~ "the printer's capabilities.\n" -#~ "You can adjust the maximum speed setting in your printer's configuration " -#~ "to get higher speeds." +#~ "You can adjust the maximum speed setting in your printer's configuration to " +#~ "get higher speeds." #~ msgstr "" #~ "Hız ayarı yazıcının maksimum hızını aşıyor (machine_max_speed_x/" #~ "machine_max_speed_y).\n" -#~ "Orca, yazıcının yeteneklerini aşmadığından emin olmak için yazdırma " -#~ "hızını otomatik olarak sınırlayacaktır.\n" -#~ "Daha yüksek hızlar elde etmek için yazıcınızın yapılandırmasındaki " -#~ "maksimum hız ayarını yapabilirsiniz." +#~ "Orca, yazıcının yeteneklerini aşmadığından emin olmak için yazdırma hızını " +#~ "otomatik olarak sınırlayacaktır.\n" +#~ "Daha yüksek hızlar elde etmek için yazıcınızın yapılandırmasındaki maksimum " +#~ "hız ayarını yapabilirsiniz." #~ msgid "" #~ "Alternate extra wall only works with ensure vertical shell thickness " @@ -19015,8 +19029,8 @@ msgstr "" #~ "Add solid infill near sloping surfaces to guarantee the vertical shell " #~ "thickness (top+bottom solid layers)" #~ msgstr "" -#~ "Dikey kabuk kalınlığını garanti etmek için eğimli yüzeylerin yakınına " -#~ "katı dolgu ekleyin (üst + alt katı katmanlar)" +#~ "Dikey kabuk kalınlığını garanti etmek için eğimli yüzeylerin yakınına katı " +#~ "dolgu ekleyin (üst + alt katı katmanlar)" #~ msgid "Further reduce solid infill on walls (beta)" #~ msgstr "Duvarlardaki katı dolguyu daha da azaltın (deneysel)" @@ -19026,8 +19040,8 @@ msgstr "" #~ "limited infill supporting solid surfaces, make sure that you are using " #~ "adequate number of walls to support the part on sloping surfaces.\n" #~ "\n" -#~ "For heavily sloped surfaces this option is not suitable as it will " -#~ "generate too thin of a top layer and should be disabled." +#~ "For heavily sloped surfaces this option is not suitable as it will generate " +#~ "too thin of a top layer and should be disabled." #~ msgstr "" #~ "Duvarlara uygulanan katı dolguları daha da azaltır. Dolguyu destekleyen " #~ "katı yüzeyler çok sınırlı olacağından, eğimli yüzeylerde parçayı " @@ -19058,13 +19072,13 @@ msgstr "" #~ msgstr "Akış telafisi'ni etkinleştir" #~ 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." +#~ "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 "" #~ "Daha iyi katman soğutması için yavaşlama etkinleştirildiğinde, yazdırma " -#~ "çıkıntıları olduğunda ve özellik hızları açıkça belirtilmediğinde " -#~ "filament için minimum yazdırma hızı." +#~ "çıkıntıları olduğunda ve özellik hızları açıkça belirtilmediğinde filament " +#~ "için minimum yazdırma hızı." #~ msgid "No sparse layers (EXPERIMENTAL)" #~ msgstr "Seyrek katman yok (DENEYSEL)" @@ -19090,16 +19104,15 @@ msgstr "" #~ msgstr "wiki" #~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" " -#~ "option.Some extruders work better with this option unchecked (absolute " -#~ "extrusion mode). Wipe tower is only compatible with relative mode. It is " -#~ "always enabled on BambuLab printers. Default is checked" +#~ "Relative extrusion is recommended when using \"label_objects\" option.Some " +#~ "extruders work better with this option unchecked (absolute extrusion mode). " +#~ "Wipe tower is only compatible with relative mode. It is always enabled on " +#~ "BambuLab printers. Default is checked" #~ msgstr "" -#~ "\"label_objects\" seçeneği kullanılırken göreceli ekstrüzyon önerilir. " -#~ "Bazı ekstruderler bu seçeneğin işareti kaldırıldığında (mutlak ekstrüzyon " -#~ "modu) daha iyi çalışır. Temizleme kulesi yalnızca göreceli modla " -#~ "uyumludur. BambuLab yazıcılarında her zaman etkindir. Varsayılan olarak " -#~ "işaretlendi" +#~ "\"label_objects\" seçeneği kullanılırken göreceli ekstrüzyon önerilir. Bazı " +#~ "ekstruderler bu seçeneğin işareti kaldırıldığında (mutlak ekstrüzyon modu) " +#~ "daha iyi çalışır. Temizleme kulesi yalnızca göreceli modla uyumludur. " +#~ "BambuLab yazıcılarında her zaman etkindir. Varsayılan olarak işaretlendi" #~ msgid "Movement:" #~ msgstr "Hareket:" @@ -19204,8 +19217,8 @@ msgstr "" #~ 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." +#~ "the Simplify mesh feature? Right-click the model and select Simplify model. " +#~ "Read more in the documentation." #~ msgstr "" #~ "Modeli Basitleştir\n" #~ "Mesh basitleştirme özelliğini kullanarak bir ağdaki üçgen sayısını " @@ -19214,15 +19227,15 @@ msgstr "" #~ 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 "" #~ "Bir Parçayı Çıkar\n" #~ "Negatif parça değiştiriciyi kullanarak bir ağı diğerinden " #~ "çıkarabileceğinizi biliyor muydunuz? Bu şekilde örneğin doğrudan Orca " -#~ "Slicer'da kolayca yeniden boyutlandırılabilen delikler " -#~ "oluşturabilirsiniz. Daha fazlasını belgelerde okuyun." +#~ "Slicer'da kolayca yeniden boyutlandırılabilen delikler oluşturabilirsiniz. " +#~ "Daha fazlasını belgelerde okuyun." #~ msgid "Filling bed " #~ msgstr "Yatak doldurma " @@ -19238,12 +19251,10 @@ msgstr "" #~ 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" +#~ "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." +#~ msgstr "Filamenti yüklemeden önce lütfen Nozulu 170 derecenin üzerine ısıtın." #~ msgid "Show g-code window" #~ msgstr "G kodu penceresini göster" @@ -19480,8 +19491,8 @@ msgstr "" #~ "load uptodate process/machine settings from the specified file when using " #~ "uptodate" #~ msgstr "" -#~ "güncellemeyi kullanırken belirtilen dosyadan güncel işlem/" -#~ "yazıcıayarlarını yükle" +#~ "güncellemeyi kullanırken belirtilen dosyadan güncel işlem/yazıcıayarlarını " +#~ "yükle" #~ msgid "Output directory" #~ msgstr "Çıkış dizini" @@ -19493,11 +19504,11 @@ msgstr "" #~ msgstr "Hata ayıklama düzeyi" #~ msgid "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " -#~ "5:trace\n" +#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +#~ "trace\n" #~ msgstr "" -#~ "Hata ayıklama günlüğü düzeyini ayarlar. 0:önemli, 1:hata, 2:uyarı, " -#~ "3:bilgi, 4:hata ayıklama, 5:izleme\n" +#~ "Hata ayıklama günlüğü düzeyini ayarlar. 0:önemli, 1:hata, 2:uyarı, 3:bilgi, " +#~ "4:hata ayıklama, 5:izleme\n" #, boost-format #~ msgid "The selected preset: %1% is not found." @@ -19528,8 +19539,8 @@ msgstr "" #~ "OrcaSlicer configuration file may be corrupted and is not abled to be " #~ "parsed.Please delete the file and try again." #~ msgstr "" -#~ "OrcaSlicer yapılandırma dosyası bozulmuş olabilir ve ayrıştırılması " -#~ "mümkün olmayabilir. Lütfen dosyayı silin ve tekrar deneyin." +#~ "OrcaSlicer yapılandırma dosyası bozulmuş olabilir ve ayrıştırılması mümkün " +#~ "olmayabilir. Lütfen dosyayı silin ve tekrar deneyin." #~ msgid "Online Models" #~ msgstr "Çevrimiçi Modeller" @@ -19541,10 +19552,10 @@ msgstr "" #~ msgstr "Soğutma için yavaşlama durumunda minimum yazdırma hızı" #~ 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)" +#~ "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 "" #~ "Şu anda aynı yedek sarf malzemesi mevcut değildir ve otomatik yenileme şu " #~ "anda mümkün değildir.\n" @@ -19572,12 +19583,11 @@ msgstr "" #~ "Material becomes soft at this temperature. Thus the heatbed cannot be " #~ "hotter than this tempature" #~ msgstr "" -#~ "Bu sıcaklıkta malzeme yumuşar. Bu nedenle ısıtma yatağı bu sıcaklıktan " -#~ "daha sıcak olamaz" +#~ "Bu sıcaklıkta malzeme yumuşar. Bu nedenle ısıtma yatağı bu sıcaklıktan daha " +#~ "sıcak olamaz" #~ msgid "Enable this option if machine has auxiliary part cooling fan" -#~ msgstr "" -#~ "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin" +#~ msgstr "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin" #~ msgid "" #~ "This option is enabled if machine support controlling chamber temperature" @@ -19605,8 +19615,7 @@ msgstr "" #~ "katmanları etkilemez" #~ msgid "Empty layers around bottom are replaced by nearest normal layers." -#~ msgstr "" -#~ "Alt kısımdaki boş katmanların yerini en yakın normal katmanlar alır." +#~ msgstr "Alt kısımdaki boş katmanların yerini en yakın normal katmanlar alır." #~ msgid "The model has too many empty layers." #~ msgstr "Modelde çok fazla boş katman var." @@ -19621,12 +19630,11 @@ msgstr "" #~ msgstr "Tabla" #~ msgid "" -#~ "Bed temperature when high temperature plate is installed. Value 0 means " -#~ "the filament does not support to print on the High Temp Plate" +#~ "Bed temperature when high temperature plate is installed. Value 0 means the " +#~ "filament does not support to print on the High Temp Plate" #~ msgstr "" -#~ "Yüksek sıcaklık plakası takıldığında yatak sıcaklığı. 0 değeri, " -#~ "filamentin Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına " -#~ "gelir" +#~ "Yüksek sıcaklık plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin " +#~ "Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına gelir" #~ msgid "" #~ "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" @@ -19637,17 +19645,16 @@ msgstr "" #~ msgstr "Hareket için maksimum hızlanma (M204 T)" #~ 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 " +#~ "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 "" #~ "Desteğin stili ve şekli. Normal destek için, desteklerin düzenli bir " #~ "ızgaraya yansıtılması daha sağlam destekler oluşturur (varsayılan), rahat " -#~ "destek kuleleri ise malzemeden tasarruf sağlar ve nesne izlerini " -#~ "azaltır.\n" +#~ "destek kuleleri ise malzemeden tasarruf sağlar ve nesne izlerini azaltır.\n" #~ "Ağaç desteği için, ince stil, dalları daha agresif bir şekilde " #~ "birleştirecek ve çok fazla malzeme tasarrufu sağlayacak (varsayılan), " #~ "hibrit stil ise büyük düz çıkıntılar altında normal desteğe benzer yapı " From 2e9cad67ed58f378d2528ba3172aa99b53d3a97e Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 20 Feb 2025 13:21:19 +0100 Subject: [PATCH 089/129] Added missing French translations (#8467) * Added missing translations * Removed useless c-boost formats --- localization/i18n/fr/OrcaSlicer_fr.po | 69 +++++++++++++++------------ 1 file changed, 39 insertions(+), 30 deletions(-) diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index e660c8f457..46a570f097 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -3732,9 +3732,9 @@ msgstr "" #, 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" +"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 "" "La température actuelle du caisson est supérieure à la température de " "sécurité du matériau, ce qui peut entraîner un ramollissement et un bouchage " @@ -7930,9 +7930,9 @@ msgid "" "complications.Please use with the latest printer firmware." msgstr "" "Fonction expérimentale : Rétracter et couper le filament à une plus grande " -"distance lors des changements de filament afin de minimiser " -"l’affleurement.Bien que cela puisse réduire sensiblement l’affleurement, " -"cela peut également augmenter le risque d’obstruction des buses ou d’autres " +"distance lors des changements de filament afin de minimiser l’affleurement." +"Bien que cela puisse réduire sensiblement l’affleurement, cela peut " +"également augmenter le risque d’obstruction des buses ou d’autres " "complications d’impression.Veuillez utiliser le dernier micrologiciel de " "l’imprimante." @@ -10880,7 +10880,7 @@ msgstr "" "calculée automatiquement." msgid "Painted" -msgstr "" +msgstr "Peint" msgid "Brim-object gap" msgstr "Écart bord-objet" @@ -12401,8 +12401,8 @@ msgid "mm/s² or %" msgstr "mm/s² or %" 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." +"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 "" "Accélération du remplissage interne. Si la valeur est exprimée en " "pourcentage (par exemple 100%), elle sera calculée en fonction de " @@ -14435,20 +14435,27 @@ msgstr "" "spirale lisse. Si elle est exprimée en %, elle sera calculée par rapport au " "diamètre de la buse." -#, c-format, boost-format msgid "" "Sets the starting flow ratio while transitioning from the last bottom layer " "to the spiral. Normally the spiral transition scales the flow ratio from " "0% to 100% during the first loop which can in some cases lead to under " "extrusion at the start of the spiral." msgstr "" +"Définit le rapport de débit de départ lors de la transition de la dernière " +"couche inférieure à la spirale. Normalement, la transition en spirale fait " +"passer le rapport de débit de 0% à 100% au cours de la première boucle, ce " +"qui peut dans certains cas entraîner une sous-extrusion au début de la " +"spirale." -#, c-format, boost-format msgid "" "Sets the finishing flow ratio while ending the spiral. Normally the spiral " "transition scales the flow ratio from 100% to 0% during the last loop which " "can in some cases lead to under extrusion at the end of the spiral." msgstr "" +"Définit le ratio de débit de finition lors de la fin de la spirale. " +"Normalement, la transition de la spirale fait passer le taux de débit de " +"100% à 0% au cours de la dernière boucle, ce qui peut dans certains cas " +"entraîner une sous-extrusion à la fin de la spirale." msgid "" "If smooth or traditional mode is selected, a timelapse video will be " @@ -15377,9 +15384,9 @@ msgid "Idle temperature" msgstr "Température au repos" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" "Température de la buse lorsque l’outil n’est pas utilisé dans les " "configurations multi-outils. Cette fonction n’est utilisée que lorsque la " @@ -16112,8 +16119,8 @@ msgstr "Support : propagation des branches à la couche %d" msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Format de fichier inconnu : le fichier d'entrée doit porter " -"l'extension .stl, .obj ou .amf (.xml)." +"Format de fichier inconnu : le fichier d'entrée doit porter l'extension ." +"stl, .obj ou .amf (.xml)." msgid "Loading of a model file failed." msgstr "Le chargement du fichier modèle a échoué." @@ -16123,8 +16130,8 @@ msgstr "Le fichier fourni n'a pas pu être lu car il est vide." msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Format de fichier inconnu : le fichier d'entrée doit porter l'extension " -".3mf, .zip ou .amf." +"Format de fichier inconnu : le fichier d'entrée doit porter " +"l'extension .3mf, .zip ou .amf." msgid "Canceled" msgstr "Annulé" @@ -16948,18 +16955,20 @@ msgid "" "The selected bed type does not match the file. Please confirm before " "starting the print." msgstr "" +"Le type de plateau sélectionné ne correspond pas au fichier. Veuillez " +"confirmer avant de lancer l’impression." msgid "Time-lapse" -msgstr "" +msgstr "Timelapse" msgid "Heated Bed Leveling" -msgstr "" +msgstr "Mise à niveau du plateau chauffant" msgid "Textured Build Plate (Side A)" -msgstr "" +msgstr "Plateau texturé (côté A)" msgid "Smooth Build Plate (Side B)" -msgstr "" +msgstr "Plateau texturé (côté B)" msgid "Unable to perform boolean operation on selected parts" msgstr "" @@ -19950,10 +19959,10 @@ msgstr "" #~ "chargement des données de géométrie uniquement." #~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" " -#~ "option.Some extruders work better with this option unchecked (absolute " -#~ "extrusion mode). Wipe tower is only compatible with relative mode. It is " -#~ "always enabled on BambuLab printers. Default is checked" +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unchecked (absolute extrusion " +#~ "mode). Wipe tower is only compatible with relative mode. It is always " +#~ "enabled on BambuLab printers. Default is checked" #~ msgstr "" #~ "L’extrusion relative est recommandée lors de l’utilisation de l’option " #~ "\"label_objects\". Certains extrudeurs fonctionnent mieux avec cette " @@ -20310,11 +20319,11 @@ msgstr "" #~ msgstr "Niveau de débogage" #~ msgid "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " -#~ "5:trace\n" +#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +#~ "trace\n" #~ msgstr "" -#~ "Définit le niveau de journalisation du débogage. 0 :fatal, 1 :erreur, " -#~ "2 :avertissement, 3 :info, 4 :débogage, 5 :trace\n" +#~ "Définit le niveau de journalisation du débogage. 0 :fatal, 1 :erreur, 2 :" +#~ "avertissement, 3 :info, 4 :débogage, 5 :trace\n" #~ msgid "" #~ "3D Scene Operations\n" From bb9a980b4b7cdece0eab2d8a2d75736877be2700 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Thu, 20 Feb 2025 20:27:20 +0800 Subject: [PATCH 090/129] update locale --- localization/i18n/OrcaSlicer.pot | 47 +- localization/i18n/ca/OrcaSlicer_ca.po | 139 +- localization/i18n/cs/OrcaSlicer_cs.po | 154 +- localization/i18n/de/OrcaSlicer_de.po | 116 +- localization/i18n/en/OrcaSlicer_en.po | 112 +- localization/i18n/es/OrcaSlicer_es.po | 186 +- localization/i18n/fr/OrcaSlicer_fr.po | 62 +- localization/i18n/hu/OrcaSlicer_hu.po | 98 +- localization/i18n/it/OrcaSlicer_it.po | 224 +- localization/i18n/ja/OrcaSlicer_ja.po | 202 +- localization/i18n/ko/OrcaSlicer_ko.po | 122 +- localization/i18n/nl/OrcaSlicer_nl.po | 194 +- localization/i18n/pl/OrcaSlicer_pl.po | 207 +- localization/i18n/pt_BR/OrcaSlicer_pt_BR.po | 852 +++-- localization/i18n/ru/OrcaSlicer_ru.po | 267 +- localization/i18n/sv/OrcaSlicer_sv.po | 115 +- localization/i18n/tr/OrcaSlicer_tr.po | 3781 ++++++++++--------- localization/i18n/uk/OrcaSlicer_uk.po | 261 +- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 337 +- localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 51 +- src/libslic3r/PrintConfig.cpp | 4 +- src/slic3r/GUI/MainFrame.cpp | 2 +- 22 files changed, 4067 insertions(+), 3466 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index 0f45fd9e7a..95cd5567fb 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: 2025-02-19 19:44+0800\n" +"POT-Creation-Date: 2025-02-20 21:21+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -3453,9 +3453,9 @@ msgstr "" #, possible-c-format, possible-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" +"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 "" msgid "" @@ -4174,7 +4174,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)." @@ -4590,7 +4590,7 @@ msgstr "" msgid "Show object overhang highlight in 3D scene" msgstr "" -msgid "Show Selected Outline (Experimental)" +msgid "Show Selected Outline (beta)" msgstr "" msgid "Show outline around selected object in 3D scene" @@ -7195,8 +7195,8 @@ 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 "" @@ -9296,7 +9296,7 @@ msgstr "" msgid "Overhang cooling activation threshold" msgstr "" -#, possible-c-format, possible-boost-format +#, no-c-format, no-boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -9308,6 +9308,7 @@ msgstr "" msgid "External bridge infill direction" msgstr "" +#, no-c-format, no-boost-format msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for " @@ -10682,8 +10683,8 @@ 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." +"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 "" @@ -10776,10 +10777,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 "layer" @@ -11801,7 +11802,7 @@ msgid "" "travel. Set zero to disable retraction" msgstr "" -msgid "Long retraction when cut(experimental)" +msgid "Long retraction when cut(beta)" msgstr "" msgid "" @@ -12727,8 +12728,8 @@ msgstr "" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode" +"\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -12960,9 +12961,9 @@ msgid "Idle temperature" msgstr "" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" msgid "X-Y hole compensation" @@ -14419,8 +14420,8 @@ msgid "" msgstr "" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index c452d4a21f..603194c38a 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-19 19:44+0800\n" +"POT-Creation-Date: 2025-02-20 21:21+0800\n" "PO-Revision-Date: 2024-07-07 18:43+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -3323,8 +3323,8 @@ msgid "" "be opened during copy check. The output G-code is at %1%.tmp." msgstr "" "La còpia del codi-G temporal ha finalitzat, però el codi exportat no s'ha " -"pogut obrir durant la verificació de la còpia. El codi-G de sortida és a " -"%1%.tmp." +"pogut obrir durant la verificació de la còpia. El codi-G de sortida és a %1%." +"tmp." #, boost-format msgid "G-code file exported to %1%" @@ -3688,9 +3688,9 @@ msgstr "" #, 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" +"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 "" "La temperatura actual de la cambra és superior a la temperatura segura del " "material, pot provocar un estovament i obstrucció del material. La " @@ -4485,7 +4485,7 @@ msgstr "Volum:" msgid "Size:" msgstr "Mida:" -#, 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)." @@ -4912,7 +4912,7 @@ msgstr "Mostrar %Voladís" msgid "Show object overhang highlight in 3D scene" msgstr "Mostra el ressaltat del voladís de l'objecte a l'escena 3D" -msgid "Show Selected Outline (Experimental)" +msgid "Show Selected Outline (beta)" msgstr "" msgid "Show outline around selected object in 3D scene" @@ -7830,8 +7830,8 @@ 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 "" "Quan graveu timelapse sense capçal d'impressió, es recomana afegir una " "\"Torre de Purga Timelapse\" \n" @@ -7842,70 +7842,77 @@ msgid "" "A copy of the current system preset will be created, which will be detached " "from the system preset." msgstr "" +"Es crearà una còpia del preajustament del sistema actual, que se separarà " +"del preajustament del sistema." msgid "" "The current custom preset will be detached from the parent system preset." msgstr "" +"La configuració personalitzada actual se separarà de la configuració del " +"sistema principal." msgid "Modifications to the current profile will be saved." -msgstr "" +msgstr "Es desaran les modificacions al perfil actual." msgid "" "This action is not revertible.\n" "Do you want to proceed?" msgstr "" +"Aquesta acció no és reversible.\n" +"Vols continuar?" msgid "Detach preset" -msgstr "" +msgstr "Separa el predefinit" msgid "This is a default preset." -msgstr "" +msgstr "Aquest és un predefinit per defecte." msgid "This is a system preset." -msgstr "" +msgstr "Aquest és un predefinit del sistema." msgid "Current preset is inherited from the default preset." -msgstr "" +msgstr "El predefinit actual s'hereta del predefinit per defecte." msgid "Current preset is inherited from" -msgstr "" +msgstr "El predefinit actual s'hereta de" msgid "It can't be deleted or modified." -msgstr "" +msgstr "No es pot suprimir ni modificar." msgid "" "Any modifications should be saved as a new preset inherited from this one." msgstr "" +"Qualsevol modificació s'ha de desar com a nou predefinit heretat d'aquest." msgid "To do that please specify a new name for the preset." -msgstr "" +msgstr "Per fer-ho, especifiqueu un nom nou per al predefinit." msgid "Additional information:" -msgstr "" +msgstr "Informació addicional:" msgid "vendor" -msgstr "" +msgstr "fabricant" msgid "printer model" -msgstr "" +msgstr "model d'impressora" msgid "default print profile" -msgstr "" +msgstr "perfil d'impressió per defecte" msgid "default filament profile" -msgstr "" +msgstr "perfil de filament per defecte" msgid "default SLA material profile" -msgstr "" +msgstr "perfil de material de l'SLA per defecte" msgid "default SLA print profile" -msgstr "" +msgstr "perfil d'impressió de l'SLA per defecte" msgid "full profile name" -msgstr "" +msgstr "nom complet del perfil" msgid "symbolic profile name" -msgstr "" +msgstr "nom simbòlic del perfil" msgid "Line width" msgstr "Amplada de línia" @@ -7987,7 +7994,7 @@ msgid "Filament for Features" msgstr "" msgid "Ooze prevention" -msgstr "" +msgstr "Prevenció de degoteig" msgid "Skirt" msgstr "Faldilla" @@ -8186,10 +8193,10 @@ msgid "Toolchange parameters with multi extruder MM printers" msgstr "Paràmetres del canvi d'eina per a impressores multi-extrusor MM" msgid "Dependencies" -msgstr "" +msgstr "Dependències" msgid "Profile dependencies" -msgstr "" +msgstr "Dependències del perfil" msgid "Printable space" msgstr "Espai imprimible" @@ -8269,7 +8276,7 @@ msgid "Single extruder multi-material setup" msgstr "Configuració d'extrusor únic multimaterial" msgid "Number of extruders of the printer." -msgstr "" +msgstr "Nombre d'extrusores de la impressora." msgid "" "Single Extruder Multi Material is selected, \n" @@ -8277,6 +8284,10 @@ msgid "" "Do you want to change the diameter for all extruders to first extruder " "nozzle diameter value?" msgstr "" +"Multi Material en extrusor únic seleccionat,\n" +"i tots els extrusors han de tenir el mateix diàmetre.\n" +"Voleu canviar el diàmetre de tots els extrusors al valor del diàmetre del " +"nozzle del primer extrusor?" msgid "Nozzle diameter" msgstr "Diàmetre del broquet( nozzle )" @@ -9347,6 +9358,8 @@ msgid "" "Your print is very close to the priming regions. Make sure there is no " "collision." msgstr "" +"La teva impressió és molt a prop de les regions de purga. Assegureu-vos que " +"no hi ha col·lisions." msgid "" "Failed to generate gcode for invalid custom G-code.\n" @@ -10199,7 +10212,7 @@ msgstr "" msgid "Overhang cooling activation threshold" msgstr "" -#, c-format, boost-format +#, no-c-format, no-boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -10211,6 +10224,7 @@ msgstr "" msgid "External bridge infill direction" msgstr "" +#, no-c-format, no-boost-format msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for " @@ -10577,6 +10591,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" +"Una expressió booleana fent servir valors de configuració d'un perfil " +"existent. Si aquesta expressió és certa, el perfil es considera compatible " +"amb el perfil d'impressió actiu." msgid "Compatible process profiles" msgstr "Perfils de processos compatibles" @@ -10589,6 +10606,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" +"Una expressió booleana que utilitza els paràmetres de configuració d'un " +"perfil d'impressió actiu. Si aquesta expressió s'avalua com a certa, aquest " +"perfil es considera compatible amb el perfil d'impressió actiu." msgid "Print sequence, layer by layer or object by object" msgstr "Seqüència d'impressió, capa per capa o objecte per objecte" @@ -11857,8 +11877,8 @@ msgid "mm/s² or %" msgstr "mm/s o %" 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." +"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 "" "Acceleració del farciment poc dens. Si el valor s'expressa en percentatge " "( per exemple, 100% ), es calcularà a partir de l'acceleració predeterminada." @@ -11966,15 +11986,15 @@ msgstr "Velocitat màxima del ventilador a 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 velocitat del ventilador augmentarà linealment de zero a la capa " -"\"close_fan_the_first_x_layers\" al màxim a la capa " -"\"full_fan_speed_layer\". S'ignorarà \"full_fan_speed_layer\" si és inferior " -"a \"close_fan_the_first_x_layers\", en aquest cas el ventilador funcionarà a " +"\"close_fan_the_first_x_layers\" al màxim a la capa \"full_fan_speed_layer" +"\". S'ignorarà \"full_fan_speed_layer\" si és inferior a " +"\"close_fan_the_first_x_layers\", en aquest cas el ventilador funcionarà a " "la velocitat màxima permesa a la capa \"close_fan_the_first_x_layers\" + 1." msgid "layer" @@ -13112,7 +13132,7 @@ msgstr "" "configuració d'OrcaSlicer llegint variables d'entorn." msgid "Printer type" -msgstr "" +msgstr "Tipus d'impressora" msgid "Type of the printer" msgstr "" @@ -13124,7 +13144,7 @@ msgid "You can put your notes regarding the printer here." msgstr "Podeu posar les vostres notes sobre la impressora aquí." msgid "Printer variant" -msgstr "" +msgstr "Model d'impressora" msgid "Raft contact Z distance" msgstr "Distància Z de contacte de la Vora d'Adherència" @@ -13217,8 +13237,8 @@ msgstr "" "l'Ooze( goteig ) durant el llarg desplaçament. Definiu zero per desactivar " "la retracció" -msgid "Long retraction when cut(experimental)" -msgstr "Retracció llarga en tallar(experimental)" +msgid "Long retraction when cut(beta)" +msgstr "Retracció llarga en tallar(beta)" msgid "" "Experimental feature.Retracting and cutting off the filament at a longer " @@ -13725,7 +13745,7 @@ msgstr "" "serà substituït per un farciment sòlid intern" msgid "Solid infill" -msgstr "" +msgstr "Farciment sòlid" msgid "Filament to print solid infill" msgstr "" @@ -14352,8 +14372,8 @@ msgstr "Activar el control de temperatura" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode" +"\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -14661,9 +14681,9 @@ msgid "Idle temperature" msgstr "" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" msgid "X-Y hole compensation" @@ -15378,8 +15398,8 @@ msgstr "Suport: propagar branques a la capa %d" msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Format de fitxer desconegut. El fitxer d'entrada ha de tenir " -"extensió .stl, .obj, .amf( .xml )." +"Format de fitxer desconegut. El fitxer d'entrada ha de tenir extensió .stl, ." +"obj, .amf( .xml )." msgid "Loading of a model file failed." msgstr "La càrrega d'un fitxer de model ha fallat." @@ -16403,8 +16423,8 @@ msgstr "" "Vols reescriure'l?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Canviaríem el nom dels perfils seleccionats com a \"Proveïdor Tipus " @@ -18464,27 +18484,22 @@ msgstr "" #~ msgstr "HMS" #, fuzzy -#~| msgid "Unsaved Changes" #~ msgid "Actions For Unsaved Changes" #~ msgstr "Canvis no desats" #, fuzzy -#~| msgid "Reset scale" #~ msgid "Preset Value" #~ msgstr "Valor predefinit esquerre" #, fuzzy -#~| msgid "Modified G-codes" #~ msgid "Modified Value" #~ msgstr "Valor modificat" #, fuzzy -#~| msgid "User Preset" #~ msgid "Use Preset Value" #~ msgstr "Perfil d'usuari" #, fuzzy -#~| msgid "Save file as:" #~ msgid "Save Modified Value" #~ msgstr "Desa el fitxer com a:" @@ -18497,10 +18512,6 @@ msgstr "" #~ "Voleu desar aquests paràmetres canviats (valor modificat)?" #, fuzzy -#~| msgid "" -#~| "You have changed some preset settings. \n" -#~| "Would you like to keep these changed settings (new value) after " -#~| "switching preset?" #~ msgid "" #~ "\n" #~ "Would you like to keep these changed settings(modified value) after " diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index e75dc864ff..f82d0181be 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: 2025-02-19 19:44+0800\n" +"POT-Creation-Date: 2025-02-20 21:21+0800\n" "PO-Revision-Date: 2024-11-03 20:59+0100\n" "Last-Translator: René Mošner \n" "Language-Team: \n" @@ -3621,9 +3621,9 @@ msgstr "" #, 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" +"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 "" "Aktuální teplota komory je vyšší než bezpečná teplota materiálu,může to " "způsobit změkčení materiálu a jeho ucpaní. Maximální bezpečná teplota pro " @@ -4400,7 +4400,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)." @@ -4826,7 +4826,7 @@ msgstr "Zobrazit &Převis" msgid "Show object overhang highlight in 3D scene" msgstr "Zobrazit zvýraznění převisů objektu ve 3D scéně" -msgid "Show Selected Outline (Experimental)" +msgid "Show Selected Outline (beta)" msgstr "" msgid "Show outline around selected object in 3D scene" @@ -6457,7 +6457,7 @@ msgid "Custom supports and color painting were removed before repairing." msgstr "Vlastní podpěry a barevné malby byly před opravou odstraněny." msgid "Optimize Rotation" -msgstr "" +msgstr "Optimalizovat Orientaci" msgid "Invalid number" msgstr "Neplatné číslo" @@ -7620,8 +7620,8 @@ 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" @@ -7631,71 +7631,78 @@ msgstr "" msgid "" "A copy of the current system preset will be created, which will be detached " "from the system preset." -msgstr "" +msgstr "Bude vytvořena oddělená kopie aktuálního systémového přednastavení." msgid "" "The current custom preset will be detached from the parent system preset." msgstr "" +"Aktuální vlastní přednastavení bude odděleno od rodičovského systémového " +"přednastavení." msgid "Modifications to the current profile will be saved." -msgstr "" +msgstr "Úpravy aktuálního profilu budou uloženy." msgid "" "This action is not revertible.\n" "Do you want to proceed?" msgstr "" +"Tato akce není vratná.\n" +"Chcete pokračovat?" msgid "Detach preset" -msgstr "" +msgstr "Oddělení přednastavení" msgid "This is a default preset." -msgstr "" +msgstr "Toto je výchozí přednastavení." msgid "This is a system preset." -msgstr "" +msgstr "Toto je systémové přednastavení." msgid "Current preset is inherited from the default preset." -msgstr "" +msgstr "Aktuální nastavení je zděděno z výchozího nastavení." msgid "Current preset is inherited from" -msgstr "" +msgstr "Aktuální nastavení je zděděné od" msgid "It can't be deleted or modified." -msgstr "" +msgstr "Nelze smazat nebo upravit." msgid "" "Any modifications should be saved as a new preset inherited from this one." msgstr "" +"Jakékoliv úpravy by měly být uloženy jako nové přednastavení zděděná z " +"tohoto." msgid "To do that please specify a new name for the preset." msgstr "" +"Chcete-li akci provést, prosím nejdříve zadejte nový název přednastavení." msgid "Additional information:" -msgstr "" +msgstr "Doplňující informace:" msgid "vendor" -msgstr "" +msgstr "výrobce" msgid "printer model" -msgstr "" +msgstr "model tiskárny" msgid "default print profile" -msgstr "" +msgstr "výchozí tiskový profil" msgid "default filament profile" -msgstr "" +msgstr "výchozí profil filamentu" msgid "default SLA material profile" -msgstr "" +msgstr "výchozí profil pro SLA materiál" msgid "default SLA print profile" -msgstr "" +msgstr "výchozí SLA tiskový profil" msgid "full profile name" -msgstr "" +msgstr "celé jméno profilu" msgid "symbolic profile name" -msgstr "" +msgstr "symbolické jméno profilu" msgid "Line width" msgstr "Šířka Extruze" @@ -7776,7 +7783,7 @@ msgid "Filament for Features" msgstr "" msgid "Ooze prevention" -msgstr "" +msgstr "Prevence odkapávání" msgid "Skirt" msgstr "Obrys" @@ -7977,10 +7984,10 @@ msgid "Toolchange parameters with multi extruder MM printers" msgstr "Parametry při výměně (Multi Material s více extrudery)" msgid "Dependencies" -msgstr "" +msgstr "Závislosti" msgid "Profile dependencies" -msgstr "" +msgstr "Profilové závislosti" msgid "Printable space" msgstr "Prostor pro tisk" @@ -8060,7 +8067,7 @@ msgid "Single extruder multi-material setup" msgstr "Nastavení multimateriálu s jedním extruderem" msgid "Number of extruders of the printer." -msgstr "" +msgstr "Počet extrudérů tiskárny." msgid "" "Single Extruder Multi Material is selected, \n" @@ -8068,6 +8075,10 @@ msgid "" "Do you want to change the diameter for all extruders to first extruder " "nozzle diameter value?" msgstr "" +"Je zvolená Multi Materiálová tiskárna s jedním extruderem,\n" +"a proto všechny extrudery musí mít stejný průměr.\n" +"Chcete nastavit průměry všech extruderových trysek podle průměru prvního " +"extruderu?" msgid "Nozzle diameter" msgstr "Průměr trysky" @@ -9090,6 +9101,7 @@ msgid "" "Your print is very close to the priming regions. Make sure there is no " "collision." msgstr "" +"Váš tisk je velmi blízko čistícím oblastem. Zajistěte, aby nedošlo ke kolizi." msgid "" "Failed to generate gcode for invalid custom G-code.\n" @@ -9898,7 +9910,7 @@ msgstr "" msgid "Overhang cooling activation threshold" msgstr "" -#, c-format, boost-format +#, no-c-format, no-boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -9910,6 +9922,7 @@ msgstr "" msgid "External bridge infill direction" msgstr "" +#, no-c-format, no-boost-format msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for " @@ -10266,6 +10279,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" +"Logický výraz může používat konfigurační hodnoty aktivního profilu tiskárny. " +"Pokud je tento logický výraz pravdivý, potom je tento profil považován za " +"kompatibilní s aktivním profilem tiskárny." msgid "Compatible process profiles" msgstr "Kompatibilní profily procesů" @@ -10278,6 +10294,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" +"Logický výraz může používat konfigurační hodnoty aktivního profilu tiskárny. " +"Pokud je tento logický výraz pravdivý, potom je tento profil považován za " +"kompatibilní s aktivním profilem tiskárny." msgid "Print sequence, layer by layer or object by object" msgstr "Tisková sekvence, vrstva po vrstvě nebo objekt po objektu" @@ -11424,8 +11443,8 @@ msgid "mm/s² or %" msgstr "mm/s² or %" 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." +"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 "" "Zrychlení vnitřní výplně. Pokud je hodnota vyjádřena v procentech (např. 100 " "%), bude vypočítána na základě výchozího zrychlení." @@ -11530,10 +11549,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\". " @@ -12601,7 +12620,7 @@ msgstr "" "k nastavení konfigurace Orca Slicer čtením proměnných prostředí." msgid "Printer type" -msgstr "" +msgstr "Typ tiskárny" msgid "Type of the printer" msgstr "" @@ -12613,7 +12632,7 @@ msgid "You can put your notes regarding the printer here." msgstr "Zde můžete uvést poznámky týkající se tiskárny." msgid "Printer variant" -msgstr "" +msgstr "Varianta tiskárny" msgid "Raft contact Z distance" msgstr "Mezera mezi objektem a raftem v ose Z" @@ -12700,7 +12719,7 @@ msgstr "" "Některé množství materiálu v extruderu je staženo zpět, aby se zabránilo " "slizu při dlouhém pohybu. Nastavte nulu, abyste zablokovali retrakce" -msgid "Long retraction when cut(experimental)" +msgid "Long retraction when cut(beta)" msgstr "" msgid "" @@ -13150,7 +13169,7 @@ msgstr "" "vnitřní plnou výplní" msgid "Solid infill" -msgstr "" +msgstr "Plná výplň" msgid "Filament to print solid infill" msgstr "" @@ -13747,8 +13766,8 @@ msgstr "Aktivovat řízení teploty" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode" +"\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -14020,9 +14039,9 @@ msgid "Idle temperature" msgstr "" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" msgid "X-Y hole compensation" @@ -14689,8 +14708,8 @@ msgstr "Podpěry: šíření větví na vrstvě %d" msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Neznámý formát souboru. Vstupní soubor musí mít příponu .stl, .obj " -"nebo .amf(.xml)" +"Neznámý formát souboru. Vstupní soubor musí mít příponu .stl, .obj nebo ." +"amf(.xml)" msgid "Loading of a model file failed." msgstr "Nahrávání souboru modelu selhalo." @@ -15644,8 +15663,8 @@ msgid "" msgstr "" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" @@ -16542,8 +16561,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 "" @@ -17087,12 +17106,12 @@ msgstr "" #~ "Najdete podrobnosti o kalibraci průtoku dynamiky v naší wiki.\n" #~ "\n" #~ "Obvykle kalibrace není potřebná. Při spuštění tisku s jednobarevným/" -#~ "materiálovým filamentem a zaškrtnutou volbou \"kalibrace průtoku " -#~ "dynamiky\" v menu spuštění tisku, tiskárna bude postupovat podle staré " -#~ "metody a zkalibruje filament před tiskem. Při spuštění tisku s " -#~ "vícebarevným/materiálovým filamentem bude tiskárna při každé změně " -#~ "filamentu používat výchozí kompenzační parametr pro filament, což má " -#~ "většinou dobrý výsledek.\n" +#~ "materiálovým filamentem a zaškrtnutou volbou \"kalibrace průtoku dynamiky" +#~ "\" v menu spuštění tisku, tiskárna bude postupovat podle staré metody a " +#~ "zkalibruje filament před tiskem. Při spuštění tisku s vícebarevným/" +#~ "materiálovým filamentem bude tiskárna při každé změně filamentu používat " +#~ "výchozí kompenzační parametr pro filament, což má většinou dobrý " +#~ "výsledek.\n" #~ "\n" #~ "Všimněte si, že existují některé případy, které mohou způsobit, že " #~ "výsledek kalibrace nebude spolehlivý: použití texturované podložky pro " @@ -17326,9 +17345,6 @@ msgstr "" #~ "lepší chlazení vrstev, při tisku převisů a pokud rychlosti prvků nejsou " #~ "explicitně určeny." -#~ msgid "No sparse layers (EXPERIMENTAL)" -#~ msgstr "Bez řídkých vrstev (EXPERIMENTÁLNÍ)" - #~ msgid "The Config can not be loaded." #~ msgstr "Nelze načíst konfiguraci." @@ -17337,10 +17353,10 @@ msgstr "" #~ "3mf je generován starým Orca Slicerem, načtěte pouze geometrická data." #~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" " -#~ "option.Some extruders work better with this option unchecked (absolute " -#~ "extrusion mode). Wipe tower is only compatible with relative mode. It is " -#~ "always enabled on BambuLab printers. Default is checked" +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unchecked (absolute extrusion " +#~ "mode). Wipe tower is only compatible with relative mode. It is always " +#~ "enabled on BambuLab printers. Default is checked" #~ msgstr "" #~ "Při použití volby \"label_objects\" se doporučuje relativní extruzi. " #~ "Některé extrudery fungují lépe, když je tato možnost odškrtnuta (režim " @@ -17708,8 +17724,8 @@ msgstr "" #~ msgstr "Úroveň ladění" #~ msgid "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " -#~ "5:trace\n" +#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +#~ "trace\n" #~ msgstr "" #~ "Nastaví úroveň protokolování ladění. 0:fatal, 1:error, 2:warning, 3:info, " #~ "4:debug, 5:sledovat\n" @@ -17754,8 +17770,8 @@ msgstr "" #~ "OrcaSlicer configuration file may be corrupted and is not abled to be " #~ "parsed.Please delete the file and try again." #~ msgstr "" -#~ "Konfigurační soubor OrcaSlicer může být poškozen a nelze jej " -#~ "analyzovat.Smažte soubor a zkuste to znovu." +#~ "Konfigurační soubor OrcaSlicer může být poškozen a nelze jej analyzovat." +#~ "Smažte soubor a zkuste to znovu." #~ msgid "Online Models" #~ msgstr "Online modely" diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 70de71a6fb..51c07f3a5a 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-19 19:44+0800\n" +"POT-Creation-Date: 2025-02-20 21:21+0800\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -3734,9 +3734,9 @@ msgstr "" #, 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" +"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 "" "Die aktuelle Kammer-Temperatur ist höher als die sichere Temperatur des " "Materials, dies kann zu Materialerweichung und Verstopfung führen. Die " @@ -4536,7 +4536,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)." @@ -4966,7 +4966,7 @@ msgstr "Zeige Überhang" msgid "Show object overhang highlight in 3D scene" msgstr "Hervorhebung des Objektüberhangs in einer 3D-Szene anzeigen" -msgid "Show Selected Outline (Experimental)" +msgid "Show Selected Outline (beta)" msgstr "Ausgewählte Kontur anzeigen (Experimentell)" msgid "Show outline around selected object in 3D scene" @@ -7523,8 +7523,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" @@ -7883,8 +7883,8 @@ 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." +"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 "Automatisch an den eingestellten Bereich anpassen? \n" @@ -7921,13 +7921,13 @@ 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 "" "A copy of the current system preset will be created, which will be detached " @@ -10040,8 +10040,8 @@ msgstr "" "Feld sollte den Hostnamen, die IP-Adresse oder die URL der Drucker-Host-" "Instanz enthalten. Auf einen Drucker-Host hinter HAProxy mit aktivierter " "Basisauthentifizierung kann zugegriffen werden, indem Benutzername und " -"Passwort in die URL in folgendem Format eingegeben werden: https://" -"username:password@Ihre-octopi-Adresse/" +"Passwort in die URL in folgendem Format eingegeben werden: https://username:" +"password@Ihre-octopi-Adresse/" msgid "Device UI" msgstr "Gerät" @@ -10398,7 +10398,7 @@ msgstr "" msgid "Overhang cooling activation threshold" msgstr "Überhänge Kühlung Aktivierungsschwelle" -#, c-format, boost-format +#, no-c-format, no-boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -10417,6 +10417,7 @@ msgstr "" msgid "External bridge infill direction" msgstr "Externe Brücken Füllrichtung" +#, no-c-format, no-boost-format msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for " @@ -11409,8 +11410,8 @@ msgid "" "external surface finish. It can also cause the infill to shine through the " "external surfaces of the part." msgstr "" -"Reihenfolge der Wand/Füllung. Wenn das Kontrollkästchen nicht aktiviert " -"ist,werden die Wände zuerst gedruckt, was in den meisten Fällen am besten " +"Reihenfolge der Wand/Füllung. Wenn das Kontrollkästchen nicht aktiviert ist," +"werden die Wände zuerst gedruckt, was in den meisten Fällen am besten " "funktioniert.\n" "\n" "Das Drucken der Füllung zuerst kann bei extremen Überhängen helfen, da die " @@ -12326,16 +12327,16 @@ 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 "" -"Beschleunigung der Brücken. Wenn der Wert als Prozentwert angegeben wird " -"(z.B. 50%), wird er auf der Grundlage der Beschleunigung der Außenwand " +"Beschleunigung der Brücken. Wenn der Wert als Prozentwert angegeben wird (z." +"B. 50%), wird er auf der Grundlage der Beschleunigung der Außenwand " "berechnet." msgid "mm/s² or %" msgstr "mm/s² or %" 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." +"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 "" "Beschleunigung der spärlichen Innenfüllung. Wenn der Wert als Prozentwert " "angegeben wird (z.B. 100%), wird er auf der Grundlage der " @@ -12448,13 +12449,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 " @@ -12794,8 +12795,8 @@ msgstr "" "aus, bevor die Geschwindigkeit auf die Zielgeschwindigkeit reduziert wird, " "um den Kühlventilator anzuschubsen.Dies ist bei Lüftern nützlich, bei denen " "eine niedrige PWM-Leistung möglicherweise nicht ausreicht, um den Lüfter vom " -"Stillstand aus zu starten oder um den Lüfter schneller auf Touren zu " -"bringen.Setze den Wert auf 0, um diese Funktion zu deaktivieren." +"Stillstand aus zu starten oder um den Lüfter schneller auf Touren zu bringen." +"Setze den Wert auf 0, um diese Funktion zu deaktivieren." msgid "Time cost" msgstr "Druckzeit Kosten" @@ -13765,7 +13766,7 @@ msgstr "" "Filaments bei langen Verfahrwegen zu vermeiden. Null deaktiviert dein " "Rückzug." -msgid "Long retraction when cut(experimental)" +msgid "Long retraction when cut(beta)" msgstr "Langer Rückzug beim Schneiden (experimentell)" msgid "" @@ -14059,8 +14060,8 @@ msgstr "" "Geschwindigkeit der äußeren oder inneren Wände abweicht. Wenn die hier " "angegebene Geschwindigkeit höher ist als die Geschwindigkeit der äußeren " "oder inneren Wände, wird der Drucker auf die langsamere der beiden " -"Geschwindigkeiten zurückgesetzt. Wenn sie als Prozentsatz angegeben wird " -"(z.B. 80%), wird die Geschwindigkeit auf der Grundlage der jeweiligen " +"Geschwindigkeiten zurückgesetzt. Wenn sie als Prozentsatz angegeben wird (z." +"B. 80%), wird die Geschwindigkeit auf der Grundlage der jeweiligen " "Geschwindigkeit der äußeren oder inneren Wand berechnet. Der Standardwert " "ist auf 100% eingestellt." @@ -14344,6 +14345,7 @@ msgstr "" "erreichen. Wenn als Prozentsatz angegeben, wird er in Bezug auf den " "Düsendurchmesser berechnet." +#, fuzzy, c-format, boost-format msgid "" "Sets the starting flow ratio while transitioning from the last bottom layer " "to the spiral. Normally the spiral transition scales the flow ratio from " @@ -14355,6 +14357,7 @@ msgstr "" "Flussverhältnis von 0% auf 100% während der ersten Schleife, was in einigen " "Fällen zu einer Unterextrusion am Anfang der Spirale führen kann." +#, fuzzy, c-format, boost-format msgid "" "Sets the finishing flow ratio while ending the spiral. Normally the spiral " "transition scales the flow ratio from 100% to 0% during the last loop which " @@ -14947,8 +14950,8 @@ msgstr "aktiviere Temperaturkontrolle" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode" +"\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -15291,9 +15294,9 @@ msgid "Idle temperature" msgstr "Leerlauftemperatur" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" "Düsentemperatur, wenn das Werkzeug in Mehrwerkzeug-Setups derzeit nicht " "verwendet wird. Dies wird nur verwendet, wenn die „Ausflussverhinderung“ in " @@ -16016,8 +16019,8 @@ msgstr "Stützen: Verbreiten von Zweigen auf Ebene %d" msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Unbekanntes Dateiformat: Die Eingabedatei muss die Endung .stl, .obj " -"oder .amf(.xml) haben." +"Unbekanntes Dateiformat: Die Eingabedatei muss die Endung .stl, .obj oder ." +"amf(.xml) haben." msgid "Loading of a model file failed." msgstr "Das Laden der Modelldatei ist fehlgeschlagen." @@ -17047,8 +17050,8 @@ msgstr "" "Möchten Sie es überschreiben?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Wir würden die Voreinstellungen als \"Hersteller Typ Seriennummer @Drucker, " @@ -19370,8 +19373,8 @@ msgstr "" #~ "Choose an AMS slot then press \"Load\" or \"Unload\" button to " #~ "automatically load or unload filiament." #~ msgstr "" -#~ "Wählen Sie einen AMS-Slot und drücken Sie dann \"Laden\" oder " -#~ "\"Entladen\", um automatisch Filament zu laden oder zu entladen." +#~ "Wählen Sie einen AMS-Slot und drücken Sie dann \"Laden\" oder \"Entladen" +#~ "\", um automatisch Filament zu laden oder zu entladen." #~ msgid "MC" #~ msgstr "MC" @@ -19676,12 +19679,9 @@ msgstr "" #~ "Verlangsamung für eine bessere Schichtkühlung aktiviert ist, beim Drucken " #~ "von Überhängen und wenn die Funktionen nicht explizit angegeben sind." -#~ msgid "No sparse layers (EXPERIMENTAL)" -#~ msgstr "Keine dünnen Schichten (EXPERIMENTELL)" - #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you " -#~ "selected\". \n" +#~ "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 " @@ -19701,10 +19701,10 @@ msgstr "" #~ msgstr "wiki" #~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" " -#~ "option.Some extruders work better with this option unchecked (absolute " -#~ "extrusion mode). Wipe tower is only compatible with relative mode. It is " -#~ "always enabled on BambuLab printers. Default is checked" +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unchecked (absolute extrusion " +#~ "mode). Wipe tower is only compatible with relative mode. It is always " +#~ "enabled on BambuLab printers. Default is checked" #~ msgstr "" #~ "Die relative Extrusion wird empfohlen, wenn die Option „label_objects“ " #~ "verwendet wird. Einige Extruder funktionieren besser, wenn diese Option " @@ -20155,11 +20155,11 @@ msgstr "" #~ msgstr "Fehlersuchstufe" #~ msgid "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " -#~ "5:trace\n" +#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +#~ "trace\n" #~ msgstr "" -#~ "Legt die Stufe der Fehlerprotokollierung fest. 0:fatal, 1:error, " -#~ "2:warning, 3:info, 4:debug, 5:trace\n" +#~ "Legt die Stufe der Fehlerprotokollierung fest. 0:fatal, 1:error, 2:" +#~ "warning, 3:info, 4:debug, 5:trace\n" #, boost-format #~ msgid "The selected preset: %1% is not found." diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 8502a64a6c..116f20f827 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-19 19:44+0800\n" +"POT-Creation-Date: 2025-02-20 21:21+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -1277,7 +1277,7 @@ msgid "Esc" msgstr "Esc" msgid "Cancel a feature until exit" -msgstr "" +msgstr "Cancel a feature until exit" msgid "Measure" msgstr "Measure" @@ -1285,16 +1285,17 @@ msgstr "Measure" msgid "" "Please confirm explosion ratio = 1,and please select at least one object" msgstr "" +"Please confirm explosion ratio = 1, and please select at least one object" msgid "Please select at least one object." -msgstr "" +msgstr "Please select at least one object." msgid "Edit to scale" msgstr "Edit to scale" msgctxt "Verb" msgid "Scale all" -msgstr "" +msgstr "Scale all" msgid "None" msgstr "None" @@ -1309,40 +1310,46 @@ msgid "Selection" msgstr "Selection" msgid " (Moving)" -msgstr "" +msgstr " (Moving)" msgid "" "Select 2 faces on objects and \n" " make objects assemble together." msgstr "" +"Select 2 faces on objects and \n" +" make objects assemble together." msgid "" "Select 2 points or circles on objects and \n" " specify distance between them." msgstr "" +"Select 2 points or circles on objects and \n" +" specify distance between them." msgid "Face" -msgstr "" +msgstr "Face" msgid " (Fixed)" -msgstr "" +msgstr " (Fixed)" msgid "Point" -msgstr "" +msgstr "Point" msgid "" "Feature 1 has been reset, \n" "feature 2 has been feature 1" msgstr "" +"Feature 1 has been reset, \n" +"feature 2 has been feature 1" msgid "Warning:please select Plane's feature." -msgstr "" +msgstr "Warning: please select Plane's feature." msgid "Warning:please select Point's or Circle's feature." -msgstr "" +msgstr "Warning: please select Point's or Circle's feature." msgid "Warning:please select two different mesh." -msgstr "" +msgstr "Warning: please select two different meshes." msgid "Copy to clipboard" msgstr "Copy to clipboard" @@ -1360,25 +1367,25 @@ msgid "Distance XYZ" msgstr "Distance XYZ" msgid "Parallel" -msgstr "" +msgstr "Parallel" msgid "Center coincidence" -msgstr "" +msgstr "Center coincidence" msgid "Featue 1" -msgstr "" +msgstr "Feature 1" msgid "Reverse rotation" -msgstr "" +msgstr "Reverse rotation" msgid "Rotate around center:" -msgstr "" +msgstr "Rotate around center:" msgid "Parallel distance:" msgstr "" msgid "Flip by Face 2" -msgstr "" +msgstr "Flip by Face 2" msgid "Ctrl+" msgstr "Ctrl+" @@ -3580,9 +3587,9 @@ msgstr "" #, 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" +"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 "" "Current chamber temperature is higher than the material's safe temperature; " "this may result in material softening and nozzle clogs.The maximum safe " @@ -4356,7 +4363,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)." @@ -4781,7 +4788,7 @@ msgstr "Show &Overhang" msgid "Show object overhang highlight in 3D scene" msgstr "Show object overhang highlight in 3D scene" -msgid "Show Selected Outline (Experimental)" +msgid "Show Selected Outline (beta)" msgstr "" msgid "Show outline around selected object in 3D scene" @@ -5124,6 +5131,8 @@ msgid "" "Please check if the SD card is inserted into the printer.\n" "If it still cannot be read, you can try formatting the SD card." msgstr "" +"Please check if the Micro SD card is inserted into the printer.\n" +"If it still cannot be read, you can try formatting the card." msgid "LAN Connection Failed (Failed to view sdcard)" msgstr "LAN Connection Failed (Failed to view sdcard)" @@ -7587,13 +7596,13 @@ 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 "" "A copy of the current system preset will be created, which will be detached " @@ -9842,7 +9851,7 @@ msgstr "" msgid "Overhang cooling activation threshold" msgstr "" -#, c-format, boost-format +#, no-c-format, no-boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -9854,6 +9863,7 @@ msgstr "" msgid "External bridge infill direction" msgstr "" +#, no-c-format, no-boost-format msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for " @@ -10193,6 +10203,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" +"A Boolean expression using the configuration values of an active printer " +"profile. If this expression evaluates to true, this profile is considered " +"compatible with the active printer profile." msgid "Compatible process profiles" msgstr "Compatible process profiles" @@ -10205,6 +10218,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" +"A Boolean expression using the configuration values of an active print " +"profile. If this expression evaluates to true, this profile is considered " +"compatible with the active print profile." msgid "Print sequence, layer by layer or object by object" msgstr "" @@ -11305,11 +11321,11 @@ msgid "mm/s² or %" msgstr "mm/s² or %" 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." +"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 "" -"Acceleration of sparse infill. If the value is expressed as a percentage " -"(e.g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage (e." +"g. 100%), it will be calculated based on the default acceleration." msgid "" "Acceleration of internal solid infill. If the value is expressed as a " @@ -11407,10 +11423,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 "layer" @@ -12497,8 +12513,8 @@ msgstr "" "This is the amount of filament in the extruder that is pulled back to avoid " "oozing during long travel distances. Set to 0 to disable retraction." -msgid "Long retraction when cut(experimental)" -msgstr "Long retraction when cut (experimental)" +msgid "Long retraction when cut(beta)" +msgstr "Long retraction when cut (beta)" msgid "" "Experimental feature.Retracting and cutting off the filament at a longer " @@ -13508,8 +13524,8 @@ msgstr "" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode" +"\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -13772,9 +13788,9 @@ msgid "Idle temperature" msgstr "" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" msgid "X-Y hole compensation" @@ -15363,8 +15379,8 @@ msgstr "" "Do you want to rewrite it?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" @@ -17305,11 +17321,11 @@ msgstr "" #~ msgstr "Debug level" #~ msgid "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " -#~ "5:trace\n" +#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +#~ "trace\n" #~ msgstr "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " -#~ "5:trace\n" +#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +#~ "trace\n" #~ msgid "Embeded" #~ msgstr "Embedded" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index e46364fe38..f229395107 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-19 19:44+0800\n" +"POT-Creation-Date: 2025-02-20 21:21+0800\n" "PO-Revision-Date: \n" "Last-Translator: Carlos Fco. Caruncho Serrano \n" "Language-Team: \n" @@ -3726,9 +3726,9 @@ msgstr "" #, 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" +"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 "" "La temperatura actual de la cámara es superior a la temperatura de seguridad " "del material, puede provocar que el material se ablande y se atasque. La " @@ -4530,7 +4530,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)." @@ -4957,8 +4957,8 @@ msgstr "Mostrar Voladizo (&O)" msgid "Show object overhang highlight in 3D scene" msgstr "Mostrar resalte de voladizos de objeto en escena 3D" -msgid "Show Selected Outline (Experimental)" -msgstr "Mostrar Contorno Seleccionado (Experimental)" +msgid "Show Selected Outline (beta)" +msgstr "Mostrar Contorno Seleccionado (beta)" msgid "Show outline around selected object in 3D scene" msgstr "Mostrar el contorno alrededor del objeto seleccionado en la escena 3D" @@ -5320,6 +5320,8 @@ msgid "" "Please check if the SD card is inserted into the printer.\n" "If it still cannot be read, you can try formatting the SD card." msgstr "" +"Verifique si la tarjeta SD está insertada en la impresora. Si aún no se " +"puede leer, puedes intentar formatear la tarjeta SD." msgid "LAN Connection Failed (Failed to view sdcard)" msgstr "Conexión LAN fallida (no se encuentra la tarjeta SD)" @@ -7518,8 +7520,8 @@ msgid "" "start printing." msgstr "" "Hay algunos filamentos desconocidos en los mapeados AMS. Por favor, " -"compruebe si son los filamentos requeridos. Si lo son, presione " -"\"Confirmar\" para empezar a imprimir." +"compruebe si son los filamentos requeridos. Si lo son, presione \"Confirmar" +"\" para empezar a imprimir." #, c-format, boost-format msgid "nozzle in preset: %s %s" @@ -7884,82 +7886,88 @@ 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 se graba un timelapse sin cabezal, se recomienda añadir una \"Torre " "de Purga de Timelapse\" haciendo clic con el botón derecho del ratón en una " -"posición vacía de la bandeja de impresión y seleccionando \"Añadir " -"Primitivo\"->Torre de Purga de Timelapse\"." +"posición vacía de la bandeja de impresión y seleccionando \"Añadir Primitivo" +"\"->Torre de Purga de Timelapse\"." msgid "" "A copy of the current system preset will be created, which will be detached " "from the system preset." msgstr "" +"Se creará una copia del preajuste del sistema actual, que se separará del " +"preajuste del sistema." msgid "" "The current custom preset will be detached from the parent system preset." msgstr "" +"El ajuste personalizado actual se separará del ajuste del sistema principal." msgid "Modifications to the current profile will be saved." -msgstr "" +msgstr "Se guardarán las modificaciones al perfil actual." msgid "" "This action is not revertible.\n" "Do you want to proceed?" msgstr "" +"Esta acción no es reversible.\n" +"¿Deseas continuar?" msgid "Detach preset" -msgstr "" +msgstr "Separar ajuste" msgid "This is a default preset." -msgstr "" +msgstr "Este es un ajuste por defecto." msgid "This is a system preset." -msgstr "" +msgstr "Este es un ajuste del sistema." msgid "Current preset is inherited from the default preset." -msgstr "" +msgstr "El ajuste fue heredado del ajuste predeterminado." msgid "Current preset is inherited from" -msgstr "" +msgstr "El ajuste fue heredado de" msgid "It can't be deleted or modified." -msgstr "" +msgstr "No puede ser borrado o modificado." msgid "" "Any modifications should be saved as a new preset inherited from this one." msgstr "" +"Cualquier modificación debe guardarse como un nuevo preset heredado de este." msgid "To do that please specify a new name for the preset." -msgstr "" +msgstr "Para hacerlo por favor especifique un nuevo nombre para esos ajustes." msgid "Additional information:" -msgstr "" +msgstr "Información adicional:" msgid "vendor" -msgstr "" +msgstr "fabricante" msgid "printer model" -msgstr "" +msgstr "modelo de impresora" msgid "default print profile" -msgstr "" +msgstr "perfil de impresión por defecto" msgid "default filament profile" -msgstr "" +msgstr "perfil de filamento por defecto" msgid "default SLA material profile" -msgstr "" +msgstr "perfil de material de SLA por defecto" msgid "default SLA print profile" -msgstr "" +msgstr "perfil de impresión de SLA por defecto" msgid "full profile name" -msgstr "" +msgstr "nombre completo perfil" msgid "symbolic profile name" -msgstr "" +msgstr "nombre perfil simbólico" msgid "Line width" msgstr "Ancho de linea" @@ -8250,10 +8258,10 @@ msgstr "" "Parámetros de cambio de cabezal para impresoras de varios extrusores MM" msgid "Dependencies" -msgstr "" +msgstr "Dependencias" msgid "Profile dependencies" -msgstr "" +msgstr "Dependencias de perfil" msgid "Printable space" msgstr "Espacio imprimible" @@ -9970,8 +9978,8 @@ msgstr "" "contener el nombre de host, la dirección IP o la URL de la instancia de la " "impresora. Se puede acceder a la impresora detrás de un proxy con la " "autenticación básica activada por un nombre de usuario y contraseña en la " -"URL en el siguiente formato: https://" -"nombredeusuario:contraseña@tudirecciondeoctopi/" +"URL en el siguiente formato: https://nombredeusuario:" +"contraseña@tudirecciondeoctopi/" msgid "Device UI" msgstr "IU de dispositivo" @@ -10316,7 +10324,7 @@ msgstr "" msgid "Overhang cooling activation threshold" msgstr "" -#, c-format, boost-format +#, no-c-format, no-boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -10328,6 +10336,7 @@ msgstr "" msgid "External bridge infill direction" msgstr "" +#, no-c-format, no-boost-format msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for " @@ -10772,6 +10781,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" +"Una expresión booleana utilizando valores de configuración de un perfil " +"existente. Si esta expresión es verdadera, el perfil será considerado " +"compatible con el perfil de impresión activo." msgid "Compatible process profiles" msgstr "Perfiles de proceso compatibles" @@ -10784,6 +10796,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" +"Una expresión booleana que utiliza los valores de configuración de un perfil " +"de impresión activo. Si esta expresión se evalúa como verdadera, este perfil " +"se considera compatible con el perfil de impresión activo." msgid "Print sequence, layer by layer or object by object" msgstr "Secuencia de impresión, capa a capa u objeto por objeto" @@ -12153,8 +12168,8 @@ msgid "mm/s² or %" msgstr "mm/s² o %" 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." +"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 "" "Aceleración del relleno de baja densidad. Si el valor se expresa en " "porcentaje (por ejemplo 100%), se calculará basándose en la aceleración por " @@ -12264,16 +12279,16 @@ 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 desde la capa " -"\"close_fan_the_first_x_layers\" al máximo en la capa " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" se ignorará si es menor " -"que \"close_fan_the_first_x_layers\", en cuyo caso el ventilador funcionará " -"al máximo permitido en la capa \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" al máximo en la capa \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" se ignorará si es menor que " +"\"close_fan_the_first_x_layers\", en cuyo caso el ventilador funcionará al " +"máximo permitido en la capa \"close_fan_the_first_x_layers\" + 1." msgid "layer" msgstr "Capa" @@ -12421,7 +12436,7 @@ msgstr "" "irregular y debería imprimirse más lentamente" msgid "Precise Z height" -msgstr "Altura Z Precisa (Experimental)" +msgstr "Altura Z Precisa (beta)" msgid "" "Enable this to get precise z height of object after slicing. It will get the " @@ -13547,8 +13562,8 @@ msgstr "" "rezumado durante desplazamientos largos. Ajustar a cero para desactivar la " "retracción" -msgid "Long retraction when cut(experimental)" -msgstr "Retracción larga al cortar (experimental)" +msgid "Long retraction when cut(beta)" +msgstr "Retracción larga al cortar (beta)" msgid "" "Experimental feature.Retracting and cutting off the filament at a longer " @@ -13703,7 +13718,7 @@ msgstr "" "velocidad que la retracción" msgid "Use firmware retraction" -msgstr "Usar retracción de firmware (experimental)" +msgstr "Usar retracción de firmware (beta)" msgid "" "This experimental setting uses G10 and G11 commands to have the firmware " @@ -14709,8 +14724,8 @@ msgstr "Activar control de temperatura" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode" +"\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -15053,9 +15068,9 @@ msgid "Idle temperature" msgstr "Temperatura de Espera" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" "Temperatura de la boquilla cuando el cabezal no se está utilizando en " "configuraciones multicabezal. Este parámetro sólo es utilizado cuando la " @@ -15134,8 +15149,8 @@ msgid "" "Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the " "following format: \"XxY, XxY, ...\"" msgstr "" -"Los tamaños de las imágenes para almacenar en archivos .gcode " -"y .sl1 / .sl1s, en el siguiente formato: \"XxY, XxY, ...\"" +"Los tamaños de las imágenes para almacenar en archivos .gcode y .sl1 / ." +"sl1s, en el siguiente formato: \"XxY, XxY, ...\"" msgid "Format of G-code thumbnails" msgstr "Formato de las miniaturas de G-Code" @@ -15781,8 +15796,8 @@ msgstr "Soporte: propagando ramas en la capa %d" msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Formato de archivo desconocido: el archivo de entrada debe tener " -"extensión .stl, .obj o .amf (.xml)." +"Formato de archivo desconocido: el archivo de entrada debe tener extensión ." +"stl, .obj o .amf (.xml)." msgid "Loading of a model file failed." msgstr "Error en la carga del fichero de modelo." @@ -15792,8 +15807,8 @@ msgstr "El archivo proporcionado no puede ser leído debido a que está vacío" msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Formato de archivo desconocido: el archivo de entrada debe tener extensión " -".3mf o .zip.amf." +"Formato de archivo desconocido: el archivo de entrada debe tener " +"extensión .3mf o .zip.amf." msgid "Canceled" msgstr "Cancelado" @@ -16040,12 +16055,12 @@ msgstr "" "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 " -"flujo\" marcada en el menú de inicio de impresión, la impresora seguirá el " -"camino 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 flujo" +"\" marcada en el menú de inicio de impresión, la impresora seguirá el camino " +"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 que pueden hacer que los resultados de " "la calibración no sean fiables, como una adhesión insuficiente en la bandeja " @@ -16817,8 +16832,8 @@ msgstr "" "¿Quieres reescribirlo?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Cambiaremos el nombre de los perfiles a \"Tipo Número de Serie @impresora " @@ -18349,8 +18364,8 @@ msgstr "" #~ "Can only be overridden by disable_fan_first_layers." #~ msgstr "" #~ "Esta velocidad de ventilador se fuerza cuando se imprimen todas las " -#~ "interfaces de soporte, con el objetivo de debilitar la unión con la " -#~ "pieza.Sólo puede ser anulado por disable_fan_first_layers." +#~ "interfaces de soporte, con el objetivo de debilitar la unión con la pieza." +#~ "Sólo puede ser anulado por disable_fan_first_layers." #~ msgid "" #~ "A lower value results in smoother extrusion rate transitions. However, " @@ -18849,14 +18864,14 @@ msgstr "" #~ "Cuando grabamos timelapse sin cabezal de impresión, es recomendable " #~ "añadir un \"Torre de Purga de Intervalo\" \n" #~ "presionando con el botón derecho la posición vacía de la bandeja de " -#~ "construcción y elegir \"Añadir Primitivo\"->\"Intervalo de Torre de " -#~ "Purga\"." +#~ "construcción y elegir \"Añadir Primitivo\"->\"Intervalo de Torre de Purga" +#~ "\"." #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you " -#~ "selected\". \n" -#~ "We would rename the presets as \"Vendor Type Serial @printer you " -#~ "selected\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" +#~ "\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" +#~ "\". \n" #~ "To add preset for more printers, Please go to printer selection" #~ msgstr "" #~ "Cambiaríamos el nombre de los preajustes a \"Número de serie del Vendedor " @@ -19326,9 +19341,6 @@ msgstr "" #~ "se imprimen voladizos y cuando las velocidades de las características no " #~ "se especifican explícitamente." -#~ msgid "No sparse layers (EXPERIMENTAL)" -#~ msgstr "Capas de baja densidad (EXPERIMENTAL)" - #~ msgid "The Config can not be loaded." #~ msgstr "La Configuración no será cargada." @@ -19338,10 +19350,10 @@ msgstr "" #~ "geometría." #~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" " -#~ "option.Some extruders work better with this option unchecked (absolute " -#~ "extrusion mode). Wipe tower is only compatible with relative mode. It is " -#~ "always enabled on BambuLab printers. Default is checked" +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unchecked (absolute extrusion " +#~ "mode). Wipe tower is only compatible with relative mode. It is always " +#~ "enabled on BambuLab printers. Default is checked" #~ msgstr "" #~ "Se recomienda la extrusión relativa cuando se utiliza la opción " #~ "\"label_objects\". Algunos extrusores funcionan mejor con esta opción " @@ -19798,11 +19810,11 @@ msgstr "" #~ msgstr "Nivel de depuración" #~ msgid "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " -#~ "5:trace\n" +#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +#~ "trace\n" #~ msgstr "" -#~ "Ajusta el nivel de registro de depuración. 0:fatal, 1:error, " -#~ "2:advertencia, 3:información, 4:depuración, 5:rastreo\n" +#~ "Ajusta el nivel de registro de depuración. 0:fatal, 1:error, 2:" +#~ "advertencia, 3:información, 4:depuración, 5:rastreo\n" #, boost-format #~ msgid "The selected preset: %1% is not found." diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index 46a570f097..4bc5bb0522 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: 2025-02-19 19:44+0800\n" +"POT-Creation-Date: 2025-02-20 21:21+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -4523,7 +4523,7 @@ msgstr "Le 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)." @@ -4953,7 +4953,7 @@ msgstr "Montrer les &surplombs" msgid "Show object overhang highlight in 3D scene" msgstr "Afficher la surbrillance des surplombs d'un objet dans la scène 3D" -msgid "Show Selected Outline (Experimental)" +msgid "Show Selected Outline (beta)" msgstr "Afficher le contour sélectionné (expérimental)" msgid "Show outline around selected object in 3D scene" @@ -6538,8 +6538,8 @@ msgstr "Importer la géométrie uniquement" msgid "" "This option can be changed later in preferences, under 'Load Behaviour'." msgstr "" -"Cette option peut être modifiée ultérieurement dans les préférences, sous " -"« Comportement du chargement »." +"Cette option peut être modifiée ultérieurement dans les préférences, sous « " +"Comportement du chargement »." msgid "Only one G-code file can be opened at the same time." msgstr "Un seul fichier G-code peut être ouvert à la fois." @@ -7939,8 +7939,8 @@ 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 "" "Lorsque vous enregistrez un timelapse sans tête d’outil, il est recommandé " "d’ajouter une \"Tour d’essuyage timelapse\".\n" @@ -8195,9 +8195,9 @@ msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " "does not support to print on the Cool Plate" msgstr "" -"Il s'agit de la température du plateau lorsque le plateau froid (\"Cool " -"plate\") est installé. Une valeur à 0 signifie que ce filament ne peut pas " -"être imprimé sur le plateau froid." +"Il s'agit de la température du plateau lorsque le plateau froid (\"Cool plate" +"\") est installé. Une valeur à 0 signifie que ce filament ne peut pas être " +"imprimé sur le plateau froid." msgid "Textured Cool plate" msgstr "Plaque Cool plate texturée" @@ -10445,7 +10445,7 @@ msgstr "" msgid "Overhang cooling activation threshold" msgstr "Seuil d’activation du refroidissement en surplomb" -#, fuzzy, c-format, boost-format +#, fuzzy, no-c-format, no-boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -10464,6 +10464,7 @@ msgstr "" msgid "External bridge infill direction" msgstr "Direction du remplissage du pont extérieur" +#, no-c-format, no-boost-format msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for " @@ -12513,10 +12514,10 @@ msgstr "Ventilateur à pleine vitesse à 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 " @@ -13856,7 +13857,7 @@ msgstr "" "le suintement pendant les longs trajets. Définir zéro pour désactiver la " "rétraction" -msgid "Long retraction when cut(experimental)" +msgid "Long retraction when cut(beta)" msgstr "Longue rétraction lors de la coupe (expérimental)" msgid "" @@ -14435,6 +14436,7 @@ msgstr "" "spirale lisse. Si elle est exprimée en %, elle sera calculée par rapport au " "diamètre de la buse." +#, fuzzy, c-format, boost-format msgid "" "Sets the starting flow ratio while transitioning from the last bottom layer " "to the spiral. Normally the spiral transition scales the flow ratio from " @@ -14447,6 +14449,7 @@ msgstr "" "qui peut dans certains cas entraîner une sous-extrusion au début de la " "spirale." +#, fuzzy, c-format, boost-format msgid "" "Sets the finishing flow ratio while ending the spiral. Normally the spiral " "transition scales the flow ratio from 100% to 0% during the last loop which " @@ -14603,8 +14606,8 @@ msgid "" "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " "close all holes in the model." msgstr "" -"Utilisez « Pair-impair » pour les modèles d'avion 3DLabPrint. Utilisez " -"« Fermer les trous » pour fermer tous les trous du modèle." +"Utilisez « Pair-impair » pour les modèles d'avion 3DLabPrint. Utilisez « " +"Fermer les trous » pour fermer tous les trous du modèle." msgid "Regular" msgstr "Standard" @@ -15042,8 +15045,8 @@ msgstr "Activer le contrôle de la température" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode" +"\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -15486,8 +15489,8 @@ msgid "" "Wipe tower is only compatible with relative mode. It is recommended on most " "printers. Default is checked" msgstr "" -"L’extrusion relative est recommandée lors de l’utilisation de l’option " -"« label_objects ». Certains extrudeurs fonctionnent mieux avec cette option " +"L’extrusion relative est recommandée lors de l’utilisation de l’option « " +"label_objects ». Certains extrudeurs fonctionnent mieux avec cette option " "non verrouillée (mode d’extrusion absolu). La tour d’essuyage n’est " "compatible qu’avec le mode relatif. Il est recommandé sur la plupart des " "imprimantes. L’option par défaut est cochée" @@ -17163,8 +17166,8 @@ msgstr "" "Voulez-vous le réécrire ?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Nous renommerions les préréglages en « Vendor Type Serial @printer you " @@ -18999,8 +19002,8 @@ msgstr "" #~ "modèle. Réglez le « seuil d’une paroi » dans les paramètres avancés ci-" #~ "dessous pour ajuster la sensibilité de ce qui est considéré comme une " #~ "surface supérieure. Le « seuil d’une paroi » n’est visible que si ce " -#~ "paramètre est supérieur à la valeur par défaut de 0,5 ou si l’option " -#~ "« surfaces supérieures à une paroi » est activée." +#~ "paramètre est supérieur à la valeur par défaut de 0,5 ou si l’option « " +#~ "surfaces supérieures à une paroi » est activée." #, c-format, boost-format #~ msgid "" @@ -19887,8 +19890,8 @@ msgstr "" #~ "thickness (top+bottom solid layers)" #~ msgstr "" #~ "Ajoutez du remplissage solide à proximité des surfaces inclinées pour " -#~ "garantir l'épaisseur verticale de la coque (couches solides " -#~ "supérieure+inférieure)." +#~ "garantir l'épaisseur verticale de la coque (couches solides supérieure" +#~ "+inférieure)." #~ msgid "Further reduce solid infill on walls (beta)" #~ msgstr "Réduire davantage le remplissage solide des parois (expérimental)" @@ -19941,9 +19944,6 @@ msgstr "" #~ msgid "Enable Flow Compensation" #~ msgstr "Activer la compensation de débit" -#~ msgid "No sparse layers (EXPERIMENTAL)" -#~ msgstr "Pas sur toutes les couches (EXPÉRIMENTAL)" - #~ msgid "Layer order" #~ msgstr "Ordre des couches" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index c6e5c16ce4..7d30d00457 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-19 19:44+0800\n" +"POT-Creation-Date: 2025-02-20 21:21+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1276,7 +1276,7 @@ msgid "Esc" msgstr "Esc" msgid "Cancel a feature until exit" -msgstr "" +msgstr "Cancel a feature until exit" msgid "Measure" msgstr "Measure" @@ -1284,16 +1284,17 @@ msgstr "Measure" msgid "" "Please confirm explosion ratio = 1,and please select at least one object" msgstr "" +"Please confirm explosion ratio = 1, and please select at least one object" msgid "Please select at least one object." -msgstr "" +msgstr "Please select at least one object." msgid "Edit to scale" msgstr "Edit to scale" msgctxt "Verb" msgid "Scale all" -msgstr "" +msgstr "Scale all" msgid "None" msgstr "Sehol" @@ -1308,40 +1309,46 @@ msgid "Selection" msgstr "Selection" msgid " (Moving)" -msgstr "" +msgstr " (Moving)" msgid "" "Select 2 faces on objects and \n" " make objects assemble together." msgstr "" +"Select 2 faces on objects and \n" +" make objects assemble together." msgid "" "Select 2 points or circles on objects and \n" " specify distance between them." msgstr "" +"Select 2 points or circles on objects and \n" +" specify distance between them." msgid "Face" -msgstr "" +msgstr "Face" msgid " (Fixed)" -msgstr "" +msgstr " (Fixed)" msgid "Point" -msgstr "" +msgstr "Point" msgid "" "Feature 1 has been reset, \n" "feature 2 has been feature 1" msgstr "" +"Feature 1 has been reset, \n" +"feature 2 has been feature 1" msgid "Warning:please select Plane's feature." -msgstr "" +msgstr "Warning: please select Plane's feature." msgid "Warning:please select Point's or Circle's feature." -msgstr "" +msgstr "Warning: please select Point's or Circle's feature." msgid "Warning:please select two different mesh." -msgstr "" +msgstr "Warning: please select two different meshes." msgid "Copy to clipboard" msgstr "Másolás a vágólapra" @@ -1359,25 +1366,25 @@ msgid "Distance XYZ" msgstr "Distance XYZ" msgid "Parallel" -msgstr "" +msgstr "Parallel" msgid "Center coincidence" -msgstr "" +msgstr "Center coincidence" msgid "Featue 1" -msgstr "" +msgstr "Feature 1" msgid "Reverse rotation" -msgstr "" +msgstr "Reverse rotation" msgid "Rotate around center:" -msgstr "" +msgstr "Rotate around center:" msgid "Parallel distance:" msgstr "" msgid "Flip by Face 2" -msgstr "" +msgstr "Flip by Face 2" msgid "Ctrl+" msgstr "Ctrl+" @@ -3616,9 +3623,9 @@ msgstr "" #, 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" +"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 "" "Current chamber temperature is higher than the material's safe temperature; " "this may result in material softening and nozzle clogs.The maximum safe " @@ -4397,7 +4404,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)." @@ -4822,7 +4829,7 @@ msgstr "Show &Overhang" msgid "Show object overhang highlight in 3D scene" msgstr "Show object overhang highlight in 3D scene" -msgid "Show Selected Outline (Experimental)" +msgid "Show Selected Outline (beta)" msgstr "" msgid "Show outline around selected object in 3D scene" @@ -5170,6 +5177,8 @@ msgid "" "Please check if the SD card is inserted into the printer.\n" "If it still cannot be read, you can try formatting the SD card." msgstr "" +"Kérjük, ellenőrizd az SD-kártyát a nyomtatóban.\n" +"Ha továbbra sem olvasható, próbáld meg formázni az SD-kártyát." msgid "LAN Connection Failed (Failed to view sdcard)" msgstr "LAN Connection Failed (Failed to view sdcard)" @@ -7658,8 +7667,8 @@ 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 " @@ -9952,7 +9961,7 @@ msgstr "" msgid "Overhang cooling activation threshold" msgstr "" -#, c-format, boost-format +#, no-c-format, no-boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -9964,6 +9973,7 @@ msgstr "" msgid "External bridge infill direction" msgstr "" +#, no-c-format, no-boost-format msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for " @@ -11425,8 +11435,8 @@ msgid "mm/s² or %" msgstr "mm/s² or %" 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." +"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 "" "Gyorsulás a ritkás kitöltéseknél. Ha az érték százalékban van megadva (pl. " "100%), akkor az alapértelmezett gyorsulás alapján kerül kiszámításra." @@ -11526,10 +11536,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 "layer" @@ -12637,8 +12647,8 @@ msgstr "" "hosszabb mozgás során történő szivárgást. A visszahúzás kikapcsolásához " "állítsd nullára" -msgid "Long retraction when cut(experimental)" -msgstr "Long retraction when cut (experimental)" +msgid "Long retraction when cut(beta)" +msgstr "Long retraction when cut (beta)" msgid "" "Experimental feature.Retracting and cutting off the filament at a longer " @@ -13674,8 +13684,8 @@ msgstr "" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode" +"\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -13939,9 +13949,9 @@ msgid "Idle temperature" msgstr "" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" msgid "X-Y hole compensation" @@ -15545,8 +15555,8 @@ msgstr "" "Szeretnéd felülírni?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" @@ -17530,11 +17540,11 @@ msgstr "" #~ msgstr "Hibakeresés szintje" #~ msgid "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " -#~ "5:trace\n" +#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +#~ "trace\n" #~ msgstr "" -#~ "A hibakeresési naplózási szint beállítása. 0:fatal, 1:error, 2:warning, " -#~ "3:info, 4:debug, 5:trace\n" +#~ "A hibakeresési naplózási szint beállítása. 0:fatal, 1:error, 2:warning, 3:" +#~ "info, 4:debug, 5:trace\n" #~ msgid "" #~ "3D Scene Operations\n" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 8f5880c0bb..1a4838e309 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-19 19:44+0800\n" +"POT-Creation-Date: 2025-02-20 21:21+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -1322,7 +1322,7 @@ msgid "Esc" msgstr "Esc" msgid "Cancel a feature until exit" -msgstr "" +msgstr "Cancel a feature until exit" msgid "Measure" msgstr "Misura" @@ -1330,16 +1330,17 @@ msgstr "Misura" msgid "" "Please confirm explosion ratio = 1,and please select at least one object" msgstr "" +"Please confirm explosion ratio = 1, and please select at least one object" msgid "Please select at least one object." -msgstr "" +msgstr "Please select at least one object." msgid "Edit to scale" msgstr "Modifica in scala" msgctxt "Verb" msgid "Scale all" -msgstr "" +msgstr "Scale all" msgid "None" msgstr "Nessuno" @@ -1354,40 +1355,46 @@ msgid "Selection" msgstr "Selezione" msgid " (Moving)" -msgstr "" +msgstr " (Moving)" msgid "" "Select 2 faces on objects and \n" " make objects assemble together." msgstr "" +"Select 2 faces on objects and \n" +" make objects assemble together." msgid "" "Select 2 points or circles on objects and \n" " specify distance between them." msgstr "" +"Select 2 points or circles on objects and \n" +" specify distance between them." msgid "Face" -msgstr "" +msgstr "Face" msgid " (Fixed)" -msgstr "" +msgstr " (Fixed)" msgid "Point" -msgstr "" +msgstr "Point" msgid "" "Feature 1 has been reset, \n" "feature 2 has been feature 1" msgstr "" +"Feature 1 has been reset, \n" +"feature 2 has been feature 1" msgid "Warning:please select Plane's feature." -msgstr "" +msgstr "Warning: please select Plane's feature." msgid "Warning:please select Point's or Circle's feature." -msgstr "" +msgstr "Warning: please select Point's or Circle's feature." msgid "Warning:please select two different mesh." -msgstr "" +msgstr "Warning: please select two different meshes." msgid "Copy to clipboard" msgstr "Copia negli appunti" @@ -1405,25 +1412,25 @@ msgid "Distance XYZ" msgstr "Distanza XYZ" msgid "Parallel" -msgstr "" +msgstr "Parallel" msgid "Center coincidence" -msgstr "" +msgstr "Center coincidence" msgid "Featue 1" -msgstr "" +msgstr "Feature 1" msgid "Reverse rotation" -msgstr "" +msgstr "Reverse rotation" msgid "Rotate around center:" -msgstr "" +msgstr "Rotate around center:" msgid "Parallel distance:" msgstr "" msgid "Flip by Face 2" -msgstr "" +msgstr "Flip by Face 2" msgid "Ctrl+" msgstr "Ctrl+" @@ -3313,8 +3320,8 @@ msgid "" msgstr "" "Copia del G-code temporaneo nel G-code di output non riuscita. Potrebbe " "esserci un problema nel dispositivo di destinazione, prova una nuova " -"esportazione con un dispositivo diverso. Il file G-code corrotto è su " -"%1%.tmp." +"esportazione con un dispositivo diverso. Il file G-code corrotto è su %1%." +"tmp." #, boost-format msgid "" @@ -3340,8 +3347,8 @@ msgid "" "be opened during copy check. The output G-code is at %1%.tmp." msgstr "" "Copia del G-code temporaneo completata ma non è stato possibile aprire il " -"codice esportato durante il controllo copia. Il G-code di output è su " -"%1%.tmp." +"codice esportato durante il controllo copia. Il G-code di output è su %1%." +"tmp." #, boost-format msgid "G-code file exported to %1%" @@ -3703,9 +3710,9 @@ msgstr "" #, 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" +"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 "" "L'attuale temperatura della camera è superiore alla temperatura di sicurezza " "del materiale, può causare l'ammorbidimento e l'intasamento del materiale. " @@ -4496,7 +4503,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)." @@ -4923,7 +4930,7 @@ msgstr "Mostra sporgenze" msgid "Show object overhang highlight in 3D scene" msgstr "Mostra la sporgenza dell'oggetto evidenziata nella scena 3D" -msgid "Show Selected Outline (Experimental)" +msgid "Show Selected Outline (beta)" msgstr "" msgid "Show outline around selected object in 3D scene" @@ -5276,6 +5283,8 @@ msgid "" "Please check if the SD card is inserted into the printer.\n" "If it still cannot be read, you can try formatting the SD card." msgstr "" +"Verifica se la microSD è inserita nella stampante.\n" +"Se il problema di lettura persiste, prova a formattare la microSD." msgid "LAN Connection Failed (Failed to view sdcard)" msgstr "LAN Connection Failed (Failed to view sdcard)" @@ -7809,8 +7818,8 @@ 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 stampa, si consiglia di " "aggiungere un \"Timelapse Torre di pulizia\"\n" @@ -7821,70 +7830,78 @@ msgid "" "A copy of the current system preset will be created, which will be detached " "from the system preset." msgstr "" +"Verrà creata una copia del preset di sistema corrente, e verrà distaccata " +"dal preset di sistema." msgid "" "The current custom preset will be detached from the parent system preset." msgstr "" +"Il preset personalizzato corrente sarà staccato dal preset del sistema padre." msgid "Modifications to the current profile will be saved." -msgstr "" +msgstr "Verranno salvate le modifiche al profilo attuale." msgid "" "This action is not revertible.\n" "Do you want to proceed?" msgstr "" +"Questa azione non è reversibile.\n" +"Vuoi procedere?" msgid "Detach preset" -msgstr "" +msgstr "Preset distacco" msgid "This is a default preset." -msgstr "" +msgstr "Questo è un preset predefinito." msgid "This is a system preset." -msgstr "" +msgstr "Questo è un preset di sistema." msgid "Current preset is inherited from the default preset." -msgstr "" +msgstr "Il preset attuale è stato ereditato dal preset predefinito." msgid "Current preset is inherited from" -msgstr "" +msgstr "Il preset corrente è ereditato da" msgid "It can't be deleted or modified." -msgstr "" +msgstr "Non può essere eliminato o modificato." msgid "" "Any modifications should be saved as a new preset inherited from this one." msgstr "" +"Qualunque modifica deve essere salvata come un nuovo preset ereditato da " +"questo." msgid "To do that please specify a new name for the preset." msgstr "" +"Per favore specifica un nuovo nome per il preset per effettuare l'operazione." msgid "Additional information:" -msgstr "" +msgstr "Informazioni aggiuntive:" msgid "vendor" -msgstr "" +msgstr "produttore" msgid "printer model" -msgstr "" +msgstr "modello stampante" msgid "default print profile" -msgstr "" +msgstr "profilo di stampa predefinito" msgid "default filament profile" -msgstr "" +msgstr "profilo filamento predefinito" msgid "default SLA material profile" -msgstr "" +msgstr "profilo materiale SLA predefinito" msgid "default SLA print profile" -msgstr "" +msgstr "profilo di stampa SLA predefinito" msgid "full profile name" -msgstr "" +msgstr "nome completo profilo" msgid "symbolic profile name" -msgstr "" +msgstr "nome simbolico profilo" msgid "Line width" msgstr "Larghezza linea" @@ -7966,7 +7983,7 @@ msgid "Filament for Features" msgstr "" msgid "Ooze prevention" -msgstr "" +msgstr "Prevenzione delle fuoriuscite" msgid "Skirt" msgstr "Skirt" @@ -8165,10 +8182,10 @@ msgid "Toolchange parameters with multi extruder MM printers" msgstr "Parametri di cambio strumento con stampanti MM multiestrusore" msgid "Dependencies" -msgstr "" +msgstr "Dipendenze" msgid "Profile dependencies" -msgstr "" +msgstr "Dipendenze profilo" msgid "Printable space" msgstr "Spazio di stampa" @@ -8248,7 +8265,7 @@ msgid "Single extruder multi-material setup" msgstr "Configurazione multimateriale estrusore singolo" msgid "Number of extruders of the printer." -msgstr "" +msgstr "Numero estrusori della stampante." msgid "" "Single Extruder Multi Material is selected, \n" @@ -8256,6 +8273,10 @@ msgid "" "Do you want to change the diameter for all extruders to first extruder " "nozzle diameter value?" msgstr "" +"Materiale multiplo a singolo estrusore selezionato,\n" +"tutti gli estrusori devono avere lo stesso diametro.\n" +"Vuoi modificare il diametro di tutti gli estrusori al valore del diametro " +"dell'ugello del primo estrusore?" msgid "Nozzle diameter" msgstr "Diametro Nozzle" @@ -9208,8 +9229,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 " @@ -9320,6 +9341,8 @@ msgid "" "Your print is very close to the priming regions. Make sure there is no " "collision." msgstr "" +"La stampa è molto vicina alle aree di preparazione. Assicurati che non vi " +"siano collisioni. " msgid "" "Failed to generate gcode for invalid custom G-code.\n" @@ -10179,7 +10202,7 @@ msgstr "" msgid "Overhang cooling activation threshold" msgstr "" -#, c-format, boost-format +#, no-c-format, no-boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -10191,6 +10214,7 @@ msgstr "" msgid "External bridge infill direction" msgstr "" +#, no-c-format, no-boost-format msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for " @@ -10559,6 +10583,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" +"Un'espressione booleana che usa i valori di configurazione di un profilo " +"stampante attivo. Se questa espressione produce un risultato vero, questo " +"profilo si considera compatibile con il profilo stampante attivo." msgid "Compatible process profiles" msgstr "Profili di processo compatibili" @@ -10571,6 +10598,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" +"Un'espressione booleana che usa i valori di configurazione di un profilo di " +"stampa attivo. Se questa espressione produce un risultato vero, questo " +"profilo si considera compatibile con il profilo stampante attivo." msgid "Print sequence, layer by layer or object by object" msgstr "" @@ -11818,8 +11848,8 @@ msgid "mm/s² or %" msgstr "mm/s o %" 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." +"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 "" "Accelerazione del riempimento rado. Se il valore è espresso in percentuale " "(ad esempio 100%), verrà calcolato in base all'accelerazione predefinita." @@ -11930,17 +11960,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 "layer" msgstr "" @@ -13049,7 +13078,7 @@ msgstr "" "Slicer leggendo le variabili di ambiente." msgid "Printer type" -msgstr "" +msgstr "Tipo stampante" msgid "Type of the printer" msgstr "" @@ -13061,7 +13090,7 @@ msgid "You can put your notes regarding the printer here." msgstr "È possibile inserire qui le note riguardanti la stampante." msgid "Printer variant" -msgstr "" +msgstr "Variante della stampante" msgid "Raft contact Z distance" msgstr "Distanza di contatto Z Raft" @@ -13155,8 +13184,8 @@ msgstr "" "la trasudazione durante le lunghe distanze. Imposta su 0 per disattivare la " "retrazione." -msgid "Long retraction when cut(experimental)" -msgstr "Long retraction when cut (experimental)" +msgid "Long retraction when cut(beta)" +msgstr "Long retraction when cut (beta)" msgid "" "Experimental feature.Retracting and cutting off the filament at a longer " @@ -13656,7 +13685,7 @@ msgstr "" "un riempimento solido interno." msgid "Solid infill" -msgstr "" +msgstr "Riempimento solido" msgid "Filament to print solid infill" msgstr "" @@ -14282,8 +14311,8 @@ msgstr "Attiva il controllo della temperatura" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode" +"\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -14574,9 +14603,9 @@ msgid "Idle temperature" msgstr "" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" msgid "X-Y hole compensation" @@ -15295,8 +15324,8 @@ msgstr "Impossibile leggere il file fornito perché è vuoto." msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Formato file sconosciuto: il file di input deve avere estensione .3mf " -"o .zip.amf." +"Formato file sconosciuto: il file di input deve avere estensione .3mf o .zip." +"amf." msgid "Canceled" msgstr "Annullato" @@ -16293,8 +16322,8 @@ msgstr "" "Vuoi riscriverlo?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Rinomineremo le preimpostazioni come \"Tipo di fornitore seriale @printer " @@ -17984,10 +18013,9 @@ msgstr "" #~ "\n" #~ "\n" #~ "Per impostazione predefinita, i piccoli bridge interni vengono filtrati e " -#~ "il riempimento solido interno viene stampato direttamente sul " -#~ "riempimento.Questo metodo funziona bene nella maggior parte dei casi, " -#~ "velocizzando la stampa senza compromettere troppo la qualità della " -#~ "superficie superiore.\n" +#~ "il riempimento solido interno viene stampato direttamente sul riempimento." +#~ "Questo metodo funziona bene nella maggior parte dei casi, velocizzando la " +#~ "stampa senza compromettere troppo la qualità della superficie superiore.\n" #~ "\n" #~ "Tuttavia, in modelli fortemente inclinati o curvi, soprattutto se si " #~ "utilizza una densità di riempimento troppo bassa, potrebbe comportare " @@ -18201,13 +18229,12 @@ msgstr "" #~ "nostro wiki.\n" #~ "\n" #~ "Di solito la calibrazione non è necessaria. Quando si avvia una stampa a " -#~ "singolo colore/materiale, con l'opzione \"calibrazione dinamica del " -#~ "flusso\" selezionata nel menu di avvio della stampa, la stampante seguirà " -#~ "il vecchio modo, calibrando il filamento prima della stampa; Quando si " -#~ "avvia una stampa multicolore/materiale, la stampante utilizzerà il " -#~ "parametro di compensazione predefinito per il filamento durante ogni " -#~ "cambio di filamento, che avrà un buon risultato nella maggior parte dei " -#~ "casi.\n" +#~ "singolo colore/materiale, con l'opzione \"calibrazione dinamica del flusso" +#~ "\" selezionata nel menu di avvio della stampa, la stampante seguirà il " +#~ "vecchio modo, calibrando il filamento prima della stampa; Quando si avvia " +#~ "una stampa multicolore/materiale, la stampante utilizzerà il parametro di " +#~ "compensazione predefinito per il filamento durante ogni cambio di " +#~ "filamento, che avrà un buon risultato nella maggior parte dei casi.\n" #~ "\n" #~ "Si prega di notare che ci sono alcuni casi che renderanno il risultato " #~ "della calibrazione non affidabile: utilizzo di una piastra di texture per " @@ -18586,12 +18613,9 @@ msgstr "" #~ "sporgenze di stampa e quando le velocità delle caratteristiche non sono " #~ "specificate esplicitamente." -#~ msgid "No sparse layers (EXPERIMENTAL)" -#~ msgstr "Nessun layer sparso (SPERIMENTALE)" - #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you " -#~ "selected\". \n" +#~ "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 "" #~ "Rinomineremo le impostazioni predefinite come \"Tipo di fornitore seriale " @@ -18614,10 +18638,10 @@ msgstr "" #~ "RHEL 7 puoi trovare quelle istruzioni sul wiki." #~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" " -#~ "option.Some extruders work better with this option unchecked (absolute " -#~ "extrusion mode). Wipe tower is only compatible with relative mode. It is " -#~ "always enabled on BambuLab printers. Default is checked" +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unchecked (absolute extrusion " +#~ "mode). Wipe tower is only compatible with relative mode. It is always " +#~ "enabled on BambuLab printers. Default is checked" #~ msgstr "" #~ "L'estrusione relativa è consigliata quando si utilizza l'opzione " #~ "\"label_objects\". Alcuni estrusori funzionano meglio con questa opzione " @@ -19029,11 +19053,11 @@ msgstr "" #~ msgstr "Livello di debug" #~ msgid "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " -#~ "5:trace\n" +#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +#~ "trace\n" #~ msgstr "" -#~ "Imposta livello di debug. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " -#~ "5:trace\n" +#~ "Imposta livello di debug. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +#~ "trace\n" #, boost-format #~ msgid "The selected preset: %1% is not found." diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 434f99de9e..92b9edc6c1 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-19 19:44+0800\n" +"POT-Creation-Date: 2025-02-20 21:21+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -1296,7 +1296,7 @@ msgid "Esc" msgstr "Esc" msgid "Cancel a feature until exit" -msgstr "" +msgstr "Cancel a feature until exit" msgid "Measure" msgstr "Measure" @@ -1304,16 +1304,17 @@ msgstr "Measure" msgid "" "Please confirm explosion ratio = 1,and please select at least one object" msgstr "" +"Please confirm explosion ratio = 1, and please select at least one object" msgid "Please select at least one object." -msgstr "" +msgstr "最低1つのオブジェクトを選択してください。" msgid "Edit to scale" msgstr "Edit to scale" msgctxt "Verb" msgid "Scale all" -msgstr "" +msgstr "全て拡縮" msgid "None" msgstr "無し" @@ -1328,40 +1329,44 @@ msgid "Selection" msgstr "Selection" msgid " (Moving)" -msgstr "" +msgstr " (移動中)" msgid "" "Select 2 faces on objects and \n" " make objects assemble together." -msgstr "" +msgstr "オブジェクト上の2面を選択し結合する。" msgid "" "Select 2 points or circles on objects and \n" " specify distance between them." msgstr "" +"オブジェクト上の2点または円を選択し、\n" +"その間の距離を特定する。" msgid "Face" -msgstr "" +msgstr "Face" msgid " (Fixed)" -msgstr "" +msgstr "(固定)" msgid "Point" -msgstr "" +msgstr "点" msgid "" "Feature 1 has been reset, \n" "feature 2 has been feature 1" msgstr "" +"Feature 1 has been reset, \n" +"feature 2 has been feature 1" msgid "Warning:please select Plane's feature." -msgstr "" +msgstr "Warning: please select Plane's feature." msgid "Warning:please select Point's or Circle's feature." -msgstr "" +msgstr "Warning: please select Point's or Circle's feature." msgid "Warning:please select two different mesh." -msgstr "" +msgstr "Warning: please select two different meshes." msgid "Copy to clipboard" msgstr "コピー" @@ -1379,25 +1384,25 @@ msgid "Distance XYZ" msgstr "Distance XYZ" msgid "Parallel" -msgstr "" +msgstr "平行" msgid "Center coincidence" -msgstr "" +msgstr "Center coincidence" msgid "Featue 1" -msgstr "" +msgstr "フィーチャー1" msgid "Reverse rotation" -msgstr "" +msgstr "回転方向を反転" msgid "Rotate around center:" -msgstr "" +msgstr "中心付近で回転" msgid "Parallel distance:" msgstr "" msgid "Flip by Face 2" -msgstr "" +msgstr "Flip by Face 2" msgid "Ctrl+" msgstr "Ctrl+" @@ -3574,9 +3579,9 @@ msgstr "値が小さすぎます、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" +"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 "" "Current chamber temperature is higher than the material's safe temperature; " "this may result in material softening and nozzle clogs.The maximum safe " @@ -4341,7 +4346,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)." @@ -4658,7 +4663,7 @@ msgid "Export current plate as G-code" msgstr "現在のプレートをG-codeでエクスポート" msgid "Export Preset Bundle" -msgstr "" +msgstr "プリセットバンドルをエクスポート" msgid "Export current configuration to files" msgstr "現在の構成をエクスポート" @@ -4762,7 +4767,7 @@ msgstr "Show &Overhang" msgid "Show object overhang highlight in 3D scene" msgstr "Show object overhang highlight in 3D scene" -msgid "Show Selected Outline (Experimental)" +msgid "Show Selected Outline (beta)" msgstr "" msgid "Show outline around selected object in 3D scene" @@ -5099,6 +5104,8 @@ msgid "" "Please check if the SD card is inserted into the printer.\n" "If it still cannot be read, you can try formatting the SD card." msgstr "" +"Please check if the Micro SD card is inserted into the printer.\n" +"If it still cannot be read, you can try formatting the card." msgid "LAN Connection Failed (Failed to view sdcard)" msgstr "LAN Connection Failed (Failed to view sdcard)" @@ -6369,7 +6376,7 @@ msgstr "" "モデルを変更すると、ペイントデータ(サポートや色など)がリセットされます" msgid "Optimize Rotation" -msgstr "" +msgstr "回転の最適化" msgid "Invalid number" msgstr "無効な数字" @@ -7247,7 +7254,7 @@ msgid "Bind with Pin Code" msgstr "Bind with Pin Code" msgid "Bind with Access Code" -msgstr "" +msgstr "アクセスコードと紐付け" msgid "Send to Printer SD card" msgstr "プリンターのSDカードに送信" @@ -7531,8 +7538,8 @@ 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 "" "ヘッド無しのタイムラプスビデオを録画する時に、「タイムラプスプライムタワー」" "を追加してください。プレートで右クリックして、「プリミティブを追加」→「タイム" @@ -7542,70 +7549,75 @@ msgid "" "A copy of the current system preset will be created, which will be detached " "from the system preset." msgstr "" +"現在のシステムプリセットからコピーを作成し、システムプリセットから切り離しま" +"す。" msgid "" "The current custom preset will be detached from the parent system preset." -msgstr "" +msgstr "現在のカスタムプリセットは、親システムプリセットから切り離されます。" msgid "Modifications to the current profile will be saved." -msgstr "" +msgstr "現在のプロファイルの編集が保存されます。" msgid "" "This action is not revertible.\n" "Do you want to proceed?" msgstr "" +"このアクションは元に戻せません。\n" +"続行しますか?" msgid "Detach preset" -msgstr "" +msgstr "プリセットを切り離す" msgid "This is a default preset." -msgstr "" +msgstr "これはデフォルトのプリセットです。" msgid "This is a system preset." -msgstr "" +msgstr "これはシステムプリセットです。" msgid "Current preset is inherited from the default preset." -msgstr "" +msgstr "現在の設定はデフォルト設定から継承されます。" msgid "Current preset is inherited from" -msgstr "" +msgstr "現在のプリセット継承元" msgid "It can't be deleted or modified." -msgstr "" +msgstr "削除もしくは変更ができません。" msgid "" "Any modifications should be saved as a new preset inherited from this one." msgstr "" +"修正したら、これから継承された新しいプリセットとして保存する必要があります。" msgid "To do that please specify a new name for the preset." -msgstr "" +msgstr "これを行うには、プリセットの新しい名前を指定してください。" msgid "Additional information:" -msgstr "" +msgstr "追加情報:" msgid "vendor" -msgstr "" +msgstr "メーカー" msgid "printer model" -msgstr "" +msgstr "プリンターモデル" msgid "default print profile" -msgstr "" +msgstr "デフォルトプリントプロファイル" msgid "default filament profile" -msgstr "" +msgstr "デフォルトフィラメントプロファイル" msgid "default SLA material profile" -msgstr "" +msgstr "デフォルトのSLA材料プロファイル" msgid "default SLA print profile" -msgstr "" +msgstr "デフォルトのSLAプリントプロファイル" msgid "full profile name" -msgstr "" +msgstr "完全なプロファイル名" msgid "symbolic profile name" -msgstr "" +msgstr "シンボリック・プロファイル名" msgid "Line width" msgstr "押出線幅" @@ -7685,7 +7697,7 @@ msgid "Filament for Features" msgstr "" msgid "Ooze prevention" -msgstr "" +msgstr "垂れ出し抑止" msgid "Skirt" msgstr "スカート" @@ -7874,10 +7886,10 @@ msgid "Toolchange parameters with multi extruder MM printers" msgstr "マルチエクストルーダーMMプリンターのツールチェンジパラメータ" msgid "Dependencies" -msgstr "" +msgstr "依存関係" msgid "Profile dependencies" -msgstr "" +msgstr "プロファイルの依存関係" msgid "Printable space" msgstr "造形可能領域" @@ -7957,7 +7969,7 @@ msgid "Single extruder multi-material setup" msgstr "" msgid "Number of extruders of the printer." -msgstr "" +msgstr "プリンターのエクストルーダー数。" msgid "" "Single Extruder Multi Material is selected, \n" @@ -7965,6 +7977,9 @@ msgid "" "Do you want to change the diameter for all extruders to first extruder " "nozzle diameter value?" msgstr "" +"1つのエクストルーダーのマルチマテリアルプリンターが選択されているため、すべて" +"のエクストルーダーの直径が同じでなければなりません。最初のエクストルーダーの" +"直径で、すべてのエクストルーダーノズルの直径を設定しますか?" msgid "Nozzle diameter" msgstr "ノズル直径" @@ -8982,6 +8997,8 @@ msgid "" "Your print is very close to the priming regions. Make sure there is no " "collision." msgstr "" +"プリントはプライミング領域に非常に近いです。 衝突がないことを確認してくださ" +"い。" msgid "" "Failed to generate gcode for invalid custom G-code.\n" @@ -9760,7 +9777,7 @@ msgstr "" msgid "Overhang cooling activation threshold" msgstr "" -#, c-format, boost-format +#, no-c-format, no-boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -9772,6 +9789,7 @@ msgstr "" msgid "External bridge infill direction" msgstr "" +#, no-c-format, no-boost-format msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for " @@ -10108,6 +10126,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" +"アクティブなプリンタープロファイルの構成値を使った論理式です。 この論理式が真" +"の場合、このプロファイルはアクティブなプリンタープロファイルと互換性があると" +"見なされます。" msgid "Compatible process profiles" msgstr "互換性のあるプロセスプロファイル" @@ -10120,6 +10141,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" +"アクティブなプリントプロファイルの構成値を使用する論理式。 この式の結果がtrue" +"の場合、このプロファイルはアクティブなプリントプロファイルと互換性があるとみ" +"なされます。" msgid "Print sequence, layer by layer or object by object" msgstr "造形の順番を設定します、積層順かオブジェクト順にしてください" @@ -10850,6 +10874,11 @@ msgid "" "Be sure to allow enough space between objects, as this compensation is done " "after the checks." msgstr "" +"フィラメントが冷却後に収縮する率を入力します(100mm→94mmならば94%)。この収縮" +"により、パーツはxy方向でスケーリングされて補償されます。補償は、パーツの周囲" +"部分に使用されるフィラメントのみが考慮されます。\n" +"この補償はチェック後に行われます。オブジェクト間に十分なスペースを確保してく" +"ださい。" msgid "Shrinkage (Z)" msgstr "" @@ -11204,11 +11233,11 @@ msgid "mm/s² or %" msgstr "mm/s² or %" 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." +"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 "" -"Acceleration of sparse infill. If the value is expressed as a percentage " -"(e.g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage (e." +"g. 100%), it will be calculated based on the default acceleration." msgid "" "Acceleration of internal solid infill. If the value is expressed as a " @@ -11301,10 +11330,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 "layer" @@ -11630,6 +11659,11 @@ msgid "" "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 "Exclude objects" @@ -12278,7 +12312,7 @@ msgid "" msgstr "" msgid "Printer type" -msgstr "" +msgstr "プリンタータイプ" msgid "Type of the printer" msgstr "" @@ -12290,7 +12324,7 @@ msgid "You can put your notes regarding the printer here." msgstr "You can put your notes regarding the printer here." msgid "Printer variant" -msgstr "" +msgstr "プリンターバリエーション" msgid "Raft contact Z distance" msgstr "ラフト接触面Z間隔" @@ -12378,8 +12412,8 @@ msgstr "" "ノズルが長い距離で移動する時に、リトラクションの量です。値が0の場合、リトラク" "ションが無効になります。" -msgid "Long retraction when cut(experimental)" -msgstr "Long retraction when cut (experimental)" +msgid "Long retraction when cut(beta)" +msgstr "Long retraction when cut (beta)" msgid "" "Experimental feature.Retracting and cutting off the filament at a longer " @@ -12529,6 +12563,9 @@ 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 "" @@ -12818,7 +12855,7 @@ msgstr "" "す" msgid "Solid infill" -msgstr "" +msgstr "ソリッドインフィル" msgid "Filament to print solid infill" msgstr "" @@ -13392,8 +13429,8 @@ msgstr "" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode" +"\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -13652,9 +13689,9 @@ msgid "Idle temperature" msgstr "" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" msgid "X-Y hole compensation" @@ -13715,6 +13752,8 @@ msgid "" "Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the " "following format: \"XxY, XxY, ...\"" msgstr "" +"次の形式で.gcodeおよび.sl1 / .sl1sファイルに保存される画像サイズ:\"XxY, " +"XxY, ...\"" msgid "Format of G-code thumbnails" msgstr "Gコードサムネイルのフォーマット" @@ -14542,6 +14581,23 @@ msgid "" "cause the result not exactly the same in each calibration. We are still " "investigating the root cause to do improvements with new updates." msgstr "" +"フローダイナミクスキャリブレーションの詳細については、当社のWikiをご覧くださ" +"い。\n" +"通常、キャリブレーションは不要です。単一の色や材料で印刷を開始する際に、「フ" +"ローダイナミクスキャリブレーション」オプションが印刷開始メニューでチェックさ" +"れていると、プリンターは従来の方法に従い、印刷前にフィラメントをキャリブレー" +"ションします。複数の色や材料で印刷を開始する場合、プリンターはフィラメントが" +"切り替わるたびにデフォルトの補正パラメーターを使用し、ほとんどの場合良好な結" +"果が得られます。\n" +"\n" +"注意点として、キャリブレーション結果が信頼できない原因となる場合がいくつかあ" +"ります。例えば、ビルドプレートの接着が不十分な場合です。接着力を向上させるに" +"は、ビルドプレートを洗浄したり、糊を塗布することが有効です。このトピックに関" +"する詳細については、当社のWikiを参照してください。\n" +"\n" +"我々の検証によるとキャリブレーション結果には約10%のジッターがあり、各キャリ" +"ブレーションで結果が完全に一致しない場合があります。現在、その根本原因を調査" +"しており、新しいアップデートで改善を行う予定です。" msgid "When to use Flow Rate Calibration" msgstr "When to use Flow Rate Calibration" @@ -15262,8 +15318,8 @@ msgstr "" "Do you want to rewrite it?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" @@ -17204,8 +17260,8 @@ msgstr "" #~ msgstr "デバッグ レベル" #~ msgid "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " -#~ "5:trace\n" +#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +#~ "trace\n" #~ msgstr "" #~ "デバッグロギングレベルを設定します。0:fatal、1:error、2:warning、3:info、" #~ "4:debug、5:trace。\n" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 7d21316e89..8ec3603f0d 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-19 19:44+0800\n" +"POT-Creation-Date: 2025-02-20 21:21+0800\n" "PO-Revision-Date: 2024-11-06 21:10+0900\n" -"Last-Translator: ElectricalBoy " -"<15651807+ElectricalBoy@users.noreply.github.com>\n" +"Last-Translator: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github." +"com>\n" "Language-Team: crwusiz@gmail.com\n" "Language: ko_KR\n" "MIME-Version: 1.0\n" @@ -1298,24 +1298,24 @@ msgid "Esc" msgstr "Esc" msgid "Cancel a feature until exit" -msgstr "" +msgstr "종료할 때까지 기능 취소" msgid "Measure" msgstr "측정" msgid "" "Please confirm explosion ratio = 1,and please select at least one object" -msgstr "" +msgstr "폭발 비율 = 1인지 확인하고 개체를 하나 이상 선택하십시오." msgid "Please select at least one object." -msgstr "" +msgstr "개체를 하나 이상 선택하세요." msgid "Edit to scale" msgstr "규모에 맞게 편집" msgctxt "Verb" msgid "Scale all" -msgstr "" +msgstr "모두 확장" msgid "None" msgstr "없음" @@ -1330,40 +1330,46 @@ msgid "Selection" msgstr "선택" msgid " (Moving)" -msgstr "" +msgstr "(움직이는)" msgid "" "Select 2 faces on objects and \n" " make objects assemble together." msgstr "" +"객체에서 2개의 면을 선택하고\n" +" 개체를 함께 조립합니다." msgid "" "Select 2 points or circles on objects and \n" " specify distance between them." msgstr "" +"객체 위의 점이나 원 2개를 선택하고\n" +" 그들 사이의 거리를 지정하십시오." msgid "Face" -msgstr "" +msgstr "얼굴" msgid " (Fixed)" -msgstr "" +msgstr "(결정된)" msgid "Point" -msgstr "" +msgstr "가리키다" msgid "" "Feature 1 has been reset, \n" "feature 2 has been feature 1" msgstr "" +"기능 1이 재설정되었습니다.\n" +"기능 2는 기능 1이 되었습니다." msgid "Warning:please select Plane's feature." -msgstr "" +msgstr "경고: 평면의 기능을 선택하세요." msgid "Warning:please select Point's or Circle's feature." -msgstr "" +msgstr "경고: 점 또는 원의 특징을 선택하십시오." msgid "Warning:please select two different mesh." -msgstr "" +msgstr "경고: 서로 다른 두 개의 메시를 선택하십시오." msgid "Copy to clipboard" msgstr "클립보드로 복사" @@ -1381,25 +1387,25 @@ msgid "Distance XYZ" msgstr "XYZ 거리" msgid "Parallel" -msgstr "" +msgstr "평행한" msgid "Center coincidence" -msgstr "" +msgstr "중심 일치" msgid "Featue 1" -msgstr "" +msgstr "특징 1" msgid "Reverse rotation" -msgstr "" +msgstr "역회전" msgid "Rotate around center:" -msgstr "" +msgstr "중심을 중심으로 회전:" msgid "Parallel distance:" msgstr "" msgid "Flip by Face 2" -msgstr "" +msgstr "면 2로 뒤집기" msgid "Ctrl+" msgstr "Ctrl+" @@ -3590,9 +3596,9 @@ msgstr "" #, 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" +"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입니다" @@ -4367,7 +4373,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)." @@ -4792,7 +4798,7 @@ msgstr "돌출부 보기 (&O)" msgid "Show object overhang highlight in 3D scene" msgstr "3D 장면에서 개체 오버행 하이라이트 표시" -msgid "Show Selected Outline (Experimental)" +msgid "Show Selected Outline (beta)" msgstr "선택된 개요 표시(실험적)" msgid "Show outline around selected object in 3D scene" @@ -5134,6 +5140,8 @@ msgid "" "Please check if the SD card is inserted into the printer.\n" "If it still cannot be read, you can try formatting the SD card." msgstr "" +"프린터에 Micro SD 카드가 삽입되어 있는지 확인하세요.\n" +"그래도 읽을 수 없으면 카드를 포맷해 보세요." msgid "LAN Connection Failed (Failed to view sdcard)" msgstr "LAN 연결 실패 (sdcard를 볼 수 없음)" @@ -5170,8 +5178,8 @@ 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코드 데이터가 없습니다. OrcaSlicer에서 슬라이스하고 " -"새 .gcode.3mf 파일을 내보내십시오." +".gcode.3mf 파일에는 G코드 데이터가 없습니다. OrcaSlicer에서 슬라이스하고 새 ." +"gcode.3mf 파일을 내보내십시오." #, c-format, boost-format msgid "File '%s' was lost! Please download it again." @@ -7588,8 +7596,8 @@ 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" @@ -9598,9 +9606,9 @@ msgid "" msgstr "" "Orca Slicer은 G코드 파일을 프린터 호스트에 업로드할 수 있습니다. 이 필드에는 " "프린터 호스트 인스턴스의 호스트 이름, IP 주소 또는 URL이 포함되어야 합니다. " -"기본 인증이 활성화된 HAProxy 뒤의 출력 호스트는 https://" -"username:password@your-octopi-address/ 형식의 URL에 사용자 이름과 암호를 입력" -"하여 액세스할 수 있습니다" +"기본 인증이 활성화된 HAProxy 뒤의 출력 호스트는 https://username:" +"password@your-octopi-address/ 형식의 URL에 사용자 이름과 암호를 입력하여 액세" +"스할 수 있습니다" msgid "Device UI" msgstr "장치 UI" @@ -9918,7 +9926,7 @@ msgstr "" msgid "Overhang cooling activation threshold" msgstr "" -#, c-format, boost-format +#, no-c-format, no-boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -9930,6 +9938,7 @@ msgstr "" msgid "External bridge infill direction" msgstr "" +#, no-c-format, no-boost-format msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for " @@ -11623,8 +11632,8 @@ msgid "mm/s² or %" msgstr "mm/s² 또는 %" 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." +"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 "" "드문 채우기 가속도. 값이 백분율 (예. 100%)로 표시되면 기본 가속도를 기준으로 " "계산됩니다." @@ -11727,10 +11736,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\"가 " @@ -12929,7 +12938,7 @@ msgstr "" "긴 이동 중에 필라멘트가 흘러나오는 것을 방지하기 위해 압출기의 일정량의 재료" "를 뒤로 당깁니다. 후퇴를 비활성화하려면 0을 설정하세요" -msgid "Long retraction when cut(experimental)" +msgid "Long retraction when cut(beta)" msgstr "절단 시 긴 후퇴(실험적)" msgid "" @@ -14018,8 +14027,8 @@ msgstr "온도 제어 활성화" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode" +"\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -14327,9 +14336,9 @@ msgid "Idle temperature" msgstr "공회전 온도" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" "도구가 현재 다중 도구 설정에서 사용되지 않을 때의 노즐 온도. 이는 출력 설정에" "서 '얼룩 방지'가 활성화된 경우에만 사용됩니다. 비활성화하려면 0으로 설정합니" @@ -15986,8 +15995,8 @@ msgstr "" "다시 작성하시겠습니까?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "사전 설정의 이름을 \"선택한 공급업체 유형 직렬 @프린터\"로 변경합니다.\n" @@ -18273,12 +18282,9 @@ msgstr "" #~ "보다 나은 레이어 냉각을 위해 속도를 늦출 때, 돌출부 출력 속도가 명시적으" #~ "로 지정되지 않은 경우 필라멘트의 최소 출력 속도가 활성화됩니다." -#~ msgid "No sparse layers (EXPERIMENTAL)" -#~ msgstr "드문 레이어 없음(실험적)" - #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you " -#~ "selected\". \n" +#~ "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 "" #~ "사전 설정의 이름을 \"선택한 공급업체 유형 직렬 @프린터\"로 변경합니다.\n" @@ -18295,10 +18301,10 @@ msgstr "" #~ msgstr "위키" #~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" " -#~ "option.Some extruders work better with this option unchecked (absolute " -#~ "extrusion mode). Wipe tower is only compatible with relative mode. It is " -#~ "always enabled on BambuLab printers. Default is checked" +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unchecked (absolute extrusion " +#~ "mode). Wipe tower is only compatible with relative mode. It is always " +#~ "enabled on BambuLab printers. Default is checked" #~ msgstr "" #~ "상대적 압출은 \"label_objects\" 옵션(기타; 개체 이름표)을 사용할 때 권장됩" #~ "니다. 일부 압출기는 이 옵션을 해제하면 더 잘 작동합니다(절대 압출 모드). " @@ -18689,8 +18695,8 @@ msgstr "" #~ msgstr "디버그 수준" #~ msgid "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " -#~ "5:trace\n" +#~ "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" diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 4aa402eb19..513d4feaeb 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-19 19:44+0800\n" +"POT-Creation-Date: 2025-02-20 21:21+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -1290,24 +1290,24 @@ msgid "Esc" msgstr "Esc" msgid "Cancel a feature until exit" -msgstr "" +msgstr "Een functie annuleren tot afsluiten" msgid "Measure" msgstr "Maatregel" msgid "" "Please confirm explosion ratio = 1,and please select at least one object" -msgstr "" +msgstr "Bevestig explosieverhouding = 1 en selecteer ten minste één object" msgid "Please select at least one object." -msgstr "" +msgstr "Selecteer ten minste één object." msgid "Edit to scale" msgstr "Op schaal bewerken" msgctxt "Verb" msgid "Scale all" -msgstr "" +msgstr "Alle schalen" msgid "None" msgstr "Geen" @@ -1322,40 +1322,46 @@ msgid "Selection" msgstr "Selectie" msgid " (Moving)" -msgstr "" +msgstr " (Bewegen)" msgid "" "Select 2 faces on objects and \n" " make objects assemble together." msgstr "" +"Selecteer 2 vlakken op objecten en \n" +" objecten samenvoegen." msgid "" "Select 2 points or circles on objects and \n" " specify distance between them." msgstr "" +"Select 2 points or circles on objects and \n" +" specify distance between them." msgid "Face" -msgstr "" +msgstr "Face" msgid " (Fixed)" -msgstr "" +msgstr " (Fixed)" msgid "Point" -msgstr "" +msgstr "Point" msgid "" "Feature 1 has been reset, \n" "feature 2 has been feature 1" msgstr "" +"Feature 1 has been reset, \n" +"feature 2 has been feature 1" msgid "Warning:please select Plane's feature." -msgstr "" +msgstr "Warning: please select Plane's feature." msgid "Warning:please select Point's or Circle's feature." -msgstr "" +msgstr "Warning: please select Point's or Circle's feature." msgid "Warning:please select two different mesh." -msgstr "" +msgstr "Warning: please select two different meshes." msgid "Copy to clipboard" msgstr "Kopieer naar klembord" @@ -1373,25 +1379,25 @@ msgid "Distance XYZ" msgstr "Distance XYZ" msgid "Parallel" -msgstr "" +msgstr "Parallel" msgid "Center coincidence" -msgstr "" +msgstr "Center coincidence" msgid "Featue 1" -msgstr "" +msgstr "Feature 1" msgid "Reverse rotation" -msgstr "" +msgstr "Reverse rotation" msgid "Rotate around center:" -msgstr "" +msgstr "Rotate around center:" msgid "Parallel distance:" msgstr "" msgid "Flip by Face 2" -msgstr "" +msgstr "Flip by Face 2" msgid "Ctrl+" msgstr "Ctrl+" @@ -3655,9 +3661,9 @@ msgstr "" #, 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" +"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 "" "De huidige kamertemperatuur is hoger dan de veilige temperatuur van het " "materiaal; dit kan leiden tot verzachting van het materiaal en verstoppingen " @@ -4437,7 +4443,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)." @@ -4862,7 +4868,7 @@ msgstr "Show &Overhang" msgid "Show object overhang highlight in 3D scene" msgstr "Show object overhang highlight in 3D scene" -msgid "Show Selected Outline (Experimental)" +msgid "Show Selected Outline (beta)" msgstr "" msgid "Show outline around selected object in 3D scene" @@ -5209,6 +5215,9 @@ msgid "" "Please check if the SD card is inserted into the printer.\n" "If it still cannot be read, you can try formatting the SD card." msgstr "" +"Controleer of de Micro SD-kaart in de printer is geplaatst.\n" +"Als de kaart nog steeds niet kan worden gelezen, kunt u proberen de kaart te " +"formatteren." msgid "LAN Connection Failed (Failed to view sdcard)" msgstr "LAN Connection Failed (Failed to view sdcard)" @@ -6522,7 +6531,7 @@ msgstr "" "Handmatig aangebrachte support en kleuren zijn verwijderd voor het repareren." msgid "Optimize Rotation" -msgstr "" +msgstr "Optimaliseer rotatie" msgid "Invalid number" msgstr "Ongeldig nummer" @@ -7768,8 +7777,8 @@ 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" @@ -7780,70 +7789,76 @@ msgid "" "A copy of the current system preset will be created, which will be detached " "from the system preset." msgstr "" +"Een kopie van de huidige systeempreset wordt aangemaakt. Deze wordt " +"ontkoppeld van het origineel." msgid "" "The current custom preset will be detached from the parent system preset." -msgstr "" +msgstr "De huidige custom preset wordt ontkoppeld van de originele preset." msgid "Modifications to the current profile will be saved." -msgstr "" +msgstr "Aanpassingen aan het huidige profiel worden opgeslagen." msgid "" "This action is not revertible.\n" "Do you want to proceed?" msgstr "" +"Deze actie is niet terug te draaien.\n" +"Wilt u doorgaan?" msgid "Detach preset" -msgstr "" +msgstr "Ontkoppel preset" msgid "This is a default preset." -msgstr "" +msgstr "Dit is een standaard preset." msgid "This is a system preset." -msgstr "" +msgstr "Dit is een systeempreset." msgid "Current preset is inherited from the default preset." -msgstr "" +msgstr "Huidige preset is gebaseerd op de standaard preset." msgid "Current preset is inherited from" -msgstr "" +msgstr "Huidige preset is afgeleid van" msgid "It can't be deleted or modified." -msgstr "" +msgstr "Kan niet verwijderd of aangepast worden." msgid "" "Any modifications should be saved as a new preset inherited from this one." msgstr "" +"Eventuele wijzigingen moet worden opgeslagen als een nieuwe preset die is " +"gebaseerd op de huidige." msgid "To do that please specify a new name for the preset." -msgstr "" +msgstr "Geef daarvoor een nieuwe naam aan de preset." msgid "Additional information:" -msgstr "" +msgstr "Overige informatie:" msgid "vendor" -msgstr "" +msgstr "leverancier" msgid "printer model" -msgstr "" +msgstr "printermodel" msgid "default print profile" -msgstr "" +msgstr "standaard printprofiel" msgid "default filament profile" -msgstr "" +msgstr "standaard filamentprofiel" msgid "default SLA material profile" -msgstr "" +msgstr "standaard SLA-materiaalprofiel" msgid "default SLA print profile" -msgstr "" +msgstr "standaard SLA-printprofiel" msgid "full profile name" -msgstr "" +msgstr "volledige profielnaam" msgid "symbolic profile name" -msgstr "" +msgstr "symbolische profielnaam" msgid "Line width" msgstr "Lijn dikte" @@ -7925,7 +7940,7 @@ msgid "Filament for Features" msgstr "" msgid "Ooze prevention" -msgstr "" +msgstr "Druippreventie" msgid "Skirt" msgstr "Skirt" @@ -8126,10 +8141,10 @@ msgid "Toolchange parameters with multi extruder MM printers" msgstr "" msgid "Dependencies" -msgstr "" +msgstr "Afhankelijkheden" msgid "Profile dependencies" -msgstr "" +msgstr "Profielafhankelijkheden" msgid "Printable space" msgstr "Ruimte waarbinnen geprint kan worden" @@ -8209,7 +8224,7 @@ msgid "Single extruder multi-material setup" msgstr "" msgid "Number of extruders of the printer." -msgstr "" +msgstr "Aantal extruders van de printer." msgid "" "Single Extruder Multi Material is selected, \n" @@ -8217,6 +8232,10 @@ msgid "" "Do you want to change the diameter for all extruders to first extruder " "nozzle diameter value?" msgstr "" +"Multi-material met één extruder is geselecteerd.\n" +"Alle extruders moeten daarvoor dezelfde diameter hebben.\n" +"Wilt u de diameters voor alle extruders aanpassen gelijk aan die van de " +"eerste extruder?" msgid "Nozzle diameter" msgstr "Mondstuk diameter" @@ -9268,6 +9287,8 @@ msgid "" "Your print is very close to the priming regions. Make sure there is no " "collision." msgstr "" +"Uw print is dichtbij de afveeggebieden. Let op dat dit geen botsingen " +"veroorzaakt." msgid "" "Failed to generate gcode for invalid custom G-code.\n" @@ -10089,7 +10110,7 @@ msgstr "" msgid "Overhang cooling activation threshold" msgstr "" -#, c-format, boost-format +#, no-c-format, no-boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -10101,6 +10122,7 @@ msgstr "" msgid "External bridge infill direction" msgstr "" +#, no-c-format, no-boost-format msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for " @@ -10440,6 +10462,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" +"Een waar/niet waar aanduiding die gebruik maakt van configuratiewaarden van " +"een actief printerprofiel. Als deze aanduiding op waar staat, wordt dit " +"profiel beschouwd als geschikt voor het actieve printerprofiel." msgid "Compatible process profiles" msgstr "Geschikte proces profielen" @@ -10452,6 +10477,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" +"Een waar/niet waar aanduiding die gebruik maakt van configuratiewaarden van " +"een actief printprofiel. Als deze aanduiding op waar staat, wordt dit " +"profiel beschouwd als geschikt voor het actieve printprofiel." msgid "Print sequence, layer by layer or object by object" msgstr "" @@ -11570,8 +11598,8 @@ msgid "mm/s² or %" msgstr "mm/s² or %" 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." +"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 "" "Versnelling van de schaarse invulling. Als de waarde wordt uitgedrukt als " "een percentage (bijvoorbeeld 100%), wordt deze berekend op basis van de " @@ -11675,10 +11703,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 "layer" @@ -12017,6 +12045,10 @@ msgid "" "plugin. This settings is NOT compatible with Single Extruder Multi Material " "setup and Wipe into Object / Wipe into Infill." msgstr "" +"Schakel dit in om opmerkingen in de G-code toe te voegen voor bewegingen die " +"behoren tot een object. Dit is handig voor de OctoPrint CancelObject-plugin. " +"Deze instelling is NIET geschikt voor een multi-materialsetup met één " +"extruder en 'Afvegen in object' en 'Afvegen in vulling'." msgid "Exclude objects" msgstr "Objecten uitsluiten" @@ -12690,7 +12722,7 @@ msgid "" msgstr "" msgid "Printer type" -msgstr "" +msgstr "Printertype" msgid "Type of the printer" msgstr "" @@ -12702,7 +12734,7 @@ msgid "You can put your notes regarding the printer here." msgstr "You can put your notes regarding the printer here." msgid "Printer variant" -msgstr "" +msgstr "Printervariant" msgid "Raft contact Z distance" msgstr "Vlot (raft) contact Z afstand:" @@ -12798,8 +12830,8 @@ msgstr "" "tijdens verplaatsingen over lange afstand te voorkomen. Stel in op 0 om " "terugtrekken (retraction) uit te schakelen." -msgid "Long retraction when cut(experimental)" -msgstr "Long retraction when cut (experimental)" +msgid "Long retraction when cut(beta)" +msgstr "Long retraction when cut (beta)" msgid "" "Experimental feature.Retracting and cutting off the filament at a longer " @@ -12952,6 +12984,9 @@ msgid "" "This experimental setting uses G10 and G11 commands to have the firmware " "handle the retraction. This is only supported in recent Marlin." msgstr "" +"Deze experimentele instelling gebruikt G10 en G11 commando's voor het " +"retracten in de firmware. Dit wordt alleen ondersteunt bij de recente Marlin-" +"variant." msgid "Show auto-calibration marks" msgstr "" @@ -13243,7 +13278,7 @@ msgstr "" "vervangen door solide interne vulling (infill)." msgid "Solid infill" -msgstr "" +msgstr "Dichte vulling" msgid "Filament to print solid infill" msgstr "" @@ -13835,8 +13870,8 @@ msgstr "Temperatuurregeling activeren" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode" +"\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -14041,13 +14076,17 @@ msgid "" msgstr "" msgid "Purging volumes - load/unload volumes" -msgstr "" +msgstr "Afveegvolume - laad/ontlaad volumes" 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 "" +"Deze vector bespaart de benodigde volumes om van/naar elke extruder dat op " +"het afveegblok wordt gebruikt te wisselen. Deze waarden worden gebruikt om " +"het creëren van de onderstaande volledige reinigingsvolumes te " +"vereenvoudigen." msgid "" "Purging after filament change will be done inside objects' infills. This may " @@ -14106,9 +14145,9 @@ msgid "Idle temperature" msgstr "" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" msgid "X-Y hole compensation" @@ -14173,6 +14212,8 @@ msgid "" "Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the " "following format: \"XxY, XxY, ...\"" msgstr "" +"Afbeeldingsgrootte wordt opgeslagen in de .gcode en .sl1 / .sl1s bestanden " +"in het formaat: \"XxY, XxY, ...\"" msgid "Format of G-code thumbnails" msgstr "Bestandstype van G-code-voorbeelden" @@ -14193,11 +14234,10 @@ msgid "" "Wipe tower is only compatible with relative mode. It is recommended on most " "printers. Default is checked" msgstr "" -"Relatieve extrusie wordt aanbevolen bij gebruik van de optie " -"\"label_objects\". Sommige extruders werken beter als deze optie niet is " -"aangevinkt (absolute extrusiemodus). Wipe tower is alleen compatibel met " -"relatieve modus. Het wordt aanbevolen op de meeste printers. Standaard is " -"aangevinkt" +"Relatieve extrusie wordt aanbevolen bij gebruik van de optie \"label_objects" +"\". Sommige extruders werken beter als deze optie niet is aangevinkt " +"(absolute extrusiemodus). Wipe tower is alleen compatibel met relatieve " +"modus. Het wordt aanbevolen op de meeste printers. Standaard is aangevinkt" msgid "" "Classic wall generator produces walls with constant extrusion width and for " @@ -15736,8 +15776,8 @@ msgstr "" "Wil je het herschrijven?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" @@ -17825,11 +17865,11 @@ msgstr "" #~ msgstr "Debuggen level" #~ msgid "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " -#~ "5:trace\n" +#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +#~ "trace\n" #~ msgstr "" -#~ "Sets debug logging level. 0:fataal, 1:error, 2:waarschuwing, 3:info, " -#~ "4:debug, 5:trace\n" +#~ "Sets debug logging level. 0:fataal, 1:error, 2:waarschuwing, 3:info, 4:" +#~ "debug, 5:trace\n" #~ msgid "" #~ "3D Scene Operations\n" diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index 60aed57d53..4f2e2a0674 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer 2.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-19 19:44+0800\n" +"POT-Creation-Date: 2025-02-20 21:21+0800\n" "PO-Revision-Date: \n" "Last-Translator: Krzysztof Morga \n" "Language-Team: \n" @@ -1310,7 +1310,7 @@ msgid "Esc" msgstr "Esc" msgid "Cancel a feature until exit" -msgstr "" +msgstr "Anuluj funkcję przed wyjściem" msgid "Measure" msgstr "Zmierz" @@ -1318,16 +1318,18 @@ msgstr "Zmierz" msgid "" "Please confirm explosion ratio = 1,and please select at least one object" msgstr "" +"Proszę potwierdzić współczynnik eksplozji = 1 i wybrać przynajmniej jeden " +"obiekt" msgid "Please select at least one object." -msgstr "" +msgstr "Proszę wybrać przynajmniej jeden obiekt." msgid "Edit to scale" msgstr "Edytuj do skali" msgctxt "Verb" msgid "Scale all" -msgstr "" +msgstr "Skaluj wszystko" msgid "None" msgstr "Brak" @@ -1342,40 +1344,46 @@ msgid "Selection" msgstr "Wybór" msgid " (Moving)" -msgstr "" +msgstr " (Przesuwanie)" msgid "" "Select 2 faces on objects and \n" " make objects assemble together." msgstr "" +"Wybierz 2 powierzchnie na obiektach \n" +"i połącz je razem." msgid "" "Select 2 points or circles on objects and \n" " specify distance between them." msgstr "" +"Wybierz 2 punkty lub koła na obiektach \n" +"i określ odległość między nimi." msgid "Face" -msgstr "" +msgstr "Powierzchnia" msgid " (Fixed)" -msgstr "" +msgstr " (Stały)" msgid "Point" -msgstr "" +msgstr "Punkt" msgid "" "Feature 1 has been reset, \n" "feature 2 has been feature 1" msgstr "" +"Funkcja 1 została zresetowana,\n" +"funkcja 2 została funkcją 1" msgid "Warning:please select Plane's feature." -msgstr "" +msgstr "Uwaga: proszę wybrać funkcję płaszczyzny." msgid "Warning:please select Point's or Circle's feature." -msgstr "" +msgstr "Uwaga: wybierz funkcję Punkt lub Okrąg." msgid "Warning:please select two different mesh." -msgstr "" +msgstr "Uwaga: proszę wybrać dwie różne siatki." msgid "Copy to clipboard" msgstr "Kopiuj do schowka" @@ -1393,25 +1401,25 @@ msgid "Distance XYZ" msgstr "Odległość XYZ" msgid "Parallel" -msgstr "" +msgstr "Równolegle" msgid "Center coincidence" -msgstr "" +msgstr "Koincydencja centralna" msgid "Featue 1" -msgstr "" +msgstr "Funkcja 1" msgid "Reverse rotation" -msgstr "" +msgstr "Rotacja wsteczna" msgid "Rotate around center:" -msgstr "" +msgstr "Obrót względem środka:" msgid "Parallel distance:" msgstr "" msgid "Flip by Face 2" -msgstr "" +msgstr "Obróć względem 2 powierzchni" msgid "Ctrl+" msgstr "Ctrl+" @@ -2562,8 +2570,8 @@ msgid "" "Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically " "load or unload filaments." msgstr "" -"Wybierz gniazdo AMS, a następnie naciśnij przycisk \"Ładuj\" lub " -"\"Rozładuj\" ,aby automatycznie załadować lub wyładować filamenty." +"Wybierz gniazdo AMS, a następnie naciśnij przycisk \"Ładuj\" lub \"Rozładuj" +"\" ,aby automatycznie załadować lub wyładować filamenty." msgid "Edit" msgstr "Edytuj" @@ -3686,9 +3694,9 @@ msgstr "" #, 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" +"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 "" "Obecna temperatura komory jest wyższa niż bezpieczna temperatura dla " "filamentu, co może prowadzić do jego mięknięcia i zatykania. Maksymalna " @@ -4477,7 +4485,7 @@ msgstr "Objętość:" msgid "Size:" msgstr "Rozmiar:" -#, 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)." @@ -4904,7 +4912,7 @@ msgstr "Pokaż &nawisy" msgid "Show object overhang highlight in 3D scene" msgstr "Pokaż podświetlenie nawisów obiektów w scenie 3D" -msgid "Show Selected Outline (Experimental)" +msgid "Show Selected Outline (beta)" msgstr "Wyświetl zaznaczony kontur (eksperymentalne)" msgid "Show outline around selected object in 3D scene" @@ -5269,6 +5277,8 @@ msgid "" "Please check if the SD card is inserted into the printer.\n" "If it still cannot be read, you can try formatting the SD card." msgstr "" +"Sprawdź, czy karta SD jest włożona do drukarki.\n" +"Jeśli dalej jest problem z odczytem, spróbuj sformatować kartę SD." msgid "LAN Connection Failed (Failed to view sdcard)" msgstr "Połączenie LAN nieudane (Nie udało się wyświetlić zawartości karty SD)" @@ -7807,8 +7817,8 @@ 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 "" "Podczas nagrywania timelapse'a bez głowicy drukującej zaleca się dodanie " "\"Timelaps - Wieża Czyszcząca\" \n" @@ -7819,70 +7829,78 @@ msgid "" "A copy of the current system preset will be created, which will be detached " "from the system preset." msgstr "" +"Zostanie utworzona kopia obecnego zestawu ustawień i odłączona od ustawień " +"systemowych." msgid "" "The current custom preset will be detached from the parent system preset." msgstr "" +"Obecny niestandardowy zestaw ustawień zostanie odłączony od dziedziczącego " +"zestawu systemowego." msgid "Modifications to the current profile will be saved." -msgstr "" +msgstr "Modyfikacje zostaną zapisane na obecnym profilu." msgid "" "This action is not revertible.\n" "Do you want to proceed?" msgstr "" +"Tej akcji nie można cofnąć.\n" +"Czy chcesz kontynuować?" msgid "Detach preset" -msgstr "" +msgstr "Odłącz zestaw ustawień" msgid "This is a default preset." -msgstr "" +msgstr "To jest domyślny zestaw ustawień." msgid "This is a system preset." -msgstr "" +msgstr "To jest systemowy zestaw ustawień." msgid "Current preset is inherited from the default preset." -msgstr "" +msgstr "Obecny zestaw ustawień jest dziedziczony z zestawu domyślnego." msgid "Current preset is inherited from" -msgstr "" +msgstr "Obecny zestaw ustawień jest dziedziczony z" msgid "It can't be deleted or modified." -msgstr "" +msgstr "Nie można usunąć ani zmodyfikować." msgid "" "Any modifications should be saved as a new preset inherited from this one." msgstr "" +"Każda modyfikacja powinna zostać zapisana jako nowy zestaw ustawień " +"dziedziczony z obecnego." msgid "To do that please specify a new name for the preset." -msgstr "" +msgstr "Aby to zrobić, ustaw nową nazwę zestawu ustawień." msgid "Additional information:" -msgstr "" +msgstr "Dodatkowe informacje:" msgid "vendor" -msgstr "" +msgstr "dostawca" msgid "printer model" -msgstr "" +msgstr "model drukarki" msgid "default print profile" -msgstr "" +msgstr "domyślny profil druku" msgid "default filament profile" -msgstr "" +msgstr "domyślny profil filamentu" msgid "default SLA material profile" -msgstr "" +msgstr "domyślny profil materiału SLA" msgid "default SLA print profile" -msgstr "" +msgstr "domyślny profil druku SLA" msgid "full profile name" -msgstr "" +msgstr "pełna nazwa profilu" msgid "symbolic profile name" -msgstr "" +msgstr "skrócona nazwa profilu" msgid "Line width" msgstr "Szerokość linii" @@ -8167,10 +8185,10 @@ msgid "Toolchange parameters with multi extruder MM printers" msgstr "Parametry zmiany narzędzia w drukarkach wieloekstruzyjnych MM" msgid "Dependencies" -msgstr "" +msgstr "Zależności" msgid "Profile dependencies" -msgstr "" +msgstr "Zależności profilowe" msgid "Printable space" msgstr "Przestrzeń do druku" @@ -9887,8 +9905,8 @@ msgstr "" "Orca Slicer może przesyłać pliki G-code na hosta drukarki. To pole powinno " "zawierać nazwę hosta, adres IP lub URL hosta drukarki. Host drukowania za " "HAProxy z włączoną autoryzacją podstawową można uzyskać, wpisując nazwę " -"użytkownika i hasło w URL w następującym formacie: https://" -"username:password@your-octopi-address/" +"użytkownika i hasło w URL w następującym formacie: https://username:" +"password@your-octopi-address/" msgid "Device UI" msgstr "UI urządzenia" @@ -9973,10 +9991,10 @@ msgid "" msgstr "" "Unikaj ruchów nad obrysami-\n" "Maksymalna długość objazdu przy unikaniu przejeżdżania nad obrysami. Jeśli " -"objazd miałby wykroczyć poza tę wartość, funkcja \"unikaj ruchów nad " -"obrysami\" zostanie zignorowana dla tej ścieżki. Długość objazdu można " -"zdefiniować jako wartość absolutna lub obliczona procentowo (np. 50%) z " -"długości ruchu bezpośredniego." +"objazd miałby wykroczyć poza tę wartość, funkcja \"unikaj ruchów nad obrysami" +"\" zostanie zignorowana dla tej ścieżki. Długość objazdu można zdefiniować " +"jako wartość absolutna lub obliczona procentowo (np. 50%) z długości ruchu " +"bezpośredniego." msgid "mm or %" msgstr "mm lub %" @@ -10225,7 +10243,7 @@ msgstr "" msgid "Overhang cooling activation threshold" msgstr "" -#, c-format, boost-format +#, no-c-format, no-boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -10237,6 +10255,7 @@ msgstr "" msgid "External bridge infill direction" msgstr "" +#, no-c-format, no-boost-format msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for " @@ -10678,6 +10697,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" +"Wyrażenie logiczne (Boole'owskie) używające wartości konfiguracji aktywnego " +"profilu drukarki. Jeśli to wyrażenie jest prawdziwe to znaczy, że aktywny " +"profil jest kompatybilny z drukarką." msgid "Compatible process profiles" msgstr "Kompatybilne profile procesów" @@ -10690,6 +10712,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" +"Wyrażenie logiczne (Boole'owskie) używające wartości konfiguracji aktywnego " +"profilu druku. Jeśli to wyrażenie jest prawdziwe to znaczy, że aktywny " +"profil jest kompatybilny z aktywnym profilem druku." msgid "Print sequence, layer by layer or object by object" msgstr "Sekwencja druku, warstwa po warstwie lub obiekt po obiekcie" @@ -12032,8 +12057,8 @@ msgid "mm/s² or %" msgstr "mm/s² lub %" 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." +"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 "" "Przyspieszenie na rzadkim wypełnieniu. Jeśli wartość jest wyrażona w " "procentach (np. 100%), będzie obliczana na podstawie domyślnego " @@ -12145,10 +12170,10 @@ msgstr "Pełna prędkość wentylatora na warstwie" 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 "" "Prędkość wentylatora będzie stopniowo zwiększana liniowo od zera na warstwie " "\"close_fan_the_first_x_layers\" do maksymalnej na warstwie " @@ -13419,7 +13444,7 @@ msgstr "" "Pewna ilość materiału w ekstruderze jest cofana, aby zapobiec wyciekowi " "filamentu podczas długiego ruchu. Ustaw zero, aby zablokować retrakcje" -msgid "Long retraction when cut(experimental)" +msgid "Long retraction when cut(beta)" msgstr "Długość retrakcji przed odcięciem filamentu (eksperymentalna)" msgid "" @@ -14141,10 +14166,10 @@ msgid "" "triangle mesh slicing. The gap closing operation may reduce the final print " "resolution, therefore it is advisable to keep the value reasonably low." msgstr "" -"Szpary mniejsze niż dwukrotność wartości parametru \"promień zamykania " -"szpar\" zostaną zamknięte przy cięciu. Operacja zamykania szpar może " -"zmniejszyć finalną rozdzielczość wydruku, więc zalecane jest ustawienie tej " -"wartości na rozsądnie niskim poziomie." +"Szpary mniejsze niż dwukrotność wartości parametru \"promień zamykania szpar" +"\" zostaną zamknięte przy cięciu. Operacja zamykania szpar może zmniejszyć " +"finalną rozdzielczość wydruku, więc zalecane jest ustawienie tej wartości na " +"rozsądnie niskim poziomie." msgid "Slicing Mode" msgstr "Tryb cięcia" @@ -14574,8 +14599,8 @@ msgstr "Aktywuj kontrolę temperatury" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode" +"\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -14833,9 +14858,9 @@ 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 "" -"Extruder używany do drukowania obrysów wieży czyszczącej. Ustaw na " -"\"Domyślny\", aby użyć tego, który jest dostępny (preferowany jest ten, w " -"którym załadowany jest filament nierozpuszczalny)." +"Extruder używany do drukowania obrysów wieży czyszczącej. Ustaw na \"Domyślny" +"\", aby użyć tego, który jest dostępny (preferowany jest ten, w którym " +"załadowany jest filament nierozpuszczalny)." msgid "Purging volumes - load/unload volumes" msgstr "Objętości czyszczenia - objętości ładowania/rozładowania" @@ -14908,9 +14933,9 @@ msgid "Idle temperature" msgstr "Temperatura w bezczynności" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" "Temperatura dyszy, gdy narzędzie nie jest aktualnie używane w konfiguracjach " "wielonarzędziowych. Jest to używane tylko wtedy, gdy \"Zapobieganie " @@ -15627,8 +15652,8 @@ msgstr "Podpory: rozprzestrzeniaj gałęzie na warstwie %d" msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Nieznany format pliku. Plik wejściowy musi mieć " -"rozszerzenie .stl, .obj, .amf(.xml)." +"Nieznany format pliku. Plik wejściowy musi mieć rozszerzenie .stl, .obj, ." +"amf(.xml)." msgid "Loading of a model file failed." msgstr "Ładowanie pliku modelu nie powiodło się." @@ -15638,8 +15663,8 @@ msgstr "Dostarczony plik nie mógł być odczytany, ponieważ jest pusty" msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Nieznany format pliku. Plik wejściowy musi mieć rozszerzenie .3mf " -"lub .zip.amf." +"Nieznany format pliku. Plik wejściowy musi mieć rozszerzenie .3mf lub .zip." +"amf." msgid "Canceled" msgstr "Anulowano" @@ -16639,8 +16664,8 @@ msgstr "" "Czy chcesz go zastąpić?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Nazwa profilu zostanie zmieniona na \"Dostawca Typ Seria @nazwa drukarki, " @@ -18359,8 +18384,8 @@ msgstr "" #~ "(działają one jak rodzaj bariery).\n" #~ "\n" #~ "Nie spowoduje to również zmiany ustawień wentylatora w początkowym G-" -#~ "code, jeśli aktywowana jest opcja \"tylko niestandardowy początkowy G-" -#~ "code\".\n" +#~ "code, jeśli aktywowana jest opcja \"tylko niestandardowy początkowy G-code" +#~ "\".\n" #~ "\n" #~ "Ustaw 0, aby wyłączyć tę funkcję." @@ -18475,8 +18500,8 @@ msgstr "" #~ "\n" #~ "Jednakże w mocno pochylonych lub zakrzywionych modelach, zwłaszcza przy " #~ "niskiej gęstości struktury wypełnienia, może to prowadzić do wywijania " -#~ "się niewspieranej struktury wypełnienia, co powoduje efekt " -#~ "\"pillowing\".\n" +#~ "się niewspieranej struktury wypełnienia, co powoduje efekt \"pillowing" +#~ "\".\n" #~ "\n" #~ "Włączenie tej opcji spowoduje drukowanie wewnętrznej warstwy mostka nad " #~ "nieco niewspieraną wewnętrzną strukturą wypełnienia. Poniższe opcje " @@ -19843,8 +19868,8 @@ msgstr "" #~ "Elevation is too low for object. Use the \"Pad around object\" feature to " #~ "print the object without elevation." #~ msgstr "" -#~ "Podniesienie zbyt małe dla modelu. Użyj funkcji \"Podkładka wokół " -#~ "modelu\", aby wydrukować model bez podniesienia." +#~ "Podniesienie zbyt małe dla modelu. Użyj funkcji \"Podkładka wokół modelu" +#~ "\", aby wydrukować model bez podniesienia." #~ msgid "" #~ "The endings of the support pillars will be deployed on the gap between " @@ -20483,10 +20508,10 @@ msgstr "" #~ msgstr "Pliki certyfikatów (.crt, .pem)|.crt;.pem|Wszystkie pliki|." #~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" " -#~ "option.Some extruders work better with this option unchecked (absolute " -#~ "extrusion mode). Wipe tower is only compatible with relative mode. It is " -#~ "always enabled on BambuLab printers. Default is checked" +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unchecked (absolute extrusion " +#~ "mode). Wipe tower is only compatible with relative mode. It is always " +#~ "enabled on BambuLab printers. Default is checked" #~ msgstr "" #~ "Przy użyciu opcji \"label_objects\" zaleca się ekstruzję względną. " #~ "Niektóre ekstrudery działają lepiej, gdy ta opcja jest odznaczona (tryb " @@ -20802,11 +20827,11 @@ msgstr "" #~ msgstr "Poziom debugowania" #~ msgid "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " -#~ "5:trace\n" +#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +#~ "trace\n" #~ msgstr "" -#~ "Ustawia poziom logowania debugowania. 0:fatal, 1:error, 2:warning, " -#~ "3:info, 4:debug, 5:trace\n" +#~ "Ustawia poziom logowania debugowania. 0:fatal, 1:error, 2:warning, 3:" +#~ "info, 4:debug, 5:trace\n" #~ msgid "The selected preset: %1% is not found." #~ msgstr "Wybrana przędło: %1% nie została znaleziona." diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index 8d06c5d385..8b023117bb 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-19 19:44+0800\n" +"POT-Creation-Date: 2025-02-20 21:21+0800\n" "PO-Revision-Date: 2025-02-17 11:39-0300\n" "Last-Translator: Alexandre Folle de Menezes \n" "Language-Team: Portuguese, Brazilian\n" @@ -570,7 +570,8 @@ msgstr "Simplificar" msgid "Simplification is currently only allowed when a single part is selected" msgstr "" -"A simplificação só é permitida atualmente quando uma única peça está selecionada" +"A simplificação só é permitida atualmente quando uma única peça está " +"selecionada" msgid "Error" msgstr "Erro" @@ -1579,8 +1580,8 @@ msgid "" "You can keep the modified presets to the new project, discard or save " "changes as new presets." msgstr "" -"Você pode manter as predefinições modificadas no novo projeto, descartar ou salvar as " -"alterações como novas predefinições." +"Você pode manter as predefinições modificadas no novo projeto, descartar ou " +"salvar as alterações como novas predefinições." msgid "User logged out" msgstr "Usuário desconectado" @@ -1607,8 +1608,9 @@ 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 "" -"O número de predefinições de usuário em cache na nuvem excedeu o limite superior, " -"as predefinições de usuário recém-criados só podem ser usadas localmente." +"O número de predefinições de usuário em cache na nuvem excedeu o limite " +"superior, as predefinições de usuário recém-criados só podem ser usadas " +"localmente." msgid "Sync user presets" msgstr "Sincronizar predefinições de usuário" @@ -2767,8 +2769,8 @@ msgid "" "The SLA archive doesn't contain any presets. Please activate some SLA " "printer preset first before importing that SLA archive." msgstr "" -"O arquivo SLA não contém nenhuma predefinição. Por favor, ative algumas predefinições " -"de impressora SLA antes de importar esse arquivo SLA." +"O arquivo SLA não contém nenhuma predefinição. Por favor, ative algumas " +"predefinições de impressora SLA antes de importar esse arquivo SLA." msgid "Importing canceled." msgstr "Importação cancelada." @@ -2780,11 +2782,12 @@ msgid "" "The imported SLA archive did not contain any presets. The current SLA " "presets were used as fallback." msgstr "" -"O arquivo SLA importado não contém nenhuma predefinição. As predefinições SLA atuais " -"foram usadas como alternativa." +"O arquivo SLA importado não contém nenhuma predefinição. As predefinições " +"SLA atuais foram usadas como alternativa." msgid "You cannot load SLA project with a multi-part object on the bed" -msgstr "Você não pode carregar um projeto SLA com um objeto muilti-peças na mesa" +msgstr "" +"Você não pode carregar um projeto SLA com um objeto muilti-peças na mesa" msgid "Please check your object list before preset changing." msgstr "" @@ -3681,9 +3684,9 @@ msgstr "" #, 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" +"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 "" "A temperatura da câmara atual está mais alta do que a temperatura segura do " "material, pode resultar em amolecimento e entupimento do material. A " @@ -4476,7 +4479,7 @@ msgstr "Volume:" msgid "Size:" msgstr "Tamanho:" -#, 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)." @@ -4902,7 +4905,7 @@ msgstr "Mostrar &Saliência" msgid "Show object overhang highlight in 3D scene" msgstr "Mostrar destaque de saliência de objeto na cena 3D" -msgid "Show Selected Outline (Experimental)" +msgid "Show Selected Outline (beta)" msgstr "" msgid "Show outline around selected object in 3D scene" @@ -6053,8 +6056,8 @@ msgid "" "Sync filaments with AMS will drop all current selected filament presets and " "colors. Do you want to continue?" msgstr "" -"Sincronizar filamentos com AMS eliminará todas as predefinições de filamento e cores " -"selecionadas atualmente. Deseja continuar?" +"Sincronizar filamentos com AMS eliminará todas as predefinições de filamento " +"e cores selecionadas atualmente. Deseja continuar?" msgid "" "Already did a synchronization, do you want to sync only changes or resync " @@ -6077,9 +6080,9 @@ msgid "" "Orca Slicer or restart Orca Slicer to check if there is an update to system " "presets." msgstr "" -"Alguns filamentos desconhecidos foram mapeados para a predefinição genérica. Por favor, " -"atualize o Orca Slicer ou reinicie o Orca Slicer para verificar se há uma " -"atualização para as predefinições do sistema." +"Alguns filamentos desconhecidos foram mapeados para a predefinição genérica. " +"Por favor, atualize o Orca Slicer ou reinicie o Orca Slicer para verificar " +"se há uma atualização para as predefinições do sistema." #, boost-format msgid "Do you want to save changes to \"%1%\"?" @@ -6108,18 +6111,18 @@ msgid "" "clogged when printing this filament in a closed enclosure. Please open the " "front door and/or remove the upper glass." msgstr "" -"A temperatura atual da mesa aquecida está relativamente alta. O bico pode ficar " -"obstruído ao imprimir este filamento em um compartimento fechado. Por favor, abra a " -"porta frontal e/ou remova o vidro superior." +"A temperatura atual da mesa aquecida está relativamente alta. O bico pode " +"ficar obstruído ao imprimir este filamento em um compartimento fechado. Por " +"favor, abra a porta frontal e/ou remova o vidro superior." 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 "" -"A dureza do bico necessária para o filamento é maior do que a dureza padrão do bico " -"da impressora. Por favor substitua o bico endurecido ou o filamento, caso contrário " -"o bico será desgastado ou danificado." +"A dureza do bico necessária para o filamento é maior do que a dureza padrão " +"do bico da impressora. Por favor substitua o bico endurecido ou o filamento, " +"caso contrário o bico será desgastado ou danificado." msgid "" "Enabling traditional timelapse photography may cause surface imperfections. " @@ -6172,8 +6175,8 @@ msgstr "Por favor, corrija-os nas guias de parâmetros" msgid "The 3mf has following modified G-codes in filament or printer presets:" msgstr "" -"O 3mf possui os seguintes G-codes modificados em predefinições de filamento ou " -"impressora:" +"O 3mf possui os seguintes G-codes modificados em predefinições de filamento " +"ou impressora:" msgid "" "Please confirm that these modified G-codes are safe to prevent any damage to " @@ -6186,15 +6189,16 @@ msgid "Modified G-codes" msgstr "G-codes modificados" msgid "The 3mf has following customized filament or printer presets:" -msgstr "O 3mf possui as seguintes predefinições de filamento ou impressora " +msgstr "" +"O 3mf possui as seguintes predefinições de filamento ou impressora " "personalizadas:" msgid "" "Please confirm that the G-codes within these presets are safe to prevent any " "damage to the machine!" msgstr "" -"Por favor, confirme se os G-codes dentro dessas predefinições são seguros para evitar " -"qualquer dano à máquina!" +"Por favor, confirme se os G-codes dentro dessas predefinições são seguros " +"para evitar qualquer dano à máquina!" msgid "Customized Preset" msgstr "Predefinição Personalizada" @@ -6372,7 +6376,8 @@ msgstr "" "de Preparação" msgid "You can keep the modified presets to the new project or discard them" -msgstr "Você pode manter as predefinições modificadas no novo projeto ou descartá-las" +msgstr "" +"Você pode manter as predefinições modificadas no novo projeto ou descartá-las" msgid "Creating a new project" msgstr "Criando um novo projeto" @@ -6651,7 +6656,9 @@ msgid "Language selection" msgstr "Seleção de idioma" msgid "Switching application language while some presets are modified." -msgstr "Alternando idioma do aplicativo enquanto algumas predefinições são modificadas." +msgstr "" +"Alternando idioma do aplicativo enquanto algumas predefinições são " +"modificadas." msgid "Changing application language" msgstr "Alterando o idioma do aplicativo" @@ -6857,7 +6864,8 @@ msgstr "Rede" msgid "Auto sync user presets(Printer/Filament/Process)" msgstr "" -"Sincronização automática de predefinições do usuário(Impressora/Filamento/Processo)" +"Sincronização automática de predefinições do usuário(Impressora/Filamento/" +"Processo)" msgid "User Sync" msgstr "Sincronização do Usuário" @@ -6893,8 +6901,8 @@ msgstr "Associar arquivos .step/.stp ao OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .step files" msgstr "" -"Se ativado, define OrcaSlicer como aplicativo padrão para abrir " -"arquivos .step" +"Se ativado, define OrcaSlicer como aplicativo padrão para abrir arquivos ." +"step" msgid "Associate web links to OrcaSlicer" msgstr "Associar links da web ao OrcaSlicer" @@ -7198,7 +7206,8 @@ msgstr "A predefinição \"%1%\" já existe." #, boost-format msgid "Preset \"%1%\" already exists and is incompatible with current printer." -msgstr "A predefinição \"%1%\" já existe e é incompatível com a impressora atual." +msgstr "" +"A predefinição \"%1%\" já existe e é incompatível com a impressora atual." msgid "Please note that saving action will replace this preset" msgstr "Por favor, note que a ação de salvar substituirá esta predefinição" @@ -7219,7 +7228,8 @@ msgstr "A impressora \"%1%\" está selecionada com a predefinição \"%2%\"" #, boost-format msgid "Please choose an action with \"%1%\" preset after saving." -msgstr "Por favor, escolha uma ação com a predefinição \"%1%\" após o salvamento." +msgstr "" +"Por favor, escolha uma ação com a predefinição \"%1%\" após o salvamento." #, boost-format msgid "For \"%1%\", change \"%2%\" to \"%3%\" " @@ -7381,8 +7391,8 @@ msgid "" "The selected printer (%s) is incompatible with the chosen printer profile in " "the slicer (%s)." msgstr "" -"A impressora selecionada (%s) é incompatível com o perfil de impressora escolhido no " -"fatiador (%s)." +"A impressora selecionada (%s) é incompatível com o perfil de impressora " +"escolhido no fatiador (%s)." msgid "An SD card needs to be inserted to record timelapse." msgstr "Um cartão SD precisa ser inserido para gravar o timelapse." @@ -7508,7 +7518,8 @@ msgstr "" msgid "The selected printer is incompatible with the chosen printer presets." msgstr "" -"A impressora selecionada é incompatível com as predefinições de impressora escolhidas." +"A impressora selecionada é incompatível com as predefinições de impressora " +"escolhidas." msgid "An SD card needs to be inserted before send to printer SD card." msgstr "" @@ -7679,7 +7690,9 @@ msgid "Search in preset" msgstr "Pesquisar nas predefinições" msgid "Click to reset all settings to the last saved preset." -msgstr "Clique para redefinir todas as configurações para a última predefinição salva." +msgstr "" +"Clique para redefinir todas as configurações para a última predefinição " +"salva." msgid "" "Prime tower is required for smooth timelapse. There may be flaws on the " @@ -7802,25 +7815,26 @@ 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 "" -"Ao gravar um timelapse sem o hotend aparecer, é recomendável adicionar uma \"Torre de " -"Limpeza para Timelapse\" \n" -"clique com o botão direito na posição vazia da mesa e escolha \"Adicionar Primitivo\"-" -">\"Torre de Limpeza para Timelapse\"." +"Ao gravar um timelapse sem o hotend aparecer, é recomendável adicionar uma " +"\"Torre de Limpeza para Timelapse\" \n" +"clique com o botão direito na posição vazia da mesa e escolha \"Adicionar " +"Primitivo\"->\"Torre de Limpeza para Timelapse\"." msgid "" "A copy of the current system preset will be created, which will be detached " "from the system preset." msgstr "" -"Uma cópia da predefinição de sistema atual será criada, que será desanexada da predefinição " -"de sistema." +"Uma cópia da predefinição de sistema atual será criada, que será desanexada " +"da predefinição de sistema." msgid "" "The current custom preset will be detached from the parent system preset." msgstr "" -"A predefinição customizada atual será desanexada da predefinição de sistema pai." +"A predefinição customizada atual será desanexada da predefinição de sistema " +"pai." msgid "Modifications to the current profile will be saved." msgstr "Modificações ao perfil atual serão salvas." @@ -7852,10 +7866,12 @@ msgstr "Não pode ser excluído ou modificado." msgid "" "Any modifications should be saved as a new preset inherited from this one." -msgstr "Qualquer modificação deve ser salva como uma nova predefinição herdada deste." +msgstr "" +"Qualquer modificação deve ser salva como uma nova predefinição herdada deste." msgid "To do that please specify a new name for the preset." -msgstr "Para fazer isso, por favor especifique um novo nome para a predefinição." +msgstr "" +"Para fazer isso, por favor especifique um novo nome para a predefinição." msgid "Additional information:" msgstr "Informação adicional:" @@ -7925,10 +7941,10 @@ msgid "" "expressed as a percentage of line width. 0 speed means no slowing down for " "the overhang degree range and wall speed is used" msgstr "" -"Esta é a velocidade para vários degraus de saliência. Os degraus de saliência são " -"expressos como uma porcentagem da largura da linha. A velocidade 0 significa que não " -"há desaceleração para o intervalo de degraus de saliência e a velocidade do perímetro " -"é usada" +"Esta é a velocidade para vários degraus de saliência. Os degraus de " +"saliência são expressos como uma porcentagem da largura da linha. A " +"velocidade 0 significa que não há desaceleração para o intervalo de degraus " +"de saliência e a velocidade do perímetro é usada" msgid "Bridge" msgstr "Ponte" @@ -8019,7 +8035,8 @@ msgstr "Temperatura recomendada do bico" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "" -"Faixa de temperatura do bico recomendada para este filamento. 0 significa não definido" +"Faixa de temperatura do bico recomendada para este filamento. 0 significa " +"não definido" msgid "Flow ratio and Pressure Advance" msgstr "" @@ -8116,10 +8133,10 @@ msgid "" "maximum fan speed according to layer printing time" msgstr "" "A velocidade do ventilador de resfriamento da peça começará a funcionar na " -"velocidade mínima quando o tempo estimado da camada não for mais longo do que o " -"tempo da camada ajustado. Quando o tempo da camada for menor que o limiar, a " -"velocidade do ventilador é interpolada entre a velocidade mínima e máxima de acordo " -"com o tempo de impressão da camada" +"velocidade mínima quando o tempo estimado da camada não for mais longo do " +"que o tempo da camada ajustado. Quando o tempo da camada for menor que o " +"limiar, a velocidade do ventilador é interpolada entre a velocidade mínima e " +"máxima de acordo com o tempo de impressão da camada" msgid "Max fan speed threshold" msgstr "Limiar de velocidade máxima do ventilador" @@ -8247,7 +8264,7 @@ msgid "Single extruder multi-material setup" msgstr "Configuração de múltiplos materiais com um único extrusor" msgid "Number of extruders of the printer." -msgstr "" +msgstr "Número de extrusoras da impressora." msgid "" "Single Extruder Multi Material is selected, \n" @@ -8255,6 +8272,10 @@ msgid "" "Do you want to change the diameter for all extruders to first extruder " "nozzle diameter value?" msgstr "" +"A extrusora multi material é selecionada, \n" +"e todas as extrusoras devem ter o mesmo diâmetro.\n" +"Você quer mudar o diâmetro para todas as extrusoras ao primeiro valor do " +"diâmetro da ponteira da extrusora?" msgid "Nozzle diameter" msgstr "Diâmetro do bico" @@ -8300,11 +8321,13 @@ msgid "" "%d Filament Preset and %d Process Preset is attached to this printer. Those " "presets would be deleted if the printer is deleted." msgstr "" -"%d Predefinição de Filamento e %d Predefinição de Processo estão vinculados a esta " -"impressora. Essas predefinições serão excluídos se a impressora for deletada." +"%d Predefinição de Filamento e %d Predefinição de Processo estão vinculados " +"a esta impressora. Essas predefinições serão excluídos se a impressora for " +"deletada." msgid "Presets inherited by other presets can not be deleted!" -msgstr "As predefinições herdados por outras predefinições não podem ser excluídas!" +msgstr "" +"As predefinições herdados por outras predefinições não podem ser excluídas!" msgid "The following presets inherit this preset." msgid_plural "The following preset inherits this preset." @@ -8327,8 +8350,8 @@ msgid "" "please reset the filament information for that slot." msgstr "" "Tem certeza de que deseja excluir a predefinição selecionada?\n" -"Se a predefinição corresponde a um filamento atualmente em uso em sua impressora, " -"redefina as informações do filamento para esse slot." +"Se a predefinição corresponde a um filamento atualmente em uso em sua " +"impressora, redefina as informações do filamento para esse slot." #, boost-format msgid "Are you sure to %1% the selected preset?" @@ -8390,7 +8413,8 @@ msgid "Keep the selected options." msgstr "Manter as opções selecionadas." msgid "Transfer the selected options to the newly selected preset." -msgstr "Transferir as opções selecionadas para a predefinição recém-selecionada." +msgstr "" +"Transferir as opções selecionadas para a predefinição recém-selecionada." #, boost-format msgid "" @@ -8417,16 +8441,16 @@ msgid "" "Preset \"%1%\" is not compatible with the new printer profile and it " "contains the following unsaved changes:" msgstr "" -"A predefinição \"%1%\" não é compatível com o novo perfil de impressora e contém as " -"seguintes alterações não salvas:" +"A predefinição \"%1%\" não é compatível com o novo perfil de impressora e " +"contém as seguintes alterações não salvas:" #, boost-format msgid "" "Preset \"%1%\" is not compatible with the new process profile and it " "contains the following unsaved changes:" msgstr "" -"A predefinição \"%1%\" não é compatível com o novo perfil de processo e contém as " -"seguintes alterações não salvas:" +"A predefinição \"%1%\" não é compatível com o novo perfil de processo e " +"contém as seguintes alterações não salvas:" #, boost-format msgid "You have changed some settings of preset \"%1%\". " @@ -8445,8 +8469,8 @@ msgid "" "transfer the values you have modified to the new preset." msgstr "" "\n" -"Você pode salvar ou descartar os valores de predefinição que você modificou, ou " -"escolher transferir os valores modificados para a nova predefinição." +"Você pode salvar ou descartar os valores de predefinição que você modificou, " +"ou escolher transferir os valores modificados para a nova predefinição." msgid "You have previously modified your settings." msgstr "Você modificou suas configurações anteriormente." @@ -8457,8 +8481,8 @@ msgid "" "the modified values to the new project" msgstr "" "\n" -"Você pode descartar os valores de predefinição que você modificou, ou escolher " -"transferir os valores modificados para o novo projeto" +"Você pode descartar os valores de predefinição que você modificou, ou " +"escolher transferir os valores modificados para o novo projeto" msgid "Extruders count" msgstr "Número de extrusoras" @@ -8485,9 +8509,10 @@ msgid "" "Note: New modified presets will be selected in settings tabs after close " "this dialog." msgstr "" -"Transfira as opções selecionadas da predefinição da esquerda para o da direita.\n" -"Nota: Novas predefinições modificados serão selecionados nas guias de configurações " -"após fechar este diálogo." +"Transfira as opções selecionadas da predefinição da esquerda para o da " +"direita.\n" +"Nota: Novas predefinições modificados serão selecionados nas guias de " +"configurações após fechar este diálogo." msgid "Transfer values from left to right" msgstr "Transferir valores da esquerda para a direita" @@ -8496,8 +8521,8 @@ msgid "" "If enabled, this dialog can be used for transfer selected values from left " "to right preset." msgstr "" -"Se ativo, este diálogo pode ser usado para transferir valores selecionados da " -"predefinição da esquerda para a da direita." +"Se ativo, este diálogo pode ser usado para transferir valores selecionados " +"da predefinição da esquerda para a da direita." msgid "Add File" msgstr "Adicionar arquivo" @@ -9301,6 +9326,8 @@ msgid "" "Your print is very close to the priming regions. Make sure there is no " "collision." msgstr "" +"Sua impressão está muito próxima das regiões de preparação. Certifique-se de " +"que não haverá colisão." msgid "" "Failed to generate gcode for invalid custom G-code.\n" @@ -9496,8 +9523,8 @@ msgid "" "during printing" msgstr "" "Não é possível imprimir juntos vários filamentos que têm grande diferença de " -"temperatura. Caso contrário, o extrusor e bico podem ficar bloqueados ou danificados " -"durante a impressão" +"temperatura. Caso contrário, o extrusor e bico podem ficar bloqueados ou " +"danificados durante a impressão" msgid "No extrusions under current settings." msgstr "Nenhuma extrusão com as configurações atuais." @@ -9556,9 +9583,9 @@ msgid "" "well when the prime tower is enabled. It's very experimental, so please " "proceed with caution." msgstr "" -"Diferentes diâmetros de bico e diferentes diâmetros de filamento podem não funcionar " -"bem quando a torre principal estiver habilitada. É muito experimental, então prossiga " -"com cautela." +"Diferentes diâmetros de bico e diferentes diâmetros de filamento podem não " +"funcionar bem quando a torre principal estiver habilitada. É muito " +"experimental, então prossiga com cautela." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -10133,9 +10160,9 @@ msgid "" "reduce warping." msgstr "" "Habilite esta opção para permitir o ajuste da velocidade do ventilador de " -"resfriamento da peça especificamente para saliências, pontes internas e externas. " -"Definir a velocidade do ventilador especificamente para esses recursos pode " -"melhorar a qualidade geral da impressão e reduzir a deformação." +"resfriamento da peça especificamente para saliências, pontes internas e " +"externas. Definir a velocidade do ventilador especificamente para esses " +"recursos pode melhorar a qualidade geral da impressão e reduzir a deformação." msgid "Overhangs and external bridges fan speed" msgstr "Velocidade do ventilador para saliências e pontes externas" @@ -10151,20 +10178,21 @@ msgid "" "speed threshold set above. It is also adjusted upwards up to the maximum fan " "speed threshold when the minimum layer time threshold is not met." msgstr "" -"Use esta parte da velocidade do ventilador de resfriamento ao imprimir pontes ou " -"paredes salientes com um limite de saliência que exceda o valor definido no parâmetro " -"'Limiar de resfriamento de saliências' acima. Aumentar o resfriamento especificamente " -"para saliências e pontes pode melhorar a qualidade geral de impressão desses recursos.\n" +"Use esta parte da velocidade do ventilador de resfriamento ao imprimir " +"pontes ou paredes salientes com um limite de saliência que exceda o valor " +"definido no parâmetro 'Limiar de resfriamento de saliências' acima. Aumentar " +"o resfriamento especificamente para saliências e pontes pode melhorar a " +"qualidade geral de impressão desses recursos.\n" "\n" -"Observe que esta velocidade do ventilador é fixada na extremidade inferior pelo limiar " -"mínimo de velocidade do ventilador definido acima. Ela também é ajustada para cima até " -"o limiar máximo de velocidade do ventilador quando o limiar mínimo de tempo da camada " -"não é atingido." +"Observe que esta velocidade do ventilador é fixada na extremidade inferior " +"pelo limiar mínimo de velocidade do ventilador definido acima. Ela também é " +"ajustada para cima até o limiar máximo de velocidade do ventilador quando o " +"limiar mínimo de tempo da camada não é atingido." msgid "Overhang cooling activation threshold" msgstr "Limiar de ativação de resfriamento de saliência" -#, c-format, boost-format +#, no-c-format, no-boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -10172,16 +10200,17 @@ msgid "" "by the layer beneath it. Setting this value to 0% forces the cooling fan to " "run for all outer walls, regardless of the overhang degree." msgstr "" -"Quando a saliência excede esse limiar especificado, força o ventilador de resfriamento " -"a funcionar na 'Velocidade da ventoinha de saliência' definida abaixo. Esse limiar é " -"expresso como uma porcentagem, indicando a parte da largura de cada linha que não é " -"suportada pela camada abaixo dela. Definir esse valor como 0% força o ventilador de " -"resfriamento a funcionar para todas as paredes externas, independentemente do grau de " -"saliência." +"Quando a saliência excede esse limiar especificado, força o ventilador de " +"resfriamento a funcionar na 'Velocidade da ventoinha de saliência' definida " +"abaixo. Esse limiar é expresso como uma porcentagem, indicando a parte da " +"largura de cada linha que não é suportada pela camada abaixo dela. Definir " +"esse valor como 0% força o ventilador de resfriamento a funcionar para todas " +"as paredes externas, independentemente do grau de saliência." msgid "External bridge infill direction" msgstr "" +#, no-c-format, no-boost-format msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for " @@ -10335,8 +10364,8 @@ msgid "" "Create additional perimeter paths over steep overhangs and areas where " "bridges cannot be anchored. " msgstr "" -"Crie caminhos de perímetro adicionais em saliências íngremes e áreas onde pontes " -"não podem ser ancoradas. " +"Crie caminhos de perímetro adicionais em saliências íngremes e áreas onde " +"pontes não podem ser ancoradas. " msgid "Reverse on even" msgstr "" @@ -10352,12 +10381,12 @@ msgid "" "This setting can also help reduce part warping due to the reduction of " "stresses in the part walls." msgstr "" -"Extrusar perímetros que tenham uma parte sobre uma saliência na direção reversa em " -"camadas uniformes. Esse padrão alternado pode melhorar drasticamente saliências " -"íngremes.\n" +"Extrusar perímetros que tenham uma parte sobre uma saliência na direção " +"reversa em camadas uniformes. Esse padrão alternado pode melhorar " +"drasticamente saliências íngremes.\n" "\n" -"Essa configuração também pode ajudar a reduzir a deformação das peças devido à redução " -"de tensões nas paredes das peças." +"Essa configuração também pode ajudar a reduzir a deformação das peças devido " +"à redução de tensões nas paredes das peças." msgid "Reverse only internal perimeters" msgstr "Inverter apenas os perímetros internos" @@ -10378,16 +10407,17 @@ msgid "" msgstr "" "Aplique a lógica de perímetros reversos somente em perímetros internos.\n" "\n" -"Esta configuração reduz muito as tensões das peças, pois elas agora são distribuídas " -"em direções alternadas. Isso deve reduzir a deformação das peças, mantendo também a " -"qualidade da parede externa. Este recurso pode ser muito útil para materiais propensos " -"à deformação, como ABS/ASA, e também para filamentos elásticos, como TPU e Silk PLA. " -"Também pode ajudar a reduzir a deformação em regiões flutuantes sobre suportes.\n" +"Esta configuração reduz muito as tensões das peças, pois elas agora são " +"distribuídas em direções alternadas. Isso deve reduzir a deformação das " +"peças, mantendo também a qualidade da parede externa. Este recurso pode ser " +"muito útil para materiais propensos à deformação, como ABS/ASA, e também " +"para filamentos elásticos, como TPU e Silk PLA. Também pode ajudar a reduzir " +"a deformação em regiões flutuantes sobre suportes.\n" "\n" -"Para que essa configuração seja mais eficaz, é recomendável definir o Limiar Reverso " -"como 0 para que todas as paredes internas sejam impressas em direções alternadas em " -"camadas uniformes, independentemente do grau de saliência." - +"Para que essa configuração seja mais eficaz, é recomendável definir o Limiar " +"Reverso como 0 para que todas as paredes internas sejam impressas em " +"direções alternadas em camadas uniformes, independentemente do grau de " +"saliência." msgid "Bridge counterbore holes" msgstr "Pontes para furos rebaixados" @@ -10426,11 +10456,11 @@ msgid "" "When Detect overhang wall is not enabled, this option is ignored and " "reversal happens on every even layers regardless." msgstr "" -"Número de mm que a saliência precisa ter para que a reversão seja considerada útil. " -"Pode ser uma % da largura do perímetro.\n" +"Número de mm que a saliência precisa ter para que a reversão seja " +"considerada útil. Pode ser uma % da largura do perímetro.\n" "O valor 0 permite a reversão em todas as camadas pares, sempre.\n" -"Quando Detectar parede saliente não está habilitado, esta opção é ignorada e a " -"reversão acontece em todas as camadas pares, sempre." +"Quando Detectar parede saliente não está habilitado, esta opção é ignorada e " +"a reversão acontece em todas as camadas pares, sempre." msgid "Classic mode" msgstr "Modo clássico" @@ -10443,8 +10473,8 @@ msgstr "Reduzir velocidade em saliências" msgid "Enable this option to slow printing down for different overhang degree" msgstr "" -"Ative esta opção para diminuir a velocidade de impressão para diferentes de degraus " -"de saliência" +"Ative esta opção para diminuir a velocidade de impressão para diferentes de " +"degraus de saliência" msgid "Slow down for curled perimeters" msgstr "Reduzir vel. para perímetros encurvados" @@ -10570,9 +10600,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" -"Uma expressão booleana usando os valores de configuração de um perfil de impressora " -"ativo. Se essa expressão for avaliada como true, esse perfil será considerado compatível " -"com o perfil de impressora ativo." +"Uma expressão booleana usando os valores de configuração de um perfil de " +"impressora ativo. Se essa expressão for avaliada como true, esse perfil será " +"considerado compatível com o perfil de impressora ativo." msgid "Compatible process profiles" msgstr "Perfis de processo compatíveis" @@ -10585,9 +10615,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" -"Uma expressão booleana usando os valores de configuração de um perfil de impressão " -"ativo. Se essa expressão for avaliada como true, esse perfil será considerado compatível " -"com o perfil de impressão ativo." +"Uma expressão booleana usando os valores de configuração de um perfil de " +"impressão ativo. Se essa expressão for avaliada como true, esse perfil será " +"considerado compatível com o perfil de impressão ativo." msgid "Print sequence, layer by layer or object by object" msgstr "Sequência de impressão, camada por camada ou objeto por objeto" @@ -10616,10 +10646,11 @@ msgid "" "that layer can be cooled for longer time. This can improve the cooling " "quality for needle and small details" msgstr "" -"Ative esta opção para diminuir a velocidade de impressão para que o tempo da camada " -"final não seja menor do que o limiar de tempo da camada em \"Limiar de velocidade " -"máxima do ventilador\", para que a camada possa ser resfriada por mais tempo. Isso " -"pode melhorar a qualidade de resfriamento para detalhes pequenos" +"Ative esta opção para diminuir a velocidade de impressão para que o tempo da " +"camada final não seja menor do que o limiar de tempo da camada em \"Limiar " +"de velocidade máxima do ventilador\", para que a camada possa ser resfriada " +"por mais tempo. Isso pode melhorar a qualidade de resfriamento para detalhes " +"pequenos" msgid "Normal printing" msgstr "Impressão normal" @@ -10708,8 +10739,9 @@ msgid "" "have this feature turned on. However, consider turning it off if you are " "using large nozzles." msgstr "" -"Se ativado, serão usadas pontes internas grossas. Geralmente é recomendado ter este " -"recurso ativado. No entanto, considere desativá-lo se estiver usando bicos grandes." +"Se ativado, serão usadas pontes internas grossas. Geralmente é recomendado " +"ter este recurso ativado. No entanto, considere desativá-lo se estiver " +"usando bicos grandes." msgid "Extra bridge layers (beta)" msgstr "Camadas extra de ponte (beta)" @@ -10947,7 +10979,8 @@ msgstr "Limiar de pequenos perímetros" msgid "" "This sets the threshold for small perimeter length. Default threshold is 0mm" msgstr "" -"Isso define o limiar para o comprimento do perímetro pequeno. O limiar padrão é 0mm" +"Isso define o limiar para o comprimento do perímetro pequeno. O limiar " +"padrão é 0mm" msgid "Walls printing order" msgstr "Ordem de impressão dos perímetros" @@ -10984,14 +11017,15 @@ msgstr "" "ligeiramente reduzida, pois o perímetro externo é deformado ao ser esmagado " "pelo perímetro interno.\n" "\n" -"Use Interior/Exterior/Interior para o melhor acabamento superficial externo e " -"precisão dimensional, pois o perímetro externo é impresso sem interrupções a partir " -"de um perímetro interno. No entanto, o desempenho da saliência será reduzido, pois " -"não há perímetro interno para imprimir o perímetro externo. Esta opção requer um " -"mínimo de 3 perímetros para ser eficaz, pois imprime os perímetros internos a partir " -"do terceiro perímetro em diante primeiro, depois o perímetro externo e, por fim, o " -"primeiro perímetro interno. Esta opção é recomendada em relação à opção Exterior/" -"Interior na maioria dos casos. \n" +"Use Interior/Exterior/Interior para o melhor acabamento superficial externo " +"e precisão dimensional, pois o perímetro externo é impresso sem interrupções " +"a partir de um perímetro interno. No entanto, o desempenho da saliência será " +"reduzido, pois não há perímetro interno para imprimir o perímetro externo. " +"Esta opção requer um mínimo de 3 perímetros para ser eficaz, pois imprime os " +"perímetros internos a partir do terceiro perímetro em diante primeiro, " +"depois o perímetro externo e, por fim, o primeiro perímetro interno. Esta " +"opção é recomendada em relação à opção Exterior/Interior na maioria dos " +"casos. \n" "\n" "Use Exterior/Interior para obter os mesmos benefícios de qualidade de parede " "externa e precisão dimensional da opção Interior/Exterior/Interior. No " @@ -11026,11 +11060,11 @@ msgstr "" "as paredes são impressas primeiro, o que funciona melhor na maioria dos " "casos.\n" "\n" -"Imprimir as paredes primeiro pode ajudar com saliências extremas, pois as paredes têm " -"o preenchimento vizinho para aderir. No entanto, o preenchimento empurrará levemente " -"as paredes impressas onde está conectado a elas, resultando em um acabamento de " -"superfície externa pior. Também pode fazer com que o preenchimento apareça através " -"das superfícies externas da peça." +"Imprimir as paredes primeiro pode ajudar com saliências extremas, pois as " +"paredes têm o preenchimento vizinho para aderir. No entanto, o preenchimento " +"empurrará levemente as paredes impressas onde está conectado a elas, " +"resultando em um acabamento de superfície externa pior. Também pode fazer " +"com que o preenchimento apareça através das superfícies externas da peça." msgid "Wall loop direction" msgstr "Direção da volta do perímetro" @@ -11059,8 +11093,8 @@ msgid "" "Distance of the nozzle tip to the lower rod. Used for collision avoidance in " "by-object printing." msgstr "" -"Distância da ponta do bico até a haste inferior. Usado para evitar colisões na " -"impressão por objeto." +"Distância da ponta do bico até a haste inferior. Usado para evitar colisões " +"na impressão por objeto." msgid "Height to lid" msgstr "Altura até a tampa" @@ -11270,10 +11304,10 @@ msgid "" "set accurately, it will cause uniformity issues on the external surfaces " "before and after overhangs.\n" msgstr "" -"Habilite o PA adaptável para saliências, bem como quando o fluxo muda dentro do mesmo " -"recurso. Esta é uma opção experimental, pois se o perfil do PA não for definido com " -"precisão, ele causará problemas de uniformidade nas superfícies externas antes e depois " -"das saliências.\n" +"Habilite o PA adaptável para saliências, bem como quando o fluxo muda dentro " +"do mesmo recurso. Esta é uma opção experimental, pois se o perfil do PA não " +"for definido com precisão, ele causará problemas de uniformidade nas " +"superfícies externas antes e depois das saliências.\n" msgid "Pressure advance for bridges" msgstr "Avanço de pressão para pontes" @@ -11463,8 +11497,8 @@ msgid "" "Speed used for unloading the filament on the wipe tower (does not affect " "initial part of unloading just after ramming)." msgstr "" -"Velocidade usada para descarregar o filamento na torre de limpeza (não afeta a " -"parte inicial do descarregamento logo após o moldeamento)." +"Velocidade usada para descarregar o filamento na torre de limpeza (não afeta " +"a parte inicial do descarregamento logo após o moldeamento)." msgid "Unloading speed at the start" msgstr "Velocidade de descarregamento no início" @@ -11530,12 +11564,13 @@ msgid "" "object, Orca Slicer will always prime this amount of material into the wipe " "tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" -"Após uma troca de ferramenta, a posição exata do filamento recém-carregado dentro do " -"bico pode não ser conhecida, e a pressão do filamento provavelmente ainda não está " -"estável. Antes de purgar a cabeça de impressão em um preenchimento ou em um objeto de " -"sacrifício, o Orca Slicer sempre preparará essa quantidade de material na torre de " -"limpeza para produzir extrusões sucessivas de preenchimento ou de objeto de sacrifício " -"de forma confiável." +"Após uma troca de ferramenta, a posição exata do filamento recém-carregado " +"dentro do bico pode não ser conhecida, e a pressão do filamento " +"provavelmente ainda não está estável. Antes de purgar a cabeça de impressão " +"em um preenchimento ou em um objeto de sacrifício, o Orca Slicer sempre " +"preparará essa quantidade de material na torre de limpeza para produzir " +"extrusões sucessivas de preenchimento ou de objeto de sacrifício de forma " +"confiável." msgid "Speed of the last cooling move" msgstr "Velocidade do último movimento de resfriamento" @@ -11564,11 +11599,11 @@ msgid "" "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 "" -"Realizar moldeamento usando impressora multi-extrusora (ou seja, quando a opção " -"'Único Extrusor Multimaterial' em Configurações de Impressora está desmarcada). " -"Quando ativo, uma pequena quantidade de filamento é rapidamente extrudado na " -"torre de limpeza logo antes da troca de ferramenta. Esta opção é usada apenas " -"quando a torre de limpeza está habilitada." +"Realizar moldeamento usando impressora multi-extrusora (ou seja, quando a " +"opção 'Único Extrusor Multimaterial' em Configurações de Impressora está " +"desmarcada). Quando ativo, uma pequena quantidade de filamento é rapidamente " +"extrudado na torre de limpeza logo antes da troca de ferramenta. Esta opção " +"é usada apenas quando a torre de limpeza está habilitada." msgid "Multi-tool ramming volume" msgstr "Volume de moldeamento multi-extrusora" @@ -11835,8 +11870,8 @@ msgid "mm/s² or %" msgstr "mm/s² ou %" 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." +"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 "" "Aceleração do preenchimento esparso. Se o valor for expresso como uma " "porcentagem (por exemplo, 100%), será calculado com base na aceleração " @@ -11946,10 +11981,10 @@ msgstr "Velocidade total do ventilador na camada" 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 "" "A velocidade do ventilador aumentará linearmente de zero na camada " "\"close_fan_the_first_x_layers\" para o máximo na camada " @@ -12092,10 +12127,10 @@ msgid "" "(in mm). This setting applies to top, bottom and solid infill and, if using " "the classic perimeter generator, to wall gap fill. " msgstr "" -"Não imprimir preenchimento de lacuna com um comprimento menor que o limiar especificado " -"(em mm). Esta configuração se aplica ao preenchimento superior, inferior e sólido e, " -"se estiver usando o gerador de perímetro clássico, ao preenchimento de lacuna de " -"parede." +"Não imprimir preenchimento de lacuna com um comprimento menor que o limiar " +"especificado (em mm). Esta configuração se aplica ao preenchimento superior, " +"inferior e sólido e, se estiver usando o gerador de perímetro clássico, ao " +"preenchimento de lacuna de parede." msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " @@ -12186,8 +12221,8 @@ msgid "" "The nozzle's hardness. Zero means no checking for nozzle's hardness during " "slicing." msgstr "" -"A dureza do bico. Zero significa que não há verificação da dureza do bico durante o " -"fatiamento." +"A dureza do bico. Zero significa que não há verificação da dureza do bico " +"durante o fatiamento." msgid "HRC" msgstr "HRC" @@ -12555,8 +12590,8 @@ msgid "" "The distance to keep from the edges. A value of 0 sets this to half of the " "nozzle diameter" msgstr "" -"A distância a ser mantida das bordas. Um valor de 0 define isso como metade do " -"diâmetro do bico" +"A distância a ser mantida das bordas. Um valor de 0 define isso como metade " +"do diâmetro do bico" msgid "Ironing speed" msgstr "Velocidade do passar ferro" @@ -12795,13 +12830,14 @@ msgstr "" "\n" "Um valor de 0 desativa o recurso.\n" "\n" -"Para uma impressora de acionamento direto de alta velocidade e alto fluxo (como a " -"Bambu lab ou Voron), esse valor geralmente não é necessário. No entanto, pode " -"fornecer alguns benefícios marginais em certos casos em que as velocidades das " -"características variam muito. Por exemplo, quando há desacelerações agressivas " -"devido a saliências. Nesses casos, um valor alto de cerca de 300-350mm3/s2 é " -"recomendado, pois isso permite apenas suavização suficiente para ajudar o Pressure " -"advance a alcançar uma transição de fluxo mais suave.\n" +"Para uma impressora de acionamento direto de alta velocidade e alto fluxo " +"(como a Bambu lab ou Voron), esse valor geralmente não é necessário. No " +"entanto, pode fornecer alguns benefícios marginais em certos casos em que as " +"velocidades das características variam muito. Por exemplo, quando há " +"desacelerações agressivas devido a saliências. Nesses casos, um valor alto " +"de cerca de 300-350mm3/s2 é recomendado, pois isso permite apenas suavização " +"suficiente para ajudar o Pressure advance a alcançar uma transição de fluxo " +"mais suave.\n" "\n" "Para impressoras mais lentas sem Pressure advance, o valor deve ser definido " "muito mais baixo. Um valor de 10-15mm3/s2 é um bom ponto de partida para " @@ -12837,10 +12873,10 @@ msgid "" "visible overhangs without impacting the print speed of features that will " "not be visible to the user." msgstr "" -"Aplica suavização de taxa de extrusão somente em perímetros externos e saliências. " -"Isso pode ajudar a reduzir artefatos devido a transições de velocidade bruscas em " -"saliências visíveis externamente sem impactar a velocidade de impressão de recursos " -"que não serão visíveis ao usuário." +"Aplica suavização de taxa de extrusão somente em perímetros externos e " +"saliências. Isso pode ajudar a reduzir artefatos devido a transições de " +"velocidade bruscas em saliências visíveis externamente sem impactar a " +"velocidade de impressão de recursos que não serão visíveis ao usuário." msgid "Minimum speed for part cooling fan" msgstr "Velocidade mínima para o ventilador de resfriamento da peça" @@ -13005,9 +13041,9 @@ msgid "" "printable.90° will not change the model at all and allow any overhang, while " "0 will replace all overhangs with conical material." msgstr "" -"Ângulo máximo da saliência permitido antes de fazer ângulos mais íngremes imprimíveis. " -"90° não vai fazer nenhuma mudança no modelo e vai permitir qualquer overhang. 0 vai " -"substituir todas as saliências por uma forma cônica." +"Ângulo máximo da saliência permitido antes de fazer ângulos mais íngremes " +"imprimíveis. 90° não vai fazer nenhuma mudança no modelo e vai permitir " +"qualquer overhang. 0 vai substituir todas as saliências por uma forma cônica." msgid "Make overhangs printable - Hole area" msgstr "Tornar saliências imprimíveis - Área do furo" @@ -13030,9 +13066,9 @@ msgid "" "Detect the overhang percentage relative to line width and use different " "speed to print. For 100%% overhang, bridge speed is used." msgstr "" -"Detecta a porcentagem relativa de saliência em relação a largura do perímetro e usa " -"uma velocidade diferente de impressão. Para saliências 100%%, a velocidade de ponte é " -"usada." +"Detecta a porcentagem relativa de saliência em relação a largura do " +"perímetro e usa uma velocidade diferente de impressão. Para saliências " +"100%%, a velocidade de ponte é usada." msgid "Filament to print walls" msgstr "Filamento para imprimir paredes" @@ -13153,8 +13189,8 @@ msgid "" "Only trigger retraction when the travel distance is longer than this " "threshold" msgstr "" -"Acionar a retração somente quando a distância da deslocamento for maior que este " -"limiar" +"Acionar a retração somente quando a distância da deslocamento for maior que " +"este limiar" msgid "Retract amount before wipe" msgstr "Quantidade de retração antes da limpeza" @@ -13186,11 +13222,11 @@ msgid "" "Some amount of material in extruder is pulled back to avoid ooze during long " "travel. Set zero to disable retraction" msgstr "" -"Alguma quantidade de material na extrusora é puxada para trás para evitar vazamento " -"durante viagens longas. Defina zero para desativar a retração" +"Alguma quantidade de material na extrusora é puxada para trás para evitar " +"vazamento durante viagens longas. Defina zero para desativar a retração" -msgid "Long retraction when cut(experimental)" -msgstr "Retração longa quando cortado(experimental)" +msgid "Long retraction when cut(beta)" +msgstr "Retração longa quando cortado(beta)" msgid "" "Experimental feature.Retracting and cutting off the filament at a longer " @@ -13421,8 +13457,8 @@ msgid "" "Apply scarf joints only to smooth perimeters where traditional seams do not " "conceal the seams at sharp corners effectively." msgstr "" -"Aplique juntas cachecol apenas em perímetros suaves onde costuras tradicionais não " -"escondem as costuras em cantos agudos de forma eficaz." +"Aplique juntas cachecol apenas em perímetros suaves onde costuras " +"tradicionais não escondem as costuras em cantos agudos de forma eficaz." msgid "Conditional angle threshold" msgstr "Limiar de ângulo condicional" @@ -13436,9 +13472,9 @@ msgid "" msgstr "" "Esta opção define o ângulo limiar para aplicar uma costura junta cachecol " "condicional.\n" -"Se o ângulo máximo dentro do loop do perímetro exceder esse valor (indicando a " -"ausência de cantos afiados), será usada uma costura junta cachecol. O valor padrão " -"é 155°." +"Se o ângulo máximo dentro do loop do perímetro exceder esse valor (indicando " +"a ausência de cantos afiados), será usada uma costura junta cachecol. O " +"valor padrão é 155°." msgid "Conditional overhang threshold" msgstr "Limiar de saliência condicional" @@ -13451,10 +13487,11 @@ msgid "" "at 40% of the external wall's width. Due to performance considerations, the " "degree of overhang is estimated." msgstr "" -"Esta opção determina o limiar de saliência para a aplicação de juntas cachecol. Se a " -"parte sem suporte do perímetro for inferior a esse limiar, as costuras junta cachecol " -"serão aplicadas. O limiar padrão é definido em 40% da largura do perímetro externo. " -"Devido a considerações de desempenho, o grau de saliência é estimado." +"Esta opção determina o limiar de saliência para a aplicação de juntas " +"cachecol. Se a parte sem suporte do perímetro for inferior a esse limiar, as " +"costuras junta cachecol serão aplicadas. O limiar padrão é definido em 40% " +"da largura do perímetro externo. Devido a considerações de desempenho, o " +"grau de saliência é estimado." msgid "Scarf joint speed" msgstr "Velocidade da junta cachecol" @@ -13469,15 +13506,15 @@ msgid "" "percentage (e.g., 80%), the speed is calculated based on the respective " "outer or inner wall speed. The default value is set to 100%." msgstr "" -"Esta opção define a velocidade de impressão para as juntas cachecol. É recomendável " -"imprimir as juntas cachecol em uma velocidade baixa (menor que 100 mm/s). Também é " -"aconselhável habilitar 'Suavização da taxa de extrusão' se a velocidade definida " -"variar significativamente da velocidade das paredes externas ou internas. Se a " -"velocidade especificada aqui for maior que a velocidade das paredes externas ou " -"internas, a impressora utilizará a mais lenta das duas velocidades. Quando " -"especificado como uma porcentagem (por exemplo, 80%), a velocidade é calculada com " -"base na velocidade do perímetro externo ou interna respectiva. O valor padrão é " -"definido como 100%." +"Esta opção define a velocidade de impressão para as juntas cachecol. É " +"recomendável imprimir as juntas cachecol em uma velocidade baixa (menor que " +"100 mm/s). Também é aconselhável habilitar 'Suavização da taxa de extrusão' " +"se a velocidade definida variar significativamente da velocidade das paredes " +"externas ou internas. Se a velocidade especificada aqui for maior que a " +"velocidade das paredes externas ou internas, a impressora utilizará a mais " +"lenta das duas velocidades. Quando especificado como uma porcentagem (por " +"exemplo, 80%), a velocidade é calculada com base na velocidade do perímetro " +"externo ou interna respectiva. O valor padrão é definido como 100%." msgid "Scarf joint flow ratio" msgstr "Fluxo da junta cachecol" @@ -13494,8 +13531,8 @@ msgid "" "current layer height. The default value for this parameter is 0." msgstr "" "Altura inicial do cachecol.\n" -"Esta quantidade pode ser especificada em milímetros ou como uma porcentagem da " -"altura atual da camada. O valor padrão para este parâmetro é 0." +"Esta quantidade pode ser especificada em milímetros ou como uma porcentagem " +"da altura atual da camada. O valor padrão para este parâmetro é 0." msgid "Scarf around entire wall" msgstr "Cachecol em torno de todo perímetro" @@ -13510,8 +13547,8 @@ msgid "" "Length of the scarf. Setting this parameter to zero effectively disables the " "scarf." msgstr "" -"Comprimento do cachecol. Definir este parâmetro como zero efetivamente desabilita o " -"cachecol." +"Comprimento do cachecol. Definir este parâmetro como zero efetivamente " +"desabilita o cachecol." msgid "Scarf steps" msgstr "Degraus do cachecol" @@ -13683,11 +13720,11 @@ msgid "" "Sparse infill area which is smaller than threshold value is replaced by " "internal solid infill" msgstr "" -"A área de preenchimento esparso que é menor que o valor limiar é substituída por " -"preenchimento sólido interno" +"A área de preenchimento esparso que é menor que o valor limiar é substituída " +"por preenchimento sólido interno" msgid "Solid infill" -msgstr "" +msgstr "Preenchimento sólido" msgid "Filament to print solid infill" msgstr "" @@ -13847,10 +13884,10 @@ msgid "" "print the wipe tower. User is responsible for ensuring there is no collision " "with the print." msgstr "" -"Se ativado, a torre de limpeza não será impressa em camadas sem troca de ferramenta. " -"Em camadas com uma troca de ferramenta, a extrusora viajará para baixo para imprimir " -"a torre de limpeza. O usuário é responsável por garantir que não haja colisão com a " -"impressão." +"Se ativado, a torre de limpeza não será impressa em camadas sem troca de " +"ferramenta. Em camadas com uma troca de ferramenta, a extrusora viajará para " +"baixo para imprimir a torre de limpeza. O usuário é responsável por garantir " +"que não haja colisão com a impressão." msgid "Prime all printing extruders" msgstr "Primer todos os extrusores de impressão" @@ -13942,7 +13979,9 @@ msgid "Pattern angle" msgstr "Ângulo de padrão" msgid "Use this setting to rotate the support pattern on the horizontal plane." -msgstr "Use esta configuração para rotacionar o padrão de suporte no plano horizontal." +msgstr "" +"Use esta configuração para rotacionar o padrão de suporte no plano " +"horizontal." msgid "On build plate only" msgstr "Somente na mesa" @@ -14105,12 +14144,14 @@ msgid "" "style will create similar structure to normal support under large flat " "overhangs." msgstr "" -"Estilo e forma do suporte. Para suporte normal, projetar os suportes em uma grade " -"regular criará suportes mais estáveis (padrão), enquanto torres de suporte ajustadas " -"economizarão material e reduzirão a cicatrização do objeto.\n" -"Para suporte de árvore, estilo fino e orgânico mesclarão os galhos de forma mais " -"agressiva e economizarão muito material (orgânico padrão), enquanto o estilo híbrido " -"criará uma estrutura semelhante ao suporte normal em grandes saliências planas." +"Estilo e forma do suporte. Para suporte normal, projetar os suportes em uma " +"grade regular criará suportes mais estáveis (padrão), enquanto torres de " +"suporte ajustadas economizarão material e reduzirão a cicatrização do " +"objeto.\n" +"Para suporte de árvore, estilo fino e orgânico mesclarão os galhos de forma " +"mais agressiva e economizarão muito material (orgânico padrão), enquanto o " +"estilo híbrido criará uma estrutura semelhante ao suporte normal em grandes " +"saliências planas." msgid "Default (Grid/Organic" msgstr "" @@ -14149,8 +14190,8 @@ msgid "" "Support will be generated for overhangs whose slope angle is below the " "threshold." msgstr "" -"O suporte será gerado para saliências cujo ângulo de inclinação estiver abaixo do " -"limiar." +"O suporte será gerado para saliências cujo ângulo de inclinação estiver " +"abaixo do limiar." msgid "Threshold overlap" msgstr "Sobreposição de limiar" @@ -14160,9 +14201,9 @@ msgid "" "overlap is below the threshold. The smaller this value is, the steeper the " "overhang that can be printed without support." msgstr "" -"Se o ângulo limiar for zero, o suporte será gerado para saliências cuja sobreposição " -"estiver abaixo do limiar. Quanto menor for esse valor, mais íngreme será a saliência " -"que pode ser impressa sem suporte." +"Se o ângulo limiar for zero, o suporte será gerado para saliências cuja " +"sobreposição estiver abaixo do limiar. Quanto menor for esse valor, mais " +"íngreme será a saliência que pode ser impressa sem suporte." msgid "Tree support branch angle" msgstr "Ângulo da ramificação da árvore de suporte" @@ -14172,9 +14213,10 @@ msgid "" "tree support allowed to make.If the angle is increased, the branches can be " "printed more horizontally, allowing them to reach farther." msgstr "" -"Esta configuração determina o ângulo máximo de saliência que as ramificações de " -"suporte de árvore podem fazer. Se o ângulo for aumentado, as ramificações podem ser " -"impressas de forma mais horizontal, permitindo que alcancem mais longe." +"Esta configuração determina o ângulo máximo de saliência que as ramificações " +"de suporte de árvore podem fazer. Se o ângulo for aumentado, as ramificações " +"podem ser impressas de forma mais horizontal, permitindo que alcancem mais " +"longe." msgid "Preferred Branch Angle" msgstr "Ângulo preferido da ramificação" @@ -14211,10 +14253,10 @@ msgid "" "needed." msgstr "" "Ajusta a densidade da estrutura de suporte usada para gerar as pontas das " -"ramificações. Um valor mais alto resulta em saliências melhores, mas os suportes são " -"mais difíceis de remover, portanto, é recomendável ativar as interfaces superiores " -"de suporte em vez de um valor de densidade de ramo alto se forem necessárias " -"interfaces densas." +"ramificações. Um valor mais alto resulta em saliências melhores, mas os " +"suportes são mais difíceis de remover, portanto, é recomendável ativar as " +"interfaces superiores de suporte em vez de um valor de densidade de ramo " +"alto se forem necessárias interfaces densas." msgid "Adaptive layer height" msgstr "Altura de camada adaptativa" @@ -14305,8 +14347,8 @@ msgstr "Ativar controle de temperatura" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode" +"\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -14488,8 +14530,8 @@ msgid "" "Angle at the apex of the cone that is used to stabilize the wipe tower. " "Larger angle means wider base." msgstr "" -"Ângulo no ápice do cone usado para estabilizar a torre de limpeza. Um ângulo maior " -"significa uma base mais larga." +"Ângulo no ápice do cone usado para estabilizar a torre de limpeza. Um ângulo " +"maior significa uma base mais larga." msgid "Maximum wipe tower print speed" msgstr "Velocidade máxima de impressão da torre de limpeza" @@ -14515,32 +14557,32 @@ msgid "" "For the wipe tower external perimeters the internal perimeter speed is used " "regardless of this setting." msgstr "" -"A velocidade máxima de impressão ao purgar na torre de limpeza e ao imprimir as " -"camadas esparsas da torre de limpeza. Ao purgar, se a velocidade do preenchimento " -"esparso ou a velocidade calculada a partir da velocidade volumétrica máxima do " -"filamento for menor, a menor será utilizada.\n" +"A velocidade máxima de impressão ao purgar na torre de limpeza e ao imprimir " +"as camadas esparsas da torre de limpeza. Ao purgar, se a velocidade do " +"preenchimento esparso ou a velocidade calculada a partir da velocidade " +"volumétrica máxima do filamento for menor, a menor será utilizada.\n" "\n" -"Ao imprimir as camadas esparsas, se a velocidade do perímetro interno ou a velocidade " -"calculada a partir da velocidade volumétrica máxima do filamento for menor, a menor " -"será utilizada.\n" +"Ao imprimir as camadas esparsas, se a velocidade do perímetro interno ou a " +"velocidade calculada a partir da velocidade volumétrica máxima do filamento " +"for menor, a menor será utilizada.\n" "\n" -"Aumentar essa velocidade pode afetar a estabilidade da torre, bem como aumentar a " -"força com que o bico colide com quaisquer bolhas que possam ter se formado na torre " -"de limpeza.\n" +"Aumentar essa velocidade pode afetar a estabilidade da torre, bem como " +"aumentar a força com que o bico colide com quaisquer bolhas que possam ter " +"se formado na torre de limpeza.\n" "\n" -"Antes de aumentar esse parâmetro além do padrão de 90mm/s, certifique-se de que sua " -"impressora pode realizar pontes de forma confiável nas velocidades aumentadas e que " -"o vazamento ao trocar a ferramenta está bem controlado.\n" +"Antes de aumentar esse parâmetro além do padrão de 90mm/s, certifique-se de " +"que sua impressora pode realizar pontes de forma confiável nas velocidades " +"aumentadas e que o vazamento ao trocar a ferramenta está bem controlado.\n" "\n" -"Para os perímetros externos da torre de limpeza, a velocidade do perímetro interno é " -"utilizada independentemente dessa configuração." +"Para os perímetros externos da torre de limpeza, a velocidade do perímetro " +"interno é utilizada independentemente dessa configuração." 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 "" -"Extrusor a ser usada ao imprimir o perímetro da torre de limpeza. Defina como 0 para " -"usar a disponível (não solúvel é preferido)." +"Extrusor a ser usada ao imprimir o perímetro da torre de limpeza. Defina " +"como 0 para usar a disponível (não solúvel é preferido)." msgid "Purging volumes - load/unload volumes" msgstr "Volumes de purga - volumes de carga/descarga" @@ -14550,9 +14592,9 @@ msgid "" "wipe tower. These values are used to simplify creation of the full purging " "volumes below." msgstr "" -"Este vetor salva os volumes necessários para mudar de/para cada ferramenta usada na " -"torre de limpeza. Esses valores são usados para simplificar a criação dos volumes de " -"purga completos abaixo." +"Este vetor salva os volumes necessários para mudar de/para cada ferramenta " +"usada na torre de limpeza. Esses valores são usados para simplificar a " +"criação dos volumes de purga completos abaixo." msgid "" "Purging after filament change will be done inside objects' infills. This may " @@ -14560,11 +14602,11 @@ msgid "" "printed with transparent filament, the mixed color infill will be seen " "outside. It will not take effect, unless the prime tower is enabled." msgstr "" -"A purga após a troca de filamento será feita dentro do preenchimento dos objetos. " -"Isso pode reduzir a quantidade de resíduos e diminuir o tempo de impressão. Se as " -"paredes forem impressas com filamento transparente, o preenchimento de cor mista " -"será visível do lado de fora. Isso não terá efeito, a menos que a torre de limpeza " -"esteja ativa." +"A purga após a troca de filamento será feita dentro do preenchimento dos " +"objetos. Isso pode reduzir a quantidade de resíduos e diminuir o tempo de " +"impressão. Se as paredes forem impressas com filamento transparente, o " +"preenchimento de cor mista será visível do lado de fora. Isso não terá " +"efeito, a menos que a torre de limpeza esteja ativa." msgid "" "Purging after filament change will be done inside objects' support. This may " @@ -14580,9 +14622,10 @@ msgid "" "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 "" -"Este objeto será usado para purgar o bico após uma troca de filamento para economizar " -"filamento e diminuir o tempo de impressão. As cores dos objetos serão misturadas como " -"resultado. Isso não terá efeito, a menos que a torre de limpeza esteja ativa." +"Este objeto será usado para purgar o bico após uma troca de filamento para " +"economizar filamento e diminuir o tempo de impressão. As cores dos objetos " +"serão misturadas como resultado. Isso não terá efeito, a menos que a torre " +"de limpeza esteja ativa." msgid "Maximal bridging distance" msgstr "Distância máxima de ponte" @@ -14604,21 +14647,22 @@ msgid "" "purging lines thicker or narrower than they normally would be. The spacing " "is adjusted automatically." msgstr "" -"Fluxo extra usado para as linhas de purga na torre de limpeza. Isso torna as linhas de " -"purga mais grossas ou mais estreitas do que normalmente seriam. O espaçamento é " -"ajustado automaticamente." +"Fluxo extra usado para as linhas de purga na torre de limpeza. Isso torna as " +"linhas de purga mais grossas ou mais estreitas do que normalmente seriam. O " +"espaçamento é ajustado automaticamente." msgid "Idle temperature" msgstr "" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" -"Temperatura do bico quando a ferramenta não está sendo usada em configurações de " -"multiferramentas. Isso é usado apenas quando 'Prevenção de vazamento' está ativo em " -"Definições de Impressão. Defina como 0 para desabilitar." +"Temperatura do bico quando a ferramenta não está sendo usada em " +"configurações de multiferramentas. Isso é usado apenas quando 'Prevenção de " +"vazamento' está ativo em Definições de Impressão. Defina como 0 para " +"desabilitar." msgid "X-Y hole compensation" msgstr "Compensação XY de furos" @@ -14714,9 +14758,9 @@ msgid "" "printers. Default is checked" msgstr "" "A extrusão relativa é recomendada ao usar a opção \"label_objects\". Algumas " -"extrusoras funcionam melhor com esta opção desmarcada (modo de extrusão absoluta). " -"A torre de limpeza é compatível apenas com o modo relativo. É recomendado na maioria " -"das impressoras. O padrão é ativado" +"extrusoras funcionam melhor com esta opção desmarcada (modo de extrusão " +"absoluta). A torre de limpeza é compatível apenas com o modo relativo. É " +"recomendado na maioria das impressoras. O padrão é ativado" msgid "" "Classic wall generator produces walls with constant extrusion width and for " @@ -15177,8 +15221,8 @@ msgid "" "Names of the filament presets used for slicing. The variable is a vector " "containing one name for each extruder." msgstr "" -"Nomes das predefinições de filamento usadas para fatiar. A variável é um vetor " -"contendo um nome para cada extrusora." +"Nomes das predefinições de filamento usadas para fatiar. A variável é um " +"vetor contendo um nome para cada extrusora." msgid "Printer preset name" msgstr "Nome da predefinição de impressora" @@ -15324,8 +15368,8 @@ msgstr "Suporte: propagar ramificações na camada %d" msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Formato de arquivo desconhecido. O arquivo de entrada deve ter " -"extensão .stl, .obj, .amf(.xml)." +"Formato de arquivo desconhecido. O arquivo de entrada deve ter extensão ." +"stl, .obj, .amf(.xml)." msgid "Loading of a model file failed." msgstr "Falha ao carregar um arquivo de modelo." @@ -15523,7 +15567,9 @@ msgid "Flow rate calibration result has been saved to preset" msgstr "O resultado da calibração de fluxo foi salva na predefinição" msgid "Max volumetric speed calibration result has been saved to preset" -msgstr "O resultado da calibração de fluxo volumétrico máximo foi salvo na predefinição" +msgstr "" +"O resultado da calibração de fluxo volumétrico máximo foi salvo na " +"predefinição" msgid "When do you need Flow Dynamics Calibration" msgstr "Quando você precisa da Calibração de Dinâmica de Fluxo" @@ -16289,8 +16335,8 @@ msgstr "O fornecedor não pode ser um número. Por favor, insira novamente." msgid "" "You have not selected a printer or preset yet. Please select at least one." msgstr "" -"Você ainda não selecionou uma impressora ou predefinição. Por favor, selecione " -"pelo menos uma." +"Você ainda não selecionou uma impressora ou predefinição. Por favor, " +"selecione pelo menos uma." #, c-format, boost-format msgid "" @@ -16299,11 +16345,12 @@ msgid "" "name. Do you want to continue?" msgstr "" "O nome do Filamento %s que você criou já existe. \n" -"Se você continuar a criação, a predefinição criada será exibida com o seu nome " -"completo. Você quer continuar?" +"Se você continuar a criação, a predefinição criada será exibida com o seu " +"nome completo. Você quer continuar?" msgid "Some existing presets have failed to be created, as follows:\n" -msgstr "Algumas predefinições existentes falharam ao serem criadas, como segue:\n" +msgstr "" +"Algumas predefinições existentes falharam ao serem criadas, como segue:\n" msgid "" "\n" @@ -16313,14 +16360,14 @@ msgstr "" "Você deseja reescrevê-lo?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" -"Renomearíamos as predefinições como \"Fornecedor Tipo Serial @ impressora que você " -"selecionou\". \n" -"Para adicionar predefinição para mais impressoras, por favor vá para a seleção de " -"impressoras" +"Renomearíamos as predefinições como \"Fornecedor Tipo Serial @ impressora " +"que você selecionou\". \n" +"Para adicionar predefinição para mais impressoras, por favor vá para a " +"seleção de impressoras" msgid "Create Printer/Nozzle" msgstr "Criar Impressora/Bico" @@ -16387,7 +16434,9 @@ msgid "Exception in obtaining file size, please import again." msgstr "Exceção ao obter o tamanho do arquivo, por favor importe novamente." msgid "Preset path is not find, please reselect vendor." -msgstr "O caminho da predefinição não é encontrado, por favor reselecione o fornecedor." +msgstr "" +"O caminho da predefinição não é encontrado, por favor reselecione o " +"fornecedor." msgid "The printer model was not found, please reselect." msgstr "O modelo da impressora não foi encontrado, por favor reselecione." @@ -16396,7 +16445,8 @@ msgid "The nozzle diameter is not found, please reselect." msgstr "O diâmetro do bico não foi encontrado, por favor reselecione." msgid "The printer preset is not found, please reselect." -msgstr "A predefinição de impressora não foi encontrada, por favor reselecione." +msgstr "" +"A predefinição de impressora não foi encontrada, por favor reselecione." msgid "Printer Preset" msgstr "Predefinição de Impressora" @@ -16417,8 +16467,8 @@ msgid "" "You have not yet chosen which printer preset to create based on. Please " "choose the vendor and model of the printer" msgstr "" -"Você ainda não escolheu em qual predefinição de impressora basear-se. Por favor " -"escolha o fornecedor e modelo da impressora" +"Você ainda não escolheu em qual predefinição de impressora basear-se. Por " +"favor escolha o fornecedor e modelo da impressora" msgid "" "You have entered an illegal input in the printable area section on the first " @@ -16439,12 +16489,13 @@ msgid "" "reserve.\n" "\tCancel: Do not create a preset, return to the creation interface." msgstr "" -"A predefinição de impressora que você criou já possui uma predefinição com o mesmo " -"nome. Deseja substituí-la?\n" -"\tSim: Substituir a predefinição de impressora com o mesmo nome, e as predefinições " -"de filamento e processo com o mesmo nome da predefinição serão recriados, \n" -"e as predefinições de filamento e processo sem o mesmo nome da predefinição serão " -"reserva.\n" +"A predefinição de impressora que você criou já possui uma predefinição com o " +"mesmo nome. Deseja substituí-la?\n" +"\tSim: Substituir a predefinição de impressora com o mesmo nome, e as " +"predefinições de filamento e processo com o mesmo nome da predefinição serão " +"recriados, \n" +"e as predefinições de filamento e processo sem o mesmo nome da predefinição " +"serão reserva.\n" "\tCancelar: Não criar uma predefinição, retornar para a interface de criação." msgid "You need to select at least one filament preset." @@ -16504,7 +16555,9 @@ msgid "Printer Created" msgstr "Impressora criada" msgid "Please go to printer settings to edit your presets" -msgstr "Por favor vá para configurações de impressora para editar as suas predefinições" +msgstr "" +"Por favor vá para configurações de impressora para editar as suas " +"predefinições" msgid "Filament Created" msgstr "Filamento criado" @@ -16515,11 +16568,11 @@ msgid "" "volumetric speed has a significant impact on printing quality. Please set " "them carefully." msgstr "" -"Por favor, vá para as configurações do filamento para editar suas predefinições, se " -"necessário. \n" -"Por favor, note que a temperatura do bico, temperatura da mesa aquecida e velocidade " -"volumétrica máxima têm um impacto significativo na qualidade de impressão. Por " -"favor, ajuste-os com cuidado." +"Por favor, vá para as configurações do filamento para editar suas " +"predefinições, se necessário. \n" +"Por favor, note que a temperatura do bico, temperatura da mesa aquecida e " +"velocidade volumétrica máxima têm um impacto significativo na qualidade de " +"impressão. Por favor, ajuste-os com cuidado." msgid "" "\n" @@ -16531,11 +16584,11 @@ msgid "" msgstr "" "\n" "\n" -"Orca detectou que a função de sincronização das suas predefinições de usuário não " -"está habilitada, o que pode resultar em falhas nas configurações de Filamento na " -"página do Dispositivo. \n" -"Clique em \"Sincronizar predefinições do usuário\" para habilitar a função de " -"sincronização." +"Orca detectou que a função de sincronização das suas predefinições de " +"usuário não está habilitada, o que pode resultar em falhas nas configurações " +"de Filamento na página do Dispositivo. \n" +"Clique em \"Sincronizar predefinições do usuário\" para habilitar a função " +"de sincronização." msgid "Printer Setting" msgstr "Configuração da Impressora" @@ -16588,8 +16641,8 @@ msgid "" "Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" -"Predefinições de impressora e todos os filamentos e processos que pertencem à " -"impressora. \n" +"Predefinições de impressora e todos os filamentos e processos que pertencem " +"à impressora. \n" "Pode ser compartilhado com outros." msgid "" @@ -16603,27 +16656,29 @@ msgid "" "Only display printer names with changes to printer, filament, and process " "presets." msgstr "" -"Exibir apenas nomes de impressoras com alterações nas predefinições de impressora, " -"filamento e processo." +"Exibir apenas nomes de impressoras com alterações nas predefinições de " +"impressora, filamento e processo." msgid "Only display the filament names with changes to filament presets." msgstr "" -"Exibir apenas os nomes dos filamentos com alterações nas predefinições de filamento." +"Exibir apenas os nomes dos filamentos com alterações nas predefinições de " +"filamento." msgid "" "Only printer names with user printer presets will be displayed, and each " "preset you choose will be exported as a zip." msgstr "" -"Apenas os nomes das impressoras com predefinições de impressora do usuário serão " -"exibidos, e cada predefinição escolhida será exportada como um arquivo zip." +"Apenas os nomes das impressoras com predefinições de impressora do usuário " +"serão exibidos, e cada predefinição escolhida será exportada como um arquivo " +"zip." 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 "" -"Apenas os nomes dos filamentos com predefinições de filamento do usuário serão " -"exibidos, \n" +"Apenas os nomes dos filamentos com predefinições de filamento do usuário " +"serão exibidos, \n" "e todas as predefinições de filamento do usuário em cada nome de filamento " "selecionadas serão exportadas como um arquivo zip." @@ -16632,8 +16687,8 @@ msgid "" "and all user process presets in each printer name you select will be " "exported as a zip." msgstr "" -"Apenas os nomes das impressoras com predefinições de processo alterados serão " -"exibidos, \n" +"Apenas os nomes das impressoras com predefinições de processo alterados " +"serão exibidos, \n" "e todas os predefinições de processo do usuário em cada nome de impressora " "selecionadas serão exportados como um arquivo zip." @@ -16658,11 +16713,12 @@ msgid "" "Note: If the only preset under this filament is deleted, the filament will " "be deleted after exiting the dialog." msgstr "" -"Nota: Se a única predefinição sob este filamento for excluída, o filamento será " -"excluído após sair da janela." +"Nota: Se a única predefinição sob este filamento for excluída, o filamento " +"será excluído após sair da janela." msgid "Presets inherited by other presets can not be deleted" -msgstr "Predefinições herdadas por outras predefinições não podem ser excluídos" +msgstr "" +"Predefinições herdadas por outras predefinições não podem ser excluídos" msgid "The following presets inherits this preset." msgid_plural "The following preset inherits this preset." @@ -16689,9 +16745,10 @@ msgid "" "If you are using this filament on your printer, please reset the filament " "information for that slot." msgstr "" -"Todos as predefinições de filamento pertencentes a este filamento seriam excluídas. \n" -"Se você estiver usando este filamento em sua impressora, redefina as informações do " -"filamento para esse slot." +"Todos as predefinições de filamento pertencentes a este filamento seriam " +"excluídas. \n" +"Se você estiver usando este filamento em sua impressora, redefina as " +"informações do filamento para esse slot." msgid "Delete filament" msgstr "Excluir filamento" @@ -16707,8 +16764,8 @@ msgstr "Copiar predefinição do filamento" msgid "The filament choice not find filament preset, please reselect it" msgstr "" -"O filamento selecionado não encontra predefinição de filamento, por favor selecione " -"novamente" +"O filamento selecionado não encontra predefinição de filamento, por favor " +"selecione novamente" msgid "[Delete Required]" msgstr "[Excluir Necessário]" @@ -16733,8 +16790,8 @@ msgid "" "Your nozzle diameter in preset is not consistent with memorized nozzle " "diameter. Did you change your nozzle lately?" msgstr "" -"O diâmetro do bico na sua predefinição não está consistente com o diâmetro do bico " -"memorizado. Você mudou seu bico recentemente?" +"O diâmetro do bico na sua predefinição não está consistente com o diâmetro " +"do bico memorizado. Você mudou seu bico recentemente?" #, c-format, boost-format msgid "*Printing %s material with %s may cause nozzle damage" @@ -17271,9 +17328,9 @@ msgid "" "overhangs?" msgstr "" "Modo sanduíche\n" -"Você sabia que pode usar o modo sanduíche (interno-externo-interno) para melhorar a " -"precisão e a consistência da camada se o seu modelo não tiver saliências muito " -"íngremes?" +"Você sabia que pode usar o modo sanduíche (interno-externo-interno) para " +"melhorar a precisão e a consistência da camada se o seu modelo não tiver " +"saliências muito íngremes?" #: resources/data/hints.ini: [hint:Chamber temperature] msgid "" @@ -17345,8 +17402,8 @@ msgid "" "the surface quality of your overhangs?" msgstr "" "Inverter em ímpar\n" -"Você sabia que a função Inverter em ímpar pode melhorar significativamente a " -"qualidade da superfície das saliências?" +"Você sabia que a função Inverter em ímpar pode melhorar " +"significativamente a qualidade da superfície das saliências?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -17391,8 +17448,8 @@ msgid "" "printing by a simple click?" msgstr "" "Auto-orientar\n" -"Você sabia que pode rotacionar objetos para uma orientação ideal para impressão com " -"um simples clique?" +"Você sabia que pode rotacionar objetos para uma orientação ideal para " +"impressão com um simples clique?" #: resources/data/hints.ini: [hint:Lay on Face] msgid "" @@ -17691,8 +17748,8 @@ msgstr "" #~ "Enable this option to optimize part cooling fan speed for overhang and " #~ "bridge to get better cooling" #~ msgstr "" -#~ "Ative esta opção para otimizar a velocidade do ventilador de resfriamento de " -#~ "peças para saliência e ponte para obter melhor resfriamento" +#~ "Ative esta opção para otimizar a velocidade do ventilador de resfriamento " +#~ "de peças para saliência e ponte para obter melhor resfriamento" #~ msgid "Fan speed for overhang" #~ msgstr "Velocidade do ventilador para saliência" @@ -17702,9 +17759,10 @@ msgstr "" #~ "wall which has large overhang degree. Forcing cooling for overhang and " #~ "bridge can get better quality for these part" #~ msgstr "" -#~ "Forçar o ventilador de resfriamento da peça a ser nesta velocidade ao imprimir " -#~ "ponte ou parede saliente que tenha um grande grau de saliência. Forçar o resfriamento " -#~ "para saliência e ponte pode obter melhor qualidade para estas partes" +#~ "Forçar o ventilador de resfriamento da peça a ser nesta velocidade ao " +#~ "imprimir ponte ou parede saliente que tenha um grande grau de saliência. " +#~ "Forçar o resfriamento para saliência e ponte pode obter melhor qualidade " +#~ "para estas partes" #~ msgid "Cooling overhang threshold" #~ msgstr "Limiar de resfriamento de saliência" @@ -17716,11 +17774,11 @@ msgstr "" #~ "width of the line without support from lower layer. 0% means forcing " #~ "cooling for all outer wall no matter how much overhang degree" #~ msgstr "" -#~ "Forçar o ventilador de resfriamento a ser uma velocidade específica quando o grau " -#~ "de saliência da peça impressa excede este valor. Expresso como porcentagem, que " -#~ "indica quanto da largura da linha sem suporte da camada inferior.Zero significa " -#~ "forçar o resfriamento para toda o perímetro externo, não importa quanto seja o " -#~ "grau de saliência" +#~ "Forçar o ventilador de resfriamento a ser uma velocidade específica " +#~ "quando o grau de saliência da peça impressa excede este valor. Expresso " +#~ "como porcentagem, que indica quanto da largura da linha sem suporte da " +#~ "camada inferior.Zero significa forçar o resfriamento para toda o " +#~ "perímetro externo, não importa quanto seja o grau de saliência" #~ msgid "Bridge infill direction" #~ msgstr "Direção de preenchimento de ponte" @@ -17866,16 +17924,17 @@ msgstr "" #~ msgstr "" #~ "Aplicar a lógica de perímetros reversos apenas em perímetros internos.\n" #~ "\n" -#~ "Este ajuste reduz muito as tensões na peça, já que agora são distribuídas em " -#~ "direções alternadas. Isso deve reduzir a deformação da peça, mantendo a qualidade " -#~ "do perímetro externo. Este recurso pode ser muito útil para materiais propensos a " -#~ "deformações, como ABS/ASA, e também para filamentos elásticos, como TPU e Silk " -#~ "PLA. Também pode ajudar a reduzir a deformação em regiões salientes sobre " -#~ "suportes.\n" +#~ "Este ajuste reduz muito as tensões na peça, já que agora são distribuídas " +#~ "em direções alternadas. Isso deve reduzir a deformação da peça, mantendo " +#~ "a qualidade do perímetro externo. Este recurso pode ser muito útil para " +#~ "materiais propensos a deformações, como ABS/ASA, e também para filamentos " +#~ "elásticos, como TPU e Silk PLA. Também pode ajudar a reduzir a deformação " +#~ "em regiões salientes sobre suportes.\n" #~ "\n" -#~ "Para que este ajuste seja mais eficaz, recomenda-se definir o Limiar Reverso como " -#~ "0 para que todos os perímetros internos sejam impressos em direções alternadas em " -#~ "camadas ímpares, independentemente de seu grau de saliência." +#~ "Para que este ajuste seja mais eficaz, recomenda-se definir o Limiar " +#~ "Reverso como 0 para que todos os perímetros internos sejam impressos em " +#~ "direções alternadas em camadas ímpares, independentemente de seu grau de " +#~ "saliência." #, no-c-format, no-boost-format #~ msgid "" @@ -17883,9 +17942,10 @@ msgstr "" #~ "useful. Can be a % of the perimeter width.\n" #~ "Value 0 enables reversal on every odd layers regardless." #~ msgstr "" -#~ "Número de milímetros que a saliência precisa ter para que a reversão seja considerada útil. " -#~ "Pode ser um % da largura do perímetro.\n" -#~ "O valor 0 permite a reversão em todas as camadas ímpares independentemente." +#~ "Número de milímetros que a saliência precisa ter para que a reversão seja " +#~ "considerada útil. Pode ser um % da largura do perímetro.\n" +#~ "O valor 0 permite a reversão em todas as camadas ímpares " +#~ "independentemente." #~ msgid "" #~ "The direction which the wall loops are extruded when looking down from " @@ -18067,9 +18127,10 @@ msgstr "" #~ "inclinadas, evitando a criação de pontes internas desnecessárias. Isso " #~ "funciona bem para a maioria dos modelos difíceis.\n" #~ "\n" -#~ "Sem filtragem - Cria pontes internas em cada saliência interna potencial. Esta " -#~ "opção é útil para modelos com superfície superior fortemente inclinada. No " -#~ "entanto, na maioria dos casos, cria pontes desnecessárias demais." +#~ "Sem filtragem - Cria pontes internas em cada saliência interna potencial. " +#~ "Esta opção é útil para modelos com superfície superior fortemente " +#~ "inclinada. No entanto, na maioria dos casos, cria pontes desnecessárias " +#~ "demais." #~ msgid "Shrinkage" #~ msgstr "Retração" @@ -18208,13 +18269,14 @@ msgstr "" #~ "Different nozzle diameters and different filament diameters is not " #~ "allowed when prime tower is enabled." #~ msgstr "" -#~ "Diâmetros de bico diferentes e diâmetros de filamento diferentes não são permitidos " -#~ "quando a torre de limpeza está ativa." +#~ "Diâmetros de bico diferentes e diâmetros de filamento diferentes não são " +#~ "permitidos quando a torre de limpeza está ativa." #~ msgid "" #~ "Ooze prevention is currently not supported with the prime tower enabled." #~ msgstr "" -#~ "A prevenção de vazamento atualmente não é suportada com a torre de limpeza ativa." +#~ "A prevenção de vazamento atualmente não é suportada com a torre de " +#~ "limpeza ativa." #~ msgid "" #~ "Interlocking depth of a segmented region. Zero disables this feature." diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index dd89d18fea..285c452820 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 V2.2.0 Official Release\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-19 19:44+0800\n" +"POT-Creation-Date: 2025-02-20 21:21+0800\n" "PO-Revision-Date: 2024-09-25 22:36+0700\n" "Last-Translator: \n" "Language-Team: Andylg \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.5\n" msgid "Supports Painting" @@ -416,7 +416,8 @@ msgstr "Удалить соединение из выбранного" msgid "Select all connectors" msgstr "Выбрать все соединения" -# Разный перевод одного слова -Одно название действия Разрезать в другой в Правке -> Вырезать +# Разный перевод одного слова -Одно название действия Разрезать в другой в +# Правке -> Вырезать msgid "Cut" msgstr "Разрезать" @@ -1320,7 +1321,7 @@ msgid "Esc" msgstr "Esc" msgid "Cancel a feature until exit" -msgstr "" +msgstr "Отмените функцию до выхода" msgid "Measure" msgstr "Измерения" @@ -1328,16 +1329,17 @@ msgstr "Измерения" msgid "" "Please confirm explosion ratio = 1,and please select at least one object" msgstr "" +"Убедитесь, что коэффициент разброса равен 1 и выбрана хотя бы одна модель." msgid "Please select at least one object." -msgstr "" +msgstr "Пожалуйста, выберите хотя бы один объект." msgid "Edit to scale" msgstr "Редактировать масштаб" msgctxt "Verb" msgid "Scale all" -msgstr "" +msgstr "Масштабировать все" msgid "None" msgstr "Нет" @@ -1352,40 +1354,46 @@ msgid "Selection" msgstr "Выделение" msgid " (Moving)" -msgstr "" +msgstr " (подвижная)" msgid "" "Select 2 faces on objects and \n" " make objects assemble together." msgstr "" +"Выберите на модели 2 грани \n" +" и соедините модели вместе." msgid "" "Select 2 points or circles on objects and \n" " specify distance between them." msgstr "" +"Выберите 2 точки или окружности на моделях \n" +" и укажите расстояние между ними." msgid "Face" -msgstr "" +msgstr "Грань" msgid " (Fixed)" -msgstr "" +msgstr " (не подвижная)" msgid "Point" -msgstr "" +msgstr "Точка" msgid "" "Feature 1 has been reset, \n" "feature 2 has been feature 1" msgstr "" +"Выбор элемента 1 отменён,\n" +"элемент 2 стал элементом 1." msgid "Warning:please select Plane's feature." -msgstr "" +msgstr "Предупреждение: выберите плоскость." msgid "Warning:please select Point's or Circle's feature." -msgstr "" +msgstr "Предупреждение: выберите точку или окружность." msgid "Warning:please select two different mesh." -msgstr "" +msgstr "Предупреждение: выберите две разные сетки." msgid "Copy to clipboard" msgstr "Скопировать в буфер обмена" @@ -1403,25 +1411,25 @@ msgid "Distance XYZ" msgstr "Расстояние XYZ" msgid "Parallel" -msgstr "" +msgstr "Параллельно" msgid "Center coincidence" -msgstr "" +msgstr "Совпадение центров" msgid "Featue 1" -msgstr "" +msgstr "Элемент 1" msgid "Reverse rotation" -msgstr "" +msgstr "Обратное вращение" msgid "Rotate around center:" -msgstr "" +msgstr "Вращение вокруг центра:" msgid "Parallel distance:" msgstr "" msgid "Flip by Face 2" -msgstr "" +msgstr "Перевернуть грань 2" msgid "Ctrl+" msgstr "Ctrl+" @@ -3060,7 +3068,7 @@ msgid "Print with the filament mounted on the back of chassis" msgstr "Печать материалом, установленным на задней части корпуса." msgid "Current AMS humidity" -msgstr "" +msgstr "Текущая влажность внутри АСПП" msgid "" "Please change the desiccant when it is too wet. The indicator may not " @@ -3144,7 +3152,8 @@ msgstr "ВЛАЖНЫЙ" msgid "AMS Settings" msgstr "Настройки АСПП" -# ??? Обновление при вставке материала, Обновлять данные о материале при вставке +# ??? Обновление при вставке материала, Обновлять данные о материале при +# вставке msgid "Insertion update" msgstr "Обновлять данные при вставке материала" @@ -3170,7 +3179,8 @@ msgstr "" "информацию о ней, оставляя поле пустым, чтобы пользователь мог ввести данные " "о ней вручную." -# ??? Обновление при включении принтера, Обновлять данные о материале при включении принтера +# ??? Обновление при включении принтера, Обновлять данные о материале при +# включении принтера msgid "Power on update" msgstr "Обновлять данные при включении принтера" @@ -3720,9 +3730,9 @@ msgstr "" #, 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" +"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 "" "Текущая температура внутри термокамеры превышает безопасную температуру для " "этого материала, что может привести к размягчению материала или засорению " @@ -4530,7 +4540,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)." @@ -4965,7 +4975,7 @@ msgid "Show object overhang highlight in 3D scene" msgstr "Подсвечивать нависания у модели в окне подготовки" # ??? Показать контур выбранного -msgid "Show Selected Outline (Experimental)" +msgid "Show Selected Outline (beta)" msgstr "Показать контур выбранной модели" msgid "Show outline around selected object in 3D scene" @@ -5183,7 +5193,8 @@ msgstr "" "попытку." # ??? Видеотрансляция, Трансляция с видеокамеры -# ??? Прямая трансляция для локальной сети отключена. Пожалуйста, включите её с экрана принтера. +# ??? Прямая трансляция для локальной сети отключена. Пожалуйста, включите её +# с экрана принтера. msgid "" "LAN Only Liveview is off. Please turn on the liveview on printer screen." msgstr "" @@ -5201,7 +5212,8 @@ msgstr "" "Не удалось установить соединение. Пожалуйста, проверьте сеть и повторите " "попытку" -# ??? Проверить влезает ли теперь. Или ещё короче - Проверьте сеть и повторите попытку. Если не помогло, перезагрузите или обновите принтер. +# ??? Проверить влезает ли теперь. Или ещё короче - Проверьте сеть и повторите +# попытку. Если не помогло, перезагрузите или обновите принтер. msgid "" "Please check the network and try again, You can restart or update the " "printer if the issue persists." @@ -5214,9 +5226,10 @@ msgid "The printer has been logged out and cannot connect." msgstr "Принтер вышел из системы и не может подключиться." msgid "Video Stopped." -msgstr "" +msgstr "Трансляция с камеры остановлена." -# ??? Сбой подключения к локальной сети (не удалось запустить просмотр в реальном времени +# ??? Сбой подключения к локальной сети (не удалось запустить просмотр в +# реальном времени msgid "LAN Connection Failed (Failed to start liveview)" msgstr "" "Сбой подключения к локальной сети (не удалось запустить видеотрансляцию)" @@ -5327,6 +5340,8 @@ msgid "" "Please check if the SD card is inserted into the printer.\n" "If it still cannot be read, you can try formatting the SD card." msgstr "" +"Проверьте, вставлена ли SD-карта в принтер.\n" +"Если она по-прежнему не читается, попробуйте отформатировать SD-карту." msgid "LAN Connection Failed (Failed to view sdcard)" msgstr "Сбой подключения к локальной сети (не удалось просмотреть sd-карту)" @@ -5784,23 +5799,26 @@ msgid "Not for now" msgstr "Не сейчас" msgid "Server Exception" -msgstr "" +msgstr "Ошибка сервера" msgid "" "The server is unable to respond. Please click the link below to check the " "server status." msgstr "" +"Сервер не отвечает. Нажмите на ссылку ниже, чтобы проверить статус сервера." msgid "" "If the server is in a fault state, you can temporarily use offline printing " "or local network printing." msgstr "" +"Если отсутствует связь с сервером, то вы можете временно \n" +"использовать автономную печать или печать по локальной сети." msgid "How to use LAN only mode" -msgstr "" +msgstr "Как использовать режим «Только LAN»" msgid "Don't show this dialog again" -msgstr "" +msgstr "Больше не показывать" msgid "3D Mouse disconnected." msgstr "3D-мышь отключена." @@ -7187,7 +7205,8 @@ msgstr "Создать принтер" msgid "The selected preset is null!" msgstr "Выбранный профиль пуст!" -# ?????? В двух местах - в одном месте кнопка в другом Конечный слой. В V2.2.0beta2 пока не исправлено +# ?????? В двух местах - в одном месте кнопка в другом Конечный слой. В +# V2.2.0beta2 пока не исправлено msgid "End" msgstr "End" @@ -7596,7 +7615,7 @@ msgid "Bind with Pin Code" msgstr "Привязать с помощью пин-кода" msgid "Bind with Access Code" -msgstr "" +msgstr "Привязать с помощью кода доступа" msgid "Send to Printer SD card" msgstr "Отправить на SD-карту принтера" @@ -7899,8 +7918,8 @@ 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" @@ -7911,70 +7930,76 @@ msgid "" "A copy of the current system preset will be created, which will be detached " "from the system preset." msgstr "" +"Будет создана копия текущего системного профиля, который будет отсоединён от " +"системного профиля." msgid "" "The current custom preset will be detached from the parent system preset." msgstr "" +"Текущий пользовательский профиль будет отсоединён от родительского " +"системного профиля." msgid "Modifications to the current profile will be saved." -msgstr "" +msgstr "Изменения будут сохранены в текущем профиле." msgid "" "This action is not revertible.\n" "Do you want to proceed?" -msgstr "" +msgstr "Это действие необратимо. Продолжить?" msgid "Detach preset" -msgstr "" +msgstr "Отсоединить профиль" msgid "This is a default preset." -msgstr "" +msgstr "Это профиль по умолчанию." msgid "This is a system preset." -msgstr "" +msgstr "Это системный профиль." msgid "Current preset is inherited from the default preset." -msgstr "" +msgstr "Текущий профиль наследуется от профиля по умолчанию." msgid "Current preset is inherited from" -msgstr "" +msgstr "Текущий профиль наследуется от" msgid "It can't be deleted or modified." -msgstr "" +msgstr "Его нельзя удалить или изменить." msgid "" "Any modifications should be saved as a new preset inherited from this one." msgstr "" +"Любые изменения должны быть сохранены как новый профиль, унаследованный от " +"текущего." msgid "To do that please specify a new name for the preset." -msgstr "" +msgstr "Для этого укажите новое имя для профиля." msgid "Additional information:" -msgstr "" +msgstr "Дополнительная информация:" msgid "vendor" -msgstr "" +msgstr "производитель" msgid "printer model" -msgstr "" +msgstr "модель принтера" msgid "default print profile" -msgstr "" +msgstr "профиль печати по умолчанию" msgid "default filament profile" -msgstr "" +msgstr "профиль прутка по умолчанию" msgid "default SLA material profile" -msgstr "" +msgstr "профиль SLA материала по умолчанию" msgid "default SLA print profile" -msgstr "" +msgstr "профиль SLA печати по умолчанию" msgid "full profile name" -msgstr "" +msgstr "полное имя профиля" msgid "symbolic profile name" -msgstr "" +msgstr "символическое имя профиля" msgid "Line width" msgstr "Ширина экструзии" @@ -8143,7 +8168,7 @@ msgid "" msgstr "" msgid "Cool Plate" -msgstr "" +msgstr "Не нагреваемая пластина" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " @@ -8152,7 +8177,8 @@ msgstr "" "Температура стола при установленной не нагреваемой пластине. 0 означает, что " "пластиковая нить не поддерживает печать на этой печатной пластине." -# ??????? Текстурированная не нагреваемая пластина Bambu, Текстурированная пластина Bambu +# ??????? Текстурированная не нагреваемая пластина Bambu, Текстурированная +# пластина Bambu msgid "Textured Cool plate" msgstr "Не нагреваемая текстур. пластина Bambu" @@ -8270,10 +8296,10 @@ msgstr "" "Параметры смены инструмента в многоэкструдерных мультиматериальных принтерах" msgid "Dependencies" -msgstr "" +msgstr "Зависимости" msgid "Profile dependencies" -msgstr "" +msgstr "Зависимости профиля" msgid "Printable space" msgstr "Область печати" @@ -8721,7 +8747,9 @@ msgstr "Приблизительный подбор по цвету прутко msgid "Append" msgstr "Добавить" -# ?????? Добавить используемый экструдер после существующих экструдеров, Добавьте новый экструдер после существующих экструдеров, Добавить экструдер с расходным материалом после существующих экструдеров. +# ?????? Добавить используемый экструдер после существующих экструдеров, +# Добавьте новый экструдер после существующих экструдеров, Добавить экструдер +# с расходным материалом после существующих экструдеров. msgid "Add consumable extruder after existing extruders." msgstr "" "Добавить экструдер с расходными материалами после существующих экструдеров." @@ -9230,7 +9258,7 @@ msgid "Confirm and Update Nozzle" msgstr "Подтвердить и обновить сопло" msgid "Connect the printer using IP and access code" -msgstr "" +msgstr "Подключение к принтеру с помощью IP-адреса и кода доступа" msgid "" "Step 1. Please confirm Orca Slicer and your printer are in the same LAN." @@ -9240,11 +9268,15 @@ 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 3. Please obtain the device SN from the printer side; it is usually " "found in the device information on the printer screen." msgstr "" +"3) Найдите и введите серийный номер принтера (его можно найти в информации " +"об устройстве на экране принтера).ы" msgid "IP" msgstr "IP" @@ -9253,7 +9285,7 @@ msgid "Access Code" msgstr "Код доступа" msgid "Printer model" -msgstr "" +msgstr "Модель принтера" msgid "Printer name" msgstr "" @@ -9262,28 +9294,32 @@ msgid "Where to find your printer's IP and Access Code?" msgstr "Где найти IP-адрес и код доступа к вашему принтеру?" msgid "Connect" -msgstr "" +msgstr "Подключиться" msgid "Manual Setup" msgstr "" msgid "connecting..." -msgstr "" +msgstr "подключение..." msgid "Failed to connect to printer." -msgstr "" +msgstr "Не удалось подключиться к принтеру." msgid "Failed to publish login request." -msgstr "" +msgstr "Не удалось опубликовать запрос на вход в систему." msgid "The printer has already been bound." -msgstr "" +msgstr "Принтер уже привязан." msgid "The printer mode is incorrect, please switch to LAN Only." msgstr "" +"Неправильный режим работы принтера, пожалуйста, переключитесь на режим " +"«Только LAN»." msgid "Connecting to printer... The dialog will close later" msgstr "" +"Подключение к принтеру... Диалоговое окно закроется само, когда подключение " +"будет успешно выполнено." msgid "Connection failed, please double check IP and Access Code" msgstr "" @@ -10210,7 +10246,8 @@ msgstr "Последовательность печати первого сло msgid "Other layers print sequence" msgstr "Последовательность печати других слоёв" -# ??? Количество слоёв при последовательной печати остальных слоёв, Количество других слоёв в последовательной печати +# ??? Количество слоёв при последовательной печати остальных слоёв, Количество +# других слоёв в последовательной печати msgid "The number of other layers print sequence" msgstr "Количество других слоёв при последовательной печати" @@ -10341,7 +10378,7 @@ msgstr "" msgid "Overhang cooling activation threshold" msgstr "" -#, c-format, boost-format +#, no-c-format, no-boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -10353,6 +10390,7 @@ msgstr "" msgid "External bridge infill direction" msgstr "" +#, no-c-format, no-boost-format msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for " @@ -10750,7 +10788,7 @@ msgstr "" "автоматически." msgid "Painted" -msgstr "" +msgstr "Нарисовано" msgid "Brim-object gap" msgstr "Смещение каймы" @@ -10804,6 +10842,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" +"Логическое выражение, использующее значения конфигурации активного профиля " +"принтера. Если это выражение имеет значение true, этот профиль считается " +"совместимым с активным профилем принтера." msgid "Compatible process profiles" msgstr "Совместимые профили процессов" @@ -10816,6 +10857,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" +"Логическое выражение, использующее значения конфигурации активного профиля " +"печати. Если это выражение имеет значение true, этот профиль считается " +"совместимым с активным профилем принтера." msgid "Print sequence, layer by layer or object by object" msgstr "Выбор последовательности печати моделей - одновременно или по очереди." @@ -11412,7 +11456,8 @@ msgstr "" "При небольшом переливе или недоливе на поверхности, корректировка этого " "параметра поможет получить хорошую гладкую поверхность." -# ???1 Конечная величина потока модели - это введённое здесь значение, умноженное на коэффициент потока прутка. +# ???1 Конечная величина потока модели - это введённое здесь значение, +# умноженное на коэффициент потока прутка. msgid "" "The material may have volumetric change after switching between molten state " "and crystalline state. This setting changes all extrusion flow of this " @@ -12132,8 +12177,8 @@ msgstr "" "две ближайшие линии заполнения с коротким отрезком периметра. Если не " "найдено такого отрезка периметра короче этого параметра, линия заполнения " "соединяется с отрезком периметра только с одной стороны, а длина отрезка " -"периметра ограничена значением «Длина привязок разреженного заполнения» " -"(infill_anchor), но не больше этого параметра.\n" +"периметра ограничена значением «Длина привязок разреженного " +"заполнения» (infill_anchor), но не больше этого параметра.\n" "Если установить 0, то будет использоваться старый алгоритм для соединения " "заполнения, который даёт такой же результат, как и при значениях 1000 и 0." @@ -12172,8 +12217,8 @@ 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." +"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 "" "Ускорение на разреженном заполнении. Если задано в процентах, то значение " "вычисляться относительно ускорения по умолчанию." @@ -12204,7 +12249,8 @@ msgstr "" "Параметр предназначен для ограничения влияния экстремальных переходов от " "ускорения к замедлению, типичных для коротких зигзагообразных перемещений." -# ??? Ускорение к замедлению, Ускорение торможения, Скорость торможения, Скорость торможения перед поворотом, Соотношение ускорения к замедлению +# ??? Ускорение к замедлению, Ускорение торможения, Скорость торможения, +# Скорость торможения перед поворотом, Соотношение ускорения к замедлению msgid "accel_to_decel" msgstr "Ограничение ускорение зигзагов" @@ -12288,17 +12334,17 @@ 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\" до максимума на слое " -"\"full_fan_speed_layer\". Значение \"full_fan_speed_layer\" будет " -"игнорироваться, если оно меньше значения \"close_fan_the_first_x_layers\", в " -"этом случае вентилятор будет работать на максимально допустимой скорости на " -"слое \"close_fan_the_first_x_layers\" + 1." +"\"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 "layer" msgstr "слой" @@ -12933,7 +12979,7 @@ msgid "The distance between the lines of ironing" msgstr "Расстояние между линиями разглаживания." msgid "Ironing inset" -msgstr "" +msgstr "Границы разглаживания" msgid "" "The distance to keep from the edges. A value of 0 sets this to half of the " @@ -13588,7 +13634,7 @@ msgstr "" "Некоторое количество материала в экструдере откатывается назад, чтобы " "избежать его течи при длительном перемещении. 0 - отключение отката." -msgid "Long retraction when cut(experimental)" +msgid "Long retraction when cut(beta)" msgstr "Длинное втягивания перед отрезанием прутка" msgid "" @@ -14076,7 +14122,9 @@ msgstr "Скорость печати юбки (мм/с). 0 - скорость msgid "Skirt minimum extrusion length" msgstr "Мин. длина экструзии юбки" -# ??? Конечное число петель юбки не учитывается при расстановке или проверке расстояния между моделями, поэтому если их недостаточно, то увеличьте их количество. +# ??? Конечное число петель юбки не учитывается при расстановке или проверке +# расстояния между моделями, поэтому если их недостаточно, то увеличьте их +# количество. msgid "" "Minimum filament extrusion length in mm when printing the skirt. Zero means " "this feature is disabled.\n" @@ -14207,9 +14255,9 @@ msgid "" "zero value." msgstr "" "Разница температур, которая будет применяться, когда экструдер не активен. " -"Значение не используется, если для параметра «Температура ожидания» " -"('idle_temperature') в настройках пластиковой нити установлено ненулевое " -"значение." +"Значение не используется, если для параметра «Температура " +"ожидания» ('idle_temperature') в настройках пластиковой нити установлено " +"ненулевое значение." msgid "Preheat time" msgstr "Время преднагрева" @@ -14771,8 +14819,8 @@ msgstr "Вкл. контроль температуры" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode" +"\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -15087,7 +15135,8 @@ msgstr "" msgid "Maximal bridging distance" msgstr "Максимальное длина моста" -# ??? Максимальное расстояние между опорами на разряженных участках заполнения. +# ??? Максимальное расстояние между опорами на разряженных участках +# заполнения. msgid "Maximal distance between supports on sparse infill sections." msgstr "" "Максимальное расстояние моста черновой башни на её разряженных участках." @@ -15114,9 +15163,9 @@ msgid "Idle temperature" msgstr "Температура ожидания" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" "Температура сопла в момент, когда для печати используется другое сопло. Этот " "параметр используется только в том случае, если в настройках печати активна " @@ -15860,8 +15909,8 @@ msgstr "Предоставленный файл не может быть про msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Неизвестный формат файла. Входной файл должен иметь расширение *.3mf или " -"*.zip.amf." +"Неизвестный формат файла. Входной файл должен иметь расширение *.3mf или *." +"zip.amf." msgid "Canceled" msgstr "Отменено" @@ -16869,8 +16918,8 @@ msgstr "" "Хотите перезаписать его?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Мы переименуем профиль в \"Производитель Тип Серия @выбранный принтер\".\n" @@ -16986,7 +17035,8 @@ msgstr "" "В разделе «Область печати» на первой странице введено недопустимое значение. " "Проверьте введение значение перед созданием." -# ??? "Не введено имя или модель пользовательского принтера, пожалуйста, введите их. +# ??? "Не введено имя или модель пользовательского принтера, пожалуйста, +# введите их. msgid "The custom printer or model is not entered, please enter it." msgstr "Пожалуйста, введите имя пользовательского принтера и модель." @@ -17828,9 +17878,9 @@ msgid "" "overhangs?" msgstr "" "Порядок печати периметров «Сэндвич»\n" -"Знаете ли вы, что можно использовать порядок печати периметров «Сэндвич» " -"(т.е. внутренний-внешний-внутренний) для повышения точности и " -"согласованности слоёв, если у вашей модели не очень крутые нависания?" +"Знаете ли вы, что можно использовать порядок печати периметров «Сэндвич» (т." +"е. внутренний-внешний-внутренний) для повышения точности и согласованности " +"слоёв, если у вашей модели не очень крутые нависания?" #: resources/data/hints.ini: [hint:Chamber temperature] msgid "" @@ -18452,7 +18502,8 @@ msgstr "" #~ msgid "Z hop when retract" #~ msgstr "Подъём оси Z при откате" -# ??? Если установлено 0, то изменение направления будет происходить на каждом чётном слое, независимо от величина (длины ) свеса. +# ??? Если установлено 0, то изменение направления будет происходить на каждом +# чётном слое, независимо от величина (длины ) свеса. #, no-c-format, no-boost-format #~ msgid "" #~ "Number of mm the overhang need to be for the reversal to be considered " diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index b177c20183..9a1b35193f 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-19 19:44+0800\n" +"POT-Creation-Date: 2025-02-20 21:21+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1275,7 +1275,7 @@ msgid "Esc" msgstr "Esc" msgid "Cancel a feature until exit" -msgstr "" +msgstr "Cancel a feature until exit" msgid "Measure" msgstr "Measure" @@ -1283,16 +1283,17 @@ msgstr "Measure" msgid "" "Please confirm explosion ratio = 1,and please select at least one object" msgstr "" +"Please confirm explosion ratio = 1, and please select at least one object" msgid "Please select at least one object." -msgstr "" +msgstr "Please select at least one object." msgid "Edit to scale" msgstr "Edit to scale" msgctxt "Verb" msgid "Scale all" -msgstr "" +msgstr "Scale all" msgid "None" msgstr "Ingen" @@ -1307,40 +1308,46 @@ msgid "Selection" msgstr "Selection" msgid " (Moving)" -msgstr "" +msgstr " (Moving)" msgid "" "Select 2 faces on objects and \n" " make objects assemble together." msgstr "" +"Select 2 faces on objects and \n" +" make objects assemble together." msgid "" "Select 2 points or circles on objects and \n" " specify distance between them." msgstr "" +"Select 2 points or circles on objects and \n" +" specify distance between them." msgid "Face" -msgstr "" +msgstr "Face" msgid " (Fixed)" -msgstr "" +msgstr " (Fixed)" msgid "Point" -msgstr "" +msgstr "Point" msgid "" "Feature 1 has been reset, \n" "feature 2 has been feature 1" msgstr "" +"Feature 1 has been reset, \n" +"feature 2 has been feature 1" msgid "Warning:please select Plane's feature." -msgstr "" +msgstr "Warning: please select Plane's feature." msgid "Warning:please select Point's or Circle's feature." -msgstr "" +msgstr "Warning: please select Point's or Circle's feature." msgid "Warning:please select two different mesh." -msgstr "" +msgstr "Warning: please select two different meshes." msgid "Copy to clipboard" msgstr "Kopiera till urklipp" @@ -1358,25 +1365,25 @@ msgid "Distance XYZ" msgstr "Distance XYZ" msgid "Parallel" -msgstr "" +msgstr "Parallel" msgid "Center coincidence" -msgstr "" +msgstr "Center coincidence" msgid "Featue 1" -msgstr "" +msgstr "Feature 1" msgid "Reverse rotation" -msgstr "" +msgstr "Reverse rotation" msgid "Rotate around center:" -msgstr "" +msgstr "Rotate around center:" msgid "Parallel distance:" msgstr "" msgid "Flip by Face 2" -msgstr "" +msgstr "Flip by Face 2" msgid "Ctrl+" msgstr "Ctrl +" @@ -3591,9 +3598,9 @@ msgstr "" #, 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" +"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 "" "Current chamber temperature is higher than the material's safe temperature; " "this may result in material softening and nozzle clogs.The maximum safe " @@ -4368,7 +4375,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)." @@ -4792,7 +4799,7 @@ msgstr "Visa & Överhäng" msgid "Show object overhang highlight in 3D scene" msgstr "Visa objektets överhäng i 3D-scen" -msgid "Show Selected Outline (Experimental)" +msgid "Show Selected Outline (beta)" msgstr "" msgid "Show outline around selected object in 3D scene" @@ -5137,6 +5144,8 @@ msgid "" "Please check if the SD card is inserted into the printer.\n" "If it still cannot be read, you can try formatting the SD card." msgstr "" +"Kontrollera om SD-kortet är sitter i printern. \n" +"Om det fortfarande inte går att läsa kan du försöka formatera SD kortet." msgid "LAN Connection Failed (Failed to view sdcard)" msgstr "LAN Connection Failed (Failed to view sdcard)" @@ -7233,8 +7242,8 @@ msgstr "" msgid "" "Timelapse is not supported because Print sequence is set to \"By object\"." msgstr "" -"Timelapse stöds inte eftersom utskrifts sekvensen är inställd på \"Per " -"objekt\"." +"Timelapse stöds inte eftersom utskrifts sekvensen är inställd på \"Per objekt" +"\"." msgid "Errors" msgstr "Fel" @@ -7609,8 +7618,8 @@ 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" @@ -7918,10 +7927,9 @@ msgid "" "maximum fan speed according to layer printing time" msgstr "" "Del kylfläktens hastigheten kommer att börja gå med min hastighet när den " -"beräknade lagringstiden inte är längre än lagringstiden i " -"inställningarna.När lager tiden är kortare än gräns värdet, ställer " -"fläkthastigheten sig mellan lägsta och högsta fläkthastighet enligt lagrets " -"utskriftstid" +"beräknade lagringstiden inte är längre än lagringstiden i inställningarna." +"När lager tiden är kortare än gräns värdet, ställer fläkthastigheten sig " +"mellan lägsta och högsta fläkthastighet enligt lagrets utskriftstid" msgid "Max fan speed threshold" msgstr "Max fläkt hastighets gräns" @@ -9863,7 +9871,7 @@ msgstr "" msgid "Overhang cooling activation threshold" msgstr "" -#, c-format, boost-format +#, no-c-format, no-boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -9875,6 +9883,7 @@ msgstr "" msgid "External bridge infill direction" msgstr "" +#, no-c-format, no-boost-format msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for " @@ -10254,9 +10263,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" @@ -11319,8 +11328,8 @@ msgid "mm/s² or %" msgstr "mm/s² or %" 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." +"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 "" "Acceleration av gles utfyllnad. Om värdet uttrycks som en procentsats (t.ex. " "100%) kommer det att beräknas baserat på standard accelerationen." @@ -11420,10 +11429,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 "layer" @@ -12512,8 +12521,8 @@ msgstr "" "En del av materialet i extrudern dras tillbaka för att undvika dropp under " "långa förflyttningar. Sätt på 0 för att inaktivera retraktion" -msgid "Long retraction when cut(experimental)" -msgstr "Long retraction when cut (experimental)" +msgid "Long retraction when cut(beta)" +msgstr "Long retraction when cut (beta)" msgid "" "Experimental feature.Retracting and cutting off the filament at a longer " @@ -13520,8 +13529,8 @@ msgstr "" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode" +"\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -13784,9 +13793,9 @@ msgid "Idle temperature" msgstr "" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" msgid "X-Y hole compensation" @@ -15390,8 +15399,8 @@ msgstr "" "Vill du skriva om det?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" @@ -17349,11 +17358,11 @@ msgstr "" #~ msgstr "Felsökningsnivå" #~ msgid "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " -#~ "5:trace\n" +#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +#~ "trace\n" #~ msgstr "" -#~ "Välj felsöknings nivå. 0:allvarlig, 1:fel, 2:varning, 3:info, 4:felsök, " -#~ "5:spåra\n" +#~ "Välj felsöknings nivå. 0:allvarlig, 1:fel, 2:varning, 3:info, 4:felsök, 5:" +#~ "spåra\n" #~ msgid "" #~ "3D Scene Operations\n" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index fa0f0fc466..def2055d35 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-19 19:44+0800\n" +"POT-Creation-Date: 2025-02-20 21:21+0800\n" "PO-Revision-Date: 2025-02-20 01:24+0300\n" "Last-Translator: GlauTech\n" "Language-Team: \n" @@ -551,8 +551,8 @@ msgstr "Oranı azalt" #, boost-format msgid "" -"Processing model '%1%' with more than 1M triangles could be slow. It is highly " -"recommended to simplify the model." +"Processing model '%1%' with more than 1M triangles could be slow. It is " +"highly recommended to simplify the model." msgstr "" "1 milyondan fazla üçgen içeren '%1%' modelinin işlenmesi yavaş olabilir. " "Modelin basitleştirilmesi önemle tavsiye edilir." @@ -728,8 +728,8 @@ msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." msgstr "" -"Metin seçilen yazı tipi kullanılarak yazılamıyor. Lütfen farklı bir yazı tipi " -"seçmeyi deneyin." +"Metin seçilen yazı tipi kullanılarak yazılamıyor. Lütfen farklı bir yazı " +"tipi seçmeyi deneyin." msgid "Embossed text cannot contain only white spaces." msgstr "Kabartmalı metin yalnızca beyaz boşluklardan oluşamaz." @@ -1010,12 +1010,12 @@ msgstr "Metni kameraya doğru yönlendirin." #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Application selected a similar one(\"%2%" -"\"). You have to specify font for enable edit text." +"Can't load exactly same font(\"%1%\"). Application selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." msgstr "" -"Tam olarak aynı yazı tipi yüklenemiyor(\"%1%\"). Uygulama benzer bir uygulama " -"seçti(\"%2%\"). Metni düzenlemeyi etkinleştirmek için yazı tipini belirtmeniz " -"gerekir." +"Tam olarak aynı yazı tipi yüklenemiyor(\"%1%\"). Uygulama benzer bir " +"uygulama seçti(\"%2%\"). Metni düzenlemeyi etkinleştirmek için yazı tipini " +"belirtmeniz gerekir." msgid "No symbol" msgstr "Sembol yok" @@ -1131,7 +1131,8 @@ msgid "Path can't be healed from self-intersection and multiple points." msgstr "Yol kendi kendine kesişmeden ve birden fazla noktadan iyileştirilemez." msgid "" -"Final shape contains self-intersection or multiple points with same coordinate." +"Final shape contains self-intersection or multiple points with same " +"coordinate." msgstr "" "Son şekil, kendi kesişimini veya aynı koordinata sahip birden fazla noktayı " "içerir." @@ -1310,9 +1311,11 @@ msgstr "İptal et" msgid "Measure" msgstr "Ölçüm" -msgid "Please confirm explosion ratio = 1,and please select at least one object" +msgid "" +"Please confirm explosion ratio = 1,and please select at least one object" msgstr "" -"Lütfen patlama oranının = 1 olduğunu onaylayın ve lütfen en az bir nesne seçin" +"Lütfen patlama oranının = 1 olduğunu onaylayın ve lütfen en az bir nesne " +"seçin" msgid "Please select at least one object." msgstr "Lütfen en az bir nesne seçin." @@ -1452,8 +1455,8 @@ msgid "" msgstr "\"%1%\" yapılandırma dosyası yüklendi ancak bazı değerler tanınamadı." 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." +"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 hafızasının yetersiz olması nedeniyle sonlandırılacak. Bir hata " "olabilir. Sorunu ekibimize bildirirseniz seviniriz." @@ -1533,8 +1536,8 @@ msgstr "Bilgi" 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." +"Please note, application settings will be lost, but printer profiles will " +"not be affected." msgstr "" "OrcaSlicer konfigürasyon dosyası bozulmuş olabilir ve ayrıştırılamayabilir.\n" "OrcaSlicer, konfigürasyon dosyasını yeniden oluşturmayı denedi.\n" @@ -1554,7 +1557,8 @@ msgid "Choose one file (3mf):" msgstr "Dosya seçin (3mf):" msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" -msgstr "Bir veya daha fazla dosya seçin (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "" +"Bir veya daha fazla dosya seçin (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "Bir veya daha fazla dosya seçin (3mf/step/stl/svg/obj/amf):" @@ -1569,8 +1573,8 @@ msgid "Some presets are modified." msgstr "Bazı ön ayarlar değiştirildi." msgid "" -"You can keep the modified presets to the new project, discard or save changes " -"as new presets." +"You can keep the modified presets to the new project, discard or save " +"changes as new presets." msgstr "" "Modifield ön ayarlarını yeni projede tutabilir, değişiklikleri atabilir veya " "yeni ön ayarlar olarak kaydedebilirsiniz." @@ -1579,7 +1583,8 @@ msgid "User logged out" msgstr "Kullanıcı oturumu kapattı" msgid "new or open project file is not allowed during the slicing process!" -msgstr "dilimleme işlemi sırasında yeni veya açık proje dosyasına izin verilmez!" +msgstr "" +"dilimleme işlemi sırasında yeni veya açık proje dosyasına izin verilmez!" msgid "Open Project" msgstr "Projeyi Aç" @@ -1588,8 +1593,8 @@ 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'ın sürümü çok düşük ve normal şekilde kullanılabilmesi için en son " -"sürüme güncellenmesi gerekiyor" +"Orca Slicer'ın sürümü çok düşük ve normal şekilde kullanılabilmesi için en " +"son sürüme güncellenmesi gerekiyor" msgid "Privacy Policy Update" msgstr "Gizlilik Politikası Güncellemesi" @@ -1598,8 +1603,8 @@ 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 "" -"Bulutta önbelleğe alınan kullanıcı ön ayarlarının sayısı üst sınırı aştı; yeni " -"oluşturulan kullanıcı ön ayarları yalnızca yerel olarak kullanılabilir." +"Bulutta önbelleğe alınan kullanıcı ön ayarlarının sayısı üst sınırı aştı; " +"yeni oluşturulan kullanıcı ön ayarları yalnızca yerel olarak kullanılabilir." msgid "Sync user presets" msgstr "Kullanıcı ön ayarlarını senkronize edin" @@ -1802,10 +1807,10 @@ msgid "" "Yes - Change these settings automatically\n" "No - Do not change these settings for me" msgstr "" -"Bu modelin üst yüzeyinde metin kabartması bulunmaktadır. En iyi sonuçları elde " -"etmek amacıyla, 'Üst Yüzeylerde Yalnızca Bir Duvar'ın en iyi şekilde çalışması " -"için 'Tek Duvar Eşiği(min_width_top_surface)' seçeneğini 0'a ayarlamanız " -"önerilir.\n" +"Bu modelin üst yüzeyinde metin kabartması bulunmaktadır. En iyi sonuçları " +"elde etmek amacıyla, 'Üst Yüzeylerde Yalnızca Bir Duvar'ın en iyi şekilde " +"çalışması için 'Tek Duvar Eşiği(min_width_top_surface)' seçeneğini 0'a " +"ayarlamanız önerilir.\n" "Evet - Bu ayarları otomatik olarak değiştir\n" "Hayır - Bu ayarları benim için değiştirme" @@ -2132,7 +2137,8 @@ msgid "Switch to per-object setting mode to edit modifier settings." msgstr "Değiştirici ayarlarını düzenlemek için nesne başına ayar moduna geçin." msgid "" -"Switch to per-object setting mode to edit process settings of selected objects." +"Switch to per-object setting mode to edit process settings of selected " +"objects." msgstr "" "Seçilen nesnelerin işlem ayarlarını düzenlemek için nesne başına ayar moduna " "geçin." @@ -2157,8 +2163,8 @@ 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 " -"information first." +"To manipulate with solid parts or negative volumes you have to invalidate " +"cut information first." msgstr "" "Bu eylem kesilmiş bir yazışmayı bozacaktır.\n" "Bundan sonra model tutarlılığı garanti edilemez.\n" @@ -2221,7 +2227,8 @@ msgstr "İlk seçilen öğe bir nesne ise ikincisi de nesne olmalıdır." msgid "" "If first selected item is a part, the second one should be part in the same " "object." -msgstr "İlk seçilen öğe bir parça ise ikincisi aynı nesnenin parçası olmalıdır." +msgstr "" +"İlk seçilen öğe bir parça ise ikincisi aynı nesnenin parçası olmalıdır." msgid "The type of the last solid object part is not to be changed." msgstr "Son katı nesne parçasının tipi değiştirilNozullidir." @@ -2578,13 +2585,16 @@ msgstr "" msgid "Arranging done." msgstr "Hizalama tamamlandı." -msgid "Arrange failed. Found some exceptions when processing object geometries." +msgid "" +"Arrange failed. Found some exceptions when processing object geometries." msgstr "" -"Hizalama başarısız oldu. Nesne geometrilerini işlerken bazı istisnalar bulundu." +"Hizalama başarısız oldu. Nesne geometrilerini işlerken bazı istisnalar " +"bulundu." #, 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 "" "Hizalama tek plakaya sığmayan aşağıdaki nesneler göz ardı edildi:\n" @@ -2648,8 +2658,8 @@ msgstr "Görev iptal edildi." msgid "Upload task timed out. Please check the network status and try again." msgstr "" -"Yükleme görevi zaman aşımına uğradı. Lütfen ağ durumunu kontrol edin ve tekrar " -"deneyin." +"Yükleme görevi zaman aşımına uğradı. Lütfen ağ durumunu kontrol edin ve " +"tekrar deneyin." msgid "Cloud service connection failed. Please try again." msgstr "Bulut hizmeti bağlantısı başarısız oldu. Lütfen tekrar deneyin." @@ -2684,14 +2694,15 @@ msgstr "" "deneyin." msgid "Print file not found, Please slice it again and send it for printing." -msgstr "Yazdırma dosyası bulunamadı. Lütfen tekrar dilimleyip baskıya gönderin." +msgstr "" +"Yazdırma dosyası bulunamadı. Lütfen tekrar dilimleyip baskıya gönderin." msgid "" "Failed to upload print file to FTP. Please check the network status and try " "again." msgstr "" -"Yazdırma dosyası FTP'ye yüklenemedi. Lütfen ağ durumunu kontrol edin ve tekrar " -"deneyin." +"Yazdırma dosyası FTP'ye yüklenemedi. Lütfen ağ durumunu kontrol edin ve " +"tekrar deneyin." msgid "Sending print job over LAN" msgstr "Yazdırma işi LAN üzerinden gönderiliyor" @@ -2740,8 +2751,8 @@ msgid "Importing SLA archive" msgstr "SLA arşivi içe aktarılıyor" msgid "" -"The SLA archive doesn't contain any presets. Please activate some SLA printer " -"preset first before importing that SLA archive." +"The SLA archive doesn't contain any presets. Please activate some SLA " +"printer preset first before importing that SLA archive." msgstr "" "SLA arşivi herhangi bir ön ayar içermez. Lütfen SLA arşivini içe aktarmadan " "önce bazı SLA yazıcı ön ayarlarını etkinleştirin." @@ -2753,8 +2764,8 @@ msgid "Importing done." msgstr "İçe aktarma tamamlandı." msgid "" -"The imported SLA archive did not contain any presets. The current SLA presets " -"were used as fallback." +"The imported SLA archive did not contain any presets. The current SLA " +"presets were used as fallback." msgstr "" "İçe aktarılan SLA arşivi herhangi bir ön ayar içermiyordu. Geçerli SLA ön " "ayarları geri dönüş olarak kullanıldı." @@ -2811,8 +2822,8 @@ msgid "" "This software uses open source components whose copyright and other " "proprietary rights belong to their respective owners" msgstr "" -"Bu yazılım, telif hakkı ve diğer mülkiyet hakları ilgili sahiplerine ait olan " -"açık kaynaklı bileşenleri kullanır" +"Bu yazılım, telif hakkı ve diğer mülkiyet hakları ilgili sahiplerine ait " +"olan açık kaynaklı bileşenleri kullanır" #, c-format, boost-format msgid "About %s" @@ -2823,7 +2834,8 @@ msgstr "OrcaSlicer, BambuStudio, PrusaSlicer ve SuperSlicer'ı temel alır." msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." msgstr "" -"BambuStudio orijinal olarak PrusaResearch'ün PrusaSlicer'ını temel almaktadır." +"BambuStudio orijinal olarak PrusaResearch'ün PrusaSlicer'ını temel " +"almaktadır." msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." msgstr "" @@ -2902,7 +2914,8 @@ msgstr "Lütfen geçerli bir değer girin (K %.1f~%.1f içinde)" #, c-format, boost-format msgid "Please input a valid value (K in %.1f~%.1f, N in %.1f~%.1f)" -msgstr "Lütfen geçerli bir değer girin (K %.1f~%.1f içinde, N %.1f~%.1f içinde)" +msgstr "" +"Lütfen geçerli bir değer girin (K %.1f~%.1f içinde, N %.1f~%.1f içinde)" msgid "Other Color" msgstr "Diğer renk" @@ -2914,9 +2927,9 @@ msgid "Dynamic flow calibration" msgstr "Dinamik akış kalibrasyonu" 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." +"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 "" "Nozul sıcaklığı ve maksimum hacimsel hız kalibrasyon sonuçlarını " "etkileyecektir. Lütfen gerçek yazdırmayla aynı değerleri girin. Bir filament " @@ -2953,8 +2966,8 @@ msgid "Next" msgstr "Sonraki" 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 " +"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 "" "Kalibrasyon tamamlandı. Lütfen sıcak yatağınızdaki en düzgün ekstrüzyon " @@ -3020,7 +3033,8 @@ msgstr "" "değiştirildiğinde. nemin emilmesi saatler alır, düşük sıcaklıklar da süreci " "yavaşlatır." -msgid "Config which AMS slot should be used for a filament used in the print job" +msgid "" +"Config which AMS slot should be used for a filament used in the print job" msgstr "" "Yazdırma işinde kullanılan filament için hangi AMS yuvasının kullanılması " "gerektiğini yapılandırma" @@ -3050,7 +3064,8 @@ msgid "" "When the current material run out, the printer will continue to print in the " "following order." msgstr "" -"Mevcut malzeme bittiğinde yazıcı aşağıdaki sırayla yazdırmaya devam edecektir." +"Mevcut malzeme bittiğinde yazıcı aşağıdaki sırayla yazdırmaya devam " +"edecektir." msgid "Group" msgstr "Grup" @@ -3058,7 +3073,8 @@ msgstr "Grup" msgid "The printer does not currently support auto refill." msgstr "Yazıcı şu anda otomatik yeniden doldurmayı desteklemiyor." -msgid "AMS filament backup is not enabled, please enable it in the AMS settings." +msgid "" +"AMS filament backup is not enabled, please enable it in the AMS settings." msgstr "" "AMS filament yedekleme özelliği etkin değil, lütfen AMS ayarlarından " "etkinleştirin." @@ -3087,8 +3103,8 @@ msgid "Insertion update" msgstr "Ekleme güncellemesi" msgid "" -"The AMS will automatically read the filament information when inserting a new " -"Bambu Lab filament. This takes about 20 seconds." +"The AMS will automatically read the filament information when inserting a " +"new Bambu Lab filament. This takes about 20 seconds." msgstr "" "AMS, yeni bir Bambu Lab filamenti takıldığında filament bilgilerini otomatik " "olarak okuyacaktır. Bu yaklaşık 20 saniye sürer." @@ -3111,16 +3127,17 @@ msgid "Power on update" msgstr "Güncellemeyi aç" 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." +"The AMS will automatically read the information of inserted filament on " +"start-up. It will take about 1 minute.The reading process will roll filament " +"spools." msgstr "" "AMS, başlangıçta takılan filamentin bilgilerini otomatik olarak okuyacaktır. " "Yaklaşık 1 dakika sürecektir. Okuma işlemi filament makaralarını saracaktır." 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." +"The AMS will not automatically read information from inserted filament " +"during startup and will continue to use the information recorded before the " +"last shutdown." msgstr "" "AMS, başlatma sırasında takılan filamentden bilgileri otomatik olarak okumaz " "ve son kapatmadan önce kaydedilen bilgileri kullanmaya devam eder." @@ -3134,8 +3151,8 @@ msgid "" "automatically." msgstr "" "AMS, filament bilgisi güncellendikten sonra Bambu filamentin kalan " -"kapasitesini tahmin edecek. Yazdırma sırasında kalan kapasite otomatik olarak " -"güncellenecektir." +"kapasitesini tahmin edecek. Yazdırma sırasında kalan kapasite otomatik " +"olarak güncellenecektir." msgid "AMS filament backup" msgstr "AMS filament yedeklemesi" @@ -3167,8 +3184,8 @@ msgid "" "Failed to download the plug-in. Please check your firewall settings and vpn " "software, check and retry." msgstr "" -"Eklenti indirilemedi. Lütfen güvenlik duvarı ayarlarınızı ve vpn yazılımınızı " -"kontrol edin, kontrol edip yeniden deneyin." +"Eklenti indirilemedi. Lütfen güvenlik duvarı ayarlarınızı ve vpn " +"yazılımınızı kontrol edin, kontrol edip yeniden deneyin." msgid "" "Failed to install the plug-in. Please check whether it is blocked or deleted " @@ -3241,8 +3258,8 @@ msgstr "G kodu dışa aktarılırken bilinmeyen bir hata oluştu." #, boost-format msgid "" -"Copying of the temporary G-code to the output G-code failed. Maybe the SD card " -"is write locked?\n" +"Copying of the temporary G-code to the output G-code failed. Maybe the SD " +"card is write locked?\n" "Error message: %1%" msgstr "" "Geçici G kodunun çıkış G koduna kopyalanması başarısız oldu. Belki SD kart " @@ -3256,8 +3273,8 @@ msgid "" "device. The corrupted output G-code is at %1%.tmp." msgstr "" "Geçici G kodunun çıkış G koduna kopyalanması başarısız oldu. Hedef cihazda " -"sorun olabilir, lütfen tekrar dışa aktarmayı veya farklı bir cihaz kullanmayı " -"deneyin. Bozuk çıktı G kodu %1%.tmp konumunda." +"sorun olabilir, lütfen tekrar dışa aktarmayı veya farklı bir cihaz " +"kullanmayı deneyin. Bozuk çıktı G kodu %1%.tmp konumunda." #, boost-format msgid "" @@ -3277,8 +3294,8 @@ msgstr "" #, boost-format msgid "" -"Copying of the temporary G-code has finished but the exported code couldn't be " -"opened during copy check. The output G-code is at %1%.tmp." +"Copying of the temporary G-code has finished but the exported code couldn't " +"be opened during copy check. The output G-code is at %1%.tmp." msgstr "" "Geçici G kodunun kopyalanması tamamlandı ancak kopya kontrolü sırasında dışa " "aktarılan kod açılamadı. Çıkış G kodu %1%.tmp konumundadır." @@ -3359,7 +3376,8 @@ msgstr "Cihaz Durumu" msgid "Actions" msgstr "İşlemler" -msgid "Please select the devices you would like to manage here (up to 6 devices)" +msgid "" +"Please select the devices you would like to manage here (up to 6 devices)" msgstr "Lütfen buradan yönetmek istediğiniz cihazları seçin (en fazla 6 cihaz)" msgid "Add" @@ -3489,8 +3507,8 @@ msgid "Send to" msgstr "Gönderildi" msgid "" -"printers at the same time.(It depends on how many devices can undergo heating " -"at the same time.)" +"printers at the same time.(It depends on how many devices can undergo " +"heating at the same time.)" msgstr "" "aynı anda kaç yazıcının ısıtma işleminden geçebileceği, aynı anda " "ısıtılabilecek cihaz sayısına bağlıdır." @@ -3580,7 +3598,8 @@ msgstr "Hata! Geçersiz model" msgid "The selected file contains no geometry." msgstr "Seçilen dosya geometri içermiyor." -msgid "The selected file contains several disjoint areas. This is not supported." +msgid "" +"The selected file contains several disjoint areas. This is not supported." msgstr "Seçilen dosya birkaç ayrık alan içeriyor. Bu desteklenmiyor." msgid "Choose a file to import bed texture from (PNG/SVG):" @@ -3593,11 +3612,11 @@ msgid "Bed Shape" msgstr "Yatak Şekli" msgid "" -"The recommended minimum temperature is less than 190 degree or the recommended " -"maximum temperature is greater than 300 degree.\n" +"The recommended minimum temperature is less than 190 degree or the " +"recommended maximum temperature is greater than 300 degree.\n" msgstr "" -"Önerilen minimum sıcaklık 190 dereceden azdır veya önerilen maksimum sıcaklık " -"300 dereceden yüksektir.\n" +"Önerilen minimum sıcaklık 190 dereceden azdır veya önerilen maksimum " +"sıcaklık 300 dereceden yüksektir.\n" msgid "" "The recommended minimum temperature cannot be higher than the recommended " @@ -3622,7 +3641,8 @@ msgid "" "Recommended nozzle temperature of this filament type is [%d, %d] degree " "centigrade" msgstr "" -"Bu filament tipinin tavsiye edilen Nozul sıcaklığı [%d, %d] derece santigrattır" +"Bu filament tipinin tavsiye edilen Nozul sıcaklığı [%d, %d] derece " +"santigrattır" msgid "" "Too small max volumetric speed.\n" @@ -3633,13 +3653,13 @@ msgstr "" #, 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" +"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 "" -"Mevcut hazne sıcaklığı malzemenin güvenli sıcaklığından yüksektir, malzemenin " -"yumuşamasına ve tıkanmasına neden olabilir Malzeme için maksimum güvenli " -"sıcaklık %d'dir" +"Mevcut hazne sıcaklığı malzemenin güvenli sıcaklığından yüksektir, " +"malzemenin yumuşamasına ve tıkanmasına neden olabilir Malzeme için maksimum " +"güvenli sıcaklık %d'dir" msgid "" "Too small layer height.\n" @@ -3693,16 +3713,16 @@ msgstr "" "Değer 0'a sıfırlanacaktır." msgid "" -"Alternate extra wall does't work well when ensure vertical shell thickness is " -"set to All. " +"Alternate extra wall does't work well when ensure vertical shell thickness " +"is set to All. " msgstr "" -"Alternatif ekstra duvar, dikey kabuk kalınlığının Tümü olarak ayarlandığından " -"emin olunduğunda iyi çalışmaz. " +"Alternatif ekstra duvar, dikey kabuk kalınlığının Tümü olarak " +"ayarlandığından emin olunduğunda iyi çalışmaz. " msgid "" "Change these settings automatically? \n" -"Yes - Change ensure vertical shell thickness to Moderate and enable alternate " -"extra wall\n" +"Yes - Change ensure vertical shell thickness to Moderate and enable " +"alternate extra wall\n" "No - Don't use alternate extra wall" msgstr "" "Bu ayarlar otomatik olarak değiştirilsin mi? \n" @@ -3763,7 +3783,8 @@ msgstr "" "olduğunda ve timelapse türü geleneksel olduğunda çalışır." msgid " But machines with I3 structure will not generate timelapse videos." -msgstr " Ancak I3 yapısına sahip yazıcılar timelapse videolar oluşturmayacaktır." +msgstr "" +" Ancak I3 yapısına sahip yazıcılar timelapse videolar oluşturmayacaktır." msgid "" "Change these settings automatically? \n" @@ -3771,7 +3792,8 @@ msgid "" "No - Give up using spiral mode this time" msgstr "" "Bu ayarlar otomatik olarak değiştirilsin mi?\n" -"Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak etkinleştirin\n" +"Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak " +"etkinleştirin\n" "Hayır - Bu sefer spiral modunu kullanmaktan vazgeçin" msgid "Auto bed leveling" @@ -3904,9 +3926,9 @@ msgid "Update failed." msgstr "Güncelleme başarısız." 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." +"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 "" "Mevcut hazne sıcaklığı veya hedef hazne sıcaklığı 45 ° C'yi aşıyor Ekstruder " "tıkanmasını önlemek için düşük sıcaklıkta filament (PLA / PETG / TPU) " @@ -3914,8 +3936,8 @@ msgstr "" 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℃." +"avoid extruder clogging,it is not allowed to set the chamber temperature " +"above 45℃." msgstr "" "Ekstrudere düşük sıcaklıkta filament (PLA / PETG / TPU) yüklendi. Ekstruder " "tıkanmasını önlemek için hazne sıcaklığının 45 ° C'nin üzerine ayarlanmasına " @@ -3933,7 +3955,8 @@ msgstr "" msgid "Failed to start printing job" msgstr "Yazdırma işi başlatılamadı" -msgid "This calibration does not support the currently selected nozzle diameter" +msgid "" +"This calibration does not support the currently selected nozzle diameter" msgstr "Bu kalibrasyon, şu anda seçilen nozzle çapını desteklememektedir" msgid "Current flowrate cali param is invalid" @@ -3955,15 +3978,15 @@ msgid "Bambu PET-CF/PA6-CF is not supported by AMS." msgstr "Bambu PET-CF/PA6-CF, AMS tarafından desteklenNozulktedir." msgid "" -"Damp PVA will become flexible and get stuck inside AMS,please take care to dry " -"it before use." +"Damp PVA will become flexible and get stuck inside AMS,please take care to " +"dry it before use." msgstr "" -"Nemli PVA esnekleşecek ve AMS'nin içine sıkışacaktır, lütfen kullanmadan önce " -"kurutmaya dikkat edin." +"Nemli PVA esnekleşecek ve AMS'nin içine sıkışacaktır, lütfen kullanmadan " +"önce kurutmaya dikkat edin." msgid "" -"CF/GF filaments are hard and brittle, It's easy to break or get stuck in AMS, " -"please use with caution." +"CF/GF filaments are hard and brittle, It's easy to break or get stuck in " +"AMS, please use with caution." msgstr "" "CF/GF filamentleri sert ve kırılgandır. AMS'de kırılması veya sıkışması " "kolaydır, lütfen dikkatli kullanın." @@ -4419,7 +4442,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)." @@ -4846,7 +4869,7 @@ msgstr "Çıkıntıyı Göster" msgid "Show object overhang highlight in 3D scene" msgstr "3B sahnede nesne çıkıntısı vurgusunu göster" -msgid "Show Selected Outline (Experimental)" +msgid "Show Selected Outline (beta)" msgstr "Seçilen Taslağı Göster (Deneysel)" msgid "Show outline around selected object in 3D scene" @@ -5002,8 +5025,8 @@ msgstr[1] "" msgid "" "\n" -"Hint: Make sure you have added the corresponding printer before importing the " -"configs." +"Hint: Make sure you have added the corresponding printer before importing " +"the configs." msgstr "" "\n" "İpucu: Yapılandırmaları içe aktarmadan önce ilgili yazıcıyı eklediğinizden " @@ -5052,8 +5075,10 @@ msgid "Please confirm if the printer is connected." msgstr "Lütfen yazıcının bağlı olup olmadığını onaylayın." msgid "" -"The printer is currently busy downloading. Please try again after it finishes." -msgstr "Yazıcı şu anda indirmeyle meşgul. Lütfen bittikten sonra tekrar deneyin." +"The printer is currently busy downloading. Please try again after it " +"finishes." +msgstr "" +"Yazıcı şu anda indirmeyle meşgul. Lütfen bittikten sonra tekrar deneyin." msgid "Printer camera is malfunctioning." msgstr "Yazıcı kamerası arızalı." @@ -5062,7 +5087,8 @@ msgid "Problem occurred. Please update the printer firmware and try again." msgstr "" "Sorun oluştu. Lütfen yazıcının ürün yazılımını güncelleyin ve tekrar deneyin." -msgid "LAN Only Liveview is off. Please turn on the liveview on printer screen." +msgid "" +"LAN Only Liveview is off. Please turn on the liveview on printer screen." msgstr "" "Yalnızca LAN Canlı İzleme kapalı. Lütfen yazıcı ekranındaki canlı " "görüntülemeyi açın." @@ -5077,8 +5103,8 @@ msgid "Connection Failed. Please check the network and try again" msgstr "Bağlantı Başarısız. Lütfen ağı kontrol edip tekrar deneyin" msgid "" -"Please check the network and try again, You can restart or update the printer " -"if the issue persists." +"Please check the network and try again, You can restart or update the " +"printer if the issue persists." msgstr "" "Lütfen ağı kontrol edip tekrar deneyin. Sorun devam ederse yazıcıyı yeniden " "başlatabilir veya güncelleyebilirsiniz." @@ -5213,7 +5239,8 @@ msgid_plural "" "You are going to delete %u files from printer. Are you sure to continue?" msgstr[0] "" "%u dosyasını yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" -msgstr[1] "%u dosyayı yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" +msgstr[1] "" +"%u dosyayı yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" msgid "Delete files" msgstr "Dosyaları sil" @@ -5238,8 +5265,8 @@ 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 dosyası hiçbir G kodu verisi içermiyor. Lütfen dosyayı Bambu Studio " -"ile dilimleyin ve yeni bir .gcode.3mf dosyasını dışa aktarın." +".gcode.3mf dosyası hiçbir G kodu verisi içermiyor. Lütfen dosyayı Bambu " +"Studio ile dilimleyin ve yeni bir .gcode.3mf dosyasını dışa aktarın." #, c-format, boost-format msgid "File '%s' was lost! Please download it again." @@ -5273,8 +5300,8 @@ msgid "" "Reconnecting the printer, the operation cannot be completed immediately, " "please try again later." msgstr "" -"Yazıcıyı yeniden bağladığınızda işlem hemen tamamlanamıyor, lütfen daha sonra " -"tekrar deneyin." +"Yazıcıyı yeniden bağladığınızda işlem hemen tamamlanamıyor, lütfen daha " +"sonra tekrar deneyin." msgid "File does not exist." msgstr "Dosya bulunmuyor." @@ -5357,8 +5384,8 @@ msgid "" "(The model has already been rated. Your rating will overwrite the previous " "rating.)" msgstr "" -"(Model zaten derecelendirilmiştir. Derecelendirmeniz önceki derecelendirmenin " -"üzerine yazılacaktır)" +"(Model zaten derecelendirilmiştir. Derecelendirmeniz önceki " +"derecelendirmenin üzerine yazılacaktır)" msgid "Rate" msgstr "Derecelendir" @@ -5436,8 +5463,8 @@ msgid "" "Please heat the nozzle to above 170 degree before loading or unloading " "filament." msgstr "" -"Filamenti yüklemeden veya boşaltmadan önce lütfen nozulu 170 derecenin üzerine " -"ısıtın." +"Filamenti yüklemeden veya boşaltmadan önce lütfen nozulu 170 derecenin " +"üzerine ısıtın." msgid "Still unload" msgstr "Daha Fazla Boşalt" @@ -5658,8 +5685,8 @@ msgstr "" "bağlantıya tıklayın." msgid "" -"If the server is in a fault state, you can temporarily use offline printing or " -"local network printing." +"If the server is in a fault state, you can temporarily use offline printing " +"or local network printing." msgstr "" "Sunucu arıza durumundaysa, geçici olarak çevrimdışı yazdırmayı veya yerel " "ağdan yazdırmayı kullanabilirsiniz." @@ -5798,7 +5825,8 @@ msgid "Range" msgstr "Aralık" msgid "" -"The application cannot run normally because OpenGL version is lower than 2.0.\n" +"The application cannot run normally because OpenGL version is lower than " +"2.0.\n" msgstr "" "OpenGL sürümü 2.0'dan düşük olduğundan uygulama normal şekilde çalışamıyor.\n" @@ -5837,11 +5865,11 @@ msgid "Enable detection of build plate position" msgstr "Yapı plakası konumunun algılanmasını etkinleştir" msgid "" -"The localization tag of build plate is detected, and printing is paused if the " -"tag is not in predefined range." +"The localization tag of build plate is detected, and printing is paused if " +"the tag is not in predefined range." msgstr "" -"Baskı plakasının yerelleştirme etiketi algılanır ve etiket önceden tanımlanmış " -"aralıkta değilse yazdırma duraklatılır." +"Baskı plakasının yerelleştirme etiketi algılanır ve etiket önceden " +"tanımlanmış aralıkta değilse yazdırma duraklatılır." msgid "First Layer Inspection" msgstr "Birinci Katman Denetimi" @@ -5979,8 +6007,8 @@ msgstr "Peletler" msgid "" "No AMS filaments. Please select a printer in 'Device' page to load AMS info." msgstr "" -"AMS filamentleri yok. AMS bilgilerini yüklemek için lütfen 'Cihaz' sayfasında " -"bir yazıcı seçin." +"AMS filamentleri yok. AMS bilgilerini yüklemek için lütfen 'Cihaz' " +"sayfasında bir yazıcı seçin." msgid "Sync filaments with AMS" msgstr "Filamentleri AMS ile senkronize et" @@ -5993,10 +6021,11 @@ msgstr "" "ayarlarını ve renklerini kaldıracaktır. Devam etmek istiyor musun?" msgid "" -"Already did a synchronization, do you want to sync only changes or resync all?" +"Already did a synchronization, do you want to sync only changes or resync " +"all?" msgstr "" -"Zaten bir senkronizasyon yaptınız. Yalnızca değişiklikleri senkronize etmek mi " -"yoksa tümünü yeniden senkronize etmek mi istiyorsunuz?" +"Zaten bir senkronizasyon yaptınız. Yalnızca değişiklikleri senkronize etmek " +"mi yoksa tümünü yeniden senkronize etmek mi istiyorsunuz?" msgid "Sync" msgstr "Senkronizasyon" @@ -6008,12 +6037,13 @@ msgid "There are no compatible filaments, and sync is not performed." msgstr "Uyumlu filament yok ve senkronizasyon gerçekleştirilmiyor." 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." +"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 "" -"Genel ön ayara eşlenen bazı bilinmeyen filamentler var. Sistem ön ayarlarında " -"bir güncelleme olup olmadığını kontrol etmek için lütfen Orca Slicer'ı " -"güncelleyin veya Orca Slicer'ı yeniden başlatın." +"Genel ön ayara eşlenen bazı bilinmeyen filamentler var. Sistem ön " +"ayarlarında bir güncelleme olup olmadığını kontrol etmek için lütfen Orca " +"Slicer'ı güncelleyin veya Orca Slicer'ı yeniden başlatın." #, boost-format msgid "Do you want to save changes to \"%1%\"?" @@ -6038,26 +6068,26 @@ msgid "Restore" msgstr "Geri Yükleme" 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." +"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 "" -"Mevcut sıcak yatak sıcaklığı oldukça yüksek. Bu filamenti kapalı bir muhafaza " -"içinde bastırırken nozzle tıkanabilir. Lütfen ön kapağı açın ve/veya üst camı " -"çıkarın." +"Mevcut sıcak yatak sıcaklığı oldukça yüksek. Bu filamenti kapalı bir " +"muhafaza içinde bastırırken nozzle tıkanabilir. Lütfen ön kapağı açın ve/" +"veya üst camı çıkarın." 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." +"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 "" "Filamentin gerektirdiği nozul sertliği, yazıcının varsayılan nozul " "sertliğinden daha yüksektir. Lütfen sertleşmiş nozulu veya filamenti " "değiştirin, aksi takdirde nozul aşınır veya hasar görür." msgid "" -"Enabling traditional timelapse photography may cause surface imperfections. It " -"is recommended to change to smooth mode." +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." msgstr "" "Geleneksel timelapse etkinleştirilmesi yüzey kusurlarına neden olabilir. " "Yumuşak moda geçilmesi önerilir." @@ -6074,7 +6104,8 @@ msgstr "Dosya yükleniyor: %s" msgid "The 3mf is not supported by OrcaSlicer, load geometry data only." msgstr "" -"OrcaSlicer, 3mf formatını desteklememektedir. Sadece geometri verilerini yükle." +"OrcaSlicer, 3mf formatını desteklememektedir. Sadece geometri verilerini " +"yükle." msgid "Load 3mf" msgstr "3mf yükle" @@ -6106,8 +6137,8 @@ msgstr "Lütfen bunları parametre sekmelerinde düzeltin" msgid "The 3mf has following modified G-codes in filament or printer presets:" msgstr "" -"3mf dosyasında filament veya yazıcı ön ayarlarında şu değiştirilmiş G-kodları " -"bulunmaktadır:" +"3mf dosyasında filament veya yazıcı ön ayarlarında şu değiştirilmiş G-" +"kodları bulunmaktadır:" msgid "" "Please confirm that these modified G-codes are safe to prevent any damage to " @@ -6337,15 +6368,15 @@ msgstr "İndirme başarısız oldu, Dosya boyutu sorunlu." #, c-format, boost-format msgid "Project downloaded %d%%" msgstr "" -"Proje %d%% indirildiBambu Studio’ya içe aktarma başarısız oldu. Lütfen dosyayı " -"indirin ve manuel olarak içe aktarın." +"Proje %d%% indirildiBambu Studio’ya içe aktarma başarısız oldu. Lütfen " +"dosyayı indirin ve manuel olarak içe aktarın." msgid "" -"Importing to Orca Slicer failed. Please download the file and manually import " -"it." +"Importing to Orca Slicer failed. Please download the file and manually " +"import it." msgstr "" -"Orca Slicer'ya aktarma başarısız oldu. Lütfen dosyayı indirin ve manuel olarak " -"İçe aktarın." +"Orca Slicer'ya aktarma başarısız oldu. Lütfen dosyayı indirin ve manuel " +"olarak İçe aktarın." msgid "Import SLA archive" msgstr "SLA arşivini içe aktar" @@ -6387,7 +6418,8 @@ msgstr "Proje olarak aç" msgid "Import geometry only" msgstr "Yalnızca geometriyi içe aktar" -msgid "This option can be changed later in preferences, under 'Load Behaviour'." +msgid "" +"This option can be changed later in preferences, under 'Load Behaviour'." msgstr "" "Bu seçenek daha sonra ‘Yükleme Davranışı’ altındaki tercihlerde " "değiştirilebilir." @@ -6409,8 +6441,8 @@ msgstr "Tüm nesneler kaldırılacak, devam edilsin mi?" msgid "The current project has unsaved changes, save it before continue?" msgstr "" -"Mevcut projede kaydedilmemiş değişiklikler var. Devam etmeden önce kaydedilsin " -"mi?" +"Mevcut projede kaydedilmemiş değişiklikler var. Devam etmeden önce " +"kaydedilsin mi?" msgid "Number of copies:" msgstr "Kopya sayısı:" @@ -6435,15 +6467,15 @@ msgstr "Dilimlenmiş dosyayı şu şekilde kaydedin:" #, c-format, boost-format msgid "" -"The file %s has been sent to the printer's storage space and can be viewed on " -"the printer." +"The file %s has been sent to the printer's storage space and can be viewed " +"on the printer." msgstr "" "%s dosyası yazıcının depolama alanına gönderildi ve yazıcıda " "görüntülenebiliyor." msgid "" -"Unable to perform boolean operation on model meshes. Only positive parts will " -"be kept. You may fix the meshes and try again." +"Unable to perform boolean operation on model meshes. Only positive parts " +"will be kept. You may fix the meshes and try again." msgstr "" "Model ağlarında boole işlemi gerçekleştirilemiyor. Yalnızca olumlu kısımlar " "tutulacaktır. Kafesleri düzeltip tekrar deneyebilirsiniz." @@ -6465,8 +6497,8 @@ msgid "Reason: \"%1%\" and another part have no intersection." msgstr "Sebep: “%1%” ile başka bir parçanın kesişimi yok." msgid "" -"Unable to perform boolean operation on model meshes. Only positive parts will " -"be exported." +"Unable to perform boolean operation on model meshes. Only positive parts " +"will be exported." msgstr "" "Model ağlarında boole işlemi gerçekleştirilemiyor. Yalnızca pozitif parçalar " "ihraç edilecektir." @@ -6494,8 +6526,8 @@ msgid "" "Suggest to use auto-arrange to avoid collisions when printing." msgstr "" "Nesneye Göre Yazdır:\n" -"Yazdırma sırasında çarpışmaları önlemek için otomatik düzenlemeyi kullanmanızı " -"önerin." +"Yazdırma sırasında çarpışmaları önlemek için otomatik düzenlemeyi " +"kullanmanızı önerin." msgid "Send G-code" msgstr "G-kodu gönder" @@ -6555,8 +6587,8 @@ msgid "Tips:" msgstr "İpuçları:" msgid "" -"\"Fix Model\" feature is currently only on Windows. Please repair the model on " -"Orca Slicer(windows) or CAD softwares." +"\"Fix Model\" feature is currently only on Windows. Please repair the model " +"on Orca Slicer(windows) or CAD softwares." msgstr "" "\"Modeli Onar\" özelliği şu anda yalnızca Windows'ta bulunmaktadır. Lütfen " "modeli Orca Slicer (windows) veya CAD yazılımlarında onarın." @@ -6564,8 +6596,8 @@ msgstr "" #, 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." +"still want to do this printing, please set this filament's bed temperature " +"to non zero." msgstr "" "Plaka% d: %s'nin %s(%s) filamentinı yazdırmak için kullanılması önerilmez. " "Eğer yine de bu baskıyı yapmak istiyorsanız, lütfen bu filamentin yatak " @@ -6641,8 +6673,8 @@ msgid "Stealth Mode" msgstr "Gizli mod" msgid "" -"This stops the transmission of data to Bambu's cloud services. Users who don't " -"use BBL machines or use LAN mode only can safely turn on this function." +"This stops the transmission of data to Bambu's cloud services. Users who " +"don't use BBL machines or use LAN mode only can safely turn on this function." msgstr "" "Bu, Bambu’nun bulut hizmetlerine veri aktarımını durdurur. BBL makinelerini " "kullanmayan veya yalnızca LAN modunu kullanan kullanıcılar bu işlevi güvenle " @@ -6667,9 +6699,9 @@ msgid "Allow only one OrcaSlicer instance" msgstr "Yalnızca bir OrcaSlicer örneğine izin ver" msgid "" -"On OSX there is always only one instance of app running by default. However it " -"is allowed to run multiple instances of same app from the command line. In " -"such case this settings will allow only one instance." +"On OSX there is always only one instance of app running by default. However " +"it is allowed to run multiple instances of same app from the command line. " +"In such case this settings will allow only one instance." msgstr "" "OSX’te her zaman varsayılan olarak çalışan tek bir uygulama örneği vardır. " "Ancak aynı uygulamanın birden fazla örneğinin komut satırından " @@ -6677,8 +6709,9 @@ msgstr "" "örneğe izin verecektir." msgid "" -"If this is enabled, when starting OrcaSlicer and another instance of the same " -"OrcaSlicer is already running, that instance will be reactivated instead." +"If this is enabled, when starting OrcaSlicer and another instance of the " +"same OrcaSlicer is already running, that instance will be reactivated " +"instead." msgstr "" "Bu etkinleştirilirse, OrcaSlicer başlatıldığında ve aynı OrcaSlicer’ın başka " "bir örneği zaten çalışıyorken, bunun yerine bu örnek yeniden " @@ -6751,7 +6784,8 @@ msgstr "Hacimleri temizleme: Renk her değiştiğinde otomatik olarak hesapla." msgid "If enabled, auto-calculate every time the color changed." msgstr "Etkinleştirilirse, renk her değiştiğinde otomatik hesapla." -msgid "Flushing volumes: Auto-calculate every time when the filament is changed." +msgid "" +"Flushing volumes: Auto-calculate every time when the filament is changed." msgstr "" "Yıkama hacimleri: Filament her değiştirildiğinde otomatik olarak hesaplanır." @@ -6769,11 +6803,12 @@ msgstr "" "hatırlayacak ve otomatik olarak değiştirecektir." msgid "Multi-device Management(Take effect after restarting Orca)." -msgstr "Çoklu Cihaz Yönetimi(Studio yeniden başlatıldıktan sonra geçerli olur)." +msgstr "" +"Çoklu Cihaz Yönetimi(Studio yeniden başlatıldıktan sonra geçerli olur)." msgid "" -"With this option enabled, you can send a task to multiple devices at the same " -"time and manage multiple devices." +"With this option enabled, you can send a task to multiple devices at the " +"same time and manage multiple devices." msgstr "" "Bu seçenek etkinleştirildiğinde, aynı anda birden fazla cihaza bir görev " "gönderebilir ve birden fazla cihazı yönetebilirsiniz." @@ -6818,8 +6853,8 @@ msgstr ".stl dosyalarını OrcaSlicer ile ilişkilendirin" msgid "If enabled, sets OrcaSlicer as default application to open .stl files" msgstr "" -"Etkinleştirilirse OrcaSlicer'ı .stl dosyalarını açmak için varsayılan uygulama " -"olarak ayarlar" +"Etkinleştirilirse OrcaSlicer'ı .stl dosyalarını açmak için varsayılan " +"uygulama olarak ayarlar" msgid "Associate .step/.stp files to OrcaSlicer" msgstr ".step/.stp dosyalarını OrcaSlicer ile ilişkilendirin" @@ -6868,10 +6903,11 @@ msgstr "Değiştirilmiş G-kodları içeren 3MF dosyalarını yüklerken uyarı msgid "Auto-Backup" msgstr "Otomatik yedekleme" -msgid "Backup your project periodically for restoring from the occasional crash." +msgid "" +"Backup your project periodically for restoring from the occasional crash." msgstr "" -"Ara sıra meydana gelen çökmelerden sonra geri yüklemek için projenizi düzenli " -"aralıklarla yedekleyin." +"Ara sıra meydana gelen çökmelerden sonra geri yüklemek için projenizi " +"düzenli aralıklarla yedekleyin." msgid "every" msgstr "her" @@ -7228,7 +7264,8 @@ msgid "Error code" msgstr "Hata kodu" msgid "No login account, only printers in LAN mode are displayed" -msgstr "Oturum açma hesabı yok, yalnızca LAN modundaki yazıcılar görüntüleniyor" +msgstr "" +"Oturum açma hesabı yok, yalnızca LAN modundaki yazıcılar görüntüleniyor" msgid "Connecting to server" msgstr "Sunucuya baglanıyor" @@ -7256,8 +7293,8 @@ msgid "" "Filament %s exceeds the number of AMS slots. Please update the printer " "firmware to support AMS slot assignment." msgstr "" -"%s filamenti AMS yuvası sayısını aşıyor. AMS yuvası atamasını desteklemek için " -"lütfen yazıcının ürün yazılımını güncelleyin." +"%s filamenti AMS yuvası sayısını aşıyor. AMS yuvası atamasını desteklemek " +"için lütfen yazıcının ürün yazılımını güncelleyin." msgid "" "Filament exceeds the number of AMS slots. Please update the printer firmware " @@ -7296,7 +7333,8 @@ msgstr "" "desteklemek için lütfen yazıcının ürün yazılımını güncelleyin." msgid "" -"The printer firmware only supports sequential mapping of filament => AMS slot." +"The printer firmware only supports sequential mapping of filament => AMS " +"slot." msgstr "" "Yazıcı ürün yazılımı yalnızca filament => AMS yuvasının sıralı eşlemesini " "destekler." @@ -7357,8 +7395,8 @@ 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." +"they are the required filaments. If they are okay, press \"Confirm\" to " +"start printing." msgstr "" "AMS eşlemelerinde bazı bilinmeyen filamentler var. Lütfen bunların gerekli " "filamentler olup olmadığını kontrol edin. Sorun yoksa, yazdırmayı başlatmak " @@ -7383,13 +7421,15 @@ msgstr "" #, c-format, boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle damage" +"Printing high temperature material(%s material) with %s may cause nozzle " +"damage" msgstr "" "Yüksek sıcaklıktaki malzemeyi (%s malzeme) %s ile yazdırmak püskürtme ucu " "hasarına neden olabilir" msgid "Please fix the error above, otherwise printing cannot continue." -msgstr "Lütfen yukarıdaki hatayı düzeltin, aksi takdirde yazdırma devam edemez." +msgstr "" +"Lütfen yukarıdaki hatayı düzeltin, aksi takdirde yazdırma devam edemez." msgid "" "Please click the confirm button if you still want to proceed with printing." @@ -7510,16 +7550,16 @@ msgstr "Şartlar ve koşullar" msgid "" "Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab " -"device, please read the terms and conditions.By clicking to agree to use your " -"Bambu Lab device, you agree to abide by the Privacy Policy and Terms of " +"device, please read the terms and conditions.By clicking to agree to use " +"your Bambu Lab device, you agree to abide by the Privacy Policy and 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 "" -"Bir Bambu Lab cihazı satın aldığınız için teşekkür ederiz.Bambu Lab cihazınızı " -"kullanmadan önce lütfen şartlar ve koşulları okuyun.Bambu Lab cihazınızı " -"kullanmayı kabul etmek için tıklayarak, Gizlilik Politikasına ve Kullanım " -"Koşullarına (topluca \"Şartlar\" olarak anılacaktır) uymayı kabul etmiş " -"olursunuz. \"). Bambu Lab Gizlilik Politikasına uymuyorsanız veya bu " +"Bir Bambu Lab cihazı satın aldığınız için teşekkür ederiz.Bambu Lab " +"cihazınızı kullanmadan önce lütfen şartlar ve koşulları okuyun.Bambu Lab " +"cihazınızı kullanmayı kabul etmek için tıklayarak, Gizlilik Politikasına ve " +"Kullanım Koşullarına (topluca \"Şartlar\" olarak anılacaktır) uymayı kabul " +"etmiş olursunuz. \"). Bambu Lab Gizlilik Politikasına uymuyorsanız veya bu " "Politikayı kabul etmiyorsanız lütfen Bambu Lab ekipmanlarını ve hizmetlerini " "kullanmayın." @@ -7543,11 +7583,11 @@ msgid "" "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." +"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 Baskı topluluğunda, kendi dilimleme parametrelerimizi ve ayarlarımızı " "düzenlerken birbirimizin başarılarından ve başarısızlıklarından öğreniyoruz. " @@ -7598,19 +7638,20 @@ msgid "Click to reset all settings to the last saved preset." msgstr "Tüm ayarları en son kaydedilen ön ayara sıfırlamak için tıklayın." msgid "" -"Prime tower is required for smooth timelapse. There may be flaws on the model " -"without prime tower. Are you sure you want to disable prime tower?" +"Prime tower is required for smooth timelapse. There may be flaws on the " +"model without prime tower. Are you sure you want to disable prime tower?" msgstr "" "Sorunsuz timeplace için Prime Tower gereklidir. Prime tower olmayan modelde " "kusurlar olabilir. Prime tower'ı devre dışı bırakmak istediğinizden emin " "misiniz?" 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?" +"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 "" -"Sorunsuz hızlandırılmış çekim için Prime Tower gereklidir. Prime tower olmayan " -"modelde kusurlar olabilir. Prime tower'ı etkinleştirmek istiyor musunuz?" +"Sorunsuz hızlandırılmış çekim için Prime Tower gereklidir. Prime tower " +"olmayan modelde kusurlar olabilir. Prime tower'ı etkinleştirmek istiyor " +"musunuz?" msgid "Still print by object?" msgstr "Hala nesneye göre yazdırıyor musunuz?" @@ -7635,12 +7676,12 @@ msgstr "" 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." +"settings: at least 2 interface layers, at least 0.1mm top z distance or " +"using support materials on interface." msgstr "" -"\"Güçlü Ağaç\" ve \"Ağaç Hibrit\" stilleri için şu ayarları öneriyoruz: en az " -"2 arayüz katmanı, en az 0,1 mm üst z mesafesi veya arayüzde destek malzemeleri " -"kullanılması." +"\"Güçlü Ağaç\" ve \"Ağaç Hibrit\" stilleri için şu ayarları öneriyoruz: en " +"az 2 arayüz katmanı, en az 0,1 mm üst z mesafesi veya arayüzde destek " +"malzemeleri kullanılması." msgid "" "When using support material for the support interface, We recommend the " @@ -7658,8 +7699,8 @@ msgid "" "precise dimensions or is part of an assembly, it's important to double-check " "whether this change in geometry impacts the functionality of your print." msgstr "" -"Bu seçeneğin etkinleştirilmesi modelin şeklini değiştirecektir. Baskınız kesin " -"boyutlar gerektiriyorsa veya bir montajın parçasıysa geometrideki bu " +"Bu seçeneğin etkinleştirilmesi modelin şeklini değiştirecektir. Baskınız " +"kesin boyutlar gerektiriyorsa veya bir montajın parçasıysa geometrideki bu " "değişikliğin baskınızın işlevselliğini etkileyip etkilemediğini bir kez daha " "kontrol etmeniz önemlidir." @@ -7674,11 +7715,12 @@ msgstr "" "min_layer_height olarak ayarlanacak\n" msgid "" -"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height " -"limits ,this may cause printing quality issues." +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." msgstr "" -"Katman yüksekliği, Yazıcı Ayarları -> Ekstruder -> Katman yüksekliği sınırları " -"bölümündeki sınırı aşıyor bu durum baskı kalitesi sorunlarına neden olabilir." +"Katman yüksekliği, Yazıcı Ayarları -> Ekstruder -> Katman yüksekliği " +"sınırları bölümündeki sınırı aşıyor bu durum baskı kalitesi sorunlarına " +"neden olabilir." msgid "Adjust to the set range automatically? \n" msgstr "Ayarlanan aralığa otomatik olarak ayarlansın mı? \n" @@ -7692,8 +7734,8 @@ msgstr "Atla" msgid "" "Experimental feature: Retracting and cutting off the filament at a greater " "distance during filament changes to minimize flush.Although it can notably " -"reduce flush, it may also elevate the risk of nozzle clogs or other printing " -"complications." +"reduce flush, it may also elevate the risk of nozzle clogs or other " +"printing complications." msgstr "" "Deneysel özellik: Filament değişiklikleri sırasında, floşu en aza indirmek " "için filamanı daha büyük bir mesafeden geri çekmek ve kesmek. Flush’u önemli " @@ -7708,15 +7750,15 @@ msgid "" msgstr "" "Deneysel özellik: Filament değişiklikleri sırasında, filamanın en aza " "indirilmesi için filamanın daha büyük bir mesafeden geri çekilmesi ve " -"kesilmesi. Akmayı önemli ölçüde azaltabilmesine rağmen, aynı zamanda püskürtme " -"uçları tıkanması veya diğer yazdırma komplikasyonları riskini de artırabilir. " -"Lütfen en son yazıcı ürün yazılımını kullanın." +"kesilmesi. Akmayı önemli ölçüde azaltabilmesine rağmen, aynı zamanda " +"püskürtme uçları tıkanması veya diğer yazdırma komplikasyonları riskini de " +"artırabilir. Lütfen en son yazıcı ürün yazılımını kullanın." 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" @@ -7730,7 +7772,8 @@ msgstr "" "Mevcut sistem ön ayarının, sistem ön ayarından ayrılacak bir kopyası " "oluşturulacaktır." -msgid "The current custom preset will be detached from the parent system preset." +msgid "" +"The current custom preset will be detached from the parent system preset." msgstr "Geçerli özel ön ayar, ana sistem ön ayarından ayrılacaktır." msgid "Modifications to the current profile will be saved." @@ -7834,13 +7877,13 @@ msgid "Overhang speed" msgstr "Çıkıntı Hızı" 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" +"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 "" "Bu, çeşitli sarkma dereceleri için hızdır. Çıkıntı dereceleri çizgi " -"genişliğinin yüzdesi olarak ifade edilir. 0 hız, sarkma derecesi aralığı için " -"yavaşlamanın olmadığı anlamına gelir ve duvar hızı kullanılır" +"genişliğinin yüzdesi olarak ifade edilir. 0 hız, sarkma derecesi aralığı " +"için yavaşlamanın olmadığı anlamına gelir ve duvar hızı kullanılır" msgid "Bridge" msgstr "Köprü" @@ -7952,8 +7995,8 @@ msgid "Cool Plate (SuperTack)" msgstr "Cool Plate (SuperTack)" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament does " -"not support to print on the Cool Plate SuperTack" +"Bed temperature when cool plate is installed. Value 0 means the filament " +"does not support to print on the Cool Plate SuperTack" msgstr "" "Cool Plate takıldığında yatak sıcaklığı. 0 değeri, filamentin Cool Plate " "SuperTack üzerine yazdırmayı desteklemediği anlamına gelir" @@ -7962,8 +8005,8 @@ msgid "Cool Plate" msgstr "Cool Plate" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament does " -"not support to print on the Cool Plate" +"Bed temperature when cool plate is installed. Value 0 means the filament " +"does not support to print on the Cool Plate" msgstr "" "Cool Plate takıldığında yatak sıcaklığı. 0 değeri, filamentin Cool Plate " "üzerine yazdırmayı desteklemediği anlamına gelir" @@ -7972,8 +8015,8 @@ msgid "Textured Cool plate" msgstr "Textured Cool Plate" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament does " -"not support to print on the Textured Cool Plate" +"Bed temperature when cool plate is installed. Value 0 means the filament " +"does not support to print on the Textured Cool Plate" msgstr "" "Cool Plate takıldığında yatak sıcaklığı. 0 Değeri, filamentin Textured Cool " "Plate üzerine yazdırmayı desteklemediği anlamına gelir" @@ -8026,15 +8069,15 @@ msgid "Min fan speed threshold" msgstr "Minimum fan hızı" 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" +"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 "" "Tahmini katman süresi ayardaki katman süresinden uzun olmadığında parça " -"soğutma fanı hızı minimum hızda çalışmaya başlayacaktır. Katman süresi eşikten " -"kısa olduğunda fan hızı, katman yazdırma süresine göre minimum ve maksimum fan " -"hızı arasında enterpole edilir" +"soğutma fanı hızı minimum hızda çalışmaya başlayacaktır. Katman süresi " +"eşikten kısa olduğunda fan hızı, katman yazdırma süresine göre minimum ve " +"maksimum fan hızı arasında enterpole edilir" msgid "Max fan speed threshold" msgstr "Maksimum fan hızı" @@ -8165,13 +8208,13 @@ msgstr "Yazıcının ekstruder sayısı." msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" -"Do you want to change the diameter for all extruders to first extruder nozzle " -"diameter value?" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" msgstr "" "Tek Ekstruder Çoklu Malzeme seçilir, \n" "ve tüm ekstrüderlerin aynı çapa sahip olması gerekir.\n" -"Tüm ekstruderlerin çapını ilk ekstruder bozul çapı değerine değiştirmek ister " -"misiniz?" +"Tüm ekstruderlerin çapını ilk ekstruder bozul çapı değerine değiştirmek " +"ister misiniz?" msgid "Nozzle diameter" msgstr "Nozul çapı" @@ -8245,8 +8288,8 @@ msgid "" "please reset the filament information for that slot." msgstr "" "Seçilen ön ayarı silmek istediğinizden emin misiniz? \n" -"Eğer ön ayar, şu anda yazıcınızda kullanılan bir filamente karşılık geliyorsa, " -"lütfen o slot için filament bilgilerini sıfırlayın." +"Eğer ön ayar, şu anda yazıcınızda kullanılan bir filamente karşılık " +"geliyorsa, lütfen o slot için filament bilgilerini sıfırlayın." #, boost-format msgid "Are you sure to %1% the selected preset?" @@ -8332,19 +8375,19 @@ msgstr "\"%1%\" ön ayarı aşağıdaki kaydedilmemiş değişiklikleri içeriyo #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new printer profile and it contains " -"the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new printer profile and it " +"contains the following unsaved changes:" msgstr "" "Ön ayar \"%1%\", yeni yazıcı profiliyle uyumlu değil ve aşağıdaki " "kaydedilmemiş değişiklikleri içeriyor:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new process profile and it contains " -"the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new process profile and it " +"contains the following unsaved changes:" msgstr "" -"Ön ayar \"%1%\", yeni işlem profiliyle uyumlu değil ve aşağıdaki kaydedilmemiş " -"değişiklikleri içeriyor:" +"Ön ayar \"%1%\", yeni işlem profiliyle uyumlu değil ve aşağıdaki " +"kaydedilmemiş değişiklikleri içeriyor:" #, boost-format msgid "You have changed some settings of preset \"%1%\". " @@ -8371,12 +8414,12 @@ msgstr "Daha önce ayarlarınızı değiştirdiniz." msgid "" "\n" -"You can discard the preset values you have modified, or choose to transfer the " -"modified values to the new project" +"You can discard the preset values you have modified, or choose to transfer " +"the modified values to the new project" msgstr "" "\n" -"Değiştirdiğiniz ön ayar değerlerini atabilir veya değiştirilen değerleri yeni " -"projeye aktarmayı seçebilirsiniz." +"Değiştirdiğiniz ön ayar değerlerini atabilir veya değiştirilen değerleri " +"yeni projeye aktarmayı seçebilirsiniz." msgid "Extruders count" msgstr "Ekstruder sayısı" @@ -8400,19 +8443,19 @@ msgstr "" msgid "" "Transfer the selected options from left preset to the right.\n" -"Note: New modified presets will be selected in settings tabs after close this " -"dialog." +"Note: New modified presets will be selected in settings tabs after close " +"this dialog." msgstr "" "Seçilen seçenekleri sol ön ayardan sağa aktarın.\n" -"Not: Bu iletişim kutusunu kapattıktan sonra ayarlar sekmelerinde değiştirilen " -"yeni ön ayarlar seçilecektir." +"Not: Bu iletişim kutusunu kapattıktan sonra ayarlar sekmelerinde " +"değiştirilen yeni ön ayarlar seçilecektir." msgid "Transfer values from left to right" msgstr "Değerleri soldan sağa aktarın" msgid "" -"If enabled, this dialog can be used for transfer selected values from left to " -"right preset." +"If enabled, this dialog can be used for transfer selected values from left " +"to right preset." msgstr "" "Etkinleştirilirse, bu iletişim kutusu seçilen değerleri soldan sağa ön ayara " "aktarmak için kullanılabilir." @@ -8553,22 +8596,22 @@ msgstr "Sıkıştırma özelleştirme" 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" +"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 "" "Sıkıştırma, tek ekstruderli bir MM yazıcıda takım değişiminden hemen önce " -"yapılan hızlı ekstrüzyonu ifade eder. Amacı, yeni filamentin yerleştirilmesini " -"engellememesi ve daha sonra yeniden yerleştirilebilmesi için boşaltılmış " -"filamentin ucunu düzgün bir şekilde şekillendirmektir. Bu aşama önemlidir ve " -"farklı malzemeler iyi bir şekil elde etmek için farklı ekstrüzyon hızları " -"gerektirebilir. Bu nedenle, sıkıştırma sırasındaki ekstrüzyon hızları " -"ayarlanabilir.\n" +"yapılan hızlı ekstrüzyonu ifade eder. Amacı, yeni filamentin " +"yerleştirilmesini engellememesi ve daha sonra yeniden yerleştirilebilmesi " +"için boşaltılmış filamentin ucunu düzgün bir şekilde şekillendirmektir. Bu " +"aşama önemlidir ve farklı malzemeler iyi bir şekil elde etmek için farklı " +"ekstrüzyon hızları gerektirebilir. Bu nedenle, sıkıştırma sırasındaki " +"ekstrüzyon hızları ayarlanabilir.\n" "\n" "Bu uzman düzeyinde bir ayardır, yanlış ayarlama muhtemelen sıkışmalara, " "ekstruder tekerleğinin filamente sürtünmesine vb. yol açacaktır." @@ -8635,22 +8678,22 @@ msgid "To" msgstr "İle" msgid "" -"Windows Media Player is required for this task! Do you want to enable 'Windows " -"Media Player' for your operation system?" +"Windows Media Player is required for this task! Do you want to enable " +"'Windows Media Player' for your operation system?" msgstr "" "Bu görev için Windows Media Player gereklidir! İşletim sisteminiz için " "‘Windows Media Player’ı etkinleştirmek istiyor musunuz?" msgid "" -"BambuSource has not correctly been registered for media playing! Press Yes to " -"re-register it. You will be promoted twice" +"BambuSource has not correctly been registered for media playing! Press Yes " +"to re-register it. You will be promoted twice" msgstr "" -"BambuSource medya oynatımı için doğru şekilde kaydedilmemiş! Yeniden kaydetmek " -"için Evet’e basın." +"BambuSource medya oynatımı için doğru şekilde kaydedilmemiş! Yeniden " +"kaydetmek için Evet’e basın." msgid "" -"Missing BambuSource component registered for media playing! Please re-install " -"BambuStudio or seek after-sales help." +"Missing BambuSource component registered for media playing! Please re-" +"install BambuStudio or seek after-sales help." msgstr "" "Medya oynatma için kayıtlı BambuSource bileşeni eksik! Lütfen BambuStudio’yu " "yeniden yükleyin veya satış sonrası yardım isteyin." @@ -8663,9 +8706,9 @@ msgstr "" "çalışmayabilir! Düzeltmek için Evet’e basın." msgid "" -"Your system is missing H.264 codecs for GStreamer, which are required to play " -"video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav " -"packages, then restart Orca Slicer?)" +"Your system is missing H.264 codecs for GStreamer, which are required to " +"play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-" +"libav packages, then restart Orca Slicer?)" msgstr "" "Sisteminizde video oynatmak için gerekli olan GStreamer H.264 codec " "bileşenleri eksik. (gstreamer1.0-plugins-bad veya gstreamer1.0-libav " @@ -8735,9 +8778,9 @@ 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." +"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 "" "Seçilen nesneleri veya tüm nesneleri otomatik olarak yönlendirir. Seçilen " "nesneler varsa, yalnızca seçilenleri yönlendirir. Aksi takdirde, geçerli " @@ -8960,8 +9003,8 @@ msgstr "Ağ eklentisi güncellemesi" msgid "" "Click OK to update the Network plug-in when Orca Slicer launches next time." msgstr "" -"Orca Slicer bir sonraki sefer başlatıldığında Ağ eklentisini güncellemek için " -"Tamam'a tıklayın." +"Orca Slicer bir sonraki sefer başlatıldığında Ağ eklentisini güncellemek " +"için Tamam'a tıklayın." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" @@ -9018,7 +9061,8 @@ msgstr "Nozulu Onaylayın ve Güncelleyin" msgid "Connect the printer using IP and access code" msgstr "IP ve erişim kodunu kullanarak yazıcıyı bağlayın" -msgid "Step 1. Please confirm Orca Slicer and your printer are in the same LAN." +msgid "" +"Step 1. Please confirm Orca Slicer and your printer are in the same LAN." msgstr "" "1. Adım: Lütfen Orca Slicer ve yazıcınızın aynı LAN’da olduğunu onaylayın." @@ -9030,8 +9074,8 @@ msgstr "" "farklıysa, lütfen bunları düzeltin." msgid "" -"Step 3. Please obtain the device SN from the printer side; it is usually found " -"in the device information on the printer screen." +"Step 3. Please obtain the device SN from the printer side; it is usually " +"found in the device information on the printer screen." msgstr "" "3. Adım: Lütfen yazıcı tarafından cihaz SN’sini edinin; genellikle yazıcı " "ekranındaki cihaz bilgilerinde bulunur." @@ -9114,8 +9158,8 @@ msgid "Updating successful" msgstr "Güncelleme başarılı" 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." +"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 "" "Güncellemek istediğinizden emin misiniz? Bu yaklaşık 10 dakika sürecektir. " "Yazıcı güncellenirken gücü kapatmayın." @@ -9134,9 +9178,10 @@ msgid "" "printing. Do you want to update now? You can also update later on printer or " "update next time starting Orca." msgstr "" -"Ürün yazılımı sürümü anormal. Yazdırmadan önce onarım ve güncelleme yapılması " -"gerekir. Şimdi güncellemek istiyor musunuz? Ayrıca daha sonra yazıcıda " -"güncelleyebilir veya stüdyoyu bir sonraki başlatışınızda güncelleyebilirsiniz." +"Ürün yazılımı sürümü anormal. Yazdırmadan önce onarım ve güncelleme " +"yapılması gerekir. Şimdi güncellemek istiyor musunuz? Ayrıca daha sonra " +"yazıcıda güncelleyebilir veya stüdyoyu bir sonraki başlatışınızda " +"güncelleyebilirsiniz." msgid "Extension Board" msgstr "Uzatma Kartı" @@ -9208,8 +9253,8 @@ msgid "Open G-code file:" msgstr "G kodu dosyasını açın:" msgid "" -"One object has empty initial layer and can't be printed. Please Cut the bottom " -"or enable supports." +"One object has empty initial layer and can't be printed. Please Cut the " +"bottom or enable supports." msgstr "" "Bir nesnenin başlangıç katmanı boş ve yazdırılamıyor. Lütfen alt kısmı kesin " "veya destekleri etkinleştirin." @@ -9294,8 +9339,8 @@ msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "%1% çizgi genişliği hesaplanamadı. \"%2%\" değeri alınamıyor " msgid "" -"Invalid spacing supplied to Flow::with_spacing(), check your layer height and " -"extrusion width" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" msgstr "" "Flow::with_spacing()'e sağlanan geçersiz boşluk, kat yüksekliğinizi ve " "ekstrüzyon genişliğinizi kontrol edin" @@ -9428,8 +9473,8 @@ msgstr " dışlama alanına çok yakın ve çarpışmalara neden olacak.\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" +"together. Otherwise, the extruder and nozzle may be blocked or damaged " +"during printing" msgstr "" "Birlikte büyük sıcaklık farkına sahip birden fazla filament basılamaz. Aksi " "takdirde baskı sırasında ekstruder ve nozul tıkanabilir veya hasar görebilir" @@ -9445,11 +9490,11 @@ msgstr "" "modu desteklenmez." msgid "" -"Please select \"By object\" print sequence to print multiple objects in spiral " -"vase mode." +"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 " @@ -9470,8 +9515,8 @@ msgstr "%1% nesnesi maksimum yapı hacmi yüksekliğini aşıyor." #, boost-format msgid "" -"While the object %1% itself fits the build volume, its last layer exceeds the " -"maximum build volume height." +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." msgstr "" "%1% nesnesinin kendisi yapı hacmine uysa da, son katmanı maksimum yapı hacmi " "yüksekliğini aşıyor." @@ -9487,9 +9532,9 @@ 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 may not work well " -"when the prime tower is enabled. It's very experimental, so please proceed " -"with caution." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" "Farklı püskürtme ucu çapları ve farklı filaman çapları, ana kule " "etkinleştirildiğinde iyi çalışmayabilir. Oldukça deneysel olduğundan lütfen " @@ -9520,11 +9565,11 @@ msgid "The prime tower is not supported in \"By object\" print." msgstr "Prime tower, \"Nesneye göre\" yazdırmada desteklenmez." msgid "" -"The prime tower is not supported when adaptive layer height is on. It requires " -"that all objects have the same layer height." +"The prime tower is not supported when adaptive layer height is on. It " +"requires that all objects have the same layer height." msgstr "" -"Uyarlanabilir katman yüksekliği açıkken ana kule desteklenmez. Tüm nesnelerin " -"aynı katman yüksekliğine sahip olmasını gerektirir." +"Uyarlanabilir katman yüksekliği açıkken ana kule desteklenmez. Tüm " +"nesnelerin aynı katman yüksekliğine sahip olmasını gerektirir." msgid "The prime tower requires \"support gap\" to be multiple of layer height" msgstr "" @@ -9532,11 +9577,12 @@ msgstr "" msgid "The prime tower requires that all objects have the same layer heights" msgstr "" -"Prime tower, tüm nesnelerin aynı katman yüksekliğine sahip olmasını gerektirir" +"Prime tower, tüm nesnelerin aynı katman yüksekliğine sahip olmasını " +"gerektirir" msgid "" -"The prime tower requires that all objects are printed over the same number of " -"raft layers" +"The prime tower requires that all objects are printed over the same number " +"of raft layers" msgstr "" "Ana kule, tüm nesnelerin aynı sayıda sal katmanı üzerine yazdırılmasını " "gerektirir" @@ -9549,8 +9595,8 @@ msgstr "" "gerektirir." msgid "" -"The prime tower is only supported if all objects have the same variable layer " -"height" +"The prime tower is only supported if all objects have the same variable " +"layer height" msgstr "" "Prime tower yalnızca tüm nesnelerin aynı değişken katman yüksekliğine sahip " "olması durumunda desteklenir" @@ -9564,7 +9610,8 @@ msgstr "Çok büyük çizgi genişliği" msgid "" "The prime tower requires that support has the same layer height with object." msgstr "" -"Prime kulesi için, destek, nesne ile aynı katman yüksekliğine sahip olmalıdır." +"Prime kulesi için, destek, nesne ile aynı katman yüksekliğine sahip " +"olmalıdır." msgid "" "Organic support tree tip diameter must not be smaller than support material " @@ -9577,8 +9624,8 @@ msgid "" "Organic support branch diameter must not be smaller than 2x support material " "extrusion width." msgstr "" -"Organik destek dalı çapı, destek malzemesi ekstrüzyon genişliğinin 2 katından " -"daha küçük olamaz." +"Organik destek dalı çapı, destek malzemesi ekstrüzyon genişliğinin 2 " +"katından daha küçük olamaz." msgid "" "Organic support branch diameter must not be smaller than support tree tip " @@ -9595,32 +9642,34 @@ msgid "Layer height cannot exceed nozzle diameter" msgstr "Katman yüksekliği nozul çapını aşamaz" msgid "" -"Relative extruder addressing requires resetting the extruder position at each " -"layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " +"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 "" -"Göreceli ekstruder adreslemesi, kayan nokta doğruluğunun kaybını önlemek için " -"her katmandaki ekstruder konumunun sıfırlanmasını gerektirir. Layer_gcode'a " -"\"G92 E0\" ekleyin." +"Göreceli ekstruder adreslemesi, kayan nokta doğruluğunun kaybını önlemek " +"için her katmandaki ekstruder konumunun sıfırlanmasını gerektirir. " +"Layer_gcode'a \"G92 E0\" ekleyin." msgid "" "\"G92 E0\" was found in before_layer_gcode, which is incompatible with " "absolute extruder addressing." msgstr "" -"Before_layer_gcode'da \"G92 E0\" bulundu ve bu, mutlak ekstruder adreslemeyle " -"uyumsuzdu." +"Before_layer_gcode'da \"G92 E0\" bulundu ve bu, mutlak ekstruder " +"adreslemeyle uyumsuzdu." msgid "" "\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " "extruder addressing." msgstr "" -"Layer_gcode'da mutlak ekstruder adreslemeyle uyumlu olmayan \"G92 E0\" bulundu." +"Layer_gcode'da mutlak ekstruder adreslemeyle uyumlu olmayan \"G92 E0\" " +"bulundu." #, c-format, boost-format msgid "Plate %d: %s does not support filament %s" msgstr "Plaka %d: %s, %s filamentini desteklemiyor" -msgid "Setting the jerk speed too low could lead to artifacts on curved surfaces" +msgid "" +"Setting the jerk speed too low could lead to artifacts on curved surfaces" msgstr "" "Sarsıntı hızının çok düşük ayarlanması kavisli yüzeylerde bozulmalara neden " "olabilir" @@ -9630,8 +9679,8 @@ msgid "" "machine_max_jerk_y).\n" "Orca will automatically cap the jerk speed to ensure it doesn't surpass the " "printer's capabilities.\n" -"You can adjust the maximum jerk setting in your printer's configuration to get " -"higher speeds." +"You can adjust the maximum jerk setting in your printer's configuration to " +"get higher speeds." msgstr "" "Sarsıntı ayarı yazıcının maksimum sarsıntısını aşıyor (machine_max_jerk_x/" "machine_max_jerk_y).\n" @@ -9645,8 +9694,8 @@ msgid "" "(machine_max_acceleration_extruding).\n" "Orca will automatically cap the acceleration speed to ensure it doesn't " "surpass the printer's capabilities.\n" -"You can adjust the machine_max_acceleration_extruding value in your printer's " -"configuration to get higher speeds." +"You can adjust the machine_max_acceleration_extruding value in your " +"printer's configuration to get higher speeds." msgstr "" "Hızlanma ayarı yazıcının maksimum hızlanmasını aşıyor " "(machine_max_acceleration_extruding).\n" @@ -9658,8 +9707,8 @@ msgstr "" msgid "" "The travel acceleration setting exceeds the printer's maximum travel " "acceleration (machine_max_acceleration_travel).\n" -"Orca will automatically cap the travel acceleration speed to ensure it doesn't " -"surpass the printer's capabilities.\n" +"Orca will automatically cap the travel acceleration speed to ensure it " +"doesn't surpass the printer's capabilities.\n" "You can adjust the machine_max_acceleration_travel value in your printer's " "configuration to get higher speeds." msgstr "" @@ -9674,8 +9723,8 @@ msgid "" "Filament shrinkage will not be used because filament shrinkage for the used " "filaments differs significantly." msgstr "" -"Filament büzülmesi kullanılmayacaktır çünkü kullanılan filamentlerin filament " -"büzülmesi önemli ölçüde farklılık göstermektedir." +"Filament büzülmesi kullanılmayacaktır çünkü kullanılan filamentlerin " +"filament büzülmesi önemli ölçüde farklılık göstermektedir." msgid "Generating skirt & brim" msgstr "Etek ve kenar oluşturma" @@ -9714,7 +9763,8 @@ msgid "Elephant foot compensation" msgstr "Fil ayağı telafi oranı" msgid "" -"Shrink the initial layer on build plate to compensate for elephant foot effect" +"Shrink the initial layer on build plate to compensate for elephant foot " +"effect" msgstr "" "Fil ayağı etkisini telafi etmek için baskı plakasındaki ilk katmanı küçültün" @@ -9738,8 +9788,8 @@ msgid "" "Slicing height for each layer. Smaller layer height means more accurate and " "more printing time" msgstr "" -"Her katman için dilimleme yüksekliği. Daha küçük katman yüksekliği, daha doğru " -"ve daha fazla baskı süresi anlamına gelir" +"Her katman için dilimleme yüksekliği. Daha küçük katman yüksekliği, daha " +"doğru ve daha fazla baskı süresi anlamına gelir" msgid "Printable height" msgstr "Yazdırılabilir yükseklik" @@ -9763,8 +9813,8 @@ msgstr "3. taraf yazdırma ana bilgisayarını kullanın" msgid "Allow controlling BambuLab's printer through 3rd party print hosts" msgstr "" -"BambuLab yazıcısının 3. taraf yazdırma ana bilgisayarları aracılığıyla kontrol " -"edilmesine izin ver" +"BambuLab yazıcısının 3. taraf yazdırma ana bilgisayarları aracılığıyla " +"kontrol edilmesine izin ver" msgid "Hostname, IP or URL" msgstr "Ana bilgisayar adı, IP veya URL" @@ -9773,15 +9823,15 @@ msgid "" "Orca Slicer 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/" +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " -"alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini veya " -"URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu HAProxy'nin " -"arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve parolanın aşağıdaki " -"biçimdeki URL'ye girilmesiyle erişilebilir: https://username:password@your-" -"octopi-address/" +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " +"Bu alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini " +"veya URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu " +"HAProxy'nin arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve " +"parolanın aşağıdaki biçimdeki URL'ye girilmesiyle erişilebilir: https://" +"username:password@your-octopi-address/" msgid "Device UI" msgstr "Cihaz kullanıcı arayüzü" @@ -9789,7 +9839,8 @@ msgstr "Cihaz kullanıcı arayüzü" msgid "" "Specify the URL of your device user interface if it's not same as print_host" msgstr "" -"Print_Host ile aynı değilse cihazınızın kullanıcı arayüzünün URL'sini belirtin" +"Print_Host ile aynı değilse cihazınızın kullanıcı arayüzünün URL'sini " +"belirtin" msgid "API Key / Password" msgstr "API Anahtarı / Şifre" @@ -9798,8 +9849,9 @@ msgid "" "Orca Slicer can upload G-code files to a printer host. This field should " "contain the API Key or the password required for authentication." msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " -"alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi içermelidir." +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " +"Bu alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi " +"içermelidir." msgid "Name of the printer" msgstr "Yazıcı adı" @@ -9809,11 +9861,12 @@ msgstr "HTTPS CA Dosyası" 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." +"in crt/pem format. If left blank, the default OS CA certificate repository " +"is used." msgstr "" -"HTTPS OctoPrint bağlantıları için crt/pem formatında özel CA sertifika dosyası " -"belirtilebilir. Boş bırakılırsa varsayılan OS CA sertifika deposu kullanılır." +"HTTPS OctoPrint bağlantıları için crt/pem formatında özel CA sertifika " +"dosyası belirtilebilir. Boş bırakılırsa varsayılan OS CA sertifika deposu " +"kullanılır." msgid "User" msgstr "Kullanıcı" @@ -9830,8 +9883,8 @@ msgid "" "certificates if connection fails." msgstr "" "Eksik veya çevrimdışı dağıtım noktaları olması durumunda HTTPS sertifikası " -"iptal kontrollerini göz ardı edin. Bağlantı başarısız olursa, kendinden imzalı " -"sertifikalar için bu seçeneğin etkinleştirilmesi istenebilir." +"iptal kontrollerini göz ardı edin. Bağlantı başarısız olursa, kendinden " +"imzalı sertifikalar için bu seçeneğin etkinleştirilmesi istenebilir." msgid "Names of presets related to the physical printer" msgstr "Fiziksel yazıcıyla ilgili ön ayarların adları" @@ -9855,15 +9908,15 @@ msgid "Avoid crossing wall - Max detour length" msgstr "Duvarı geçmekten kaçının - maksimum servis yolu uzunluğu" 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" +"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 "" -"Duvarı geçmekten kaçınmak için maksimum sapma mesafesi. Yoldan sapma mesafesi " -"bu değerden büyükse yoldan sapmayın. Yol uzunluğu, mutlak bir değer olarak " -"veya doğrudan seyahat yolunun yüzdesi (örneğin %50) olarak belirtilebilir. " -"Devre dışı bırakmak için sıfır" +"Duvarı geçmekten kaçınmak için maksimum sapma mesafesi. Yoldan sapma " +"mesafesi bu değerden büyükse yoldan sapmayın. Yol uzunluğu, mutlak bir değer " +"olarak veya doğrudan seyahat yolunun yüzdesi (örneğin %50) olarak " +"belirtilebilir. Devre dışı bırakmak için sıfır" msgid "mm or %" msgstr "mm veya %" @@ -9872,39 +9925,39 @@ msgid "Other layers" msgstr "Diğer katmanlar" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament " -"does not support to print on the Cool Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Cool Plate" msgstr "" -"İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin Cool " -"Plate üzerine yazdırmayı desteklemediği anlamına gelir" +"İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin " +"Cool Plate üzerine yazdırmayı desteklemediği anlamına gelir" 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 Textured Cool Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured Cool Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 Değeri, filamentin " "Dokulu Soğuk Plaka üzerine yazdırmayı desteklemediği anlamına gelir." msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament " -"does not support to print on the Engineering Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Engineering Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. Değer 0, filamentin " "Mühendislik Plakasına yazdırmayı desteklemediği anlamına gelir" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament " -"does not support to print on the High Temp Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the High Temp Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin " "Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına gelir" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament " -"does not support to print on the Textured PEI Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 Değeri, filamentin " "Dokulu PEI Plaka üzerine yazdırmayı desteklemediği anlamına gelir" @@ -9933,8 +9986,8 @@ msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Textured Cool Plate" msgstr "" -"İlk katmanın yatak sıcaklığı. 0 Değeri, filamentin Dokulu Soğuk Plaka üzerine " -"yazdırmayı desteklemediği anlamına gelir." +"İlk katmanın yatak sıcaklığı. 0 Değeri, filamentin Dokulu Soğuk Plaka " +"üzerine yazdırmayı desteklemediği anlamına gelir." msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " @@ -10005,55 +10058,57 @@ msgstr "Alt katman kalınlığı" 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 determined by bottom " +"having too thin shell when layer height is small. 0 means that this setting " +"is disabled and thickness of bottom shell is absolutely determined by bottom " "shell layers" msgstr "" -"Alt kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince ise " -"dilimleme sırasında alt katı katmanların sayısı arttırılır. Bu, katman " -"yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu ayarın " -"devre dışı olduğu ve alt kabuğun kalınlığının mutlaka alt kabuk katmanları " -"tarafından belirlendiği anlamına gelir" +"Alt kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince " +"ise dilimleme sırasında alt katı katmanların sayısı arttırılır. Bu, katman " +"yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu " +"ayarın devre dışı olduğu ve alt kabuğun kalınlığının mutlaka alt kabuk " +"katmanları tarafından belirlendiği anlamına gelir" msgid "Apply gap fill" msgstr "Boşluk doldurmayı uygula" msgid "" -"Enables gap fill for the selected solid surfaces. The minimum gap length that " -"will be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces for " -"maximum strength\n" -"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces only, " -"balancing print speed, reducing potential over extrusion in the solid infill " -"and making sure the top and bottom surfaces have no pin hole gaps\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" +"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" "3. Nowhere: Disables gap fill for all solid infill areas. \n" "\n" "Note that if using the classic perimeter generator, gap fill may also be " "generated between perimeters, if a full width line cannot fit between them. " "That perimeter gap fill is not controlled by this setting. \n" "\n" -"If you would like all gap fill, including the classic perimeter generated one, " -"removed, set the filter out tiny gaps value to a large number, like 999999. \n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" "\n" -"However this is not advised, as gap fill between perimeters is contributing to " -"the model's strength. For models where excessive gap fill is generated between " -"perimeters, a better option would be to switch to the arachne wall generator " -"and use this option to control whether the cosmetic top and bottom surface gap " -"fill is generated" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" msgstr "" "Seçilen katı yüzeyler için boşluk doldurmayı etkinleştirir. Doldurulacak " "minimum boşluk uzunluğu aşağıdaki küçük boşlukları filtrele seçeneğinden " "kontrol edilebilir.\n" "\n" "Seçenekler:\n" -"1. Her Yerde: Maksimum dayanıklılık için üst, alt ve iç katı yüzeylere boşluk " -"dolgusu uygular\n" +"1. Her Yerde: Maksimum dayanıklılık için üst, alt ve iç katı yüzeylere " +"boşluk dolgusu uygular\n" "2. Üst ve Alt yüzeyler: Boşluk dolgusunu yalnızca üst ve alt yüzeylere " "uygulayarak baskı hızını dengeler, katı dolgudaki aşırı ekstrüzyon " -"potansiyelini azaltır ve üst ve alt yüzeylerde iğne deliği boşluğu kalmamasını " -"sağlar\n" +"potansiyelini azaltır ve üst ve alt yüzeylerde iğne deliği boşluğu " +"kalmamasını sağlar\n" "3. Hiçbir Yer: Tüm katı dolgu alanları için boşluk doldurmayı devre dışı " "bırakır. \n" "\n" @@ -10062,8 +10117,8 @@ msgstr "" "unutmayın. Bu çevre boşluğu dolgusu bu ayarla kontrol edilmez. \n" "\n" "Oluşturulan klasik çevre de dahil olmak üzere tüm boşluk doldurmanın " -"kaldırılmasını istiyorsanız, filtreyi küçük boşluklar dışında değerini 999999 " -"gibi büyük bir sayıya ayarlayın. \n" +"kaldırılmasını istiyorsanız, filtreyi küçük boşluklar dışında değerini " +"999999 gibi büyük bir sayıya ayarlayın. \n" "\n" "Ancak çevreler arasındaki boşluğun doldurulması modelin gücüne katkıda " "bulunduğundan bu önerilmez. Çevreler arasında aşırı boşluk dolgusunun " @@ -10100,31 +10155,33 @@ msgstr "Çıkıntılar ve dış köprüler fan hızı" msgid "" "Use this part cooling fan speed when printing bridges or overhang walls with " "an overhang threshold that exceeds the value set in the 'Overhangs cooling " -"threshold' parameter above. Increasing the cooling specifically for overhangs " -"and bridges can improve the overall print quality of these features.\n" +"threshold' parameter above. Increasing the cooling specifically for " +"overhangs and bridges can improve the overall print quality of these " +"features.\n" "\n" "Please note, this fan speed is clamped on the lower end by the minimum fan " "speed threshold set above. It is also adjusted upwards up to the maximum fan " "speed threshold when the minimum layer time threshold is not met." msgstr "" -"Yukarıdaki ‘Çıkıntılar soğutma eşiği’ parametresinde ayarlanan değeri aşan bir " -"çıkıntı eşiğine sahip köprüleri veya çıkıntı duvarlarını yazdırırken bu parça " -"soğutma fanı hızını kullanın. Özellikle çıkıntılar ve köprüler için soğutmanın " -"artırılması, bu özelliklerin genel baskı kalitesini artırabilir.\n" +"Yukarıdaki ‘Çıkıntılar soğutma eşiği’ parametresinde ayarlanan değeri aşan " +"bir çıkıntı eşiğine sahip köprüleri veya çıkıntı duvarlarını yazdırırken bu " +"parça soğutma fanı hızını kullanın. Özellikle çıkıntılar ve köprüler için " +"soğutmanın artırılması, bu özelliklerin genel baskı kalitesini artırabilir.\n" "\n" -"Lütfen bu fan hızının yukarıda ayarlanan minimum fan hızı eşiği tarafından alt " -"uçta sıkıştırıldığını unutmayın. Ayrıca minimum katman süresi eşiği " +"Lütfen bu fan hızının yukarıda ayarlanan minimum fan hızı eşiği tarafından " +"alt uçta sıkıştırıldığını unutmayın. Ayrıca minimum katman süresi eşiği " "karşılanmadığında maksimum fan hızı eşiğine kadar yukarı doğru ayarlanır." msgid "Overhang cooling activation threshold" msgstr "Çıkıntı soğutma etkinleştirme eşiği" +#, fuzzy, no-c-format, no-boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " -"percentage, indicating the portion of each line's width that is unsupported by " -"the layer beneath it. Setting this value to 0% forces the cooling fan to run " -"for all outer walls, regardless of the overhang degree." +"percentage, indicating the portion of each line's width that is unsupported " +"by the layer beneath it. Setting this value to 0% forces the cooling fan to " +"run for all outer walls, regardless of the overhang degree." msgstr "" "Çıkıntı bu belirtilen eşiği aştığında, soğutma fanını aşağıda ayarlanan " "Çıkıntı Fan Hızında çalışmaya zorlayın. Bu eşik yüzde olarak ifade edilir ve " @@ -10135,6 +10192,7 @@ msgstr "" msgid "External bridge infill direction" msgstr "Dış köprü dolgu yönü" +#, no-c-format, no-boost-format msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for " @@ -10148,8 +10206,8 @@ msgid "Internal bridge infill direction" msgstr "İç köprü dolgu yönü" msgid "" -"Internal bridging angle override. If left to zero, the bridging angle will be " -"calculated automatically. Otherwise the provided angle will be used for " +"Internal bridging angle override. If left to zero, the bridging angle will " +"be calculated automatically. Otherwise the provided angle will be used for " "internal bridges. Use 180°for zero angle.\n" "\n" "It is recommended to leave it at 0 unless there is a specific model need not " @@ -10175,9 +10233,9 @@ msgstr "" "Dış köprü çizgilerinin yoğunluğunu (aralığını) kontrol eder. 100 katı köprü " "anlamına gelir. Varsayılan değer %100’dür.\n" "\n" -"Daha düşük yoğunluklu dış köprüler güvenilirliği artırmaya yardımcı olabilir, " -"çünkü havanın ekstrüde köprünün etrafında dolaşması için daha fazla alan " -"vardır ve soğutma hızını artırır." +"Daha düşük yoğunluklu dış köprüler güvenilirliği artırmaya yardımcı " +"olabilir, çünkü havanın ekstrüde köprünün etrafında dolaşması için daha " +"fazla alan vardır ve soğutma hızını artırır." msgid "Internal bridge density" msgstr "İç köprü yoğunluğu" @@ -10210,8 +10268,8 @@ msgid "Bridge flow ratio" msgstr "Köprülerde akış oranı" msgid "" -"Decrease this value slightly(for example 0.9) to reduce the amount of material " -"for bridge, to improve sag. \n" +"Decrease this value slightly(for example 0.9) to reduce the amount of " +"material for bridge, to improve sag. \n" "\n" "The actual bridge flow used is calculated by multiplying this value with the " "filament flow ratio, and if set, the object's flow ratio." @@ -10227,12 +10285,12 @@ msgstr "İç köprü akış oranı" 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.\n" +"first layer over sparse infill. Decrease this value slightly (for example " +"0.9) to improve surface quality over sparse infill.\n" "\n" "The actual internal bridge flow used is calculated by multiplying this value " -"with the bridge flow ratio, the filament flow ratio, and if set, the object's " -"flow ratio." +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" "Bu değer iç köprü katmanının kalınlığını belirler. Bu, seyrek dolgunun " "üzerindeki ilk katmandır. Seyrek dolguya göre yüzey kalitesini iyileştirmek " @@ -10248,8 +10306,8 @@ msgid "" "This factor affects the amount of material for top solid infill. You can " "decrease it slightly to have smooth surface finish. \n" "\n" -"The actual top surface flow used is calculated by multiplying this value with " -"the filament flow ratio, and if set, the object's flow ratio." +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." msgstr "" "Bu faktör üst katı dolgu için malzeme miktarını etkiler. Pürüzsüz bir yüzey " "elde etmek için bunu biraz azaltabilirsiniz. \n" @@ -10299,17 +10357,17 @@ 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" +"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 if you have some thin features " "on the next layer, like letters. Set this setting to 0 to remove these " "artifacts." msgstr "" -"Eğer bir üst yüzey basılacaksa ve kısmen başka bir katman tarafından kaplıysa " -"layer genişliği bu değerin altında olan bir üst katman olarak " +"Eğer bir üst yüzey basılacaksa ve kısmen başka bir katman tarafından " +"kaplıysa layer genişliği bu değerin altında olan bir üst katman olarak " "değerlendirilmeyecek. Yalnızca çevrelerle kaplanması gereken yüzeyde 'bir " -"çevre üstte' tetiklemesine izin vermemek yararlı olabilir. Bu değer mm veya a " -"% çevre ekstrüzyon genişliğinin bir yüzdesi olabilir.\n" +"çevre üstte' tetiklemesine izin vermemek yararlı olabilir. Bu değer mm veya " +"a % çevre ekstrüzyon genişliğinin bir yüzdesi olabilir.\n" "Uyarı: Etkinleştirilirse bir sonraki katmanda harfler gibi bazı ince " "özelliklerin olması durumunda yapay yapılar oluşturulabilir. Bu yapıları " "kaldırmak için bu ayarı 0 olarak ayarlayın." @@ -10328,11 +10386,11 @@ msgid "Extra perimeters on overhangs" msgstr "Çıkıntılarda ekstra çevre (perimeter)" msgid "" -"Create additional perimeter paths over steep overhangs and areas where bridges " -"cannot be anchored. " +"Create additional perimeter paths over steep overhangs and areas where " +"bridges cannot be anchored. " msgstr "" -"Dik çıkıntılar ve köprülerin sabitlenemediği alanlar üzerinde ek çevre yolları " -"(perimeter) oluşturun. " +"Dik çıkıntılar ve köprülerin sabitlenemediği alanlar üzerinde ek çevre " +"yolları (perimeter) oluşturun. " msgid "Reverse on even" msgstr "Çiftleri ters çevirin" @@ -10341,9 +10399,9 @@ msgid "Overhang reversal" msgstr "Çıkıntıyı tersine çevir" msgid "" -"Extrude perimeters that have a part over an overhang in the reverse direction " -"on even layers. This alternating pattern can drastically improve steep " -"overhangs.\n" +"Extrude perimeters that have a part over an overhang in the reverse " +"direction on even 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." @@ -10362,10 +10420,11 @@ 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" +"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 recommended to set the " "Reverse Threshold to 0 so that all internal walls print in alternating " @@ -10380,16 +10439,16 @@ msgstr "" "Ayrıca destekler üzerindeki yüzen bölgelerdeki bükülmenin azaltılmasına da " "yardımcı olabilir.\n" "\n" -"Bu ayarın en etkili olması için, Ters Eşiğin 0’a ayarlanması önerilir; böylece " -"tüm iç duvarlar, çıkıntı derecelerine bakılmaksızın eşit katmanlara alternatif " -"yönlerde yazdırılır." +"Bu ayarın en etkili olması için, Ters Eşiğin 0’a ayarlanması önerilir; " +"böylece tüm iç duvarlar, çıkıntı derecelerine bakılmaksızın eşit katmanlara " +"alternatif yönlerde yazdırılır." msgid "Bridge counterbore holes" msgstr "Köprü havşa delikleri" msgid "" -"This option creates bridges for counterbore holes, allowing them to be printed " -"without support. Available modes include:\n" +"This option creates bridges for counterbore holes, allowing them to be " +"printed without support. Available modes include:\n" "1. None: No bridge is created.\n" "2. Partially Bridged: Only a part of the unsupported area will be bridged.\n" "3. Sacrificial Layer: A full sacrificial bridge layer is created." @@ -10397,7 +10456,8 @@ msgstr "" "Bu seçenek, havşa delikleri için köprüler oluşturarak bunların desteksiz " "yazdırılmasına olanak tanır. Mevcut modlar şunları içerir:\n" "1. Yok: Köprü oluşturulmaz.\n" -"2. Kısmen Köprülendi: Desteklenmeyen alanın yalnızca bir kısmı köprülenecek.\n" +"2. Kısmen Köprülendi: Desteklenmeyen alanın yalnızca bir kısmı " +"köprülenecek.\n" "3. Feda Katman: Tam bir feda köprü katmanı oluşturulur." msgid "Partially bridged" @@ -10414,17 +10474,17 @@ msgstr "Çıkıntıyı tersine çevirme eşiği" #, no-c-format, no-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" +"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 even layers regardless.\n" -"When Detect overhang wall is not enabled, this option is ignored and reversal " -"happens on every even layers regardless." +"When Detect overhang wall is not enabled, this option is ignored and " +"reversal happens on every even layers regardless." msgstr "" "Ters çevirmenin faydalı sayılması için çıkıntının mm sayısı olması gerekir. " "Çevre genişliğinin %’si olabilir.\n" "0 değeri ne olursa olsun her çift katmanda ters çevirmeyi mümkün kılar.\n" -"Çıkıntı duvarını algıla etkinleştirilmediğinde, bu seçenek göz ardı edilir ve " -"geri dönüş, her çift katmanda gerçekleşir." +"Çıkıntı duvarını algıla etkinleştirilmediğinde, bu seçenek göz ardı edilir " +"ve geri dönüş, her çift katmanda gerçekleşir." msgid "Classic mode" msgstr "Klasik mod" @@ -10446,16 +10506,16 @@ msgstr "Kıvrılmış çevre çizgilerinde yavaşlat" #, fuzzy, no-c-format, no-boost-format msgid "" "Enable this option to slow down printing in areas where perimeters may have " -"curled upwards.For example, additional slowdown will be applied when printing " -"overhangs on sharp corners like the front of the Benchy hull, reducing curling " -"which compounds over multiple layers.\n" +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" "\n" " It is generally recommended to have this option switched on unless your " "printer cooling is powerful enough or the print speed slow enough that " -"perimeter curling does not happen. If printing with a high external perimeter " -"speed, this parameter may introduce slight artifacts when slowing down due to " -"the large variance in print speeds. If you notice artifacts, ensure your " -"pressure advance is tuned correctly.\n" +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like " "overhangs, meaning the overhang speed is applied even if the overhanging " @@ -10472,14 +10532,14 @@ msgstr "" "kıvrılmasını önleyecek kadar yavaş olmadığı sürece, genellikle bu seçeneğin " "açık olması önerilir. Yüksek harici çevre hızıyla yazdırılıyorsa, bu " "parametre, yazdırma hızlarındaki büyük farklılıklar nedeniyle yavaşlama " -"sırasında hafif bozulmalara neden olabilir. Artefaktlar fark ederseniz basınç " -"ilerlemenizin doğru şekilde ayarlandığından emin olun.\n" +"sırasında hafif bozulmalara neden olabilir. Artefaktlar fark ederseniz " +"basınç ilerlemenizin doğru şekilde ayarlandığından emin olun.\n" "\n" "Not: Bu seçenek etkinleştirildiğinde, çıkıntı çevreleri çıkıntılar gibi ele " -"alınır; bu, çıkıntının çevresi bir köprünün parçası olsa bile çıkıntı hızının " -"uygulandığı anlamına gelir. Örneğin, çevreler 100% çıkıntılı olduğunda ve " -"onları alttan destekleyen bir duvar olmadığında 100% çıkıntı hızı " -"uygulanacaktır." +"alınır; bu, çıkıntının çevresi bir köprünün parçası olsa bile çıkıntı " +"hızının uygulandığı anlamına gelir. Örneğin, çevreler 100% çıkıntılı " +"olduğunda ve onları alttan destekleyen bir duvar olmadığında 100% çıkıntı " +"hızı uygulanacaktır." msgid "mm/s or %" msgstr "mm/s veya %" @@ -10499,8 +10559,8 @@ msgstr "" "\n" "Ayrıca, kıvrılmış çevreler için yavaşlama devre dışı bırakılırsa veya Klasik " "çıkıntı modu etkinleştirilirse, ister bir köprünün ister bir çıkıntının " -"parçası olsun, %13’ten daha az desteklenen çıkıntılı duvarların yazdırma hızı " -"olacaktır." +"parçası olsun, %13’ten daha az desteklenen çıkıntılı duvarların yazdırma " +"hızı olacaktır." msgid "mm/s" msgstr "mm/s" @@ -10509,8 +10569,8 @@ msgid "Internal" msgstr "Dahili" msgid "" -"Speed of internal bridges. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" "İç köprülerin hızı. Değer yüzde olarak ifade edilirse köprü hızına göre " "hesaplanacaktır. Varsayılan değer %150’dir." @@ -10525,8 +10585,8 @@ msgid "Brim type" msgstr "Kenar tipi" msgid "" -"This controls the generation of the brim at outer and/or inner side of models. " -"Auto means the brim width is analyzed and calculated automatically." +"This controls the generation of the brim at outer and/or inner side of " +"models. Auto means the brim width is analyzed and calculated automatically." msgstr "" "Bu, modellerin dış ve/veya iç kısmındaki Kenar oluşumunu kontrol eder. " "Otomatik, kenar genişliğinin otomatik olarak analiz edilip hesaplandığı " @@ -10604,9 +10664,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" -"Etkin yazdırma profilinin yapılandırma değerlerini kullanan bir boole ifadesi. " -"Bu ifade doğru olarak değerlendirilirse bu profilin etkin yazdırma profiliyle " -"uyumlu olduğu kabul edilir." +"Etkin yazdırma profilinin yapılandırma değerlerini kullanan bir boole " +"ifadesi. Bu ifade doğru olarak değerlendirilirse bu profilin etkin yazdırma " +"profiliyle uyumlu olduğu kabul edilir." msgid "Print sequence, layer by layer or object by object" msgstr "Yazdırma sırası, katman katman veya nesne nesne" @@ -10632,13 +10692,13 @@ msgstr "Daha iyi katman soğutması için baskıyı yavaşlat" 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" +"that layer can be cooled for longer time. This can improve the cooling " +"quality for needle and small details" msgstr "" -"Son katman süresinin \"Maksimum fan hızı eşiği\"ndeki katman süresi eşiğinden " -"kısa olmamasını sağlamak amacıyla yazdırma hızını yavaşlatmak için bu seçeneği " -"etkinleştirin, böylece katman daha uzun süre soğutulabilir. Bu, iğne ve küçük " -"detaylar için soğutma kalitesini artırabilir" +"Son katman süresinin \"Maksimum fan hızı eşiği\"ndeki katman süresi " +"eşiğinden kısa olmamasını sağlamak amacıyla yazdırma hızını yavaşlatmak için " +"bu seçeneği etkinleştirin, böylece katman daha uzun süre soğutulabilir. Bu, " +"iğne ve küçük detaylar için soğutma kalitesini artırabilir" msgid "Normal printing" msgstr "Normal baskı" @@ -10647,7 +10707,8 @@ msgid "" "The default acceleration of both normal printing and travel except initial " "layer" msgstr "" -"İlk katman dışında hem normal yazdırmanın hem de ilerlemenin varsayılan ivmesi" +"İlk katman dışında hem normal yazdırmanın hem de ilerlemenin varsayılan " +"ivmesi" msgid "mm/s²" msgstr "mm/s²" @@ -10691,8 +10752,8 @@ msgid "" "Close all cooling fan for the first certain layers. Cooling fan of the first " "layer used to be closed to get better build plate adhesion" msgstr "" -"İlk belirli katmanlar için tüm soğutma fanını kapatın. Daha iyi baskı plakası " -"yapışması sağlamak için ilk katmanın soğutma fanı kapatılırdı" +"İlk belirli katmanlar için tüm soğutma fanını kapatın. Daha iyi baskı " +"plakası yapışması sağlamak için ilk katmanın soğutma fanı kapatılırdı" msgid "Don't support bridges" msgstr "Köprülerde destek olmasın" @@ -10701,16 +10762,16 @@ 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 "" -"Desteği çok büyük yapan tüm köprü alanını desteklemeyin. Bridge genellikle çok " -"uzun olmasa da destek olmadan doğrudan yazdırılabilir" +"Desteği çok büyük yapan tüm köprü alanını desteklemeyin. Bridge genellikle " +"çok uzun olmasa da destek olmadan doğrudan yazdırılabilir" msgid "Thick external bridges" msgstr "Kalın dış köprüler" 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." +"look worse. If disabled, bridges look better but are reliable just for " +"shorter bridged distances." msgstr "" "Etkinleştirilirse köprüler daha güvenilir olur, daha uzun mesafeler arasında " "köprü kurabilir ancak daha kötü görünebilir. Devre dışı bırakıldığında " @@ -10722,8 +10783,8 @@ msgstr "Kalın iç köprüler" 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." +"have this feature turned on. However, consider turning it off if you are " +"using large nozzles." msgstr "" "Etkinleştirilirse kalın iç köprüler kullanılacaktır. Genellikle bu özelliğin " "açık olması önerilir. Ancak büyük nozul uçları kullanıyorsanız kapatmayı " @@ -10733,44 +10794,47 @@ msgid "Extra bridge layers (beta)" msgstr "Ekstra köprü katmanları (beta)" msgid "" -"This option enables the generation of an extra bridge layer over internal and/" -"or external bridges.\n" +"This option enables the generation of an extra bridge layer over internal " +"and/or external bridges.\n" "\n" "Extra bridge layers help improve bridge appearance and reliability, as the " -"solid infill is better supported. This is especially useful in fast printers, " -"where the bridge and solid infill speeds vary greatly. The extra bridge layer " -"results in reduced pillowing on top surfaces, as well as reduced separation of " -"the external bridge layer from its surrounding perimeters.\n" +"solid infill is better supported. This is especially useful in fast " +"printers, where the bridge and solid infill speeds vary greatly. The extra " +"bridge layer results in reduced pillowing on top surfaces, as well as " +"reduced separation of the external bridge layer from its surrounding " +"perimeters.\n" "\n" "It is generally recommended to set this to at least 'External bridge only', " "unless specific issues with the sliced model are found.\n" "\n" "Options:\n" -"1. Disabled - does not generate second bridge layers. This is the default and " -"is set for compatibility purposes.\n" +"1. Disabled - does not generate second bridge layers. This is the default " +"and is set for compatibility purposes.\n" "2. External bridge only - generates second bridge layers for external-facing " -"bridges only. Please note that small bridges that are shorter or narrower than " -"the set number of perimeters will be skipped as they would not benefit from a " -"second bridge layer. If generated, the second bridge layer will be extruded " -"parallel to the first bridge layer to reinforce the bridge strength.\n" -"3. Internal bridge only - generates second bridge layers for internal bridges " -"over sparse infill only. Please note that the internal bridges count towards " -"the top shell layer count of your model. The second internal bridge layer will " -"be extruded as close to perpendicular to the first as possible. If multiple " -"regions in the same island, with varying bridge angles are present, the last " -"region of that island will be selected as the angle reference.\n" +"bridges only. Please note that small bridges that are shorter or narrower " +"than the set number of perimeters will be skipped as they would not benefit " +"from a second bridge layer. If generated, the second bridge layer will be " +"extruded parallel to the first bridge layer to reinforce the bridge " +"strength.\n" +"3. Internal bridge only - generates second bridge layers for internal " +"bridges over sparse infill only. Please note that the internal bridges count " +"towards the top shell layer count of your model. The second internal bridge " +"layer will be extruded as close to perpendicular to the first as possible. " +"If multiple regions in the same island, with varying bridge angles are " +"present, the last region of that island will be selected as the angle " +"reference.\n" "4. Apply to all - generates second bridge layers for both internal and " "external-facing bridges\n" msgstr "" "Bu seçenek, iç ve/veya dış köprüler üzerinde ekstra bir köprü katmanının " "oluşturulmasına olanak sağlar.\n" "\n" -"Ekstra köprü katmanları, katı dolgunun daha iyi desteklenmesi nedeniyle köprü " -"görünümünün ve güvenilirliğinin iyileştirilmesine yardımcı olur. Bu, özellikle " -"köprü ve katı doldurma hızlarının büyük ölçüde değiştiği hızlı yazıcılarda " -"kullanışlıdır. Ekstra köprü katmanı, üst yüzeylerde yastıklamanın " -"azaltılmasının yanı sıra, dış köprü katmanının çevre çevrelerinden daha az " -"ayrılmasıyla sonuçlanır.\n" +"Ekstra köprü katmanları, katı dolgunun daha iyi desteklenmesi nedeniyle " +"köprü görünümünün ve güvenilirliğinin iyileştirilmesine yardımcı olur. Bu, " +"özellikle köprü ve katı doldurma hızlarının büyük ölçüde değiştiği hızlı " +"yazıcılarda kullanışlıdır. Ekstra köprü katmanı, üst yüzeylerde " +"yastıklamanın azaltılmasının yanı sıra, dış köprü katmanının çevre " +"çevrelerinden daha az ayrılmasıyla sonuçlanır.\n" "\n" "Dilimlenmiş modelde belirli sorunlar bulunmadığı sürece, genellikle bunun en " "azından ‘Yalnızca dış köprü’ olarak ayarlanması önerilir.\n" @@ -10779,14 +10843,14 @@ msgstr "" "1. Devre Dışı - ikinci köprü katmanlarını oluşturmaz. Bu varsayılan değerdir " "ve uyumluluk amacıyla ayarlanmıştır.\n" "2. Yalnızca dış köprü - yalnızca dışa bakan köprüler için ikinci köprü " -"katmanları oluşturur. Belirlenen çevre sayısından daha kısa veya daha dar olan " -"küçük köprülerin, ikinci bir köprü katmanından faydalanamayacakları için " -"atlanacağını lütfen unutmayın. Oluşturulursa ikinci köprü katmanı, köprü " -"mukavemetini güçlendirmek için birinci köprü katmanına paralel olarak " +"katmanları oluşturur. Belirlenen çevre sayısından daha kısa veya daha dar " +"olan küçük köprülerin, ikinci bir köprü katmanından faydalanamayacakları " +"için atlanacağını lütfen unutmayın. Oluşturulursa ikinci köprü katmanı, " +"köprü mukavemetini güçlendirmek için birinci köprü katmanına paralel olarak " "ekstrüzyona tabi tutulacaktır.\n" "3. Yalnızca iç köprü - yalnızca seyrek dolgu üzerindeki iç köprüler için " -"ikinci köprü katmanları oluşturur. Lütfen iç köprülerin modelinizin üst kabuk " -"katmanı sayımına dahil edildiğini unutmayın. İkinci iç köprü katmanı, " +"ikinci köprü katmanları oluşturur. Lütfen iç köprülerin modelinizin üst " +"kabuk katmanı sayımına dahil edildiğini unutmayın. İkinci iç köprü katmanı, " "birinciye mümkün olduğu kadar dik olacak şekilde ekstrüzyona tabi " "tutulacaktır. Aynı adada farklı köprü açılarına sahip birden fazla bölge " "mevcutsa açı referansı olarak o adanın son bölgesi seçilecektir.\n" @@ -10822,9 +10886,9 @@ msgid "" "solid infill, causing pillowing.\n" "\n" "Enabling limited filtering or no filtering will print internal bridge layer " -"over slightly unsupported internal solid infill. The options below control the " -"sensitivity of the filtering, i.e. they control where internal bridges are " -"created.\n" +"over slightly unsupported internal solid infill. The options below control " +"the sensitivity of the filtering, i.e. they control where internal bridges " +"are created.\n" "\n" "1. Filter - enables this option. This is the default behavior and works well " "in most cases.\n" @@ -10837,8 +10901,8 @@ msgid "" "overhang. This option is useful for heavily slanted top surface models; " "however, in most cases, it creates too many unnecessary bridges." msgstr "" -"Bu seçenek, aşırı eğimli veya kavisli modellerde üst yüzeylerdeki yastıklamayı " -"azaltmaya yardımcı olabilir.\n" +"Bu seçenek, aşırı eğimli veya kavisli modellerde üst yüzeylerdeki " +"yastıklamayı azaltmaya yardımcı olabilir.\n" "\n" "Varsayılan olarak küçük iç köprüler filtrelenir ve iç katı dolgu doğrudan " "seyrek dolgunun üzerine yazdırılır. Bu çoğu durumda işe yarar ve üstün yüzey " @@ -10848,10 +10912,10 @@ msgstr "" "seyrek dolgu yoğunluğunun kullanıldığı durumlarda bu, desteklenmeyen katı " "dolgunun kıvrılmasına ve yastıklanmaya neden olmasına neden olabilir.\n" "\n" -"Sınırlı filtrelemenin etkinleştirilmesi veya hiç filtre uygulanmaması, dahili " -"köprü katmanını hafif desteksiz iç katı dolgu üzerine yazdıracaktır. Aşağıdaki " -"seçenekler filtrelemenin hassasiyetini kontrol eder, yani iç köprülerin nerede " -"oluşturulduğunu kontrol ederler.\n" +"Sınırlı filtrelemenin etkinleştirilmesi veya hiç filtre uygulanmaması, " +"dahili köprü katmanını hafif desteksiz iç katı dolgu üzerine yazdıracaktır. " +"Aşağıdaki seçenekler filtrelemenin hassasiyetini kontrol eder, yani iç " +"köprülerin nerede oluşturulduğunu kontrol ederler.\n" "\n" "1. Filtrele - bu seçeneği etkinleştirir. Bu varsayılan davranıştır ve çoğu " "durumda iyi çalışır.\n" @@ -10859,8 +10923,8 @@ msgstr "" "2. Sınırlı filtreleme - aşırı eğimli yüzeylerde iç köprüler oluştururken " "gereksiz köprülerden kaçınır. Bu, çoğu zor modelde işe yarar.\n" "\n" -"3. Filtreleme yok - her potansiyel dahili çıkıntıda iç köprüler oluşturur. Bu " -"seçenek aşırı eğimli üst yüzey modelleri için kullanışlıdır; ancak çoğu " +"3. Filtreleme yok - her potansiyel dahili çıkıntıda iç köprüler oluşturur. " +"Bu seçenek aşırı eğimli üst yüzey modelleri için kullanışlıdır; ancak çoğu " "durumda çok fazla gereksiz köprü oluşturur." msgid "Filter" @@ -10988,8 +11052,8 @@ msgid "" "Speed of outer wall which is outermost and visible. It's used to be slower " "than inner wall speed to get better quality." msgstr "" -"En dışta görünen ve görünen dış duvarın hızı. Daha iyi kalite elde etmek için " -"iç duvar hızından daha yavaş olması kullanılır." +"En dışta görünen ve görünen dış duvarın hızı. Daha iyi kalite elde etmek " +"için iç duvar hızından daha yavaş olması kullanılır." msgid "Small perimeters" msgstr "Küçük çevre (perimeter)" @@ -10997,8 +11061,8 @@ msgstr "Küçük çevre (perimeter)" 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." +"example: 80%) it will be calculated on the outer wall speed setting above. " +"Set to zero for auto." msgstr "" "Bu ayrı ayar, yarıçapı <= küçük_çevre_eşiği olan çevrelerin (genellikle " "delikler) hızını etkileyecektir. Yüzde olarak ifade edilirse (örneğin: %80), " @@ -11018,8 +11082,8 @@ msgstr "Duvar baskı sırası" msgid "" "Print sequence of the internal (inner) and external (outer) walls. \n" "\n" -"Use Inner/Outer for best overhangs. This is because the overhanging walls can " -"adhere to a neighbouring perimeter while printing. However, this option " +"Use Inner/Outer for best overhangs. This is because the overhanging walls " +"can adhere to a neighbouring perimeter while printing. However, this option " "results in slightly reduced surface quality as the external perimeter is " "deformed by being squashed to the internal perimeter.\n" "\n" @@ -11029,12 +11093,13 @@ msgid "" "perimeter to print the external wall against. This option requires a minimum " "of 3 walls to be effective as it prints the internal walls from the 3rd " "perimeter onwards first, then the external perimeter and, finally, the first " -"internal perimeter. This option is recommended against the Outer/Inner option " -"in most cases. \n" +"internal perimeter. This option is recommended against the Outer/Inner " +"option in most cases. \n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy " "benefits of Inner/Outer/Inner option. However, the z seams will appear less " -"consistent as the first extrusion of a new layer starts on a visible surface.\n" +"consistent as the first extrusion of a new layer starts on a visible " +"surface.\n" "\n" " " msgstr "" @@ -11049,14 +11114,14 @@ msgstr "" "kalitesi ve boyutsal doğruluk için İç/Dış/İç seçeneğini kullanın. Ancak, dış " "duvarın üzerine baskı yapılacak bir iç çevre olmadığından sarkma performansı " "düşecektir. Bu seçenek, önce 3. çevreden itibaren iç duvarları, ardından dış " -"çevreyi ve son olarak da birinci iç çevreyi yazdırdığından etkili olması için " -"en az 3 duvar gerektirir. Bu seçenek çoğu durumda Dış/İç seçeneğine karşı " -"önerilir. \n" +"çevreyi ve son olarak da birinci iç çevreyi yazdırdığından etkili olması " +"için en az 3 duvar gerektirir. Bu seçenek çoğu durumda Dış/İç seçeneğine " +"karşı önerilir. \n" "\n" -"İç/Dış/İç seçeneğinin aynı dış duvar kalitesi ve boyutsal doğruluk avantajları " -"için Dış/İç seçeneğini kullanın. Bununla birlikte, yeni bir katmanın ilk " -"ekstrüzyonu görünür bir yüzey üzerinde başladığından z dikişleri daha az " -"tutarlı görünecektir.\n" +"İç/Dış/İç seçeneğinin aynı dış duvar kalitesi ve boyutsal doğruluk " +"avantajları için Dış/İç seçeneğini kullanın. Bununla birlikte, yeni bir " +"katmanın ilk ekstrüzyonu görünür bir yüzey üzerinde başladığından z " +"dikişleri daha az tutarlı görünecektir.\n" "\n" " " @@ -11078,17 +11143,18 @@ msgid "" "\n" "Printing infill first may help with extreme overhangs as the walls have the " "neighbouring infill to adhere to. However, the infill will slightly push out " -"the printed walls where it is attached to them, resulting in a worse external " -"surface finish. It can also cause the infill to shine through the external " -"surfaces of the part." +"the printed walls where it is attached to them, resulting in a worse " +"external surface finish. It can also cause the infill to shine through the " +"external surfaces of the part." msgstr "" "Duvar/dolgu sırası. Onay kutusu işaretlenmediğinde duvarlar önce yazdırılır, " "bu çoğu durumda en iyi şekilde çalışır.\n" "\n" "Dolgunun önce yazdırılması, aşırı sarkmalarda yardımcı olabilir, çünkü " -"duvarlar komşu dolgulara yapışır. Ancak, dolgu duvarlara bağlı olduğu yerlerde " -"onları biraz dışarı iterek daha kötü bir dış yüzey bitişine neden olabilir. " -"Ayrıca, dolgunun parçanın dış yüzeylerinden parlamasına da sebep olabilir." +"duvarlar komşu dolgulara yapışır. Ancak, dolgu duvarlara bağlı olduğu " +"yerlerde onları biraz dışarı iterek daha kötü bir dış yüzey bitişine neden " +"olabilir. Ayrıca, dolgunun parçanın dış yüzeylerinden parlamasına da sebep " +"olabilir." msgid "Wall loop direction" msgstr "Duvar döngüsü yönü" @@ -11097,18 +11163,18 @@ msgid "" "The direction which the wall loops are extruded when looking down from the " "top.\n" "\n" -"By default all walls are extruded in counter-clockwise, unless Reverse on even " -"is enabled. Set this to any option other than Auto will force the wall " +"By default all walls are extruded in counter-clockwise, unless Reverse on " +"even is enabled. Set this to any option other than Auto will force the wall " "direction regardless of the Reverse on even.\n" "\n" "This option will be disabled if spiral vase mode is enabled." msgstr "" "Yukarıdan aşağıya bakıldığında duvar döngülerinin ekstrüzyona uğradığı yön.\n" "\n" -"Çift yönlü ters çevirme seçeneği etkinleştirilmediği sürece, varsayılan olarak " -"tüm duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik dışında " -"herhangi bir seçeneğe ayarlayın, Ters çevirmeden bağımsız olarak duvar yönünü " -"eşit olarak zorlayacaktır.\n" +"Çift yönlü ters çevirme seçeneği etkinleştirilmediği sürece, varsayılan " +"olarak tüm duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik " +"dışında herhangi bir seçeneğe ayarlayın, Ters çevirmeden bağımsız olarak " +"duvar yönünü eşit olarak zorlayacaktır.\n" "\n" "Spiral vazo modu etkinse bu seçenek devre dışı bırakılacaktır." @@ -11135,8 +11201,8 @@ msgid "" "Distance of the nozzle tip to the lid. Used for collision avoidance in by-" "object printing." msgstr "" -"Nozul ucunun kapağa olan mesafesi. Nesneye göre yazdırmada çarpışmayı önlemek " -"için kullanılır." +"Nozul ucunun kapağa olan mesafesi. Nesneye göre yazdırmada çarpışmayı " +"önlemek için kullanılır." msgid "" "Clearance radius around extruder. Used for collision avoidance in by-object " @@ -11156,44 +11222,46 @@ msgstr "Minimum yatak ağı" msgid "" "This option sets the min point for the allowed bed mesh area. Due to the " -"probe's XY offset, most printers are unable to probe the entire bed. To ensure " -"the probe point does not go outside the bed area, the minimum and maximum " -"points of the bed mesh should be set appropriately. OrcaSlicer ensures that " -"adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed these min/max " -"points. This information can usually be obtained from your printer " -"manufacturer. The default setting is (-99999, -99999), which means there are " -"no limits, thus allowing probing across the entire bed." +"probe's XY offset, most printers are unable to probe the entire bed. To " +"ensure the probe point does not go outside the bed area, the minimum and " +"maximum points of the bed mesh should be set appropriately. OrcaSlicer " +"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " +"exceed these min/max points. This information can usually be obtained from " +"your printer manufacturer. The default setting is (-99999, -99999), which " +"means there are no limits, thus allowing probing across the entire bed." msgstr "" -"Bu seçenek, izin verilen yatak ağ alanı için minimum noktayı ayarlar. Prob XY " -"ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının yatak " -"alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve maksimum " -"noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, adaptive_bed_mesh_min/" -"adaptive_bed_mesh_max değerlerinin bu min/maks noktalarını aşmamasını sağlar. " -"Bu bilgi genellikle yazıcınızın üreticisinden edinilebilir. Varsayılan ayar " -"(-99999, -99999) şeklindedir; bu, herhangi bir sınırın olmadığı anlamına " -"gelir, dolayısıyla yatağın tamamında problamaya izin verilir." +"Bu seçenek, izin verilen yatak ağ alanı için minimum noktayı ayarlar. Prob " +"XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " +"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve " +"maksimum noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, " +"adaptive_bed_mesh_min/adaptive_bed_mesh_max değerlerinin bu min/maks " +"noktalarını aşmamasını sağlar. Bu bilgi genellikle yazıcınızın üreticisinden " +"edinilebilir. Varsayılan ayar (-99999, -99999) şeklindedir; bu, herhangi bir " +"sınırın olmadığı anlamına gelir, dolayısıyla yatağın tamamında problamaya " +"izin verilir." msgid "Bed mesh max" msgstr "Maksimum yatak ağı" msgid "" "This option sets the max point for the allowed bed mesh area. Due to the " -"probe's XY offset, most printers are unable to probe the entire bed. To ensure " -"the probe point does not go outside the bed area, the minimum and maximum " -"points of the bed mesh should be set appropriately. OrcaSlicer ensures that " -"adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed these min/max " -"points. This information can usually be obtained from your printer " -"manufacturer. The default setting is (99999, 99999), which means there are no " -"limits, thus allowing probing across the entire bed." +"probe's XY offset, most printers are unable to probe the entire bed. To " +"ensure the probe point does not go outside the bed area, the minimum and " +"maximum points of the bed mesh should be set appropriately. OrcaSlicer " +"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " +"exceed these min/max points. This information can usually be obtained from " +"your printer manufacturer. The default setting is (99999, 99999), which " +"means there are no limits, thus allowing probing across the entire bed." msgstr "" -"Bu seçenek, izin verilen yatak ağ alanı için maksimum noktayı ayarlar. Probun " -"XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " -"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve maksimum " -"noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, adaptive_bed_mesh_min/" -"adaptive_bed_mesh_max değerlerinin bu min/maks noktalarını aşmamasını sağlar. " -"Bu bilgi genellikle yazıcınızın üreticisinden edinilebilir. Varsayılan ayar " -"(99999, 99999) şeklindedir; bu, herhangi bir sınırın olmadığı anlamına gelir, " -"dolayısıyla yatağın tamamında problamaya izin verilir." +"Bu seçenek, izin verilen yatak ağ alanı için maksimum noktayı ayarlar. " +"Probun XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob " +"noktasının yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum " +"ve maksimum noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, " +"adaptive_bed_mesh_min/adaptive_bed_mesh_max değerlerinin bu min/maks " +"noktalarını aşmamasını sağlar. Bu bilgi genellikle yazıcınızın üreticisinden " +"edinilebilir. Varsayılan ayar (99999, 99999) şeklindedir; bu, herhangi bir " +"sınırın olmadığı anlamına gelir, dolayısıyla yatağın tamamında problamaya " +"izin verilir." msgid "Probe point distance" msgstr "Prob noktası mesafesi" @@ -11210,8 +11278,8 @@ msgid "Mesh margin" msgstr "Yatak ağı boşluğu" msgid "" -"This option determines the additional distance by which the adaptive bed mesh " -"area should be expanded in the XY directions." +"This option determines the additional distance by which the adaptive bed " +"mesh area should be expanded in the XY directions." msgstr "" "Bu seçenek, uyarlanabilir yatak ağ alanının XY yönlerinde genişletilmesi " "gereken ek mesafeyi belirler." @@ -11231,9 +11299,9 @@ msgstr "Akış oranı" 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" +"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 "" "Malzeme, erimiş hal ile kristal hal arasında geçiş yaptıktan sonra hacimsel " "değişime sahip olabilir. Bu ayar, bu filamentin gcode'daki tüm ekstrüzyon " @@ -11244,9 +11312,9 @@ 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. \n" +"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. \n" "\n" "The final object flow ratio is this value multiplied by the filament flow " "ratio." @@ -11278,19 +11346,19 @@ msgstr "Uyarlanabilir basınç ilerlemesini etkinleştir (beta)" #, no-c-format, no-boost-format msgid "" -"With increasing print speeds (and hence increasing volumetric flow through the " -"nozzle) and increasing accelerations, it has been observed that the effective " -"PA value typically decreases. This means that a single PA value is not always " -"100% optimal for all features and a compromise value is usually used that does " -"not cause too much bulging on features with lower flow speed and accelerations " -"while also not causing gaps on faster features.\n" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" "\n" -"This feature aims to address this limitation by modeling the response of your " -"printer's extrusion system depending on the volumetric flow speed and " +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " "acceleration it is printing at. Internally, it generates a fitted model that " "can extrapolate the needed pressure advance for any given volumetric flow " -"speed and acceleration, which is then emitted to the printer depending on the " -"current print conditions.\n" +"speed and acceleration, which is then emitted to the printer depending on " +"the current print conditions.\n" "\n" "When enabled, the pressure advance value above is overridden. However, a " "reasonable default value above is strongly recommended to act as a fallback " @@ -11299,11 +11367,11 @@ msgid "" msgstr "" "Baskı hızlarının artmasıyla (ve dolayısıyla püskürtme ucunda hacimsel akışın " "artmasıyla) ve hızlanmaların artmasıyla, etkin basınç değerinin tipik olarak " -"azaldığı gözlemlenmiştir. Bu, tek bir basınç değerinin tüm özellikler için her " -"zaman 100% optimal olmadığı ve genellikle daha düşük akış hızına ve ivmeye " -"sahip özelliklerde çok fazla çıkıntıya neden olmayan ve aynı zamanda daha " -"hızlı özelliklerde boşluklara neden olmayan bir uzlaşma değerinin kullanıldığı " -"anlamına gelir.\n" +"azaldığı gözlemlenmiştir. Bu, tek bir basınç değerinin tüm özellikler için " +"her zaman 100% optimal olmadığı ve genellikle daha düşük akış hızına ve " +"ivmeye sahip özelliklerde çok fazla çıkıntıya neden olmayan ve aynı zamanda " +"daha hızlı özelliklerde boşluklara neden olmayan bir uzlaşma değerinin " +"kullanıldığı anlamına gelir.\n" "\n" "Bu özellik, yazıcınızın ekstrüzyon sisteminin tepkisini hacimsel akış hızına " "ve baskı yaptığı ivmeye bağlı olarak modelleyerek bu sınırlamayı gidermeyi " @@ -11329,27 +11397,27 @@ msgid "" "0.026,7.91,10000\n" "\n" "How to calibrate:\n" -"1. Run the pressure advance test for at least 3 speeds per acceleration value. " -"It is recommended that the test is run for at least the speed of the external " -"perimeters, the speed of the internal perimeters and the fastest feature print " -"speed in your profile (usually its the sparse or solid infill). Then run them " -"for the same speeds for the slowest and fastest print accelerations,and no " -"faster than the recommended maximum acceleration as given by the Klipper input " -"shaper.\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the Klipper input shaper.\n" "2. Take note of the optimal PA value for each volumetric flow speed and " "acceleration. You can find the flow number by selecting flow from the color " -"scheme drop down and move the horizontal slider over the PA pattern lines. The " -"number should be visible at the bottom of the page. The ideal PA value should " -"be decreasing the higher the volumetric flow is. If it is not, confirm that " -"your extruder is functioning correctly.The slower and with less acceleration " -"you print, the larger the range of acceptable PA values. If no difference is " -"visible, use the PA value from the faster test.3. Enter the triplets of PA " -"values, Flow and Accelerations in the text box here and save your filament " -"profile\n" +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" "\n" msgstr "" -"Basınç ilerlemesi (basınç) değerlerinin setlerini, hacimsel akış hızlarını ve " -"ölçüldükleri ivmeleri virgülle ayırarak ekleyin. Satır başına bir değer " +"Basınç ilerlemesi (basınç) değerlerinin setlerini, hacimsel akış hızlarını " +"ve ölçüldükleri ivmeleri virgülle ayırarak ekleyin. Satır başına bir değer " "kümesi. Örneğin\n" "0.04,3.96,3000\n" "0,033,3,96,10000\n" @@ -11357,30 +11425,32 @@ msgstr "" "0.026,7.91,10000\n" "\n" "Nasıl kalibre edilir:\n" -"1. Hızlanma değeri başına en az 3 hız için basınç ilerleme testini çalıştırın. " -"Testin en azından dış çevrelerin hızı, iç çevrelerin hızı ve profilinizdeki en " -"hızlı özellik yazdırma hızı (genellikle seyrek veya katı dolgudur) için " -"çalıştırılması önerilir. Daha sonra bunları, en yavaş ve en hızlı yazdırma " -"hızlanmaları için aynı hızlarda çalıştırın ve klipper giriş şekillendirici " -"tarafından verilen önerilen maksimum hızlanmadan daha hızlı değil.\n" +"1. Hızlanma değeri başına en az 3 hız için basınç ilerleme testini " +"çalıştırın. Testin en azından dış çevrelerin hızı, iç çevrelerin hızı ve " +"profilinizdeki en hızlı özellik yazdırma hızı (genellikle seyrek veya katı " +"dolgudur) için çalıştırılması önerilir. Daha sonra bunları, en yavaş ve en " +"hızlı yazdırma hızlanmaları için aynı hızlarda çalıştırın ve klipper giriş " +"şekillendirici tarafından verilen önerilen maksimum hızlanmadan daha hızlı " +"değil.\n" "2. Her hacimsel akış hızı ve ivme için en uygun PA değerini not edin. Renk " -"şeması açılır menüsünden akışı seçerek ve yatay kaydırıcıyı PA desen çizgileri " -"üzerinde hareket ettirerek akış numarasını bulabilirsiniz. Numara sayfanın " -"altında görünmelidir. İdeal PA değeri hacimsel akış ne kadar yüksek olursa o " -"kadar azalmalıdır. Değilse, ekstruderinizin doğru şekilde çalıştığını " -"doğrulayın. Ne kadar yavaş ve daha az ivmeyle yazdırırsanız, kabul edilebilir " -"PA değerleri aralığı o kadar geniş olur. Hiçbir fark görünmüyorsa, daha hızlı " -"olan testteki PA değerini kullanın.3. Buradaki metin kutusuna PA değerleri, " -"Akış ve Hızlanma üçlüsünü girin ve filament profilinizi kaydedin\n" +"şeması açılır menüsünden akışı seçerek ve yatay kaydırıcıyı PA desen " +"çizgileri üzerinde hareket ettirerek akış numarasını bulabilirsiniz. Numara " +"sayfanın altında görünmelidir. İdeal PA değeri hacimsel akış ne kadar yüksek " +"olursa o kadar azalmalıdır. Değilse, ekstruderinizin doğru şekilde " +"çalıştığını doğrulayın. Ne kadar yavaş ve daha az ivmeyle yazdırırsanız, " +"kabul edilebilir PA değerleri aralığı o kadar geniş olur. Hiçbir fark " +"görünmüyorsa, daha hızlı olan testteki PA değerini kullanın.3. Buradaki " +"metin kutusuna PA değerleri, Akış ve Hızlanma üçlüsünü girin ve filament " +"profilinizi kaydedin\n" msgid "Enable adaptive pressure advance for overhangs (beta)" msgstr "Çıkıntılar için uyarlanabilir basınç ilerlemesini etkinleştirin (beta)" msgid "" -"Enable adaptive PA for overhangs as well as when flow changes within the same " -"feature. This is an experimental option, as if the PA profile is not set " -"accurately, it will cause uniformity issues on the external surfaces before " -"and after overhangs.\n" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" msgstr "" "Aynı özellik içinde akış değiştiğinde ve çıkıntılar için uyarlanabilir PA’yı " "etkinleştirin. Bu deneysel bir seçenektir, sanki basınç profili doğru " @@ -11393,31 +11463,32 @@ msgstr "Köprüler için basınç ilerlemesi" msgid "" "Pressure advance value for bridges. Set to 0 to disable. \n" "\n" -" A lower PA value when printing bridges helps reduce the appearance of slight " -"under extrusion immediately after bridges. This is caused by the pressure drop " -"in the nozzle when printing in the air and a lower PA helps counteract this." +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." msgstr "" "Köprüler için basınç ilerleme değeri. Devre dışı bırakmak için 0’a " "ayarlayın. \n" "\n" " Köprüleri yazdırırken daha düşük bir basınç değeri, köprülerden hemen sonra " -"hafif ekstrüzyon görünümünün azaltılmasına yardımcı olur. Bunun nedeni, havada " -"yazdırma sırasında nozuldaki basınç düşüşüdür ve daha düşük bir basınç, bunu " -"önlemeye yardımcı olur." +"hafif ekstrüzyon görünümünün azaltılmasına yardımcı olur. Bunun nedeni, " +"havada yazdırma sırasında nozuldaki basınç düşüşüdür ve daha düşük bir " +"basınç, bunu önlemeye yardımcı olur." msgid "" -"Default line width if other line widths are set to 0. If expressed as a %, it " -"will be computed over the nozzle diameter." +"Default line width if other line widths are set to 0. If expressed as a %, " +"it will be computed over the nozzle diameter." msgstr "" -"Diğer çizgi genişlikleri 0'a ayarlanmışsa varsayılan çizgi genişliği. % olarak " -"ifade edilirse nozul çapı üzerinden hesaplanacaktır." +"Diğer çizgi genişlikleri 0'a ayarlanmışsa varsayılan çizgi genişliği. % " +"olarak ifade edilirse nozul çapı üzerinden hesaplanacaktır." msgid "Keep fan always on" msgstr "Fanı her zaman açık tut" msgid "" -"If enable this setting, part cooling fan will never be stopped and will run at " -"least at minimum speed to reduce the frequency of starting and stopping" +"If enable this setting, part cooling fan will never be stopped and will run " +"at least at minimum speed to reduce the frequency of starting and stopping" msgstr "" "Bu ayarı etkinleştirirseniz, parça soğutma fanı hiçbir zaman durdurulmayacak " "ve başlatma ve durdurma sıklığını azaltmak için en azından minimum hızda " @@ -11453,9 +11524,9 @@ msgid "Layer time" msgstr "Katman süresi" 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" +"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 "" "Tahmini süresi bu değerden kısa olan katlarda parça soğutma fanı devreye " "girecektir. Fan hızı, katman yazdırma süresine göre minimum ve maksimum fan " @@ -11484,9 +11555,9 @@ msgstr "" "kontrol edilmediği anlamına gelir." 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" +"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 "" "Bu ayar, saniyede ne kadar miktarda filamentin eritilip ekstrude " "edilebileceğini gösterir. Çok yüksek ve makul olmayan hız ayarı durumunda, " @@ -11504,34 +11575,34 @@ msgid "" "machines, it's typically 0. For statistics only" msgstr "" "Filamenti değiştirdiğinizde yeni filament yükleme zamanı. Genellikle tek " -"ekstruderli çok malzemeli makineler için geçerlidir. Araç değiştiriciler veya " -"çok takımlı makineler için bu değer genellikle 0’dır. Yalnızca istatistikler " -"için." +"ekstruderli çok malzemeli makineler için geçerlidir. Araç değiştiriciler " +"veya çok takımlı makineler için bu değer genellikle 0’dır. Yalnızca " +"istatistikler için." msgid "Filament unload time" msgstr "Filament boşaltma süresi" msgid "" -"Time to unload old filament when switch filament. It's usually applicable for " -"single-extruder multi-material machines. For tool changers or multi-tool " +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " "machines, it's typically 0. For statistics only" msgstr "" "Filamenti değiştirdiğinizde eski filamenti boşaltma zamanı. Genellikle tek " -"ekstruderli çok malzemeli makineler için geçerlidir. Araç değiştiriciler veya " -"çok takımlı makineler için bu değer genellikle 0’dır. Yalnızca istatistikler " -"için." +"ekstruderli çok malzemeli makineler için geçerlidir. Araç değiştiriciler " +"veya çok takımlı makineler için bu değer genellikle 0’dır. Yalnızca " +"istatistikler için." msgid "Tool change time" msgstr "Takım değiştirme süresi" msgid "" -"Time taken to switch tools. It's usually applicable for tool changers or multi-" -"tool machines. For single-extruder multi-material machines, it's typically 0. " -"For statistics only" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" msgstr "" -"Araç değiştirmek için harcanan zaman. Genellikle araç değiştiriciler veya çok " -"araçlı makineler için geçerlidir. Tek ekstruderli çok malzemeli makineler için " -"bu değer genellikle 0’dır. Yalnızca istatistikler için." +"Araç değiştirmek için harcanan zaman. Genellikle araç değiştiriciler veya " +"çok araçlı makineler için geçerlidir. Tek ekstruderli çok malzemeli " +"makineler için bu değer genellikle 0’dır. Yalnızca istatistikler için." msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -11547,16 +11618,16 @@ msgid "" "Pellet flow coefficient is empirically derived and allows for volume " "calculation for pellet printers.\n" "\n" -"Internally it is converted to filament_diameter. All other volume calculations " -"remain the same.\n" +"Internally it is converted to filament_diameter. All other volume " +"calculations remain the same.\n" "\n" "filament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )" msgstr "" "Pelet akış katsayısı ampirik olarak türetilir ve pelet yazıcıları için hacim " "hesaplamasına olanak tanır.\n" "\n" -"Dahili olarak filament_çapına dönüştürülür. Diğer tüm hacim hesaplamaları aynı " -"kalır.\n" +"Dahili olarak filament_çapına dönüştürülür. Diğer tüm hacim hesaplamaları " +"aynı kalır.\n" "\n" "filament_çapı = sqrt( (4 * pellet_akış_katsayısı) / PI )" @@ -11571,11 +11642,11 @@ msgid "" "Be sure to allow enough space between objects, as this compensation is done " "after the checks." msgstr "" -"Filamentin soğuduktan sonra alacağı büzülme yüzdesini girin (100 mm yerine 94 " -"mm ölçerseniz 94%). Parça, telafi etmek için xy'de ölçeklendirilecektir. " +"Filamentin soğuduktan sonra alacağı büzülme yüzdesini girin (100 mm yerine " +"94 mm ölçerseniz 94%). Parça, telafi etmek için xy'de ölçeklendirilecektir. " "Yalnızca çevre için kullanılan filament dikkate alınır.\n" -"Bu telafi kontrollerden sonra yapıldığından, nesneler arasında yeterli boşluk " -"bıraktığınızdan emin olun." +"Bu telafi kontrollerden sonra yapıldığından, nesneler arasında yeterli " +"boşluk bıraktığınızdan emin olun." msgid "Shrinkage (Z)" msgstr "Büzülme (Z)" @@ -11586,8 +11657,8 @@ msgid "" "if you measure 94mm instead of 100mm). The part will be scaled in Z to " "compensate." msgstr "" -"Filamentin soğuduktan sonra alacağı çekme yüzdesini girin (100 mm yerine 94 mm " -"ölçerseniz %94). Telafi etmek için parça Z olarak ölçeklendirilecektir." +"Filamentin soğuduktan sonra alacağı çekme yüzdesini girin (100 mm yerine 94 " +"mm ölçerseniz %94). Telafi etmek için parça Z olarak ölçeklendirilecektir." msgid "Loading speed" msgstr "Yükleme hızı" @@ -11635,11 +11706,11 @@ msgid "Number of cooling moves" msgstr "Soğutma hareketi sayısı" msgid "" -"Filament is cooled by being moved back and forth in the cooling tubes. Specify " -"desired number of these moves." +"Filament is cooled by being moved back and forth in the cooling tubes. " +"Specify desired number of these moves." msgstr "" -"Filament, soğutma tüpleri içinde ileri geri hareket ettirilerek soğutulur. Bu " -"sayısını belirtin." +"Filament, soğutma tüpleri içinde ileri geri hareket ettirilerek soğutulur. " +"Bu sayısını belirtin." msgid "Stamping loading speed" msgstr "Damgalama yükleme hızı" @@ -11652,8 +11723,8 @@ msgstr "Soğutma tüpünün merkezinden ölçülen damgalama mesafesi" msgid "" "If set to nonzero value, filament is moved toward the nozzle between the " -"individual cooling moves (\"stamping\"). This option configures how long this " -"movement should be before the filament is retracted again." +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." msgstr "" "Sıfırdan farklı bir değere ayarlanırsa filaman bireysel soğutma hareketleri " "arasında (“damgalama”) nüzule doğru hareket ettirilir. Bu seçenek, filamanın " @@ -11672,15 +11743,16 @@ msgstr "Silme kulesi üzerinde minimum boşaltım" 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, " -"Orca Slicer will always prime this amount of material into the wipe tower to " -"produce successive infill or sacrificial object extrusions reliably." +"stable. Before purging the print head into an infill or a sacrificial " +"object, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" "Bir takım değişiminden sonra, yeni yüklenen filamentin nozul içindeki kesin " "konumu bilinmeyebilir ve filament basıncı muhtemelen henüz stabil değildir. " "Yazdırma kafasını bir dolguya veya kurban nesneye boşaltmadan önce Orca " -"Slicer, ardışık dolgu veya kurban nesne ekstrüzyonlarını güvenilir bir şekilde " -"üretmek için her zaman bu miktardaki malzemeyi silme kulesine hazırlayacaktır." +"Slicer, ardışık dolgu veya kurban nesne ekstrüzyonlarını güvenilir bir " +"şekilde üretmek için her zaman bu miktardaki malzemeyi silme kulesine " +"hazırlayacaktır." msgid "Speed of the last cooling move" msgstr "Son soğutma hareketi hızı" @@ -11702,10 +11774,10 @@ msgid "Enable ramming for multi-tool setups" msgstr "Çoklu araç kurulumları için sıkıştırmayı etkinleştirin" msgid "" -"Perform ramming when using multi-tool 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." +"Perform ramming when using multi-tool 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 "" "Çok takımlı yazıcı kullanırken sıkıştırma gerçekleştirin (yani Yazıcı " "Ayarları'ndaki 'Tek Ekstruder Çoklu Malzeme' işaretli olmadığında). " @@ -11740,14 +11812,17 @@ msgstr "Filament malzeme türü" msgid "Soluble material" msgstr "Çözünür malzeme" -msgid "Soluble material is commonly used to print support and support interface" +msgid "" +"Soluble material is commonly used to print support and support interface" msgstr "" -"Çözünür malzeme genellikle destek ve destek arayüzünü yazdırmak için kullanılır" +"Çözünür malzeme genellikle destek ve destek arayüzünü yazdırmak için " +"kullanılır" msgid "Support material" msgstr "Destek malzemesi" -msgid "Support material is commonly used to print support and support interface" +msgid "" +"Support material is commonly used to print support and support interface" msgstr "" "Destek malzemesi yaygın olarak destek ve destek arayüzünü yazdırmak için " "kullanılır" @@ -11756,9 +11831,9 @@ msgid "Softening temperature" msgstr "Yumuşama sıcaklığı" 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 clogging." +"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 clogging." msgstr "" "Filament bu sıcaklıkta yumuşar, bu nedenle yatak sıcaklığı bununla eşit veya " "daha yüksekse, tıkanmaları önlemek için ön kapağı açmanız ve/veya üst camı " @@ -11786,8 +11861,8 @@ msgid "Sparse infill direction" msgstr "Seyrek dolgu yönü" msgid "" -"Angle for sparse infill pattern, which controls the start or main direction of " -"line" +"Angle for sparse infill pattern, which controls the start or main direction " +"of line" msgstr "" "Hattın başlangıcını veya ana yönünü kontrol eden seyrek dolgu deseni açısı" @@ -11795,9 +11870,10 @@ msgid "Solid infill direction" msgstr "Katı dolgu yönü" msgid "" -"Angle for solid infill pattern, which controls the start or main direction of " -"line" -msgstr "Hattın başlangıcını veya ana yönünü kontrol eden katı dolgu deseni açısı" +"Angle for solid infill pattern, which controls the start or main direction " +"of line" +msgstr "" +"Hattın başlangıcını veya ana yönünü kontrol eden katı dolgu deseni açısı" msgid "Rotate solid infill direction" msgstr "Katı dolgu yönünü döndür" @@ -11813,8 +11889,8 @@ msgid "" "Density of internal sparse infill, 100% turns all sparse infill into solid " "infill and internal solid infill pattern will be used" msgstr "" -"İç seyrek dolgunun yoğunluğu, %100 tüm seyrek dolguyu katı dolguya dönüştürür " -"ve iç katı dolgu modeli kullanılacaktır" +"İç seyrek dolgunun yoğunluğu, %100 tüm seyrek dolguyu katı dolguya " +"dönüştürür ve iç katı dolgu modeli kullanılacaktır" msgid "Sparse infill pattern" msgstr "Dolgu deseni" @@ -11865,8 +11941,8 @@ msgid "Lattice angle 1" msgstr "Kafes açısı 1" msgid "" -"The angle of the first set of 2D lattice elements in the Z direction. Zero is " -"vertical." +"The angle of the first set of 2D lattice elements in the Z direction. Zero " +"is vertical." msgstr "" "İlk 2 boyutlu kafes elemanları grubunun Z yönündeki açısı. Sıfır dikeydir." @@ -11874,8 +11950,8 @@ msgid "Lattice angle 2" msgstr "Kafes açısı 2" msgid "" -"The angle of the second set of 2D lattice elements in the Z direction. Zero is " -"vertical." +"The angle of the second set of 2D lattice elements in the Z direction. Zero " +"is vertical." msgstr "" "İkinci 2 boyutlu kafes elemanları grubunun Z yönündeki açısı. Sıfır dikeydir." @@ -11885,23 +11961,24 @@ msgstr "Dolgu uzunluğu" 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. Orca Slicer 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" +"calculated over infill extrusion width. Orca Slicer 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 "" "Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " -"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon genişliği " -"üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir çevre " -"segmentine bağlamaya çalışıyor. infill_anchor_max'tan daha kısa böyle bir " -"çevre segmenti bulunamazsa, dolgu hattı yalnızca bir taraftaki bir çevre " +"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon " +"genişliği üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir " +"çevre segmentine bağlamaya çalışıyor. infill_anchor_max'tan daha kısa böyle " +"bir çevre segmenti bulunamazsa, dolgu hattı yalnızca bir taraftaki bir çevre " "segmentine bağlanır ve alınan çevre segmentinin uzunluğu bu parametreyle " "sınırlıdır, ancak çapa_uzunluk_max'tan uzun olamaz.\n" -"Tek bir dolgu hattına bağlı sabitleme çevrelerini devre dışı bırakmak için bu " -"parametreyi sıfıra ayarlayın." +"Tek bir dolgu hattına bağlı sabitleme çevrelerini devre dışı bırakmak için " +"bu parametreyi sıfıra ayarlayın." msgid "0 (no open anchors)" msgstr "0 (açık bağlantı yok)" @@ -11915,23 +11992,24 @@ msgstr "Dolgu maksimum uzunluk" 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. Orca Slicer 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" +"calculated over infill extrusion width. Orca Slicer 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 "" "Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " -"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon genişliği " -"üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir çevre " -"segmentine bağlamaya çalışıyor. Bu parametreden daha kısa bir çevre segmenti " -"bulunamazsa, dolgu hattı sadece bir kenardaki bir çevre segmentine bağlanır ve " -"alınan çevre segmentinin uzunluğu infill_anchor ile sınırlıdır ancak bu " -"parametreden daha uzun olamaz.\n" -"0'a ayarlanırsa dolgu bağlantısı için eski algoritma kullanılacaktır; 1000 ve " -"0 ile aynı sonucu oluşturmalıdır." +"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon " +"genişliği üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir " +"çevre segmentine bağlamaya çalışıyor. Bu parametreden daha kısa bir çevre " +"segmenti bulunamazsa, dolgu hattı sadece bir kenardaki bir çevre segmentine " +"bağlanır ve alınan çevre segmentinin uzunluğu infill_anchor ile sınırlıdır " +"ancak bu parametreden daha uzun olamaz.\n" +"0'a ayarlanırsa dolgu bağlantısı için eski algoritma kullanılacaktır; 1000 " +"ve 0 ile aynı sonucu oluşturmalıdır." msgid "0 (Simple connect)" msgstr "0 (Basit bağlantı)" @@ -11949,26 +12027,26 @@ msgid "" "Acceleration of top surface infill. Using a lower value may improve top " "surface quality" msgstr "" -"Üst yüzey dolgusunun hızlandırılması. Daha düşük bir değerin kullanılması üst " -"yüzey kalitesini iyileştirebilir" +"Üst yüzey dolgusunun hızlandırılması. Daha düşük bir değerin kullanılması " +"üst yüzey kalitesini iyileştirebilir" msgid "Acceleration of outer wall. Using a lower value can improve quality" msgstr "" "Dış duvarın hızlanması. Daha düşük bir değer kullanmak kaliteyi artırabilir" 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." +"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 "" -"Köprülerin hızlandırılması. Değer yüzde olarak ifade edilirse (örn. %50), dış " -"duvar ivmesine göre hesaplanacaktır." +"Köprülerin hızlandırılması. Değer yüzde olarak ifade edilirse (örn. %50), " +"dış duvar ivmesine göre hesaplanacaktır." msgid "mm/s² or %" msgstr "mm/s² veya %" 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." +"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 "" "Seyrek dolgunun hızlandırılması. Değer yüzde olarak ifade edilirse (örn. " "%100), varsayılan ivmeye göre hesaplanacaktır." @@ -11998,8 +12076,10 @@ msgid "accel_to_decel" msgstr "Accel_to_decel" #, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" -msgstr "Klipper'ın max_accel_to_decel değeri ivmenin bu %%'sine göre ayarlanacak" +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "" +"Klipper'ın max_accel_to_decel değeri ivmenin bu %%'sine göre ayarlanacak" msgid "Jerk of outer walls" msgstr "Dış duvar JERK değeri" @@ -12020,8 +12100,8 @@ msgid "Jerk for travel" msgstr "Seyahat için JERK değeri" msgid "" -"Line width of initial layer. If expressed as a %, it will be computed over the " -"nozzle diameter." +"Line width of initial layer. If expressed as a %, it will be computed over " +"the nozzle diameter." msgstr "" "İlk katmanın çizgi genişliği. % olarak ifade edilirse Nozul çapı üzerinden " "hesaplanacaktır." @@ -12030,8 +12110,8 @@ msgid "Initial layer height" msgstr "Başlangıç katman yüksekliği" msgid "" -"Height of initial layer. Making initial layer height to be thick slightly can " -"improve build plate adhesion" +"Height of initial layer. Making initial layer height to be thick slightly " +"can improve build plate adhesion" msgstr "" "İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, baskı " "plakasının yapışmasını iyileştirebilir" @@ -12072,16 +12152,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\" 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." +"\"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." msgid "layer" msgstr "katman" @@ -12108,8 +12188,8 @@ msgid "Internal bridges fan speed" msgstr "İç köprü fan hızı" msgid "" -"The part cooling fan speed used for all internal bridges. Set to -1 to use the " -"overhang fan speed settings instead.\n" +"The part cooling fan speed used for all internal bridges. Set to -1 to use " +"the overhang fan speed settings instead.\n" "\n" "Reducing the internal bridges fan speed, compared to your regular fan speed, " "can help reduce part warping due to excessive cooling applied over a large " @@ -12118,13 +12198,13 @@ msgstr "" "Tüm iç köprüler için kullanılan parça soğutma fanı hızı. Bunun yerine " "çıkıntılı fan hızı ayarlarını kullanmak için -1’e ayarlayın.\n" "\n" -"Normal fan hızınızla karşılaştırıldığında iç köprü fan hızını azaltmak, geniş " -"bir yüzeye uzun süre uygulanan aşırı soğutma nedeniyle parçanın bükülmesinin " -"azaltılmasına yardımcı olabilir." +"Normal fan hızınızla karşılaştırıldığında iç köprü fan hızını azaltmak, " +"geniş bir yüzeye uzun süre uygulanan aşırı soğutma nedeniyle parçanın " +"bükülmesinin azaltılmasına yardımcı olabilir." msgid "" -"Randomly jitter while printing the wall, so that the surface has a rough look. " -"This setting controls the fuzzy position" +"Randomly jitter while printing the wall, so that the surface has a rough " +"look. This setting controls the fuzzy position" msgstr "" "Duvara baskı yaparken rastgele titreme, böylece yüzeyin pürüzlü bir görünüme " "sahip olması. Bu ayar bulanık konumu kontrol eder" @@ -12152,8 +12232,10 @@ msgid "Fuzzy skin point distance" msgstr "Bulanık kaplama noktası mesafesi" msgid "" -"The average distance between the random points introduced on each line segment" -msgstr "Her çizgi parçasına eklenen rastgele noktalar arasındaki ortalama mesafe" +"The average distance between the random points introduced on each line " +"segment" +msgstr "" +"Her çizgi parçasına eklenen rastgele noktalar arasındaki ortalama mesafe" msgid "Apply fuzzy skin to first layer" msgstr "Bulanık cildi ilk katmana uygulayın" @@ -12169,8 +12251,8 @@ msgid "" "Classic: Classic uniform random noise.\n" "Perlin: Perlin noise, which gives a more consistent texture.\n" "Billow: Similar to perlin noise, but clumpier.\n" -"Ridged Multifractal: Ridged noise with sharp, jagged features. Creates marble-" -"like textures.\n" +"Ridged Multifractal: Ridged noise with sharp, jagged features. Creates " +"marble-like textures.\n" "Voronoi: Divides the surface into voronoi cells, and displaces each one by a " "random amount. Creates a patchwork texture." msgstr "" @@ -12180,8 +12262,8 @@ msgstr "" "Billow: Perlin gürültüsüne benzer, ancak daha topaklanır.\n" "Ridged Multifractal: Keskin, pürüzlü özelliklere sahip çıkıntılı gürültü. " "Mermer benzeri dokular oluşturur.\n" -"Voronoi: Yüzeyi voronoi hücrelerine böler ve her birini rastgele miktarda yer " -"değiştirir. Patchwork dokusu oluşturur." +"Voronoi: Yüzeyi voronoi hücrelerine böler ve her birini rastgele miktarda " +"yer değiştirir. Patchwork dokusu oluşturur." msgid "Classic" msgstr "Klasik" @@ -12202,11 +12284,11 @@ msgid "Fuzzy skin feature size" msgstr "Bulanık cilt özelliği boyutu" msgid "" -"The base size of the coherent noise features, in mm. Higher values will result " -"in larger features." +"The base size of the coherent noise features, in mm. Higher values will " +"result in larger features." msgstr "" -"Tutarlı gürültü özelliklerinin mm cinsinden taban boyutu. Daha yüksek değerler " -"daha büyük özelliklerle sonuçlanacaktır." +"Tutarlı gürültü özelliklerinin mm cinsinden taban boyutu. Daha yüksek " +"değerler daha büyük özelliklerle sonuçlanacaktır." msgid "Fuzzy Skin Noise Octaves" msgstr "Bulanık Cilt Gürültüsü Oktavları" @@ -12215,8 +12297,9 @@ msgid "" "The number of octaves of coherent noise to use. Higher values increase the " "detail of the noise, but also increase computation time." msgstr "" -"Kullanılacak tutarlı gürültünün oktav sayısı. Daha yüksek değerler gürültünün " -"ayrıntısını artırır ancak aynı zamanda hesaplama süresini de artırır." +"Kullanılacak tutarlı gürültünün oktav sayısı. Daha yüksek değerler " +"gürültünün ayrıntısını artırır ancak aynı zamanda hesaplama süresini de " +"artırır." msgid "Fuzzy skin noise persistence" msgstr "Bulanık cilt gürültüsü kalıcılığı" @@ -12235,9 +12318,9 @@ msgid "Layers and Perimeters" msgstr "Katmanlar ve Çevreler" msgid "" -"Don't print gap fill with a length is smaller than the threshold specified (in " -"mm). This setting applies to top, bottom and solid infill and, if using the " -"classic perimeter generator, to wall gap fill. " +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " msgstr "" "Belirtilen eşikten (mm cinsinden) daha küçük bir uzunluğa sahip boşluk " "dolgusunu yazdırmayın. Bu ayar üst, alt ve katı dolgu için ve klasik çevre " @@ -12247,21 +12330,21 @@ msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " "printed more slowly" msgstr "" -"Boşluk doldurma hızı. Boşluk genellikle düzensiz çizgi genişliğine sahiptir ve " -"daha yavaş yazdırılmalıdır" +"Boşluk doldurma hızı. Boşluk genellikle düzensiz çizgi genişliğine sahiptir " +"ve daha yavaş yazdırılmalıdır" msgid "Precise Z height" msgstr "Hassas z yüksekliği" msgid "" "Enable this to get precise z height of object after slicing. It will get the " -"precise object height by fine-tuning the layer heights of the last few layers. " -"Note that this is an experimental parameter." +"precise object height by fine-tuning the layer heights of the last few " +"layers. Note that this is an experimental parameter." msgstr "" "Dilimlemeden sonra nesnenin kesin z yüksekliğini elde etmek için bunu " "etkinleştirin. Son birkaç katmanın katman yüksekliklerine ince ayar yaparak " -"kesin nesne yüksekliğini elde edecektir. Bunun deneysel bir parametre olduğunu " -"unutmayın." +"kesin nesne yüksekliğini elde edecektir. Bunun deneysel bir parametre " +"olduğunu unutmayın." msgid "Arc fitting" msgstr "Ark" @@ -12270,11 +12353,11 @@ msgid "" "Enable this to get a G-code file which has G2 and G3 moves. The fitting " "tolerance is same as the resolution. \n" "\n" -"Note: For Klipper machines, this option is recommended to be disabled. Klipper " -"does not benefit from arc commands as these are split again into line segments " -"by the firmware. This results in a reduction in surface quality as line " -"segments are converted to arcs by the slicer and then back to line segments by " -"the firmware." +"Note: For Klipper machines, this option is recommended to be disabled. " +"Klipper does not benefit from arc commands as these are split again into " +"line segments by the firmware. This results in a reduction in surface " +"quality as line segments are converted to arcs by the slicer and then back " +"to line segments by the firmware." msgstr "" "G2 ve G3 hareketlerine sahip bir G kodu dosyası elde etmek için bunu " "etkinleştirin. Montaj toleransı çözünürlükle aynıdır. \n" @@ -12283,20 +12366,23 @@ msgstr "" "Klipper, yazılım tarafından tekrar çizgi bölümlerine bölündüğü için yay " "komutlarından faydalanmaz. Bu, çizgi bölümlerinin dilimleyici tarafından " "yaylara dönüştürülmesi ve ardından donanım yazılımı tarafından tekrar çizgi " -"bölümlerine dönüştürülmesi nedeniyle yüzey kalitesinde bir azalmaya neden olur." +"bölümlerine dönüştürülmesi nedeniyle yüzey kalitesinde bir azalmaya neden " +"olur." msgid "Add line number" msgstr "Satır numarası ekle" msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" msgstr "" -"Her G Kodu satırının başına satır numarası (Nx) eklemek için bunu etkinleştirin" +"Her G Kodu satırının başına satır numarası (Nx) eklemek için bunu " +"etkinleştirin" msgid "Scan first layer" msgstr "İlk katmanı tara" msgid "" -"Enable this to enable the camera on printer to check the quality of first layer" +"Enable this to enable the camera on printer to check the quality of first " +"layer" msgstr "" "Yazıcıdaki kameranın ilk katmanın kalitesini kontrol etmesini sağlamak için " "bunu etkinleştirin" @@ -12308,8 +12394,8 @@ msgid "" "The metallic material of nozzle. This determines the abrasive resistance of " "nozzle, and what kind of filament can be printed" msgstr "" -"Nozulnin metalik malzemesi. Bu, nozulun aşınma direncini ve ne tür filamentin " -"basılabileceğini belirler" +"Nozulnin metalik malzemesi. Bu, nozulun aşınma direncini ve ne tür " +"filamentin basılabileceğini belirler" msgid "Undefine" msgstr "Tanımsız" @@ -12361,8 +12447,8 @@ msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." msgstr "Yatak şekline göre [0,1] aralığında en iyi otomatik düzenleme konumu." msgid "" -"Enable this option if machine has auxiliary part cooling fan. G-code command: " -"M106 P2 S(0-255)." +"Enable this option if machine has auxiliary part cooling fan. G-code " +"command: M106 P2 S(0-255)." msgstr "" "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin. G-code " "komut: M106 P2 S(0-255)." @@ -12381,7 +12467,8 @@ msgstr "" "Fanı hedef başlangıç zamanından bu kadar saniye önce başlatın (kesirli " "saniyeleri kullanabilirsiniz). Bu süre tahmini için sonsuz ivme varsayar ve " "yalnızca G1 ve G0 hareketlerini hesaba katar (yay uydurma desteklenmez).\n" -"Fan komutlarını özel kodlardan taşımaz (bir çeşit 'bariyer' görevi görürler).\n" +"Fan komutlarını özel kodlardan taşımaz (bir çeşit 'bariyer' görevi " +"görürler).\n" "'Yalnızca özel başlangıç gcode'u etkinleştirilmişse, fan komutları başlangıç " "gcode'una taşınmayacaktır.\n" "Devre dışı bırakmak için 0'ı kullanın." @@ -12404,8 +12491,8 @@ msgid "" msgstr "" "Soğutma fanını başlatmak için hedef hıza düşmeden önce bu süre boyunca " "maksimum fan hızı komutunu verin.\n" -"Bu, düşük PWM/gücün fanın durma noktasından dönmeye başlaması veya fanın daha " -"hızlı hızlanması için yetersiz olabileceği fanlar için kullanışlıdır.\n" +"Bu, düşük PWM/gücün fanın durma noktasından dönmeye başlaması veya fanın " +"daha hızlı hızlanması için yetersiz olabileceği fanlar için kullanışlıdır.\n" "Devre dışı bırakmak için 0'a ayarlayın." msgid "Time cost" @@ -12451,41 +12538,44 @@ msgid "Pellet Modded Printer" msgstr "Pelet modlu yazıcı" msgid "Enable this option if your printer uses pellets instead of filaments" -msgstr "Yazıcınız filament yerine pellet kullanıyorsa bu seçeneği etkinleştirin" +msgstr "" +"Yazıcınız filament yerine pellet kullanıyorsa bu seçeneği etkinleştirin" msgid "Support multi bed types" msgstr "Çoklu plaka" msgid "Enable this option if you want to use multiple bed types" -msgstr "Birden fazla plaka tipi kullanmak istiyorsanız bu seçeneği etkinleştirin" +msgstr "" +"Birden fazla plaka tipi kullanmak istiyorsanız bu seçeneği etkinleştirin" msgid "Label objects" msgstr "Nesneleri etiketle" 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." +"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-Code etiketleme yazdırma hareketlerine ait oldukları nesneyle ilgili " -"yorumlar eklemek için bunu etkinleştirin; bu, Octoprint CancelObject eklentisi " -"için kullanışlıdır. Bu ayarlar Tek Ekstruder Çoklu Malzeme kurulumu ve Nesneye " -"Temizleme / Dolguya Temizleme ile uyumlu DEĞİLDİR." +"yorumlar eklemek için bunu etkinleştirin; bu, Octoprint CancelObject " +"eklentisi için kullanışlıdır. Bu ayarlar Tek Ekstruder Çoklu Malzeme " +"kurulumu ve Nesneye Temizleme / Dolguya Temizleme ile uyumlu DEĞİLDİR." msgid "Exclude objects" msgstr "Nesneleri hariç tut" msgid "Enable this option to add EXCLUDE OBJECT command in g-code" -msgstr "G koduna EXCLUDE OBJECT komutunu eklemek için bu seçeneği etkinleştirin" +msgstr "" +"G koduna EXCLUDE OBJECT komutunu eklemek için bu seçeneği etkinleştirin" msgid "Verbose G-code" msgstr "Ayrıntılı G kodu" 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." +"descriptive text. If you print from SD card, the additional weight of the " +"file could make your firmware slow down." msgstr "" "Her satırın açıklayıcı bir metinle açıklandığı, yorumlu bir G kodu dosyası " "almak için bunu etkinleştirin. SD karttan yazdırırsanız dosyanın ilave " @@ -12508,14 +12598,14 @@ msgstr "Dolgu kombinasyonu - Maksimum katman yüksekliği" msgid "" "Maximum layer height for the combined sparse infill. \n" "\n" -"Set it to 0 or 100% to use the nozzle diameter (for maximum reduction in print " -"time) or a value of ~80% to maximize sparse infill strength.\n" +"Set it to 0 or 100% to use the nozzle diameter (for maximum reduction in " +"print time) or a value of ~80% to maximize sparse infill strength.\n" "\n" -"The number of layers over which infill is combined is derived by dividing this " -"value with the layer height and rounded down to the nearest decimal.\n" +"The number of layers over which infill is combined is derived by dividing " +"this value with the layer height and rounded down to the nearest decimal.\n" "\n" -"Use either absolute mm values (eg. 0.32mm for a 0.4mm nozzle) or % values (eg " -"80%). This value must not be larger than the nozzle diameter." +"Use either absolute mm values (eg. 0.32mm for a 0.4mm nozzle) or % values " +"(eg 80%). This value must not be larger than the nozzle diameter." msgstr "" "Birleşik seyrek dolgu için maksimum katman yüksekliği. \n" "\n" @@ -12526,15 +12616,15 @@ msgstr "" "Dolgunun birleştirildiği katmanların sayısı, bu değerin katman yüksekliğine " "bölünmesiyle elde edilir ve en yakın ondalık sayıya yuvarlanır.\n" "\n" -"Mutlak mm değerlerini (örn. 0,4 mm’lik nozul için 0,32 mm) veya % değerlerini " -"(örn. %80) kullanın. Bu değer nozul çapından büyük olmamalıdır." +"Mutlak mm değerlerini (örn. 0,4 mm’lik nozul için 0,32 mm) veya % " +"değerlerini (örn. %80) kullanın. Bu değer nozul çapından büyük olmamalıdır." msgid "Filament to print internal sparse infill." msgstr "İç seyrek dolguyu yazdırmak için filament." msgid "" -"Line width of internal sparse infill. If expressed as a %, it will be computed " -"over the nozzle diameter." +"Line width of internal sparse infill. If expressed as a %, it will be " +"computed over the nozzle diameter." msgstr "" "İç seyrek dolgunun çizgi genişliği. % olarak ifade edilirse Nozul çapı " "üzerinden hesaplanacaktır." @@ -12544,15 +12634,15 @@ msgstr "Dolgu/Duvar örtüşmesi" #, no-c-format, no-boost-format msgid "" -"Infill area is enlarged slightly to overlap with wall for better bonding. The " -"percentage value is relative to line width of sparse infill. Set this value to " -"~10-15% to minimize potential over extrusion and accumulation of material " -"resulting in rough top surfaces." +"Infill area is enlarged slightly to overlap with wall for better bonding. " +"The percentage value is relative to line width of sparse infill. Set this " +"value to ~10-15% to minimize potential over extrusion and accumulation of " +"material resulting in rough top surfaces." msgstr "" "Daha iyi yapışma için dolgu alanı duvarla örtüşecek şekilde hafifçe " "genişletilir. Yüzde değeri seyrek dolgunun çizgi genişliğine göredir. Aşırı " -"ekstrüzyon ve pürüzlü üst yüzeylere neden olan malzeme birikmesi potansiyelini " -"en aza indirmek için bu değeri ~%10-15’e ayarlayın." +"ekstrüzyon ve pürüzlü üst yüzeylere neden olan malzeme birikmesi " +"potansiyelini en aza indirmek için bu değeri ~%10-15’e ayarlayın." msgid "Top/Bottom solid infill/wall overlap" msgstr "Üst/Alt katı dolgu/Duvar örtüşmesi" @@ -12560,8 +12650,8 @@ msgstr "Üst/Alt katı dolgu/Duvar örtüşmesi" #, no-c-format, no-boost-format msgid "" "Top solid infill area is enlarged slightly to overlap with wall for better " -"bonding and to minimize the appearance of pinholes where the top infill meets " -"the walls. A value of 25-30% is a good starting point, minimizing the " +"bonding and to minimize the appearance of pinholes where the top infill " +"meets the walls. A value of 25-30% is a good starting point, minimizing the " "appearance of pinholes. The percentage value is relative to line width of " "sparse infill" msgstr "" @@ -12579,12 +12669,12 @@ msgstr "Arayüz kabukları" msgid "" "Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual soluble " -"support material" +"Useful for multi-extruder prints with translucent materials or manual " +"soluble support material" msgstr "" "Bitişik malzemeler/hacimler arasında katı kabuk oluşumunu zorlayın. Yarı " -"saydam malzemelerle veya elle çözülebilen destek malzemesiyle çoklu ekstruder " -"baskıları için kullanışlıdır" +"saydam malzemelerle veya elle çözülebilen destek malzemesiyle çoklu " +"ekstruder baskıları için kullanışlıdır" msgid "Maximum width of a segmented region" msgstr "Bölümlere ayrılmış bir bölgenin maksimum genişliği" @@ -12606,7 +12696,8 @@ msgstr "" "Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği. " "“mmu_segmented_region_max_width” sıfırsa veya " "“mmu_segmented_region_interlocking_length”, “mmu_segmented_region_max_width” " -"değerinden büyükse göz ardı edilecektir. Sıfır bu özelliği devre dışı bırakır." +"değerinden büyükse göz ardı edilecektir. Sıfır bu özelliği devre dışı " +"bırakır." msgid "Use beam interlocking" msgstr "Işın kilitlemeyi kullanın" @@ -12650,7 +12741,8 @@ msgid "" "structure, measured in cells. Too few cells will result in poor adhesion." msgstr "" "Hücrelerde ölçülen, birbirine kenetlenen yapıyı oluşturmak için filamentler " -"arasındaki sınırdan mesafe. Çok az hücre yapışmanın zayıf olmasına neden olur." +"arasındaki sınırdan mesafe. Çok az hücre yapışmanın zayıf olmasına neden " +"olur." msgid "Interlocking boundary avoidance" msgstr "Birbirine kenetlenen sınırdan kaçınma" @@ -12669,9 +12761,9 @@ 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 "" -"Ütüleme, düz yüzeyi daha pürüzsüz hale getirmek için aynı yükseklikteki yüzeye " -"tekrar baskı yapmak için küçük akış kullanmaktır. Bu ayar hangi katmanın " -"ütüleneceğini kontrol eder" +"Ütüleme, düz yüzeyi daha pürüzsüz hale getirmek için aynı yükseklikteki " +"yüzeye tekrar baskı yapmak için küçük akış kullanmaktır. Bu ayar hangi " +"katmanın ütüleneceğini kontrol eder" msgid "No ironing" msgstr "Ütüleme yok" @@ -12698,8 +12790,8 @@ 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 "" -"Ütüleme sırasında çıkacak malzeme miktarı. Normal katman yüksekliğindeki akışa " -"göre. Çok yüksek değer yüzeyde aşırı ekstrüzyona neden olur" +"Ütüleme sırasında çıkacak malzeme miktarı. Normal katman yüksekliğindeki " +"akışa göre. Çok yüksek değer yüzeyde aşırı ekstrüzyona neden olur" msgid "Ironing line spacing" msgstr "Ütüleme çizgi aralığı" @@ -12729,8 +12821,8 @@ msgid "" "The angle ironing is done at. A negative number disables this function and " "uses the default method." msgstr "" -"Köşebent ütüleme işlemi yapılır. Negatif bir sayı bu işlevi devre dışı bırakır " -"ve varsayılan yöntemi kullanır." +"Köşebent ütüleme işlemi yapılır. Negatif bir sayı bu işlevi devre dışı " +"bırakır ve varsayılan yöntemi kullanır." msgid "This gcode part is inserted at every layer change after lift z" msgstr "" @@ -12760,11 +12852,11 @@ msgstr "" "G kodu tadı Klipper olarak ayarlandığında bu seçenek göz ardı edilecektir." msgid "" -"This G-code will be used as a code for the pause print. User can insert pause " -"G-code in gcode viewer" +"This G-code will be used as a code for the pause print. User can insert " +"pause G-code in gcode viewer" msgstr "" -"Bu G kodu duraklatma yazdırması için bir kod olarak kullanılacaktır. Kullanıcı " -"gcode görüntüleyiciye duraklatma G kodunu ekleyebilir" +"Bu G kodu duraklatma yazdırması için bir kod olarak kullanılacaktır. " +"Kullanıcı gcode görüntüleyiciye duraklatma G kodunu ekleyebilir" msgid "This G-code will be used as a custom code" msgstr "Bu G kodu özel kod olarak kullanılacak" @@ -12892,8 +12984,8 @@ msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "Seyahat için maksimum ivme (M204 T), yalnızca Marlin 2 için geçerlidir" msgid "" -"Part cooling fan speed may be increased when auto cooling is enabled. This is " -"the maximum speed limitation of part cooling fan" +"Part cooling fan speed may be increased when auto cooling is enabled. This " +"is the maximum speed limitation of part cooling fan" msgstr "" "Otomatik soğutma etkinleştirildiğinde parça soğutma fanı hızı artırılabilir. " "Bu, parça soğutma fanının maksimum hız sınırlamasıdır" @@ -12905,16 +12997,16 @@ msgid "" "The largest printable layer height for extruder. Used tp limits the maximum " "layer hight when enable adaptive layer height" msgstr "" -"Ekstruder için yazdırılabilir en büyük katman yüksekliği. Uyarlanabilir katman " -"yüksekliği etkinleştirildiğinde maksimum katman yüksekliğini sınırlamak için " -"kullanılır" +"Ekstruder için yazdırılabilir en büyük katman yüksekliği. Uyarlanabilir " +"katman yüksekliği etkinleştirildiğinde maksimum katman yüksekliğini " +"sınırlamak için kullanılır" msgid "Extrusion rate smoothing" msgstr "Ekstrüzyon hızını yumuşatma" msgid "" -"This parameter smooths out sudden extrusion rate changes that happen when the " -"printer transitions from printing a high flow (high speed/larger width) " +"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" @@ -12924,12 +13016,13 @@ msgid "" "\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" +"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 " @@ -12951,13 +13044,13 @@ msgstr "" "\n" "0 değeri özelliği devre dışı bırakır. \n" "\n" -"Yüksek hızlı, yüksek akışlı doğrudan tahrikli bir yazıcı için (Bambu lab veya " -"Voron gibi) bu değer genellikle gerekli değildir. Ancak özellik hızlarının " -"büyük ölçüde değiştiği bazı durumlarda marjinal bir fayda sağlayabilir. " -"Örneğin, çıkıntılar nedeniyle agresif yavaşlamalar olduğunda. Bu durumlarda " -"300-350mm3/s2 civarında yüksek bir değer önerilir çünkü bu, basınç " -"ilerlemesinin daha yumuşak bir akış geçişi elde etmesine yardımcı olmak için " -"yeterli yumuşatmaya izin verir.\n" +"Yüksek hızlı, yüksek akışlı doğrudan tahrikli bir yazıcı için (Bambu lab " +"veya Voron gibi) bu değer genellikle gerekli değildir. Ancak özellik " +"hızlarının büyük ölçüde değiştiği bazı durumlarda marjinal bir fayda " +"sağlayabilir. Örneğin, çıkıntılar nedeniyle agresif yavaşlamalar olduğunda. " +"Bu durumlarda 300-350mm3/s2 civarında yüksek bir değer önerilir çünkü bu, " +"basınç ilerlemesinin daha yumuşak bir akış geçişi elde etmesine yardımcı " +"olmak için yeterli yumuşatmaya izin verir.\n" "\n" "Basınç avansı olmayan daha yavaş yazıcılar için değer çok daha düşük " "ayarlanmalıdır. Doğrudan tahrikli ekstruderler için 10-15mm3/s2 ve Bowden " @@ -12998,8 +13091,8 @@ msgstr "Yalnızca harici özelliklere uygula" msgid "" "Applies extrusion rate smoothing only on external perimeters and overhangs. " "This can help reduce artefacts due to sharp speed transitions on externally " -"visible overhangs without impacting the print speed of features that will not " -"be visible to the user." +"visible overhangs without impacting the print speed of features that will " +"not be visible to the user." msgstr "" "Ekstrüzyon hızı yumuşatmayı yalnızca dış çevre ve çıkıntılara uygular. Bu, " "kullanıcı tarafından görülmeyecek özelliklerin yazdırma hızını etkilemeden, " @@ -13011,8 +13104,8 @@ msgstr "Parça soğutma fanı için minimum hız" 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" +"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 "" @@ -13030,20 +13123,20 @@ msgid "" "layer hight when enable adaptive layer height" msgstr "" "Ekstruder için yazdırılabilir en düşük katman yüksekliği. Kullanılan tp, " -"uyarlanabilir katman yüksekliğini etkinleştirirken minimum katman yüksekliğini " -"sınırlar" +"uyarlanabilir katman yüksekliğini etkinleştirirken minimum katman " +"yüksekliğini sınırlar" msgid "Min print speed" msgstr "Minimum baskı hızı" msgid "" "The minimum print speed to which the printer slows down to maintain the " -"minimum layer time defined above when the slowdown for better layer cooling is " -"enabled." +"minimum layer time defined above when the slowdown for better layer cooling " +"is enabled." msgstr "" "Daha iyi katman soğutması için yavaşlama etkinleştirildiğinde, yukarıda " -"tanımlanan minimum katman süresini korumak için yazıcının yavaşladığı minimum " -"yazdırma hızı." +"tanımlanan minimum katman süresini korumak için yazıcının yavaşladığı " +"minimum yazdırma hızı." msgid "Diameter of nozzle" msgstr "Nozul çapı" @@ -13062,11 +13155,11 @@ msgid "Host Type" msgstr "Bağlantı Türü" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " -"alan ana bilgisayarın türünü içermelidir." +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " +"Bu alan ana bilgisayarın türünü içermelidir." msgid "Nozzle volume" msgstr "Nozul hacmi" @@ -13085,7 +13178,8 @@ msgstr "Soğutma borusu uzunluğu" msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "" -"İçindeki soğutma hareketleri alanını sınırlamak üzere soğutma tüpünün uzunluğu." +"İçindeki soğutma hareketleri alanını sınırlamak üzere soğutma tüpünün " +"uzunluğu." msgid "High extruder current on filament swap" msgstr "Filament değişiminde yüksek ekstruder akımı" @@ -13095,9 +13189,9 @@ msgid "" "filament exchange sequence to allow for rapid ramming feed rates and to " "overcome resistance when loading a filament with an ugly shaped tip." msgstr "" -"Hızlı sıkıştırma hızlarına izin vermek ve kötü kesilmiş bir filament yüklerken " -"direncin üstesinden gelmek için filament değişim sırası sırasında ekstruder " -"motor akımını artırmak faydalı olabilir." +"Hızlı sıkıştırma hızlarına izin vermek ve kötü kesilmiş bir filament " +"yüklerken direncin üstesinden gelmek için filament değişim sırası sırasında " +"ekstruder motor akımını artırmak faydalı olabilir." msgid "Filament parking position" msgstr "Filament park konumu" @@ -13106,8 +13200,8 @@ 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 "" -"Ekstruder ucunun, boşaltıldığında filamentin park edildiği konumdan uzaklığı. " -"Bu ayar yazıcı ürün yazılımındaki değerle eşleşmelidir." +"Ekstruder ucunun, boşaltıldığında filamentin park edildiği konumdan " +"uzaklığı. Bu ayar yazıcı ürün yazılımındaki değerle eşleşmelidir." msgid "Extra loading distance" msgstr "Ekstra yükleme mesafesi" @@ -13115,8 +13209,8 @@ msgstr "Ekstra yükleme mesafesi" 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." +"positive, it is loaded further, if negative, the loading move is shorter " +"than unloading." msgstr "" "Sıfır olarak ayarlandığında, yükleme sırasında filamentin park konumundan " "taşındığı mesafe, boşaltma sırasında geri taşındığı mesafe ile aynıdır. " @@ -13134,13 +13228,13 @@ msgstr "Dolguda geri çekmeyi azalt" 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" +"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 "" "Hareket kesinlikle dolgu alanına girdiğinde geri çekilmeyin. Bu, sızıntının " "görülemeyeceği anlamına gelir. Bu, karmaşık model için geri çekme sürelerini " -"azaltabilir ve yazdırma süresinden tasarruf sağlayabilir, ancak dilimlemeyi ve " -"G kodu oluşturmayı yavaşlatır" +"azaltabilir ve yazdırma süresinden tasarruf sağlayabilir, ancak dilimlemeyi " +"ve G kodu oluşturmayı yavaşlatır" msgid "" "This option will drop the temperature of the inactive extruders to prevent " @@ -13168,22 +13262,22 @@ msgstr "Maksimum yazdırılabilir açı" 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." +"printable.90° will not change the model at all and allow any overhang, while " +"0 will replace all overhangs with conical material." msgstr "" "Daha dik çıkıntıları yazdırılabilir hale getirdikten sonra izin verilen " -"maksimum çıkıntı açısı. 90°, modeli hiçbir şekilde değiştirmez ve herhangi bir " -"çıkıntıya izin vermez, 0 ise tüm çıkıntıları konik malzemeyle değiştirir." +"maksimum çıkıntı açısı. 90°, modeli hiçbir şekilde değiştirmez ve herhangi " +"bir çıkıntıya izin vermez, 0 ise tüm çıkıntıları konik malzemeyle değiştirir." msgid "Make overhangs printable - Hole area" msgstr "Yazdırılabilir çıkıntı delik alanı oluşturun" 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." +"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 "" -"Modelin tabanındaki bir deliğin, konik malzemeyle doldurulmadan önce maksimum " -"alanı. 0 değeri, model tabanındaki tüm delikleri dolduracaktır." +"Modelin tabanındaki bir deliğin, konik malzemeyle doldurulmadan önce " +"maksimum alanı. 0 değeri, model tabanındaki tüm delikleri dolduracaktır." msgid "mm²" msgstr "mm²" @@ -13193,11 +13287,11 @@ msgstr "Çıkıntılı duvarı algıla" #, 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." +"Detect the overhang percentage relative to line width and use different " +"speed to print. For 100%% overhang, bridge speed is used." msgstr "" -"Çizgi genişliğine göre çıkıntı yüzdesini tespit edin ve yazdırmak için farklı " -"hızlar kullanın. %%100 çıkıntı için köprü hızı kullanılır." +"Çizgi genişliğine göre çıkıntı yüzdesini tespit edin ve yazdırmak için " +"farklı hızlar kullanın. %%100 çıkıntı için köprü hızı kullanılır." msgid "Filament to print walls" msgstr "Duvarları yazdırmak için filament" @@ -13219,11 +13313,11 @@ msgid "Alternate extra wall" msgstr "Alternatif ekstra duvar" msgid "" -"This setting adds an extra wall to every other layer. This way the infill gets " -"wedged vertically between the walls, resulting in stronger prints. \n" +"This setting adds an extra wall to every other layer. This way the infill " +"gets wedged vertically between the walls, resulting in stronger prints. \n" "\n" -"When this option is enabled, the ensure vertical shell thickness option needs " -"to be disabled. \n" +"When this option is enabled, the ensure vertical shell thickness option " +"needs to be disabled. \n" "\n" "Using lightning infill together with this option is not recommended as there " "is limited infill to anchor the extra perimeters to." @@ -13234,20 +13328,21 @@ msgstr "" "Bu seçenek etkinleştirildiğinde dikey kabuk kalınlığını sağla seçeneğinin " "devre dışı bırakılması gerekir. \n" "\n" -"İlave çevrelerin sabitleneceği dolgu sınırlı olduğundan, bu seçenekle birlikte " -"yıldırım dolgusunun kullanılması önerilmez." +"İlave çevrelerin sabitleneceği dolgu sınırlı olduğundan, bu seçenekle " +"birlikte yıldırım dolgusunun kullanılması önerilmez." 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 Orca Slicer config settings by reading environment " -"variables." +"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 Orca Slicer config settings by reading " +"environment variables." msgstr "" -"Çıktı G-kodunu özel komut dosyaları aracılığıyla işlemek istiyorsanız, mutlak " -"yollarını burada listeleyin. Birden fazla betiği noktalı virgülle ayırın. " -"Betiklere ilk argüman olarak G-code dosyasının mutlak yolu aktarılır ve ortam " -"değişkenlerini okuyarak Orca Slicer yapılandırma ayarlarına erişebilirler." +"Çıktı G-kodunu özel komut dosyaları aracılığıyla işlemek istiyorsanız, " +"mutlak yollarını burada listeleyin. Birden fazla betiği noktalı virgülle " +"ayırın. Betiklere ilk argüman olarak G-code dosyasının mutlak yolu aktarılır " +"ve ortam değişkenlerini okuyarak Orca Slicer yapılandırma ayarlarına " +"erişebilirler." msgid "Printer type" msgstr "Yazıcı türü" @@ -13268,7 +13363,8 @@ msgid "Raft contact Z distance" msgstr "Raft kontak Z mesafesi" msgid "Z gap between object and raft. Ignored for soluble interface" -msgstr "Nesne ve raft arasındaki Z boşluğu. Çözünür arayüz için göz ardı edildi" +msgstr "" +"Nesne ve raft arasındaki Z boşluğu. Çözünür arayüz için göz ardı edildi" msgid "Raft expansion" msgstr "Raft genişletme" @@ -13297,8 +13393,8 @@ msgid "" "Object will be raised by this number of support layers. Use this function to " "avoid wrapping when print ABS" msgstr "" -"Nesne bu sayıdaki destek katmanı tarafından yükseltilecektir. ABS yazdırırken " -"sarmayı önlemek için bu işlevi kullanın" +"Nesne bu sayıdaki destek katmanı tarafından yükseltilecektir. ABS " +"yazdırırken sarmayı önlemek için bu işlevi kullanın" msgid "" "G-code path is generated after simplifying the contour of model to avoid too " @@ -13313,7 +13409,8 @@ msgid "Travel distance threshold" msgstr "Seyahat mesafesi" msgid "" -"Only trigger retraction when the travel distance is longer than this threshold" +"Only trigger retraction when the travel distance is longer than this " +"threshold" msgstr "" "Geri çekmeyi yalnızca hareket mesafesi bu eşikten daha uzun olduğunda " "tetikleyin" @@ -13321,7 +13418,8 @@ msgstr "" msgid "Retract amount before wipe" msgstr "Temizleme işlemi öncesi geri çekme miktarı" -msgid "The length of fast retraction before wipe, relative to retraction length" +msgid "" +"The length of fast retraction before wipe, relative to retraction length" msgstr "" "Geri çekme uzunluğuna göre, temizlemeden önce hızlı geri çekilmenin uzunluğu" @@ -13338,8 +13436,8 @@ msgid "" "Force a retraction on top layer. Disabling could prevent clog on very slow " "patterns with small movements, like Hilbert curve" msgstr "" -"Üst katmanda geri çekilmeye zorlayın. Devre dışı bırakmak, Hilbert eğrisi gibi " -"küçük hareketlerin olduğu çok yavaş modellerde tıkanmayı önleyebilir" +"Üst katmanda geri çekilmeye zorlayın. Devre dışı bırakmak, Hilbert eğrisi " +"gibi küçük hareketlerin olduğu çok yavaş modellerde tıkanmayı önleyebilir" msgid "Retraction Length" msgstr "Geri Çekme Uzunluğu" @@ -13351,7 +13449,7 @@ msgstr "" "Uzun seyahat sırasında sızıntıyı önlemek için ekstruderdeki malzemenin bir " "kısmı geri çekilir. Geri çekmeyi devre dışı bırakmak için sıfır ayarlayın" -msgid "Long retraction when cut(experimental)" +msgid "Long retraction when cut(beta)" msgstr "Kesildiğinde uzun geri çekilme (deneysel)" msgid "" @@ -13425,8 +13523,8 @@ msgid "Traveling angle" msgstr "Seyahat açısı" msgid "" -"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results in " -"Normal Lift" +"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results " +"in Normal Lift" msgstr "" "Eğim ve Spiral Z atlama tipi için ilerleme açısı. 90°’ye ayarlamak normal " "kaldırmayla sonuçlanır" @@ -13458,8 +13556,8 @@ msgid "" "Enforce Z Hop behavior. This setting is impacted by the above settings (Only " "lift Z above/below)." msgstr "" -"Z Hop davranışını zorunlu kılın. Bu ayar yukarıdaki ayarlardan etkilenir (Z'yi " -"yalnızca yukarıya/aşağıya kaldırın)." +"Z Hop davranışını zorunlu kılın. Bu ayar yukarıdaki ayarlardan etkilenir " +"(Z'yi yalnızca yukarıya/aşağıya kaldırın)." msgid "All Surfaces" msgstr "Tüm Yüzeyler" @@ -13484,8 +13582,8 @@ msgstr "" "filament miktarını itecektir. Bu ayara nadiren ihtiyaç duyulur." msgid "" -"When the retraction is compensated after changing tool, the extruder will push " -"this additional amount of filament." +"When the retraction is compensated after changing tool, the extruder will " +"push this additional amount of filament." msgstr "" "Takım değiştirildikten sonra geri çekilme telafi edildiğinde, ekstruder bu " "ilave filament miktarını itecektir." @@ -13554,20 +13652,20 @@ msgid "" "This option causes the inner seams to be shifted backwards based on their " "depth, forming a zigzag pattern." msgstr "" -"Bu seçenek, iç dikişlerin derinliklerine göre geriye doğru kaydırılarak zikzak " -"desen oluşturulmasına neden olur." +"Bu seçenek, iç dikişlerin derinliklerine göre geriye doğru kaydırılarak " +"zikzak desen oluşturulmasına neden olur." msgid "Seam gap" msgstr "Dikiş boşluğu" 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 "" -"Kapalı döngü ekstrüzyonda dikişin görünürlüğünü azaltmak için döngü kesintiye " -"uğrar ve belirli bir miktarda kısaltılır.\n" +"Kapalı döngü ekstrüzyonda dikişin görünürlüğünü azaltmak için döngü " +"kesintiye uğrar ve belirli bir miktarda kısaltılır.\n" "Bu miktar milimetre cinsinden veya mevcut ekstruder çapının yüzdesi olarak " "belirtilebilir. Bu parametrenin varsayılan değeri %10'dur." @@ -13576,8 +13674,8 @@ msgstr "Atkı birleşim dikişi (beta)" msgid "Use scarf joint to minimize seam visibility and increase seam strength." msgstr "" -"Dikiş görünürlüğünü en aza indirmek ve dikiş mukavemetini arttırmak için atkı " -"birleşimini kullanın." +"Dikiş görünürlüğünü en aza indirmek ve dikiş mukavemetini arttırmak için " +"atkı birleşimini kullanın." msgid "Conditional scarf joint" msgstr "Koşullu atkı birleşimi" @@ -13595,9 +13693,9 @@ msgstr "Koşullu açı eşiği" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " "seam.\n" -"If the maximum angle within the perimeter loop exceeds this value (indicating " -"the absence of sharp corners), a scarf joint seam will be used. The default " -"value is 155°." +"If the maximum angle within the perimeter loop exceeds this value " +"(indicating the absence of sharp corners), a scarf joint seam will be used. " +"The default value is 155°." msgstr "" "Bu seçenek, koşullu bir atkı eklem dikişi uygulamak için eşik açısını " "ayarlar.\n" @@ -13612,8 +13710,8 @@ msgstr "Koşullu çıkıntı eşiği" msgid "" "This option determines the overhang threshold for the application of scarf " "joint seams. If the unsupported portion of the perimeter is less than this " -"threshold, scarf joint seams will be applied. The default threshold is set at " -"40% of the external wall's width. Due to performance considerations, the " +"threshold, scarf joint seams will be applied. The default threshold is set " +"at 40% of the external wall's width. Due to performance considerations, the " "degree of overhang is estimated." msgstr "" "Bu seçenek, atkı bağlantı dikişlerinin uygulanması için sarkma eşiğini " @@ -13627,22 +13725,22 @@ msgstr "Atkı birleşim hızı" msgid "" "This option sets the printing speed for scarf joints. It is recommended to " -"print scarf joints at a slow speed (less than 100 mm/s). It's also advisable " -"to enable 'Extrusion rate smoothing' if the set speed varies significantly " -"from the speed of the outer or inner walls. If the speed specified here is " -"higher than the speed of the outer or inner walls, the printer will default to " -"the slower of the two speeds. When specified as a percentage (e.g., 80%), the " -"speed is calculated based on the respective outer or inner wall speed. The " -"default value is set to 100%." +"print scarf joints at a slow speed (less than 100 mm/s). It's also " +"advisable to enable 'Extrusion rate smoothing' if the set speed varies " +"significantly from the speed of the outer or inner walls. If the speed " +"specified here is higher than the speed of the outer or inner walls, the " +"printer will default to the slower of the two speeds. When specified as a " +"percentage (e.g., 80%), the speed is calculated based on the respective " +"outer or inner wall speed. The default value is set to 100%." msgstr "" -"Bu seçenek, atkı bağlantılarının yazdırma hızını ayarlar. Atkı bağlantılarının " -"yavaş bir hızda (100 mm/s'den az) yazdırılması tavsiye edilir. Ayarlanan hızın " -"dış veya iç duvarların hızından önemli ölçüde farklı olması durumunda " -"'Ekstrüzyon hızı yumuşatma' seçeneğinin etkinleştirilmesi de tavsiye edilir. " -"Burada belirtilen hız, dış veya iç duvarların hızından daha yüksekse, yazıcı " -"varsayılan olarak iki hızdan daha yavaş olanı seçecektir. Yüzde olarak " -"belirtildiğinde (örn. %80), hız, ilgili dış veya iç duvar hızına göre " -"hesaplanır. Varsayılan değer %100 olarak ayarlanmıştır." +"Bu seçenek, atkı bağlantılarının yazdırma hızını ayarlar. Atkı " +"bağlantılarının yavaş bir hızda (100 mm/s'den az) yazdırılması tavsiye " +"edilir. Ayarlanan hızın dış veya iç duvarların hızından önemli ölçüde farklı " +"olması durumunda 'Ekstrüzyon hızı yumuşatma' seçeneğinin etkinleştirilmesi " +"de tavsiye edilir. Burada belirtilen hız, dış veya iç duvarların hızından " +"daha yüksekse, yazıcı varsayılan olarak iki hızdan daha yavaş olanı " +"seçecektir. Yüzde olarak belirtildiğinde (örn. %80), hız, ilgili dış veya iç " +"duvar hızına göre hesaplanır. Varsayılan değer %100 olarak ayarlanmıştır." msgid "Scarf joint flow ratio" msgstr "Atkı birleşimi akış oranı" @@ -13656,12 +13754,12 @@ msgstr "Atkı başlangıç ​​yüksekliği" msgid "" "Start height of the scarf.\n" -"This amount can be specified in millimeters or as a percentage of the current " -"layer height. The default value for this parameter is 0." +"This amount can be specified in millimeters or as a percentage of the " +"current layer height. The default value for this parameter is 0." msgstr "" "Atkı başlangıç yüksekliği.\n" -"Bu miktar milimetre cinsinden veya geçerli katman yüksekliğinin yüzdesi olarak " -"belirtilebilir. Bu parametrenin varsayılan değeri 0'dır." +"Bu miktar milimetre cinsinden veya geçerli katman yüksekliğinin yüzdesi " +"olarak belirtilebilir. Bu parametrenin varsayılan değeri 0'dır." msgid "Scarf around entire wall" msgstr "Tüm duvarın etrafına atkıla" @@ -13676,8 +13774,8 @@ msgid "" "Length of the scarf. Setting this parameter to zero effectively disables the " "scarf." msgstr "" -"Atkının uzunluğu. Bu parametrenin 0 a ayarlanması atkıyı dolaylı yoldan devre " -"dışı bırakır." +"Atkının uzunluğu. Bu parametrenin 0 a ayarlanması atkıyı dolaylı yoldan " +"devre dışı bırakır." msgid "Scarf steps" msgstr "Atkı kademesi" @@ -13699,9 +13797,9 @@ msgid "" "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 "" -"Temizleme hızı mevcut ekstrüzyon rolünün hızına göre belirlenir; bir dış duvar " -"ekstrüzyonunun hemen ardından bir silme eylemi yürütülürse, silme eylemi için " -"dış duvar ekstrüzyonunun hızı kullanılacaktır." +"Temizleme hızı mevcut ekstrüzyon rolünün hızına göre belirlenir; bir dış " +"duvar ekstrüzyonunun hemen ardından bir silme eylemi yürütülürse, silme " +"eylemi için dış duvar ekstrüzyonunun hızı kullanılacaktır." msgid "Wipe on loops" msgstr "Döngülerde temizleme" @@ -13718,15 +13816,15 @@ msgid "Wipe before external loop" msgstr "Harici döngüden önce silin" msgid "" -"To minimize visibility of potential overextrusion at the start of an external " -"perimeter when printing with Outer/Inner or Inner/Outer/Inner wall print " -"order, the de-retraction is performed slightly on the inside from the start of " -"the external perimeter. That way any potential over extrusion is hidden from " -"the outside surface. \n" +"To minimize visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the de-retraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" "\n" -"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall print " -"order as in these modes it is more likely an external perimeter is printed " -"immediately after a de-retraction move." +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a de-retraction move." msgstr "" "Dış/İç veya İç/Dış/İç duvar baskı sırası ile yazdırırken, dış çevrenin " "başlangıcında olası aşırı çıkıntının görünürlüğünü en aza indirmek için, " @@ -13734,22 +13832,22 @@ msgstr "" "gerçekleştirilir. Bu şekilde herhangi bir aşırı ekstrüzyon potansiyeli dış " "yüzeyden gizlenir. \n" "\n" -"Bu, Dış/İç veya İç/Dış/İç duvar yazdırma sırası ile yazdırırken kullanışlıdır, " -"çünkü bu modlarda, bir geri çekilme hareketinin hemen ardından bir dış " -"çevrenin yazdırılması daha olasıdır." +"Bu, Dış/İç veya İç/Dış/İç duvar yazdırma sırası ile yazdırırken " +"kullanışlıdır, çünkü bu modlarda, bir geri çekilme hareketinin hemen " +"ardından bir dış çevrenin yazdırılması daha olasıdır." msgid "Wipe speed" msgstr "Temizleme hızı" 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%" +"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 "" "Temizleme hızı, bu konfigürasyonda belirtilen hız ayarına göre belirlenir. " -"Değer yüzde olarak ifade edilirse (örn. %80), yukarıdaki ilerleme hızı ayarına " -"göre hesaplanır. Bu parametrenin varsayılan değeri %80'dir" +"Değer yüzde olarak ifade edilirse (örn. %80), yukarıdaki ilerleme hızı " +"ayarına göre hesaplanır. Bu parametrenin varsayılan değeri %80'dir" msgid "Skirt distance" msgstr "Etek mesafesi" @@ -13784,12 +13882,13 @@ msgid "" "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt " "height' is used.\n" "Note: With the draft shield active, the skirt will be printed at skirt " -"distance from the object. Therefore, if brims are active it may intersect with " -"them. To avoid this, increase the skirt distance value.\n" +"distance from the object. Therefore, if brims are active it may intersect " +"with them. To avoid this, increase the skirt distance value.\n" msgstr "" -"Rüzgar taslağı nedeniyle ABS veya ASA baskının eğrilmesine ve baskı yatağından " -"ayrılmasına karşı koruma sağlamak için bir rüzgarlık kullanışlıdır. Genellikle " -"yalnızca açık çerçeveli, yani muhafazasız yazıcılarda gereklidir. \n" +"Rüzgar taslağı nedeniyle ABS veya ASA baskının eğrilmesine ve baskı " +"yatağından ayrılmasına karşı koruma sağlamak için bir rüzgarlık " +"kullanışlıdır. Genellikle yalnızca açık çerçeveli, yani muhafazasız " +"yazıcılarda gereklidir. \n" "\n" "Etkin = etek, yazdırılan en yüksek nesne kadar uzun. Aksi takdirde ‘Etek " "yüksekliği’ kullanılır.\n" @@ -13804,8 +13903,10 @@ msgid "Skirt type" msgstr "Etek tipi" msgid "" -"Combined - single skirt for all objects, Per object - individual object skirt." -msgstr "Birleşik - tüm nesneler için tek etek, Nesneye göre - ayrı nesne eteği." +"Combined - single skirt for all objects, Per object - individual object " +"skirt." +msgstr "" +"Birleşik - tüm nesneler için tek etek, Nesneye göre - ayrı nesne eteği." msgid "Combined" msgstr "Birleşik" @@ -13817,7 +13918,8 @@ msgid "Skirt loops" msgstr "Etek sayısı" msgid "Number of loops for the skirt. Zero means disabling skirt" -msgstr "Etek için ilmek sayısı. Sıfır, eteği devre dışı bırakmak anlamına gelir" +msgstr "" +"Etek için ilmek sayısı. Sıfır, eteği devre dışı bırakmak anlamına gelir" msgid "Skirt speed" msgstr "Etek hızı" @@ -13836,16 +13938,16 @@ msgid "" "\n" "Using a non zero value is useful if the printer is set up to print without a " "prime line.\n" -"Final number of loops is not taling into account whli arranging or validating " -"objects distance. Increase loop number in such case. " +"Final number of loops is not taling into account whli arranging or " +"validating objects distance. Increase loop number in such case. " msgstr "" -"Etek yazdırılırken mm cinsinden minimum filaman ekstrüzyon uzunluğu. Sıfır, bu " -"özelliğin devre dışı olduğu anlamına gelir.\n" +"Etek yazdırılırken mm cinsinden minimum filaman ekstrüzyon uzunluğu. Sıfır, " +"bu özelliğin devre dışı olduğu anlamına gelir.\n" "\n" "Yazıcı ana hat olmadan yazdırmak üzere ayarlanmışsa sıfır dışında bir değer " "kullanmak yararlı olur.\n" -"Nihai döngü sayısı, nesnelerin mesafesini düzenlerken veya doğrularken dikkate " -"alınmaz. Böyle bir durumda döngü sayısını artırın." +"Nihai döngü sayısı, nesnelerin mesafesini düzenlerken veya doğrularken " +"dikkate alınmaz. Böyle bir durumda döngü sayısını artırın." msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " @@ -13872,33 +13974,33 @@ msgid "Filament to print solid infill" msgstr "Katı dolguyu yazdırmak için filament" msgid "" -"Line width of internal solid infill. If expressed as a %, it will be computed " -"over the nozzle diameter." +"Line width of internal solid infill. If expressed as a %, it will be " +"computed over the nozzle diameter." msgstr "" -"İç katı dolgunun çizgi genişliği. % olarak ifade edilirse Nozul çapı üzerinden " -"hesaplanacaktır." +"İç katı dolgunun çizgi genişliği. % olarak ifade edilirse Nozul çapı " +"üzerinden hesaplanacaktır." msgid "Speed of internal solid infill, not the top and bottom surface" msgstr "Üst ve alt yüzeyin değil, iç katı dolgunun hızı" 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" +"model into a single walled print with solid bottom layers. The final " +"generated model has no seam" msgstr "" "Spiralleştirme, dış konturun z hareketlerini yumuşatır. Ve katı bir modeli, " -"katı alt katmanlara sahip tek duvarlı bir baskıya dönüştürür. Oluşturulan son " -"modelde dikiş yok." +"katı alt katmanlara sahip tek duvarlı bir baskıya dönüştürür. Oluşturulan " +"son modelde dikiş yok." msgid "Smooth Spiral" msgstr "Pürüzsüz spiral" msgid "" -"Smooth Spiral smooths out X and Y moves as well, resulting in no visible seam " -"at all, even in the XY directions on walls that are not vertical" +"Smooth Spiral smooths out X and Y moves as well, resulting in no visible " +"seam at all, even in the XY directions on walls that are not vertical" msgstr "" -"Pürüzsüz Spiral, X ve Y hareketlerini de yumuşatır ve dikey olmayan duvarlarda " -"XY yönlerinde bile hiçbir görünür ek yeri oluşmamasını sağlar." +"Pürüzsüz Spiral, X ve Y hareketlerini de yumuşatır ve dikey olmayan " +"duvarlarda XY yönlerinde bile hiçbir görünür ek yeri oluşmamasını sağlar." msgid "Max XY Smoothing" msgstr "Maksimum xy yumuşatma" @@ -13910,17 +14012,19 @@ msgstr "" "Düzgün bir spiral elde etmek için XY'deki noktaları hareket ettirmek için " "maksimum mesafe % olarak ifade edilirse nozül çapı üzerinden hesaplanacaktır." +#, fuzzy, c-format, boost-format msgid "" -"Sets the starting flow ratio while transitioning from the last bottom layer to " -"the spiral. Normally the spiral transition scales the flow ratio from 0% to " -"100% during the first loop which can in some cases lead to under extrusion at " -"the start of the spiral." +"Sets the starting flow ratio while transitioning from the last bottom layer " +"to the spiral. Normally the spiral transition scales the flow ratio from " +"0% to 100% during the first loop which can in some cases lead to under " +"extrusion at the start of the spiral." msgstr "" "Son alt katmandan spirale geçiş sırasında başlangıç ​​akış oranını ayarlar. " "Normalde spiral geçiş, ilk döngü sırasında akış oranını %0 dan %100 e " "ölçeklendirir; bu da bazı durumlarda spiralin başlangıcında yetersiz " "ekstrüzyona yol açabilir." +#, fuzzy, c-format, boost-format msgid "" "Sets the finishing flow ratio while ending the spiral. Normally the spiral " "transition scales the flow ratio from 100% to 0% during the last loop which " @@ -13931,13 +14035,14 @@ msgstr "" "durumlarda spiralin sonunda yetersiz ekstrüzyona yol açabilir." 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 "" "Düzgün veya geleneksel mod seçilirse her baskı için bir hızlandırılmış video " "oluşturulacaktır. Her katman basıldıktan sonra oda kamerasıyla anlık görüntü " @@ -13956,9 +14061,9 @@ msgstr "Sıcaklık değişimi" #. TRN PrintSettings : "Ooze prevention" > "Temperature variation" msgid "" -"Temperature difference to be applied when an extruder is not active. The value " -"is not used when 'idle_temperature' in filament settings is set to non zero " -"value." +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." msgstr "" "Ekstruder aktif olmadığında uygulanacak sıcaklık farkı. Filament ayarlarında " "‘rölanti sıcaklığı’ sıfır olmayan bir değere ayarlandığında bu değer " @@ -14010,12 +14115,14 @@ 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." +"printing, where we use M600/PAUSE to trigger the manual filament change " +"action." msgstr "" "Sadece baskının başında özel Filament Değiştirme G-kodu'nu atlamak için bu " -"seçeneği etkinleştirin. Aracı değiştirme komutu (örneğin, T0), baskının tamamı " -"boyunca atlanacaktır. Bu, manuel çoklu malzeme baskısı için kullanışlıdır, " -"burada manuel filament değişim eylemini tetiklemek için M600/PAUSE kullanırız." +"seçeneği etkinleştirin. Aracı değiştirme komutu (örneğin, T0), baskının " +"tamamı boyunca atlanacaktır. Bu, manuel çoklu malzeme baskısı için " +"kullanışlıdır, burada manuel filament değişim eylemini tetiklemek için M600/" +"PAUSE kullanırız." msgid "Purge in prime tower" msgstr "Prime tower'da temizlik" @@ -14030,9 +14137,10 @@ msgid "No sparse layers (beta)" msgstr "Seyrek katman yok (beta)" 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." +"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 "" "Etkinleştirilirse, silme kulesi araç değişimi olmayan katmanlarda " "yazdırılmayacaktır. Araç değişimi olan katmanlarda, ekstruder silme kulesini " @@ -14053,23 +14161,23 @@ msgid "Slice gap closing radius" msgstr "Dilim aralığı kapanma yarıçapı" 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." +"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 "" -"Üçgen mesh dilimleme sırasında 2x boşluk kapatma yarıçapından küçük çatlaklar " -"doldurulmaktadır. Boşluk kapatma işlemi son yazdırma çözünürlüğünü " +"Üçgen mesh dilimleme sırasında 2x boşluk kapatma yarıçapından küçük " +"çatlaklar doldurulmaktadır. Boşluk kapatma işlemi son yazdırma çözünürlüğünü " "düşürebilir, bu nedenle değerin oldukça düşük tutulması tavsiye edilir." msgid "Slicing Mode" msgstr "Dilimleme modu" msgid "" -"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close " -"all holes in the model." +"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " +"close all holes in the model." msgstr "" -"3DLabPrint uçak modelleri için \"Çift-tek\" seçeneğini kullanın. Modeldeki tüm " -"delikleri kapatmak için \"Delikleri kapat\"ı kullanın." +"3DLabPrint uçak modelleri için \"Çift-tek\" seçeneğini kullanın. Modeldeki " +"tüm delikleri kapatmak için \"Delikleri kapat\"ı kullanın." msgid "Regular" msgstr "Düzenli" @@ -14089,10 +14197,11 @@ msgid "" "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 "" -"Bu değer, çıkış G-kodu içindeki tüm Z koordinatlarına eklenir (veya çıkarılır)." -"Bu, kötü Z endstop konumunu telafi etmek için kullanılır: örneğin, endstop " -"sıfır noktanız aslında nozulu baskı plakasından 0.3mm uzakta bırakıyorsa, bu " -"değeri -0.3 olarak ayarlayın (veya endstop'unuzu düzeltin)." +"Bu değer, çıkış G-kodu içindeki tüm Z koordinatlarına eklenir (veya " +"çıkarılır).Bu, kötü Z endstop konumunu telafi etmek için kullanılır: " +"örneğin, endstop sıfır noktanız aslında nozulu baskı plakasından 0.3mm " +"uzakta bırakıyorsa, bu değeri -0.3 olarak ayarlayın (veya endstop'unuzu " +"düzeltin)." msgid "Enable support" msgstr "Desteği etkinleştir" @@ -14143,9 +14252,11 @@ msgid "Support critical regions only" msgstr "Yalnızca kritik bölgeleri destekleyin" msgid "" -"Only create support for critical regions including sharp tail, cantilever, etc." +"Only create support for critical regions including sharp tail, cantilever, " +"etc." msgstr "" -"Yalnızca keskin kuyruk, konsol vb. gibi kritik bölgeler için destek oluşturun." +"Yalnızca keskin kuyruk, konsol vb. gibi kritik bölgeler için destek " +"oluşturun." msgid "Remove small overhangs" msgstr "Küçük çıkıntıları kaldır" @@ -14179,9 +14290,11 @@ msgstr "" msgid "Avoid interface filament for base" msgstr "Taban için arayüz filamentini azaltın" -msgid "Avoid using support interface filament to print support base if possible." +msgid "" +"Avoid using support interface filament to print support base if possible." msgstr "" -"Destek tabanını yazdırmak için destek arayüzü filamentini kullanmaktan kaçının" +"Destek tabanını yazdırmak için destek arayüzü filamentini kullanmaktan " +"kaçının" msgid "" "Line width of support. If expressed as a %, it will be computed over the " @@ -14256,8 +14369,8 @@ msgstr "Arayüz deseni" msgid "" "Line pattern of support interface. Default pattern for non-soluble support " -"interface is Rectilinear, while default pattern for soluble support interface " -"is Concentric" +"interface is Rectilinear, while default pattern for soluble support " +"interface is Concentric" msgstr "" "Destek arayüzünün çizgi deseni. Çözünmeyen destek arayüzü için varsayılan " "model Doğrusaldır, çözünebilir destek arayüzü için varsayılan model ise " @@ -14285,18 +14398,19 @@ 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." +"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 "" -"Destek stil ve şekli. Normal destek için, destekleri düzenli bir ızgara içine " -"projelendirmek daha stabil destekler oluşturacaktır (varsayılan), aynı zamanda " -"sıkı destek kuleleri malzeme tasarrufu sağlar ve nesne üzerindeki izleri " -"azaltır.\n" +"Destek stil ve şekli. Normal destek için, destekleri düzenli bir ızgara " +"içine projelendirmek daha stabil destekler oluşturacaktır (varsayılan), aynı " +"zamanda sıkı destek kuleleri malzeme tasarrufu sağlar ve nesne üzerindeki " +"izleri azaltır.\n" "Ağaç destek için, ince ve organik tarz, dalları daha etkili bir şekilde " "birleştirir ve büyük düz çıkıntılarda normal destekle benzer bir yapı " -"oluştururken birçok malzeme tasarrufu sağlar (varsayılan organik tarz). Hybrid " -"stil, büyük düz çıkıntıların altında normal destekle benzer bir yapı " +"oluştururken birçok malzeme tasarrufu sağlar (varsayılan organik tarz). " +"Hybrid stil, büyük düz çıkıntıların altında normal destekle benzer bir yapı " "oluşturacaktır." msgid "Default (Grid/Organic" @@ -14322,13 +14436,13 @@ msgstr "Bağımsız destek katmanı yüksekliği" 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." +"support customizing z-gap and save print time.This option will be invalid " +"when the prime tower is enabled." msgstr "" "Destek katmanı, nesne katmanından bağımsız olarak katman yüksekliğini " "kullanır. Bu, z aralığının özelleştirilmesine destek olmak ve yazdırma " -"süresinden tasarruf etmek içindir. Prime tower etkinleştirildiğinde bu seçenek " -"geçersiz olacaktır." +"süresinden tasarruf etmek içindir. Prime tower etkinleştirildiğinde bu " +"seçenek geçersiz olacaktır." msgid "Threshold angle" msgstr "Destek açısı" @@ -14354,9 +14468,9 @@ msgid "Tree support branch angle" msgstr "Ağaç desteği dal açısı" 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." +"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 "" "Bu ayar, ağaç desteğinin dallarının oluşmasına izin verilen maksimum çıkıntı " "açısını belirler. Açı artırılırsa, dallar daha yatay olarak basılabilir ve " @@ -14367,13 +14481,13 @@ msgstr "Tercih Edilen Dal Açısı" #. 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." +"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 "" "Modelden kaçınmak zorunda olmadıklarında dalların tercih edilen açısı. Daha " -"dikey ve daha dengeli olmaları için daha düşük bir açı kullanın. Dalların daha " -"hızlı birleşmesi için daha yüksek bir açı kullanın." +"dikey ve daha dengeli olmaları için daha düşük bir açı kullanın. Dalların " +"daha hızlı birleşmesi için daha yüksek bir açı kullanın." msgid "Tree support branch distance" msgstr "Ağaç destek dal mesafesi" @@ -14387,10 +14501,11 @@ msgstr "Dal Yoğunluğu" #. 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." +"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 "" "Dalların uçlarını oluşturmak için kullanılan destek yapısının yoğunluğunu " "ayarlar. Daha yüksek bir değer daha iyi çıkıntılarla sonuçlanır, ancak " @@ -14402,8 +14517,8 @@ msgid "Adaptive layer height" msgstr "Uyarlanabilir katman yüksekliği" msgid "" -"Enabling this option means the height of tree support layer except the first " -"will be automatically calculated " +"Enabling this option means the height of tree support layer except the " +"first will be automatically calculated " msgstr "" "Bu seçeneğin etkinleştirilmesi, ilki hariç ağaç destek katmanının " "yüksekliğinin otomatik olarak hesaplanacağı anlamına gelir " @@ -14458,8 +14573,8 @@ msgstr "Çift duvarlı dal çapı" #. 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." +"printed with double walls for stability. Set this value to zero for no " +"double walls." msgstr "" "Bu çaptaki bir dairenin alanından daha büyük alana sahip dallar, stabilite " "için çift duvarlı olarak basılacaktır. Çift duvar olmaması için bu değeri " @@ -14478,15 +14593,16 @@ msgid "" "This setting specifies whether to add infill inside large hollows of tree " "support" msgstr "" -"Bu ayar, ağaç desteğinin büyük oyuklarının içine dolgu eklenip eklenmeyeceğini " -"belirtir" +"Bu ayar, ağaç desteğinin büyük oyuklarının içine dolgu eklenip " +"eklenmeyeceğini belirtir" msgid "Activate temperature control" msgstr "Sıcaklık kontrolünü etkinleştirin" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode" +"\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -14495,8 +14611,8 @@ msgid "" "either via macros or natively and is usually used when an active chamber " "heater is installed." msgstr "" -"Otomatik hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Bu seçenek, " -"“yazıcı başlangıç kodu”ndan önce bir M191 komutunun yayınlanmasını " +"Otomatik hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Bu " +"seçenek, “yazıcı başlangıç kodu”ndan önce bir M191 komutunun yayınlanmasını " "etkinleştirir\n" " oda sıcaklığını ayarlar ve bu sıcaklığa ulaşılıncaya kadar bekler. Ayrıca " "baskı sonunda M141 komutu vererek varsa hazne ısıtıcısının kapatılmasını " @@ -14511,39 +14627,41 @@ msgstr "Bölme sıcaklığı" msgid "" "For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " -"temperature can help suppress or reduce warping and potentially lead to higher " -"interlayer bonding strength. However, at the same time, a higher chamber " -"temperature will reduce the efficiency of air filtration for ABS and ASA. \n" +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" "\n" "For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " "should be disabled (set to 0) as the chamber temperature should be low to " "avoid extruder clogging caused by material softening at the heat break.\n" "\n" "If enabled, this parameter also sets a gcode variable named " -"chamber_temperature, which can be used to pass the desired chamber temperature " -"to your print start macro, or a heat soak macro like this: PRINT_START (other " -"variables) CHAMBER_TEMP=[chamber_temperature]. This may be useful if your " -"printer does not support M141/M191 commands, or if you desire to handle heat " -"soaking in the print start macro if no active chamber heater is installed." +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" "ABS, ASA, PC ve PA gibi yüksek sıcaklıktaki malzemeler için daha yüksek bir " -"oda sıcaklığı, bükülmenin bastırılmasına veya azaltılmasına yardımcı olabilir " -"ve potansiyel olarak daha yüksek katmanlar arası bağlanma mukavemetine yol " -"açabilir. Ancak aynı zamanda daha yüksek oda sıcaklığı, ABS ve ASA için hava " -"filtreleme verimliliğini azaltacaktır. \n" +"oda sıcaklığı, bükülmenin bastırılmasına veya azaltılmasına yardımcı " +"olabilir ve potansiyel olarak daha yüksek katmanlar arası bağlanma " +"mukavemetine yol açabilir. Ancak aynı zamanda daha yüksek oda sıcaklığı, ABS " +"ve ASA için hava filtreleme verimliliğini azaltacaktır. \n" "\n" "PLA, PETG, TPU, PVA ve diğer düşük sıcaklıktaki malzemeler için, ısı " "kırılmasında malzemenin yumuşamasından kaynaklanan ekstrüderin tıkanmasını " -"önlemek için oda sıcaklığının düşük olması gerektiğinden bu seçenek devre dışı " -"bırakılmalıdır (0’a ayarlanmalıdır).\n" +"önlemek için oda sıcaklığının düşük olması gerektiğinden bu seçenek devre " +"dışı bırakılmalıdır (0’a ayarlanmalıdır).\n" "\n" -"Etkinleştirilirse, bu parametre aynı zamanda istenen oda sıcaklığını yazdırma " -"başlatma makronuza veya şuna benzer bir ısı emme makrosuna iletmek için " -"kullanılabilecek Chamber_temperature adlı bir gcode değişkenini de ayarlar: " -"PRINT_START (diğer değişkenler) CHAMBER_TEMP=[chamber_temperature]. Yazıcınız " -"M141/M191 komutlarını desteklemiyorsa veya aktif oda ısıtıcısı takılı değilse " -"yazdırma başlatma makrosunda ısı bekletme işlemini gerçekleştirmek " -"istiyorsanız bu yararlı olabilir." +"Etkinleştirilirse, bu parametre aynı zamanda istenen oda sıcaklığını " +"yazdırma başlatma makronuza veya şuna benzer bir ısı emme makrosuna iletmek " +"için kullanılabilecek Chamber_temperature adlı bir gcode değişkenini de " +"ayarlar: PRINT_START (diğer değişkenler) CHAMBER_TEMP=[chamber_temperature]. " +"Yazıcınız M141/M191 komutlarını desteklemiyorsa veya aktif oda ısıtıcısı " +"takılı değilse yazdırma başlatma makrosunda ısı bekletme işlemini " +"gerçekleştirmek istiyorsanız bu yararlı olabilir." msgid "Nozzle temperature for layers after the initial one" msgstr "İlk katmandan sonraki katmanlar için nozul sıcaklığı" @@ -14569,8 +14687,8 @@ msgid "This gcode is inserted when the extrusion role is changed" msgstr "Bu gcode, ekstrüzyon rolü değiştirildiğinde eklenir" msgid "" -"Line width for top surfaces. If expressed as a %, it will be computed over the " -"nozzle diameter." +"Line width for top surfaces. If expressed as a %, it will be computed over " +"the nozzle diameter." msgstr "" "Üst yüzeyler için çizgi genişliği. % olarak ifade edilirse Nozul çapı " "üzerinden hesaplanacaktır." @@ -14599,15 +14717,15 @@ msgstr "Üst katman kalınlığı" 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 determined by top shell " +"having too thin shell when layer height is small. 0 means that this setting " +"is disabled and thickness of top shell is absolutely determined by top shell " "layers" msgstr "" -"Üst kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince ise " -"dilimleme sırasında üst katı katmanların sayısı artırılır. Bu, katman " -"yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu ayarın " -"devre dışı olduğu ve üst kabuğun kalınlığının kesinlikle üst kabuk katmanları " -"tarafından belirlendiği anlamına gelir" +"Üst kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince " +"ise dilimleme sırasında üst katı katmanların sayısı artırılır. Bu, katman " +"yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu " +"ayarın devre dışı olduğu ve üst kabuğun kalınlığının kesinlikle üst kabuk " +"katmanları tarafından belirlendiği anlamına gelir" msgid "Speed of travel which is faster and without extrusion" msgstr "Daha hızlı ve ekstrüzyonsuz seyahat hızı" @@ -14627,11 +14745,12 @@ msgid "Wipe Distance" msgstr "Temizleme mesafesi" msgid "" -"Describe how long the nozzle will move along the last path when retracting. \n" +"Describe how long the nozzle will move along the last path when " +"retracting. \n" "\n" -"Depending on how long the wipe operation lasts, how fast and long the extruder/" -"filament retraction settings are, a retraction move may be needed to retract " -"the remaining filament. \n" +"Depending on how long the wipe operation lasts, how fast and long the " +"extruder/filament retraction settings are, a retraction move may be needed " +"to retract the remaining filament. \n" "\n" "Setting a value in the retract amount before wipe setting below will perform " "any excess retraction before the wipe, else it will be performed after." @@ -14639,18 +14758,18 @@ msgstr "" "Geri çekilirken nozulun son yol boyunca ne kadar süre hareket edeceğini " "açıklayın. \n" "\n" -"Silme işleminin ne kadar sürdüğüne, ekstruder/filament geri çekme ayarlarının " -"ne kadar hızlı ve uzun olduğuna bağlı olarak, kalan filamanı geri çekmek için " -"bir geri çekme hareketine ihtiyaç duyulabilir. \n" +"Silme işleminin ne kadar sürdüğüne, ekstruder/filament geri çekme " +"ayarlarının ne kadar hızlı ve uzun olduğuna bağlı olarak, kalan filamanı " +"geri çekmek için bir geri çekme hareketine ihtiyaç duyulabilir. \n" "\n" -"Aşağıdaki silme ayarından önce geri çekme miktarına bir değer ayarlamak, silme " -"işleminden önce aşırı geri çekme işlemini gerçekleştirecektir, aksi takdirde " -"silme işleminden sonra gerçekleştirilecektir." +"Aşağıdaki silme ayarından önce geri çekme miktarına bir değer ayarlamak, " +"silme işleminden önce aşırı geri çekme işlemini gerçekleştirecektir, aksi " +"takdirde silme işleminden sonra gerçekleştirilecektir." 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." +"stabilize the chamber pressure inside the nozzle, in order to avoid " +"appearance defects when printing objects." msgstr "" "Temizleme kulesi, nesneleri yazdırırken görünüm kusurlarını önlemek amacıyla " "nozul üzerindeki kalıntıları temizlemek ve nozul içindeki oda basıncını " @@ -14663,8 +14782,8 @@ msgid "Flush multiplier" msgstr "Temizleme çarpanı" msgid "" -"The actual flushing volumes is equal to the flush multiplier multiplied by the " -"flushing volumes in the table." +"The actual flushing volumes is equal to the flush multiplier multiplied by " +"the flushing volumes in the table." msgstr "" "Gerçek temizleme hacimleri, tablodaki temizleme hacimleri ile temizleme " "çarpanının çarpımına eşittir." @@ -14688,11 +14807,11 @@ msgid "Stabilization cone apex angle" msgstr "Stabilizasyon konisi tepe açısı" msgid "" -"Angle at the apex of the cone that is used to stabilize the wipe tower. Larger " -"angle means wider base." +"Angle at the apex of the cone that is used to stabilize the wipe tower. " +"Larger angle means wider base." msgstr "" -"Silme kulesini stabilize etmek için kullanılan koninin tepe noktasındaki açı. " -"Daha büyük açı daha geniş taban anlamına gelir." +"Silme kulesini stabilize etmek için kullanılan koninin tepe noktasındaki " +"açı. Daha büyük açı daha geniş taban anlamına gelir." msgid "Maximum wipe tower print speed" msgstr "Maksimum silme kulesi yazdırma hızı" @@ -14700,16 +14819,16 @@ msgstr "Maksimum silme kulesi yazdırma hızı" msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe " "tower sparse layers. When purging, if the sparse infill speed or calculated " -"speed from the filament max volumetric speed is lower, the lowest will be used " -"instead.\n" +"speed from the filament max volumetric speed is lower, the lowest will be " +"used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated " -"speed from the filament max volumetric speed is lower, the lowest will be used " -"instead.\n" +"When printing the sparse layers, if the internal perimeter speed or " +"calculated speed from the filament max volumetric speed is lower, the lowest " +"will be used instead.\n" "\n" -"Increasing this speed may affect the tower's stability as well as increase the " -"force with which the nozzle collides with any blobs that may have formed on " -"the wipe tower.\n" +"Increasing this speed may affect the tower's stability as well as increase " +"the force with which the nozzle collides with any blobs that may have formed " +"on the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90mm/sec, make sure " "your printer can reliably bridge at the increased speeds and that ooze when " @@ -14719,9 +14838,9 @@ msgid "" "regardless of this setting." msgstr "" "Silme kulesinde temizleme yaparken ve silme kulesi seyrek katmanlarını " -"yazdırırken maksimum yazdırma hızı. Temizleme sırasında seyrek dolum hızı veya " -"filamanın maksimum hacimsel hızından hesaplanan hız daha düşükse, bunun yerine " -"en düşük olanı kullanılacaktır.\n" +"yazdırırken maksimum yazdırma hızı. Temizleme sırasında seyrek dolum hızı " +"veya filamanın maksimum hacimsel hızından hesaplanan hız daha düşükse, bunun " +"yerine en düşük olanı kullanılacaktır.\n" "\n" "Seyrek katmanları yazdırırken iç çevre hızı veya filamanın maksimum hacimsel " "hızından hesaplanan hız daha düşükse bunun yerine en düşük olanı " @@ -14739,8 +14858,8 @@ msgstr "" "kullanılır." 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)." +"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 "" "Silme kulesinin çevresini yazdırırken kullanılacak ekstruder. Mevcut olanı " "kullanmak için 0 olarak ayarlayın (çözünmeyen tercih edilir)." @@ -14753,9 +14872,9 @@ msgid "" "wipe tower. These values are used to simplify creation of the full purging " "volumes below." msgstr "" -"Bu vektör, silme kulesinde kullanılan her bir araçtan/araca geçiş için gerekli " -"hacimleri kaydeder. Bu değerler, aşağıdaki tam temizleme hacimlerinin " -"oluşturulmasını basitleştirmek için kullanılır." +"Bu vektör, silme kulesinde kullanılan her bir araçtan/araca geçiş için " +"gerekli hacimleri kaydeder. Bu değerler, aşağıdaki tam temizleme " +"hacimlerinin oluşturulmasını basitleştirmek için kullanılır." msgid "" "Purging after filament change will be done inside objects' infills. This may " @@ -14779,13 +14898,13 @@ 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." +"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 "" -"Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için filament " -"değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç olarak " -"nesnelerin renkleri karıştırılacaktır. Prime tower etkinleştirilmediği sürece " -"etkili olmayacaktır." +"Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için " +"filament değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç " +"olarak nesnelerin renkleri karıştırılacaktır. Prime tower " +"etkinleştirilmediği sürece etkili olmayacaktır." msgid "Maximal bridging distance" msgstr "Maksimum köprüleme mesafesi" @@ -14794,8 +14913,8 @@ msgid "Maximal distance between supports on sparse infill sections." msgstr "" "Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için bir " "filament değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç " -"olarak nesnelerin renkleri karıştırılacaktır. Prime tower etkinleştirilmediği " -"sürece etkili olmayacaktır." +"olarak nesnelerin renkleri karıştırılacaktır. Prime tower " +"etkinleştirilmediği sürece etkili olmayacaktır." msgid "Wipe tower purge lines spacing" msgstr "Silme kulesi temizleme hatları aralığı" @@ -14808,20 +14927,20 @@ msgstr "Temizleme için ekstra akış" msgid "" "Extra flow used for the purging lines on the wipe tower. This makes the " -"purging lines thicker or narrower than they normally would be. The spacing is " -"adjusted automatically." +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." msgstr "" -"Silme kulesindeki temizleme hatları için ekstra akış kullanılır. Bu, temizleme " -"hatlarının normalde olduğundan daha kalın veya daha dar olmasına neden olur. " -"Aralık otomatik olarak ayarlanır." +"Silme kulesindeki temizleme hatları için ekstra akış kullanılır. Bu, " +"temizleme hatlarının normalde olduğundan daha kalın veya daha dar olmasına " +"neden olur. Aralık otomatik olarak ayarlanır." msgid "Idle temperature" msgstr "Boşta sıcaklık" msgid "" "Nozzle temperature when the tool is currently not used in multi-tool setups." -"This is only used when 'Ooze prevention' is active in Print Settings. Set to 0 " -"to disable." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" "Alet şu anda çoklu alet kurulumlarında kullanılmadığında püskürtme ucu " "sıcaklığı. Bu yalnızca Yazdırma Ayarlarında ‘Sızıntı önleme’ etkin olduğunda " @@ -14836,36 +14955,36 @@ msgid "" "function is used to adjust size slightly when the object has assembling issue" msgstr "" "Nesnenin delikleri XY düzleminde yapılandırılan değer kadar büyütülür veya " -"küçültülür. Pozitif değer delikleri büyütür. Negatif değer delikleri küçültür. " -"Bu fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " -"kullanılır" +"küçültülür. Pozitif değer delikleri büyütür. Negatif değer delikleri " +"küçültür. Bu fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe " +"ayarlamak için kullanılır" msgid "X-Y contour compensation" msgstr "X-Y kontur telafisi" 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" +"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 "" "Nesnenin konturu XY düzleminde yapılandırılan değer kadar büyütülür veya " -"küçültülür. Pozitif değer konturu büyütür. Negatif değer konturu küçültür. Bu " -"fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " +"küçültülür. Pozitif değer konturu büyütür. Negatif değer konturu küçültür. " +"Bu fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " "kullanılır" msgid "Convert holes to polyholes" msgstr "Delikleri çokgen deliklere dönüştür" 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 " +"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 "" -"Birden fazla katmana yayılan neredeyse dairesel delikleri arayın ve geometriyi " -"çoklu deliklere dönüştürün. Çoklu deliği hesaplamak için nozul boyutunu ve (en " -"büyük) çapı kullanın.\n" +"Birden fazla katmana yayılan neredeyse dairesel delikleri arayın ve " +"geometriyi çoklu deliklere dönüştürün. Çoklu deliği hesaplamak için nozul " +"boyutunu ve (en büyük) çapı kullanın.\n" "Bakın http://hydraraptor.blogspot.com/2011/02/polyholes.html" msgid "Polyhole detection margin" @@ -14875,14 +14994,14 @@ msgstr "Çokgen delik tespiti marjı" 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 leeway to broaden " -"the detection.\n" +"be on the circle circumference. This setting allows you some leeway to " +"broaden the detection.\n" "In mm or in % of the radius." msgstr "" "Bir noktanın dairenin tahmini yarıçapına göre maksimum sapması.\n" "Silindirler genellikle farklı boyutlarda üçgenler olarak ihraç edildiğinden, " -"noktalar daire çevresinde olmayabilir. Bu ayar, algılamayı genişletmeniz için " -"size biraz alan sağlar.\n" +"noktalar daire çevresinde olmayabilir. Bu ayar, algılamayı genişletmeniz " +"için size biraz alan sağlar.\n" "inc mm cinsinden veya yarıçapın %'si cinsinden." msgid "Polyhole twist" @@ -14905,11 +15024,11 @@ msgid "Format of G-code thumbnails" msgstr "G kodu küçük resimlerinin formatı" msgid "" -"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, QOI " -"for low memory firmware" +"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, " +"QOI for low memory firmware" msgstr "" -"G kodu küçük resimlerinin formatı: En iyi kalite için PNG, en küçük boyut için " -"JPG, düşük bellekli donanım yazılımı için QOI" +"G kodu küçük resimlerinin formatı: En iyi kalite için PNG, en küçük boyut " +"için JPG, düşük bellekli donanım yazılımı için QOI" msgid "Use relative E distances" msgstr "Göreceli (relative) E mesafelerini kullan" @@ -14921,17 +15040,17 @@ msgid "" "printers. Default is checked" msgstr "" "\"label_objects\" seçeneği kullanılırken göreceli ekstrüzyon önerilir. Bazı " -"ekstrüderler bu seçenek işaretlenmediğinde daha iyi çalışır (mutlak ekstrüzyon " -"modu). Silme kulesi yalnızca göreceli modla uyumludur. Çoğu yazıcıda önerilir. " -"Varsayılan işaretlendi." +"ekstrüderler bu seçenek işaretlenmediğinde daha iyi çalışır (mutlak " +"ekstrüzyon modu). Silme kulesi yalnızca göreceli modla uyumludur. Çoğu " +"yazıcıda önerilir. Varsayılan işaretlendi." 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" +"very thin areas is used gap-fill. Arachne engine produces walls with " +"variable extrusion width" msgstr "" -"Klasik duvar oluşturucu sabit ekstrüzyon genişliğine sahip duvarlar üretir ve " -"çok ince alanlar için boşluk doldurma kullanılır. Arachne motoru değişken " +"Klasik duvar oluşturucu sabit ekstrüzyon genişliğine sahip duvarlar üretir " +"ve çok ince alanlar için boşluk doldurma kullanılır. Arachne motoru değişken " "ekstrüzyon genişliğine sahip duvarlar üretir" msgid "Arachne" @@ -14953,37 +15072,38 @@ msgid "Wall transitioning filter margin" msgstr "Duvar geçiş filtresi oranı" 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 "" -"Fazladan bir duvar ile bir eksik arasında ileri geri geçişi önleyin. Bu kenar " -"boşluğu, [Minimum duvar genişliği - kenar boşluğu, 2 * Minimum duvar genişliği " -"+ kenar boşluğu] şeklinde takip eden ekstrüzyon genişlikleri aralığını " -"genişletir. Bu marjın arttırılması geçiş sayısını azaltır, bu da ekstrüzyonun " -"başlama/durma sayısını ve seyahat süresini azaltır. Bununla birlikte, büyük " -"ekstrüzyon genişliği değişimi, yetersiz veya aşırı ekstrüzyon sorunlarına yol " -"açabilir. Nozul çapına göre yüzde olarak ifade edilir" +"Fazladan bir duvar ile bir eksik arasında ileri geri geçişi önleyin. Bu " +"kenar boşluğu, [Minimum duvar genişliği - kenar boşluğu, 2 * Minimum duvar " +"genişliği + kenar boşluğu] şeklinde takip eden ekstrüzyon genişlikleri " +"aralığını genişletir. Bu marjın arttırılması geçiş sayısını azaltır, bu da " +"ekstrüzyonun başlama/durma sayısını ve seyahat süresini azaltır. Bununla " +"birlikte, büyük ekstrüzyon genişliği değişimi, yetersiz veya aşırı " +"ekstrüzyon sorunlarına yol açabilir. Nozul çapına göre yüzde olarak ifade " +"edilir" msgid "Wall transitioning threshold angle" msgstr "Duvar geçiş açısı" 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" +"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 "" -"Çift ve tek sayıdaki duvarlar arasında geçişler ne zaman oluşturulmalıdır? Bu " -"ayardan daha büyük bir açıya sahip bir kama şeklinin geçişleri olmayacak ve " -"kalan alanı dolduracak şekilde ortada hiçbir duvar basılmayacaktır. Bu ayarın " -"düşürülmesi, bu merkez duvarların sayısını ve uzunluğunu azaltır ancak " -"boşluklara veya aşırı çıkıntıya neden olabilir" +"Çift ve tek sayıdaki duvarlar arasında geçişler ne zaman oluşturulmalıdır? " +"Bu ayardan daha büyük bir açıya sahip bir kama şeklinin geçişleri olmayacak " +"ve kalan alanı dolduracak şekilde ortada hiçbir duvar basılmayacaktır. Bu " +"ayarın düşürülmesi, bu merkez duvarların sayısını ve uzunluğunu azaltır " +"ancak boşluklara veya aşırı çıkıntıya neden olabilir" msgid "Wall distribution count" msgstr "Duvar dağılım sayısı" @@ -14999,10 +15119,10 @@ msgid "Minimum feature size" msgstr "Minimum özellik boyutu" 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" +"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 "" "İnce özellikler için minimum kalınlık. Bu değerden daha ince olan model " "özellikleri yazdırılmayacak, Minimum özellik boyutundan daha kalın olan " @@ -15018,30 +15138,31 @@ msgid "" "\n" "NOTE: Bottom and top surfaces will not be affected by this value to prevent " "visual gaps on the outside of the model. Adjust 'One wall threshold' in the " -"Advanced settings below to adjust the sensitivity of what is considered a top-" -"surface. 'One wall threshold' is only visible if this setting is set above the " -"default value of 0.5, or if single-wall top surfaces is enabled." +"Advanced settings below to adjust the sensitivity of what is considered a " +"top-surface. 'One wall threshold' is only visible if this setting is set " +"above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" "Yazdırma süresini artırabilecek kısa, kapatılmamış duvarların yazdırılmasını " -"önlemek için bu değeri ayarlayın. Daha yüksek değerler daha fazla ve daha uzun " -"duvarları kaldırır.\n" +"önlemek için bu değeri ayarlayın. Daha yüksek değerler daha fazla ve daha " +"uzun duvarları kaldırır.\n" "\n" -"NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler bu " -"değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin hassasiyetini " -"ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar eşiği'ni ayarlayın. " -"'Tek duvar eşiği' yalnızca bu ayar varsayılan değer olan 0,5'in üzerine " -"ayarlandığında veya tek duvarlı üst yüzeyler etkinleştirildiğinde görünür." +"NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler " +"bu değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin " +"hassasiyetini ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar " +"eşiği'ni ayarlayın. 'Tek duvar eşiği' yalnızca bu ayar varsayılan değer olan " +"0,5'in üzerine ayarlandığında veya tek duvarlı üst yüzeyler " +"etkinleştirildiğinde görünür." msgid "First layer minimum wall width" msgstr "İlk katman minimum duvar genişliği" 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." +"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 "" -"İlk katman için kullanılması gereken minimum duvar genişliğinin nozul ile aynı " -"boyuta ayarlanması tavsiye edilir. Bu ayarlamanın yapışmayı artırması " +"İlk katman için kullanılması gereken minimum duvar genişliğinin nozul ile " +"aynı boyuta ayarlanması tavsiye edilir. Bu ayarlamanın yapışmayı artırması " "beklenmektedir." msgid "Minimum wall width" @@ -15050,21 +15171,21 @@ msgstr "Minimum duvar genişliği" 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" +"thickness of the feature, the wall will become as thick as the feature " +"itself. It's expressed as a percentage over nozzle diameter" msgstr "" "Modelin ince özelliklerinin yerini alacak duvarın genişliği (Minimum özellik " "boyutuna göre). Minimum duvar genişliği özelliğin kalınlığından daha inceyse " -"duvar, özelliğin kendisi kadar kalın olacaktır. Nozul çapına göre yüzde olarak " -"ifade edilir" +"duvar, özelliğin kendisi kadar kalın olacaktır. Nozul çapına göre yüzde " +"olarak ifade edilir" msgid "Detect narrow internal solid infill" msgstr "Dar iç katı dolguyu tespit et" 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 by default." +"concentric pattern will be used for the area to speed printing up. " +"Otherwise, rectilinear pattern is used by default." msgstr "" "Bu seçenek dar dahili katı dolgu alanını otomatik olarak algılayacaktır. " "Etkinleştirilirse, yazdırmayı hızlandırmak amacıyla alanda eşmerkezli desen " @@ -15110,7 +15231,8 @@ msgstr "Yönlendirme Seçenekleri" msgid "Orient options: 0-disable, 1-enable, others-auto" msgstr "" -"Yönlendirme seçenekleri: 0-devre dışı bırak, 1-etkinleştir, diğerleri-otomatik" +"Yönlendirme seçenekleri: 0-devre dışı bırak, 1-etkinleştir, diğerleri-" +"otomatik" msgid "Rotation angle around the Z axis in degrees." msgstr "Z ekseni etrafında derece cinsinden dönüş açısı." @@ -15125,8 +15247,9 @@ msgid "Data directory" msgstr "Veri dizini" msgid "" -"Load and store settings at the given directory. This is useful for maintaining " -"different profiles or including configurations from a network storage." +"Load and store settings at the given directory. This is useful for " +"maintaining different profiles or including configurations from a network " +"storage." msgstr "" "Ayarları verilen dizine yükleyin ve saklayın. Bu, farklı profilleri korumak " "veya bir ağ depolama birimindeki yapılandırmaları dahil etmek için " @@ -15149,24 +15272,25 @@ msgid "" "custom G-code travels somewhere else, it should write to this variable so " "OrcaSlicer knows where it travels from when it gets control back." msgstr "" -"Ekstruderin özel G kodu bloğunun başlangıcındaki konumu. Özel G kodu başka bir " -"yere seyahat ederse, Slicer'ın kontrolü geri aldığında nereden seyahat " +"Ekstruderin özel G kodu bloğunun başlangıcındaki konumu. Özel G kodu başka " +"bir yere seyahat ederse, Slicer'ın kontrolü geri aldığında nereden seyahat " "ettiğini bilmesi için bu değişkene yazması gerekir." msgid "" -"Retraction state at the beginning of the custom G-code block. If the custom G-" -"code moves the extruder axis, it should write to this variable so OrcaSlicer " -"de-retracts correctly when it gets control back." +"Retraction state at the beginning of the custom G-code block. If the custom " +"G-code moves the extruder axis, it should write to this variable so " +"OrcaSlicer de-retracts correctly when it gets control back." msgstr "" "Özel G kodu bloğunun başlangıcındaki geri çekilme durumu. Özel G kodu " -"ekstruder eksenini hareket ettirirse, Slicer'ın kontrolü geri aldığında doğru " -"şekilde geri çekme yapması için bu değişkene yazması gerekir." +"ekstruder eksenini hareket ettirirse, Slicer'ın kontrolü geri aldığında " +"doğru şekilde geri çekme yapması için bu değişkene yazması gerekir." msgid "Extra de-retraction" msgstr "Ekstra deretraksiyon" msgid "Currently planned extra extruder priming after de-retraction." -msgstr "Şu anda, geri çekilmeden sonra ekstra ekstruder hazırlaması planlanıyor." +msgstr "" +"Şu anda, geri çekilmeden sonra ekstra ekstruder hazırlaması planlanıyor." msgid "Absolute E position" msgstr "Mutlak E konumu" @@ -15188,7 +15312,8 @@ msgid "Current object index" msgstr "Geçerli nesne dizini" msgid "" -"Specific for sequential printing. Zero-based index of currently printed object." +"Specific for sequential printing. Zero-based index of currently printed " +"object." msgstr "" "Sıralı yazdırmaya özel. Şu anda yazdırılan nesnenin sıfır tabanlı dizini." @@ -15202,7 +15327,8 @@ msgid "Initial extruder" msgstr "İlk ekstruder" msgid "" -"Zero-based index of the first extruder used in the print. Same as initial_tool." +"Zero-based index of the first extruder used in the print. Same as " +"initial_tool." msgstr "" "Baskıda kullanılan ilk ekstruderin sıfır bazlı indeksi. başlangıç_aracı ile " "aynı." @@ -15214,12 +15340,14 @@ msgid "" "Zero-based index of the first extruder used in the print. Same as " "initial_extruder." msgstr "" -"Baskıda kullanılan ilk ekstruderin sıfır bazlı indeksi. İlk ekstruder ile aynı." +"Baskıda kullanılan ilk ekstruderin sıfır bazlı indeksi. İlk ekstruder ile " +"aynı." msgid "Is extruder used?" msgstr "Ekstruder kullanılıyor mu?" -msgid "Vector of booleans stating whether a given extruder is used in the print." +msgid "" +"Vector of booleans stating whether a given extruder is used in the print." msgstr "" "Belirli bir ekstruderin baskıda kullanılıp kullanılmadığını belirten bool " "vektörü." @@ -15257,18 +15385,18 @@ msgid "" "Weight per extruder extruded during the entire print. Calculated from " "filament_density value in Filament Settings." msgstr "" -"Baskının tamamı boyunca ekstrüzyon yapılan ekstruder başına ağırlık. Filament " -"Ayarlarındaki filaman yoğunluğu değerinden hesaplanır." +"Baskının tamamı boyunca ekstrüzyon yapılan ekstruder başına ağırlık. " +"Filament Ayarlarındaki filaman yoğunluğu değerinden hesaplanır." msgid "Total weight" msgstr "Toplam ağırlık" msgid "" -"Total weight of the print. Calculated from filament_density value in Filament " -"Settings." +"Total weight of the print. Calculated from filament_density value in " +"Filament Settings." msgstr "" -"Baskının toplam ağırlığı. Filament Ayarlarındaki filaman yoğunluğu değerinden " -"hesaplanır." +"Baskının toplam ağırlığı. Filament Ayarlarındaki filaman yoğunluğu " +"değerinden hesaplanır." msgid "Total layer count" msgstr "Toplam katman sayısı" @@ -15287,7 +15415,8 @@ msgstr "Örnek sayısı" msgid "Total number of object instances in the print, summed over all objects." msgstr "" -"Tüm nesneler üzerinden toplanan, yazdırmadaki nesne örneklerinin toplam sayısı." +"Tüm nesneler üzerinden toplanan, yazdırmadaki nesne örneklerinin toplam " +"sayısı." msgid "Scale per object" msgstr "Nesne başına ölçeklendirme" @@ -15316,8 +15445,8 @@ msgstr "" "cinsindendir." msgid "" -"The vector has two elements: x and y dimension of the bounding box. Values in " -"mm." +"The vector has two elements: x and y dimension of the bounding box. Values " +"in mm." msgstr "" "Vektörün iki öğesi vardır: sınırlayıcı kutunun x ve y boyutu. Değerler mm " "cinsindendir." @@ -15329,8 +15458,8 @@ msgid "" "Vector of points of the first layer convex hull. Each element has the " "following format:'[x, y]' (x and y are floating-point numbers in mm)." msgstr "" -"Birinci katmanın dışbükey gövdesinin noktalarının vektörü. Her öğe şu formata " -"sahiptir:'[x, y]' (x ve y, mm cinsinden kayan noktalı sayılardır)." +"Birinci katmanın dışbükey gövdesinin noktalarının vektörü. Her öğe şu " +"formata sahiptir:'[x, y]' (x ve y, mm cinsinden kayan noktalı sayılardır)." msgid "Bottom-left corner of first layer bounding box" msgstr "İlk katman sınırlayıcı kutusunun sol alt köşesi" @@ -15397,8 +15526,8 @@ msgid "Number of extruders" msgstr "Ekstruder sayısı" msgid "" -"Total number of extruders, regardless of whether they are used in the current " -"print." +"Total number of extruders, regardless of whether they are used in the " +"current print." msgstr "" "Geçerli baskıda kullanılıp kullanılmadığına bakılmaksızın ekstrüderlerin " "toplam sayısı." @@ -15536,7 +15665,8 @@ msgstr "Sağlanan dosya boş olduğundan okunamadı" msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Bilinmeyen dosya formatı. Giriş dosyası .3mf veya .zip.amf uzantılı olmalıdır." +"Bilinmeyen dosya formatı. Giriş dosyası .3mf veya .zip.amf uzantılı " +"olmalıdır." msgid "Canceled" msgstr "İptal edildi" @@ -15595,7 +15725,8 @@ msgstr "Bitir" msgid "How to use calibration result?" msgstr "Kalibrasyon sonucu nasıl kullanılır?" -msgid "You could change the Flow Dynamics Calibration Factor in material editing" +msgid "" +"You could change the Flow Dynamics Calibration Factor in material editing" msgstr "" "Malzeme düzenlemede Akış Dinamiği Kalibrasyon Faktörünü değiştirebilirsiniz" @@ -15657,7 +15788,8 @@ msgstr "yeni ön ayar oluşturma başarısız oldu." msgid "" "Are you sure to cancel the current calibration and return to the home page?" msgstr "" -"Mevcut kalibrasyonu iptal edip ana sayfaya dönmek istediğinizden emin misiniz?" +"Mevcut kalibrasyonu iptal edip ana sayfaya dönmek istediğinizden emin " +"misiniz?" msgid "No Printer Connected!" msgstr "Yazıcı Bağlı Değil!" @@ -15672,16 +15804,16 @@ msgid "The input value size must be 3." msgstr "Giriş değeri boyutu 3 olmalıdır." msgid "" -"This machine type can only hold 16 history results per nozzle. You can delete " -"the existing historical results and then start calibration. Or you can " -"continue the calibration, but you cannot create new calibration historical " -"results. \n" +"This machine type can only hold 16 history results per nozzle. You can " +"delete the existing historical results and then start calibration. Or you " +"can continue the calibration, but you cannot create new calibration " +"historical results. \n" "Do you still want to continue the calibration?" msgstr "" "Bu makine tipi, püskürtme ucu başına yalnızca 16 geçmiş sonucu tutabilir. " -"Mevcut geçmiş sonuçları silebilir ve ardından kalibrasyona başlayabilirsiniz. " -"Veya kalibrasyona devam edebilirsiniz ancak yeni kalibrasyon geçmişi sonuçları " -"oluşturamazsınız.\n" +"Mevcut geçmiş sonuçları silebilir ve ardından kalibrasyona " +"başlayabilirsiniz. Veya kalibrasyona devam edebilirsiniz ancak yeni " +"kalibrasyon geçmişi sonuçları oluşturamazsınız.\n" "Hala kalibrasyona devam etmek istiyor musunuz?" msgid "Connecting to printer..." @@ -15695,9 +15827,9 @@ msgstr "Akış Dinamiği Kalibrasyonu sonucu yazıcıya kaydedildi" #, 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 " -"override the historical result?" +"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 override the historical result?" msgstr "" "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada sahip " "sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " @@ -15708,8 +15840,8 @@ msgid "" "This machine type can only hold %d history results per nozzle. This result " "will not be saved." msgstr "" -"Bu makine türü püskürtme ucu başına yalnızca %d geçmiş sonucunu tutabilir. Bu " -"sonuç kaydedilmeyecek." +"Bu makine türü püskürtme ucu başına yalnızca %d geçmiş sonucunu tutabilir. " +"Bu sonuç kaydedilmeyecek." msgid "Internal Error" msgstr "İç hata" @@ -15727,21 +15859,23 @@ msgid "When do you need Flow Dynamics Calibration" msgstr "Akış Dinamiği Kalibrasyonuna ne zaman ihtiyacınız olur" 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 "" "Artık farklı filamentler için tamamen otomatik olan otomatik kalibrasyonu " -"ekledik ve sonuç ileride kullanılmak üzere yazıcıya kaydedilecek. Kalibrasyonu " -"yalnızca aşağıdaki sınırlı durumlarda yapmanız gerekir:\n" -"1. Farklı marka/modelde yeni bir filament taktıysanız veya filament nemliyse;\n" +"ekledik ve sonuç ileride kullanılmak üzere yazıcıya kaydedilecek. " +"Kalibrasyonu yalnızca aşağıdaki sınırlı durumlarda yapmanız gerekir:\n" +"1. Farklı marka/modelde yeni bir filament taktıysanız veya filament " +"nemliyse;\n" "2. Nozul aşınmışsa veya yenisiyle değiştirilmişse;\n" -"3. Filament ayarında maksimum hacimsel hız veya baskı sıcaklığı değiştirilirse." +"3. Filament ayarında maksimum hacimsel hız veya baskı sıcaklığı " +"değiştirilirse." msgid "About this calibration" msgstr "Bu kalibrasyon hakkında" @@ -15749,17 +15883,17 @@ msgstr "Bu kalibrasyon hakkında" 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 that there are a few cases that can make the calibration results " "unreliable, such as insufficient adhesion on the build plate. Improving " -"adhesion can be achieved by washing the build plate or applying glue. For more " -"information on this topic, please refer to our Wiki.\n" +"adhesion can be achieved by washing the build plate or applying glue. For " +"more information on this topic, please refer to 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 " @@ -15770,15 +15904,15 @@ msgstr "" "Genellikle kalibrasyon gereksizdir. Baskı başlatma menüsünde \"akış " "dinamikleri kalibrasyonu\" seçeneği işaretliyken tek renkli/malzemeli bir " "baskı başlattığınızda, yazıcı eski yolu izleyecek, baskıdan önce filamenti " -"kalibre edecektir; Çok renkli/malzemeli bir baskı başlattığınızda, yazıcı her " -"filament değişimi sırasında filament için varsayılan telafi parametresini " -"kullanacaktır ve bu da çoğu durumda iyi bir sonuç verecektir.\n" +"kalibre edecektir; Çok renkli/malzemeli bir baskı başlattığınızda, yazıcı " +"her filament değişimi sırasında filament için varsayılan telafi " +"parametresini kullanacaktır ve bu da çoğu durumda iyi bir sonuç verecektir.\n" "\n" -"Yapı plakası üzerinde yetersiz yapışma gibi kalibrasyon sonuçlarını güvenilmez " -"hale getirebilecek birkaç durum olduğunu lütfen unutmayın. Yapıştırma plakası " -"yıkanarak veya yapıştırıcı uygulanarak yapışmanın iyileştirilmesi " -"sağlanabilir. Bu konu hakkında daha fazla bilgi için lütfen Wiki sayfamıza " -"bakın.\n" +"Yapı plakası üzerinde yetersiz yapışma gibi kalibrasyon sonuçlarını " +"güvenilmez hale getirebilecek birkaç durum olduğunu lütfen unutmayın. " +"Yapıştırma plakası yıkanarak veya yapıştırıcı uygulanarak yapışmanın " +"iyileştirilmesi sağlanabilir. Bu konu hakkında daha fazla bilgi için lütfen " +"Wiki sayfamıza bakın.\n" "\n" "Kalibrasyon sonuçları testimizde yaklaşık yüzde 10 titremeye sahiptir, bu da " "sonucun her kalibrasyonda tam olarak aynı olmamasına neden olabilir. Yeni " @@ -15792,8 +15926,8 @@ msgid "" "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" +"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." @@ -15822,10 +15956,10 @@ msgstr "" 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." +"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 "" "Akış Hızı Kalibrasyonu, beklenen ekstrüzyon hacimlerinin gerçek ekstrüzyon " "hacimlerine oranını ölçer. Varsayılan ayar, önceden kalibre edilmiş ve ince " @@ -15840,24 +15974,25 @@ msgid "" "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" +"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" +"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." +"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 "" "Otomatik Akış Hızı Kalibrasyonu, Bambu Lab'ın Mikro-Lidar teknolojisini " "kullanarak kalibrasyon modellerini doğrudan ölçer. Ancak, bu yöntemin " "etkinliğinin ve doğruluğunun belirli malzeme türleriyle tehlikeye " "girebileceğini lütfen unutmayın. Özellikle şeffaf veya yarı şeffaf, parlak " -"parçacıklı veya yüksek yansıtıcı yüzeye sahip filamentler bu kalibrasyon için " -"uygun olmayabilir ve arzu edilenden daha az sonuçlar üretebilir.\n" +"parçacıklı veya yüksek yansıtıcı yüzeye sahip filamentler bu kalibrasyon " +"için uygun olmayabilir ve arzu edilenden daha az sonuçlar üretebilir.\n" "\n" "Kalibrasyon sonuçları her kalibrasyon veya filament arasında farklılık " "gösterebilir. Zaman içinde ürün yazılımı güncellemeleriyle bu kalibrasyonun " @@ -15866,8 +16001,8 @@ msgstr "" "Dikkat: Akış Hızı Kalibrasyonu, yalnızca amacını ve sonuçlarını tam olarak " "anlayan kişiler tarafından denenmesi gereken gelişmiş bir işlemdir. Yanlış " "kullanım, ortalamanın altında baskılara veya yazıcının zarar görmesine neden " -"olabilir. Lütfen işlemi yapmadan önce işlemi dikkatlice okuyup anladığınızdan " -"emin olun." +"olabilir. Lütfen işlemi yapmadan önce işlemi dikkatlice okuyup " +"anladığınızdan emin olun." msgid "When you need Max Volumetric Speed Calibration" msgstr "Maksimum Hacimsel Hız Kalibrasyonuna ihtiyaç duyduğunuzda" @@ -15889,15 +16024,15 @@ msgid "We found the best Flow Dynamics Calibration Factor" msgstr "En iyi Akış Dinamiği Kalibrasyon Faktörünü bulduk" msgid "" -"Part of the calibration failed! You may clean the plate and retry. The failed " -"test result would be dropped." +"Part of the calibration failed! You may clean the plate and retry. The " +"failed test result would be dropped." msgstr "" "Kalibrasyonun bir kısmı başarısız oldu! Plakayı temizleyip tekrar " "deneyebilirsiniz. Başarısız olan test sonucu görmezden gelinir." msgid "" -"*We recommend you to add brand, materia, type, and even humidity level in the " -"Name" +"*We recommend you to add brand, materia, type, and even humidity level in " +"the Name" msgstr "*İsme marka, malzeme, tür ve hatta nem seviyesini eklemenizi öneririz" msgid "Failed" @@ -16321,8 +16456,8 @@ msgid "Error uploading to print host" msgstr "Yazdırma ana bilgisayarına yükleme hatası" msgid "" -"The selected bed type does not match the file. Please confirm before starting " -"the print." +"The selected bed type does not match the file. Please confirm before " +"starting the print." msgstr "" "Seçilen yatak tipi dosyayla eşleşmiyor. Lütfen yazdırmaya başlamadan önce " "onaylayın." @@ -16488,8 +16623,8 @@ msgstr "" msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." msgstr "" -"Özel satıcı veya seri numarasındaki tüm girişler boşluklardan oluşuyor. Lütfen " -"tekrar girin." +"Özel satıcı veya seri numarasındaki tüm girişler boşluklardan oluşuyor. " +"Lütfen tekrar girin." msgid "The vendor can not be a number. Please re-enter." msgstr "Üretici bir sayı olamaz. Lütfen tekrar girin." @@ -16505,8 +16640,8 @@ msgid "" "name. Do you want to continue?" msgstr "" "Oluşturduğunuz %s Filament adı zaten mevcut.\n" -"Oluşturmaya devam ederseniz oluşturulan ön ayar tam adıyla görüntülenecektir. " -"Devam etmek istiyor musun?" +"Oluşturmaya devam ederseniz oluşturulan ön ayar tam adıyla " +"görüntülenecektir. Devam etmek istiyor musun?" msgid "Some existing presets have failed to be created, as follows:\n" msgstr "Aşağıdaki gibi bazı mevcut ön ayarlar oluşturulamadı:\n" @@ -16519,7 +16654,8 @@ msgstr "" "Yeniden yazmak ister misin?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Ön ayarları şu şekilde yeniden adlandırırdık: \"Satıcı Türü Seçtiğiniz Seri " @@ -16618,25 +16754,25 @@ msgid "Back Page 1" msgstr "Arka Sayfa 1" msgid "" -"You have not yet chosen which printer preset to create based on. Please choose " -"the vendor and model of the printer" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" msgstr "" -"Hangi yazıcı ön ayarının temel alınacağını henüz seçmediniz. Lütfen yazıcının " -"satıcısını ve modelini seçin" +"Hangi yazıcı ön ayarının temel alınacağını henüz seçmediniz. Lütfen " +"yazıcının satıcısını ve modelini seçin" msgid "" "You have entered an illegal input in the printable area section on the first " "page. Please check before creating it." msgstr "" -"İlk sayfadaki yazdırılabilir alan kısmına geçersiz bir giriş yaptınız. Lütfen " -"oluşturmadan önce kontrol edin." +"İlk sayfadaki yazdırılabilir alan kısmına geçersiz bir giriş yaptınız. " +"Lütfen oluşturmadan önce kontrol edin." msgid "The custom printer or model is not entered, please enter it." msgstr "Özel yazıcı veya model girilmedi lütfen giriş yapın." msgid "" -"The printer preset you created already has a preset with the same name. Do you " -"want to overwrite it?\n" +"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 " @@ -16646,7 +16782,8 @@ msgstr "" "Oluşturduğunuz yazıcı ön ayarının zaten aynı ada sahip bir ön ayarı var. " "Üzerine yazmak istiyor musunuz?\n" "\tEvet: Aynı adı taşıyan yazıcı ön ayarının üzerine yazın; aynı ön ayar adı " -"taşıyan filaman ve proses ön ayarları yeniden oluşturulacak ve aynı ön ayar \n" +"taşıyan filaman ve proses ön ayarları yeniden oluşturulacak ve aynı ön " +"ayar \n" "adı olmayan filament ve işlem ön ayarları rezerve edilecektir.\n" "\tİptal: Ön ayar oluşturmayın, oluşturma arayüzüne dönün." @@ -16692,7 +16829,8 @@ msgstr "" msgid "" "You have not yet selected the printer to replace the nozzle, please choose." -msgstr "Hala nozulu değiştirmek için yazıcı seçmediniz, lütfen bir seçim yapın." +msgstr "" +"Hala nozulu değiştirmek için yazıcı seçmediniz, lütfen bir seçim yapın." msgid "Create Printer Successful" msgstr "Yazıcı Oluşturma Başarılı" @@ -16712,8 +16850,8 @@ msgstr "Filament Oluşturuldu" 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 has a significant impact on printing quality. Please set them " -"carefully." +"volumetric speed has a significant impact on printing quality. Please set " +"them carefully." msgstr "" "İhtiyacınız olursa ön ayarlarınızı düzenlemek için lütfen filament ayarına " "gidin.\n" @@ -16775,13 +16913,13 @@ msgstr "Dışa aktarma başarılı" #, c-format, boost-format msgid "" -"The '%s' folder already exists in the current directory. Do you want to clear " -"it and rebuild it.\n" +"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 "" -"'%s' klasörü mevcut dizinde zaten mevcut. Onu temizleyip yeniden oluşturmak mı " -"istiyorsunuz?\n" +"'%s' klasörü mevcut dizinde zaten mevcut. Onu temizleyip yeniden oluşturmak " +"mı istiyorsunuz?\n" "Değilse, bir zaman son eki eklenecektir ve oluşturulduktan sonra adı " "değiştirebilirsiniz." @@ -16815,8 +16953,8 @@ msgid "" "Only printer names with user printer presets will be displayed, and each " "preset you choose will be exported as a zip." msgstr "" -"Yalnızca kullanıcı yazıcı ön ayarlarına sahip yazıcı adları görüntülenecek ve " -"seçtiğiniz her ön ayar zip olarak dışa aktarılacaktır." +"Yalnızca kullanıcı yazıcı ön ayarlarına sahip yazıcı adları görüntülenecek " +"ve seçtiğiniz her ön ayar zip olarak dışa aktarılacaktır." msgid "" "Only the filament names with user filament presets will be displayed, \n" @@ -16824,13 +16962,13 @@ msgid "" "exported as a zip." msgstr "" "Yalnızca kullanıcı filamenti ön ayarlarına sahip filament adları \n" -"görüntülenecek ve seçtiğiniz her filament adındaki tüm kullanıcı filamenti ön " -"ayarları zip olarak dışa aktarılacaktır." +"görüntülenecek ve seçtiğiniz her filament adındaki tüm kullanıcı filamenti " +"ön ayarları zip olarak dışa aktarılacaktır." 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." +"and all user process presets in each printer name you select will be " +"exported as a zip." msgstr "" "Yalnızca işlem ön ayarları değiştirilen yazıcı adları görüntülenecek \n" "ve seçtiğiniz her yazıcı adındaki tüm kullanıcı işlem ön ayarları zip olarak " @@ -16854,8 +16992,8 @@ msgid "Filament presets under this filament" msgstr "Bu filamentin altındaki filament ön ayarları" msgid "" -"Note: If the only preset under this filament is deleted, the filament will be " -"deleted after exiting the dialog." +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." msgstr "" "Not: Bu filamentin altındaki tek ön ayar silinirse, diyalogdan çıkıldıktan " "sonra filament silinecektir." @@ -16976,7 +17114,8 @@ msgstr "Aygıt sekmesinde yazdırma ana bilgisayarı web arayüzünü görüntü msgid "Replace the BambuLab's device tab with print host webui" msgstr "" -"BambuLab’ın aygıt sekmesini yazdırma ana bilgisayarı web arayüzüyle değiştirin" +"BambuLab’ın aygıt sekmesini yazdırma ana bilgisayarı web arayüzüyle " +"değiştirin" msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" @@ -16996,8 +17135,8 @@ 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." +"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 / " @@ -17052,8 +17191,8 @@ msgid "Could not connect to FlashAir" msgstr "FlashAir'e bağlanılamadı" msgid "" -"Note: FlashAir with firmware 2.00.02 or newer and activated upload function is " -"required." +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." msgstr "" "Not: Firmware 2.00.02 veya daha yeni ve etkinleştirilmiş yükleme işlevine " "sahip FlashAir gereklidir." @@ -17147,34 +17286,36 @@ msgstr "" "Hata: \"%2%\"" msgid "" -"It has a small layer height, and results in almost negligible layer lines and " -"high printing quality. It is suitable for most general printing cases." +"It has a small layer height, and results in almost negligible layer lines " +"and high printing quality. It is suitable for most general printing cases." msgstr "" "Küçük bir katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir katman " "çizgileri ve yüksek baskı kalitesi sağlar. Çoğu genel yazdırma durumu için " "uygundur." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds and " -"acceleration, and the sparse infill pattern is Gyroid. So, it results in much " -"higher printing quality, but a much longer printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds " +"and acceleration, and the sparse infill pattern is Gyroid. So, it results in " +"much higher printing quality, but a much longer printing time." msgstr "" "0,2 mm’lik nozülün varsayılan profiliyle karşılaştırıldığında daha düşük hız " -"ve ivmeye sahiptir ve seyrek dolgu deseni Gyroid’dir. Böylece çok daha yüksek " -"baskı kalitesi elde edilir, ancak çok daha uzun baskı süresi elde edilir." +"ve ivmeye sahiptir ve seyrek dolgu deseni Gyroid’dir. Böylece çok daha " +"yüksek baskı kalitesi elde edilir, ancak çok daha uzun baskı süresi elde " +"edilir." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a slightly bigger " -"layer height, and results in almost negligible layer lines, and slightly " -"shorter printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has a slightly " +"bigger layer height, and results in almost negligible layer lines, and " +"slightly shorter printing time." msgstr "" -"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, biraz " -"daha büyük katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir düzeyde " -"katman çizgileri ve biraz daha kısa yazdırma süresi sağlar." +"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " +"biraz daha büyük katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir " +"düzeyde katman çizgileri ve biraz daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer " -"height, and results in slightly visible layer lines, but shorter printing time." +"height, and results in slightly visible layer lines, but shorter printing " +"time." msgstr "" "0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "büyük bir katman yüksekliğine sahiptir ve katman çizgilerinin hafifçe " @@ -17185,15 +17326,15 @@ msgid "" "height, and results in almost invisible layer lines and higher printing " "quality, but shorter printing time." msgstr "" -"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, katman " -"yüksekliği daha küçüktür ve neredeyse görünmez katman çizgileri ve daha yüksek " -"baskı kalitesi, ancak daha kısa yazdırma süresi sağlar." +"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " +"katman yüksekliği daha küçüktür ve neredeyse görünmez katman çizgileri ve " +"daha yüksek baskı kalitesi, ancak daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " -"lines, lower speeds and acceleration, and the sparse infill pattern is Gyroid. " -"So, it results in almost invisible layer lines and much higher printing " -"quality, but much longer printing time." +"lines, lower speeds and acceleration, and the sparse infill pattern is " +"Gyroid. So, it results in almost invisible layer lines and much higher " +"printing quality, but much longer printing time." msgstr "" "0,2 mm’lik nozulun varsayılan profiliyle karşılaştırıldığında, daha küçük " "katman çizgilerine, daha düşük hızlara ve ivmeye sahiptir ve seyrek dolgu " @@ -17207,14 +17348,14 @@ msgid "" "shorter printing time." msgstr "" "Varsayılan 0,2 mm püskürtme ucu profiliyle karşılaştırıldığında, daha küçük " -"katman yüksekliğine sahiptir ve minimum katman çizgileri ve daha yüksek baskı " -"kalitesi sağlar, ancak daha kısa yazdırma süresi sağlar." +"katman yüksekliğine sahiptir ve minimum katman çizgileri ve daha yüksek " +"baskı kalitesi sağlar, ancak daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " -"lines, lower speeds and acceleration, and the sparse infill pattern is Gyroid. " -"So, it results in minimal layer lines and much higher printing quality, but " -"much longer printing time." +"lines, lower speeds and acceleration, and the sparse infill pattern is " +"Gyroid. So, it results in minimal layer lines and much higher printing " +"quality, but much longer printing time." msgstr "" "0,2 mm’lik nozulun varsayılan profiliyle karşılaştırıldığında, daha küçük " "katman çizgilerine, daha düşük hızlara ve ivmeye sahiptir ve seyrek dolgu " @@ -17222,8 +17363,8 @@ msgstr "" "kalitesi elde edilir, ancak çok daha uzun baskı süresi elde edilir." msgid "" -"It has a general layer height, and results in general layer lines and printing " -"quality. It is suitable for most general printing cases." +"It has a general layer height, and results in general layer lines and " +"printing quality. It is suitable for most general printing cases." msgstr "" "Genel bir katman yüksekliğine sahiptir ve genel katman çizgileri ve baskı " "kalitesiyle sonuçlanır. Çoğu genel yazdırma durumu için uygundur." @@ -17245,7 +17386,8 @@ msgid "" msgstr "" "0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "büyük bir katman yüksekliğine sahiptir ve daha belirgin katman çizgileri ve " -"daha düşük baskı kalitesi sağlar, ancak biraz daha kısa yazdırma süresi sağlar." +"daha düşük baskı kalitesi sağlar, ancak biraz daha kısa yazdırma süresi " +"sağlar." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer " @@ -17258,12 +17400,12 @@ msgstr "" msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and higher printing quality, " -"but longer printing time." +"height, and results in less apparent layer lines and higher printing " +"quality, but longer printing time." msgstr "" "0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri ve " -"daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." +"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri " +"ve daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " @@ -17282,9 +17424,10 @@ msgid "" "height, and results in almost negligible layer lines and higher printing " "quality, but longer printing time." msgstr "" -"0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, katman " -"yüksekliği daha küçüktür ve neredeyse göz ardı edilebilir katman çizgileri ve " -"daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." +"0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " +"katman yüksekliği daha küçüktür ve neredeyse göz ardı edilebilir katman " +"çizgileri ve daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma " +"süresi sağlar." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " @@ -17300,11 +17443,12 @@ msgstr "" msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in almost negligible layer lines and longer printing time." +"height, and results in almost negligible layer lines and longer printing " +"time." msgstr "" -"0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, katman " -"yüksekliği daha küçüktür ve neredeyse göz ardı edilebilecek düzeyde katman " -"çizgileri ve daha uzun yazdırma süresi sağlar." +"0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " +"katman yüksekliği daha küçüktür ve neredeyse göz ardı edilebilecek düzeyde " +"katman çizgileri ve daha uzun yazdırma süresi sağlar." msgid "" "It has a big layer height, and results in apparent layer lines and ordinary " @@ -17335,13 +17479,13 @@ msgstr "" msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " -"height, and results in much more apparent layer lines and much lower printing " -"quality, but shorter printing time in some printing cases." +"height, and results in much more apparent layer lines and much lower " +"printing quality, but shorter printing time in some printing cases." msgstr "" "0,6 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "büyük bir katman yüksekliğine sahiptir ve çok daha belirgin katman çizgileri " -"ve çok daha düşük baskı kalitesi sağlar, ancak bazı yazdırma durumlarında daha " -"kısa yazdırma süresi sağlar." +"ve çok daha düşük baskı kalitesi sağlar, ancak bazı yazdırma durumlarında " +"daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " @@ -17349,25 +17493,25 @@ msgid "" "quality, but longer printing time." msgstr "" "0,6 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"küçük bir katman yüksekliğine sahiptir ve katman çizgilerinin daha az belirgin " -"olmasına ve biraz daha yüksek baskı kalitesine, ancak daha uzun yazdırma " -"süresine neden olur." +"küçük bir katman yüksekliğine sahiptir ve katman çizgilerinin daha az " +"belirgin olmasına ve biraz daha yüksek baskı kalitesine, ancak daha uzun " +"yazdırma süresine neden olur." msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and higher printing quality, " -"but longer printing time." +"height, and results in less apparent layer lines and higher printing " +"quality, but longer printing time." msgstr "" "0,6 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri ve " -"daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." +"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri " +"ve daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." msgid "" -"It has a very big layer height, and results in very apparent layer lines, low " -"printing quality and general printing time." +"It has a very big layer height, and results in very apparent layer lines, " +"low printing quality and general printing time." msgstr "" -"Çok büyük bir katman yüksekliğine sahiptir ve çok belirgin katman çizgilerine, " -"düşük baskı kalitesine ve genel yazdırma süresine neden olur." +"Çok büyük bir katman yüksekliğine sahiptir ve çok belirgin katman " +"çizgilerine, düşük baskı kalitesine ve genel yazdırma süresine neden olur." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer " @@ -17375,9 +17519,9 @@ msgid "" "quality, but shorter printing time in some printing cases." msgstr "" "0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"büyük bir katman yüksekliğine sahiptir ve çok belirgin katman çizgileri ve çok " -"daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma durumlarında daha " -"kısa yazdırma süresi sağlar." +"büyük bir katman yüksekliğine sahiptir ve çok belirgin katman çizgileri ve " +"çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma " +"durumlarında daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a much bigger " @@ -17386,8 +17530,8 @@ msgid "" msgstr "" "0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, çok " "daha büyük bir katman yüksekliğine sahiptir ve son derece belirgin katman " -"çizgileri ve çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma " -"durumlarında çok daha kısa yazdırma süresi sağlar." +"çizgileri ve çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı " +"yazdırma durumlarında çok daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a slightly " @@ -17395,15 +17539,15 @@ msgid "" "lines and slightly higher printing quality, but longer printing time in some " "printing cases." msgstr "" -"0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, biraz " -"daha küçük bir katman yüksekliğine sahiptir ve biraz daha az ama yine de " -"görünür katman çizgileri ve biraz daha yüksek baskı kalitesi sağlar, ancak " -"bazı yazdırma durumlarında daha uzun yazdırma süresi sağlar." +"0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " +"biraz daha küçük bir katman yüksekliğine sahiptir ve biraz daha az ama yine " +"de görünür katman çizgileri ve biraz daha yüksek baskı kalitesi sağlar, " +"ancak bazı yazdırma durumlarında daha uzun yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer " -"height, and results in less but still apparent layer lines and slightly higher " -"printing quality, but longer printing time in some printing cases." +"height, and results in less but still apparent layer lines and slightly " +"higher printing quality, but longer printing time in some printing cases." msgstr "" "0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "küçük bir katman yüksekliğine sahiptir ve daha az ama yine de görünür katman " @@ -17470,7 +17614,8 @@ msgid "" msgstr "" "Sandviç modu\n" "Modelinizde çok dik çıkıntılar yoksa hassasiyeti ve katman tutarlılığını " -"artırmak için sandviç modunu (iç-dış-iç) kullanabileceğinizi biliyor muydunuz?" +"artırmak için sandviç modunu (iç-dış-iç) kullanabileceğinizi biliyor " +"muydunuz?" #: resources/data/hints.ini: [hint:Chamber temperature] msgid "" @@ -17528,18 +17673,18 @@ 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." +"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and " +"3D scene operations." msgstr "" "Klavye kısayolları nasıl kullanılır?\n" -"Orca Slicer'ın çok çeşitli klavye kısayolları ve 3B sahne işlemleri sunduğunu " -"biliyor muydunuz?" +"Orca Slicer'ın çok çeşitli klavye kısayolları ve 3B sahne işlemleri " +"sunduğunu biliyor muydunuz?" #: resources/data/hints.ini: [hint:Reverse on odd] msgid "" "Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve the " -"surface quality of your overhangs?" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" msgstr "" "Tersine çevir\n" "Tersine çevir özelliğinin çıkıntılarınızın yüzey kalitesini önemli " @@ -17552,8 +17697,8 @@ msgid "" "cutting tool?" msgstr "" "Kesme Aleti\n" -"Kesici aletle bir modeli istediğiniz açıda ve konumda kesebileceğinizi biliyor " -"muydunuz?" +"Kesici aletle bir modeli istediğiniz açıda ve konumda kesebileceğinizi " +"biliyor muydunuz?" #: resources/data/hints.ini: [hint:Fix Model] msgid "" @@ -17562,8 +17707,8 @@ msgid "" "problems on the Windows system?" msgstr "" "Modeli Düzelt\n" -"Windows sisteminde birçok dilimleme sorununu önlemek için bozuk bir 3D modeli " -"düzeltebileceğinizi biliyor muydunuz?" +"Windows sisteminde birçok dilimleme sorununu önlemek için bozuk bir 3D " +"modeli düzeltebileceğinizi biliyor muydunuz?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -17589,15 +17734,15 @@ msgid "" "printing by a simple click?" msgstr "" "Otomatik Yönlendirme\n" -"Basit bir tıklamayla nesneleri yazdırma için en uygun yöne döndürebileceğinizi " -"biliyor muydunuz?" +"Basit bir tıklamayla nesneleri yazdırma için en uygun yöne " +"döndürebileceğinizi biliyor muydunuz?" #: 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 "" "Yüzüstü yatır\n" "Bir modeli, yüzlerinden biri baskı yatağına oturacak şekilde hızla " @@ -17607,12 +17752,12 @@ msgstr "" #: 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 "" "Nesne Listesi\n" -"Tüm nesneleri/parçaları bir listede görüntüleyebileceğinizi ve her nesne/parça " -"için ayarları değiştirebileceğinizi biliyor muydunuz?" +"Tüm nesneleri/parçaları bir listede görüntüleyebileceğinizi ve her nesne/" +"parça için ayarları değiştirebileceğinizi biliyor muydunuz?" #: resources/data/hints.ini: [hint:Search Functionality] msgid "" @@ -17684,26 +17829,26 @@ msgstr "" #: 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 "" "Z dikiş konumu\n" "Z dikişinin konumunu kişiselleştirebileceğinizi ve hatta daha az görünür bir " -"konuma getirmek için baskının üzerine boyayabileceğinizi biliyor muydunuz? Bu, " -"modelinizin genel görünümünü iyileştirir. Buna bir bak!" +"konuma getirmek için baskının üzerine boyayabileceğinizi biliyor muydunuz? " +"Bu, modelinizin genel görünümünü iyileştirir. Buna bir bak!" #: 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 "" "Akış hızı için ince ayar\n" "Baskıların daha da iyi görünmesi için akış hızına ince ayar yapılabileceğini " -"biliyor muydunuz? Malzemeye bağlı olarak, bazı ince ayarlar yaparak yazdırılan " -"modelin genel yüzeyini iyileştirebilirsiniz." +"biliyor muydunuz? Malzemeye bağlı olarak, bazı ince ayarlar yaparak " +"yazdırılan modelin genel yüzeyini iyileştirebilirsiniz." #: resources/data/hints.ini: [hint:Split your prints into plates] msgid "" @@ -17725,19 +17870,19 @@ msgid "" "Layer Height option? Check it out!" msgstr "" "Uyarlanabilir Katman Yüksekliği ile baskınızı hızlandırın\n" -"Uyarlanabilir Katman Yüksekliği seçeneğini kullanarak bir modeli daha da hızlı " -"yazdırabileceğinizi biliyor muydunuz? Buna bir bak!" +"Uyarlanabilir Katman Yüksekliği seçeneğini kullanarak bir modeli daha da " +"hızlı yazdırabileceğinizi biliyor muydunuz? Buna bir bak!" #: 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." +"makes it easy to place the support material only on the sections of the " +"model that actually need it." msgstr "" "Destek boyama\n" -"Desteklerinizin yerini boyayabileceğinizi biliyor muydunuz? Bu özellik, destek " -"malzemesinin yalnızca modelin gerçekten ihtiyaç duyulan bölümlerine " +"Desteklerinizin yerini boyayabileceğinizi biliyor muydunuz? Bu özellik, " +"destek malzemesinin yalnızca modelin gerçekten ihtiyaç duyulan bölümlerine " "yerleştirilmesini kolaylaştırır." #: resources/data/hints.ini: [hint:Different types of supports] @@ -17761,14 +17906,14 @@ msgid "" msgstr "" "İpek Filament Baskı\n" "İpek filamentin başarılı bir şekilde basılabilmesi için özel dikkat " -"gösterilmesi gerektiğini biliyor muydunuz? En iyi sonuçlar için her zaman daha " -"yüksek sıcaklık ve daha düşük hız önerilir." +"gösterilmesi gerektiğini biliyor muydunuz? En iyi sonuçlar için her zaman " +"daha yüksek sıcaklık ve daha düşük hız önerilir." #: 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 "" "Daha iyi yapışma için kenar\n" "Baskı modellerinde baskı yüzeyi ile küçük bir temas arayüzü bulunduğunda " @@ -17799,14 +17944,14 @@ msgid "" "support/objects/infill during filament change?" msgstr "" "Desteğe/nesnelere/dolguya hizalayın\n" -"Filament değişimi sırasında, boşa harcanan filamenti desteğe/nesnelere/dolguya " -"yıkayarak kurtarabileceğinizi biliyor muydunuz?" +"Filament değişimi sırasında, boşa harcanan filamenti desteğe/nesnelere/" +"dolguya yıkayarak kurtarabileceğinizi biliyor muydunuz?" #: 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 "" "Gücü artırın\n" "Modelin gücünü artırmak için daha fazla duvar halkası ve daha yüksek seyrek " @@ -17868,7 +18013,8 @@ msgstr "" #~ msgid "" #~ "Step 1, please confirm Orca Slicer and your printer are in the same LAN." #~ msgstr "" -#~ "Adım 1, lütfen Orca Slicer ile yazıcınızın aynı LAN'da olduğunu doğrulayın." +#~ "Adım 1, lütfen Orca Slicer ile yazıcınızın aynı LAN'da olduğunu " +#~ "doğrulayın." #~ msgid "" #~ "Step 2, if the IP and Access Code below are different from the actual " @@ -17879,7 +18025,8 @@ msgstr "" #~ msgid "Step 3: Ping the IP address to check for packet loss and latency." #~ msgstr "" -#~ "Adım 3: Paket kaybını ve gecikmeyi kontrol etmek için IP adresine ping atın." +#~ "Adım 3: Paket kaybını ve gecikmeyi kontrol etmek için IP adresine ping " +#~ "atın." #~ msgid "IP and Access Code Verified! You may close the window" #~ msgstr "IP ve Erişim Kodu Doğrulandı! Pencereyi kapatabilirsin" @@ -17912,10 +18059,10 @@ msgstr "" #, c-format #~ msgid "" -#~ "Force cooling fan to be specific speed when overhang degree of printed part " -#~ "exceeds this value. Expressed as percentage which indicates 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" +#~ "Force cooling fan to be specific speed when overhang degree of printed " +#~ "part exceeds this value. Expressed as percentage which indicates 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 "" #~ "Yazdırılan parçanın çıkıntı derecesi bu değeri aştığında soğutma fanını " #~ "belirli bir hıza zorlar. Alt katmandan destek almadan çizginin ne kadar " @@ -17928,21 +18075,22 @@ msgstr "" #~ msgid "Bridge density" #~ msgstr "Köprü dolgu yoğunluğu" -#~ msgid "Density of external bridges. 100% means solid bridge. Default is 100%." +#~ msgid "" +#~ "Density of external bridges. 100% means solid bridge. Default is 100%." #~ msgstr "" #~ "Dış köprülerin yoğunluğu. %100 sağlam köprü anlamına gelir. Varsayılan " #~ "%100'dür." #~ msgid "" -#~ "Improve shell precision by adjusting outer wall spacing. This also improves " -#~ "layer consistency.\n" -#~ "Note: This setting will only take effect if the wall sequence is configured " -#~ "to Inner-Outer" +#~ "Improve shell precision by adjusting outer wall spacing. This also " +#~ "improves layer consistency.\n" +#~ "Note: This setting will only take effect if the wall sequence is " +#~ "configured to Inner-Outer" #~ msgstr "" #~ "Dış duvar aralığını ayarlayarak kabuk hassasiyetini artırın. Bu aynı " #~ "zamanda katman tutarlılığını da artırır.\n" -#~ "Not: Bu ayar yalnızca duvar sırası İç-Dış olarak yapılandırıldığında etkili " -#~ "olacaktır." +#~ "Not: Bu ayar yalnızca duvar sırası İç-Dış olarak yapılandırıldığında " +#~ "etkili olacaktır." #~ msgid "Thick bridges" #~ msgstr "Kalın köprüler" @@ -17951,24 +18099,24 @@ msgstr "" #~ msgstr "Küçük iç köprüleri filtreleyin (beta)" #~ msgid "" -#~ "This option can help reducing pillowing on top surfaces in heavily slanted " -#~ "or curved models.\n" +#~ "This option can help reducing pillowing on top surfaces in heavily " +#~ "slanted or curved models.\n" #~ "\n" -#~ "By default, small internal bridges are filtered out and the internal solid " -#~ "infill is printed directly over the sparse infill. This works well in most " -#~ "cases, speeding up printing without too much compromise on top surface " -#~ "quality. \n" +#~ "By default, small internal bridges are filtered out and the internal " +#~ "solid infill is printed directly over the sparse infill. This works well " +#~ "in most cases, speeding up printing without too much compromise on top " +#~ "surface quality. \n" #~ "\n" #~ "However, in heavily slanted or curved models especially where too low " #~ "sparse infill density is used, this may result in curling of the " #~ "unsupported solid infill, causing pillowing.\n" #~ "\n" #~ "Disabling this option will print internal bridge layer over slightly " -#~ "unsupported internal solid infill. The options below control the amount of " -#~ "filtering, i.e. the amount of internal bridges created.\n" +#~ "unsupported internal solid infill. The options below control the amount " +#~ "of filtering, i.e. the amount of internal bridges created.\n" #~ "\n" -#~ "Filter - enable this option. This is the default behavior and works well in " -#~ "most cases.\n" +#~ "Filter - enable this option. This is the default behavior and works well " +#~ "in most cases.\n" #~ "\n" #~ "Limited filtering - creates internal bridges on heavily slanted surfaces, " #~ "while avoiding creating unnecessary internal bridges. This works well for " @@ -17986,8 +18134,9 @@ msgstr "" #~ "yüzey kalitesinden çok fazla ödün vermeden yazdırmayı hızlandırır. \n" #~ "\n" #~ "Bununla birlikte, özellikle çok düşük seyrek dolgu yoğunluğunun " -#~ "kullanıldığı aşırı eğimli veya kavisli modellerde, bu durum desteklenmeyen " -#~ "katı dolgunun kıvrılmasına ve yastıklanmaya neden olmasına neden olabilir.\n" +#~ "kullanıldığı aşırı eğimli veya kavisli modellerde, bu durum " +#~ "desteklenmeyen katı dolgunun kıvrılmasına ve yastıklanmaya neden olmasına " +#~ "neden olabilir.\n" #~ "\n" #~ "Bu seçeneğin devre dışı bırakılması, iç köprü katmanını hafif " #~ "desteklenmeyen dahili katı dolgu üzerine yazdıracaktır. Aşağıdaki " @@ -18017,18 +18166,18 @@ msgstr "" #~ "Yalnızca devre dışı_fan_first_layers tarafından geçersiz kılınabilir." #~ 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" +#~ "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 "" -#~ "Daha düşük bir değer, daha yumuşak ekstrüzyon hızı geçişleriyle sonuçlanır. " -#~ "Ancak bu, önemli ölçüde daha büyük bir gcode dosyası ve yazıcının işlemesi " -#~ "için daha fazla talimatla sonuçlanır. \n" +#~ "Daha düşük bir değer, daha yumuşak ekstrüzyon hızı geçişleriyle " +#~ "sonuçlanır. Ancak bu, önemli ölçüde daha büyük bir gcode dosyası ve " +#~ "yazıcının işlemesi için daha fazla talimatla sonuçlanır. \n" #~ "\n" #~ "Varsayılan değer olan 3 çoğu durumda iyi çalışır. Yazıcınız takılıyorsa, " #~ "yapılan ayarlamaların sayısını azaltmak için bu değeri artırın\n" @@ -18036,8 +18185,8 @@ msgstr "" #~ "İzin verilen değerler: 1-5" #~ msgid "" -#~ "The minimum printing speed that the printer will slow down to to attempt to " -#~ "maintain the minimum layer time above, when slow down for better layer " +#~ "The minimum printing speed that the printer will slow down to to attempt " +#~ "to maintain the minimum layer time above, when slow down for better layer " #~ "cooling is enabled." #~ msgstr "" #~ "Daha iyi katman soğutması için yavaşlama etkinleştirildiğinde, yukarıdaki " @@ -18049,9 +18198,9 @@ msgstr "" #~ "normal(manual) or tree(manual) is selected, only support enforcers are " #~ "generated" #~ msgstr "" -#~ "Desteği otomatik olarak oluşturmak için normal(otomatik) ve ağaç(otomatik) " -#~ "kullanılır. Normal(manuel) veya ağaç(manuel) seçilirse yalnızca destek " -#~ "uygulayıcıları oluşturulur" +#~ "Desteği otomatik olarak oluşturmak için normal(otomatik) ve " +#~ "ağaç(otomatik) kullanılır. Normal(manuel) veya ağaç(manuel) seçilirse " +#~ "yalnızca destek uygulayıcıları oluşturulur" #~ msgid "normal(auto)" #~ msgstr "Normal(Otomatik)" @@ -18096,8 +18245,8 @@ msgstr "" #~ "useful. Can be a % of the perimeter width.\n" #~ "Value 0 enables reversal on every even layers regardless." #~ msgstr "" -#~ "Ters çevirmenin faydalı sayılması için çıkıntının mm sayısı olması gerekir. " -#~ "Çevre genişliğinin %’si olabilir.\n" +#~ "Ters çevirmenin faydalı sayılması için çıkıntının mm sayısı olması " +#~ "gerekir. Çevre genişliğinin %’si olabilir.\n" #~ "0 değeri ne olursa olsun her çift katmanda ters çevirmeyi mümkün kılar." #~ msgid "Reverse on odd" @@ -18112,8 +18261,8 @@ msgstr "" #~ "stresses in the part walls." #~ msgstr "" #~ "Tek katmanlarda ters yönde bir çıkıntının üzerinde bir kısmı bulunan " -#~ "çevreleri ekstrüzyonla çıkarın. Bu alternatif desen, dik çıkıntıları büyük " -#~ "ölçüde iyileştirebilir.\n" +#~ "çevreleri ekstrüzyonla çıkarın. Bu alternatif desen, dik çıkıntıları " +#~ "büyük ölçüde iyileştirebilir.\n" #~ "\n" #~ "Bu ayar aynı zamanda parça duvarlarındaki gerilimin azalması nedeniyle " #~ "parçanın bükülmesinin azaltılmasına da yardımcı olabilir." @@ -18123,10 +18272,10 @@ msgstr "" #~ "\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" +#~ "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 recommended to set the " #~ "Reverse Threshold to 0 so that all internal walls print in alternating " @@ -18134,16 +18283,16 @@ msgstr "" #~ msgstr "" #~ "Ters çevre mantığını yalnızca iç çevrelere uygulayın. \n" #~ "\n" -#~ "Bu ayar, parçalar artık farklı yönlerde dağıtıldığından parça gerilimlerini " -#~ "büyük ölçüde azaltır. Bu, dış duvar kalitesini korurken parçanın " -#~ "bükülmesini de azaltacaktır. Bu özellik, ABS/ASA gibi eğrilmeye yatkın " -#~ "malzemeler ve ayrıca TPU ve İpek PLA gibi elastik filamentler için çok " -#~ "faydalı olabilir. Ayrıca destekler üzerindeki yüzen bölgelerdeki bükülmenin " -#~ "azaltılmasına da yardımcı olabilir.\n" +#~ "Bu ayar, parçalar artık farklı yönlerde dağıtıldığından parça " +#~ "gerilimlerini büyük ölçüde azaltır. Bu, dış duvar kalitesini korurken " +#~ "parçanın bükülmesini de azaltacaktır. Bu özellik, ABS/ASA gibi eğrilmeye " +#~ "yatkın malzemeler ve ayrıca TPU ve İpek PLA gibi elastik filamentler için " +#~ "çok faydalı olabilir. Ayrıca destekler üzerindeki yüzen bölgelerdeki " +#~ "bükülmenin azaltılmasına da yardımcı olabilir.\n" #~ "\n" #~ "Bu ayarın en etkili olması için, tüm iç duvarların çıkıntı derecelerine " -#~ "bakılmaksızın tek katmanlar üzerine değişen yönlerde yazdırılması için Ters " -#~ "Eşiği 0'a ayarlamanız önerilir." +#~ "bakılmaksızın tek katmanlar üzerine değişen yönlerde yazdırılması için " +#~ "Ters Eşiği 0'a ayarlamanız önerilir." #, no-c-format, no-boost-format #~ msgid "" @@ -18151,25 +18300,25 @@ msgstr "" #~ "useful. Can be a % of the perimeter width.\n" #~ "Value 0 enables reversal on every odd layers regardless." #~ msgstr "" -#~ "Ters çevirmenin faydalı sayılması için çıkıntının mm sayısı olması gerekir. " -#~ "Çevre genişliğinin %'si olabilir.\n" +#~ "Ters çevirmenin faydalı sayılması için çıkıntının mm sayısı olması " +#~ "gerekir. Çevre genişliğinin %'si olabilir.\n" #~ "Değer 0 her tek katmanda terslemeyi etkinleştirir." #~ msgid "" -#~ "The direction which the wall loops are extruded when looking down from the " -#~ "top.\n" +#~ "The direction which the wall loops are extruded when looking down from " +#~ "the top.\n" #~ "\n" #~ "By default all walls are extruded in counter-clockwise, unless Reverse on " -#~ "odd is enabled. Set this to any option other than Auto will force the wall " -#~ "direction regardless of the Reverse on odd.\n" +#~ "odd is enabled. Set this to any option other than Auto will force the " +#~ "wall direction regardless of the Reverse on odd.\n" #~ "\n" #~ "This option will be disabled if spiral vase mode is enabled." #~ msgstr "" #~ "Yukarıdan aşağıya bakıldığında duvar döngülerinin ekstrüzyona uğradığı " #~ "yön.\n" #~ "\n" -#~ "Tek sayıyı ters çevir seçeneği etkinleştirilmedikçe, varsayılan olarak tüm " -#~ "duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik dışında " +#~ "Tek sayıyı ters çevir seçeneği etkinleştirilmedikçe, varsayılan olarak " +#~ "tüm duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik dışında " #~ "herhangi bir seçeneğe ayarlayın, Ters açıklığa bakılmaksızın duvar yönünü " #~ "zorlayacaktır.\n" #~ "\n" @@ -18201,9 +18350,9 @@ msgstr "" #~ 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" +#~ "(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 commands 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 " @@ -18211,8 +18360,9 @@ msgstr "" #~ "Use 0 to deactivate." #~ msgstr "" #~ "Fanı hedef başlangıç zamanından bu kadar saniye önce başlatın (kesirli " -#~ "saniyeleri kullanabilirsiniz). Bu süre tahmini için sonsuz ivme varsayar ve " -#~ "yalnızca G1 ve G0 hareketlerini hesaba katar (yay uydurma desteklenmez).\n" +#~ "saniyeleri kullanabilirsiniz). Bu süre tahmini için sonsuz ivme varsayar " +#~ "ve yalnızca G1 ve G0 hareketlerini hesaba katar (yay uydurma " +#~ "desteklenmez).\n" #~ "Fan komutlarını özel kodlardan taşımaz (bir çeşit 'bariyer' görevi " #~ "görürler).\n" #~ "'Yalnızca özel başlangıç gcode'u etkinleştirilmişse, fan komutları " @@ -18221,8 +18371,8 @@ msgstr "" #~ msgid "" #~ "A draft shield is useful to protect an ABS or ASA print from warping and " -#~ "detaching from print bed due to wind draft. It is usually needed only with " -#~ "open frame printers, i.e. without an enclosure. \n" +#~ "detaching from print bed due to wind draft. It is usually needed only " +#~ "with open frame printers, i.e. without an enclosure. \n" #~ "\n" #~ "Options:\n" #~ "Enabled = skirt is as tall as the highest printed object.\n" @@ -18241,67 +18391,68 @@ msgstr "" #~ "Etkin = etek, yazdırılan en yüksek nesne kadar uzundur.\n" #~ "Sınırlı = etek, etek yüksekliğinin belirttiği kadar uzundur.\n" #~ "\n" -#~ "Not: Rüzgarlık etkinken etek, nesneden etek mesafesinde yazdırılacaktır. Bu " -#~ "nedenle eğer kenarlar aktifse onlarla kesişebilir. Bunu önlemek için etek " -#~ "mesafesi değerini artırın.\n" +#~ "Not: Rüzgarlık etkinken etek, nesneden etek mesafesinde yazdırılacaktır. " +#~ "Bu nedenle eğer kenarlar aktifse onlarla kesişebilir. Bunu önlemek için " +#~ "etek mesafesi değerini artırın.\n" #~ msgid "Limited" #~ msgstr "Sınırlı" #~ msgid "" -#~ "Minimum filament extrusion length in mm when printing the skirt. Zero means " -#~ "this feature is disabled.\n" +#~ "Minimum filament extrusion length in mm when printing the skirt. Zero " +#~ "means this feature is disabled.\n" #~ "\n" -#~ "Using a non zero value is useful if the printer is set up to print without " -#~ "a prime line." +#~ "Using a non zero value is useful if the printer is set up to print " +#~ "without a prime line." #~ msgstr "" -#~ "Etek yazdırılırken mm cinsinden minimum filaman ekstrüzyon uzunluğu. Sıfır, " -#~ "bu özelliğin devre dışı olduğu anlamına gelir.\n" +#~ "Etek yazdırılırken mm cinsinden minimum filaman ekstrüzyon uzunluğu. " +#~ "Sıfır, bu özelliğin devre dışı olduğu anlamına gelir.\n" #~ "\n" -#~ "Yazıcı ana hat olmadan yazdırmak üzere ayarlanmışsa sıfır dışında bir değer " -#~ "kullanmak yararlı olur." +#~ "Yazıcı ana hat olmadan yazdırmak üzere ayarlanmışsa sıfır dışında bir " +#~ "değer kullanmak yararlı olur." #~ msgid "" #~ "Adjust this value to prevent short, unclosed walls from being printed, " #~ "which could increase print time. Higher values remove more and longer " #~ "walls.\n" #~ "\n" -#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent " -#~ "visual gaps on the ouside of the model. Adjust 'One wall threshold' in the " -#~ "Advanced settings below to adjust the sensitivity of what is considered a " -#~ "top-surface. 'One wall threshold' is only visible if this setting is set " -#~ "above the default value of 0.5, or if single-wall top surfaces is enabled." +#~ "NOTE: Bottom and top surfaces will not be affected by this value to " +#~ "prevent visual gaps on the ouside of the model. Adjust 'One wall " +#~ "threshold' in the Advanced settings below to adjust the sensitivity of " +#~ "what is considered a top-surface. 'One wall threshold' is only visible if " +#~ "this setting is set above the default value of 0.5, or if single-wall top " +#~ "surfaces is enabled." #~ msgstr "" #~ "Yazdırma süresini artırabilecek kısa, kapatılmamış duvarların " -#~ "yazdırılmasını önlemek için bu değeri ayarlayın. Daha yüksek değerler daha " -#~ "fazla ve daha uzun duvarları kaldırır.\n" +#~ "yazdırılmasını önlemek için bu değeri ayarlayın. Daha yüksek değerler " +#~ "daha fazla ve daha uzun duvarları kaldırır.\n" #~ "\n" -#~ "NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler " -#~ "bu değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin " -#~ "hassasiyetini ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar " -#~ "eşiği'ni ayarlayın. 'Tek duvar eşiği' yalnızca bu ayar varsayılan değer " -#~ "olan 0,5'in üzerine ayarlandığında veya tek duvarlı üst yüzeyler " +#~ "NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst " +#~ "yüzeyler bu değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen " +#~ "şeyin hassasiyetini ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek " +#~ "duvar eşiği'ni ayarlayın. 'Tek duvar eşiği' yalnızca bu ayar varsayılan " +#~ "değer olan 0,5'in üzerine ayarlandığında veya tek duvarlı üst yüzeyler " #~ "etkinleştirildiğinde görünür." #~ msgid "Don't filter out small internal bridges (beta)" #~ msgstr "Küçük iç köprüleri filtrelemeyin (deneysel)" #~ msgid "" -#~ "This option can help reducing pillowing on top surfaces in heavily slanted " -#~ "or curved models.\n" +#~ "This option can help reducing pillowing on top surfaces in heavily " +#~ "slanted or curved models.\n" #~ "\n" -#~ "By default, small internal bridges are filtered out and the internal solid " -#~ "infill is printed directly over the sparse infill. This works well in most " -#~ "cases, speeding up printing without too much compromise on top surface " -#~ "quality. \n" +#~ "By default, small internal bridges are filtered out and the internal " +#~ "solid infill is printed directly over the sparse infill. This works well " +#~ "in most cases, speeding up printing without too much compromise on top " +#~ "surface quality. \n" #~ "\n" #~ "However, in heavily slanted or curved models especially where too low " #~ "sparse infill density is used, this may result in curling of the " #~ "unsupported solid infill, causing pillowing.\n" #~ "\n" #~ "Enabling this option will print internal bridge layer over slightly " -#~ "unsupported internal solid infill. The options below control the amount of " -#~ "filtering, i.e. the amount of internal bridges created.\n" +#~ "unsupported internal solid infill. The options below control the amount " +#~ "of filtering, i.e. the amount of internal bridges created.\n" #~ "\n" #~ "Disabled - Disables this option. This is the default behavior and works " #~ "well in most cases.\n" @@ -18322,8 +18473,9 @@ msgstr "" #~ "yüzey kalitesinden çok fazla ödün vermeden yazdırmayı hızlandırır. \n" #~ "\n" #~ "Bununla birlikte, özellikle çok düşük seyrek dolgu yoğunluğunun " -#~ "kullanıldığı aşırı eğimli veya kavisli modellerde, bu durum desteklenmeyen " -#~ "katı dolgunun kıvrılmasına ve yastıklanmaya neden olmasına neden olabilir.\n" +#~ "kullanıldığı aşırı eğimli veya kavisli modellerde, bu durum " +#~ "desteklenmeyen katı dolgunun kıvrılmasına ve yastıklanmaya neden olmasına " +#~ "neden olabilir.\n" #~ "\n" #~ "Bu seçeneğin etkinleştirilmesi, iç köprü katmanını hafif desteklenmeyen " #~ "dahili katı dolgu üzerine yazdıracaktır. Aşağıdaki seçenekler filtreleme " @@ -18336,16 +18488,16 @@ msgstr "" #~ "gereksiz iç köprülerin oluşmasını da önler. Bu, çoğu zor modelde işe " #~ "yarar.\n" #~ "\n" -#~ "Filtreleme yok - Her potansiyel dahili çıkıntıda dahili köprüler oluşturur. " -#~ "Bu seçenek, aşırı eğimli üst yüzey modelleri için kullanışlıdır. Ancak çoğu " -#~ "durumda çok fazla gereksiz köprü oluşturur." +#~ "Filtreleme yok - Her potansiyel dahili çıkıntıda dahili köprüler " +#~ "oluşturur. Bu seçenek, aşırı eğimli üst yüzey modelleri için " +#~ "kullanışlıdır. Ancak çoğu durumda çok fazla gereksiz köprü oluşturur." #~ msgid "Shrinkage" #~ msgstr "Büzüşme" #~ msgid "" -#~ "Your object appears to be too large. It will be scaled down to fit the heat " -#~ "bed automatically." +#~ "Your object appears to be too large. It will be scaled down to fit the " +#~ "heat bed automatically." #~ msgstr "" #~ "Nesneniz çok büyük görünüyor. Plakaya otomatik olarak uyacak şekilde " #~ "küçültülecektir." @@ -18362,14 +18514,15 @@ msgstr "" #~ "below.\n" #~ "\n" #~ "Options:\n" -#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" +#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid " +#~ "surfaces\n" #~ "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " #~ "only\n" #~ "3. Nowhere: Disables gap fill\n" #~ msgstr "" -#~ "Seçilen yüzeyler için boşluk doldurmayı etkinleştirir. Doldurulacak minimum " -#~ "boşluk uzunluğu aşağıdaki küçük boşlukları filtrele seçeneğinden kontrol " -#~ "edilebilir.\n" +#~ "Seçilen yüzeyler için boşluk doldurmayı etkinleştirir. Doldurulacak " +#~ "minimum boşluk uzunluğu aşağıdaki küçük boşlukları filtrele seçeneğinden " +#~ "kontrol edilebilir.\n" #~ "\n" #~ "Seçenekler:\n" #~ "1. Her Yerde: Üst, alt ve iç katı yüzeylere boşluk doldurma uygular\n" @@ -18385,20 +18538,20 @@ msgstr "" #~ "değeri biraz azaltın (örneğin 0,9)" #~ 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." +#~ "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 "" #~ "Bu değer iç köprü katmanının kalınlığını belirler. Bu, seyrek dolgunun " -#~ "üzerindeki ilk katmandır. Seyrek dolguya göre yüzey kalitesini iyileştirmek " -#~ "için bu değeri biraz azaltın (örneğin 0,9)." +#~ "üzerindeki ilk katmandır. Seyrek dolguya göre yüzey kalitesini " +#~ "iyileştirmek için bu değeri biraz azaltın (örneğin 0,9)." #~ msgid "" #~ "This factor affects the amount of material for top solid infill. You can " #~ "decrease it slightly to have smooth surface finish" #~ msgstr "" -#~ "Bu faktör üst katı dolgu için malzeme miktarını etkiler. Pürüzsüz bir yüzey " -#~ "elde etmek için biraz azaltabilirsiniz" +#~ "Bu faktör üst katı dolgu için malzeme miktarını etkiler. Pürüzsüz bir " +#~ "yüzey elde etmek için biraz azaltabilirsiniz" #~ msgid "This factor affects the amount of material for bottom solid infill" #~ msgstr "Bu faktör alt katı dolgu için malzeme miktarını etkiler" @@ -18425,15 +18578,16 @@ msgstr "" #~ "Filamenti değiştirdiğinizde yeni filament yükleme zamanı. Yalnızca " #~ "istatistikler için" -#~ msgid "Time to unload old filament when switch filament. For statistics only" +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" #~ msgstr "" #~ "Filamenti değiştirdiğinizde eski filamenti boşaltma zamanı. Yalnızca " #~ "istatistikler için" #~ 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." +#~ "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 "" #~ "Yazıcı donanım yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım " #~ "değişikliği sırasında (T kodu yürütülürken) yeni bir filament yükleme " @@ -18441,20 +18595,20 @@ msgstr "" #~ "eklenir." #~ 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 " +#~ "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 "" -#~ "Yazıcı ürün yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım değişimi " -#~ "sırasında (T kodu yürütülürken) filamenti boşaltma süresi. Bu süre, G kodu " -#~ "süre tahmincisi tarafından toplam baskı süresine eklenir." +#~ "Yazıcı ürün yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım " +#~ "değişimi sırasında (T kodu yürütülürken) filamenti boşaltma süresi. Bu " +#~ "süre, G kodu süre tahmincisi tarafından toplam baskı süresine eklenir." #~ msgid "Filter out gaps smaller than the threshold specified" #~ msgstr "Belirtilen eşikten daha küçük boşlukları filtrele" #~ msgid "" -#~ "Enable this option for chamber temperature control. An M191 command will be " -#~ "added before \"machine_start_gcode\"\n" +#~ "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 "" #~ "Hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Önce bir M191 " @@ -18463,24 +18617,24 @@ 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" +#~ "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 "" #~ "Daha yüksek hazne sıcaklığı, eğrilmeyi bastırmaya veya azaltmaya yardımcı " -#~ "olabilir ve ABS, ASA, PC, PA ve benzeri gibi yüksek sıcaklıktaki malzemeler " -#~ "için potansiyel olarak daha yüksek ara katman yapışmasına yol açabilir Aynı " -#~ "zamanda, ABS ve ASA'nın hava filtrasyonu daha da kötüleşecektir. PLA, PETG, " -#~ "TPU, PVA ve diğer düşük sıcaklıktaki malzemeler için, tıkanmaları önlemek " -#~ "için gerçek hazne sıcaklığı yüksek olmamalıdır, bu nedenle kapatma anlamına " -#~ "gelen 0 şiddetle tavsiye edilir" +#~ "olabilir ve ABS, ASA, PC, PA ve benzeri gibi yüksek sıcaklıktaki " +#~ "malzemeler için potansiyel olarak daha yüksek ara katman yapışmasına yol " +#~ "açabilir Aynı zamanda, ABS ve ASA'nın hava filtrasyonu daha da " +#~ "kötüleşecektir. PLA, PETG, TPU, PVA ve diğer düşük sıcaklıktaki " +#~ "malzemeler için, tıkanmaları önlemek için gerçek hazne sıcaklığı yüksek " +#~ "olmamalıdır, bu nedenle kapatma anlamına gelen 0 şiddetle tavsiye edilir" #~ msgid "" -#~ "Different nozzle diameters and different filament diameters is not allowed " -#~ "when prime tower is enabled." +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." #~ msgstr "" #~ "Ana kule etkinleştirildiğinde farklı nozul çaplarına ve farklı filament " #~ "çaplarına izin verilmez." @@ -18493,10 +18647,11 @@ msgstr "" #~ "Height of initial layer. Making initial layer height to be thick slightly " #~ "can improve build plate adhension" #~ msgstr "" -#~ "İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, baskı " -#~ "plakasının yapışmasını iyileştirebilir" +#~ "İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, " +#~ "baskı plakasının yapışmasını iyileştirebilir" -#~ msgid "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." #~ msgstr "" #~ "Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği. 0 bu " #~ "özelliği devre dışı bırakır." @@ -18514,8 +18669,8 @@ msgstr "" #~ msgstr "Herhangi bir uygulamayla ilişkili değil" #~ msgid "" -#~ "Associate OrcaSlicer with prusaslicer:// links so that Orca can open models " -#~ "from Printable.com" +#~ "Associate OrcaSlicer with prusaslicer:// links so that Orca can open " +#~ "models from Printable.com" #~ msgstr "" #~ "Orca’nın Printable.com’daki modelleri açabilmesi için OrcaSlicer’ı " #~ "prusaslicer:// bağlantılarıyla ilişkilendirin" @@ -18524,8 +18679,8 @@ msgstr "" #~ msgstr "Bambstudio’yu ilişkilendirin://" #~ msgid "" -#~ "Associate OrcaSlicer with bambustudio:// links so that Orca can open models " -#~ "from makerworld.com" +#~ "Associate OrcaSlicer with bambustudio:// links so that Orca can open " +#~ "models from makerworld.com" #~ msgstr "" #~ "Orca’nın makerworld.com’daki modelleri açabilmesi için OrcaSlicer’ı " #~ "bambustudio:// bağlantılarıyla ilişkilendirin" @@ -18572,42 +18727,45 @@ msgstr "" #~ "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" +#~ "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 "" #~ "Lütfen Akış Dinamiği Kalibrasyonunun ayrıntılarını wiki'mizden " #~ "bulabilirsiniz.\n" #~ "\n" #~ "Genellikle kalibrasyon gereksizdir. Yazdırma başlat menüsündeki \"akış " -#~ "dinamiği kalibrasyonu\" seçeneği işaretliyken tek renkli/malzeme baskısını " -#~ "başlattığınızda, yazıcı eski yöntemi izleyecek, yazdırmadan önce filamenti " -#~ "kalibre edecektir; Çok renkli/malzeme baskısını başlattığınızda, yazıcı her " -#~ "filament değişiminde filament için varsayılan dengeleme parametresini " -#~ "kullanacaktır ve bu çoğu durumda iyi bir sonuç verecektir.\n" +#~ "dinamiği kalibrasyonu\" seçeneği işaretliyken tek renkli/malzeme " +#~ "baskısını başlattığınızda, yazıcı eski yöntemi izleyecek, yazdırmadan " +#~ "önce filamenti kalibre edecektir; Çok renkli/malzeme baskısını " +#~ "başlattığınızda, yazıcı her filament değişiminde filament için varsayılan " +#~ "dengeleme parametresini kullanacaktır ve bu çoğu durumda iyi bir sonuç " +#~ "verecektir.\n" #~ "\n" -#~ "Kalibrasyon sonucunun güvenilir olmamasına yol açacak birkaç durum olduğunu " -#~ "lütfen unutmayın: kalibrasyonu yapmak için doku plakası kullanmak; baskı " -#~ "plakasının yapışması iyi değil (lütfen baskı plakasını yıkayın veya " -#~ "yapıştırıcı uygulayın!) ...Daha fazlasını wiki'mizden bulabilirsiniz.\n" +#~ "Kalibrasyon sonucunun güvenilir olmamasına yol açacak birkaç durum " +#~ "olduğunu lütfen unutmayın: kalibrasyonu yapmak için doku plakası " +#~ "kullanmak; baskı plakasının yapışması iyi değil (lütfen baskı plakasını " +#~ "yıkayın veya yapıştırıcı uygulayın!) ...Daha fazlasını wiki'mizden " +#~ "bulabilirsiniz.\n" #~ "\n" -#~ "Testimizde kalibrasyon sonuçlarında yaklaşık yüzde 10'luk bir titreşim var " -#~ "ve bu da sonucun her kalibrasyonda tam olarak aynı olmamasına neden " -#~ "olabilir. Yeni güncellemelerle iyileştirmeler yapmak için hâlâ temel nedeni " -#~ "araştırıyoruz." +#~ "Testimizde kalibrasyon sonuçlarında yaklaşık yüzde 10'luk bir titreşim " +#~ "var ve bu da sonucun her kalibrasyonda tam olarak aynı olmamasına neden " +#~ "olabilir. Yeni güncellemelerle iyileştirmeler yapmak için hâlâ temel " +#~ "nedeni araştırıyoruz." #~ msgid "" -#~ "Only one of the results with the same name will be saved. Are you sure you " -#~ "want to overrides the other results?" +#~ "Only one of the results with the same name will be saved. Are you sure " +#~ "you want to overrides the other results?" #~ msgstr "" #~ "Aynı ada sahip sonuçlardan yalnızca biri kaydedilecektir. Diğer sonuçları " #~ "geçersiz kılmak istediğinizden emin misiniz?" @@ -18615,11 +18773,11 @@ 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?" +#~ "Only one of the results with the same name is saved. Are you sure you " +#~ "want to overrides the historical result?" #~ msgstr "" -#~ "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada sahip " -#~ "sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " +#~ "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada " +#~ "sahip sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " #~ "istediğinizden emin misiniz?" #~ msgid "Please find the cornor with perfect degree of extrusion" @@ -18642,11 +18800,11 @@ msgstr "" #~ "Order of wall/infill. When the tickbox is unchecked the walls are printed " #~ "first, which works best in most cases.\n" #~ "\n" -#~ "Printing walls first may help with extreme overhangs as the walls have the " -#~ "neighbouring infill to adhere to. However, the infill will slightly push " -#~ "out the printed walls where it is attached to them, resulting in a worse " -#~ "external surface finish. It can also cause the infill to shine through the " -#~ "external surfaces of the part." +#~ "Printing walls first may help with extreme overhangs as the walls have " +#~ "the neighbouring infill to adhere to. However, the infill will slightly " +#~ "push out the printed walls where it is attached to them, resulting in a " +#~ "worse external surface finish. It can also cause the infill to shine " +#~ "through the external surfaces of the part." #~ msgstr "" #~ "Duvar/dolgu sırası. Onay kutusunun işareti kaldırıldığında ilk olarak " #~ "duvarlar yazdırılır ve bu çoğu durumda en iyi sonucu verir.\n" @@ -18654,20 +18812,20 @@ msgstr "" #~ "Duvarların komşu dolgulara yapışması nedeniyle ilk önce duvarların " #~ "basılması aşırı çıkıntılara yardımcı olabilir. Ancak dolgu, baskılı " #~ "duvarları tutturulduğu yerden hafifçe dışarı doğru itecek ve bu da daha " -#~ "kötü bir dış yüzey kalitesine neden olacaktır. Ayrıca dolgunun parçanın dış " -#~ "yüzeylerinden parlamasına da neden olabilir." +#~ "kötü bir dış yüzey kalitesine neden olacaktır. Ayrıca dolgunun parçanın " +#~ "dış yüzeylerinden parlamasına da neden olabilir." #~ msgid "V" #~ msgstr "V" #~ 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" +#~ "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, Prusa Research'ün PrusaSlicer'ından Bambulab'ın " -#~ "BambuStudio'sunu temel alıyor. PrusaSlicer, Alessandro Ranellucci ve RepRap " -#~ "topluluğu tarafından hazırlanan Slic3r'dendir" +#~ "BambuStudio'sunu temel alıyor. PrusaSlicer, Alessandro Ranellucci ve " +#~ "RepRap topluluğu tarafından hazırlanan Slic3r'dendir" #~ msgid "Export &Configs" #~ msgstr "Yapılandırmaları Dışa Aktar" @@ -18683,8 +18841,8 @@ msgstr "" #~ msgstr "Dolgu açısı" #~ msgid "" -#~ "Enable this to get a G-code file which has G2 and G3 moves. And the fitting " -#~ "tolerance is same with resolution" +#~ "Enable this to get a G-code file which has G2 and G3 moves. And the " +#~ "fitting tolerance is same with resolution" #~ msgstr "" #~ "G2 ve G3 hareketlerine sahip bir G kodu dosyası elde etmek için bunu " #~ "etkinleştirin. Ve montaj toleransı çözünürlükle aynıdır" @@ -18730,19 +18888,20 @@ msgstr "" #~ "switching preset?" #~ msgstr "" #~ "\n" -#~ "Ön ayarı değiştirdikten sonra bu değiştirilen ayarları (değiştirilen değer) " -#~ "korumak ister misiniz?" +#~ "Ön ayarı değiştirdikten sonra bu değiştirilen ayarları (değiştirilen " +#~ "değer) korumak ister misiniz?" #~ msgid "" -#~ "You have previously modified your settings and are about to overwrite them " -#~ "with new ones." +#~ "You have previously modified your settings and are about to overwrite " +#~ "them with new ones." #~ msgstr "" -#~ "Ayarlarınızı daha önce değiştirdiniz ve bunların üzerine yenilerini yazmak " -#~ "üzeresiniz." +#~ "Ayarlarınızı daha önce değiştirdiniz ve bunların üzerine yenilerini " +#~ "yazmak üzeresiniz." #~ msgid "" #~ "\n" -#~ "Do you want to keep your current modified settings, or use preset settings?" +#~ "Do you want to keep your current modified settings, or use preset " +#~ "settings?" #~ msgstr "" #~ "\n" #~ "Geçerli değiştirilen ayarlarınızı korumak mı yoksa önceden ayarlanmış " @@ -18762,8 +18921,8 @@ msgstr "" #~ "Choose an AMS slot then press \"Load\" or \"Unload\" button to " #~ "automatically load or unload filiament." #~ msgstr "" -#~ "Filamenti otomatik olarak yüklemek veya çıkarmak için bir AMS yuvası seçin " -#~ "ve ardından \"Yükle\" veya \"Boşalt\" düğmesine basın." +#~ "Filamenti otomatik olarak yüklemek veya çıkarmak için bir AMS yuvası " +#~ "seçin ve ardından \"Yükle\" veya \"Boşalt\" düğmesine basın." #~ msgid "MC" #~ msgstr "MC" @@ -18796,15 +18955,15 @@ msgstr "" #~ "Over 4 studio/handy are using remote access, you can close some and try " #~ "again." #~ msgstr "" -#~ "4’ten fazla stüdyo/kullanışlı uzaktan erişim kullanıyor, bazılarını kapatıp " -#~ "tekrar deneyebilirsiniz." +#~ "4’ten fazla stüdyo/kullanışlı uzaktan erişim kullanıyor, bazılarını " +#~ "kapatıp tekrar deneyebilirsiniz." #~ msgid "" #~ "The 3mf file version is in Beta and it is newer than the current Bambu " #~ "Studio version." #~ msgstr "" -#~ "3mf dosya sürümü Beta aşamasındadır ve mevcut Bambu Studio sürümünden daha " -#~ "yenidir." +#~ "3mf dosya sürümü Beta aşamasındadır ve mevcut Bambu Studio sürümünden " +#~ "daha yenidir." #~ msgid "If you would like to try Bambu Studio Beta, you may click to" #~ msgstr "Bambu Studio Beta’yı denemek isterseniz tıklayabilirsiniz." @@ -18828,12 +18987,12 @@ msgstr "" #~ msgstr "Kabin nemi" #~ msgid "" -#~ "Green means that AMS humidity is normal, orange represent humidity is high, " -#~ "red represent humidity is too high.(Hygrometer: lower the better.)" +#~ "Green means that AMS humidity is normal, orange represent humidity is " +#~ "high, red represent humidity is too high.(Hygrometer: lower the better.)" #~ msgstr "" -#~ "Yeşil, AMS neminin normal olduğunu, turuncu nemin yüksek olduğunu, kırmızı " -#~ "ise nemin çok yüksek olduğunu gösterir.(Higrometre: ne kadar düşükse o " -#~ "kadar iyidir.)" +#~ "Yeşil, AMS neminin normal olduğunu, turuncu nemin yüksek olduğunu, " +#~ "kırmızı ise nemin çok yüksek olduğunu gösterir.(Higrometre: ne kadar " +#~ "düşükse o kadar iyidir.)" #~ msgid "Desiccant status" #~ msgstr "Kurutucu durumu" @@ -18843,18 +19002,18 @@ msgstr "" #~ "inactive. Please change the desiccant.(The bars: higher the better.)" #~ msgstr "" #~ "İki çubuktan daha düşük bir kurutucu durumu, kurutucunun etkin olmadığını " -#~ "gösterir. Lütfen kurutucuyu değiştirin.(Çubuklar: ne kadar yüksek olursa o " -#~ "kadar iyidir.)" +#~ "gösterir. Lütfen kurutucuyu değiştirin.(Çubuklar: ne kadar yüksek olursa " +#~ "o kadar iyidir.)" #~ 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." +#~ "the process. During this time, the indicator may not represent the " +#~ "chamber accurately." #~ msgstr "" #~ "Not: Kapak açıkken veya kurutucu paketi değiştirildiğinde, nemin emilmesi " -#~ "saatler veya bir gece sürebilir. Düşük sıcaklıklar da süreci yavaşlatır. Bu " -#~ "süre zarfında gösterge hazneyi doğru şekilde temsil etmeyebilir." +#~ "saatler veya bir gece sürebilir. Düşük sıcaklıklar da süreci yavaşlatır. " +#~ "Bu süre zarfında gösterge hazneyi doğru şekilde temsil etmeyebilir." #~ msgid "" #~ "Note: if new filament is inserted during printing, the AMS will not " @@ -18923,8 +19082,8 @@ msgstr "" #~ "preset?" #~ msgstr "" #~ "\"%1%\" ön ayarının bazı ayarlarını değiştirdiniz.\n" -#~ "Ön ayarı değiştirdikten sonra değiştirilen bu ayarları (yeni değer) korumak " -#~ "ister misiniz?" +#~ "Ön ayarı değiştirdikten sonra değiştirilen bu ayarları (yeni değer) " +#~ "korumak ister misiniz?" #~ msgid "" #~ "You have changed some preset settings. \n" @@ -18932,8 +19091,8 @@ msgstr "" #~ "preset?" #~ msgstr "" #~ "Bazı ön ayar ayarlarını değiştirdiniz.\n" -#~ "Ön ayarı değiştirdikten sonra değiştirilen bu ayarları (yeni değer) korumak " -#~ "ister misiniz?" +#~ "Ön ayarı değiştirdikten sonra değiştirilen bu ayarları (yeni değer) " +#~ "korumak ister misiniz?" #~ msgid " ℃" #~ msgstr " °C" @@ -18941,14 +19100,14 @@ 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." +#~ "volumetric speed have a significant impact on printing quality. Please " +#~ "set them carefully." #~ msgstr "" -#~ "İhtiyacınız olursa ön ayarlarınızı düzenlemek için lütfen filament ayarına " -#~ "gidin.\n" +#~ "İhtiyacınız olursa ön ayarlarınızı düzenlemek için lütfen filament " +#~ "ayarına gidin.\n" #~ "Lütfen püskürtme ucu sıcaklığının, sıcak yatak sıcaklığının ve maksimum " -#~ "hacimsel hızın yazdırma kalitesi üzerinde önemli bir etkiye sahip olduğunu " -#~ "unutmayın. Lütfen bunları dikkatlice ayarlayın." +#~ "hacimsel hızın yazdırma kalitesi üzerinde önemli bir etkiye sahip " +#~ "olduğunu unutmayın. Lütfen bunları dikkatlice ayarlayın." #~ msgid "Studio Version:" #~ msgstr "Stüdyo Sürümü:" @@ -18993,19 +19152,19 @@ msgstr "" #~ msgstr "Depolama Yüklemesini Test Etme" #~ msgid "" -#~ "The speed setting exceeds the printer's maximum speed (machine_max_speed_x/" -#~ "machine_max_speed_y).\n" +#~ "The speed setting exceeds the printer's maximum speed " +#~ "(machine_max_speed_x/machine_max_speed_y).\n" #~ "Orca will automatically cap the print speed to ensure it doesn't surpass " #~ "the printer's capabilities.\n" -#~ "You can adjust the maximum speed setting in your printer's configuration to " -#~ "get higher speeds." +#~ "You can adjust the maximum speed setting in your printer's configuration " +#~ "to get higher speeds." #~ msgstr "" #~ "Hız ayarı yazıcının maksimum hızını aşıyor (machine_max_speed_x/" #~ "machine_max_speed_y).\n" -#~ "Orca, yazıcının yeteneklerini aşmadığından emin olmak için yazdırma hızını " -#~ "otomatik olarak sınırlayacaktır.\n" -#~ "Daha yüksek hızlar elde etmek için yazıcınızın yapılandırmasındaki maksimum " -#~ "hız ayarını yapabilirsiniz." +#~ "Orca, yazıcının yeteneklerini aşmadığından emin olmak için yazdırma " +#~ "hızını otomatik olarak sınırlayacaktır.\n" +#~ "Daha yüksek hızlar elde etmek için yazıcınızın yapılandırmasındaki " +#~ "maksimum hız ayarını yapabilirsiniz." #~ msgid "" #~ "Alternate extra wall only works with ensure vertical shell thickness " @@ -19029,8 +19188,8 @@ msgstr "" #~ "Add solid infill near sloping surfaces to guarantee the vertical shell " #~ "thickness (top+bottom solid layers)" #~ msgstr "" -#~ "Dikey kabuk kalınlığını garanti etmek için eğimli yüzeylerin yakınına katı " -#~ "dolgu ekleyin (üst + alt katı katmanlar)" +#~ "Dikey kabuk kalınlığını garanti etmek için eğimli yüzeylerin yakınına " +#~ "katı dolgu ekleyin (üst + alt katı katmanlar)" #~ msgid "Further reduce solid infill on walls (beta)" #~ msgstr "Duvarlardaki katı dolguyu daha da azaltın (deneysel)" @@ -19040,8 +19199,8 @@ msgstr "" #~ "limited infill supporting solid surfaces, make sure that you are using " #~ "adequate number of walls to support the part on sloping surfaces.\n" #~ "\n" -#~ "For heavily sloped surfaces this option is not suitable as it will generate " -#~ "too thin of a top layer and should be disabled." +#~ "For heavily sloped surfaces this option is not suitable as it will " +#~ "generate too thin of a top layer and should be disabled." #~ msgstr "" #~ "Duvarlara uygulanan katı dolguları daha da azaltır. Dolguyu destekleyen " #~ "katı yüzeyler çok sınırlı olacağından, eğimli yüzeylerde parçayı " @@ -19072,24 +19231,21 @@ msgstr "" #~ msgstr "Akış telafisi'ni etkinleştir" #~ 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." +#~ "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 "" #~ "Daha iyi katman soğutması için yavaşlama etkinleştirildiğinde, yazdırma " -#~ "çıkıntıları olduğunda ve özellik hızları açıkça belirtilmediğinde filament " -#~ "için minimum yazdırma hızı." - -#~ msgid "No sparse layers (EXPERIMENTAL)" -#~ msgstr "Seyrek katman yok (DENEYSEL)" +#~ "çıkıntıları olduğunda ve özellik hızları açıkça belirtilmediğinde " +#~ "filament için minimum yazdırma hızı." #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you " -#~ "selected\". \n" +#~ "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 "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you " -#~ "selected\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" +#~ "\". \n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgid "The Config can not be loaded." @@ -19104,15 +19260,16 @@ msgstr "" #~ msgstr "wiki" #~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" option.Some " -#~ "extruders work better with this option unchecked (absolute extrusion mode). " -#~ "Wipe tower is only compatible with relative mode. It is always enabled on " -#~ "BambuLab printers. Default is checked" +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unchecked (absolute extrusion " +#~ "mode). Wipe tower is only compatible with relative mode. It is always " +#~ "enabled on BambuLab printers. Default is checked" #~ msgstr "" -#~ "\"label_objects\" seçeneği kullanılırken göreceli ekstrüzyon önerilir. Bazı " -#~ "ekstruderler bu seçeneğin işareti kaldırıldığında (mutlak ekstrüzyon modu) " -#~ "daha iyi çalışır. Temizleme kulesi yalnızca göreceli modla uyumludur. " -#~ "BambuLab yazıcılarında her zaman etkindir. Varsayılan olarak işaretlendi" +#~ "\"label_objects\" seçeneği kullanılırken göreceli ekstrüzyon önerilir. " +#~ "Bazı ekstruderler bu seçeneğin işareti kaldırıldığında (mutlak ekstrüzyon " +#~ "modu) daha iyi çalışır. Temizleme kulesi yalnızca göreceli modla " +#~ "uyumludur. BambuLab yazıcılarında her zaman etkindir. Varsayılan olarak " +#~ "işaretlendi" #~ msgid "Movement:" #~ msgstr "Hareket:" @@ -19217,8 +19374,8 @@ msgstr "" #~ 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." +#~ "the Simplify mesh feature? Right-click the model and select Simplify " +#~ "model. Read more in the documentation." #~ msgstr "" #~ "Modeli Basitleştir\n" #~ "Mesh basitleştirme özelliğini kullanarak bir ağdaki üçgen sayısını " @@ -19227,15 +19384,15 @@ msgstr "" #~ 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 "" #~ "Bir Parçayı Çıkar\n" #~ "Negatif parça değiştiriciyi kullanarak bir ağı diğerinden " #~ "çıkarabileceğinizi biliyor muydunuz? Bu şekilde örneğin doğrudan Orca " -#~ "Slicer'da kolayca yeniden boyutlandırılabilen delikler oluşturabilirsiniz. " -#~ "Daha fazlasını belgelerde okuyun." +#~ "Slicer'da kolayca yeniden boyutlandırılabilen delikler " +#~ "oluşturabilirsiniz. Daha fazlasını belgelerde okuyun." #~ msgid "Filling bed " #~ msgstr "Yatak doldurma " @@ -19251,10 +19408,12 @@ msgstr "" #~ 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" +#~ "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." +#~ msgstr "" +#~ "Filamenti yüklemeden önce lütfen Nozulu 170 derecenin üzerine ısıtın." #~ msgid "Show g-code window" #~ msgstr "G kodu penceresini göster" @@ -19491,8 +19650,8 @@ msgstr "" #~ "load uptodate process/machine settings from the specified file when using " #~ "uptodate" #~ msgstr "" -#~ "güncellemeyi kullanırken belirtilen dosyadan güncel işlem/yazıcıayarlarını " -#~ "yükle" +#~ "güncellemeyi kullanırken belirtilen dosyadan güncel işlem/" +#~ "yazıcıayarlarını yükle" #~ msgid "Output directory" #~ msgstr "Çıkış dizini" @@ -19507,8 +19666,8 @@ msgstr "" #~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" #~ "trace\n" #~ msgstr "" -#~ "Hata ayıklama günlüğü düzeyini ayarlar. 0:önemli, 1:hata, 2:uyarı, 3:bilgi, " -#~ "4:hata ayıklama, 5:izleme\n" +#~ "Hata ayıklama günlüğü düzeyini ayarlar. 0:önemli, 1:hata, 2:uyarı, 3:" +#~ "bilgi, 4:hata ayıklama, 5:izleme\n" #, boost-format #~ msgid "The selected preset: %1% is not found." @@ -19539,8 +19698,8 @@ msgstr "" #~ "OrcaSlicer configuration file may be corrupted and is not abled to be " #~ "parsed.Please delete the file and try again." #~ msgstr "" -#~ "OrcaSlicer yapılandırma dosyası bozulmuş olabilir ve ayrıştırılması mümkün " -#~ "olmayabilir. Lütfen dosyayı silin ve tekrar deneyin." +#~ "OrcaSlicer yapılandırma dosyası bozulmuş olabilir ve ayrıştırılması " +#~ "mümkün olmayabilir. Lütfen dosyayı silin ve tekrar deneyin." #~ msgid "Online Models" #~ msgstr "Çevrimiçi Modeller" @@ -19552,10 +19711,10 @@ msgstr "" #~ msgstr "Soğutma için yavaşlama durumunda minimum yazdırma hızı" #~ 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)" +#~ "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 "" #~ "Şu anda aynı yedek sarf malzemesi mevcut değildir ve otomatik yenileme şu " #~ "anda mümkün değildir.\n" @@ -19583,11 +19742,12 @@ msgstr "" #~ "Material becomes soft at this temperature. Thus the heatbed cannot be " #~ "hotter than this tempature" #~ msgstr "" -#~ "Bu sıcaklıkta malzeme yumuşar. Bu nedenle ısıtma yatağı bu sıcaklıktan daha " -#~ "sıcak olamaz" +#~ "Bu sıcaklıkta malzeme yumuşar. Bu nedenle ısıtma yatağı bu sıcaklıktan " +#~ "daha sıcak olamaz" #~ msgid "Enable this option if machine has auxiliary part cooling fan" -#~ msgstr "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin" +#~ msgstr "" +#~ "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin" #~ msgid "" #~ "This option is enabled if machine support controlling chamber temperature" @@ -19615,7 +19775,8 @@ msgstr "" #~ "katmanları etkilemez" #~ msgid "Empty layers around bottom are replaced by nearest normal layers." -#~ msgstr "Alt kısımdaki boş katmanların yerini en yakın normal katmanlar alır." +#~ msgstr "" +#~ "Alt kısımdaki boş katmanların yerini en yakın normal katmanlar alır." #~ msgid "The model has too many empty layers." #~ msgstr "Modelde çok fazla boş katman var." @@ -19630,11 +19791,12 @@ msgstr "" #~ msgstr "Tabla" #~ msgid "" -#~ "Bed temperature when high temperature plate is installed. Value 0 means the " -#~ "filament does not support to print on the High Temp Plate" +#~ "Bed temperature when high temperature plate is installed. Value 0 means " +#~ "the filament does not support to print on the High Temp Plate" #~ msgstr "" -#~ "Yüksek sıcaklık plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin " -#~ "Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına gelir" +#~ "Yüksek sıcaklık plakası takıldığında yatak sıcaklığı. 0 değeri, " +#~ "filamentin Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına " +#~ "gelir" #~ msgid "" #~ "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" @@ -19645,16 +19807,17 @@ msgstr "" #~ msgstr "Hareket için maksimum hızlanma (M204 T)" #~ 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 " +#~ "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 "" #~ "Desteğin stili ve şekli. Normal destek için, desteklerin düzenli bir " #~ "ızgaraya yansıtılması daha sağlam destekler oluşturur (varsayılan), rahat " -#~ "destek kuleleri ise malzemeden tasarruf sağlar ve nesne izlerini azaltır.\n" +#~ "destek kuleleri ise malzemeden tasarruf sağlar ve nesne izlerini " +#~ "azaltır.\n" #~ "Ağaç desteği için, ince stil, dalları daha agresif bir şekilde " #~ "birleştirecek ve çok fazla malzeme tasarrufu sağlayacak (varsayılan), " #~ "hibrit stil ise büyük düz çıkıntılar altında normal desteğe benzer yapı " diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 940a275f0e..830b5598bb 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-19 19:44+0800\n" +"POT-Creation-Date: 2025-02-20 21:21+0800\n" "PO-Revision-Date: 2024-12-23 20:09+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -16,8 +16,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.5\n" msgid "Supports Painting" @@ -1313,7 +1313,7 @@ msgid "Esc" msgstr "Esc" msgid "Cancel a feature until exit" -msgstr "" +msgstr "Скасувати функцію до виходу" msgid "Measure" msgstr "Виміряти" @@ -1321,16 +1321,18 @@ msgstr "Виміряти" msgid "" "Please confirm explosion ratio = 1,and please select at least one object" msgstr "" +"Підтвердіть коефіцієнт вибуху = 1 і, будь ласка, виберіть принаймні один " +"об’єкт" msgid "Please select at least one object." -msgstr "" +msgstr "Будь ласка, виберіть принаймні один об’єкт." msgid "Edit to scale" msgstr "Редагувати масштаб" msgctxt "Verb" msgid "Scale all" -msgstr "" +msgstr "Масштабувати все" msgid "None" msgstr "Ні" @@ -1345,40 +1347,46 @@ msgid "Selection" msgstr "Вибір" msgid " (Moving)" -msgstr "" +msgstr " (Переміщення)" msgid "" "Select 2 faces on objects and \n" " make objects assemble together." msgstr "" +"Виберіть 2 грані на об’єктах і \n" +" з’єднайте об’єкти разом." msgid "" "Select 2 points or circles on objects and \n" " specify distance between them." msgstr "" +"Виберіть 2 точки або кола на об’єктах та \n" +" вкажіть відстань між ними." msgid "Face" -msgstr "" +msgstr "Грань" msgid " (Fixed)" -msgstr "" +msgstr " (Фіксований)" msgid "Point" -msgstr "" +msgstr "Точка" msgid "" "Feature 1 has been reset, \n" "feature 2 has been feature 1" msgstr "" +"Особливість 1 скинута, \n" +"Особливість 2 тепер особливість 1" msgid "Warning:please select Plane's feature." -msgstr "" +msgstr "Попередження: будь ласка, виберіть характеристику площини." msgid "Warning:please select Point's or Circle's feature." -msgstr "" +msgstr "Попередження: будь ласка, виберіть характеристику точки або кола." msgid "Warning:please select two different mesh." -msgstr "" +msgstr "Попередження: будь ласка, виберіть дві різні сітки." msgid "Copy to clipboard" msgstr "Копіювати в буфер обміну" @@ -1396,25 +1404,25 @@ msgid "Distance XYZ" msgstr "Відстань XYZ" msgid "Parallel" -msgstr "" +msgstr "Паралельний" msgid "Center coincidence" -msgstr "" +msgstr "Співпадіння центрів" msgid "Featue 1" -msgstr "" +msgstr "Особливість 1" msgid "Reverse rotation" -msgstr "" +msgstr "Зворотне обертання" msgid "Rotate around center:" -msgstr "" +msgstr "Обертати навколо центру:" msgid "Parallel distance:" msgstr "" msgid "Flip by Face 2" -msgstr "" +msgstr "Перевернути за Гранню 2" msgid "Ctrl+" msgstr "Ctrl+" @@ -2834,8 +2842,8 @@ msgid "" "This software uses open source components whose copyright and other " "proprietary rights belong to their respective owners" msgstr "" -"Це програмне забезпечення використовує компоненти з відкритим вихідним " -"кодом,авторські права та інші\n" +"Це програмне забезпечення використовує компоненти з відкритим вихідним кодом," +"авторські права та інші\n" "права власності належать їх відповідним власникам" #, c-format, boost-format @@ -3031,7 +3039,7 @@ msgid "Print with the filament mounted on the back of chassis" msgstr "Друк із ниткою, встановленою на задній частині корпусу" msgid "Current AMS humidity" -msgstr "" +msgstr "Поточна вологість AMS" msgid "" "Please change the desiccant when it is too wet. The indicator may not " @@ -3676,9 +3684,9 @@ msgstr "" #, 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" +"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 "" "Поточна температура камери вища, ніж безпечна температура матеріалу, це може " "призвести до розм’якшення матеріалу та його забивання. Максимально безпечна " @@ -4466,7 +4474,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)." @@ -4492,8 +4500,8 @@ msgid "" "confirming that the height is within the build volume." msgstr "" "Об'єкт знаходиться за кордоном пластини або перевищує обмеження по висоті.\n" -"Будь ласка, вирішіть проблему, перемістивши її повністю на тарілку або з " -"неї,і підтвердження того, що висота знаходиться в межах обсягу збирання." +"Будь ласка, вирішіть проблему, перемістивши її повністю на тарілку або з неї," +"і підтвердження того, що висота знаходиться в межах обсягу збирання." msgid "Calibration step selection" msgstr "Вибір кроку калібрування" @@ -4892,7 +4900,7 @@ msgstr "Показати &Виступ" msgid "Show object overhang highlight in 3D scene" msgstr "Показати підсвічування виступу об'єкта у 3D сцені" -msgid "Show Selected Outline (Experimental)" +msgid "Show Selected Outline (beta)" msgstr "" msgid "Show outline around selected object in 3D scene" @@ -5147,7 +5155,7 @@ msgid "The printer has been logged out and cannot connect." msgstr "Принтер був вийшов із системи та не може підключитися." msgid "Video Stopped." -msgstr "" +msgstr "Відео зупинено." msgid "LAN Connection Failed (Failed to start liveview)" msgstr "" @@ -5261,6 +5269,8 @@ msgid "" "Please check if the SD card is inserted into the printer.\n" "If it still cannot be read, you can try formatting the SD card." msgstr "" +"Будь ласка, перевірте, чи вставлена SD-карта в принтер.\n" +"Якщо вона все ще не розпізнається, ви можете спробувати форматувати SD-карту." msgid "LAN Connection Failed (Failed to view sdcard)" msgstr "Помилка підключення LAN (Не вдалося переглянути sd-карту)" @@ -5715,23 +5725,27 @@ msgid "Not for now" msgstr "Наразі не потрібно" msgid "Server Exception" -msgstr "" +msgstr "Помилка сервера" msgid "" "The server is unable to respond. Please click the link below to check the " "server status." msgstr "" +"Сервер не може відповісти. Будь ласка, натисніть на посилання нижче, щоб " +"перевірити стан сервера." msgid "" "If the server is in a fault state, you can temporarily use offline printing " "or local network printing." msgstr "" +"Якщо сервер перебуває в стані збою, ви можете тимчасово використовувати " +"офлайн-друк або друк через локальну мережу." msgid "How to use LAN only mode" -msgstr "" +msgstr "Як використовувати режим лише локальної мережі" msgid "Don't show this dialog again" -msgstr "" +msgstr "Більше не показувати це діалогове вікно" msgid "3D Mouse disconnected." msgstr "3D-миша відключена." @@ -6534,6 +6548,8 @@ msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " "will be exported." msgstr "" +"Не можливо виконати булеву операцію на сітках моделі. Тільки позитивні " +"частини будуть експортовані." msgid "" "Are you sure you want to store original SVGs with their local paths into the " @@ -7497,7 +7513,7 @@ msgid "Bind with Pin Code" msgstr "Прив’язати за допомогою Пін-коду" msgid "Bind with Access Code" -msgstr "" +msgstr "Прив’язати з кодом доступу" msgid "Send to Printer SD card" msgstr "Надіслати на SD-карту принтера" @@ -7798,8 +7814,8 @@ 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" @@ -7810,13 +7826,17 @@ msgid "" "A copy of the current system preset will be created, which will be detached " "from the system preset." msgstr "" +"Буде створено копію поточного системного пресету, який буде від'єднано від " +"системного пресету." msgid "" "The current custom preset will be detached from the parent system preset." msgstr "" +"Поточний власний пресет буде від'єднаний від батьківського системного " +"пресету." msgid "Modifications to the current profile will be saved." -msgstr "" +msgstr "Зміни до поточного профілю буде збережено." msgid "" "This action is not revertible.\n" @@ -7824,56 +7844,57 @@ msgid "" msgstr "" msgid "Detach preset" -msgstr "" +msgstr "Від'єднати пресет" msgid "This is a default preset." -msgstr "" +msgstr "Цей пресет є пресетом за-замовчуванням." msgid "This is a system preset." -msgstr "" +msgstr "Цей пресет є системним пресетом." msgid "Current preset is inherited from the default preset." -msgstr "" +msgstr "Поточний пресет успадковується від пресету за замовчуванням." msgid "Current preset is inherited from" -msgstr "" +msgstr "Поточний пресет успадковується від" msgid "It can't be deleted or modified." -msgstr "" +msgstr "Його не можна видалити або змінити." msgid "" "Any modifications should be saved as a new preset inherited from this one." msgstr "" +"Будь-які модифікації слід зберігати як новий пресет, успадкований від цього." msgid "To do that please specify a new name for the preset." -msgstr "" +msgstr "Для цього вкажіть нову назву пресету." msgid "Additional information:" -msgstr "" +msgstr "Додаткова інформація:" msgid "vendor" -msgstr "" +msgstr "виробник" msgid "printer model" -msgstr "" +msgstr "модель принтеру" msgid "default print profile" -msgstr "" +msgstr "профіль друку за замовчанням" msgid "default filament profile" -msgstr "" +msgstr "профіль філаметну за замовчанням" msgid "default SLA material profile" -msgstr "" +msgstr "профіль SLA-матеріалу за замовчанням" msgid "default SLA print profile" -msgstr "" +msgstr "профіль SLA-друку за замовчанням" msgid "full profile name" -msgstr "" +msgstr "повне ім'я профілю" msgid "symbolic profile name" -msgstr "" +msgstr "символічне ім'я профілю" msgid "Line width" msgstr "Ширина лінії" @@ -7954,7 +7975,7 @@ msgid "Filament for Features" msgstr "" msgid "Ooze prevention" -msgstr "" +msgstr "Запобігання просочування" msgid "Skirt" msgstr "Спідниця" @@ -8155,10 +8176,10 @@ msgid "Toolchange parameters with multi extruder MM printers" msgstr "Параметри заміни інструменту в багатоекструдерних MM-принтерах" msgid "Dependencies" -msgstr "" +msgstr "Залежності" msgid "Profile dependencies" -msgstr "" +msgstr "Залежності профілю" msgid "Printable space" msgstr "Місце для друку" @@ -8238,7 +8259,7 @@ msgid "Single extruder multi-material setup" msgstr "Установка для роботи з декількома матеріалами на одному екструдері" msgid "Number of extruders of the printer." -msgstr "" +msgstr "Кількість екструдерів у принтері." msgid "" "Single Extruder Multi Material is selected, \n" @@ -8246,6 +8267,10 @@ msgid "" "Do you want to change the diameter for all extruders to first extruder " "nozzle diameter value?" msgstr "" +"Вибрано мульти-матеріальний (ММ) друк з одним екструдером,\n" +"і всі екструдери повинні мати однаковий діаметр.\n" +"Хочете змінити діаметр для всіх екструдерів на значення діаметра сопла " +"першого екструдера?" msgid "Nozzle diameter" msgstr "Діаметр сопла" @@ -9095,7 +9120,7 @@ msgid "Confirm and Update Nozzle" msgstr "Підтвердити і оновити сопло" msgid "Connect the printer using IP and access code" -msgstr "" +msgstr "Підключити принтер за допомогою IP-адреси та коду доступу" msgid "" "Step 1. Please confirm Orca Slicer and your printer are in the same LAN." @@ -9127,28 +9152,29 @@ msgid "Where to find your printer's IP and Access Code?" msgstr "Де знайти IP-адресу та код доступу вашого принтера?" msgid "Connect" -msgstr "" +msgstr "Підключити" msgid "Manual Setup" msgstr "" msgid "connecting..." -msgstr "" +msgstr "підключення…" msgid "Failed to connect to printer." -msgstr "" +msgstr "Не вдалося підключитися до принтера." msgid "Failed to publish login request." -msgstr "" +msgstr "Не вдалося опублікувати запит на вхід." msgid "The printer has already been bound." -msgstr "" +msgstr "Принтер вже прив’язаний." msgid "The printer mode is incorrect, please switch to LAN Only." msgstr "" +"Неправильний режим принтера, будь ласка, переключіться на режим лише LAN." msgid "Connecting to printer... The dialog will close later" -msgstr "" +msgstr "Підключення до принтера… Діалогове вікно закриється пізніше" msgid "Connection failed, please double check IP and Access Code" msgstr "З’єднання не вдалося, будь ласка, перевірте IP-адресу та доступний код" @@ -9308,6 +9334,8 @@ msgid "" "Your print is very close to the priming regions. Make sure there is no " "collision." msgstr "" +"Ваша модель для друку розташована дуже близький до основних областей. " +"Переконайтесь, що немає зіткнення." msgid "" "Failed to generate gcode for invalid custom G-code.\n" @@ -10146,7 +10174,7 @@ msgstr "" msgid "Overhang cooling activation threshold" msgstr "" -#, c-format, boost-format +#, no-c-format, no-boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -10158,6 +10186,7 @@ msgstr "" msgid "External bridge infill direction" msgstr "" +#, no-c-format, no-boost-format msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for " @@ -10465,7 +10494,7 @@ msgstr "" "Auto означає, що ширина поля аналізується та обчислюється автоматично." msgid "Painted" -msgstr "" +msgstr "Пофарбовано" msgid "Brim-object gap" msgstr "Зазор між каймою та об'єктом" @@ -10521,6 +10550,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" +"Логічний вираз, що використовує значення конфігурації активного профілю " +"принтера. Якщо цей вираз оцінюється як Правда, цей профіль вважається " +"сумісним з активним профілем принтера." msgid "Compatible process profiles" msgstr "Сумісні профілі процесів" @@ -10533,6 +10565,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" +"Логічний вираз, що використовує значення конфігурації активного профілю " +"друку. Якщо цей вираз оцінюється як Правда, цей профіль вважається сумісним " +"з активним профілем друку." msgid "Print sequence, layer by layer or object by object" msgstr "Послідовність друку, шар за шаром або об'єкт за об'єктом" @@ -11685,8 +11720,8 @@ msgstr "" "знайдено, лінія заповнення з'єднується з сегментом периметра лише з одного " "боку, і довжина взятого сегменту периметра обмежена цим параметром, але не " "більше anchor_length_max.\n" -"Встановіть цей параметр рівним нулю, щоб вимкнути периметри " -"прив'язки.пов'язані з однією лінією заповнення." +"Встановіть цей параметр рівним нулю, щоб вимкнути периметри прив'язки." +"пов'язані з однією лінією заповнення." msgid "0 (no open anchors)" msgstr "0 (немає відкритих прив'язок)" @@ -11756,8 +11791,8 @@ 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." +"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 "" "Прискорення заповнення. Якщо значення виражено у відсотках (наприклад, " "100%), воно буде розраховане на основі прискорення за умовчанням." @@ -11865,10 +11900,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» до максимуму на рівні " @@ -12460,7 +12495,7 @@ msgid "The distance between the lines of ironing" msgstr "Відстань між лініями розглажування" msgid "Ironing inset" -msgstr "" +msgstr "Вставка прасування" msgid "" "The distance to keep from the edges. A value of 0 sets this to half of the " @@ -12989,7 +13024,7 @@ msgstr "" "конфігурації шляхом читання змінних середовища." msgid "Printer type" -msgstr "" +msgstr "Тип принтеру" msgid "Type of the printer" msgstr "" @@ -13001,7 +13036,7 @@ msgid "You can put your notes regarding the printer here." msgstr "Ви можете залишити свої примітки щодо принтера тут." msgid "Printer variant" -msgstr "" +msgstr "Варіант принтера" msgid "Raft contact Z distance" msgstr "Відстань контакту плоту Z" @@ -13092,7 +13127,7 @@ msgstr "" "витікання під час тривалого переміщення. Встановіть нуль, щоб відключити " "втягування" -msgid "Long retraction when cut(experimental)" +msgid "Long retraction when cut(beta)" msgstr "Довге втягування при відрізанні (експериментально)" msgid "" @@ -13447,8 +13482,8 @@ 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 before external loop" msgstr "Очищати перед зовнішнім контуром" @@ -13857,8 +13892,8 @@ msgid "" "Only create support for critical regions including sharp tail, cantilever, " "etc." msgstr "" -"Створювати підтримку тільки для критичних областей, включаючи гострий " -"хвіст,консоль і т.д." +"Створювати підтримку тільки для критичних областей, включаючи гострий хвіст," +"консоль і т.д." msgid "Remove small overhangs" msgstr "Видалити невеликі виступи" @@ -14197,8 +14232,8 @@ msgstr "Увімкнути контроль температури" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode" +"\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -14330,9 +14365,9 @@ msgstr "" "Залежно від тривалості операції витирання, швидкості та тривалості " "втягування екструдера/нитки, може знадобитися рух накату для нитки. \n" "\n" -"Якщо встановити значення у параметрі \"Кількість втягування перед " -"витиранням\" нижче, надлишкове втягування буде виконано перед витиранням, " -"інакше воно буде виконано після нього." +"Якщо встановити значення у параметрі \"Кількість втягування перед витиранням" +"\" нижче, надлишкове втягування буде виконано перед витиранням, інакше воно " +"буде виконано після нього." msgid "" "The wiping tower can be used to clean up the residue on the nozzle and " @@ -14502,9 +14537,9 @@ msgid "Idle temperature" msgstr "Температура очікування" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" msgid "X-Y hole compensation" @@ -15192,8 +15227,8 @@ msgstr "Підтримка: розповсюдження гілок на шар msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Невідомий формат файлу: вхідний файл повинен мати розширення .stl, .obj " -"або .amf (.xml)." +"Невідомий формат файлу: вхідний файл повинен мати розширення .stl, .obj або ." +"amf (.xml)." msgid "Loading of a model file failed." msgstr "Не вдалося завантажити файл моделі." @@ -15203,8 +15238,8 @@ msgstr "Наданий файл не вдалося прочитати, оскі msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Невідомий формат файлу: вхідний файл повинен мати розширення .3mf " -"або .zip.amf." +"Невідомий формат файлу: вхідний файл повинен мати розширення .3mf або .zip." +"amf." msgid "Canceled" msgstr "Скасовано" @@ -15445,6 +15480,24 @@ msgid "" "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" +"Результати калібрування мають приблизно 10% нестабільності в наших тестах, " +"що може призвести до того, що результати не будуть точно такими ж під час " +"кожного калібрування. Ми все ще досліджуємо корінні причини, щоб внести " +"поліпшення в нових оновленнях." msgid "When to use Flow Rate Calibration" msgstr "Коли використовувати Калібрування рівня потоку" @@ -16196,8 +16249,8 @@ msgstr "" "Чи бажаєте ви їх перезаписати?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Ми б перейменували попередні налаштування на «Вибраний вами серійний " @@ -18220,8 +18273,8 @@ msgstr "" #~ "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 "" @@ -18444,10 +18497,10 @@ msgstr "" #~ "3mf генерується старим слайсером Orca, завантажувати лише дані геометрії." #~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" " -#~ "option.Some extruders work better with this option unchecked (absolute " -#~ "extrusion mode). Wipe tower is only compatible with relative mode. It is " -#~ "always enabled on BambuLab printers. Default is checked" +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unchecked (absolute extrusion " +#~ "mode). Wipe tower is only compatible with relative mode. It is always " +#~ "enabled on BambuLab printers. Default is checked" #~ msgstr "" #~ "При використанні опції «label_objects» рекомендується відносне " #~ "Видавлювання. Деякі екструдери працюють краще з цією опцією без " @@ -18764,8 +18817,8 @@ msgstr "" #~ msgstr "Рівень налагодження" #~ msgid "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " -#~ "5:trace\n" +#~ "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" diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index c0936aae36..27051c28cb 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: 2025-02-19 19:44+0800\n" +"POT-Creation-Date: 2025-02-20 21:21+0800\n" "PO-Revision-Date: 2024-07-28 07:12+0000\n" "Last-Translator: Handle \n" "Language-Team: \n" @@ -1105,7 +1105,7 @@ msgid "Radial gradient" msgstr "径向渐变" msgid "Open filled path" -msgstr "" +msgstr "打开填充路径" msgid "Undefined stroke type" msgstr "未定义的描边类型" @@ -1125,7 +1125,7 @@ msgstr "形状已被标记为不可见 (%1%)." #. TRN: The first placeholder is shape identifier, the second one is text describing the problem. #, boost-format msgid "Fill of shape (%1%) contains unsupported: %2%." -msgstr "" +msgstr "形状填充(%1%)包含不受支持的:%2%。" #, boost-format msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." @@ -1133,7 +1133,7 @@ msgstr "形状 (%1%) 的描边太细了(不小于 %2% mm)。" #, boost-format msgid "Stroke of shape (%1%) contains unsupported: %2%." -msgstr "" +msgstr "形状笔划(%1%)包含不受支持的:%2%。" msgid "Face the camera" msgstr "面向摄像机" @@ -1150,10 +1150,10 @@ msgid "Reload SVG file from disk." msgstr "从磁盘重新加载SVG文件。" msgid "Change file" -msgstr "" +msgstr "改变文件" msgid "Change to another .svg file" -msgstr "" +msgstr "更改为另一个.svg文件" msgid "Forget the file path" msgstr "" @@ -1169,7 +1169,7 @@ msgstr "" #. TRN: Tooltip for the menu item. msgid "Bake into model as uneditable part" -msgstr "" +msgstr "将模型烘焙为不可编辑的部分" msgid "Save as" msgstr "另存为" @@ -1181,36 +1181,36 @@ msgid "Save as '.svg' file" msgstr "另存为“.svg”文件" msgid "Size in emboss direction." -msgstr "" +msgstr "浮雕方向上的大小" #. TRN: The placeholder contains a number. #, boost-format msgid "Scale also changes amount of curve samples (%1%)" -msgstr "" +msgstr "缩放也会改变曲线样本的数量(%1%)" msgid "Width of SVG." -msgstr "" +msgstr "SVG宽度" msgid "Height of SVG." -msgstr "" +msgstr "SVG高度" msgid "Lock/unlock the aspect ratio of the SVG." -msgstr "" +msgstr "锁定/解锁SVG的宽高比。" msgid "Reset scale" msgstr "重置缩放" msgid "Distance of the center of the SVG to the model surface." -msgstr "" +msgstr "SVG中心到模型表面的距离。" msgid "Reset distance" -msgstr "" +msgstr "重置距离" msgid "Reset rotation" msgstr "重置旋转" msgid "Lock/unlock rotation angle when dragging above the surface." -msgstr "" +msgstr "在曲面上方拖动时锁定/解锁旋转角度。" msgid "Mirror vertically" msgstr "垂直镜像" @@ -1220,7 +1220,7 @@ msgstr "水平镜像" #. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). msgid "Change SVG Type" -msgstr "" +msgstr "改变SVG类型" #. TRN - Input label. Be short as possible msgid "Mirror" @@ -1285,24 +1285,24 @@ msgid "Esc" msgstr "Esc" msgid "Cancel a feature until exit" -msgstr "" +msgstr "取消一个特征直到退出" msgid "Measure" msgstr "测量" msgid "" "Please confirm explosion ratio = 1,and please select at least one object" -msgstr "" +msgstr "请确保爆炸比例为1,且至少选择一个对象" msgid "Please select at least one object." -msgstr "" +msgstr "请至少选中一个对象。" msgid "Edit to scale" msgstr "编辑比例" msgctxt "Verb" msgid "Scale all" -msgstr "" +msgstr "缩放全部" msgid "None" msgstr "无" @@ -1317,40 +1317,44 @@ msgid "Selection" msgstr "选中" msgid " (Moving)" -msgstr "" +msgstr "(活动的)" msgid "" "Select 2 faces on objects and \n" " make objects assemble together." msgstr "" +"在两个物体上选择两个面 \n" +"并将物体组合在一起。" msgid "" "Select 2 points or circles on objects and \n" " specify distance between them." msgstr "" +"在两个物体上选择两个点或圆 \n" +"并指定它们之间的距离。" msgid "Face" -msgstr "" +msgstr "面" msgid " (Fixed)" -msgstr "" +msgstr "(固定的)" msgid "Point" -msgstr "" +msgstr "点" msgid "" "Feature 1 has been reset, \n" "feature 2 has been feature 1" -msgstr "" +msgstr "特征1已经被重置,特征2变成特征1" msgid "Warning:please select Plane's feature." -msgstr "" +msgstr "警告:请选择面特征。" msgid "Warning:please select Point's or Circle's feature." -msgstr "" +msgstr "警告:请选择点或圆特征。" msgid "Warning:please select two different mesh." -msgstr "" +msgstr "警告:请选择两个不同的网格。" msgid "Copy to clipboard" msgstr "复制到剪贴板" @@ -1368,25 +1372,25 @@ msgid "Distance XYZ" msgstr "距离 XYZ" msgid "Parallel" -msgstr "" +msgstr "平行" msgid "Center coincidence" -msgstr "" +msgstr "中心重合" msgid "Featue 1" -msgstr "" +msgstr "特征1" msgid "Reverse rotation" -msgstr "" +msgstr "反转方向" msgid "Rotate around center:" -msgstr "" +msgstr "绕中心旋转:" msgid "Parallel distance:" msgstr "" msgid "Flip by Face 2" -msgstr "" +msgstr "通过面2翻转" msgid "Ctrl+" msgstr "Ctrl+" @@ -1697,13 +1701,13 @@ msgid "Add text modifier" msgstr "添加文本修改器" msgid "Add SVG part" -msgstr "" +msgstr "添加svg零件" msgid "Add negative SVG" -msgstr "" +msgstr "添加负零件SVG" msgid "Add SVG modifier" -msgstr "" +msgstr "添加SVG修改器" msgid "Select settings" msgstr "选择设置" @@ -2926,7 +2930,7 @@ msgid "Print with the filament mounted on the back of chassis" msgstr "使用机箱背后挂载的材料打印" msgid "Current AMS humidity" -msgstr "" +msgstr "当前AMS湿度" msgid "" "Please change the desiccant when it is too wet. The indicator may not " @@ -3521,9 +3525,9 @@ msgstr "" #, 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" +"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。" @@ -4287,7 +4291,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)." @@ -4711,7 +4715,7 @@ msgstr "显示悬空高亮" msgid "Show object overhang highlight in 3D scene" msgstr "在3D场景中显示悬空高亮" -msgid "Show Selected Outline (Experimental)" +msgid "Show Selected Outline (beta)" msgstr "" msgid "Show outline around selected object in 3D scene" @@ -4939,7 +4943,7 @@ msgid "The printer has been logged out and cannot connect." msgstr "打印机已注销,无法连接。" msgid "Video Stopped." -msgstr "" +msgstr "视频已停止。" msgid "LAN Connection Failed (Failed to start liveview)" msgstr "局域网连接失败(无法启动直播)" @@ -5045,7 +5049,7 @@ msgstr "当前固件暂不支持查看SD卡中文件。请更新打印机固件 msgid "" "Please check if the SD card is inserted into the printer.\n" "If it still cannot be read, you can try formatting the SD card." -msgstr "" +msgstr "请检查打印机中SD卡是否已经插入,如果仍然不能读取,您可尝试格式化SD卡。" msgid "LAN Connection Failed (Failed to view sdcard)" msgstr "局域网连接失败(无法查看SD卡)" @@ -5082,8 +5086,8 @@ 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-code数据。请使用Orca Slicer进行切片并导出新" -"的.gcode.3mf文件。" +".gcode.3mf文件中不包含G-code数据。请使用Orca Slicer进行切片并导出新的." +"gcode.3mf文件。" #, c-format, boost-format msgid "File '%s' was lost! Please download it again." @@ -5470,23 +5474,23 @@ msgid "Not for now" msgstr "暂不" msgid "Server Exception" -msgstr "" +msgstr "服务器异常" msgid "" "The server is unable to respond. Please click the link below to check the " "server status." -msgstr "" +msgstr "服务器无法响应。请单击下面的链接检查服务器状态。" msgid "" "If the server is in a fault state, you can temporarily use offline printing " "or local network printing." -msgstr "" +msgstr "如果服务器处于故障状态,您可以暂时使用离线打印或本地网络打印。" msgid "How to use LAN only mode" -msgstr "" +msgstr "如何使用仅局域网模式" msgid "Don't show this dialog again" -msgstr "" +msgstr "不再显示此对话框?" msgid "3D Mouse disconnected." msgstr "3D鼠标断连。" @@ -7136,7 +7140,7 @@ msgid "Bind with Pin Code" msgstr "通过Pin码绑定" msgid "Bind with Access Code" -msgstr "" +msgstr "通过访问码绑定" msgid "Send to Printer SD card" msgstr "发送到打印机的SD卡" @@ -7408,8 +7412,8 @@ 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" "右键单击打印板的空白位置,选择“添加标准模型”->“延时摄影擦料塔”。" @@ -7435,53 +7439,53 @@ msgid "Detach preset" msgstr "" msgid "This is a default preset." -msgstr "" +msgstr "这是默认预设。" msgid "This is a system preset." -msgstr "" +msgstr "这是一个系统预设。" msgid "Current preset is inherited from the default preset." -msgstr "" +msgstr "当前预设从默认预设继承。" msgid "Current preset is inherited from" -msgstr "" +msgstr "当前预设继承自" msgid "It can't be deleted or modified." -msgstr "" +msgstr "无法删除或修改它。" msgid "" "Any modifications should be saved as a new preset inherited from this one." -msgstr "" +msgstr "任何修改都应保存为从此修改继承的新预设。" msgid "To do that please specify a new name for the preset." -msgstr "" +msgstr "为此,请为预设指定新名称。" msgid "Additional information:" -msgstr "" +msgstr "附加信息:" msgid "vendor" -msgstr "" +msgstr "供应商" msgid "printer model" -msgstr "" +msgstr "打印机型号" msgid "default print profile" -msgstr "" +msgstr "默认打印配置文件" msgid "default filament profile" -msgstr "" +msgstr "默认耗材丝配置" msgid "default SLA material profile" -msgstr "" +msgstr "默认 SLA 材料配置文件" msgid "default SLA print profile" -msgstr "" +msgstr "默认 SLA 打印配置文件" msgid "full profile name" -msgstr "" +msgstr "配置全称" msgid "symbolic profile name" -msgstr "" +msgstr "配置名昵称" msgid "Line width" msgstr "线宽" @@ -7561,7 +7565,7 @@ msgid "Filament for Features" msgstr "" msgid "Ooze prevention" -msgstr "" +msgstr "Ooze 预防" msgid "Skirt" msgstr "裙边" @@ -7742,10 +7746,10 @@ msgid "Toolchange parameters with multi extruder MM printers" msgstr "多挤出机多材料打印机的换色参数" msgid "Dependencies" -msgstr "" +msgstr "依赖" msgid "Profile dependencies" -msgstr "" +msgstr "配置依赖" msgid "Printable space" msgstr "可打印区域" @@ -7825,7 +7829,7 @@ msgid "Single extruder multi-material setup" msgstr "设置单挤出机多材料" msgid "Number of extruders of the printer." -msgstr "" +msgstr "打印机的挤出机数。" msgid "" "Single Extruder Multi Material is selected, \n" @@ -7833,6 +7837,9 @@ msgid "" "Do you want to change the diameter for all extruders to first extruder " "nozzle diameter value?" msgstr "" +"选择单挤出机多材料,\n" +"和所有挤出机必须具有相同的直径。\n" +"是否要将所有挤出机的直径更改为第一挤出机喷嘴直径值?" msgid "Nozzle diameter" msgstr "喷嘴直径" @@ -8639,7 +8646,7 @@ msgid "Confirm and Update Nozzle" msgstr "确认并更新喷嘴" msgid "Connect the printer using IP and access code" -msgstr "" +msgstr "使用IP和访问代码连接打印" msgid "" "Step 1. Please confirm Orca Slicer and your printer are in the same LAN." @@ -8648,12 +8655,13 @@ msgstr "" msgid "" "Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." -msgstr "" +msgstr "步骤2,如果下面的IP和访问代码与打印机上的实际值不同,请重新输入。" msgid "" "Step 3. Please obtain the device SN from the printer side; it is usually " "found in the device information on the printer screen." msgstr "" +"步骤3,请从打印机端获取设备序列号,它通常位于打印机屏幕上的设备信息中。" msgid "IP" msgstr "" @@ -8662,7 +8670,7 @@ msgid "Access Code" msgstr "访问码" msgid "Printer model" -msgstr "" +msgstr "打印机模型" msgid "Printer name" msgstr "" @@ -8671,28 +8679,28 @@ msgid "Where to find your printer's IP and Access Code?" msgstr "在哪里可以找到打印机的IP和访问码?" msgid "Connect" -msgstr "" +msgstr "连接" msgid "Manual Setup" msgstr "" msgid "connecting..." -msgstr "" +msgstr "连接中..." msgid "Failed to connect to printer." -msgstr "" +msgstr "无法连接到打印机" msgid "Failed to publish login request." -msgstr "" +msgstr "发布登录请求失败" msgid "The printer has already been bound." -msgstr "" +msgstr "打印机已绑定。" msgid "The printer mode is incorrect, please switch to LAN Only." -msgstr "" +msgstr "打印机模式不正确,请切换到仅局域网。" msgid "Connecting to printer... The dialog will close later" -msgstr "" +msgstr "连接打印机中… 对话框稍后将自动关闭。" msgid "Connection failed, please double check IP and Access Code" msgstr "连接失败,请再次检查IP地址和访问码。" @@ -9567,7 +9575,7 @@ msgid "Nowhere" msgstr "不填充" msgid "Force cooling for overhangs and bridges" -msgstr "" +msgstr "悬垂/桥接强制冷却" msgid "" "Enable this option to allow adjustment of the part cooling fan speed for " @@ -9575,9 +9583,11 @@ msgid "" "speed specifically for these features can improve overall print quality and " "reduce warping." msgstr "" +"启用此选项以允许单独针对悬垂、内部桥接和外部桥接调整部件冷却风扇的速度。针对" +"这些特性设置风扇速度可以提高整体打印质量并减少翘曲。" msgid "Overhangs and external bridges fan speed" -msgstr "" +msgstr "悬垂和外部桥接风扇速度" msgid "" "Use this part cooling fan speed when printing bridges or overhang walls with " @@ -9590,11 +9600,17 @@ msgid "" "speed threshold set above. It is also adjusted upwards up to the maximum fan " "speed threshold when the minimum layer time threshold is not met." msgstr "" +"当打印桥接结构或悬垂墙体时,如果悬垂程度超过上述“悬垂冷却阈值”所设定的值,则" +"使用此部件冷却风扇速度。专门针对悬垂和桥接加大冷却力度,有助于提升这些特征整" +"体的打印质量。\n" +"\n" +"请注意,此风扇速度的下限受前面设置的最小风扇速度阈值限制;当打印层时间未达到" +"最小层时间阈值时,会相应上调至最大风扇速度阈值。" msgid "Overhang cooling activation threshold" -msgstr "" +msgstr "悬垂冷却激活阈值" -#, c-format, boost-format +#, no-c-format, no-boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -9602,10 +9618,14 @@ msgid "" "by the layer beneath it. Setting this value to 0% forces the cooling fan to " "run for all outer walls, regardless of the overhang degree." msgstr "" +"当悬垂超过此指定阈值时,强制部件冷却风扇按照下方设置的“悬垂风扇速度”运转。该" +"阈值以百分比表示,指示每条走线宽度中未被下层支撑的部分。将此值设置为0%即使在" +"任何悬垂条件下也会使风扇运转于所有外壁。" msgid "External bridge infill direction" -msgstr "" +msgstr "外部桥接填充方向" +#, no-c-format, no-boost-format msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for " @@ -9615,7 +9635,7 @@ msgstr "" "180°表示0度。" msgid "Internal bridge infill direction" -msgstr "" +msgstr "内部桥接填充方向" msgid "" "Internal bridging angle override. If left to zero, the bridging angle will " @@ -9625,9 +9645,13 @@ msgid "" "It is recommended to leave it at 0 unless there is a specific model need not " "to." msgstr "" +"内部桥接角度覆盖。如果设置为0,则桥接角度将自动计算;否则将采用所提供的角度用" +"于内部桥接。使用180°表示0角度。\n" +"\n" +"建议保持此值为0,除非有特殊模型要求。" msgid "External bridge density" -msgstr "" +msgstr "外部桥接密度" msgid "" "Controls the density (spacing) of external bridge lines. 100% means solid " @@ -9637,9 +9661,13 @@ msgid "" "space for air to circulate around the extruded bridge, improving its cooling " "speed." msgstr "" +"控制外部桥接线的密度(间距)。100% 表示实心桥接,默认值为 100%。\n" +"\n" +"较低密度的外部桥接可提高可靠性,因为桥梁周围有更多空间供空气循环,从而增强冷" +"却效果。" msgid "Internal bridge density" -msgstr "" +msgstr "内部桥接密度" msgid "" "Controls the density (spacing) of internal bridge lines. 100% means solid " @@ -9653,6 +9681,13 @@ msgid "" "bridge over infill option, further improving internal bridging structure " "before solid infill is extruded." msgstr "" +"控制内部桥接线的密度(间距)。100% 表示实心桥接,默认值为 100%。\n" +"\n" +"较低密度的内部桥接有助于减少顶面起鼓现象,并提高内部桥接的可靠性,因为挤出桥" +"梁周围有更多空间供空气循环,加快冷却速度。\n" +"\n" +"此选项与第二层内部桥接覆盖填充功能结合使用时尤为有效,可在挤出实心填充前进一" +"步改善内部桥接结构。" msgid "Bridge flow ratio" msgstr "桥接流量" @@ -9913,7 +9948,7 @@ msgstr "" "该参数控制在模型的外侧和/或内侧生成brim。自动是指自动分析和计算边框的宽度。" msgid "Painted" -msgstr "" +msgstr "绘制" msgid "Brim-object gap" msgstr "Brim与模型的间隙" @@ -9966,6 +10001,8 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" +"使用活动打印机配置文件的配置值的布尔表达式。如果此表达式计算为 true,则此配置" +"文件将被视为与活动打印机配置文件兼容。" msgid "Compatible process profiles" msgstr "兼容的切片配置" @@ -9978,6 +10015,8 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" +"使用活动打印配置文件的配置值的布尔表达式。如果此表达式计算为 true,则此配置文" +"件将被视为与活动打印配置文件兼容。" msgid "Print sequence, layer by layer or object by object" msgstr "打印顺序,逐层打印或者逐件打印" @@ -10070,7 +10109,7 @@ msgstr "" "印。" msgid "Thick external bridges" -msgstr "" +msgstr "外部搭桥用厚桥" msgid "" "If enabled, bridges are more reliable, can bridge longer distances, but may " @@ -10092,7 +10131,7 @@ msgstr "" "虑关闭它。" msgid "Extra bridge layers (beta)" -msgstr "" +msgstr "额外桥层(测试版)" msgid "" "This option enables the generation of an extra bridge layer over internal " @@ -10132,16 +10171,16 @@ msgid "Disabled" msgstr "禁用" msgid "External bridge only" -msgstr "" +msgstr "仅外部桥接" msgid "Internal bridge only" -msgstr "" +msgstr "仅内部桥接" msgid "Apply to all" -msgstr "" +msgstr "全部应用" msgid "Filter out small internal bridges" -msgstr "" +msgstr "过滤掉小的内部桥接" msgid "" "This option can help reduce pillowing on top surfaces in heavily slanted or " @@ -10174,7 +10213,7 @@ msgid "" msgstr "" msgid "Filter" -msgstr "" +msgstr "过滤" msgid "Limited filtering" msgstr "有限保留" @@ -10813,19 +10852,21 @@ msgid "" msgstr "耗材丝通过在喉管中来回移动来冷却。指定所需的移动次数。" msgid "Stamping loading speed" -msgstr "" +msgstr "尖端成型加载速度" msgid "Speed used for stamping." -msgstr "" +msgstr "用于尖端成型的速度" msgid "Stamping distance measured from the center of the cooling tube" -msgstr "" +msgstr "从冷却管中心测量的尖端成型距离" msgid "" "If set to nonzero value, filament is moved toward the nozzle between the " "individual cooling moves (\"stamping\"). This option configures how long " "this movement should be before the filament is retracted again." msgstr "" +"如果设置为非零值,则在各个冷却移动之间耗材会向喷嘴方向移动(“印模”)。该选项" +"用于配置耗材在重新回抽前应移动多长时间。" msgid "Speed of the first cooling move" msgstr "第一次冷却移动的速度" @@ -11109,8 +11150,8 @@ msgid "mm/s² or %" msgstr "mm/s² 或 %" 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." +"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 "" "稀疏填充的加速度。如果该值表示为百分比(例如100%),则将根据默认加速度进行计" "算。" @@ -11207,17 +11248,17 @@ 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 "" "风扇速度将从“禁用第一层”的零线性上升到“全风扇速度层”的最大。如果低于“禁用风扇" "第一层”,则“全风扇速度第一层”将被忽略,在这种情况下,风扇将在“禁用风扇第一" "层”+1层以最大允许速度运行。" msgid "layer" -msgstr "" +msgstr "层" msgid "Support interface fan speed" msgstr "支撐接触面风扇" @@ -11230,9 +11271,13 @@ msgid "" "Set to -1 to disable it.\n" "This setting is overridden by disable_fan_first_layers." msgstr "" +"在打印支撑接触面时使用此部件冷却风扇的转速。将此参数设置为高于正常速度可以降" +"低支撑与被支撑零件之间的层粘结强度,使它们更易分离。\n" +"设置为 -1 表示禁用该功能。\n" +"该设置会被 disable_fan_first_layers 选项覆盖。" msgid "Internal bridges fan speed" -msgstr "" +msgstr "内部桥接风扇速度" msgid "" "The part cooling fan speed used for all internal bridges. Set to -1 to use " @@ -11242,6 +11287,10 @@ msgid "" "can help reduce part warping due to excessive cooling applied over a large " "surface for a prolonged period of time." msgstr "" +"用于所有内部桥接的部件冷却风扇转速。设置为 -1 时,将采用悬垂风扇转速设置。\n" +"\n" +"与常规风扇转速相比,降低内部桥接风扇转速可以帮助减少因长时间在大面积区域施加" +"过度冷却而引起的零件变形。" msgid "" "Randomly jitter while printing the wall, so that the surface has a rough " @@ -11740,7 +11789,7 @@ msgid "The distance between the lines of ironing" msgstr "熨烫走线的间距" msgid "Ironing inset" -msgstr "" +msgstr "熨烫内缩" msgid "" "The distance to keep from the edges. A value of 0 sets this to half of the " @@ -12173,7 +12222,7 @@ msgstr "" "检测悬空相对于线宽的百分比,并应用不同的速度打印。100%%的悬空将使用桥接速度。" msgid "Filament to print walls" -msgstr "" +msgstr "打印外墙的耗材丝" msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " @@ -12219,10 +12268,10 @@ msgstr "" "对路径,并支持脚本通过全局变量来读取 Orca Slicer 的设置。" msgid "Printer type" -msgstr "" +msgstr "打印机类型" msgid "Type of the printer" -msgstr "" +msgstr "打印机类型" msgid "Printer notes" msgstr "打印机注释" @@ -12231,7 +12280,7 @@ msgid "You can put your notes regarding the printer here." msgstr "你可以把你关于打印机的注释放在这里。" msgid "Printer variant" -msgstr "" +msgstr "打印机变种" msgid "Raft contact Z distance" msgstr "筏层Z间距" @@ -12296,7 +12345,7 @@ msgid "Force a retraction when changes layer" msgstr "强制在换层时回抽。" msgid "Retract on top layer" -msgstr "" +msgstr "顶层回抽" msgid "" "Force a retraction on top layer. Disabling could prevent clog on very slow " @@ -12313,7 +12362,7 @@ msgstr "" "挤出机中的一些材料会被拉回特定长度,避免空驶较长时材料渗出。设置为0表示关闭回" "抽。" -msgid "Long retraction when cut(experimental)" +msgid "Long retraction when cut(beta)" msgstr "切料时回抽(实验)" msgid "" @@ -12334,7 +12383,7 @@ msgid "" msgstr "实验性选项。在更换耗材丝时,切断前的回抽长度" msgid "Z-hop height" -msgstr "" +msgstr "Z抬升高度" msgid "" "Whenever the retraction is done, the nozzle is lifted a little to create " @@ -12361,7 +12410,7 @@ msgid "" msgstr "如果该值为正,则Z抬升仅在Z高于参数(Z抬升下边界)且低于该值时才会生效" msgid "Z-hop type" -msgstr "" +msgstr "Z抬升类型" msgid "Z hop type" msgstr "抬Z类型" @@ -12754,7 +12803,7 @@ msgid "" msgstr "小于这个阈值的稀疏填充区域将会被内部实心填充替代。" msgid "Solid infill" -msgstr "" +msgstr "实心填充" msgid "Filament to print solid infill" msgstr "" @@ -13184,7 +13233,7 @@ msgid "" msgstr "将会为悬垂角度低于阈值的模型表面生成支撑。" msgid "Threshold overlap" -msgstr "" +msgstr "阈值支撑比例" msgid "" "If threshold angle is zero, support will be generated for overhangs whose " @@ -13316,8 +13365,8 @@ msgstr "激活温度控制" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode" +"\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -13579,7 +13628,7 @@ msgid "Spacing of purge lines on the wipe tower." msgstr "擦拭塔上冲刷线的间距" msgid "Extra flow for purging" -msgstr "" +msgstr "额外冲刷量" msgid "" "Extra flow used for the purging lines on the wipe tower. This makes the " @@ -13591,9 +13640,9 @@ msgid "Idle temperature" msgstr "待机温度" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" msgid "X-Y hole compensation" @@ -14452,10 +14501,10 @@ msgid "" msgstr "" "请从我们的wiki中找到动态流量校准的详细信息。\n" "\n" -"通常情况下,校准是不必要的。当您开始单色/单材料打印,并在打印开始菜单中勾选了" -"“动态流量校准”选项时,打印机将按照旧的方式,在打印前校准丝料;当您开始多色/多" -"材料打印时,打印机将在每次换丝料时使用默认的补偿参数,这在大多数情况下会产生" -"良好的效果。\n" +"通常情况下,校准是不必要的。当您开始单色/单材料打印,并在打印开始菜单中勾选" +"了“动态流量校准”选项时,打印机将按照旧的方式,在打印前校准丝料;当您开始多色/" +"多材料打印时,打印机将在每次换丝料时使用默认的补偿参数,这在大多数情况下会产" +"生良好的效果。\n" "\n" "有几种情况可能导致校准结果不可靠,例如打印板的的附着力不足。清洗打印板或者使" "用胶水可以增强打印板附着力。您可以在我们的维基上找到更多相关信息。\n" @@ -15169,8 +15218,8 @@ msgstr "" "你想重写预设吗" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "我们将会把预设重命名为“供应商类型名 @ 您选择的打印机”\n" @@ -16399,9 +16448,6 @@ msgstr "" #~ msgid "IP and Access Code Verified! You may close the window" #~ msgstr "IP地址和访问码验证成功!您可以关闭此窗口。" -#~ 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" @@ -17031,12 +17077,9 @@ msgstr "" #~ msgid "Configuration package updated to " #~ msgstr "配置包已更新到" -#~ msgid "No sparse layers (EXPERIMENTAL)" -#~ msgstr "无稀疏层(实验)" - #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you " -#~ "selected\". \n" +#~ "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 "" #~ "我们会将预设重命名为“供应商 类型 系列 @您选择的打印机”。\n" @@ -17384,11 +17427,11 @@ msgstr "" #~ msgstr "调试等级" #~ msgid "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " -#~ "5:trace\n" +#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +#~ "trace\n" #~ msgstr "" -#~ "设置调试日志等级。0:fatal, 1:error, 2:warning, 3:info, 4:debug, " -#~ "5:trace\n" +#~ "设置调试日志等级。0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +#~ "trace\n" #, boost-format #~ msgid "The selected preset: %1% is not found." diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 52b2868a3b..cce65f2d3d 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-19 19:44+0800\n" +"POT-Creation-Date: 2025-02-20 21:21+0800\n" "PO-Revision-Date: 2025-01-11 10:54+0800\n" "Last-Translator: Shuwn Hsu\n" "Language-Team: \n" @@ -3528,9 +3528,9 @@ msgstr "" #, 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" +"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" @@ -4298,7 +4298,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)." @@ -4722,7 +4722,7 @@ msgstr "凸顯懸空" msgid "Show object overhang highlight in 3D scene" msgstr "在 3D 場景中凸顯懸空" -msgid "Show Selected Outline (Experimental)" +msgid "Show Selected Outline (beta)" msgstr "顯示選取輪廓(實驗性)" msgid "Show outline around selected object in 3D scene" @@ -5095,8 +5095,8 @@ 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-code 數據。請使用 Orca Slicer 進行切片並匯出新" -"的 .gcode.3mf 檔案。" +".gcode.3mf 檔案中不包含 G-code 數據。請使用 Orca Slicer 進行切片並匯出新的 ." +"gcode.3mf 檔案。" #, c-format, boost-format msgid "File '%s' was lost! Please download it again." @@ -7437,8 +7437,8 @@ 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" "可以通過右鍵點擊構建板的空白位置,選擇『新增標準模型』->『縮時錄影換料塔』來" @@ -9676,7 +9676,7 @@ msgstr "" msgid "Overhang cooling activation threshold" msgstr "懸垂冷卻觸發閾值" -#, c-format, boost-format +#, no-c-format, no-boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -9688,6 +9688,7 @@ msgstr "" msgid "External bridge infill direction" msgstr "外部橋接結構的填充方向" +#, no-c-format, no-boost-format msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for " @@ -11340,8 +11341,8 @@ msgid "mm/s² or %" msgstr "mm/s² 或 %" 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." +"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 "" "稀疏填充的加速度。如果該值表示為百分比(例如 100%),則將根據預設加速度進行計" "算。" @@ -11438,10 +11439,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」層開始,從零速以線性方式逐漸增" "加,直到第「full_fan_speed_layer」層達到最大速度。如果" @@ -12601,7 +12602,7 @@ msgid "" msgstr "" "擠出機將材料拉回指定長度,避免空駛較長時軟化的線材滲出。設定為 0 表示關閉回抽" -msgid "Long retraction when cut(experimental)" +msgid "Long retraction when cut(beta)" msgstr "切斷時的長回抽(實驗性功能)" msgid "" @@ -13627,8 +13628,8 @@ msgstr "啟動溫度控制" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode" +"\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -13915,9 +13916,9 @@ msgid "Idle temperature" msgstr "閒置溫度" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" "當工具頭在多工具頭設置中未使用時的噴嘴溫度。僅在『列印設定』中啟用『防止漏" "料』時有效。設置 0 為禁用。" @@ -15509,8 +15510,8 @@ msgstr "" "確定要覆寫嗎?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "將會將預設名稱重新命名為「廠牌 型號 序號 @選擇的列印設備」。\n" diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 070152c7a0..e8e7096a07 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -940,6 +940,7 @@ void PrintConfigDef::init_fff_params() def = this->add("overhang_fan_threshold", coEnums); def->label = L("Overhang cooling activation threshold"); + // xgettext:no-c-format, no-boost-format def->tooltip = L("When the overhang exceeds this specified threshold, force the cooling fan to run at the 'Overhang Fan Speed' set below. " "This threshold is expressed as a percentage, indicating the portion of each line's width that is unsupported by the layer " "beneath it. Setting this value to 0% forces the cooling fan to run for all outer walls, regardless of the overhang degree."); @@ -963,6 +964,7 @@ void PrintConfigDef::init_fff_params() def = this->add("bridge_angle", coFloat); def->label = L("External bridge infill direction"); def->category = L("Strength"); + // xgettext:no-c-format, no-boost-format def->tooltip = L("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."); @@ -3946,7 +3948,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionInt {0}); def = this->add("long_retractions_when_cut", coBools); - def->label = L("Long retraction when cut(experimental)"); + def->label = L("Long retraction when cut(beta)"); def->tooltip = L("Experimental feature.Retracting and cutting off the filament at a longer distance during changes to minimize purge." "While this reduces flush significantly, it may also raise the risk of nozzle clogs or other printing problems."); def->mode = comDevelop; diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 945e8b493e..38cee631f4 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -2721,7 +2721,7 @@ void MainFrame::init_menubar_as_editor() this, [this]() { return m_plater->is_view3D_shown(); }, [this]() { return m_plater->is_view3D_overhang_shown(); }, this); append_menu_check_item( - viewMenu, wxID_ANY, _L("Show Selected Outline (Experimental)"), _L("Show outline around selected object in 3D scene"), + viewMenu, wxID_ANY, _L("Show Selected Outline (beta)"), _L("Show outline around selected object in 3D scene"), [this](wxCommandEvent&) { wxGetApp().toggle_show_outline(); m_plater->get_current_canvas3D()->post_event(SimpleEvent(wxEVT_PAINT)); From a49460d8d89fdab4792b59247878a1f363002e1d Mon Sep 17 00:00:00 2001 From: SoftFever Date: Thu, 20 Feb 2025 20:30:28 +0800 Subject: [PATCH 091/129] bump profile versions --- resources/profiles/Anker.json | 2 +- resources/profiles/Anycubic.json | 2 +- resources/profiles/Artillery.json | 2 +- resources/profiles/BIQU.json | 2 +- resources/profiles/Blocks.json | 2 +- resources/profiles/CONSTRUCT3D.json | 2 +- resources/profiles/Chuanying.json | 2 +- resources/profiles/Co Print.json | 2 +- resources/profiles/Comgrow.json | 2 +- resources/profiles/Creality.json | 2 +- resources/profiles/Custom.json | 2 +- resources/profiles/DeltaMaker.json | 2 +- resources/profiles/Dremel.json | 2 +- resources/profiles/Eryone.json | 2 +- resources/profiles/FLSun.json | 2 +- resources/profiles/Flashforge.json | 2 +- resources/profiles/FlyingBear.json | 2 +- resources/profiles/Folgertech.json | 2 +- resources/profiles/Geeetech.json | 2 +- resources/profiles/Ginger Additive.json | 2 +- resources/profiles/InfiMech.json | 2 +- resources/profiles/Kingroon.json | 2 +- resources/profiles/MagicMaker.json | 2 +- resources/profiles/Mellow.json | 2 +- resources/profiles/OrcaArena.json | 2 +- resources/profiles/OrcaFilamentLibrary.json | 2 +- resources/profiles/Peopoly.json | 2 +- resources/profiles/Positron3D.json | 2 +- resources/profiles/Prusa.json | 2 +- resources/profiles/Qidi.json | 2 +- resources/profiles/Raise3D.json | 2 +- resources/profiles/RolohaunDesign.json | 2 +- resources/profiles/SecKit.json | 2 +- resources/profiles/Snapmaker.json | 2 +- resources/profiles/Sovol.json | 2 +- resources/profiles/Tronxy.json | 2 +- resources/profiles/TwoTrees.json | 2 +- resources/profiles/UltiMaker.json | 2 +- resources/profiles/Vivedino.json | 2 +- resources/profiles/Volumic.json | 2 +- resources/profiles/Voron.json | 2 +- resources/profiles/Voxelab.json | 2 +- resources/profiles/Vzbot.json | 2 +- resources/profiles/Wanhao.json | 2 +- 44 files changed, 44 insertions(+), 44 deletions(-) diff --git a/resources/profiles/Anker.json b/resources/profiles/Anker.json index 87c089cdb9..98a23128b9 100644 --- a/resources/profiles/Anker.json +++ b/resources/profiles/Anker.json @@ -1,6 +1,6 @@ { "name": "Anker", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Anker configurations", "machine_model_list": [ diff --git a/resources/profiles/Anycubic.json b/resources/profiles/Anycubic.json index ba7e86fed5..a6100c1e85 100644 --- a/resources/profiles/Anycubic.json +++ b/resources/profiles/Anycubic.json @@ -1,6 +1,6 @@ { "name": "Anycubic", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Anycubic configurations", "machine_model_list": [ diff --git a/resources/profiles/Artillery.json b/resources/profiles/Artillery.json index 810a6d49d5..298707bff5 100644 --- a/resources/profiles/Artillery.json +++ b/resources/profiles/Artillery.json @@ -1,6 +1,6 @@ { "name": "Artillery", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Artillery configurations", "machine_model_list": [ diff --git a/resources/profiles/BIQU.json b/resources/profiles/BIQU.json index cdca440fc3..c6defd459e 100644 --- a/resources/profiles/BIQU.json +++ b/resources/profiles/BIQU.json @@ -1,6 +1,6 @@ { "name": "BIQU", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "BIQU configurations", "machine_model_list": [ diff --git a/resources/profiles/Blocks.json b/resources/profiles/Blocks.json index a9b2a6687f..cc3fa9abe5 100644 --- a/resources/profiles/Blocks.json +++ b/resources/profiles/Blocks.json @@ -1,6 +1,6 @@ { "name": "Blocks", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Blocks configurations", "machine_model_list": [ diff --git a/resources/profiles/CONSTRUCT3D.json b/resources/profiles/CONSTRUCT3D.json index 44919e328e..1a709ce71b 100644 --- a/resources/profiles/CONSTRUCT3D.json +++ b/resources/profiles/CONSTRUCT3D.json @@ -1,6 +1,6 @@ { "name": "CONSTRUCT3D", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Construct3D configurations", "machine_model_list": [ diff --git a/resources/profiles/Chuanying.json b/resources/profiles/Chuanying.json index dac00380d8..7bb3c31c58 100644 --- a/resources/profiles/Chuanying.json +++ b/resources/profiles/Chuanying.json @@ -1,7 +1,7 @@ { "name": "Chuanying", "url": "", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Chuanying configurations", "machine_model_list": [ diff --git a/resources/profiles/Co Print.json b/resources/profiles/Co Print.json index a21f5940fa..5387372806 100644 --- a/resources/profiles/Co Print.json +++ b/resources/profiles/Co Print.json @@ -1,6 +1,6 @@ { "name": "Co Print", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "CoPrint configurations", "machine_model_list": [ diff --git a/resources/profiles/Comgrow.json b/resources/profiles/Comgrow.json index 0321ab16c9..f21f3b2297 100644 --- a/resources/profiles/Comgrow.json +++ b/resources/profiles/Comgrow.json @@ -1,6 +1,6 @@ { "name": "Comgrow", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Comgrow configurations", "machine_model_list": [ diff --git a/resources/profiles/Creality.json b/resources/profiles/Creality.json index 131f4ce118..04265c3e7d 100644 --- a/resources/profiles/Creality.json +++ b/resources/profiles/Creality.json @@ -1,6 +1,6 @@ { "name": "Creality", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Creality configurations", "machine_model_list": [ diff --git a/resources/profiles/Custom.json b/resources/profiles/Custom.json index eea4025908..42fb713f65 100644 --- a/resources/profiles/Custom.json +++ b/resources/profiles/Custom.json @@ -1,6 +1,6 @@ { "name": "Custom Printer", - "version": "02.02.00.05", + "version": "02.03.00.00", "force_update": "0", "description": "My configurations", "machine_model_list": [ diff --git a/resources/profiles/DeltaMaker.json b/resources/profiles/DeltaMaker.json index 4314c00860..0499da7f02 100755 --- a/resources/profiles/DeltaMaker.json +++ b/resources/profiles/DeltaMaker.json @@ -1,7 +1,7 @@ { "name": "DeltaMaker", "url": "", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "DeltaMaker configurations", "machine_model_list": [ diff --git a/resources/profiles/Dremel.json b/resources/profiles/Dremel.json index 94886d6aa6..cf2837ddd1 100644 --- a/resources/profiles/Dremel.json +++ b/resources/profiles/Dremel.json @@ -1,6 +1,6 @@ { "name": "Dremel", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Dremel configurations", "machine_model_list": [ diff --git a/resources/profiles/Eryone.json b/resources/profiles/Eryone.json index 54df4b7506..9d3c287710 100644 --- a/resources/profiles/Eryone.json +++ b/resources/profiles/Eryone.json @@ -1,6 +1,6 @@ { "name": "Thinker X400", - "version": "01.09.00.02", + "version": "02.03.00.00", "force_update": "0", "description": "Eryone configurations", "machine_model_list": [ diff --git a/resources/profiles/FLSun.json b/resources/profiles/FLSun.json index 91ccd490ae..ad0cc6bab0 100644 --- a/resources/profiles/FLSun.json +++ b/resources/profiles/FLSun.json @@ -1,6 +1,6 @@ { "name": "FLSun", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "FLSun configurations", "machine_model_list": [ diff --git a/resources/profiles/Flashforge.json b/resources/profiles/Flashforge.json index 3407adb643..6c609349d6 100644 --- a/resources/profiles/Flashforge.json +++ b/resources/profiles/Flashforge.json @@ -1,7 +1,7 @@ { "name": "Flashforge", "url": "", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Flashforge configurations", "machine_model_list": [ diff --git a/resources/profiles/FlyingBear.json b/resources/profiles/FlyingBear.json index 75d2ba1cd8..3e848e92e6 100644 --- a/resources/profiles/FlyingBear.json +++ b/resources/profiles/FlyingBear.json @@ -1,6 +1,6 @@ { "name": "FlyingBear", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "1", "description": "FlyingBear configurations", "machine_model_list": [ diff --git a/resources/profiles/Folgertech.json b/resources/profiles/Folgertech.json index f8fae9a3e4..c57dfe5b1b 100644 --- a/resources/profiles/Folgertech.json +++ b/resources/profiles/Folgertech.json @@ -1,6 +1,6 @@ { "name": "Folgertech", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Folgertech configurations", "machine_model_list": [ diff --git a/resources/profiles/Geeetech.json b/resources/profiles/Geeetech.json index cc72766b9a..d8bd096fb0 100644 --- a/resources/profiles/Geeetech.json +++ b/resources/profiles/Geeetech.json @@ -1,6 +1,6 @@ { "name": "Geeetech", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Geeetech configurations", "machine_model_list": [ diff --git a/resources/profiles/Ginger Additive.json b/resources/profiles/Ginger Additive.json index 8171fed522..f54203cf60 100644 --- a/resources/profiles/Ginger Additive.json +++ b/resources/profiles/Ginger Additive.json @@ -1,6 +1,6 @@ { "name": "Ginger Additive", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "1", "description": "Ginger configuration", "machine_model_list": [ diff --git a/resources/profiles/InfiMech.json b/resources/profiles/InfiMech.json index 449ad3a2b0..5be0dbf1c3 100644 --- a/resources/profiles/InfiMech.json +++ b/resources/profiles/InfiMech.json @@ -1,6 +1,6 @@ { "name": "InfiMech", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "1", "description": "InfiMech configurations", "machine_model_list": [ diff --git a/resources/profiles/Kingroon.json b/resources/profiles/Kingroon.json index 6e988ba454..3344b1ba0f 100644 --- a/resources/profiles/Kingroon.json +++ b/resources/profiles/Kingroon.json @@ -1,7 +1,7 @@ { "name": "Kingroon", "url": "https://kingroon.com/", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "1", "description": "Kingroon configuration files", "machine_model_list": [ diff --git a/resources/profiles/MagicMaker.json b/resources/profiles/MagicMaker.json index b0e6470626..e278884e6f 100644 --- a/resources/profiles/MagicMaker.json +++ b/resources/profiles/MagicMaker.json @@ -1,6 +1,6 @@ { "name": "MagicMaker", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "MagicMaker configurations", "machine_model_list": [ diff --git a/resources/profiles/Mellow.json b/resources/profiles/Mellow.json index 5b1eca2022..baf7dd182b 100644 --- a/resources/profiles/Mellow.json +++ b/resources/profiles/Mellow.json @@ -1,6 +1,6 @@ { "name": "Mellow", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Mellow Printer Profiles", "machine_model_list": [ diff --git a/resources/profiles/OrcaArena.json b/resources/profiles/OrcaArena.json index 93809f0c2d..d0e9982f7e 100644 --- a/resources/profiles/OrcaArena.json +++ b/resources/profiles/OrcaArena.json @@ -1,7 +1,7 @@ { "name": "Orca Arena Printer", "url": "", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Orca Arena configuration files", "machine_model_list": [ diff --git a/resources/profiles/OrcaFilamentLibrary.json b/resources/profiles/OrcaFilamentLibrary.json index 5e73b5d28a..7728161796 100644 --- a/resources/profiles/OrcaFilamentLibrary.json +++ b/resources/profiles/OrcaFilamentLibrary.json @@ -1,6 +1,6 @@ { "name": "OrcaFilamentLibrary", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Orca Filament Library", "filament_list": [ diff --git a/resources/profiles/Peopoly.json b/resources/profiles/Peopoly.json index 67a799c6fb..31fbf0b9da 100644 --- a/resources/profiles/Peopoly.json +++ b/resources/profiles/Peopoly.json @@ -1,6 +1,6 @@ { "name": "Peopoly", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Peopoly configurations", "machine_model_list": [ diff --git a/resources/profiles/Positron3D.json b/resources/profiles/Positron3D.json index e07ec2c115..440b7da572 100644 --- a/resources/profiles/Positron3D.json +++ b/resources/profiles/Positron3D.json @@ -1,6 +1,6 @@ { "name": "Positron 3D", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Positron 3D Printer Profile", "machine_model_list": [ diff --git a/resources/profiles/Prusa.json b/resources/profiles/Prusa.json index 75675aedc5..a59fe76ba9 100644 --- a/resources/profiles/Prusa.json +++ b/resources/profiles/Prusa.json @@ -1,6 +1,6 @@ { "name": "Prusa", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Prusa configurations", "machine_model_list": [ diff --git a/resources/profiles/Qidi.json b/resources/profiles/Qidi.json index 345d86a731..da0474af00 100644 --- a/resources/profiles/Qidi.json +++ b/resources/profiles/Qidi.json @@ -1,6 +1,6 @@ { "name": "Qidi", - "version": "02.02.00.05", + "version": "02.03.00.00", "force_update": "0", "description": "Qidi configurations", "machine_model_list": [ diff --git a/resources/profiles/Raise3D.json b/resources/profiles/Raise3D.json index ccf9d5ba4e..be7e3cdfd9 100644 --- a/resources/profiles/Raise3D.json +++ b/resources/profiles/Raise3D.json @@ -1,7 +1,7 @@ { "name": "Raise3D", "url": "", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Raise3D configurations", "machine_model_list": [ diff --git a/resources/profiles/RolohaunDesign.json b/resources/profiles/RolohaunDesign.json index 77858da5f3..d78a6315ba 100644 --- a/resources/profiles/RolohaunDesign.json +++ b/resources/profiles/RolohaunDesign.json @@ -1,6 +1,6 @@ { "name": "RolohaunDesign", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "RolohaunDesign Printer Profiles", "machine_model_list": [ diff --git a/resources/profiles/SecKit.json b/resources/profiles/SecKit.json index 2f86c99114..d96f9d81bb 100644 --- a/resources/profiles/SecKit.json +++ b/resources/profiles/SecKit.json @@ -1,6 +1,6 @@ { "name": "SecKit", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "SecKit configurations", "machine_model_list": [ diff --git a/resources/profiles/Snapmaker.json b/resources/profiles/Snapmaker.json index dfa8452566..cbb0b5aa9e 100644 --- a/resources/profiles/Snapmaker.json +++ b/resources/profiles/Snapmaker.json @@ -1,6 +1,6 @@ { "name": "Snapmaker", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Snapmaker configurations", "machine_model_list": [ diff --git a/resources/profiles/Sovol.json b/resources/profiles/Sovol.json index 76db1e18e0..2eedee8763 100644 --- a/resources/profiles/Sovol.json +++ b/resources/profiles/Sovol.json @@ -1,7 +1,7 @@ { "name": "Sovol", "url": "", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Sovol configurations", "machine_model_list": [ diff --git a/resources/profiles/Tronxy.json b/resources/profiles/Tronxy.json index a6453b78b5..144dd2d795 100644 --- a/resources/profiles/Tronxy.json +++ b/resources/profiles/Tronxy.json @@ -1,6 +1,6 @@ { "name": "Tronxy", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Tronxy configurations", "machine_model_list": [ diff --git a/resources/profiles/TwoTrees.json b/resources/profiles/TwoTrees.json index 7c0a79851a..2ec185c003 100644 --- a/resources/profiles/TwoTrees.json +++ b/resources/profiles/TwoTrees.json @@ -1,6 +1,6 @@ { "name": "TwoTrees", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "1", "description": "TwoTrees configurations", "machine_model_list": [ diff --git a/resources/profiles/UltiMaker.json b/resources/profiles/UltiMaker.json index 4af98eeac4..44be5db64a 100644 --- a/resources/profiles/UltiMaker.json +++ b/resources/profiles/UltiMaker.json @@ -1,7 +1,7 @@ { "name": "UltiMaker", "url": "", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "UltiMaker configurations", "machine_model_list": [ diff --git a/resources/profiles/Vivedino.json b/resources/profiles/Vivedino.json index 287f6189f5..5aca8d4eeb 100644 --- a/resources/profiles/Vivedino.json +++ b/resources/profiles/Vivedino.json @@ -1,6 +1,6 @@ { "name": "Vivedino", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Vivedino configurations", "machine_model_list": [ diff --git a/resources/profiles/Volumic.json b/resources/profiles/Volumic.json index 4d76c6a749..ca8bb0e22a 100644 --- a/resources/profiles/Volumic.json +++ b/resources/profiles/Volumic.json @@ -1,6 +1,6 @@ { "name": "Volumic", - "version": "02.01.01.00", + "version": "02.03.00.00", "force_update": "0", "description": "VOLUMIC configurations", "machine_model_list": [ diff --git a/resources/profiles/Voron.json b/resources/profiles/Voron.json index 77b576e5ba..8736da1e16 100644 --- a/resources/profiles/Voron.json +++ b/resources/profiles/Voron.json @@ -1,6 +1,6 @@ { "name": "Voron", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Voron configurations", "machine_model_list": [ diff --git a/resources/profiles/Voxelab.json b/resources/profiles/Voxelab.json index 5ab1c1dfb1..d42681800a 100644 --- a/resources/profiles/Voxelab.json +++ b/resources/profiles/Voxelab.json @@ -1,7 +1,7 @@ { "name": "Voxelab", "url": "", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Voxelab configurations", "machine_model_list": [ diff --git a/resources/profiles/Vzbot.json b/resources/profiles/Vzbot.json index 6f46d01e32..6c79ec7e67 100644 --- a/resources/profiles/Vzbot.json +++ b/resources/profiles/Vzbot.json @@ -1,6 +1,6 @@ { "name": "Vzbot", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Vzbot configurations", "machine_model_list": [ diff --git a/resources/profiles/Wanhao.json b/resources/profiles/Wanhao.json index 50e28dc13e..f253a8e73e 100644 --- a/resources/profiles/Wanhao.json +++ b/resources/profiles/Wanhao.json @@ -1,6 +1,6 @@ { "name": "Wanhao", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Wanhao configurations", "machine_model_list": [ From b82d13a5a96199328045a7606f2292fccb91f009 Mon Sep 17 00:00:00 2001 From: Joseph Palazzolo Date: Thu, 20 Feb 2025 21:50:17 -0700 Subject: [PATCH 092/129] Fix OCCT and OpenCV patching during build (#8465) * Fix OCCT and OpenCV patching during build The inclusion of the `--directory` flag here isn't necessary because of how `PATCH_COMMAND` applies patches. In fact this causes issues when trying to build from an archive, `--directory` seems to imply `--index` and thus this patch only succeeds if you're inside an initialized git repo. If you simply use the archive without a git repo the build fails at the patch step. * Alter patch command based on git repo status `git apply` has different behavior when inside a git repo vs not. If we're in a git repo we need to fully quality the path for these patches, otherwise we can omit the directory flag. --------- Co-authored-by: Joe Palazzolo --- deps/CMakeLists.txt | 14 ++++++++++++++ deps/OCCT/OCCT.cmake | 8 ++++---- deps/OpenCV/OpenCV.cmake | 6 +++++- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 77cae3382b..0548e405e8 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -340,6 +340,20 @@ if(NOT FREETYPE_FOUND) set(FREETYPE_PKG "dep_FREETYPE") endif() +execute_process( + COMMAND ${GIT_EXECUTABLE} rev-parse --is-inside-work-tree + RESULT_VARIABLE REV_PARSE_RESULT + OUTPUT_VARIABLE REV_PARSE_OUTPUT + OUTPUT_STRIP_TRAILING_WHITESPACE +) + +# Will output "true" and have a 0 return code if within a git repo +if((REV_PARSE_RESULT EQUAL 0) AND (REV_PARSE_OUTPUT STREQUAL "true")) + set(IN_GIT_REPO TRUE) + # Find relative path from root to source used for adjusting patch command + file(RELATIVE_PATH BINARY_DIR_REL ${CMAKE_SOURCE_DIR}/.. ${CMAKE_BINARY_DIR}) +endif () + include(OCCT/OCCT.cmake) include(OpenCV/OpenCV.cmake) diff --git a/deps/OCCT/OCCT.cmake b/deps/OCCT/OCCT.cmake index 096da413d5..98c6efc98d 100644 --- a/deps/OCCT/OCCT.cmake +++ b/deps/OCCT/OCCT.cmake @@ -4,15 +4,15 @@ else() set(library_build_type "Static") endif() - -# get relative path of CMAKE_BINARY_DIR against root source directory -file(RELATIVE_PATH BINARY_DIR_REL ${CMAKE_SOURCE_DIR}/.. ${CMAKE_BINARY_DIR}) +if (IN_GIT_REPO) + set(OCCT_DIRECTORY_FLAG --directory ${BINARY_DIR_REL}/dep_OCCT-prefix/src/dep_OCCT) +endif () orcaslicer_add_cmake_project(OCCT URL https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_6_0.zip URL_HASH SHA256=28334f0e98f1b1629799783e9b4d21e05349d89e695809d7e6dfa45ea43e1dbc #PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch - PATCH_COMMAND git apply --directory ${BINARY_DIR_REL}/dep_OCCT-prefix/src/dep_OCCT --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch + PATCH_COMMAND git apply ${OCCT_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch #DEPENDS dep_Boost DEPENDS ${FREETYPE_PKG} CMAKE_ARGS diff --git a/deps/OpenCV/OpenCV.cmake b/deps/OpenCV/OpenCV.cmake index 6d62b018af..23cbafa2a6 100644 --- a/deps/OpenCV/OpenCV.cmake +++ b/deps/OpenCV/OpenCV.cmake @@ -4,10 +4,14 @@ else () set(_use_IPP "-DWITH_IPP=OFF") endif () +if (IN_GIT_REPO) + set(OpenCV_DIRECTORY_FLAG --directory ${BINARY_DIR_REL}/dep_OpenCV-prefix/src/dep_OpenCV) +endif () + orcaslicer_add_cmake_project(OpenCV URL https://github.com/opencv/opencv/archive/refs/tags/4.6.0.tar.gz URL_HASH SHA256=1ec1cba65f9f20fe5a41fda1586e01c70ea0c9a6d7b67c9e13edf0cfe2239277 - PATCH_COMMAND git apply --directory ${BINARY_DIR_REL}/dep_OpenCV-prefix/src/dep_OpenCV --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-vs2022.patch + PATCH_COMMAND git apply ${OpenCV_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-vs2022.patch CMAKE_ARGS -DBUILD_SHARED_LIBS=0 -DBUILD_PERE_TESTS=OFF From 873a6f5c6ec831527259bc3a5318d56f18d0f297 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 21 Feb 2025 18:01:34 +0800 Subject: [PATCH 093/129] Revert "Avoid collisions when moving Z down" (#8478) Revert "Avoid collisions when moving Z down (#7208)" This reverts commit cf6d9c77ff5013276962a4eae47b1ce1431d067a. --- src/libslic3r/GCodeWriter.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/libslic3r/GCodeWriter.cpp b/src/libslic3r/GCodeWriter.cpp index aaef83b7a5..d17527d115 100644 --- a/src/libslic3r/GCodeWriter.cpp +++ b/src/libslic3r/GCodeWriter.cpp @@ -447,12 +447,6 @@ std::string GCodeWriter::travel_to_xyz(const Vec3d &point, const std::string &co // this function, fix it first. //std::terminate(); - // Orca: If moving down during below the current layer nominal Z, force XY->Z moves to avoid collisions with previous extrusions - double nominal_z = m_pos(2) - m_lifted; - if (point(2) < nominal_z - EPSILON) { // EPSILON to avoid false matches due to rounding errors - this->set_current_position_clear(false); // This forces XYZ moves to be split into XY->Z - } - /* If target Z is lower than current Z but higher than nominal Z we don't perform the Z move but we only move in the XY plane and adjust the nominal Z by reducing the lift amount that will be From d41dd784efc42b20a9acefbcbe976dc2b6bfe9cf Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 21 Feb 2025 22:32:01 +0800 Subject: [PATCH 094/129] update Chinese translation --- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 34 ++++++++++++--------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 27051c28cb..d6f6c90e54 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -11063,7 +11063,7 @@ msgstr "" msgid "" "The angle of the first set of 2D lattice elements in the Z direction. Zero " "is vertical." -msgstr "" +msgstr "第一组二维晶格单元在Z方向的角度。零表示垂直。" msgid "Lattice angle 2" msgstr "" @@ -11071,7 +11071,7 @@ msgstr "" msgid "" "The angle of the second set of 2D lattice elements in the Z direction. Zero " "is vertical." -msgstr "" +msgstr "第二组二维晶格单元在Z方向的角度。零表示垂直。" msgid "Sparse infill anchor length" msgstr "稀疏填充锚线长度" @@ -11326,10 +11326,10 @@ msgid "Apply fuzzy skin to first layer" msgstr "绒毛表面应用至首层" msgid "Whether to apply fuzzy skin on the first layer" -msgstr "" +msgstr "是否在第一层应用绒毛效果" msgid "Fuzzy skin noise type" -msgstr "" +msgstr "绒毛噪声类型" msgid "" "Noise type to use for fuzzy skin generation.\n" @@ -11341,45 +11341,51 @@ msgid "" "Voronoi: Divides the surface into voronoi cells, and displaces each one by a " "random amount. Creates a patchwork texture." msgstr "" +"用于生成绒毛效果的噪声类型。\n" +"经典: 经典的均匀随机噪声。\n" +"柏林噪声: 能产生更均匀纹理的柏林噪声。\n" +"云状噪声: 类似柏林噪声,但更聚集。\n" +"脊状多重分形: 具有锋利锯齿特性的脊状噪声,呈现大理石般纹理。\n" +"维诺图: 将表面划分为维诺单元,每个单元依随机量位移,形成拼贴纹理。" msgid "Classic" msgstr "经典" msgid "Perlin" -msgstr "" +msgstr "柏林噪声" msgid "Billow" -msgstr "" +msgstr "云状噪声" msgid "Ridged Multifractal" -msgstr "" +msgstr "脊状多重分形" msgid "Voronoi" -msgstr "" +msgstr "维诺图" msgid "Fuzzy skin feature size" -msgstr "" +msgstr "绒毛表面特征尺寸" msgid "" "The base size of the coherent noise features, in mm. Higher values will " "result in larger features." -msgstr "" +msgstr "相干噪声特征的基础尺寸(单位:毫米)。较高的数值会产生更大的特征。" msgid "Fuzzy Skin Noise Octaves" -msgstr "" +msgstr "绒毛噪声倍频" msgid "" "The number of octaves of coherent noise to use. Higher values increase the " "detail of the noise, but also increase computation time." -msgstr "" +msgstr "使用的相干噪声倍频数。较高的数值会增加噪声细节,但也会增加计算时间。" msgid "Fuzzy skin noise persistence" -msgstr "" +msgstr "绒毛噪声持续性" msgid "" "The decay rate for higher octaves of the coherent noise. Lower values will " "result in smoother noise." -msgstr "" +msgstr "相干噪声高倍频的衰减速率。较低的数值会产生更平滑的噪声。" msgid "Filter out tiny gaps" msgstr "忽略微小间隙" From 2bba98d180edb0d75d103e3f0356b3dc46cae1bb Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 21 Feb 2025 22:32:29 +0800 Subject: [PATCH 095/129] update fuzzy skin default parameters --- src/libslic3r/PrintConfig.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index e8e7096a07..3238ae2fd8 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2732,7 +2732,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 1; def->mode = comSimple; - def->set_default_value(new ConfigOptionFloat(0.3)); + def->set_default_value(new ConfigOptionFloat(0.2)); def = this->add("fuzzy_skin_point_distance", coFloat); def->label = L("Fuzzy skin point distance"); @@ -2742,7 +2742,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 5; def->mode = comSimple; - def->set_default_value(new ConfigOptionFloat(0.8)); + def->set_default_value(new ConfigOptionFloat(0.3)); def = this->add("fuzzy_skin_first_layer", coBool); def->label = L("Apply fuzzy skin to first layer"); From f8c0cdfb117f715f93cc7c52e48bcee6d425e510 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 22 Feb 2025 11:23:58 +0800 Subject: [PATCH 096/129] Fixed an issue that some Flashforge filament profiles don't' have compatible_printers defined which cause filament selection dialog didn't filter properly It also deletes some zombie profiles as they didn't have any custom setting values --- resources/profiles/Flashforge.json | 2576 +++++++++-------- ...hforge ABS Basic @FF AD5M 0.25 nozzle.json | 10 - .../Flashforge/Flashforge ABS Basic @G3U.json | 11 - .../Flashforge/Flashforge ABS Basic.json | 11 - ...hforge ASA Basic @FF AD5M 0.25 nozzle.json | 10 - .../Flashforge/Flashforge ASA Basic @G3U.json | 11 - .../Flashforge/Flashforge ASA Basic.json | 11 - .../Flashforge/Flashforge ASA-CF.json | 71 +- .../Flashforge/Flashforge HIPS @G3U.json | 11 - ...ashforge HS PETG @FF AD5M 0.25 nozzle.json | 10 - .../Flashforge/Flashforge HS PETG @G3U.json | 11 - .../Flashforge/Flashforge HS PETG.json | 10 - .../Flashforge/Flashforge HS PLA @G3U.json | 11 - .../Flashforge/Flashforge HS PLA.json | 10 - .../Flashforge/Flashforge PA12-CF.json | 75 +- .../Flashforge/Flashforge PA6-CF.json | 71 +- .../Flashforge/Flashforge PA66-CF.json | 71 +- .../Flashforge/Flashforge PET-CF.json | 63 +- ...forge PETG Basic @FF AD5M 0.25 nozzle.json | 10 - .../Flashforge/Flashforge PETG Basic.json | 43 +- ...shforge PETG Pro @FF AD5M 0.25 nozzle.json | 10 - .../Flashforge/Flashforge PETG Pro @G3U.json | 11 - .../Flashforge/Flashforge PETG Pro.json | 43 +- ...PETG Transparent @FF AD5M 0.25 nozzle.json | 10 - .../Flashforge PETG Transparent @G3U.json | 11 - .../Flashforge PETG Transparent.json | 43 +- .../Flashforge/Flashforge PETG-CF @G3U.json | 11 - .../Flashforge/Flashforge PETG-CF.json | 10 - ...hforge PLA Basic @FF AD5M 0.25 nozzle.json | 10 - .../Flashforge/Flashforge PLA Basic @G3U.json | 12 - .../Flashforge/Flashforge PLA Basic.json | 12 - ...PLA Color Change @FF AD5M 0.25 nozzle.json | 10 - .../Flashforge PLA Color Change @G3U.json | 11 - .../Flashforge PLA Color Change.json | 10 - ...forge PLA Galaxy @FF AD5M 0.25 nozzle.json | 10 - .../Flashforge PLA Galaxy @G3U.json | 11 - .../Flashforge/Flashforge PLA Galaxy.json | 10 - ...rge PLA Luminous @FF AD5M 0.25 nozzle.json | 10 - .../Flashforge PLA Luminous @G3U.json | 11 - .../Flashforge/Flashforge PLA Luminous.json | 10 - ...hforge PLA Matte @FF AD5M 0.25 nozzle.json | 10 - .../Flashforge/Flashforge PLA Matte @G3U.json | 11 - .../Flashforge/Flashforge PLA Matte.json | 11 - ...hforge PLA Metal @FF AD5M 0.25 nozzle.json | 10 - .../Flashforge/Flashforge PLA Metal @G3U.json | 11 - .../Flashforge/Flashforge PLA Metal.json | 10 - ...ashforge PLA Pro @FF AD5M 0.25 nozzle.json | 10 - .../Flashforge/Flashforge PLA Pro @G3U.json | 11 - .../Flashforge/Flashforge PLA Pro.json | 10 - .../Flashforge/Flashforge PLA Silk @G3U.json | 11 - ...shforge PLA Silk @FF AD5M 0.25 nozzle.json | 10 - .../Flashforge/Flashforge PLA Silk.json | 10 - ...orge PLA Sparkle @FF AD5M 0.25 nozzle.json | 10 - .../Flashforge PLA Sparkle @G3U.json | 11 - .../Flashforge/Flashforge PLA Sparkle.json | 10 - .../Flashforge/Flashforge PLA-CF @G3U.json | 11 - .../Flashforge/Flashforge PLA-CF.json | 10 - .../Flashforge/Flashforge PPA-CF.json | 71 +- .../Flashforge/Flashforge PPA-GF.json | 79 +- .../Flashforge/Flashforge PPS-CF.json | 71 +- .../Flashforge/Flashforge PVA @G3U.json | 11 - .../Flashforge/Flashforge TPU 95A.json | 10 - 62 files changed, 1991 insertions(+), 1811 deletions(-) delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @G3U.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @G3U.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @G3U.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5M 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @G3U.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @G3U.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @G3U.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @G3U.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @G3U.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @G3U.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @G3U.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @G3U.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @G3U.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @G3U.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @G3U.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @G3U.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @G3U.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @G3U.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @G3U.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PVA @G3U.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A.json diff --git a/resources/profiles/Flashforge.json b/resources/profiles/Flashforge.json index 6c609349d6..af094f8661 100644 --- a/resources/profiles/Flashforge.json +++ b/resources/profiles/Flashforge.json @@ -1,1131 +1,1447 @@ { - "name": "Flashforge", - "url": "", - "version": "02.03.00.00", - "force_update": "0", - "description": "Flashforge configurations", - "machine_model_list": [ - { - "name": "Flashforge Adventurer 5M", - "sub_path": "machine/Flashforge Adventurer 5M.json" - }, - { - "name": "Flashforge Adventurer 5M Pro", - "sub_path": "machine/Flashforge Adventurer 5M Pro.json" - }, - { - "name": "Flashforge AD5X", - "sub_path":"machine/Flashforge AD5X.json" - }, - { - "name": "Flashforge Adventurer 3 Series", - "sub_path": "machine/Flashforge Adventurer 3 Series.json" - }, - { - "name": "Flashforge Guider 3 Ultra", - "sub_path": "machine/Flashforge Guider 3 Ultra.json" - }, - { - "name": "Flashforge Guider 2s", - "sub_path": "machine/Flashforge Guider 2s.json" - } - ], - "process_list": [ - { - "name": "fdm_process_common", - "sub_path": "process/fdm_process_common.json" - }, - { - "name": "fdm_process_flashforge_common", - "sub_path": "process/fdm_process_flashforge_common.json" - }, - { - "name": "fdm_process_flashforge_0.20", - "sub_path": "process/fdm_process_flashforge_0.20.json" - }, - { - "name": "fdm_process_flashforge_0.30", - "sub_path": "process/fdm_process_flashforge_0.30.json" - }, - { - "name": "fdm_process_flashforge_0.40", - "sub_path": "process/fdm_process_flashforge_0.40.json" - }, - { - "name": "0.20mm Standard @Flashforge AD5M 0.4 Nozzle", - "sub_path": "process/0.20mm Standard @Flashforge AD5M 0.4 Nozzle.json" - }, - { - "name": "0.30mm Standard @Flashforge AD5M 0.6 Nozzle", - "sub_path": "process/0.30mm Standard @Flashforge AD5M 0.6 Nozzle.json" - }, - { - "name": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", - "sub_path": "process/0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle.json" - }, - { - "name": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", - "sub_path": "process/0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle.json" - }, - { - "name": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "sub_path": "process/0.12mm Standard @Flashforge AD5M 0.25 Nozzle.json" - }, - { - "name": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "sub_path": "process/0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" - }, - { - "name": "0.40mm Standard @Flashforge AD5M 0.8 Nozzle", - "sub_path": "process/0.40mm Standard @Flashforge AD5M 0.8 Nozzle.json" - }, - { - "name": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", - "sub_path": "process/0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle.json" - }, - { - "name": "0.10mm Standard @Flashforge AD5M 0.25 Nozzle", - "sub_path": "process/0.10mm Standard @Flashforge AD5M 0.25 Nozzle.json" - }, - { - "name": "0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "sub_path": "process/0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" - }, - { - "name": "0.06mm Standard @Flashforge AD5M 0.25 Nozzle", - "sub_path": "process/0.06mm Standard @Flashforge AD5M 0.25 Nozzle.json" - }, - { - "name": "0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "sub_path": "process/0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" - }, - { - "name": "0.08mm Standard @Flashforge AD5M 0.25 Nozzle", - "sub_path": "process/0.08mm Standard @Flashforge AD5M 0.25 Nozzle.json" - }, - { - "name": "0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "sub_path": "process/0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" - }, - { - "name": "0.12mm Fine @Flashforge AD5M 0.4 Nozzle", - "sub_path": "process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json" - }, - { - "name": "0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle", - "sub_path": "process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json" - }, - { - "name": "0.14mm Standard @Flashforge AD5M 0.25 Nozzle", - "sub_path": "process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json" - }, - { - "name": "0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "sub_path": "process/0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" - }, - { - "name": "0.18mm Fine @Flashforge AD5M 0.6 Nozzle", - "sub_path": "process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json" - }, - { - "name": "0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle", - "sub_path": "process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json" - }, - { - "name": "0.24mm Draft @Flashforge AD5M 0.4 Nozzle", - "sub_path": "process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json" - }, - { - "name": "0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle", - "sub_path": "process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json" - }, - { - "name": "0.24mm Fine @Flashforge AD5M 0.8 Nozzle", - "sub_path": "process/0.24mm Fine @Flashforge AD5M 0.8 Nozzle.json" - }, - { - "name": "0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle", - "sub_path": "process/0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle.json" - }, - { - "name": "0.42mm Draft @Flashforge AD5M 0.6 Nozzle", - "sub_path": "process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json" - }, - { - "name": "0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle", - "sub_path": "process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json" - }, - { - "name": "0.56mm Draft @Flashforge AD5M 0.8 Nozzle", - "sub_path": "process/0.56mm Draft @Flashforge AD5M 0.8 Nozzle.json" - }, - { - "name": "0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle", - "sub_path": "process/0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle.json" - }, - { - "name": "0.20mm Standard @Flashforge AD3 0.4 Nozzle", - "sub_path": "process/0.20mm Standard @Flashforge AD3 0.4 Nozzle.json" - }, - { - "name": "0.30mm Fast @Flashforge AD3 0.4 Nozzle", - "sub_path": "process/0.30mm Fast @Flashforge AD3 0.4 Nozzle.json" - }, - { - "name": "0.30mm Standard @Flashforge AD3 0.6 Nozzle", - "sub_path": "process/0.30mm Standard @Flashforge AD3 0.6 Nozzle.json" - }, - { - "name": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", - "sub_path": "process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json" - }, - { - "name": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "sub_path": "process/0.30mm Standard @Flashforge G3U 0.6 Nozzle.json" - }, - { - "name": "0.40mm Standard @Flashforge G3U 0.8 Nozzle", - "sub_path": "process/0.40mm Standard @Flashforge G3U 0.8 Nozzle.json" - }, - { - "name": "0.12mm Fine @Flashforge G3U 0.4 Nozzle", - "sub_path": "process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json" - }, - { - "name": "0.18mm Standard @Flashforge G3U 0.6 Nozzle", - "sub_path": "process/0.18mm Standard @Flashforge G3U 0.6 Nozzle.json" - }, - { - "name": "0.24mm Draft @Flashforge G3U 0.4 Nozzle", - "sub_path": "process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json" - }, - { - "name": "0.42mm Standard @Flashforge G3U 0.6 Nozzle", - "sub_path": "process/0.42mm Standard @Flashforge G3U 0.6 Nozzle.json" - }, - { - "name": "0.30mm Draft @Flashforge Guider 2s 0.4 nozzle", - "sub_path": "process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Flashforge Guider 2s 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle", - "sub_path": "process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json" - }, - { - "name": "0.12mm Detail @Flashforge Guider 2s 0.4 nozzle", - "sub_path": "process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle", - "sub_path":"process/0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle.json" - }, - { - "name": "0.16mm Standard @FF AD5X", - "sub_path":"process/0.16mm Standard @FF AD5X.json" - }, - { - "name": "0.20mm Standard @FF AD5X", - "sub_path":"process/0.20mm Standard @FF AD5X.json" - }, - { - "name": "0.24mm Draft @FF AD5X", - "sub_path":"process/0.24mm Draft @FF AD5X.json" - }, - { - "name": "0.10mm Standard @FF AD5X 0.25 nozzle", - "sub_path":"process/0.10mm Standard @FF AD5X 0.25 nozzle.json" - }, - { - "name": "0.12mm Standard @FF AD5X 0.25 nozzle", - "sub_path":"process/0.12mm Standard @FF AD5X 0.25 nozzle.json" - }, - { - "name": "0.14mm Standard @FF AD5X 0.25 nozzle", - "sub_path":"process/0.14mm Standard @FF AD5X 0.25 nozzle.json" - }, - { - "name": "0.18mm Fine @FF AD5X 0.6 nozzle", - "sub_path":"process/0.18mm Fine @FF AD5X 0.6 nozzle.json" - }, - { - "name": "0.30mm Standard @FF AD5X 0.6 nozzle", - "sub_path":"process/0.30mm Standard @FF AD5X 0.6 nozzle.json" - }, - { - "name": "0.42mm Draft @FF AD5X 0.6 nozzle", - "sub_path":"process/0.42mm Draft @FF AD5X 0.6 nozzle.json" - }, - { - "name": "0.24mm Fine @FF AD5X 0.8 nozzle", - "sub_path":"process/0.24mm Fine @FF AD5X 0.8 nozzle.json" - }, - { - "name": "0.40mm Standard @FF AD5X 0.8 nozzle", - "sub_path":"process/0.40mm Standard @FF AD5X 0.8 nozzle.json" - }, - { - "name": "0.56mm Draft @FF AD5X 0.8 nozzle", - "sub_path":"process/0.56mm Draft @FF AD5X 0.8 nozzle.json" - } - ], - "filament_list": [ - { - "name": "fdm_filament_common", - "sub_path": "filament/fdm_filament_common.json" - }, - { - "name": "fdm_filament_abs", - "sub_path": "filament/fdm_filament_abs.json" - }, - { - "name": "fdm_filament_pet", - "sub_path": "filament/fdm_filament_pet.json" - }, - { - "name": "fdm_filament_pla", - "sub_path": "filament/fdm_filament_pla.json" - }, - { - "name": "fdm_filament_asa", - "sub_path": "filament/fdm_filament_asa.json" - }, - { - "name": "fdm_filament_tpu", - "sub_path": "filament/fdm_filament_tpu.json" - }, - { - "name": "Flashforge Generic ABS", - "sub_path": "filament/Flashforge Generic ABS.json" - }, - { - "name": "Flashforge Generic ABS @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge Generic ABS @FF AD5M 0.25 Nozzle.json" - }, - { - "name": "Flashforge Generic PETG", - "sub_path": "filament/Flashforge Generic PETG.json" - }, - { - "name": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge Generic PETG @FF AD5M 0.25 Nozzle.json" - }, - { - "name": "Flashforge Generic PLA", - "sub_path": "filament/Flashforge Generic PLA.json" - }, - { - "name": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge Generic PLA @FF AD5M 0.25 Nozzle.json" - }, - { - "name": "Flashforge Generic PLA-CF10", - "sub_path": "filament/Flashforge Generic PLA-CF10.json" - }, - { - "name": "Flashforge Generic PLA-Silk", - "sub_path": "filament/Flashforge Generic PLA-Silk.json" - }, - { - "name": "Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle.json" - }, - { - "name": "Flashforge Generic HS PLA", - "sub_path": "filament/Flashforge Generic HS PLA.json" - }, - { - "name": "Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle.json" - }, - { - "name": "Flashforge Generic ASA", - "sub_path": "filament/Flashforge Generic ASA.json" - }, - { - "name": "Flashforge Generic ASA @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge Generic ASA @FF AD5M 0.25 Nozzle.json" - }, - { - "name": "Flashforge Generic PETG-CF10", - "sub_path": "filament/Flashforge Generic PETG-CF10.json" - }, - { - "name": "Flashforge Generic TPU", - "sub_path": "filament/Flashforge Generic TPU.json" - }, - { - "name": "Flashforge ABS", - "sub_path": "filament/Flashforge/Flashforge ABS @FF AD3.json" - }, - { - "name": "Flashforge PETG", - "sub_path": "filament/Flashforge/Flashforge PETG @FF AD3.json" - }, - { - "name": "Flashforge PLA", - "sub_path": "filament/Flashforge/Flashforge PLA @FF AD3.json" - }, - { - "name": "Polymaker Generic S1", - "sub_path": "filament/Polymaker/Polymaker Generic S1.json" - }, - { - "name": "Polymaker Generic CoPA", - "sub_path": "filament/Polymaker/Polymaker Generic CoPA.json" - }, - { - "name": "FusRock Generic S-PAHT", - "sub_path": "filament/FusRock/FusRock Generic S-PAHT.json" - }, - { - "name": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", - "sub_path": "filament/FusRock/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json" - }, - { - "name": "FusRock Generic S-Multi", - "sub_path": "filament/FusRock/FusRock Generic S-Multi.json" - }, - { - "name": "FusRock Generic S-Multi @G3U 0.6 Nozzle", - "sub_path": "filament/FusRock/FusRock Generic S-Multi @G3U 0.6 Nozzle.json" - }, - { - "name": "FusRock Generic NexPA-CF25", - "sub_path": "filament/FusRock/FusRock Generic NexPA-CF25.json" - }, - { - "name": "FusRock Generic PAHT-CF", - "sub_path": "filament/FusRock/FusRock Generic PAHT-CF.json" - }, - { - "name": "FusRock Generic PAHT-GF", - "sub_path": "filament/FusRock/FusRock Generic PAHT-GF.json" - }, - { - "name": "FusRock Generic PAHT-CF @G3U 0.6 Nozzle", - "sub_path": "filament/FusRock/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json" - }, - { - "name": "FusRock Generic PET-CF", - "sub_path": "filament/FusRock/FusRock Generic PET-CF.json" - }, - { - "name": "FusRock Generic PET-GF", - "sub_path": "filament/FusRock/FusRock Generic PET-GF.json" - }, - { - "name": "FusRock Generic PET-CF @G3U 0.6 Nozzle", - "sub_path": "filament/FusRock/FusRock Generic PET-CF @G3U 0.6 Nozzle.json" - }, - { - "name": "Flashforge Generic ABS @G3U", - "sub_path": "filament/Flashforge Generic ABS @G3U.json" - }, - { - "name": "Flashforge Generic ABS @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic ABS @G3U 0.6 Nozzle.json" - }, - { - "name": "Flashforge Generic ASA @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic ASA @G3U 0.6 Nozzle.json" - }, - { - "name": "Flashforge Generic ASA @G3U", - "sub_path": "filament/Flashforge Generic ASA @G3U.json" - }, - { - "name": "Flashforge Generic PLA @G3U", - "sub_path": "filament/Flashforge Generic PLA @G3U.json" - }, - { - "name": "Flashforge Generic PLA @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic PLA @G3U 0.6 Nozzle.json" - }, - { - "name": "Flashforge Generic PLA @G3U 0.8 Nozzle", - "sub_path": "filament/Flashforge Generic PLA @G3U 0.8 Nozzle.json" - }, - { - "name": "Flashforge Generic PLA-CF @G3U", - "sub_path": "filament/Flashforge Generic PLA-CF @G3U.json" - }, - { - "name": "Flashforge Generic PLA-CF @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic PLA-CF @G3U 0.6 Nozzle.json" - }, - { - "name": "Flashforge Generic PLA-CF @G3U 0.8 Nozzle", - "sub_path": "filament/Flashforge Generic PLA-CF @G3U 0.8 Nozzle.json" - }, - { - "name": "Flashforge Generic PETG @G3U", - "sub_path": "filament/Flashforge Generic PETG @G3U.json" - }, - { - "name": "Flashforge Generic PETG @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic PETG @G3U 0.6 Nozzle.json" - }, - { - "name": "Flashforge Generic PETG @G3U 0.8 Nozzle", - "sub_path": "filament/Flashforge Generic PETG @G3U 0.8 Nozzle.json" - }, - { - "name": "Flashforge Generic PETG-CF @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic PETG-CF @G3U 0.6 Nozzle.json" - }, - { - "name": "Flashforge Generic PETG-CF @G3U 0.8 Nozzle", - "sub_path": "filament/Flashforge Generic PETG-CF @G3U 0.8 Nozzle.json" - }, - { - "name": "Flashforge Generic PETG-CF @G3U", - "sub_path": "filament/Flashforge Generic PETG-CF @G3U.json" - }, - { - "name": "Flashforge Generic HIPS", - "sub_path": "filament/Flashforge Generic HIPS.json" - }, - { - "name": "Flashforge Generic HIPS @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic HIPS @G3U 0.6 Nozzle.json" - }, - { - "name": "Flashforge Generic PVA", - "sub_path": "filament/Flashforge Generic PVA.json" - }, - { - "name": "Flashforge HS PETG", - "sub_path":"filament/Flashforge/Flashforge HS PETG.json" - }, - { - "name": "Flashforge HS PLA", - "sub_path":"filament/Flashforge/Flashforge HS PLA.json" - }, - { - "name": "Flashforge PETG Basic", - "sub_path":"filament/Flashforge/Flashforge PETG Basic.json" - }, - { - "name": "Flashforge PETG Pro", - "sub_path":"filament/Flashforge/Flashforge PETG Pro.json" - }, - { - "name": "Flashforge PETG Transparent", - "sub_path":"filament/Flashforge/Flashforge PETG Transparent.json" - }, - { - "name": "Flashforge PETG-CF", - "sub_path":"filament/Flashforge/Flashforge PETG-CF.json" - }, - { - "name": "Flashforge PLA Basic", - "sub_path":"filament/Flashforge/Flashforge PLA Basic.json" - }, - { - "name": "Flashforge PLA Color Change", - "sub_path":"filament/Flashforge/Flashforge PLA Color Change.json" - }, - { - "name": "Flashforge PLA Galaxy", - "sub_path":"filament/Flashforge/Flashforge PLA Galaxy.json" - }, - { - "name": "Flashforge PLA Luminous", - "sub_path":"filament/Flashforge/Flashforge PLA Luminous.json" - }, - { - "name": "Flashforge PLA Matte", - "sub_path":"filament/Flashforge/Flashforge PLA Matte.json" - }, - { - "name": "Flashforge PLA Metal", - "sub_path":"filament/Flashforge/Flashforge PLA Metal.json" - }, - { - "name": "Flashforge PLA Pro", - "sub_path":"filament/Flashforge/Flashforge PLA Pro.json" - }, - { - "name": "Flashforge PLA Silk", - "sub_path":"filament/Flashforge/Flashforge PLA Silk.json" - }, - { - "name": "Flashforge PLA Sparkle", - "sub_path":"filament/Flashforge/Flashforge PLA Sparkle.json" - }, - { - "name": "Flashforge PLA-CF", - "sub_path":"filament/Flashforge/Flashforge PLA-CF.json" - }, - { - "name": "Flashforge TPU 95A", - "sub_path":"filament/Flashforge/Flashforge TPU 95A.json" - }, - { - "name": "Flashforge ABS Basic @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge ABS Basic", - "sub_path":"filament/Flashforge/Flashforge ABS Basic.json" - }, - { - "name": "Flashforge ASA Basic @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge ASA Basic", - "sub_path":"filament/Flashforge/Flashforge ASA Basic.json" - }, - { - "name": "Flashforge HS PETG @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge HS PETG @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge PETG Basic @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge PETG Pro @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge PETG Transparent @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Basic @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Color Change @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Galaxy @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Luminous @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Matte @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Metal @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Pro @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Silk @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Sparkle @FF AD5M 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge ASA-CF", - "sub_path":"filament/Flashforge/Flashforge ASA-CF.json" - }, - { - "name": "Flashforge PA6-CF", - "sub_path":"filament/Flashforge/Flashforge PA6-CF.json" - }, - { - "name": "Flashforge PA12-CF", - "sub_path":"filament/Flashforge/Flashforge PA12-CF.json" - }, - { - "name": "Flashforge PA66-CF", - "sub_path":"filament/Flashforge/Flashforge PA66-CF.json" - }, - { - "name": "Flashforge PET-CF", - "sub_path":"filament/Flashforge/Flashforge PET-CF.json" - }, - { - "name": "Flashforge PPA-CF", - "sub_path":"filament/Flashforge/Flashforge PPA-CF.json" - }, - { - "name": "Flashforge PPA-GF", - "sub_path":"filament/Flashforge/Flashforge PPA-GF.json" - }, - { - "name": "Flashforge PPS-CF", - "sub_path":"filament/Flashforge/Flashforge PPS-CF.json" - }, - { - "name": "Flashforge ABS Basic @G3U", - "sub_path":"filament/Flashforge/Flashforge ABS Basic @G3U.json" - }, - { - "name": "Flashforge ASA Basic @G3U", - "sub_path":"filament/Flashforge/Flashforge ASA Basic @G3U.json" - }, - { - "name": "Flashforge HIPS @G3U", - "sub_path":"filament/Flashforge/Flashforge HIPS @G3U.json" - }, - { - "name": "Flashforge HS PETG @G3U", - "sub_path":"filament/Flashforge/Flashforge HS PETG @G3U.json" - }, - { - "name": "Flashforge HS PLA @G3U", - "sub_path":"filament/Flashforge/Flashforge HS PLA @G3U.json" - }, - { - "name": "Flashforge PETG Basic @G3U", - "sub_path":"filament/Flashforge/Flashforge PETG Basic @G3U.json" - }, - { - "name": "Flashforge PETG Pro @G3U", - "sub_path":"filament/Flashforge/Flashforge PETG Pro @G3U.json" - }, - { - "name": "Flashforge PETG Transparent @G3U", - "sub_path":"filament/Flashforge/Flashforge PETG Transparent @G3U.json" - }, - { - "name": "Flashforge PETG-CF @G3U", - "sub_path":"filament/Flashforge/Flashforge PETG-CF @G3U.json" - }, - { - "name": "Flashforge PLA Basic @G3U", - "sub_path":"filament/Flashforge/Flashforge PLA Basic @G3U.json" - }, - { - "name": "Flashforge PLA Color Change @G3U", - "sub_path":"filament/Flashforge/Flashforge PLA Color Change @G3U.json" - }, - { - "name": "Flashforge PLA Galaxy @G3U", - "sub_path":"filament/Flashforge/Flashforge PLA Galaxy @G3U.json" - }, - { - "name": "Flashforge PLA Luminous @G3U", - "sub_path":"filament/Flashforge/Flashforge PLA Luminous @G3U.json" - }, - { - "name": "Flashforge PLA Matte @G3U", - "sub_path":"filament/Flashforge/Flashforge PLA Matte @G3U.json" - }, - { - "name": "Flashforge PLA Metal @G3U", - "sub_path":"filament/Flashforge/Flashforge PLA Metal @G3U.json" - }, - { - "name": "Flashforge PLA Pro @G3U", - "sub_path":"filament/Flashforge/Flashforge PLA Pro @G3U.json" - }, - { - "name": "Flashforge PLA Silk @G3U", - "sub_path":"filament/Flashforge/Flashforge PLA Silk @G3U.json" - }, - { - "name": "Flashforge PLA Sparkle @G3U", - "sub_path":"filament/Flashforge/Flashforge PLA Sparkle @G3U.json" - }, - { - "name": "Flashforge PLA-CF @G3U", - "sub_path":"filament/Flashforge/Flashforge PLA-CF @G3U.json" - }, - { - "name": "Flashforge PVA @G3U", - "sub_path":"filament/Flashforge/Flashforge PVA @G3U.json" - }, - { - "name": "Flashforge ABS Basic @FF AD5X", - "sub_path":"filament/Flashforge/Flashforge ABS Basic @FF AD5X.json" - }, - { - "name": "Flashforge ASA Basic @FF AD5X", - "sub_path":"filament/Flashforge/Flashforge ASA Basic @FF AD5X.json" - }, - { - "name": "Flashforge HS PETG @FF AD5X", - "sub_path":"filament/Flashforge/Flashforge HS PETG @FF AD5X.json" - }, - { - "name": "Flashforge HS PLA @FF AD5X", - "sub_path":"filament/Flashforge/Flashforge HS PLA @FF AD5X.json" - }, - { - "name": "Flashforge PETG Pro @FF AD5X", - "sub_path":"filament/Flashforge/Flashforge PETG Pro @FF AD5X.json" - }, - { - "name": "Flashforge PETG Transparent @FF AD5X", - "sub_path":"filament/Flashforge/Flashforge PETG Transparent @FF AD5X.json" - }, - { - "name": "Flashforge PETG-CF @FF AD5X", - "sub_path":"filament/Flashforge/Flashforge PETG-CF @FF AD5X.json" - }, - { - "name": "Flashforge PLA Basic @FF AD5X", - "sub_path":"filament/Flashforge/Flashforge PLA Basic @FF AD5X.json" - }, - { - "name": "Flashforge PLA Color Change @FF AD5X", - "sub_path":"filament/Flashforge/Flashforge PLA Color Change @FF AD5X.json" - }, - { - "name": "Flashforge PLA Galaxy @FF AD5X", - "sub_path":"filament/Flashforge/Flashforge PLA Galaxy @FF AD5X.json" - }, - { - "name": "Flashforge PLA Luminous @FF AD5X", - "sub_path":"filament/Flashforge/Flashforge PLA Luminous @FF AD5X.json" - }, - { - "name": "Flashforge PLA Matte @FF AD5X", - "sub_path":"filament/Flashforge/Flashforge PLA Matte @FF AD5X.json" - }, - { - "name": "Flashforge PLA Metal @FF AD5X", - "sub_path":"filament/Flashforge/Flashforge PLA Metal @FF AD5X.json" - }, - { - "name": "Flashforge PLA Pro @FF AD5X", - "sub_path":"filament/Flashforge/Flashforge PLA Pro @FF AD5X.json" - }, - { - "name": "Flashforge PLA Silk @FF AD5X", - "sub_path":"filament/Flashforge/Flashforge PLA Silk @FF AD5X.json" - }, - { - "name": "Flashforge PLA Sparkle @FF AD5X", - "sub_path":"filament/Flashforge/Flashforge PLA Sparkle @FF AD5X.json" - }, - { - "name": "Flashforge PLA-CF @FF AD5X", - "sub_path":"filament/Flashforge/Flashforge PLA-CF @FF AD5X.json" - }, - { - "name": "Flashforge TPU 95A @FF AD5X", - "sub_path":"filament/Flashforge/Flashforge TPU 95A @FF AD5X.json" - }, - { - "name": "Flashforge ABS Basic @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge ASA Basic @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge HS PETG @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge HS PETG @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge HS PLA @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge HS PLA @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PETG Pro @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PETG Transparent @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Basic @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Color Change @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Galaxy @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Luminous @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Matte @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Metal @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Pro @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Silk @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Sparkle @FF AD5X 0.25 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge ABS Basic @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge ASA Basic @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge HS PETG @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge/Flashforge HS PETG @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge HS PLA @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge/Flashforge HS PLA @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PETG Pro @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PETG Transparent @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PETG-CF @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Basic @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Color Change @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Galaxy @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Luminous @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Matte @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Metal @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Pro @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Silk @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Sparkle @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA-CF @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge TPU 95A @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge ABS Basic @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge ASA Basic @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge HS PETG @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge/Flashforge HS PETG @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge HS PLA @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge/Flashforge HS PLA @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PETG Pro @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PETG Transparent @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PETG-CF @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PLA Basic @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PLA Color Change @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PLA Galaxy @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PLA Luminous @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PLA Matte @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PLA Metal @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PLA Pro @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PLA Silk @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PLA Sparkle @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PLA-CF @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge TPU 95A @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge TPU 64D @FF AD5X", - "sub_path":"filament/Flashforge/Flashforge TPU 64D @FF AD5X.json" - }, - { - "name": "Flashforge TPU 64D @FF AD5X 0.8 nozzle", - "sub_path":"filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge TPU 64D @FF AD5X 0.6 nozzle", - "sub_path":"filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.6 nozzle.json" - } - ], - "machine_list": [ - { - "name": "fdm_machine_common", - "sub_path": "machine/fdm_machine_common.json" - }, - { - "name": "fdm_flashforge_common", - "sub_path": "machine/fdm_flashforge_common.json" - }, - { - "name": "fdm_adventurer5m_common", - "sub_path": "machine/fdm_adventurer5m_common.json" - }, - { - "name": "Flashforge Adventurer 5M 0.25 Nozzle", - "sub_path": "machine/Flashforge Adventurer 5M 0.25 Nozzle.json" - }, - { - "name": "Flashforge Adventurer 5M 0.4 Nozzle", - "sub_path": "machine/Flashforge Adventurer 5M 0.4 Nozzle.json" - }, - { - "name": "Flashforge Adventurer 5M 0.6 Nozzle", - "sub_path": "machine/Flashforge Adventurer 5M 0.6 Nozzle.json" - }, - { - "name": "Flashforge Adventurer 5M 0.8 Nozzle", - "sub_path": "machine/Flashforge Adventurer 5M 0.8 Nozzle.json" - }, - { - "name": "Flashforge Adventurer 5M Pro 0.25 Nozzle", - "sub_path": "machine/Flashforge Adventurer 5M Pro 0.25 Nozzle.json" - }, - { - "name": "Flashforge Adventurer 5M Pro 0.4 Nozzle", - "sub_path": "machine/Flashforge Adventurer 5M Pro 0.4 Nozzle.json" - }, - { - "name": "Flashforge Adventurer 5M Pro 0.6 Nozzle", - "sub_path": "machine/Flashforge Adventurer 5M Pro 0.6 Nozzle.json" - }, - { - "name": "Flashforge Adventurer 5M Pro 0.8 Nozzle", - "sub_path": "machine/Flashforge Adventurer 5M Pro 0.8 Nozzle.json" - }, - { - "name": "fdm_adventurer3_common", - "sub_path": "machine/fdm_adventurer3_common.json" - }, - { - "name": "Flashforge Adventurer 3 Series 0.4 Nozzle", - "sub_path": "machine/Flashforge Adventurer 3 Series 0.4 nozzle.json" - }, - { - "name": "Flashforge Adventurer 3 Series 0.6 Nozzle", - "sub_path": "machine/Flashforge Adventurer 3 Series 0.6 nozzle.json" - }, - { - "name": "fdm_guider3_common", - "sub_path": "machine/fdm_guider3_common.json" - }, - { - "name": "Flashforge Guider 3 Ultra 0.4 Nozzle", - "sub_path": "machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json" - }, - { - "name": "Flashforge Guider 3 Ultra 0.6 Nozzle", - "sub_path": "machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json" - }, - { - "name": "Flashforge Guider 3 Ultra 0.8 Nozzle", - "sub_path": "machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json" - }, - { - "name": "Flashforge Guider 2s 0.4 nozzle", - "sub_path": "machine/Flashforge Guider 2s 0.4 nozzle.json" - }, - { - "name": "Flashforge AD5X 0.4 nozzle", - "sub_path":"machine/Flashforge AD5X 0.4 nozzle.json" - }, - { - "name": "FlashForge AD5X 0.25 nozzle", - "sub_path":"machine/FlashForge AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge AD5X 0.6 nozzle", - "sub_path":"machine/Flashforge AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge AD5X 0.8 nozzle", - "sub_path":"machine/Flashforge AD5X 0.8 nozzle.json" - } - ] -} + "name": "Flashforge", + "url": "", + "version": "02.03.00.00", + "force_update": "0", + "description": "Flashforge configurations", + "machine_model_list": [ + { + "name": "Flashforge Adventurer 5M", + "sub_path": "machine/Flashforge Adventurer 5M.json" + }, + { + "name": "Flashforge Adventurer 5M Pro", + "sub_path": "machine/Flashforge Adventurer 5M Pro.json" + }, + { + "name": "Flashforge AD5X", + "sub_path": "machine/Flashforge AD5X.json" + }, + { + "name": "Flashforge Adventurer 3 Series", + "sub_path": "machine/Flashforge Adventurer 3 Series.json" + }, + { + "name": "Flashforge Guider 3 Ultra", + "sub_path": "machine/Flashforge Guider 3 Ultra.json" + }, + { + "name": "Flashforge Guider 2s", + "sub_path": "machine/Flashforge Guider 2s.json" + } + ], + "process_list": [ + { + "name": "fdm_process_common", + "sub_path": "process/fdm_process_common.json" + }, + { + "name": "fdm_process_flashforge_common", + "sub_path": "process/fdm_process_flashforge_common.json" + }, + { + "name": "fdm_process_flashforge_0.20", + "sub_path": "process/fdm_process_flashforge_0.20.json" + }, + { + "name": "fdm_process_flashforge_0.30", + "sub_path": "process/fdm_process_flashforge_0.30.json" + }, + { + "name": "fdm_process_flashforge_0.40", + "sub_path": "process/fdm_process_flashforge_0.40.json" + }, + { + "name": "0.20mm Standard @Flashforge AD5M 0.4 Nozzle", + "sub_path": "process/0.20mm Standard @Flashforge AD5M 0.4 Nozzle.json" + }, + { + "name": "0.30mm Standard @Flashforge AD5M 0.6 Nozzle", + "sub_path": "process/0.30mm Standard @Flashforge AD5M 0.6 Nozzle.json" + }, + { + "name": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "sub_path": "process/0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle.json" + }, + { + "name": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", + "sub_path": "process/0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle.json" + }, + { + "name": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", + "sub_path": "process/0.12mm Standard @Flashforge AD5M 0.25 Nozzle.json" + }, + { + "name": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "sub_path": "process/0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" + }, + { + "name": "0.40mm Standard @Flashforge AD5M 0.8 Nozzle", + "sub_path": "process/0.40mm Standard @Flashforge AD5M 0.8 Nozzle.json" + }, + { + "name": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", + "sub_path": "process/0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle.json" + }, + { + "name": "0.10mm Standard @Flashforge AD5M 0.25 Nozzle", + "sub_path": "process/0.10mm Standard @Flashforge AD5M 0.25 Nozzle.json" + }, + { + "name": "0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "sub_path": "process/0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" + }, + { + "name": "0.06mm Standard @Flashforge AD5M 0.25 Nozzle", + "sub_path": "process/0.06mm Standard @Flashforge AD5M 0.25 Nozzle.json" + }, + { + "name": "0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "sub_path": "process/0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" + }, + { + "name": "0.08mm Standard @Flashforge AD5M 0.25 Nozzle", + "sub_path": "process/0.08mm Standard @Flashforge AD5M 0.25 Nozzle.json" + }, + { + "name": "0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "sub_path": "process/0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" + }, + { + "name": "0.12mm Fine @Flashforge AD5M 0.4 Nozzle", + "sub_path": "process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json" + }, + { + "name": "0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle", + "sub_path": "process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json" + }, + { + "name": "0.14mm Standard @Flashforge AD5M 0.25 Nozzle", + "sub_path": "process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json" + }, + { + "name": "0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "sub_path": "process/0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" + }, + { + "name": "0.18mm Fine @Flashforge AD5M 0.6 Nozzle", + "sub_path": "process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json" + }, + { + "name": "0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle", + "sub_path": "process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json" + }, + { + "name": "0.24mm Draft @Flashforge AD5M 0.4 Nozzle", + "sub_path": "process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json" + }, + { + "name": "0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle", + "sub_path": "process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json" + }, + { + "name": "0.24mm Fine @Flashforge AD5M 0.8 Nozzle", + "sub_path": "process/0.24mm Fine @Flashforge AD5M 0.8 Nozzle.json" + }, + { + "name": "0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle", + "sub_path": "process/0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle.json" + }, + { + "name": "0.42mm Draft @Flashforge AD5M 0.6 Nozzle", + "sub_path": "process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json" + }, + { + "name": "0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle", + "sub_path": "process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json" + }, + { + "name": "0.56mm Draft @Flashforge AD5M 0.8 Nozzle", + "sub_path": "process/0.56mm Draft @Flashforge AD5M 0.8 Nozzle.json" + }, + { + "name": "0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle", + "sub_path": "process/0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle.json" + }, + { + "name": "0.20mm Standard @Flashforge AD3 0.4 Nozzle", + "sub_path": "process/0.20mm Standard @Flashforge AD3 0.4 Nozzle.json" + }, + { + "name": "0.30mm Fast @Flashforge AD3 0.4 Nozzle", + "sub_path": "process/0.30mm Fast @Flashforge AD3 0.4 Nozzle.json" + }, + { + "name": "0.30mm Standard @Flashforge AD3 0.6 Nozzle", + "sub_path": "process/0.30mm Standard @Flashforge AD3 0.6 Nozzle.json" + }, + { + "name": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", + "sub_path": "process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json" + }, + { + "name": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "sub_path": "process/0.30mm Standard @Flashforge G3U 0.6 Nozzle.json" + }, + { + "name": "0.40mm Standard @Flashforge G3U 0.8 Nozzle", + "sub_path": "process/0.40mm Standard @Flashforge G3U 0.8 Nozzle.json" + }, + { + "name": "0.12mm Fine @Flashforge G3U 0.4 Nozzle", + "sub_path": "process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json" + }, + { + "name": "0.18mm Standard @Flashforge G3U 0.6 Nozzle", + "sub_path": "process/0.18mm Standard @Flashforge G3U 0.6 Nozzle.json" + }, + { + "name": "0.24mm Draft @Flashforge G3U 0.4 Nozzle", + "sub_path": "process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json" + }, + { + "name": "0.42mm Standard @Flashforge G3U 0.6 Nozzle", + "sub_path": "process/0.42mm Standard @Flashforge G3U 0.6 Nozzle.json" + }, + { + "name": "0.30mm Draft @Flashforge Guider 2s 0.4 nozzle", + "sub_path": "process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Flashforge Guider 2s 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle", + "sub_path": "process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json" + }, + { + "name": "0.12mm Detail @Flashforge Guider 2s 0.4 nozzle", + "sub_path": "process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle", + "sub_path": "process/0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle.json" + }, + { + "name": "0.16mm Standard @FF AD5X", + "sub_path": "process/0.16mm Standard @FF AD5X.json" + }, + { + "name": "0.20mm Standard @FF AD5X", + "sub_path": "process/0.20mm Standard @FF AD5X.json" + }, + { + "name": "0.24mm Draft @FF AD5X", + "sub_path": "process/0.24mm Draft @FF AD5X.json" + }, + { + "name": "0.10mm Standard @FF AD5X 0.25 nozzle", + "sub_path": "process/0.10mm Standard @FF AD5X 0.25 nozzle.json" + }, + { + "name": "0.12mm Standard @FF AD5X 0.25 nozzle", + "sub_path": "process/0.12mm Standard @FF AD5X 0.25 nozzle.json" + }, + { + "name": "0.14mm Standard @FF AD5X 0.25 nozzle", + "sub_path": "process/0.14mm Standard @FF AD5X 0.25 nozzle.json" + }, + { + "name": "0.18mm Fine @FF AD5X 0.6 nozzle", + "sub_path": "process/0.18mm Fine @FF AD5X 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @FF AD5X 0.6 nozzle", + "sub_path": "process/0.30mm Standard @FF AD5X 0.6 nozzle.json" + }, + { + "name": "0.42mm Draft @FF AD5X 0.6 nozzle", + "sub_path": "process/0.42mm Draft @FF AD5X 0.6 nozzle.json" + }, + { + "name": "0.24mm Fine @FF AD5X 0.8 nozzle", + "sub_path": "process/0.24mm Fine @FF AD5X 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @FF AD5X 0.8 nozzle", + "sub_path": "process/0.40mm Standard @FF AD5X 0.8 nozzle.json" + }, + { + "name": "0.56mm Draft @FF AD5X 0.8 nozzle", + "sub_path": "process/0.56mm Draft @FF AD5X 0.8 nozzle.json" + } + ], + "filament_list": [ + { + "name": "fdm_filament_common", + "sub_path": "filament/fdm_filament_common.json" + }, + { + "name": "fdm_filament_abs", + "sub_path": "filament/fdm_filament_abs.json" + }, + { + "name": "fdm_filament_asa", + "sub_path": "filament/fdm_filament_asa.json" + }, + { + "name": "fdm_filament_pet", + "sub_path": "filament/fdm_filament_pet.json" + }, + { + "name": "fdm_filament_pla", + "sub_path": "filament/fdm_filament_pla.json" + }, + { + "name": "fdm_filament_tpu", + "sub_path": "filament/fdm_filament_tpu.json" + }, + { + "name": "Flashforge ABS", + "sub_path": "filament/Flashforge/Flashforge ABS @FF AD3.json" + }, + { + "name": "Flashforge Generic ABS", + "sub_path": "filament/Flashforge Generic ABS.json" + }, + { + "name": "Flashforge Generic ASA", + "sub_path": "filament/Flashforge Generic ASA.json" + }, + { + "name": "Flashforge Generic PETG", + "sub_path": "filament/Flashforge Generic PETG.json" + }, + { + "name": "Flashforge Generic PETG-CF10", + "sub_path": "filament/Flashforge Generic PETG-CF10.json" + }, + { + "name": "Flashforge PETG", + "sub_path": "filament/Flashforge/Flashforge PETG @FF AD3.json" + }, + { + "name": "Flashforge Generic HS PLA", + "sub_path": "filament/Flashforge Generic HS PLA.json" + }, + { + "name": "Flashforge Generic PLA", + "sub_path": "filament/Flashforge Generic PLA.json" + }, + { + "name": "Flashforge Generic PLA-CF10", + "sub_path": "filament/Flashforge Generic PLA-CF10.json" + }, + { + "name": "Flashforge Generic PLA-Silk", + "sub_path": "filament/Flashforge Generic PLA-Silk.json" + }, + { + "name": "Flashforge PLA", + "sub_path": "filament/Flashforge/Flashforge PLA @FF AD3.json" + }, + { + "name": "Flashforge Generic TPU", + "sub_path": "filament/Flashforge Generic TPU.json" + }, + { + "name": "Flashforge ABS Basic @FF AD5X", + "sub_path": "filament/Flashforge/Flashforge ABS Basic @FF AD5X.json" + }, + { + "name": "Flashforge ABS Basic @FF AD5X 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge ABS Basic @FF AD5X 0.8 nozzle", + "sub_path": "filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge ABS Basic @FF G4P", + "sub_path": "filament/Flashforge/Flashforge ABS Basic @FF G4P.json" + }, + { + "name": "Flashforge ABS-CF @FF G4P", + "sub_path": "filament/Flashforge/Flashforge ABS-CF @FF G4P.json" + }, + { + "name": "Flashforge ASA Basic @FF AD5X", + "sub_path": "filament/Flashforge/Flashforge ASA Basic @FF AD5X.json" + }, + { + "name": "Flashforge ASA Basic @FF AD5X 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge ASA Basic @FF AD5X 0.8 nozzle", + "sub_path": "filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge ASA Basic @FF G4P", + "sub_path": "filament/Flashforge/Flashforge ASA Basic @FF G4P.json" + }, + { + "name": "Flashforge Generic ABS @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Flashforge Generic ABS @FF AD5M 0.25 Nozzle.json" + }, + { + "name": "Flashforge Generic ABS @G3U", + "sub_path": "filament/Flashforge Generic ABS @G3U.json" + }, + { + "name": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic ABS @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic ASA @G3U", + "sub_path": "filament/Flashforge Generic ASA @G3U.json" + }, + { + "name": "Flashforge Generic HIPS", + "sub_path": "filament/Flashforge Generic HIPS.json" + }, + { + "name": "Flashforge Generic HIPS @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic HIPS @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic ASA @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Flashforge Generic ASA @FF AD5M 0.25 Nozzle.json" + }, + { + "name": "Flashforge Generic ASA @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic ASA @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Flashforge Generic PETG @FF AD5M 0.25 Nozzle.json" + }, + { + "name": "Flashforge Generic PETG @G3U", + "sub_path": "filament/Flashforge Generic PETG @G3U.json" + }, + { + "name": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic PETG @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic PETG @G3U 0.8 Nozzle", + "sub_path": "filament/Flashforge Generic PETG @G3U 0.8 Nozzle.json" + }, + { + "name": "Flashforge Generic PETG-CF @G3U", + "sub_path": "filament/Flashforge Generic PETG-CF @G3U.json" + }, + { + "name": "Flashforge Generic PETG-CF @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic PETG-CF @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic PETG-CF @G3U 0.8 Nozzle", + "sub_path": "filament/Flashforge Generic PETG-CF @G3U 0.8 Nozzle.json" + }, + { + "name": "Flashforge HS PETG @FF AD5X", + "sub_path": "filament/Flashforge/Flashforge HS PETG @FF AD5X.json" + }, + { + "name": "Flashforge HS PETG @FF AD5X 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge HS PETG @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge HS PETG @FF AD5X 0.8 nozzle", + "sub_path": "filament/Flashforge/Flashforge HS PETG @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge HS PETG @FF G4P", + "sub_path": "filament/Flashforge/Flashforge HS PETG @FF G4P.json" + }, + { + "name": "Flashforge PETG Basic", + "sub_path": "filament/Flashforge/Flashforge PETG Basic.json" + }, + { + "name": "Flashforge PETG Pro", + "sub_path": "filament/Flashforge/Flashforge PETG Pro.json" + }, + { + "name": "Flashforge PETG Pro @FF AD5X", + "sub_path": "filament/Flashforge/Flashforge PETG Pro @FF AD5X.json" + }, + { + "name": "Flashforge PETG Pro @FF AD5X 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PETG Pro @FF AD5X 0.8 nozzle", + "sub_path": "filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PETG Pro @FF G4P", + "sub_path": "filament/Flashforge/Flashforge PETG Pro @FF G4P.json" + }, + { + "name": "Flashforge PETG Transparent", + "sub_path": "filament/Flashforge/Flashforge PETG Transparent.json" + }, + { + "name": "Flashforge PETG Transparent @FF AD5X", + "sub_path": "filament/Flashforge/Flashforge PETG Transparent @FF AD5X.json" + }, + { + "name": "Flashforge PETG Transparent @FF AD5X 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PETG Transparent @FF AD5X 0.8 nozzle", + "sub_path": "filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PETG Transparent @FF G4P", + "sub_path": "filament/Flashforge/Flashforge PETG Transparent @FF G4P.json" + }, + { + "name": "Flashforge PETG-CF @FF G4P", + "sub_path": "filament/Flashforge/Flashforge PETG-CF @FF G4P.json" + }, + { + "name": "FusRock Generic NexPA-CF25", + "sub_path": "filament/FusRock/FusRock Generic NexPA-CF25.json" + }, + { + "name": "FusRock Generic PAHT-CF", + "sub_path": "filament/FusRock/FusRock Generic PAHT-CF.json" + }, + { + "name": "FusRock Generic PAHT-CF @G3U 0.6 Nozzle", + "sub_path": "filament/FusRock/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json" + }, + { + "name": "FusRock Generic PET-CF", + "sub_path": "filament/FusRock/FusRock Generic PET-CF.json" + }, + { + "name": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "sub_path": "filament/FusRock/FusRock Generic PET-CF @G3U 0.6 Nozzle.json" + }, + { + "name": "FusRock Generic S-Multi", + "sub_path": "filament/FusRock/FusRock Generic S-Multi.json" + }, + { + "name": "FusRock Generic S-Multi @G3U 0.6 Nozzle", + "sub_path": "filament/FusRock/FusRock Generic S-Multi @G3U 0.6 Nozzle.json" + }, + { + "name": "FusRock Generic S-PAHT", + "sub_path": "filament/FusRock/FusRock Generic S-PAHT.json" + }, + { + "name": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "sub_path": "filament/FusRock/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge PETG-CF @FF AD5X", + "sub_path": "filament/Flashforge/Flashforge PETG-CF @FF AD5X.json" + }, + { + "name": "Flashforge PETG-CF @FF AD5X 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PETG-CF @FF AD5X 0.8 nozzle", + "sub_path": "filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle.json" + }, + { + "name": "Flashforge HIPS @FF G4P", + "sub_path": "filament/Flashforge/Flashforge HIPS @FF G4P.json" + }, + { + "name": "Flashforge HS PLA @FF G4P", + "sub_path": "filament/Flashforge/Flashforge HS PLA @FF G4P.json" + }, + { + "name": "Flashforge PLA Basic @FF G4P", + "sub_path": "filament/Flashforge/Flashforge PLA Basic @FF G4P.json" + }, + { + "name": "Flashforge PLA Color Change @FF G4P", + "sub_path": "filament/Flashforge/Flashforge PLA Color Change @FF G4P.json" + }, + { + "name": "Flashforge PLA Galaxy @FF G4P", + "sub_path": "filament/Flashforge/Flashforge PLA Galaxy @FF G4P.json" + }, + { + "name": "Flashforge PLA Luminous @FF G4P", + "sub_path": "filament/Flashforge/Flashforge PLA Luminous @FF G4P.json" + }, + { + "name": "Flashforge PLA Matte @FF G4P", + "sub_path": "filament/Flashforge/Flashforge PLA Matte @FF G4P.json" + }, + { + "name": "Flashforge PLA Metal @FF G4P", + "sub_path": "filament/Flashforge/Flashforge PLA Metal @FF G4P.json" + }, + { + "name": "Flashforge PLA Pro @FF G4P", + "sub_path": "filament/Flashforge/Flashforge PLA Pro @FF G4P.json" + }, + { + "name": "Flashforge PLA Silk @FF G4P", + "sub_path": "filament/Flashforge/Flashforge PLA Silk @FF G4P.json" + }, + { + "name": "Flashforge PLA Sparkle @FF G4P", + "sub_path": "filament/Flashforge/Flashforge PLA Sparkle @FF G4P.json" + }, + { + "name": "Flashforge PLA-CF @FF G4P", + "sub_path": "filament/Flashforge/Flashforge PLA-CF @FF G4P.json" + }, + { + "name": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Flashforge Generic PLA @FF AD5M 0.25 Nozzle.json" + }, + { + "name": "Flashforge Generic PLA @G3U", + "sub_path": "filament/Flashforge Generic PLA @G3U.json" + }, + { + "name": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic PLA @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic PLA @G3U 0.8 Nozzle", + "sub_path": "filament/Flashforge Generic PLA @G3U 0.8 Nozzle.json" + }, + { + "name": "Flashforge Generic PLA-CF @G3U", + "sub_path": "filament/Flashforge Generic PLA-CF @G3U.json" + }, + { + "name": "Flashforge Generic PLA-CF @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic PLA-CF @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic PLA-CF @G3U 0.8 Nozzle", + "sub_path": "filament/Flashforge Generic PLA-CF @G3U 0.8 Nozzle.json" + }, + { + "name": "Flashforge Generic PVA", + "sub_path": "filament/Flashforge Generic PVA.json" + }, + { + "name": "Flashforge HS PLA @FF AD5X", + "sub_path": "filament/Flashforge/Flashforge HS PLA @FF AD5X.json" + }, + { + "name": "Flashforge HS PLA @FF AD5X 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge HS PLA @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge HS PLA @FF AD5X 0.8 nozzle", + "sub_path": "filament/Flashforge/Flashforge HS PLA @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PLA Color Change @FF AD5X", + "sub_path": "filament/Flashforge/Flashforge PLA Color Change @FF AD5X.json" + }, + { + "name": "Flashforge PLA Color Change @FF AD5X 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Color Change @FF AD5X 0.8 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PLA Galaxy @FF AD5X", + "sub_path": "filament/Flashforge/Flashforge PLA Galaxy @FF AD5X.json" + }, + { + "name": "Flashforge PLA Galaxy @FF AD5X 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Galaxy @FF AD5X 0.8 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PLA Luminous @FF AD5X", + "sub_path": "filament/Flashforge/Flashforge PLA Luminous @FF AD5X.json" + }, + { + "name": "Flashforge PLA Luminous @FF AD5X 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Luminous @FF AD5X 0.8 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PLA Matte @FF AD5X", + "sub_path": "filament/Flashforge/Flashforge PLA Matte @FF AD5X.json" + }, + { + "name": "Flashforge PLA Matte @FF AD5X 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Matte @FF AD5X 0.8 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PLA Metal @FF AD5X", + "sub_path": "filament/Flashforge/Flashforge PLA Metal @FF AD5X.json" + }, + { + "name": "Flashforge PLA Metal @FF AD5X 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Metal @FF AD5X 0.8 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PLA Pro @FF AD5X", + "sub_path": "filament/Flashforge/Flashforge PLA Pro @FF AD5X.json" + }, + { + "name": "Flashforge PLA Pro @FF AD5X 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Pro @FF AD5X 0.8 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PLA Sparkle @FF AD5X", + "sub_path": "filament/Flashforge/Flashforge PLA Sparkle @FF AD5X.json" + }, + { + "name": "Flashforge PLA Sparkle @FF AD5X 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Sparkle @FF AD5X 0.8 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Polymaker Generic CoPA", + "sub_path": "filament/Polymaker/Polymaker Generic CoPA.json" + }, + { + "name": "Polymaker Generic S1", + "sub_path": "filament/Polymaker/Polymaker Generic S1.json" + }, + { + "name": "Flashforge PA-CF @FF G4P", + "sub_path": "filament/Flashforge/Flashforge PA-CF @FF G4P.json" + }, + { + "name": "Flashforge PAHT-CF @FF G4P", + "sub_path": "filament/Flashforge/Flashforge PAHT-CF @FF G4P.json" + }, + { + "name": "Flashforge PLA-CF @FF AD5X", + "sub_path": "filament/Flashforge/Flashforge PLA-CF @FF AD5X.json" + }, + { + "name": "Flashforge PLA-CF @FF AD5X 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA-CF @FF AD5X 0.8 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PPS @FF G4P", + "sub_path": "filament/Flashforge/Flashforge PPS @FF G4P.json" + }, + { + "name": "Flashforge PPS-CF @FF G4P", + "sub_path": "filament/Flashforge/Flashforge PPS-CF @FF G4P.json" + }, + { + "name": "Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle.json" + }, + { + "name": "Flashforge PLA Silk @FF AD5X", + "sub_path": "filament/Flashforge/Flashforge PLA Silk @FF AD5X.json" + }, + { + "name": "Flashforge PLA Silk @FF AD5X 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Silk @FF AD5X 0.8 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PA @FF G4P", + "sub_path": "filament/Flashforge/Flashforge PA @FF G4P.json" + }, + { + "name": "Flashforge PET @FF G4P", + "sub_path": "filament/Flashforge/Flashforge PET @FF G4P.json" + }, + { + "name": "Flashforge PET-CF @FF G4P", + "sub_path": "filament/Flashforge/Flashforge PET-CF @FF G4P.json" + }, + { + "name": "Flashforge TPU 64D @FF AD5X", + "sub_path": "filament/Flashforge/Flashforge TPU 64D @FF AD5X.json" + }, + { + "name": "Flashforge TPU 64D @FF AD5X 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge TPU 64D @FF AD5X 0.8 nozzle", + "sub_path": "filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge TPU 95A @FF AD5X", + "sub_path": "filament/Flashforge/Flashforge TPU 95A @FF AD5X.json" + }, + { + "name": "Flashforge TPU 95A @FF AD5X 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge TPU 95A @FF AD5X 0.8 nozzle", + "sub_path": "filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge TPU 95A @FF G4P", + "sub_path": "filament/Flashforge/Flashforge TPU 95A @FF G4P.json" + }, + { + "name": "Flashforge ABS Basic @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge ABS Basic @FF G4P HF", + "sub_path": "filament/Flashforge/Flashforge ABS Basic @FF G4P HF.json" + }, + { + "name": "Flashforge ASA Basic @FF G4P HF", + "sub_path": "filament/Flashforge/Flashforge ASA Basic @FF G4P HF.json" + }, + { + "name": "Flashforge HIPS @FF G4P HF", + "sub_path": "filament/Flashforge/Flashforge HIPS @FF G4P HF.json" + }, + { + "name": "Flashforge HS PETG @FF G4P HF", + "sub_path": "filament/Flashforge/Flashforge HS PETG @FF G4P HF.json" + }, + { + "name": "Flashforge HS PLA @FF G4P HF", + "sub_path": "filament/Flashforge/Flashforge HS PLA @FF G4P HF.json" + }, + { + "name": "Flashforge HS PLA Burnt Ti @FF G4P HF", + "sub_path": "filament/Flashforge/Flashforge HS PLA Burnt Ti @FF G4P HF.json" + }, + { + "name": "Flashforge PA @FF G4P HF", + "sub_path": "filament/Flashforge/Flashforge PA @FF G4P HF.json" + }, + { + "name": "Flashforge PETG Pro @FF G4P HF", + "sub_path": "filament/Flashforge/Flashforge PETG Pro @FF G4P HF.json" + }, + { + "name": "Flashforge PETG Transparent @FF G4P HF", + "sub_path": "filament/Flashforge/Flashforge PETG Transparent @FF G4P HF.json" + }, + { + "name": "Flashforge PLA Basic @FF G4P HF", + "sub_path": "filament/Flashforge/Flashforge PLA Basic @FF G4P HF.json" + }, + { + "name": "Flashforge PLA Color Change @FF G4P HF", + "sub_path": "filament/Flashforge/Flashforge PLA Color Change @FF G4P HF.json" + }, + { + "name": "Flashforge PLA Galaxy @FF G4P HF", + "sub_path": "filament/Flashforge/Flashforge PLA Galaxy @FF G4P HF.json" + }, + { + "name": "Flashforge PLA Luminous @FF G4P HF", + "sub_path": "filament/Flashforge/Flashforge PLA Luminous @FF G4P HF.json" + }, + { + "name": "Flashforge PLA Matte @FF G4P HF", + "sub_path": "filament/Flashforge/Flashforge PLA Matte @FF G4P HF.json" + }, + { + "name": "Flashforge PLA Metal @FF G4P HF", + "sub_path": "filament/Flashforge/Flashforge PLA Metal @FF G4P HF.json" + }, + { + "name": "Flashforge PLA Pro @FF G4P HF", + "sub_path": "filament/Flashforge/Flashforge PLA Pro @FF G4P HF.json" + }, + { + "name": "Flashforge PLA Silk @FF G4P HF", + "sub_path": "filament/Flashforge/Flashforge PLA Silk @FF G4P HF.json" + }, + { + "name": "Flashforge PLA Sparkle @FF G4P HF", + "sub_path": "filament/Flashforge/Flashforge PLA Sparkle @FF G4P HF.json" + }, + { + "name": "Flashforge ABS Basic @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge ABS Basic @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge ABS Basic @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge ABS Basic @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "Flashforge ABS-CF @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge ABS-CF @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge ASA Basic @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge ASA Basic @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge ASA Basic @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge ASA Basic @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge ASA Basic @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge ASA Basic @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "Flashforge HIPS @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge HIPS @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge HIPS @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge HIPS @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "Flashforge ASA Basic @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge HS PETG @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge HS PETG @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PETG Pro @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PETG Transparent @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PETG Basic @G3U", + "sub_path": "filament/Flashforge/Flashforge PETG Basic @G3U.json" + }, + { + "name": "Flashforge HS PETG @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge HS PETG @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge HS PETG @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge HS PETG @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge HS PETG @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge HS PETG @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "Flashforge PETG Pro @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge PETG Pro @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge PETG Pro @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PETG Pro @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge PETG Pro @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge PETG Pro @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "Flashforge PETG Transparent @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge PETG Transparent @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge PETG Transparent @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "Flashforge TPU 95A @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge TPU 95A @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge PETG-CF @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PETG-CF @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge ASA-CF", + "sub_path": "filament/Flashforge/Flashforge ASA-CF.json" + }, + { + "name": "Flashforge PPA-CF", + "sub_path": "filament/Flashforge/Flashforge PPA-CF.json" + }, + { + "name": "Flashforge PPA-GF", + "sub_path": "filament/Flashforge/Flashforge PPA-GF.json" + }, + { + "name": "Flashforge PPS-CF", + "sub_path": "filament/Flashforge/Flashforge PPS-CF.json" + }, + { + "name": "FusRock Generic PAHT-GF", + "sub_path": "filament/FusRock/FusRock Generic PAHT-GF.json" + }, + { + "name": "FusRock PAHT-CF @FF G4P 0.6 nozzle", + "sub_path": "filament/FusRock/FusRock PAHT-CF @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge PA12-CF", + "sub_path": "filament/Flashforge/Flashforge PA12-CF.json" + }, + { + "name": "Flashforge PA6-CF", + "sub_path": "filament/Flashforge/Flashforge PA6-CF.json" + }, + { + "name": "Flashforge PA66-CF", + "sub_path": "filament/Flashforge/Flashforge PA66-CF.json" + }, + { + "name": "Flashforge PET-CF", + "sub_path": "filament/Flashforge/Flashforge PET-CF.json" + }, + { + "name": "FusRock Generic PET-GF", + "sub_path": "filament/FusRock/FusRock Generic PET-GF.json" + }, + { + "name": "FlashForge PPS @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/FlashForge PPS @FF G4P 0.6 nozzle.json" + }, + { + "name": "FlashForge PPS @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge/FlashForge PPS @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "FlashForge PPS-CF @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/FlashForge PPS-CF @FF G4P 0.6 nozzle.json" + }, + { + "name": "FusRock PET @FF G4P 0.6 HF nozzle", + "sub_path": "filament/FusRock/FusRock PET @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "FusRock PET @FF G4P 0.6 nozzle", + "sub_path": "filament/FusRock/FusRock PET @FF G4P 0.6 nozzle.json" + }, + { + "name": "FusRock PET @FF G4P 0.8 HF nozzle", + "sub_path": "filament/FusRock/FusRock PET @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "FusRock PET-CF @FF G4P 0.6 nozzle", + "sub_path": "filament/FusRock/FusRock PET-CF @FF G4P 0.6 nozzle.json" + }, + { + "name": "FlashForge PC @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge/FlashForge PC @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "FlashForge PC @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/FlashForge PC @FF G4P 0.6 nozzle.json" + }, + { + "name": "FlashForge PC @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge/FlashForge PC @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "FusRock PAHT @FF G4P 0.6 nozzle", + "sub_path": "filament/FusRock/FusRock PAHT @FF G4P 0.6 nozzle.json" + }, + { + "name": "FusRock PAHT @FF G4P 0.8 HF nozzle", + "sub_path": "filament/FusRock/FusRock PAHT @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "Polymaker CoPA @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Polymaker/Polymaker CoPA @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Polymaker CoPA @FF G4P 0.6 nozzle", + "sub_path": "filament/Polymaker/Polymaker CoPA @FF G4P 0.6 nozzle.json" + }, + { + "name": "Polymaker CoPA @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Polymaker/Polymaker CoPA @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "Flashforge HS PLA @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge HS PLA @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Color Change @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Galaxy @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Luminous @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Matte @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Metal @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Pro @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Silk @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Sparkle @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge HS PLA @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge HS PLA @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge HS PLA @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge HS PLA @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge HS PLA @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge HS PLA @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json" + }, + { + "name": "Flashforge PA @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge PA @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge PLA Basic @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Basic @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge PLA Basic @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Basic @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Basic @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Basic @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "Flashforge PLA Buint Ti @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Buint Ti @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Buint Ti @FF G4P 0.8 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Buint Ti @FF G4P 0.8 nozzle.json" + }, + { + "name": "Flashforge PLA Color Change @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge PLA Galaxy @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "Flashforge PLA Luminous @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge PLA Matte @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Matte @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge PLA Matte @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Matte @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Matte @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Matte @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "Flashforge PLA Metal @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Metal @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge PLA Metal @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Metal @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Metal @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Metal @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "Flashforge PLA Pro @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Pro @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge PLA Pro @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Pro @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Pro @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Pro @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "Flashforge PLA Silk @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Silk @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge PLA Silk @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Silk @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Silk @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Silk @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge TPU 95A @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge TPU 95A @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge TPU 95A @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge/Flashforge TPU 95A @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "Flashforge PLA-CF @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA-CF @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge ABS Basic @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge ABS Basic @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge ASA Basic @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge ASA Basic @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge HS PETG @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge HS PETG @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge HS PLA @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge HS PLA @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge PETG Pro @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PETG Pro @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge PETG Transparent @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Basic @FF AD5X", + "sub_path": "filament/Flashforge/Flashforge PLA Basic @FF AD5X.json" + }, + { + "name": "Flashforge PLA Basic @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Basic @FF AD5X 0.6 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge PLA Basic @FF AD5X 0.8 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json" + }, + { + "name": "Flashforge PLA Basic @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Basic @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Color Change @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Galaxy @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Luminous @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Matte @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Matte @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Metal @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Metal @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Pro @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Pro @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Silk @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Silk @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Sparkle @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json" + } + ], + "machine_list": [ + { + "name": "fdm_machine_common", + "sub_path": "machine/fdm_machine_common.json" + }, + { + "name": "fdm_flashforge_common", + "sub_path": "machine/fdm_flashforge_common.json" + }, + { + "name": "fdm_adventurer5m_common", + "sub_path": "machine/fdm_adventurer5m_common.json" + }, + { + "name": "Flashforge Adventurer 5M 0.25 Nozzle", + "sub_path": "machine/Flashforge Adventurer 5M 0.25 Nozzle.json" + }, + { + "name": "Flashforge Adventurer 5M 0.4 Nozzle", + "sub_path": "machine/Flashforge Adventurer 5M 0.4 Nozzle.json" + }, + { + "name": "Flashforge Adventurer 5M 0.6 Nozzle", + "sub_path": "machine/Flashforge Adventurer 5M 0.6 Nozzle.json" + }, + { + "name": "Flashforge Adventurer 5M 0.8 Nozzle", + "sub_path": "machine/Flashforge Adventurer 5M 0.8 Nozzle.json" + }, + { + "name": "Flashforge Adventurer 5M Pro 0.25 Nozzle", + "sub_path": "machine/Flashforge Adventurer 5M Pro 0.25 Nozzle.json" + }, + { + "name": "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "sub_path": "machine/Flashforge Adventurer 5M Pro 0.4 Nozzle.json" + }, + { + "name": "Flashforge Adventurer 5M Pro 0.6 Nozzle", + "sub_path": "machine/Flashforge Adventurer 5M Pro 0.6 Nozzle.json" + }, + { + "name": "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "sub_path": "machine/Flashforge Adventurer 5M Pro 0.8 Nozzle.json" + }, + { + "name": "fdm_adventurer3_common", + "sub_path": "machine/fdm_adventurer3_common.json" + }, + { + "name": "Flashforge Adventurer 3 Series 0.4 Nozzle", + "sub_path": "machine/Flashforge Adventurer 3 Series 0.4 nozzle.json" + }, + { + "name": "Flashforge Adventurer 3 Series 0.6 Nozzle", + "sub_path": "machine/Flashforge Adventurer 3 Series 0.6 nozzle.json" + }, + { + "name": "fdm_guider3_common", + "sub_path": "machine/fdm_guider3_common.json" + }, + { + "name": "Flashforge Guider 3 Ultra 0.4 Nozzle", + "sub_path": "machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json" + }, + { + "name": "Flashforge Guider 3 Ultra 0.6 Nozzle", + "sub_path": "machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json" + }, + { + "name": "Flashforge Guider 3 Ultra 0.8 Nozzle", + "sub_path": "machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json" + }, + { + "name": "Flashforge Guider 2s 0.4 nozzle", + "sub_path": "machine/Flashforge Guider 2s 0.4 nozzle.json" + }, + { + "name": "Flashforge AD5X 0.4 nozzle", + "sub_path": "machine/Flashforge AD5X 0.4 nozzle.json" + }, + { + "name": "FlashForge AD5X 0.25 nozzle", + "sub_path": "machine/FlashForge AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge AD5X 0.6 nozzle", + "sub_path": "machine/Flashforge AD5X 0.6 nozzle.json" + }, + { + "name": "Flashforge AD5X 0.8 nozzle", + "sub_path": "machine/Flashforge AD5X 0.8 nozzle.json" + } + ] +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json deleted file mode 100644 index 6e92f7a198..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge ABS Basic @FF AD5M 0.25 nozzle"], - "from": "system", - "setting_id": "GFSA04_02", - "instantiation": "true", - "inherits": "Flashforge Generic ABS @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge ABS Basic @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @G3U.json deleted file mode 100644 index 04d83615e2..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @G3U.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "filament", - "filament_settings_id": ["Flashforge ABS Basic @G3U"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic ABS @G3U", - "is_custom_defined": "0", - "name": "Flashforge ABS Basic @G3U", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic.json deleted file mode 100644 index 3914d5200d..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "filament", - "name": "Flashforge ABS Basic", - "inherits": "Flashforge Generic ABS", - "from": "system", - "filament_settings_id": ["Flashforge ABS Basic"], - "setting_id": "GFSA04_02", - "instantiation": "true", - "is_custom_defined": "0", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json deleted file mode 100644 index 062e0b5b64..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge ASA Basic @FF AD5M 0.25 nozzle"], - "from": "system", - "setting_id": "GFSA04_05", - "instantiation": "true", - "inherits": "Flashforge Generic ASA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge ASA Basic @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @G3U.json deleted file mode 100644 index d6065abea3..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @G3U.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "filament", - "filament_settings_id": ["Flashforge ASA Basic @G3U"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic ASA @G3U", - "is_custom_defined": "0", - "name": "Flashforge ASA Basic @G3U", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic.json deleted file mode 100644 index f7e82100b7..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "filament", - "name": "Flashforge ASA Basic", - "inherits": "Flashforge Generic ASA", - "from": "system", - "filament_settings_id": ["Flashforge ASA Basic"], - "setting_id": "GFSA04_05", - "instantiation": "true", - "is_custom_defined": "0", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA-CF.json index c57a44df45..a37f53546d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA-CF.json @@ -5,20 +5,59 @@ "from": "system", "setting_id": "GFSA04", "instantiation": "true", - "filament_flow_ratio": ["0.99"], - "filament_max_volumetric_speed": ["5"], - "filament_settings_id": ["Flashforge ASA-CF"], - "filament_type": ["ASA"], - "hot_plate_temp": ["100"], - "hot_plate_temp_initial_layer": ["100"], + "filament_flow_ratio": [ + "0.99" + ], + "filament_max_volumetric_speed": [ + "5" + ], + "filament_settings_id": [ + "Flashforge ASA-CF" + ], + "filament_type": [ + "ASA" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], "is_custom_defined": "0", - "nozzle_temperature": ["250"], - "nozzle_temperature_initial_layer": ["250"], - "nozzle_temperature_range_high": ["260"], - "nozzle_temperature_range_low": ["240"], - "overhang_fan_speed": ["20"], - "slow_down_layer_time": ["10"], - "slow_down_min_speed": ["10"], - "support_material_interface_fan_speed": ["20"], - "version": "2.0.2.0" -} + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "20" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "10" + ], + "support_material_interface_fan_speed": [ + "20" + ], + "version": "2.0.2.0", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.4 Nozzle", + "Flashforge Adventurer 5M 0.6 Nozzle", + "Flashforge Adventurer 5M 0.8 Nozzle", + "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "Flashforge Adventurer 5M Pro 0.6 Nozzle", + "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "Flashforge AD5X 0.4 nozzle", + "Flashforge AD5X 0.6 nozzle", + "Flashforge AD5X 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @G3U.json deleted file mode 100644 index 58a99e4899..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @G3U.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "filament", - "filament_settings_id": ["Flashforge HIPS @G3U"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic HIPS", - "is_custom_defined": "0", - "name": "Flashforge HIPS @G3U", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5M 0.25 nozzle.json deleted file mode 100644 index 3e7c28a20d..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5M 0.25 nozzle.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge HS PETG @FF AD5M 0.25 nozzle"], - "from": "system", - "setting_id": "GFSA04_12", - "instantiation": "true", - "inherits": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge HS PETG @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @G3U.json deleted file mode 100644 index 383d1036c9..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @G3U.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "filament", - "filament_settings_id": ["Flashforge HS PETG @G3U"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PETG @G3U", - "is_custom_defined": "0", - "name": "Flashforge HS PETG @G3U", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG.json deleted file mode 100644 index 1a07af4fe7..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge HS PETG"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PETG", - "is_custom_defined": "0", - "name": "Flashforge HS PETG", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @G3U.json deleted file mode 100644 index 8c0e0672e7..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @G3U.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "filament", - "filament_settings_id": ["Flashforge HS PLA @G3U"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @G3U", - "is_custom_defined": "0", - "name": "Flashforge HS PLA @G3U", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA.json deleted file mode 100644 index de0aa7faeb..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge HS PLA"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge HS PLA", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA12-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA12-CF.json index dafcc2a93d..56a77c79ab 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA12-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA12-CF.json @@ -5,21 +5,62 @@ "from": "system", "setting_id": "GFSA04", "instantiation": "true", - "filament_density": ["1.1"], - "filament_flow_ratio": ["0.99"], - "filament_max_volumetric_speed": ["5"], - "filament_settings_id": ["Flashforge PA12-CF"], - "filament_type": ["PA-CF"], - "hot_plate_temp": ["90"], - "hot_plate_temp_initial_layer": ["90"], + "filament_density": [ + "1.1" + ], + "filament_flow_ratio": [ + "0.99" + ], + "filament_max_volumetric_speed": [ + "5" + ], + "filament_settings_id": [ + "Flashforge PA12-CF" + ], + "filament_type": [ + "PA-CF" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], "is_custom_defined": "0", - "nozzle_temperature": ["260"], - "nozzle_temperature_initial_layer": ["260"], - "nozzle_temperature_range_high": ["280"], - "nozzle_temperature_range_low": ["250"], - "pressure_advance": ["0.035"], - "slow_down_layer_time": ["10"], - "slow_down_min_speed": ["10"], - "support_material_interface_fan_speed": ["20"], - "version": "2.0.2.0" -} + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "pressure_advance": [ + "0.035" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "10" + ], + "support_material_interface_fan_speed": [ + "20" + ], + "version": "2.0.2.0", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.4 Nozzle", + "Flashforge Adventurer 5M 0.6 Nozzle", + "Flashforge Adventurer 5M 0.8 Nozzle", + "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "Flashforge Adventurer 5M Pro 0.6 Nozzle", + "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "Flashforge AD5X 0.4 nozzle", + "Flashforge AD5X 0.6 nozzle", + "Flashforge AD5X 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA6-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA6-CF.json index cc02d2a47e..4bdd6c8743 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA6-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA6-CF.json @@ -5,20 +5,59 @@ "from": "system", "setting_id": "GFSA04", "instantiation": "true", - "filament_density": ["1.1"], - "filament_max_volumetric_speed": ["5"], - "filament_settings_id": ["Flashforge PA6-CF"], - "filament_type": ["PA6-CF"], - "hot_plate_temp": ["95"], - "hot_plate_temp_initial_layer": ["95"], + "filament_density": [ + "1.1" + ], + "filament_max_volumetric_speed": [ + "5" + ], + "filament_settings_id": [ + "Flashforge PA6-CF" + ], + "filament_type": [ + "PA6-CF" + ], + "hot_plate_temp": [ + "95" + ], + "hot_plate_temp_initial_layer": [ + "95" + ], "is_custom_defined": "0", - "nozzle_temperature": ["245"], - "nozzle_temperature_initial_layer": ["245"], - "nozzle_temperature_range_high": ["260"], - "nozzle_temperature_range_low": ["230"], - "pressure_advance": ["0.035"], - "slow_down_layer_time": ["10"], - "slow_down_min_speed": ["10"], - "support_material_interface_fan_speed": ["20"], - "version": "2.0.2.0" -} + "nozzle_temperature": [ + "245" + ], + "nozzle_temperature_initial_layer": [ + "245" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "pressure_advance": [ + "0.035" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "10" + ], + "support_material_interface_fan_speed": [ + "20" + ], + "version": "2.0.2.0", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.4 Nozzle", + "Flashforge Adventurer 5M 0.6 Nozzle", + "Flashforge Adventurer 5M 0.8 Nozzle", + "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "Flashforge Adventurer 5M Pro 0.6 Nozzle", + "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "Flashforge AD5X 0.4 nozzle", + "Flashforge AD5X 0.6 nozzle", + "Flashforge AD5X 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA66-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA66-CF.json index 7e7eef41cd..cf260ce01e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA66-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PA66-CF.json @@ -5,20 +5,59 @@ "from": "system", "setting_id": "GFSA04", "instantiation": "true", - "filament_density": ["1.1"], - "filament_max_volumetric_speed": ["5"], - "filament_settings_id": ["Flashforge PA66-CF"], - "filament_type": ["PA-CF"], - "hot_plate_temp": ["100"], - "hot_plate_temp_initial_layer": ["100"], + "filament_density": [ + "1.1" + ], + "filament_max_volumetric_speed": [ + "5" + ], + "filament_settings_id": [ + "Flashforge PA66-CF" + ], + "filament_type": [ + "PA-CF" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], "is_custom_defined": "0", - "nozzle_temperature": ["250"], - "nozzle_temperature_initial_layer": ["250"], - "nozzle_temperature_range_high": ["270"], - "nozzle_temperature_range_low": ["240"], - "pressure_advance": ["0.035"], - "slow_down_layer_time": ["10"], - "slow_down_min_speed": ["10"], - "support_material_interface_fan_speed": ["20"], - "version": "2.0.2.0" -} + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "pressure_advance": [ + "0.035" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "10" + ], + "support_material_interface_fan_speed": [ + "20" + ], + "version": "2.0.2.0", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.4 Nozzle", + "Flashforge Adventurer 5M 0.6 Nozzle", + "Flashforge Adventurer 5M 0.8 Nozzle", + "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "Flashforge Adventurer 5M Pro 0.6 Nozzle", + "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "Flashforge AD5X 0.4 nozzle", + "Flashforge AD5X 0.6 nozzle", + "Flashforge AD5X 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PET-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PET-CF.json index ed5a95565a..03bf58c0ff 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PET-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PET-CF.json @@ -5,18 +5,53 @@ "from": "system", "setting_id": "GFSA04", "instantiation": "true", - "filament_density": ["1.1"], - "filament_max_volumetric_speed": ["5"], - "filament_settings_id": ["Flashforge PET-CF"], - "hot_plate_temp": ["80"], + "filament_density": [ + "1.1" + ], + "filament_max_volumetric_speed": [ + "5" + ], + "filament_settings_id": [ + "Flashforge PET-CF" + ], + "hot_plate_temp": [ + "80" + ], "is_custom_defined": "0", - "nozzle_temperature": ["260"], - "nozzle_temperature_initial_layer": ["260"], - "nozzle_temperature_range_high": ["270"], - "nozzle_temperature_range_low": ["240"], - "pressure_advance": ["0.035"], - "slow_down_layer_time": ["10"], - "slow_down_min_speed": ["10"], - "support_material_interface_fan_speed": ["20"], - "version": "2.0.2.0" -} + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "pressure_advance": [ + "0.035" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "10" + ], + "support_material_interface_fan_speed": [ + "20" + ], + "version": "2.0.2.0", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.4 Nozzle", + "Flashforge Adventurer 5M 0.6 Nozzle", + "Flashforge Adventurer 5M 0.8 Nozzle", + "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "Flashforge Adventurer 5M Pro 0.6 Nozzle", + "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "Flashforge AD5X 0.4 nozzle", + "Flashforge AD5X 0.6 nozzle", + "Flashforge AD5X 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json deleted file mode 100644 index 4304dd8588..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PETG Basic @FF AD5M 0.25 nozzle"], - "from": "system", - "setting_id": "GFSA04_12", - "instantiation": "true", - "inherits": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PETG Basic @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic.json index 3e39d5e92d..3de3cc4e29 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic.json @@ -1,17 +1,42 @@ { "type": "filament", - "additional_cooling_fan_speed": ["60"], - "filament_settings_id": ["Flashforge PETG Basic"], + "additional_cooling_fan_speed": [ + "60" + ], + "filament_settings_id": [ + "Flashforge PETG Basic" + ], "from": "system", "setting_id": "GFSA04", "instantiation": "true", "inherits": "Flashforge Generic PETG", "is_custom_defined": "0", "name": "Flashforge PETG Basic", - "nozzle_temperature": ["265"], - "nozzle_temperature_range_high": ["265"], - "overhang_fan_speed": ["100"], - "slow_down_min_speed": ["20"], - "support_material_interface_fan_speed": ["100"], - "version": "2.1.1.0" -} + "nozzle_temperature": [ + "265" + ], + "nozzle_temperature_range_high": [ + "265" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_min_speed": [ + "20" + ], + "support_material_interface_fan_speed": [ + "100" + ], + "version": "2.1.1.0", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.4 Nozzle", + "Flashforge Adventurer 5M 0.6 Nozzle", + "Flashforge Adventurer 5M 0.8 Nozzle", + "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "Flashforge Adventurer 5M Pro 0.6 Nozzle", + "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "Flashforge AD5X 0.4 nozzle", + "Flashforge AD5X 0.6 nozzle", + "Flashforge AD5X 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json deleted file mode 100644 index ce3f092d2f..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PETG Pro @FF AD5M 0.25 nozzle"], - "from": "system", - "setting_id": "GFSA04_12", - "instantiation": "true", - "inherits": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PETG Pro @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @G3U.json deleted file mode 100644 index bb2ee82bd0..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @G3U.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "filament", - "filament_settings_id": ["Flashforge PETG Pro @G3U"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PETG @G3U", - "is_custom_defined": "0", - "name": "Flashforge PETG Pro @G3U", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro.json index 034473b0a1..a46a98a497 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro.json @@ -1,17 +1,42 @@ { "type": "filament", - "additional_cooling_fan_speed": ["60"], - "filament_settings_id": ["Flashforge PETG Pro"], + "additional_cooling_fan_speed": [ + "60" + ], + "filament_settings_id": [ + "Flashforge PETG Pro" + ], "from": "system", "setting_id": "GFSA04", "instantiation": "true", "inherits": "Flashforge Generic PETG", "is_custom_defined": "0", "name": "Flashforge PETG Pro", - "nozzle_temperature": ["265"], - "nozzle_temperature_range_high": ["260"], - "overhang_fan_speed": ["100"], - "slow_down_min_speed": ["20"], - "support_material_interface_fan_speed": ["100"], - "version": "2.1.1.0" -} + "nozzle_temperature": [ + "265" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_min_speed": [ + "20" + ], + "support_material_interface_fan_speed": [ + "100" + ], + "version": "2.1.1.0", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.4 Nozzle", + "Flashforge Adventurer 5M 0.6 Nozzle", + "Flashforge Adventurer 5M 0.8 Nozzle", + "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "Flashforge Adventurer 5M Pro 0.6 Nozzle", + "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "Flashforge AD5X 0.4 nozzle", + "Flashforge AD5X 0.6 nozzle", + "Flashforge AD5X 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json deleted file mode 100644 index 320903b1fa..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PETG Transparent @FF AD5M 0.25 nozzle"], - "from": "system", - "setting_id": "GFSA04_12", - "instantiation": "true", - "inherits": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PETG Transparent @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @G3U.json deleted file mode 100644 index 50b09609d5..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @G3U.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "filament", - "filament_settings_id": ["Flashforge PETG Transparent @G3U"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PETG @G3U", - "is_custom_defined": "0", - "name": "Flashforge PETG Transparent @G3U", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent.json index 3dfb2b2bdc..0e80921768 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent.json @@ -1,17 +1,42 @@ { "type": "filament", - "additional_cooling_fan_speed": ["60"], - "filament_settings_id": ["Flashforge PETG Transparent"], + "additional_cooling_fan_speed": [ + "60" + ], + "filament_settings_id": [ + "Flashforge PETG Transparent" + ], "from": "system", "setting_id": "GFSA04", "instantiation": "true", "inherits": "Flashforge Generic PETG", "is_custom_defined": "0", "name": "Flashforge PETG Transparent", - "nozzle_temperature": ["265"], - "nozzle_temperature_range_high": ["265"], - "overhang_fan_speed": ["100"], - "slow_down_min_speed": ["20"], - "support_material_interface_fan_speed": ["100"], - "version": "2.1.1.0" -} + "nozzle_temperature": [ + "265" + ], + "nozzle_temperature_range_high": [ + "265" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_min_speed": [ + "20" + ], + "support_material_interface_fan_speed": [ + "100" + ], + "version": "2.1.1.0", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.4 Nozzle", + "Flashforge Adventurer 5M 0.6 Nozzle", + "Flashforge Adventurer 5M 0.8 Nozzle", + "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "Flashforge Adventurer 5M Pro 0.6 Nozzle", + "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "Flashforge AD5X 0.4 nozzle", + "Flashforge AD5X 0.6 nozzle", + "Flashforge AD5X 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @G3U.json deleted file mode 100644 index 06be8ad00d..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @G3U.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "filament", - "filament_settings_id": ["Flashforge PETG-CF @G3U"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PETG-CF @G3U", - "is_custom_defined": "0", - "name": "Flashforge PETG-CF @G3U", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF.json deleted file mode 100644 index f409abe82e..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PETG-CF"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PETG-CF10", - "is_custom_defined": "0", - "name": "Flashforge PETG-CF", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json deleted file mode 100644 index bde1b9fc40..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PLA Basic @FF AD5M 0.25 nozzle"], - "from": "system", - "setting_id": "FFFP02_01", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Basic @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @G3U.json deleted file mode 100644 index fa4562a046..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @G3U.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "filament", - "filament_settings_id": ["Flashforge PLA Basic @G3U"], - "from": "system", - "filament_id": "FFF01", - "setting_id": "FFFP03", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @G3U", - "is_custom_defined": "0", - "name": "Flashforge PLA Basic @G3U", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic.json deleted file mode 100644 index 62cd4c6b03..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PLA Basic"], - "from": "system", - "filament_id": "FFF01", - "setting_id": "FFFP02", - "instantiation": "true", - "inherits": "Flashforge Generic PLA", - "filament_vendor": ["Flashforge"], - "is_custom_defined": "0", - "name": "Flashforge PLA Basic", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json deleted file mode 100644 index b556520cc4..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PLA Color Change @FF AD5M 0.25 nozzle"], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Color Change @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @G3U.json deleted file mode 100644 index e6e7c5884a..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @G3U.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "filament", - "filament_settings_id": ["Flashforge PLA Color Change @G3U"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @G3U", - "is_custom_defined": "0", - "name": "Flashforge PLA Color Change @G3U", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change.json deleted file mode 100644 index 5fb981cc5f..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PLA Color Change"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Color Change", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json deleted file mode 100644 index 06333fa409..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PLA Galaxy @FF AD5M 0.25 nozzle"], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Galaxy @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @G3U.json deleted file mode 100644 index f3c5b3b817..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @G3U.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "filament", - "filament_settings_id": ["Flashforge PLA Galaxy @G3U"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @G3U", - "is_custom_defined": "0", - "name": "Flashforge PLA Galaxy @G3U", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy.json deleted file mode 100644 index c1374d0cf7..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PLA Galaxy"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Galaxy", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json deleted file mode 100644 index e5ea794ec9..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PLA Luminous @FF AD5M 0.25 nozzle"], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Luminous @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @G3U.json deleted file mode 100644 index f34c00984c..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @G3U.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "filament", - "filament_settings_id": ["Flashforge PLA Luminous @G3U"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @G3U", - "is_custom_defined": "0", - "name": "Flashforge PLA Luminous @G3U", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous.json deleted file mode 100644 index 83f6ffc50e..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PLA Luminous"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Luminous", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json deleted file mode 100644 index 22e18ff58d..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PLA Matte @FF AD5M 0.25 nozzle"], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Matte @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @G3U.json deleted file mode 100644 index 4b3855bea6..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @G3U.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "filament", - "filament_settings_id": ["Flashforge PLA Matte @G3U"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @G3U", - "is_custom_defined": "0", - "name": "Flashforge PLA Matte @G3U", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte.json deleted file mode 100644 index eff4c213df..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "filament_max_volumetric_speed": ["22"], - "filament_settings_id": ["Flashforge PLA Matte"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Matte", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json deleted file mode 100644 index 8355ccc0a1..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PLA Metal @FF AD5M 0.25 nozzle"], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Metal @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @G3U.json deleted file mode 100644 index 4c1488d19c..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @G3U.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "filament", - "filament_settings_id": ["Flashforge PLA Metal @G3U"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @G3U", - "is_custom_defined": "0", - "name": "Flashforge PLA Metal @G3U", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal.json deleted file mode 100644 index 4cf55a79c7..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PLA Metal"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Metal", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json deleted file mode 100644 index 6ac0546999..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PLA Pro @FF AD5M 0.25 nozzle"], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Pro @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @G3U.json deleted file mode 100644 index f609611ed2..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @G3U.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "filament", - "filament_settings_id": ["Flashforge PLA Pro @G3U"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @G3U", - "is_custom_defined": "0", - "name": "Flashforge PLA Pro @G3U", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro.json deleted file mode 100644 index 9e1b61518d..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PLA Pro"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Pro", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @G3U.json deleted file mode 100644 index bb92ab2b80..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @G3U.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "filament", - "filament_settings_id": ["Flashforge PLA Silk @G3U"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @G3U", - "is_custom_defined": "0", - "name": "Flashforge PLA Silk @G3U", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json deleted file mode 100644 index a5b9d6fbbb..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PLA Silk @FF AD5M 0.25 nozzle"], - "from": "system", - "setting_id": "GFSA04_25", - "instantiation": "true", - "inherits": "Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Silk @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk.json deleted file mode 100644 index 28e6430cc2..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PLA Silk"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA-Silk", - "is_custom_defined": "0", - "name": "Flashforge PLA Silk", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json deleted file mode 100644 index 2a68967f94..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PLA Sparkle @FF AD5M 0.25 nozzle"], - "from": "system", - "setting_id": "GFSA04_19", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "is_custom_defined": "0", - "name": "Flashforge PLA Sparkle @FF AD5M 0.25 nozzle", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @G3U.json deleted file mode 100644 index 43ff480f8e..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @G3U.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "filament", - "filament_settings_id": ["Flashforge PLA Sparkle @G3U"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA @G3U", - "is_custom_defined": "0", - "name": "Flashforge PLA Sparkle @G3U", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle.json deleted file mode 100644 index e0677daf4f..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PLA Sparkle"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA", - "is_custom_defined": "0", - "name": "Flashforge PLA Sparkle", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @G3U.json deleted file mode 100644 index 28b69380ad..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @G3U.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "filament", - "filament_settings_id": ["Flashforge PLA-CF @G3U"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA-CF @G3U", - "is_custom_defined": "0", - "name": "Flashforge PLA-CF @G3U", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF.json deleted file mode 100644 index 6de2aa6c56..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge PLA-CF"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PLA-CF10", - "is_custom_defined": "0", - "name": "Flashforge PLA-CF", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-CF.json index a49314a2fd..16fe4acb3b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-CF.json @@ -5,20 +5,59 @@ "from": "system", "setting_id": "GFSA04", "instantiation": "true", - "filament_flow_ratio": ["0.99"], - "filament_max_volumetric_speed": ["5"], - "filament_settings_id": ["Flashforge PPA-CF"], - "filament_type": ["PPA-CF"], - "hot_plate_temp": ["90"], - "hot_plate_temp_initial_layer": ["90"], + "filament_flow_ratio": [ + "0.99" + ], + "filament_max_volumetric_speed": [ + "5" + ], + "filament_settings_id": [ + "Flashforge PPA-CF" + ], + "filament_type": [ + "PPA-CF" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], "is_custom_defined": "0", - "nozzle_temperature": ["270"], - "nozzle_temperature_initial_layer": ["270"], - "nozzle_temperature_range_high": ["290"], - "nozzle_temperature_range_low": ["260"], - "overhang_fan_speed": ["20"], - "slow_down_layer_time": ["10"], - "slow_down_min_speed": ["10"], - "support_material_interface_fan_speed": ["20"], - "version": "2.0.2.0" -} + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature_range_high": [ + "290" + ], + "nozzle_temperature_range_low": [ + "260" + ], + "overhang_fan_speed": [ + "20" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "10" + ], + "support_material_interface_fan_speed": [ + "20" + ], + "version": "2.0.2.0", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.4 Nozzle", + "Flashforge Adventurer 5M 0.6 Nozzle", + "Flashforge Adventurer 5M 0.8 Nozzle", + "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "Flashforge Adventurer 5M Pro 0.6 Nozzle", + "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "Flashforge AD5X 0.4 nozzle", + "Flashforge AD5X 0.6 nozzle", + "Flashforge AD5X 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-GF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-GF.json index 919934be60..f603e541d4 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-GF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-GF.json @@ -5,22 +5,65 @@ "from": "system", "setting_id": "GFSA04", "instantiation": "true", - "fan_max_speed": ["40"], - "fan_min_speed": ["20"], - "filament_flow_ratio": ["1.03"], - "filament_max_volumetric_speed": ["5"], - "filament_settings_id": ["Flashforge PPA-GF"], - "filament_type": ["PPA-GF"], - "hot_plate_temp": ["90"], - "hot_plate_temp_initial_layer": ["90"], + "fan_max_speed": [ + "40" + ], + "fan_min_speed": [ + "20" + ], + "filament_flow_ratio": [ + "1.03" + ], + "filament_max_volumetric_speed": [ + "5" + ], + "filament_settings_id": [ + "Flashforge PPA-GF" + ], + "filament_type": [ + "PPA-GF" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], "is_custom_defined": "0", - "nozzle_temperature": ["270"], - "nozzle_temperature_initial_layer": ["270"], - "nozzle_temperature_range_high": ["290"], - "nozzle_temperature_range_low": ["260"], - "overhang_fan_speed": ["20"], - "slow_down_layer_time": ["10"], - "slow_down_min_speed": ["10"], - "support_material_interface_fan_speed": ["20"], - "version": "2.0.2.0" -} + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature_range_high": [ + "290" + ], + "nozzle_temperature_range_low": [ + "260" + ], + "overhang_fan_speed": [ + "20" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "10" + ], + "support_material_interface_fan_speed": [ + "20" + ], + "version": "2.0.2.0", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.4 Nozzle", + "Flashforge Adventurer 5M 0.6 Nozzle", + "Flashforge Adventurer 5M 0.8 Nozzle", + "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "Flashforge Adventurer 5M Pro 0.6 Nozzle", + "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "Flashforge AD5X 0.4 nozzle", + "Flashforge AD5X 0.6 nozzle", + "Flashforge AD5X 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS-CF.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS-CF.json index 868e46c40b..fafee94f8d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS-CF.json @@ -5,20 +5,59 @@ "from": "system", "setting_id": "GFSA04", "instantiation": "true", - "filament_flow_ratio": ["0.99"], - "filament_max_volumetric_speed": ["5"], - "filament_settings_id": ["Flashforge PPS-CF"], - "filament_type": ["PPS-CF"], - "hot_plate_temp": ["90"], - "hot_plate_temp_initial_layer": ["90"], + "filament_flow_ratio": [ + "0.99" + ], + "filament_max_volumetric_speed": [ + "5" + ], + "filament_settings_id": [ + "Flashforge PPS-CF" + ], + "filament_type": [ + "PPS-CF" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], "is_custom_defined": "0", - "nozzle_temperature": ["305"], - "nozzle_temperature_initial_layer": ["305"], - "nozzle_temperature_range_high": ["320"], - "nozzle_temperature_range_low": ["300"], - "overhang_fan_speed": ["20"], - "slow_down_layer_time": ["10"], - "slow_down_min_speed": ["10"], - "support_material_interface_fan_speed": ["20"], - "version": "2.0.2.0" -} + "nozzle_temperature": [ + "305" + ], + "nozzle_temperature_initial_layer": [ + "305" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "300" + ], + "overhang_fan_speed": [ + "20" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "10" + ], + "support_material_interface_fan_speed": [ + "20" + ], + "version": "2.0.2.0", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.4 Nozzle", + "Flashforge Adventurer 5M 0.6 Nozzle", + "Flashforge Adventurer 5M 0.8 Nozzle", + "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "Flashforge Adventurer 5M Pro 0.6 Nozzle", + "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "Flashforge AD5X 0.4 nozzle", + "Flashforge AD5X 0.6 nozzle", + "Flashforge AD5X 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PVA @G3U.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PVA @G3U.json deleted file mode 100644 index 5578e2a5e2..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PVA @G3U.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "filament", - "filament_settings_id": ["Flashforge PVA @G3U"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic PVA", - "is_custom_defined": "0", - "name": "Flashforge PVA @G3U", - "version": "2.1.1.0" -} diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A.json deleted file mode 100644 index 32c9a72178..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "filament_settings_id": ["Flashforge TPU 95A"], - "from": "system", - "setting_id": "GFSA04", - "instantiation": "true", - "inherits": "Flashforge Generic TPU", - "is_custom_defined": "0", - "name": "Flashforge TPU 95A", - "version": "2.1.1.0" -} From 6e473fd5fa1b67cc68b73ca7317e7ae6a3e7a9ee Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 22 Feb 2025 13:27:25 +0800 Subject: [PATCH 097/129] fix more Flashforge issues --- ...shforge ABS Basic @FF G4P 0.25 nozzle.json | 2 +- ...ashforge ABS Basic @FF G4P 0.6 nozzle.json | 149 +++++++++++++----- ...hforge ASA Basic @FF AD5X 0.25 nozzle.json | 2 +- ...shforge ASA Basic @FF G4P 0.25 nozzle.json | 2 +- ...lashforge HS PETG @FF G4P 0.25 nozzle.json | 2 +- ...Flashforge HS PLA @FF G4P 0.25 nozzle.json | 2 +- ...ashforge PETG Pro @FF G4P 0.25 nozzle.json | 2 +- ... PETG Transparent @FF G4P 0.25 nozzle.json | 2 +- ...hforge PLA Basic @FF AD5X 0.25 nozzle.json | 2 +- ...shforge PLA Basic @FF AD5X 0.6 nozzle.json | 3 +- ...shforge PLA Basic @FF AD5X 0.8 nozzle.json | 2 +- .../Flashforge PLA Basic @FF AD5X.json | 2 +- ...shforge PLA Basic @FF G4P 0.25 nozzle.json | 3 +- ... PLA Color Change @FF G4P 0.25 nozzle.json | 2 +- ...hforge PLA Galaxy @FF G4P 0.25 nozzle.json | 2 +- ...orge PLA Luminous @FF G4P 0.25 nozzle.json | 2 +- ...shforge PLA Matte @FF G4P 0.25 nozzle.json | 2 +- ...shforge PLA Metal @FF G4P 0.25 nozzle.json | 2 +- ...lashforge PLA Pro @FF G4P 0.25 nozzle.json | 2 +- ...ashforge PLA Silk @FF G4P 0.25 nozzle.json | 2 +- ...forge PLA Sparkle @FF G4P 0.25 nozzle.json | 2 +- 21 files changed, 126 insertions(+), 65 deletions(-) diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.25 nozzle.json index 5dff012e13..c31ffb76da 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.25 nozzle.json @@ -11,7 +11,7 @@ "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], "hot_plate_temp": ["100"], "hot_plate_temp_initial_layer": ["100"], - "inherits": "Flashforge ABS @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge ABS Basic @FF G4P", "is_custom_defined": "0", "name": "Flashforge ABS Basic @FF G4P 0.25 nozzle", "pressure_advance": ["0.04"], diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 nozzle.json index 3844672339..fa15d18d38 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 nozzle.json @@ -1,44 +1,107 @@ { - "activate_air_filtration": ["1"], - "activate_chamber_temp_control": ["1"], - "chamber_temperature": ["60"], - "complete_print_exhaust_fan_speed": ["40"], - "cool_plate_temp": ["0"], - "cool_plate_temp_initial_layer": ["0"], - "during_print_exhaust_fan_speed": ["40"], - "eng_plate_temp": ["115"], - "eng_plate_temp_initial_layer": ["115"], - "fan_cooling_layer_time": ["35"], - "fan_max_speed": ["60"], - "fan_min_speed": ["25"], - "filament_cost": ["30"], - "filament_flow_ratio": ["0.95"], - "filament_load_time": ["29"], - "filament_max_volumetric_speed": ["28"], - "filament_minimal_purge_on_wipe_tower": ["15"], - "filament_settings_id": ["Flashforge ABS Basic @FF G4P 0.6 nozzle"], - "filament_start_gcode": [ - "; filament start gcode\n;right_extruder_material:ABS" - ], - "filament_unload_time": ["29"], - "from": "system", - "instantiation": "true", - "compatible_printers": ["Flashforge Guider4 Pro 0.6 nozzle"], - "hot_plate_temp": ["115"], - "hot_plate_temp_initial_layer": ["115"], - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", - "is_custom_defined": "0", - "tujiawei": null, - "name": "Flashforge ABS Basic @FF G4P 0.6 nozzle", - "nozzle_temperature": ["260"], - "nozzle_temperature_initial_layer": ["260"], - "nozzle_temperature_range_high": ["280"], - "overhang_fan_speed": ["90"], - "pressure_advance": ["0.025"], - "slow_down_layer_time": ["10"], - "slow_down_min_speed": ["20"], - "support_material_interface_fan_speed": ["90"], - "textured_plate_temp": ["115"], - "textured_plate_temp_initial_layer": ["115"], - "version": "2.1.1.0" -} + "activate_air_filtration": [ + "1" + ], + "activate_chamber_temp_control": [ + "1" + ], + "chamber_temperature": [ + "60" + ], + "complete_print_exhaust_fan_speed": [ + "40" + ], + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "during_print_exhaust_fan_speed": [ + "40" + ], + "eng_plate_temp": [ + "115" + ], + "eng_plate_temp_initial_layer": [ + "115" + ], + "fan_cooling_layer_time": [ + "35" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "25" + ], + "filament_cost": [ + "30" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_load_time": [ + "29" + ], + "filament_max_volumetric_speed": [ + "28" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_settings_id": [ + "Flashforge ABS Basic @FF G4P 0.6 nozzle" + ], + "filament_start_gcode": [ + "; filament start gcode\n;right_extruder_material:ABS" + ], + "filament_unload_time": [ + "29" + ], + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider4 Pro 0.6 nozzle" + ], + "hot_plate_temp": [ + "115" + ], + "hot_plate_temp_initial_layer": [ + "115" + ], + "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "is_custom_defined": "0", + "name": "Flashforge ABS Basic @FF G4P 0.6 nozzle", + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "90" + ], + "pressure_advance": [ + "0.025" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "support_material_interface_fan_speed": [ + "90" + ], + "textured_plate_temp": [ + "115" + ], + "textured_plate_temp_initial_layer": [ + "115" + ], + "version": "2.1.1.0" +} \ No newline at end of file diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json index 23d675893d..00826c6725 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json @@ -17,7 +17,7 @@ "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], "hot_plate_temp": ["100"], "hot_plate_temp_initial_layer": ["100"], - "inherits": "Flashforge Generic ASA @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge ASA Basic @FF AD5X", "is_custom_defined": "0", "name": "Flashforge ASA Basic @FF AD5X 0.25 nozzle", "nozzle_temperature_initial_layer": ["265"], diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.25 nozzle.json index 78322973bb..f19a581e36 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.25 nozzle.json @@ -15,7 +15,7 @@ "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], "hot_plate_temp": ["100"], "hot_plate_temp_initial_layer": ["100"], - "inherits": "Flashforge ABS @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge ASA Basic @FF AD5X", "is_custom_defined": "0", "name": "Flashforge ASA Basic @FF G4P 0.25 nozzle", "pressure_advance": ["0.04"], diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.25 nozzle.json index fab856ec05..317ca85c48 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.25 nozzle.json @@ -14,7 +14,7 @@ "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], "hot_plate_temp": ["80"], "hot_plate_temp_initial_layer": ["80"], - "inherits": "Flashforge PETG @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge HS PETG @FF G4P", "is_custom_defined": "0", "name": "Flashforge HS PETG @FF G4P 0.25 nozzle", "nozzle_temperature": ["230"], diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.25 nozzle.json index ea97967ae5..d037344923 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.25 nozzle.json @@ -12,7 +12,7 @@ "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], "hot_plate_temp": ["55"], "hot_plate_temp_initial_layer": ["55"], - "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge HS PLA @FF G4P", "is_custom_defined": "0", "name": "Flashforge HS PLA @FF G4P 0.25 nozzle", "nozzle_temperature": ["210"], diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.25 nozzle.json index ad76b2e3c7..6c7ed7eebb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.25 nozzle.json @@ -14,7 +14,7 @@ "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], "hot_plate_temp": ["80"], "hot_plate_temp_initial_layer": ["80"], - "inherits": "Flashforge PETG @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge PETG Pro @FF G4P", "is_custom_defined": "0", "name": "Flashforge PETG Pro @FF G4P 0.25 nozzle", "pressure_advance": ["0.045"], diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json index c23eb98c98..bcfba9e700 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json @@ -14,7 +14,7 @@ "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], "hot_plate_temp": ["80"], "hot_plate_temp_initial_layer": ["80"], - "inherits": "Flashforge PETG @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge PETG Transparent @FF G4P", "is_custom_defined": "0", "name": "Flashforge PETG Transparent @FF G4P 0.25 nozzle", "pressure_advance": ["0.045"], diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json index 55b0e09093..c574e35fed 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json @@ -14,7 +14,7 @@ "compatible_printers": ["Flashforge AD5X 0.25 nozzle"], "hot_plate_temp": ["60"], "hot_plate_temp_initial_layer": ["60"], - "inherits": "Flashforge PLA Basic", + "inherits": "Flashforge Generic PLA", "is_custom_defined": "0", "name": "Flashforge PLA Basic @FF AD5X 0.25 nozzle", "nozzle_temperature": ["210"], diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json index 18d724ba49..3645b0f196 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json @@ -4,7 +4,6 @@ "filament_flow_ratio": ["1"], "filament_load_time": ["29"], "filament_max_volumetric_speed": ["21"], - "filament_settings_id": ["Flashforge PLA Basic @FF AD5X 0.6 nozzle"], "filament_unload_time": ["29"], "from": "system", "setting_id": "FFFP03_02", @@ -12,7 +11,7 @@ "compatible_printers": ["Flashforge AD5X 0.6 nozzle"], "hot_plate_temp": ["60"], "hot_plate_temp_initial_layer": ["60"], - "inherits": "Flashforge PLA Basic", + "inherits": "Flashforge Generic PLA", "is_custom_defined": "0", "name": "Flashforge PLA Basic @FF AD5X 0.6 nozzle", "nozzle_temperature": ["210"], diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json index d84741db86..cbf6c2a2c6 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json @@ -12,7 +12,7 @@ "compatible_printers": ["Flashforge AD5X 0.8 nozzle"], "hot_plate_temp": ["60"], "hot_plate_temp_initial_layer": ["60"], - "inherits": "Flashforge PLA Basic", + "inherits": "Flashforge Generic PLA", "is_custom_defined": "0", "name": "Flashforge PLA Basic @FF AD5X 0.8 nozzle", "nozzle_temperature": ["210"], diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X.json index 3fe602bfff..56e33dcc65 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X.json @@ -11,7 +11,7 @@ "instantiation": "true", "hot_plate_temp": ["60"], "hot_plate_temp_initial_layer": ["60"], - "inherits": "Flashforge PLA Basic", + "inherits": "Flashforge Generic PLA", "is_custom_defined": "0", "name": "Flashforge PLA Basic @FF AD5X", "compatible_printers": ["Flashforge AD5X 0.4 nozzle"], diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.25 nozzle.json index 594333ab30..4dc79be652 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.25 nozzle.json @@ -5,14 +5,13 @@ "filament_flow_ratio": ["0.97"], "filament_load_time": ["29"], "filament_max_volumetric_speed": ["12"], - "filament_settings_id": ["Flashforge PLA Basic @FF G4P 0.25 nozzle"], "filament_unload_time": ["29"], "from": "system", "instantiation": "true", "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], "hot_plate_temp": ["55"], "hot_plate_temp_initial_layer": ["55"], - "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge PLA Basic @FF G4P", "is_custom_defined": "0", "name": "Flashforge PLA Basic @FF G4P 0.25 nozzle", "nozzle_temperature": ["210"], diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json index 67c580055e..c82afd0867 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json @@ -12,7 +12,7 @@ "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], "hot_plate_temp": ["55"], "hot_plate_temp_initial_layer": ["55"], - "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge PLA Basic @FF G4P", "is_custom_defined": "0", "name": "Flashforge PLA Color Change @FF G4P 0.25 nozzle", "nozzle_temperature": ["210"], diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json index 8731815557..96cb753d2b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json @@ -12,7 +12,7 @@ "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], "hot_plate_temp": ["55"], "hot_plate_temp_initial_layer": ["55"], - "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge PLA Basic @FF G4P", "is_custom_defined": "0", "name": "Flashforge PLA Galaxy @FF G4P 0.25 nozzle", "nozzle_temperature": ["210"], diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json index acac411c8e..9daf3ce87d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json @@ -12,7 +12,7 @@ "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], "hot_plate_temp": ["55"], "hot_plate_temp_initial_layer": ["55"], - "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge PLA Basic @FF G4P", "is_custom_defined": "0", "name": "Flashforge PLA Luminous @FF G4P 0.25 nozzle", "nozzle_temperature": ["210"], diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.25 nozzle.json index a9e91dc942..fe2bd2cb8c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.25 nozzle.json @@ -12,7 +12,7 @@ "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], "hot_plate_temp": ["55"], "hot_plate_temp_initial_layer": ["55"], - "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge PLA Basic @FF G4P", "is_custom_defined": "0", "name": "Flashforge PLA Matte @FF G4P 0.25 nozzle", "nozzle_temperature": ["210"], diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.25 nozzle.json index e00b1cf798..c0887ecd2f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.25 nozzle.json @@ -12,7 +12,7 @@ "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], "hot_plate_temp": ["55"], "hot_plate_temp_initial_layer": ["55"], - "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge PLA Basic @FF G4P", "is_custom_defined": "0", "name": "Flashforge PLA Metal @FF G4P 0.25 nozzle", "nozzle_temperature": ["210"], diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.25 nozzle.json index 2e3828ed7d..aae0c2b1cb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.25 nozzle.json @@ -12,7 +12,7 @@ "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], "hot_plate_temp": ["55"], "hot_plate_temp_initial_layer": ["55"], - "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge PLA Basic @FF G4P", "is_custom_defined": "0", "name": "Flashforge PLA Pro @FF G4P 0.25 nozzle", "nozzle_temperature": ["210"], diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.25 nozzle.json index 66e38fc398..e2956c5a36 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.25 nozzle.json @@ -12,7 +12,7 @@ "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], "hot_plate_temp": ["55"], "hot_plate_temp_initial_layer": ["55"], - "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge PLA Basic @FF G4P", "is_custom_defined": "0", "name": "Flashforge PLA Silk @FF G4P 0.25 nozzle", "nozzle_temperature": ["210"], diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json index 1f1db3e04a..56ba5849ff 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json @@ -12,7 +12,7 @@ "compatible_printers": ["Flashforge Guider4 Pro 0.25 nozzle"], "hot_plate_temp": ["55"], "hot_plate_temp_initial_layer": ["55"], - "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", + "inherits": "Flashforge PLA Basic @FF G4P", "is_custom_defined": "0", "name": "Flashforge PLA Sparkle @FF G4P 0.25 nozzle", "nozzle_temperature": ["210"], From 4c28dd5ba0961c6ad5ebed37e33828d367f1d63c Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 22 Feb 2025 15:09:33 +0800 Subject: [PATCH 098/129] Add some AliZ filament profiles as example (#8496) --- resources/profiles/BBL.json | 3624 +++++++++-------- .../BBL/filament/AliZ/AliZ PA-CF @P1-X1.json | 21 + .../BBL/filament/AliZ/AliZ PETG @P1-X1.json | 22 + .../filament/AliZ/AliZ PETG-CF @P1-X1.json | 21 + .../filament/AliZ/AliZ PETG-Metal @P1-X1.json | 21 + .../BBL/filament/AliZ/AliZ PLA @P1-X1.json | 21 + resources/profiles/OrcaFilamentLibrary.json | 40 + .../filament/AliZ/AliZ PA-CF @System.json | 9 + .../filament/AliZ/AliZ PA-CF @base.json | 77 + .../filament/AliZ/AliZ PETG @System.json | 10 + .../filament/AliZ/AliZ PETG @base.json | 56 + .../filament/AliZ/AliZ PETG-CF @System.json | 8 + .../filament/AliZ/AliZ PETG-CF @base.json | 74 + .../AliZ/AliZ PETG-Metal @System.json | 9 + .../filament/AliZ/AliZ PETG-Metal @base.json | 64 + .../filament/AliZ/AliZ PLA @System.json | 9 + .../filament/AliZ/AliZ PLA @base.json | 43 + 17 files changed, 2331 insertions(+), 1798 deletions(-) create mode 100644 resources/profiles/BBL/filament/AliZ/AliZ PA-CF @P1-X1.json create mode 100644 resources/profiles/BBL/filament/AliZ/AliZ PETG @P1-X1.json create mode 100644 resources/profiles/BBL/filament/AliZ/AliZ PETG-CF @P1-X1.json create mode 100644 resources/profiles/BBL/filament/AliZ/AliZ PETG-Metal @P1-X1.json create mode 100644 resources/profiles/BBL/filament/AliZ/AliZ PLA @P1-X1.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PA-CF @System.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PA-CF @base.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG @System.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG @base.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-CF @System.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-CF @base.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-Metal @System.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-Metal @base.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PLA @System.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PLA @base.json diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index 45dcdb8df5..7848733ac3 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -605,22 +605,30 @@ "name": "fdm_filament_common", "sub_path": "filament/fdm_filament_common.json" }, - { - "name": "fdm_filament_pla", - "sub_path": "filament/fdm_filament_pla.json" - }, - { - "name": "fdm_filament_tpu", - "sub_path": "filament/fdm_filament_tpu.json" - }, - { - "name": "fdm_filament_pet", - "sub_path": "filament/fdm_filament_pet.json" - }, { "name": "fdm_filament_abs", "sub_path": "filament/fdm_filament_abs.json" }, + { + "name": "fdm_filament_asa", + "sub_path": "filament/fdm_filament_asa.json" + }, + { + "name": "fdm_filament_bvoh", + "sub_path": "filament/fdm_filament_bvoh.json" + }, + { + "name": "fdm_filament_eva", + "sub_path": "filament/fdm_filament_eva.json" + }, + { + "name": "fdm_filament_hips", + "sub_path": "filament/fdm_filament_hips.json" + }, + { + "name": "fdm_filament_pa", + "sub_path": "filament/fdm_filament_pa.json" + }, { "name": "fdm_filament_pc", "sub_path": "filament/fdm_filament_pc.json" @@ -629,282 +637,50 @@ "name": "fdm_filament_pctg", "sub_path": "filament/fdm_filament_pctg.json" }, - { - "name": "fdm_filament_asa", - "sub_path": "filament/fdm_filament_asa.json" - }, - { - "name": "fdm_filament_pva", - "sub_path": "filament/fdm_filament_pva.json" - }, - { - "name": "fdm_filament_pa", - "sub_path": "filament/fdm_filament_pa.json" - }, - { - "name": "fdm_filament_hips", - "sub_path": "filament/fdm_filament_hips.json" - }, - { - "name": "fdm_filament_pps", - "sub_path": "filament/fdm_filament_pps.json" - }, - { - "name": "fdm_filament_ppa", - "sub_path": "filament/fdm_filament_ppa.json" - }, { "name": "fdm_filament_pe", "sub_path": "filament/fdm_filament_pe.json" }, { - "name": "fdm_filament_pp", - "sub_path": "filament/fdm_filament_pp.json" - }, - { - "name": "fdm_filament_eva", - "sub_path": "filament/fdm_filament_eva.json" + "name": "fdm_filament_pet", + "sub_path": "filament/fdm_filament_pet.json" }, { "name": "fdm_filament_pha", "sub_path": "filament/fdm_filament_pha.json" }, { - "name": "fdm_filament_bvoh", - "sub_path": "filament/fdm_filament_bvoh.json" + "name": "fdm_filament_pla", + "sub_path": "filament/fdm_filament_pla.json" + }, + { + "name": "fdm_filament_pp", + "sub_path": "filament/fdm_filament_pp.json" + }, + { + "name": "fdm_filament_ppa", + "sub_path": "filament/fdm_filament_ppa.json" + }, + { + "name": "fdm_filament_pps", + "sub_path": "filament/fdm_filament_pps.json" + }, + { + "name": "fdm_filament_pva", + "sub_path": "filament/fdm_filament_pva.json" }, { "name": "fdm_filament_sbs", "sub_path": "filament/fdm_filament_sbs.json" }, { - "name": "Bambu PLA Matte @base", - "sub_path": "filament/Bambu PLA Matte @base.json" - }, - { - "name": "Bambu PLA Basic @base", - "sub_path": "filament/Bambu PLA Basic @base.json" - }, - { - "name": "Bambu PLA Tough @base", - "sub_path": "filament/Bambu PLA Tough @base.json" - }, - { - "name": "Bambu PLA Marble @base", - "sub_path": "filament/Bambu PLA Marble @base.json" - }, - { - "name": "Bambu PLA Sparkle @base", - "sub_path": "filament/Bambu PLA Sparkle @base.json" - }, - { - "name": "Bambu PLA Impact @base", - "sub_path": "filament/Bambu PLA Impact @base.json" - }, - { - "name": "Bambu PLA Metal @base", - "sub_path": "filament/Bambu PLA Metal @base.json" - }, - { - "name": "Bambu PLA Silk @base", - "sub_path": "filament/Bambu PLA Silk @base.json" - }, - { - "name": "Bambu Support W @base", - "sub_path": "filament/Bambu Support W @base.json" - }, - { - "name": "SUNLU PLA Matte @base", - "sub_path": "filament/SUNLU/SUNLU PLA Matte @base.json" - }, - { - "name": "SUNLU PLA+ @base", - "sub_path": "filament/SUNLU/SUNLU PLA+ @base.json" - }, - { - "name": "SUNLU PLA+ 2.0 @base", - "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @base.json" - }, - { - "name": "SUNLU Silk PLA+ @base", - "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @base.json" - }, - { - "name": "SUNLU PLA Marble @base", - "sub_path": "filament/SUNLU/SUNLU Marble PLA @base.json" - }, - { - "name": "SUNLU Wood PLA @base", - "sub_path": "filament/SUNLU/SUNLU Wood PLA @base.json" - }, - { - "name": "SUNLU PETG @base", - "sub_path": "filament/SUNLU/SUNLU PETG @base.json" - }, - { - "name": "eSUN PLA+ @base", - "sub_path": "filament/eSUN PLA+ @base.json" - }, - { - "name": "PolyTerra PLA @base", - "sub_path": "filament/PolyTerra PLA @base.json" - }, - { - "name": "PolyLite PLA @base", - "sub_path": "filament/PolyLite PLA @base.json" - }, - { - "name": "Generic PLA @base", - "sub_path": "filament/Generic PLA @base.json" - }, - { - "name": "Generic PLA Silk @base", - "sub_path": "filament/Generic PLA Silk @base.json" - }, - { - "name": "Generic PLA-CF @base", - "sub_path": "filament/Generic PLA-CF @base.json" - }, - { - "name": "Generic SBS @base", - "sub_path": "filament/Generic SBS @base.json" - }, - { - "name": "Bambu PLA-CF @base", - "sub_path": "filament/Bambu PLA-CF @base.json" - }, - { - "name": "Bambu Support For PLA @base", - "sub_path": "filament/Bambu Support For PLA @base.json" - }, - { - "name": "Bambu PLA Aero @base", - "sub_path": "filament/Bambu PLA Aero @base.json" - }, - { - "name": "Overture PLA @base", - "sub_path": "filament/Overture PLA @base.json" - }, - { - "name": "Overture Matte PLA @base", - "sub_path": "filament/Overture Matte PLA @base.json" - }, - { - "name": "Generic PLA High Speed @base", - "sub_path": "filament/Generic PLA High Speed @base.json" - }, - { - "name": "Bambu PLA Glow @base", - "sub_path": "filament/Bambu PLA Glow @base.json" - }, - { - "name": "Bambu PLA Dynamic @base", - "sub_path": "filament/Bambu PLA Dynamic @base.json" - }, - { - "name": "Bambu PLA Galaxy @base", - "sub_path": "filament/Bambu PLA Galaxy @base.json" - }, - { - "name": "Bambu Support For PLA/PETG @base", - "sub_path": "filament/Bambu Support For PLA-PETG @base.json" - }, - { - "name": "Bambu PLA Wood @base", - "sub_path": "filament/Bambu PLA Wood @base.json" - }, - { - "name": "Bambu PLA Silk+ @base", - "sub_path": "filament/Bambu PLA Silk+ @base.json" - }, - { - "name": "Bambu TPU 95A @base", - "sub_path": "filament/Bambu TPU 95A @base.json" - }, - { - "name": "Generic TPU", - "sub_path": "filament/Generic TPU.json" - }, - { - "name": "Generic TPU @BBL P1P", - "sub_path": "filament/P1P/Generic TPU @BBL P1P.json" - }, - { - "name": "Bambu TPU 95A HF @base", - "sub_path": "filament/Bambu TPU 95A HF @base.json" - }, - { - "name": "Generic TPU for AMS @base", - "sub_path": "filament/Generic TPU for AMS @base.json" - }, - { - "name": "Bambu TPU for AMS @base", - "sub_path": "filament/Bambu TPU for AMS @base.json" - }, - { - "name": "Bambu PETG Basic @base", - "sub_path": "filament/Bambu PETG Basic @base.json" - }, - { - "name": "Bambu PET-CF @base", - "sub_path": "filament/Bambu PET-CF @base.json" - }, - { - "name": "Generic PETG @base", - "sub_path": "filament/Generic PETG @base.json" - }, - { - "name": "Generic PETG-CF @base", - "sub_path": "filament/Generic PETG-CF @base.json" - }, - { - "name": "Bambu PETG-CF @base", - "sub_path": "filament/Bambu PETG-CF @base.json" - }, - { - "name": "PolyLite PETG @base", - "sub_path": "filament/PolyLite PETG @base.json" - }, - { - "name": "Bambu PETG Translucent @base", - "sub_path": "filament/Bambu PETG Translucent @base.json" - }, - { - "name": "Generic PCTG @base", - "sub_path": "filament/Generic PCTG @base.json" - }, - { - "name": "Bambu PETG HF @base", - "sub_path": "filament/Bambu PETG HF @base.json" - }, - { - "name": "Fiberon PETG-ESD @base", - "sub_path": "filament/Fiberon PETG-ESD @base.json" - }, - { - "name": "Fiberon PETG-rCF @base", - "sub_path": "filament/Fiberon PETG-rCF @base.json" - }, - { - "name": "Fiberon PET-CF @base", - "sub_path": "filament/Fiberon PET-CF @base.json" - }, - { - "name": "Generic PETG HF @base", - "sub_path": "filament/Generic PETG HF @base.json" + "name": "fdm_filament_tpu", + "sub_path": "filament/fdm_filament_tpu.json" }, { "name": "Bambu ABS @base", "sub_path": "filament/Bambu ABS @base.json" }, - { - "name": "Generic ABS @base", - "sub_path": "filament/Generic ABS @base.json" - }, - { - "name": "PolyLite ABS @base", - "sub_path": "filament/PolyLite ABS @base.json" - }, { "name": "Bambu ABS-GF @base", "sub_path": "filament/Bambu ABS-GF @base.json" @@ -914,29 +690,17 @@ "sub_path": "filament/Bambu Support for ABS @base.json" }, { - "name": "Bambu PC @base", - "sub_path": "filament/Bambu PC @base.json" + "name": "Generic ABS @base", + "sub_path": "filament/Generic ABS @base.json" }, { - "name": "Generic PC @base", - "sub_path": "filament/Generic PC @base.json" - }, - { - "name": "Bambu PC FR @base", - "sub_path": "filament/Bambu PC FR @base.json" - }, - { - "name": "Generic ASA @base", - "sub_path": "filament/Generic ASA @base.json" + "name": "PolyLite ABS @base", + "sub_path": "filament/PolyLite ABS @base.json" }, { "name": "Bambu ASA @base", "sub_path": "filament/Bambu ASA @base.json" }, - { - "name": "PolyLite ASA @base", - "sub_path": "filament/PolyLite ASA @base.json" - }, { "name": "Bambu ASA-Aero @base", "sub_path": "filament/Bambu ASA-Aero @base.json" @@ -946,45 +710,29 @@ "sub_path": "filament/Bambu ASA-CF @base.json" }, { - "name": "Generic PVA @base", - "sub_path": "filament/Generic PVA @base.json" + "name": "Generic ASA @base", + "sub_path": "filament/Generic ASA @base.json" }, { - "name": "Bambu PVA @base", - "sub_path": "filament/Bambu PVA @base.json" + "name": "PolyLite ASA @base", + "sub_path": "filament/PolyLite ASA @base.json" }, { - "name": "Bambu Support G @base", - "sub_path": "filament/Bambu Support G @base.json" + "name": "Generic BVOH @base", + "sub_path": "filament/Generic BVOH @base.json" + }, + { + "name": "Generic EVA @base", + "sub_path": "filament/Generic EVA @base.json" + }, + { + "name": "Generic HIPS @base", + "sub_path": "filament/Generic HIPS @base.json" }, { "name": "Bambu PA-CF @base", "sub_path": "filament/Bambu PA-CF @base.json" }, - { - "name": "Generic PA", - "sub_path": "filament/Generic PA.json" - }, - { - "name": "Generic PA-CF", - "sub_path": "filament/Generic PA-CF.json" - }, - { - "name": "Bambu PAHT-CF @base", - "sub_path": "filament/Bambu PAHT-CF @base.json" - }, - { - "name": "Generic PA-CF @BBL P1P", - "sub_path": "filament/P1P/Generic PA-CF @BBL P1P.json" - }, - { - "name": "Generic PA @BBL P1P", - "sub_path": "filament/P1P/Generic PA @BBL P1P.json" - }, - { - "name": "Bambu Support For PA/PET @base", - "sub_path": "filament/Bambu Support For PA PET @base.json" - }, { "name": "Bambu PA6-CF @base", "sub_path": "filament/Bambu PA6-CF @base.json" @@ -993,6 +741,22 @@ "name": "Bambu PA6-GF @base", "sub_path": "filament/Bambu PA6-GF @base.json" }, + { + "name": "Bambu PAHT-CF @base", + "sub_path": "filament/Bambu PAHT-CF @base.json" + }, + { + "name": "Bambu Support For PA/PET @base", + "sub_path": "filament/Bambu Support For PA PET @base.json" + }, + { + "name": "Bambu Support G @base", + "sub_path": "filament/Bambu Support G @base.json" + }, + { + "name": "Fiberon PA12-CF @base", + "sub_path": "filament/Fiberon PA12-CF @base.json" + }, { "name": "Fiberon PA6-CF @base", "sub_path": "filament/Fiberon PA6-CF @base.json" @@ -1001,41 +765,41 @@ "name": "Fiberon PA6-GF @base", "sub_path": "filament/Fiberon PA6-GF @base.json" }, - { - "name": "Fiberon PA12-CF @base", - "sub_path": "filament/Fiberon PA12-CF @base.json" - }, { "name": "Fiberon PA612-CF @base", "sub_path": "filament/Fiberon PA612-CF @base.json" }, { - "name": "Generic HIPS @base", - "sub_path": "filament/Generic HIPS @base.json" + "name": "Generic PA", + "sub_path": "filament/Generic PA.json" }, { - "name": "Generic PPS-CF @base", - "sub_path": "filament/Generic PPS-CF @base.json" + "name": "Generic PA @BBL P1P", + "sub_path": "filament/P1P/Generic PA @BBL P1P.json" }, { - "name": "Generic PPS @base", - "sub_path": "filament/Generic PPS @base.json" + "name": "Generic PA-CF", + "sub_path": "filament/Generic PA-CF.json" }, { - "name": "Bambu PPS-CF @base", - "sub_path": "filament/Bambu PPS-CF @base.json" + "name": "Generic PA-CF @BBL P1P", + "sub_path": "filament/P1P/Generic PA-CF @BBL P1P.json" }, { - "name": "Bambu PPA-CF @base", - "sub_path": "filament/Bambu PPA-CF @base.json" + "name": "Bambu PC @base", + "sub_path": "filament/Bambu PC @base.json" }, { - "name": "Generic PPA-CF @base", - "sub_path": "filament/Generic PPA-CF @base.json" + "name": "Bambu PC FR @base", + "sub_path": "filament/Bambu PC FR @base.json" }, { - "name": "Generic PPA-GF @base", - "sub_path": "filament/Generic PPA-GF @base.json" + "name": "Generic PC @base", + "sub_path": "filament/Generic PC @base.json" + }, + { + "name": "Generic PCTG @base", + "sub_path": "filament/Generic PCTG @base.json" }, { "name": "Generic PE @base", @@ -1045,6 +809,194 @@ "name": "Generic PE-CF @base", "sub_path": "filament/Generic PE-CF @base.json" }, + { + "name": "Bambu PET-CF @base", + "sub_path": "filament/Bambu PET-CF @base.json" + }, + { + "name": "Bambu PETG Basic @base", + "sub_path": "filament/Bambu PETG Basic @base.json" + }, + { + "name": "Bambu PETG HF @base", + "sub_path": "filament/Bambu PETG HF @base.json" + }, + { + "name": "Bambu PETG Translucent @base", + "sub_path": "filament/Bambu PETG Translucent @base.json" + }, + { + "name": "Bambu PETG-CF @base", + "sub_path": "filament/Bambu PETG-CF @base.json" + }, + { + "name": "Fiberon PET-CF @base", + "sub_path": "filament/Fiberon PET-CF @base.json" + }, + { + "name": "Fiberon PETG-ESD @base", + "sub_path": "filament/Fiberon PETG-ESD @base.json" + }, + { + "name": "Fiberon PETG-rCF @base", + "sub_path": "filament/Fiberon PETG-rCF @base.json" + }, + { + "name": "Generic PETG @base", + "sub_path": "filament/Generic PETG @base.json" + }, + { + "name": "Generic PETG HF @base", + "sub_path": "filament/Generic PETG HF @base.json" + }, + { + "name": "Generic PETG-CF @base", + "sub_path": "filament/Generic PETG-CF @base.json" + }, + { + "name": "PolyLite PETG @base", + "sub_path": "filament/PolyLite PETG @base.json" + }, + { + "name": "SUNLU PETG @base", + "sub_path": "filament/SUNLU/SUNLU PETG @base.json" + }, + { + "name": "Generic PHA @base", + "sub_path": "filament/Generic PHA @base.json" + }, + { + "name": "Bambu PLA Aero @base", + "sub_path": "filament/Bambu PLA Aero @base.json" + }, + { + "name": "Bambu PLA Basic @base", + "sub_path": "filament/Bambu PLA Basic @base.json" + }, + { + "name": "Bambu PLA Dynamic @base", + "sub_path": "filament/Bambu PLA Dynamic @base.json" + }, + { + "name": "Bambu PLA Galaxy @base", + "sub_path": "filament/Bambu PLA Galaxy @base.json" + }, + { + "name": "Bambu PLA Glow @base", + "sub_path": "filament/Bambu PLA Glow @base.json" + }, + { + "name": "Bambu PLA Impact @base", + "sub_path": "filament/Bambu PLA Impact @base.json" + }, + { + "name": "Bambu PLA Marble @base", + "sub_path": "filament/Bambu PLA Marble @base.json" + }, + { + "name": "Bambu PLA Matte @base", + "sub_path": "filament/Bambu PLA Matte @base.json" + }, + { + "name": "Bambu PLA Metal @base", + "sub_path": "filament/Bambu PLA Metal @base.json" + }, + { + "name": "Bambu PLA Silk @base", + "sub_path": "filament/Bambu PLA Silk @base.json" + }, + { + "name": "Bambu PLA Silk+ @base", + "sub_path": "filament/Bambu PLA Silk+ @base.json" + }, + { + "name": "Bambu PLA Sparkle @base", + "sub_path": "filament/Bambu PLA Sparkle @base.json" + }, + { + "name": "Bambu PLA Tough @base", + "sub_path": "filament/Bambu PLA Tough @base.json" + }, + { + "name": "Bambu PLA Wood @base", + "sub_path": "filament/Bambu PLA Wood @base.json" + }, + { + "name": "Bambu PLA-CF @base", + "sub_path": "filament/Bambu PLA-CF @base.json" + }, + { + "name": "Bambu Support For PLA @base", + "sub_path": "filament/Bambu Support For PLA @base.json" + }, + { + "name": "Bambu Support For PLA/PETG @base", + "sub_path": "filament/Bambu Support For PLA-PETG @base.json" + }, + { + "name": "Bambu Support W @base", + "sub_path": "filament/Bambu Support W @base.json" + }, + { + "name": "Generic PLA @base", + "sub_path": "filament/Generic PLA @base.json" + }, + { + "name": "Generic PLA High Speed @base", + "sub_path": "filament/Generic PLA High Speed @base.json" + }, + { + "name": "Generic PLA Silk @base", + "sub_path": "filament/Generic PLA Silk @base.json" + }, + { + "name": "Generic PLA-CF @base", + "sub_path": "filament/Generic PLA-CF @base.json" + }, + { + "name": "Overture Matte PLA @base", + "sub_path": "filament/Overture Matte PLA @base.json" + }, + { + "name": "Overture PLA @base", + "sub_path": "filament/Overture PLA @base.json" + }, + { + "name": "PolyLite PLA @base", + "sub_path": "filament/PolyLite PLA @base.json" + }, + { + "name": "PolyTerra PLA @base", + "sub_path": "filament/PolyTerra PLA @base.json" + }, + { + "name": "SUNLU PLA Marble @base", + "sub_path": "filament/SUNLU/SUNLU Marble PLA @base.json" + }, + { + "name": "SUNLU PLA Matte @base", + "sub_path": "filament/SUNLU/SUNLU PLA Matte @base.json" + }, + { + "name": "SUNLU PLA+ 2.0 @base", + "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @base.json" + }, + { + "name": "SUNLU PLA+ @base", + "sub_path": "filament/SUNLU/SUNLU PLA+ @base.json" + }, + { + "name": "SUNLU Silk PLA+ @base", + "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @base.json" + }, + { + "name": "SUNLU Wood PLA @base", + "sub_path": "filament/SUNLU/SUNLU Wood PLA @base.json" + }, + { + "name": "eSUN PLA+ @base", + "sub_path": "filament/eSUN PLA+ @base.json" + }, { "name": "Generic PP @base", "sub_path": "filament/Generic PP @base.json" @@ -1058,1096 +1010,576 @@ "sub_path": "filament/Generic PP-GF @base.json" }, { - "name": "Generic EVA @base", - "sub_path": "filament/Generic EVA @base.json" + "name": "Bambu PPA-CF @base", + "sub_path": "filament/Bambu PPA-CF @base.json" }, { - "name": "Generic PHA @base", - "sub_path": "filament/Generic PHA @base.json" + "name": "Generic PPA-CF @base", + "sub_path": "filament/Generic PPA-CF @base.json" }, { - "name": "Generic BVOH @base", - "sub_path": "filament/Generic BVOH @base.json" + "name": "Generic PPA-GF @base", + "sub_path": "filament/Generic PPA-GF @base.json" }, { - "name": "Bambu PLA Matte @BBL X1C", - "sub_path": "filament/Bambu PLA Matte @BBL X1C.json" + "name": "Bambu PPS-CF @base", + "sub_path": "filament/Bambu PPS-CF @base.json" }, { - "name": "Bambu PLA Matte @BBL X1C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Matte @BBL X1C 0.2 nozzle.json" + "name": "Generic PPS @base", + "sub_path": "filament/Generic PPS @base.json" }, { - "name": "Bambu PLA Matte @BBL X1C 0.8 nozzle", - "sub_path": "filament/Bambu PLA Matte @BBL X1C 0.8 nozzle.json" + "name": "Generic PPS-CF @base", + "sub_path": "filament/Generic PPS-CF @base.json" }, { - "name": "Bambu PLA Matte @BBL X1", - "sub_path": "filament/Bambu PLA Matte @BBL X1.json" + "name": "Bambu PVA @base", + "sub_path": "filament/Bambu PVA @base.json" }, { - "name": "Bambu PLA Matte @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/Bambu PLA Matte @BBL P1P 0.2 nozzle.json" + "name": "Generic PVA @base", + "sub_path": "filament/Generic PVA @base.json" }, { - "name": "Bambu PLA Matte @BBL P1P", - "sub_path": "filament/P1P/Bambu PLA Matte @BBL P1P.json" + "name": "Generic SBS @base", + "sub_path": "filament/Generic SBS @base.json" }, { - "name": "Bambu PLA Matte @BBL A1M", - "sub_path": "filament/Bambu PLA Matte @BBL A1M.json" + "name": "Bambu TPU 95A @base", + "sub_path": "filament/Bambu TPU 95A @base.json" }, { - "name": "Bambu PLA Matte @BBL A1M 0.2 nozzle", - "sub_path": "filament/Bambu PLA Matte @BBL A1M 0.2 nozzle.json" + "name": "Bambu TPU 95A HF @base", + "sub_path": "filament/Bambu TPU 95A HF @base.json" }, { - "name": "Bambu PLA Matte @BBL A1", - "sub_path": "filament/Bambu PLA Matte @BBL A1.json" + "name": "Bambu TPU for AMS @base", + "sub_path": "filament/Bambu TPU for AMS @base.json" }, { - "name": "Bambu PLA Matte @BBL A1 0.2 nozzle", - "sub_path": "filament/Bambu PLA Matte @BBL A1 0.2 nozzle.json" + "name": "Generic TPU", + "sub_path": "filament/Generic TPU.json" }, { - "name": "Bambu PLA Basic @BBL X1C", - "sub_path": "filament/Bambu PLA Basic @BBL X1C.json" + "name": "Generic TPU @BBL P1P", + "sub_path": "filament/P1P/Generic TPU @BBL P1P.json" }, { - "name": "Bambu PLA Basic @BBL X1C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Basic @BBL X1C 0.2 nozzle.json" + "name": "Generic TPU for AMS @base", + "sub_path": "filament/Generic TPU for AMS @base.json" }, { - "name": "Bambu PLA Basic @BBL X1C 0.8 nozzle", - "sub_path": "filament/Bambu PLA Basic @BBL X1C 0.8 nozzle.json" + "name": "Bambu ABS @BBL A1", + "sub_path": "filament/Bambu ABS @BBL A1.json" }, { - "name": "Bambu PLA Basic @BBL X1", - "sub_path": "filament/Bambu PLA Basic @BBL X1.json" + "name": "Bambu ABS @BBL A1 0.2 nozzle", + "sub_path": "filament/Bambu ABS @BBL A1 0.2 nozzle.json" }, { - "name": "Bambu PLA Basic @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/Bambu PLA Basic @BBL P1P 0.2 nozzle.json" + "name": "Bambu ABS @BBL P1P", + "sub_path": "filament/P1P/Bambu ABS @BBL P1P.json" }, { - "name": "Bambu PLA Basic @BBL P1P", - "sub_path": "filament/P1P/Bambu PLA Basic @BBL P1P.json" + "name": "Bambu ABS @BBL P1P 0.2 nozzle", + "sub_path": "filament/P1P/Bambu ABS @BBL P1P 0.2 nozzle.json" }, { - "name": "Bambu PLA Basic @BBL A1M", - "sub_path": "filament/Bambu PLA Basic @BBL A1M.json" + "name": "Bambu ABS @BBL X1C", + "sub_path": "filament/Bambu ABS @BBL X1C.json" }, { - "name": "Bambu PLA Basic @BBL A1M 0.2 nozzle", - "sub_path": "filament/Bambu PLA Basic @BBL A1M 0.2 nozzle.json" + "name": "Bambu ABS @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu ABS @BBL X1C 0.2 nozzle.json" }, { - "name": "Bambu PLA Basic @BBL A1", - "sub_path": "filament/Bambu PLA Basic @BBL A1.json" + "name": "Bambu ABS @BBL X1C 0.8 nozzle", + "sub_path": "filament/Bambu ABS @BBL X1C 0.8 nozzle.json" }, { - "name": "Bambu PLA Basic @BBL A1 0.2 nozzle", - "sub_path": "filament/Bambu PLA Basic @BBL A1 0.2 nozzle.json" + "name": "Bambu ABS-GF @BBL A1", + "sub_path": "filament/Bambu ABS-GF @BBL A1.json" }, { - "name": "Bambu PLA Tough @BBL X1C", - "sub_path": "filament/Bambu PLA Tough @BBL X1C.json" + "name": "Bambu ABS-GF @BBL P1P", + "sub_path": "filament/Bambu ABS-GF @BBL P1P.json" }, { - "name": "Bambu PLA Tough @BBL X1C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Tough @BBL X1C 0.2 nozzle.json" + "name": "Bambu ABS-GF @BBL X1C", + "sub_path": "filament/Bambu ABS-GF @BBL X1C.json" }, { - "name": "Bambu PLA Tough @BBL X1", - "sub_path": "filament/Bambu PLA Tough @BBL X1.json" + "name": "Bambu Support for ABS @BBL A1", + "sub_path": "filament/Bambu Support for ABS @BBL A1.json" }, { - "name": "Bambu PLA Tough @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/Bambu PLA Tough @BBL P1P 0.2 nozzle.json" + "name": "Bambu Support for ABS @BBL X1C", + "sub_path": "filament/Bambu Support for ABS @BBL X1C.json" }, { - "name": "Bambu PLA Tough @BBL P1P", - "sub_path": "filament/P1P/Bambu PLA Tough @BBL P1P.json" + "name": "Generic ABS", + "sub_path": "filament/Generic ABS.json" }, { - "name": "Bambu PLA Tough @BBL A1M", - "sub_path": "filament/Bambu PLA Tough @BBL A1M.json" + "name": "Generic ABS @0.2 nozzle", + "sub_path": "filament/Generic ABS @0.2 nozzle.json" }, { - "name": "Bambu PLA Tough @BBL A1M 0.2 nozzle", - "sub_path": "filament/Bambu PLA Tough @BBL A1M 0.2 nozzle.json" + "name": "Generic ABS @BBL A1", + "sub_path": "filament/Generic ABS @BBL A1.json" }, { - "name": "Bambu PLA Tough @BBL A1", - "sub_path": "filament/Bambu PLA Tough @BBL A1.json" + "name": "Generic ABS @BBL A1 0.2 nozzle", + "sub_path": "filament/Generic ABS @BBL A1 0.2 nozzle.json" }, { - "name": "Bambu PLA Tough @BBL A1 0.2 nozzle", - "sub_path": "filament/Bambu PLA Tough @BBL A1 0.2 nozzle.json" + "name": "Generic ABS @BBL P1P", + "sub_path": "filament/P1P/Generic ABS @BBL P1P.json" }, { - "name": "Bambu PLA Marble @BBL X1", - "sub_path": "filament/Bambu PLA Marble @BBL X1.json" + "name": "Generic ABS @BBL P1P 0.2 nozzle", + "sub_path": "filament/P1P/Generic ABS @BBL P1P 0.2 nozzle.json" }, { - "name": "Bambu PLA Marble @BBL X1C", - "sub_path": "filament/Bambu PLA Marble @BBL X1C.json" + "name": "PolyLite ABS @BBL A1", + "sub_path": "filament/PolyLite ABS @BBL A1.json" }, { - "name": "Bambu PLA Marble @BBL P1P", - "sub_path": "filament/P1P/Bambu PLA Marble @BBL P1P.json" + "name": "PolyLite ABS @BBL A1 0.2 nozzle", + "sub_path": "filament/PolyLite ABS @BBL A1 0.2 nozzle.json" }, { - "name": "Bambu PLA Marble @BBL A1M", - "sub_path": "filament/Bambu PLA Marble @BBL A1M.json" + "name": "PolyLite ABS @BBL P1P", + "sub_path": "filament/PolyLite ABS @BBL P1P.json" }, { - "name": "Bambu PLA Marble @BBL A1", - "sub_path": "filament/Bambu PLA Marble @BBL A1.json" + "name": "PolyLite ABS @BBL X1C", + "sub_path": "filament/PolyLite ABS @BBL X1C.json" }, { - "name": "Bambu PLA Sparkle @BBL X1", - "sub_path": "filament/Bambu PLA Sparkle @BBL X1.json" + "name": "Bambu ASA @BBL A1 0.2 nozzle", + "sub_path": "filament/Bambu ASA @BBL A1 0.2 nozzle.json" }, { - "name": "Bambu PLA Sparkle @BBL X1C", - "sub_path": "filament/Bambu PLA Sparkle @BBL X1C.json" + "name": "Bambu ASA @BBL A1 0.4 nozzle", + "sub_path": "filament/Bambu ASA @BBL A1 0.4 nozzle.json" }, { - "name": "Bambu PLA Sparkle @BBL P1P", - "sub_path": "filament/P1P/Bambu PLA Sparkle @BBL P1P.json" + "name": "Bambu ASA @BBL A1 0.6 nozzle", + "sub_path": "filament/Bambu ASA @BBL A1 0.6 nozzle.json" }, { - "name": "Bambu PLA Sparkle @BBL A1M", - "sub_path": "filament/Bambu PLA Sparkle @BBL A1M.json" + "name": "Bambu ASA @BBL X1 0.2 nozzle", + "sub_path": "filament/Bambu ASA @BBL X1 0.2 nozzle.json" }, { - "name": "Bambu PLA Sparkle @BBL A1", - "sub_path": "filament/Bambu PLA Sparkle @BBL A1.json" + "name": "Bambu ASA @BBL X1 0.6 nozzle", + "sub_path": "filament/Bambu ASA @BBL X1 0.6 nozzle.json" }, { - "name": "Bambu PLA Metal @BBL X1C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Metal @BBL X1C 0.2 nozzle.json" + "name": "Bambu ASA @BBL X1C", + "sub_path": "filament/Bambu ASA @BBL X1C.json" }, { - "name": "Bambu PLA Metal @BBL X1", - "sub_path": "filament/Bambu PLA Metal @BBL X1.json" + "name": "Bambu ASA @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu ASA @BBL X1C 0.2 nozzle.json" }, { - "name": "Bambu PLA Metal @BBL X1C", - "sub_path": "filament/Bambu PLA Metal @BBL X1C.json" + "name": "Bambu ASA @BBL X1C 0.4 nozzle", + "sub_path": "filament/Bambu ASA @BBL X1C 0.4 nozzle.json" }, { - "name": "Bambu PLA Metal @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/Bambu PLA Metal @BBL P1P 0.2 nozzle.json" + "name": "Bambu ASA-Aero @BBL A1", + "sub_path": "filament/Bambu ASA-Aero @BBL A1.json" }, { - "name": "Bambu PLA Metal @BBL P1P", - "sub_path": "filament/P1P/Bambu PLA Metal @BBL P1P.json" + "name": "Bambu ASA-Aero @BBL P1P", + "sub_path": "filament/Bambu ASA-Aero @BBL P1P.json" }, { - "name": "Bambu PLA Metal @BBL A1M", - "sub_path": "filament/Bambu PLA Metal @BBL A1M.json" + "name": "Bambu ASA-Aero @BBL X1C", + "sub_path": "filament/Bambu ASA-Aero @BBL X1C.json" }, { - "name": "Bambu PLA Metal @BBL A1M 0.2 nozzle", - "sub_path": "filament/Bambu PLA Metal @BBL A1M 0.2 nozzle.json" + "name": "Bambu ASA-CF @BBL A1", + "sub_path": "filament/Bambu ASA-CF @BBL A1.json" }, { - "name": "Bambu PLA Metal @BBL A1", - "sub_path": "filament/Bambu PLA Metal @BBL A1.json" + "name": "Bambu ASA-CF @BBL A1 0.6 nozzle", + "sub_path": "filament/Bambu ASA-CF @BBL A1 0.6 nozzle.json" }, { - "name": "Bambu PLA Metal @BBL A1 0.2 nozzle", - "sub_path": "filament/Bambu PLA Metal @BBL A1 0.2 nozzle.json" + "name": "Bambu ASA-CF @BBL P1P", + "sub_path": "filament/Bambu ASA-CF @BBL P1P.json" }, { - "name": "Bambu PLA Silk @BBL X1", - "sub_path": "filament/Bambu PLA Silk @BBL X1.json" + "name": "Bambu ASA-CF @BBL P1P 0.6 nozzle", + "sub_path": "filament/Bambu ASA-CF @BBL P1P 0.6 nozzle.json" }, { - "name": "Bambu PLA Silk @BBL X1C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Silk @BBL X1C 0.2 nozzle.json" + "name": "Bambu ASA-CF @BBL X1C", + "sub_path": "filament/Bambu ASA-CF @BBL X1C.json" }, { - "name": "Bambu PLA Silk @BBL X1C", - "sub_path": "filament/Bambu PLA Silk @BBL X1C.json" + "name": "Bambu ASA-CF @BBL X1C 0.6 nozzle", + "sub_path": "filament/Bambu ASA-CF @BBL X1C 0.6 nozzle.json" }, { - "name": "Bambu PLA Silk @BBL P1P", - "sub_path": "filament/P1P/Bambu PLA Silk @BBL P1P.json" + "name": "Generic ASA", + "sub_path": "filament/Generic ASA.json" }, { - "name": "Bambu PLA Silk @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/Bambu PLA Silk @BBL P1P 0.2 nozzle.json" + "name": "Generic ASA @0.2 nozzle", + "sub_path": "filament/Generic ASA @0.2 nozzle.json" }, { - "name": "Bambu PLA Silk @BBL A1M", - "sub_path": "filament/Bambu PLA Silk @BBL A1M.json" + "name": "Generic ASA @BBL A1", + "sub_path": "filament/Generic ASA @BBL A1.json" }, { - "name": "Bambu PLA Silk @BBL A1M 0.2 nozzle", - "sub_path": "filament/Bambu PLA Silk @BBL A1M 0.2 nozzle.json" + "name": "Generic ASA @BBL A1 0.2 nozzle", + "sub_path": "filament/Generic ASA @BBL A1 0.2 nozzle.json" }, { - "name": "Bambu PLA Silk @BBL A1", - "sub_path": "filament/Bambu PLA Silk @BBL A1.json" + "name": "Generic ASA @BBL P1P", + "sub_path": "filament/P1P/Generic ASA @BBL P1P.json" }, { - "name": "Bambu PLA Silk @BBL A1 0.2 nozzle", - "sub_path": "filament/Bambu PLA Silk @BBL A1 0.2 nozzle.json" + "name": "Generic ASA @BBL P1P 0.2 nozzle", + "sub_path": "filament/P1P/Generic ASA @BBL P1P 0.2 nozzle.json" }, { - "name": "Bambu Support W @BBL X1C", - "sub_path": "filament/Bambu Support W @BBL X1C.json" + "name": "PolyLite ASA @BBL A1", + "sub_path": "filament/PolyLite ASA @BBL A1.json" }, { - "name": "Bambu Support W @BBL X1C 0.2 nozzle", - "sub_path": "filament/Bambu Support W @BBL X1C 0.2 nozzle.json" + "name": "PolyLite ASA @BBL A1 0.2 nozzle", + "sub_path": "filament/PolyLite ASA @BBL A1 0.2 nozzle.json" }, { - "name": "Bambu Support W @BBL X1", - "sub_path": "filament/Bambu Support W @BBL X1.json" + "name": "PolyLite ASA @BBL P1P", + "sub_path": "filament/PolyLite ASA @BBL P1P.json" }, { - "name": "Bambu Support W @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/Bambu Support W @BBL P1P 0.2 nozzle.json" + "name": "PolyLite ASA @BBL X1C", + "sub_path": "filament/PolyLite ASA @BBL X1C.json" }, { - "name": "Bambu Support W @BBL P1P", - "sub_path": "filament/P1P/Bambu Support W @BBL P1P.json" + "name": "Generic BVOH @BBL A1", + "sub_path": "filament/Generic BVOH @BBL A1.json" }, { - "name": "Bambu Support W @BBL A1M", - "sub_path": "filament/Bambu Support W @BBL A1M.json" + "name": "Generic BVOH @BBL A1M", + "sub_path": "filament/Generic BVOH @BBL A1M.json" }, { - "name": "Bambu Support W @BBL A1M 0.2 nozzle", - "sub_path": "filament/Bambu Support W @BBL A1M 0.2 nozzle.json" + "name": "Generic BVOH @BBL X1C", + "sub_path": "filament/Generic BVOH @BBL X1C.json" }, { - "name": "Bambu Support W @BBL A1", - "sub_path": "filament/Bambu Support W @BBL A1.json" + "name": "Generic EVA @BBL A1", + "sub_path": "filament/Generic EVA @BBL A1.json" }, { - "name": "Bambu Support W @BBL A1 0.2 nozzle", - "sub_path": "filament/Bambu Support W @BBL A1 0.2 nozzle.json" + "name": "Generic EVA @BBL A1M", + "sub_path": "filament/Generic EVA @BBL A1M.json" }, { - "name": "SUNLU PLA Matte @BBL X1C", - "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL X1C.json" + "name": "Generic EVA @BBL X1C", + "sub_path": "filament/Generic EVA @BBL X1C.json" }, { - "name": "SUNLU PLA Matte @BBL X1C 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL X1C 0.2 nozzle.json" + "name": "Generic HIPS @BBL A1", + "sub_path": "filament/Generic HIPS @BBL A1.json" }, { - "name": "SUNLU PLA Matte @BBL X1", - "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL X1.json" + "name": "Generic HIPS @BBL A1 0.2 nozzle", + "sub_path": "filament/Generic HIPS @BBL A1 0.2 nozzle.json" }, { - "name": "SUNLU PLA Matte @BBL P1P 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL P1P 0.2 nozzle.json" + "name": "Generic HIPS @BBL A1M", + "sub_path": "filament/Generic HIPS @BBL A1M.json" }, { - "name": "SUNLU PLA Matte @BBL P1P", - "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL P1P.json" + "name": "Generic HIPS @BBL A1M 0.2 nozzle", + "sub_path": "filament/Generic HIPS @BBL A1M 0.2 nozzle.json" }, { - "name": "SUNLU PLA Matte @BBL A1M", - "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL A1M.json" + "name": "Generic HIPS @BBL X1C", + "sub_path": "filament/Generic HIPS @BBL X1C.json" }, { - "name": "SUNLU PLA Matte @BBL A1M 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL A1M 0.2 nozzle.json" + "name": "Generic HIPS @BBL X1C 0.2 nozzle", + "sub_path": "filament/Generic HIPS @BBL X1C 0.2 nozzle.json" }, { - "name": "SUNLU PLA Matte @BBL A1", - "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL A1.json" + "name": "Bambu PA-CF @BBL A1", + "sub_path": "filament/Bambu PA-CF @BBL A1.json" }, { - "name": "SUNLU PLA Matte @BBL A1 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL A1 0.2 nozzle.json" + "name": "Bambu PA-CF @BBL P1P", + "sub_path": "filament/P1P/Bambu PA-CF @BBL P1P.json" }, { - "name": "SUNLU PLA+ @BBL X1C", - "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL X1C.json" + "name": "Bambu PA-CF @BBL X1C", + "sub_path": "filament/Bambu PA-CF @BBL X1C.json" }, { - "name": "SUNLU PLA+ @BBL X1C 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL X1C 0.2 nozzle.json" + "name": "Bambu PA6-CF @BBL A1", + "sub_path": "filament/Bambu PA6-CF @BBL A1.json" }, { - "name": "SUNLU PLA+ @BBL X1", - "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL X1.json" + "name": "Bambu PA6-CF @BBL X1C", + "sub_path": "filament/Bambu PA6-CF @BBL X1C.json" }, { - "name": "SUNLU PLA+ @BBL P1P 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL P1P 0.2 nozzle.json" + "name": "Bambu PA6-CF @BBL X1E", + "sub_path": "filament/Bambu PA6-CF @BBL X1E.json" }, { - "name": "SUNLU PLA+ @BBL P1P", - "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL P1P.json" + "name": "Bambu PA6-GF @BBL A1", + "sub_path": "filament/Bambu PA6-GF @BBL A1.json" }, { - "name": "SUNLU PLA+ @BBL A1M", - "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL A1M.json" + "name": "Bambu PA6-GF @BBL P1P", + "sub_path": "filament/Bambu PA6-GF @BBL P1P.json" }, { - "name": "SUNLU PLA+ @BBL A1M 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL A1M 0.2 nozzle.json" + "name": "Bambu PA6-GF @BBL X1C", + "sub_path": "filament/Bambu PA6-GF @BBL X1C.json" }, { - "name": "SUNLU PLA+ @BBL A1", - "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL A1.json" + "name": "Bambu PAHT-CF @BBL A1", + "sub_path": "filament/Bambu PAHT-CF @BBL A1.json" }, { - "name": "SUNLU PLA+ @BBL A1 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL A1 0.2 nozzle.json" + "name": "Bambu PAHT-CF @BBL P1P", + "sub_path": "filament/P1P/Bambu PAHT-CF @BBL P1P.json" }, { - "name": "SUNLU PLA+ 2.0 @BBL X1C", - "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL X1C.json" + "name": "Bambu PAHT-CF @BBL X1C", + "sub_path": "filament/Bambu PAHT-CF @BBL X1C.json" }, { - "name": "SUNLU PLA+ 2.0 @BBL X1C 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL X1C 0.2 nozzle.json" + "name": "Bambu Support For PA/PET @BBL A1", + "sub_path": "filament/Bambu Support For PA PET @BBL A1.json" }, { - "name": "SUNLU PLA+ 2.0 @BBL X1", - "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL X1.json" + "name": "Bambu Support For PA/PET @BBL P1P", + "sub_path": "filament/P1P/Bambu Support For PA PET @BBL P1P.json" }, { - "name": "SUNLU PLA+ 2.0 @BBL P1P 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL P1P 0.2 nozzle.json" + "name": "Bambu Support For PA/PET @BBL X1C", + "sub_path": "filament/Bambu Support For PA PET @BBL X1C.json" }, { - "name": "SUNLU PLA+ 2.0 @BBL P1P", - "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL P1P.json" + "name": "Bambu Support G @BBL A1", + "sub_path": "filament/Bambu Support G @BBL A1.json" }, { - "name": "SUNLU PLA+ 2.0 @BBL A1M", - "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL A1M.json" + "name": "Bambu Support G @BBL P1P", + "sub_path": "filament/P1P/Bambu Support G @BBL P1P.json" }, { - "name": "SUNLU PLA+ 2.0 @BBL A1M 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL A1M 0.2 nozzle.json" + "name": "Bambu Support G @BBL X1C", + "sub_path": "filament/Bambu Support G @BBL X1C.json" }, { - "name": "SUNLU PLA+ 2.0 @BBL A1", - "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL A1.json" + "name": "Fiberon PA12-CF @BBL X1C", + "sub_path": "filament/Fiberon PA12-CF @BBL X1C.json" }, { - "name": "SUNLU PLA+ 2.0 @BBL A1 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL A1 0.2 nozzle.json" + "name": "Fiberon PA6-CF @BBL X1C", + "sub_path": "filament/Fiberon PA6-CF @BBL X1C.json" }, { - "name": "SUNLU Silk PLA+ @BBL X1C", - "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL X1C.json" + "name": "Fiberon PA6-GF @BBL X1C", + "sub_path": "filament/Fiberon PA6-GF @BBL X1C.json" }, { - "name": "SUNLU Silk PLA+ @BBL X1C 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL X1C 0.2 nozzle.json" + "name": "Fiberon PA612-CF @BBL X1C", + "sub_path": "filament/Fiberon PA612-CF @BBL X1C.json" }, { - "name": "SUNLU Silk PLA+ @BBL X1", - "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL X1.json" + "name": "Generic PA @BBL A1", + "sub_path": "filament/Generic PA @BBL A1.json" }, { - "name": "SUNLU Silk PLA+ @BBL P1P 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL P1P 0.2 nozzle.json" + "name": "Generic PA-CF @BBL A1", + "sub_path": "filament/Generic PA-CF @BBL A1.json" }, { - "name": "SUNLU Silk PLA+ @BBL P1P", - "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL P1P.json" + "name": "Generic PA-CF @BBL X1E", + "sub_path": "filament/Generic PA-CF @BBL X1E.json" }, { - "name": "SUNLU Silk PLA+ @BBL A1M", - "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL A1M.json" + "name": "Bambu PC @BBL A1", + "sub_path": "filament/Bambu PC @BBL A1.json" }, { - "name": "SUNLU Silk PLA+ @BBL A1M 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL A1M 0.2 nozzle.json" + "name": "Bambu PC @BBL A1 0.2 nozzle", + "sub_path": "filament/Bambu PC @BBL A1 0.2 nozzle.json" }, { - "name": "SUNLU Silk PLA+ @BBL A1", - "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL A1.json" + "name": "Bambu PC @BBL P1P", + "sub_path": "filament/P1P/Bambu PC @BBL P1P.json" }, { - "name": "SUNLU Silk PLA+ @BBL A1 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL A1 0.2 nozzle.json" + "name": "Bambu PC @BBL P1P 0.2 nozzle", + "sub_path": "filament/P1P/Bambu PC @BBL P1P 0.2 nozzle.json" }, { - "name": "SUNLU PLA Marble @BBL X1C", - "sub_path": "filament/SUNLU/SUNLU Marble PLA @BBL X1C.json" + "name": "Bambu PC @BBL X1C", + "sub_path": "filament/Bambu PC @BBL X1C.json" }, { - "name": "SUNLU PLA Marble @BBL X1", - "sub_path": "filament/SUNLU/SUNLU Marble PLA @BBL X1.json" + "name": "Bambu PC @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu PC @BBL X1C 0.2 nozzle.json" }, { - "name": "SUNLU PLA Marble @BBL P1P", - "sub_path": "filament/SUNLU/SUNLU Marble PLA @BBL P1P.json" + "name": "Bambu PC @BBL X1C 0.6 nozzle", + "sub_path": "filament/Bambu PC @BBL X1C 0.6 nozzle.json" }, { - "name": "SUNLU PLA Marble @BBL A1M", - "sub_path": "filament/SUNLU/SUNLU Marble PLA @BBL A1M.json" + "name": "Bambu PC @BBL X1C 0.8 nozzle", + "sub_path": "filament/Bambu PC @BBL X1C 0.8 nozzle.json" }, { - "name": "SUNLU PLA Marble @BBL A1", - "sub_path": "filament/SUNLU/SUNLU Marble PLA @BBL A1.json" + "name": "Bambu PC FR @BBL A1", + "sub_path": "filament/Bambu PC FR @BBL A1.json" }, { - "name": "SUNLU Wood PLA @BBL X1C", - "sub_path": "filament/SUNLU/SUNLU Wood PLA @BBL X1C.json" + "name": "Bambu PC FR @BBL A1 0.2 nozzle", + "sub_path": "filament/Bambu PC FR @BBL A1 0.2 nozzle.json" }, { - "name": "SUNLU Wood PLA @BBL X1", - "sub_path": "filament/SUNLU/SUNLU Wood PLA @BBL X1.json" + "name": "Bambu PC FR @BBL P1P", + "sub_path": "filament/Bambu PC FR @BBL P1P.json" }, { - "name": "SUNLU Wood PLA @BBL P1P", - "sub_path": "filament/SUNLU/SUNLU Wood PLA @BBL P1P.json" + "name": "Bambu PC FR @BBL P1P 0.2 nozzle", + "sub_path": "filament/Bambu PC FR @BBL P1P 0.2 nozzle.json" }, { - "name": "SUNLU Wood PLA @BBL A1M", - "sub_path": "filament/SUNLU/SUNLU Wood PLA @BBL A1M.json" + "name": "Bambu PC FR @BBL P1S", + "sub_path": "filament/Bambu PC FR @BBL P1S.json" }, { - "name": "SUNLU Wood PLA @BBL A1", - "sub_path": "filament/SUNLU/SUNLU Wood PLA @BBL A1.json" + "name": "Bambu PC FR @BBL P1S 0.2 nozzle", + "sub_path": "filament/Bambu PC FR @BBL P1S 0.2 nozzle.json" }, { - "name": "SUNLU PETG @BBL X1C", - "sub_path": "filament/SUNLU/SUNLU PETG @BBL X1C.json" + "name": "Bambu PC FR @BBL P1S 0.6 nozzle", + "sub_path": "filament/Bambu PC FR @BBL P1S 0.6 nozzle.json" }, { - "name": "SUNLU PETG @BBL X1C 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PETG @BBL X1C 0.2 nozzle.json" + "name": "Bambu PC FR @BBL P1S 0.8 nozzle", + "sub_path": "filament/Bambu PC FR @BBL P1S 0.8 nozzle.json" }, { - "name": "SUNLU PETG @BBL X1C 0.8 nozzle", - "sub_path": "filament/SUNLU/SUNLU PETG @BBL X1C 0.8 nozzle.json" + "name": "Bambu PC FR @BBL X1C", + "sub_path": "filament/Bambu PC FR @BBL X1C.json" }, { - "name": "SUNLU PETG @BBL A1M", - "sub_path": "filament/SUNLU/SUNLU PETG @BBL A1M.json" + "name": "Bambu PC FR @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu PC FR @BBL X1C 0.2 nozzle.json" }, { - "name": "SUNLU PETG @BBL A1M 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PETG @BBL A1M 0.2 nozzle.json" + "name": "Bambu PC FR @BBL X1C 0.6 nozzle", + "sub_path": "filament/Bambu PC FR @BBL X1C 0.6 nozzle.json" }, { - "name": "SUNLU PETG @BBL A1", - "sub_path": "filament/SUNLU/SUNLU PETG @BBL A1.json" + "name": "Bambu PC FR @BBL X1C 0.8 nozzle", + "sub_path": "filament/Bambu PC FR @BBL X1C 0.8 nozzle.json" }, { - "name": "SUNLU PETG @BBL A1 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PETG @BBL A1 0.2 nozzle.json" + "name": "Bambu PC FR @BBL X1E", + "sub_path": "filament/Bambu PC FR @BBL X1E.json" }, { - "name": "SUNLU PETG @BBL A1 0.8 nozzle", - "sub_path": "filament/SUNLU/SUNLU PETG @BBL A1 0.8 nozzle.json" + "name": "Bambu PC FR @BBL X1E 0.2 nozzle", + "sub_path": "filament/Bambu PC FR @BBL X1E 0.2 nozzle.json" }, { - "name": "eSUN PLA+ @BBL X1C", - "sub_path": "filament/eSUN PLA+ @BBL X1C.json" + "name": "Bambu PC FR @BBL X1E 0.6 nozzle", + "sub_path": "filament/Bambu PC FR @BBL X1E 0.6 nozzle.json" }, { - "name": "eSUN PLA+ @BBL X1", - "sub_path": "filament/eSUN PLA+ @BBL X1.json" + "name": "Bambu PC FR @BBL X1E 0.8 nozzle", + "sub_path": "filament/Bambu PC FR @BBL X1E 0.8 nozzle.json" }, { - "name": "eSUN PLA+ @BBL X1C 0.2 nozzle", - "sub_path": "filament/eSUN PLA+ @BBL X1C 0.2 nozzle.json" + "name": "Generic PC", + "sub_path": "filament/Generic PC.json" }, { - "name": "eSUN PLA+ @BBL P1P", - "sub_path": "filament/P1P/eSUN PLA+ @BBL P1P.json" + "name": "Generic PC @0.2 nozzle", + "sub_path": "filament/Generic PC @0.2 nozzle.json" }, { - "name": "eSUN PLA+ @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/eSUN PLA+ @BBL P1P 0.2 nozzle.json" + "name": "Generic PC @BBL A1", + "sub_path": "filament/Generic PC @BBL A1.json" }, { - "name": "eSUN PLA+ @BBL A1M", - "sub_path": "filament/eSUN PLA+ @BBL A1M.json" + "name": "Generic PC @BBL A1 0.2 nozzle", + "sub_path": "filament/Generic PC @BBL A1 0.2 nozzle.json" }, { - "name": "eSUN PLA+ @BBL A1M 0.2 nozzle", - "sub_path": "filament/eSUN PLA+ @BBL A1M 0.2 nozzle.json" + "name": "Generic PC @BBL P1P", + "sub_path": "filament/P1P/Generic PC @BBL P1P.json" }, { - "name": "eSUN PLA+ @BBL A1", - "sub_path": "filament/eSUN PLA+ @BBL A1.json" + "name": "Generic PC @BBL P1P 0.2 nozzle", + "sub_path": "filament/P1P/Generic PC @BBL P1P 0.2 nozzle.json" }, { - "name": "eSUN PLA+ @BBL A1 0.2 nozzle", - "sub_path": "filament/eSUN PLA+ @BBL A1 0.2 nozzle.json" + "name": "Generic PCTG @BBL A1", + "sub_path": "filament/Generic PCTG @BBL A1.json" }, { - "name": "PolyTerra PLA @BBL X1C", - "sub_path": "filament/PolyTerra PLA @BBL X1C.json" + "name": "Generic PCTG @BBL A1M", + "sub_path": "filament/Generic PCTG @BBL A1M.json" }, { - "name": "PolyTerra PLA @BBL X1", - "sub_path": "filament/PolyTerra PLA @BBL X1.json" + "name": "Generic PCTG @BBL X1C", + "sub_path": "filament/Generic PCTG @BBL X1C.json" }, { - "name": "PolyTerra PLA @BBL P1P", - "sub_path": "filament/P1P/PolyTerra PLA @BBL P1P.json" + "name": "Generic PE @BBL A1", + "sub_path": "filament/Generic PE @BBL A1.json" }, { - "name": "PolyTerra PLA @BBL A1M", - "sub_path": "filament/PolyTerra PLA @BBL A1M.json" + "name": "Generic PE @BBL A1M", + "sub_path": "filament/Generic PE @BBL A1M.json" }, { - "name": "PolyTerra PLA @BBL A1M 0.2 nozzle", - "sub_path": "filament/PolyTerra PLA @BBL A1M 0.2 nozzle.json" + "name": "Generic PE @BBL X1C", + "sub_path": "filament/Generic PE @BBL X1C.json" }, { - "name": "PolyTerra PLA @BBL A1", - "sub_path": "filament/PolyTerra PLA @BBL A1.json" + "name": "Generic PE-CF @BBL A1", + "sub_path": "filament/Generic PE-CF @BBL A1.json" }, { - "name": "PolyTerra PLA @BBL A1 0.2 nozzle", - "sub_path": "filament/PolyTerra PLA @BBL A1 0.2 nozzle.json" + "name": "Generic PE-CF @BBL A1M", + "sub_path": "filament/Generic PE-CF @BBL A1M.json" }, { - "name": "PolyLite PLA @BBL X1C", - "sub_path": "filament/PolyLite PLA @BBL X1C.json" + "name": "Generic PE-CF @BBL X1C", + "sub_path": "filament/Generic PE-CF @BBL X1C.json" }, { - "name": "PolyLite PLA @BBL X1", - "sub_path": "filament/PolyLite PLA @BBL X1.json" + "name": "Bambu PET-CF @BBL A1", + "sub_path": "filament/Bambu PET-CF @BBL A1.json" }, { - "name": "PolyLite PLA @BBL P1P", - "sub_path": "filament/P1P/PolyLite PLA @BBL P1P.json" + "name": "Bambu PET-CF @BBL P1P", + "sub_path": "filament/P1P/Bambu PET-CF @BBL P1P.json" }, { - "name": "PolyLite PLA @BBL A1M", - "sub_path": "filament/PolyLite PLA @BBL A1M.json" - }, - { - "name": "PolyLite PLA @BBL A1M 0.2 nozzle", - "sub_path": "filament/PolyLite PLA @BBL A1M 0.2 nozzle.json" - }, - { - "name": "PolyLite PLA @BBL A1", - "sub_path": "filament/PolyLite PLA @BBL A1.json" - }, - { - "name": "PolyLite PLA @BBL A1 0.2 nozzle", - "sub_path": "filament/PolyLite PLA @BBL A1 0.2 nozzle.json" - }, - { - "name": "Generic PLA", - "sub_path": "filament/Generic PLA.json" - }, - { - "name": "Generic PLA @0.2 nozzle", - "sub_path": "filament/Generic PLA @0.2 nozzle.json" - }, - { - "name": "Generic PLA @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/Generic PLA @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Generic PLA @BBL P1P", - "sub_path": "filament/P1P/Generic PLA @BBL P1P.json" - }, - { - "name": "Generic PLA @BBL A1M", - "sub_path": "filament/Generic PLA @BBL A1M.json" - }, - { - "name": "Generic PLA @BBL A1M 0.2 nozzle", - "sub_path": "filament/Generic PLA @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Generic PLA @BBL A1", - "sub_path": "filament/Generic PLA @BBL A1.json" - }, - { - "name": "Generic PLA @BBL A1 0.2 nozzle", - "sub_path": "filament/Generic PLA @BBL A1 0.2 nozzle.json" - }, - { - "name": "Generic PLA Silk", - "sub_path": "filament/Generic PLA Silk.json" - }, - { - "name": "Generic PLA Silk @BBL P1P", - "sub_path": "filament/P1P/Generic PLA Silk @BBL P1P.json" - }, - { - "name": "Generic PLA Silk @BBL A1M", - "sub_path": "filament/Generic PLA Silk @BBL A1M.json" - }, - { - "name": "Generic PLA Silk @BBL A1", - "sub_path": "filament/Generic PLA Silk @BBL A1.json" - }, - { - "name": "Generic PLA-CF", - "sub_path": "filament/Generic PLA-CF.json" - }, - { - "name": "Generic PLA-CF @BBL P1P", - "sub_path": "filament/P1P/Generic PLA-CF @BBL P1P.json" - }, - { - "name": "Generic PLA-CF @BBL A1M", - "sub_path": "filament/Generic PLA-CF @BBL A1M.json" - }, - { - "name": "Generic PLA-CF @BBL A1", - "sub_path": "filament/Generic PLA-CF @BBL A1.json" - }, - { - "name": "Generic SBS", - "sub_path": "filament/Generic SBS.json" - }, - { - "name": "Bambu PLA-CF @BBL X1C 0.8 nozzle", - "sub_path": "filament/Bambu PLA-CF @BBL X1C 0.8 nozzle.json" - }, - { - "name": "Bambu PLA-CF @BBL X1C", - "sub_path": "filament/Bambu PLA-CF @BBL X1C.json" - }, - { - "name": "Bambu PLA-CF @BBL P1P", - "sub_path": "filament/P1P/Bambu PLA-CF @BBL P1P.json" - }, - { - "name": "Bambu PLA-CF @BBL P1P 0.8 nozzle", - "sub_path": "filament/P1P/Bambu PLA-CF @BBL P1P 0.8 nozzle.json" - }, - { - "name": "Bambu PLA-CF @BBL A1M", - "sub_path": "filament/Bambu PLA-CF @BBL A1M.json" - }, - { - "name": "Bambu PLA-CF @BBL A1M 0.8 nozzle", - "sub_path": "filament/Bambu PLA-CF @BBL A1M 0.8 nozzle.json" - }, - { - "name": "Bambu PLA-CF @BBL A1", - "sub_path": "filament/Bambu PLA-CF @BBL A1.json" - }, - { - "name": "Bambu PLA-CF @BBL A1 0.8 nozzle", - "sub_path": "filament/Bambu PLA-CF @BBL A1 0.8 nozzle.json" - }, - { - "name": "Bambu Support For PLA @BBL X1C 0.2 nozzle", - "sub_path": "filament/Bambu Support For PLA @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Bambu Support For PLA @BBL X1C", - "sub_path": "filament/Bambu Support For PLA @BBL X1C.json" - }, - { - "name": "Bambu Support For PLA @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/Bambu Support For PLA @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Bambu Support For PLA @BBL P1P", - "sub_path": "filament/P1P/Bambu Support For PLA @BBL P1P.json" - }, - { - "name": "Bambu Support For PLA @BBL A1M", - "sub_path": "filament/Bambu Support For PLA @BBL A1M.json" - }, - { - "name": "Bambu Support For PLA @BBL A1M 0.2 nozzle", - "sub_path": "filament/Bambu Support For PLA @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Bambu Support For PLA @BBL A1", - "sub_path": "filament/Bambu Support For PLA @BBL A1.json" - }, - { - "name": "Bambu Support For PLA @BBL A1 0.2 nozzle", - "sub_path": "filament/Bambu Support For PLA @BBL A1 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Aero @BBL X1", - "sub_path": "filament/Bambu PLA Aero @BBL X1.json" - }, - { - "name": "Bambu PLA Aero @BBL X1C", - "sub_path": "filament/Bambu PLA Aero @BBL X1C.json" - }, - { - "name": "Bambu PLA Aero @BBL P1P", - "sub_path": "filament/P1P/Bambu PLA Aero @BBL P1P.json" - }, - { - "name": "Bambu PLA Aero @BBL A1M", - "sub_path": "filament/Bambu PLA Aero @BBL A1M.json" - }, - { - "name": "Bambu PLA Aero @BBL A1", - "sub_path": "filament/Bambu PLA Aero @BBL A1.json" - }, - { - "name": "Overture PLA @BBL X1C", - "sub_path": "filament/Overture PLA @BBL X1C.json" - }, - { - "name": "Overture PLA @BBL X1", - "sub_path": "filament/Overture PLA @BBL X1.json" - }, - { - "name": "Overture PLA @BBL P1P", - "sub_path": "filament/Overture PLA @BBL P1P.json" - }, - { - "name": "Overture PLA @BBL A1M", - "sub_path": "filament/Overture PLA @BBL A1M.json" - }, - { - "name": "Overture PLA @BBL A1", - "sub_path": "filament/Overture PLA @BBL A1.json" - }, - { - "name": "Overture PLA @BBL A1 0.2 nozzle", - "sub_path": "filament/Overture PLA @BBL A1 0.2 nozzle.json" - }, - { - "name": "Overture Matte PLA @BBL X1C", - "sub_path": "filament/Overture Matte PLA @BBL X1C.json" - }, - { - "name": "Overture Matte PLA @BBL X1", - "sub_path": "filament/Overture Matte PLA @BBL X1.json" - }, - { - "name": "Overture Matte PLA @BBL P1P", - "sub_path": "filament/Overture Matte PLA @BBL P1P.json" - }, - { - "name": "Overture Matte PLA @BBL A1M", - "sub_path": "filament/Overture Matte PLA @BBL A1M.json" - }, - { - "name": "Overture Matte PLA @BBL A1", - "sub_path": "filament/Overture Matte PLA @BBL A1.json" - }, - { - "name": "Overture Matte PLA @BBL A1 0.2 nozzle", - "sub_path": "filament/Overture Matte PLA @BBL A1 0.2 nozzle.json" - }, - { - "name": "Generic PLA High Speed @BBL X1C", - "sub_path": "filament/Generic PLA High Speed @BBL X1C.json" - }, - { - "name": "Generic PLA High Speed @BBL P1P", - "sub_path": "filament/Generic PLA High Speed @BBL P1P.json" - }, - { - "name": "Generic PLA High Speed @BBL A1M", - "sub_path": "filament/Generic PLA High Speed @BBL A1M.json" - }, - { - "name": "Generic PLA High Speed @BBL A1", - "sub_path": "filament/Generic PLA High Speed @BBL A1.json" - }, - { - "name": "Generic PLA High Speed @BBL A1 0.2 nozzle", - "sub_path": "filament/Generic PLA High Speed @BBL A1 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Glow @BBL X1C", - "sub_path": "filament/Bambu PLA Glow @BBL X1C.json" - }, - { - "name": "Bambu PLA Glow @BBL P1P", - "sub_path": "filament/Bambu PLA Glow @BBL P1P.json" - }, - { - "name": "Bambu PLA Glow @BBL X1E", - "sub_path": "filament/Bambu PLA Glow @BBL X1E.json" - }, - { - "name": "Bambu PLA Glow @BBL X1", - "sub_path": "filament/Bambu PLA Glow @BBL X1.json" - }, - { - "name": "Bambu PLA Glow @BBL A1 0.2 nozzle", - "sub_path": "filament/Bambu PLA Glow @BBL A1 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Glow @BBL A1", - "sub_path": "filament/Bambu PLA Glow @BBL A1.json" - }, - { - "name": "Bambu PLA Dynamic @BBL X1C", - "sub_path": "filament/Bambu PLA Dynamic @BBL X1C.json" - }, - { - "name": "Bambu PLA Dynamic @BBL X1C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Dynamic @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Dynamic @BBL X1C 0.8 nozzle", - "sub_path": "filament/Bambu PLA Dynamic @BBL X1C 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Dynamic @BBL P1P", - "sub_path": "filament/Bambu PLA Dynamic @BBL P1P.json" - }, - { - "name": "Bambu PLA Dynamic @BBL P1P 0.2 nozzle", - "sub_path": "filament/Bambu PLA Dynamic @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Dynamic @BBL A1", - "sub_path": "filament/Bambu PLA Dynamic @BBL A1.json" - }, - { - "name": "Bambu PLA Dynamic @BBL A1 0.2 nozzle", - "sub_path": "filament/Bambu PLA Dynamic @BBL A1 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Dynamic @BBL A1M 0.2 nozzle", - "sub_path": "filament/Bambu PLA Dynamic @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Dynamic @BBL A1M", - "sub_path": "filament/Bambu PLA Dynamic @BBL A1M.json" - }, - { - "name": "Bambu PLA Galaxy @BBL X1C", - "sub_path": "filament/Bambu PLA Galaxy @BBL X1C.json" - }, - { - "name": "Bambu PLA Galaxy @BBL X1C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Galaxy @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Galaxy @BBL X1C 0.8 nozzle", - "sub_path": "filament/Bambu PLA Galaxy @BBL X1C 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Galaxy @BBL P1P", - "sub_path": "filament/Bambu PLA Galaxy @BBL P1P.json" - }, - { - "name": "Bambu PLA Galaxy @BBL P1P 0.2 nozzle", - "sub_path": "filament/Bambu PLA Galaxy @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Galaxy @BBL A1", - "sub_path": "filament/Bambu PLA Galaxy @BBL A1.json" - }, - { - "name": "Bambu PLA Galaxy @BBL A1 0.2 nozzle", - "sub_path": "filament/Bambu PLA Galaxy @BBL A1 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Galaxy @BBL A1M", - "sub_path": "filament/Bambu PLA Galaxy @BBL A1M.json" - }, - { - "name": "Bambu PLA Galaxy @BBL A1M 0.2 nozzle", - "sub_path": "filament/Bambu PLA Galaxy @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Bambu Support For PLA/PETG @BBL X1C", - "sub_path": "filament/Bambu Support For PLA-PETG @BBL X1C.json" - }, - { - "name": "Bambu Support For PLA/PETG @BBL X1C 0.2 nozzle", - "sub_path": "filament/Bambu Support For PLA-PETG @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Bambu Support For PLA/PETG @BBL P1P", - "sub_path": "filament/Bambu Support For PLA-PETG @BBL P1P.json" - }, - { - "name": "Bambu Support For PLA/PETG @BBL P1P 0.2 nozzle", - "sub_path": "filament/Bambu Support For PLA-PETG @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Bambu Support For PLA/PETG @BBL A1M", - "sub_path": "filament/Bambu Support For PLA-PETG @BBL A1M.json" - }, - { - "name": "Bambu Support For PLA/PETG @BBL A1M 0.2 nozzle", - "sub_path": "filament/Bambu Support For PLA-PETG @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Bambu Support For PLA/PETG @BBL A1", - "sub_path": "filament/Bambu Support For PLA-PETG @BBL A1.json" - }, - { - "name": "Bambu Support For PLA/PETG @BBL A1 0.2 nozzle", - "sub_path": "filament/Bambu Support For PLA-PETG @BBL A1 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Wood @BBL X1C", - "sub_path": "filament/Bambu PLA Wood @BBL X1C.json" - }, - { - "name": "Bambu PLA Wood @BBL X1C 0.8 nozzle", - "sub_path": "filament/Bambu PLA Wood @BBL X1C 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Wood @BBL X1", - "sub_path": "filament/Bambu PLA Wood @BBL X1.json" - }, - { - "name": "Bambu PLA Wood @BBL P1P", - "sub_path": "filament/Bambu PLA Wood @BBL P1P.json" - }, - { - "name": "Bambu PLA Wood @BBL A1", - "sub_path": "filament/Bambu PLA Wood @BBL A1.json" - }, - { - "name": "Bambu PLA Wood @BBL A1M", - "sub_path": "filament/Bambu PLA Wood @BBL A1M.json" - }, - { - "name": "Bambu PLA Silk+ @BBL X1C", - "sub_path": "filament/Bambu PLA Silk+ @BBL X1C.json" - }, - { - "name": "Bambu PLA Silk+ @BBL X1C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Silk+ @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Silk+ @BBL X1", - "sub_path": "filament/Bambu PLA Silk+ @BBL X1.json" - }, - { - "name": "Bambu PLA Silk+ @BBL P1P", - "sub_path": "filament/Bambu PLA Silk+ @BBL P1P.json" - }, - { - "name": "Bambu PLA Silk+ @BBL P1P 0.2 nozzle", - "sub_path": "filament/Bambu PLA Silk+ @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Silk+ @BBL A1", - "sub_path": "filament/Bambu PLA Silk+ @BBL A1.json" - }, - { - "name": "Bambu PLA Silk+ @BBL A1 0.2 nozzle", - "sub_path": "filament/Bambu PLA Silk+ @BBL A1 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Silk+ @BBL A1M", - "sub_path": "filament/Bambu PLA Silk+ @BBL A1M.json" - }, - { - "name": "Bambu PLA Silk+ @BBL A1M 0.2 nozzle", - "sub_path": "filament/Bambu PLA Silk+ @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Bambu TPU 95A @BBL X1C", - "sub_path": "filament/Bambu TPU 95A @BBL X1C.json" - }, - { - "name": "Bambu TPU 95A @BBL X1", - "sub_path": "filament/Bambu TPU 95A @BBL X1.json" - }, - { - "name": "Bambu TPU 95A @BBL P1P", - "sub_path": "filament/P1P/Bambu TPU 95A @BBL P1P.json" - }, - { - "name": "Bambu TPU 95A @BBL A1M", - "sub_path": "filament/Bambu TPU 95A @BBL A1M.json" - }, - { - "name": "Bambu TPU 95A @BBL A1", - "sub_path": "filament/Bambu TPU 95A @BBL A1.json" - }, - { - "name": "Generic TPU @BBL A1M", - "sub_path": "filament/Generic TPU @BBL A1M.json" - }, - { - "name": "Generic TPU @BBL A1", - "sub_path": "filament/Generic TPU @BBL A1.json" - }, - { - "name": "Bambu TPU 95A HF @BBL X1C", - "sub_path": "filament/Bambu TPU 95A HF @BBL X1C.json" - }, - { - "name": "Bambu TPU 95A HF @BBL X1", - "sub_path": "filament/Bambu TPU 95A HF @BBL X1.json" - }, - { - "name": "Bambu TPU 95A HF @BBL P1P", - "sub_path": "filament/Bambu TPU 95A HF @BBL P1P.json" - }, - { - "name": "Bambu TPU 95A HF @BBL P1S", - "sub_path": "filament/Bambu TPU 95A HF @BBL P1S.json" - }, - { - "name": "Bambu TPU 95A HF @BBL X1E", - "sub_path": "filament/Bambu TPU 95A HF @BBL X1E.json" - }, - { - "name": "Bambu TPU 95A HF @BBL A1M", - "sub_path": "filament/Bambu TPU 95A HF @BBL A1M.json" - }, - { - "name": "Bambu TPU 95A HF @BBL A1", - "sub_path": "filament/Bambu TPU 95A HF @BBL A1.json" - }, - { - "name": "Generic TPU for AMS @BBL X1C", - "sub_path": "filament/Generic TPU for AMS @BBL X1C.json" - }, - { - "name": "Generic TPU for AMS @BBL P1P", - "sub_path": "filament/Generic TPU for AMS @BBL P1P.json" - }, - { - "name": "Generic TPU for AMS @BBL A1", - "sub_path": "filament/Generic TPU for AMS @BBL A1.json" - }, - { - "name": "Generic TPU for AMS @BBL A1M", - "sub_path": "filament/Generic TPU for AMS @BBL A1M.json" - }, - { - "name": "Bambu TPU for AMS @BBL X1C", - "sub_path": "filament/Bambu TPU for AMS @BBL X1C.json" - }, - { - "name": "Bambu TPU for AMS @BBL P1P", - "sub_path": "filament/Bambu TPU for AMS @BBL P1P.json" - }, - { - "name": "Bambu TPU for AMS @BBL A1", - "sub_path": "filament/Bambu TPU for AMS @BBL A1.json" - }, - { - "name": "Bambu TPU for AMS @BBL A1M", - "sub_path": "filament/Bambu TPU for AMS @BBL A1M.json" - }, - { - "name": "Bambu PETG Basic @BBL X1C", - "sub_path": "filament/Bambu PETG Basic @BBL X1C.json" - }, - { - "name": "Bambu PETG Basic @BBL X1C 0.2 nozzle", - "sub_path": "filament/Bambu PETG Basic @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Bambu PETG Basic @BBL X1C 0.8 nozzle", - "sub_path": "filament/Bambu PETG Basic @BBL X1C 0.8 nozzle.json" + "name": "Bambu PET-CF @BBL X1C", + "sub_path": "filament/Bambu PET-CF @BBL X1C.json" }, { "name": "Bambu PETG Basic @BBL A1", @@ -2162,156 +1594,16 @@ "sub_path": "filament/Bambu PETG Basic @BBL A1 0.8 nozzle.json" }, { - "name": "Bambu PET-CF @BBL X1C", - "sub_path": "filament/Bambu PET-CF @BBL X1C.json" + "name": "Bambu PETG Basic @BBL X1C", + "sub_path": "filament/Bambu PETG Basic @BBL X1C.json" }, { - "name": "Bambu PET-CF @BBL P1P", - "sub_path": "filament/P1P/Bambu PET-CF @BBL P1P.json" + "name": "Bambu PETG Basic @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu PETG Basic @BBL X1C 0.2 nozzle.json" }, { - "name": "Bambu PET-CF @BBL A1", - "sub_path": "filament/Bambu PET-CF @BBL A1.json" - }, - { - "name": "Generic PETG", - "sub_path": "filament/Generic PETG.json" - }, - { - "name": "Generic PETG @0.2 nozzle", - "sub_path": "filament/Generic PETG @0.2 nozzle.json" - }, - { - "name": "Generic PETG @BBL P1P", - "sub_path": "filament/P1P/Generic PETG @BBL P1P.json" - }, - { - "name": "Generic PETG @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/Generic PETG @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Generic PETG @BBL A1M", - "sub_path": "filament/Generic PETG @BBL A1M.json" - }, - { - "name": "Generic PETG @BBL A1M 0.2 nozzle", - "sub_path": "filament/Generic PETG @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Generic PETG @BBL A1", - "sub_path": "filament/Generic PETG @BBL A1.json" - }, - { - "name": "Generic PETG @BBL A1 0.2 nozzle", - "sub_path": "filament/Generic PETG @BBL A1 0.2 nozzle.json" - }, - { - "name": "Generic PETG-CF @BBL X1C", - "sub_path": "filament/Generic PETG-CF @BBL X1C.json" - }, - { - "name": "Generic PETG-CF @BBL P1P", - "sub_path": "filament/P1P/Generic PETG-CF @BBL P1P.json" - }, - { - "name": "Generic PETG-CF @BBL A1", - "sub_path": "filament/Generic PETG-CF @BBL A1.json" - }, - { - "name": "Bambu PETG-CF @BBL X1C", - "sub_path": "filament/Bambu PETG-CF @BBL X1C.json" - }, - { - "name": "Bambu PETG-CF @BBL X1C 0.4 nozzle", - "sub_path": "filament/Bambu PETG-CF @BBL X1C 0.4 nozzle.json" - }, - { - "name": "Bambu PETG-CF @BBL P1P", - "sub_path": "filament/P1P/Bambu PETG-CF @BBL P1P.json" - }, - { - "name": "Bambu PETG-CF @BBL P1P 0.4 nozzle", - "sub_path": "filament/P1P/Bambu PETG-CF @BBL P1P 0.4 nozzle.json" - }, - { - "name": "Bambu PETG-CF @BBL A1M", - "sub_path": "filament/Bambu PETG-CF @BBL A1M.json" - }, - { - "name": "Bambu PETG-CF @BBL A1 0.4 nozzle", - "sub_path": "filament/Bambu PETG-CF @BBL A1 0.4 nozzle.json" - }, - { - "name": "Bambu PETG-CF @BBL A1 0.8 nozzle", - "sub_path": "filament/Bambu PETG-CF @BBL A1 0.8 nozzle.json" - }, - { - "name": "PolyLite PETG @BBL X1C", - "sub_path": "filament/PolyLite PETG @BBL X1C.json" - }, - { - "name": "PolyLite PETG @BBL P1P", - "sub_path": "filament/PolyLite PETG @BBL P1P.json" - }, - { - "name": "PolyLite PETG @BBL A1M", - "sub_path": "filament/PolyLite PETG @BBL A1M.json" - }, - { - "name": "PolyLite PETG @BBL A1", - "sub_path": "filament/PolyLite PETG @BBL A1.json" - }, - { - "name": "PolyLite PETG @BBL A1 0.2 nozzle", - "sub_path": "filament/PolyLite PETG @BBL A1 0.2 nozzle.json" - }, - { - "name": "Bambu PETG Translucent @BBL X1C", - "sub_path": "filament/Bambu PETG Translucent @BBL X1C.json" - }, - { - "name": "Bambu PETG Translucent @BBL X1C 0.8 nozzle", - "sub_path": "filament/Bambu PETG Translucent @BBL X1C 0.8 nozzle.json" - }, - { - "name": "Bambu PETG Translucent @BBL A1M", - "sub_path": "filament/Bambu PETG Translucent @BBL A1M.json" - }, - { - "name": "Bambu PETG Translucent @BBL A1M 0.8 nozzle", - "sub_path": "filament/Bambu PETG Translucent @BBL A1M 0.8 nozzle.json" - }, - { - "name": "Bambu PETG Translucent @BBL A1 0.8 nozzle", - "sub_path": "filament/Bambu PETG Translucent @BBL A1 0.8 nozzle.json" - }, - { - "name": "Bambu PETG Translucent @BBL A1", - "sub_path": "filament/Bambu PETG Translucent @BBL A1.json" - }, - { - "name": "Bambu PETG Translucent @BBL X1C 0.2 nozzle", - "sub_path": "filament/Bambu PETG Translucent @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Bambu PETG Translucent @BBL A1M 0.2 nozzle", - "sub_path": "filament/Bambu PETG Translucent @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Bambu PETG Translucent @BBL A1 0.2 nozzle", - "sub_path": "filament/Bambu PETG Translucent @BBL A1 0.2 nozzle.json" - }, - { - "name": "Bambu PETG HF @BBL X1C", - "sub_path": "filament/Bambu PETG HF @BBL X1C.json" - }, - { - "name": "Bambu PETG HF @BBL X1C 0.2 nozzle", - "sub_path": "filament/Bambu PETG HF @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Bambu PETG HF @BBL X1C 0.8 nozzle", - "sub_path": "filament/Bambu PETG HF @BBL X1C 0.8 nozzle.json" + "name": "Bambu PETG Basic @BBL X1C 0.8 nozzle", + "sub_path": "filament/Bambu PETG Basic @BBL X1C 0.8 nozzle.json" }, { "name": "Bambu PETG HF @BBL A1", @@ -2338,16 +1630,84 @@ "sub_path": "filament/Bambu PETG HF @BBL A1M 0.8 nozzle.json" }, { - "name": "Generic PCTG @BBL X1C", - "sub_path": "filament/Generic PCTG @BBL X1C.json" + "name": "Bambu PETG HF @BBL X1C", + "sub_path": "filament/Bambu PETG HF @BBL X1C.json" }, { - "name": "Generic PCTG @BBL A1", - "sub_path": "filament/Generic PCTG @BBL A1.json" + "name": "Bambu PETG HF @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu PETG HF @BBL X1C 0.2 nozzle.json" }, { - "name": "Generic PCTG @BBL A1M", - "sub_path": "filament/Generic PCTG @BBL A1M.json" + "name": "Bambu PETG HF @BBL X1C 0.8 nozzle", + "sub_path": "filament/Bambu PETG HF @BBL X1C 0.8 nozzle.json" + }, + { + "name": "Bambu PETG Translucent @BBL A1", + "sub_path": "filament/Bambu PETG Translucent @BBL A1.json" + }, + { + "name": "Bambu PETG Translucent @BBL A1 0.2 nozzle", + "sub_path": "filament/Bambu PETG Translucent @BBL A1 0.2 nozzle.json" + }, + { + "name": "Bambu PETG Translucent @BBL A1 0.8 nozzle", + "sub_path": "filament/Bambu PETG Translucent @BBL A1 0.8 nozzle.json" + }, + { + "name": "Bambu PETG Translucent @BBL A1M", + "sub_path": "filament/Bambu PETG Translucent @BBL A1M.json" + }, + { + "name": "Bambu PETG Translucent @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu PETG Translucent @BBL A1M 0.2 nozzle.json" + }, + { + "name": "Bambu PETG Translucent @BBL A1M 0.8 nozzle", + "sub_path": "filament/Bambu PETG Translucent @BBL A1M 0.8 nozzle.json" + }, + { + "name": "Bambu PETG Translucent @BBL X1C", + "sub_path": "filament/Bambu PETG Translucent @BBL X1C.json" + }, + { + "name": "Bambu PETG Translucent @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu PETG Translucent @BBL X1C 0.2 nozzle.json" + }, + { + "name": "Bambu PETG Translucent @BBL X1C 0.8 nozzle", + "sub_path": "filament/Bambu PETG Translucent @BBL X1C 0.8 nozzle.json" + }, + { + "name": "Bambu PETG-CF @BBL A1 0.4 nozzle", + "sub_path": "filament/Bambu PETG-CF @BBL A1 0.4 nozzle.json" + }, + { + "name": "Bambu PETG-CF @BBL A1 0.8 nozzle", + "sub_path": "filament/Bambu PETG-CF @BBL A1 0.8 nozzle.json" + }, + { + "name": "Bambu PETG-CF @BBL A1M", + "sub_path": "filament/Bambu PETG-CF @BBL A1M.json" + }, + { + "name": "Bambu PETG-CF @BBL P1P", + "sub_path": "filament/P1P/Bambu PETG-CF @BBL P1P.json" + }, + { + "name": "Bambu PETG-CF @BBL P1P 0.4 nozzle", + "sub_path": "filament/P1P/Bambu PETG-CF @BBL P1P 0.4 nozzle.json" + }, + { + "name": "Bambu PETG-CF @BBL X1C", + "sub_path": "filament/Bambu PETG-CF @BBL X1C.json" + }, + { + "name": "Bambu PETG-CF @BBL X1C 0.4 nozzle", + "sub_path": "filament/Bambu PETG-CF @BBL X1C 0.4 nozzle.json" + }, + { + "name": "Fiberon PET-CF @BBL X1C", + "sub_path": "filament/Fiberon PET-CF @BBL X1C.json" }, { "name": "Fiberon PETG-ESD @BBL X1C", @@ -2358,24 +1718,36 @@ "sub_path": "filament/Fiberon PETG-rCF @BBL X1C.json" }, { - "name": "Fiberon PET-CF @BBL X1C", - "sub_path": "filament/Fiberon PET-CF @BBL X1C.json" + "name": "Generic PETG", + "sub_path": "filament/Generic PETG.json" }, { - "name": "Generic PETG HF @BBL X1C", - "sub_path": "filament/Generic PETG HF @BBL X1C.json" + "name": "Generic PETG @0.2 nozzle", + "sub_path": "filament/Generic PETG @0.2 nozzle.json" }, { - "name": "Generic PETG HF @BBL X1C 0.2 nozzle", - "sub_path": "filament/Generic PETG HF @BBL X1C 0.2 nozzle.json" + "name": "Generic PETG @BBL A1", + "sub_path": "filament/Generic PETG @BBL A1.json" }, { - "name": "Generic PETG HF @BBL P1P", - "sub_path": "filament/Generic PETG HF @BBL P1P.json" + "name": "Generic PETG @BBL A1 0.2 nozzle", + "sub_path": "filament/Generic PETG @BBL A1 0.2 nozzle.json" }, { - "name": "Generic PETG HF @BBL P1P 0.2 nozzle", - "sub_path": "filament/Generic PETG HF @BBL P1P 0.2 nozzle.json" + "name": "Generic PETG @BBL A1M", + "sub_path": "filament/Generic PETG @BBL A1M.json" + }, + { + "name": "Generic PETG @BBL A1M 0.2 nozzle", + "sub_path": "filament/Generic PETG @BBL A1M 0.2 nozzle.json" + }, + { + "name": "Generic PETG @BBL P1P", + "sub_path": "filament/P1P/Generic PETG @BBL P1P.json" + }, + { + "name": "Generic PETG @BBL P1P 0.2 nozzle", + "sub_path": "filament/P1P/Generic PETG @BBL P1P 0.2 nozzle.json" }, { "name": "Generic PETG HF @BBL A1", @@ -2394,368 +1766,1100 @@ "sub_path": "filament/Generic PETG HF @BBL A1M 0.2 nozzle.json" }, { - "name": "Bambu ABS @BBL X1C", - "sub_path": "filament/Bambu ABS @BBL X1C.json" + "name": "Generic PETG HF @BBL P1P", + "sub_path": "filament/Generic PETG HF @BBL P1P.json" }, { - "name": "Bambu ABS @BBL X1C 0.2 nozzle", - "sub_path": "filament/Bambu ABS @BBL X1C 0.2 nozzle.json" + "name": "Generic PETG HF @BBL P1P 0.2 nozzle", + "sub_path": "filament/Generic PETG HF @BBL P1P 0.2 nozzle.json" }, { - "name": "Bambu ABS @BBL X1C 0.8 nozzle", - "sub_path": "filament/Bambu ABS @BBL X1C 0.8 nozzle.json" + "name": "Generic PETG HF @BBL X1C", + "sub_path": "filament/Generic PETG HF @BBL X1C.json" }, { - "name": "Bambu ABS @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/Bambu ABS @BBL P1P 0.2 nozzle.json" + "name": "Generic PETG HF @BBL X1C 0.2 nozzle", + "sub_path": "filament/Generic PETG HF @BBL X1C 0.2 nozzle.json" }, { - "name": "Bambu ABS @BBL P1P", - "sub_path": "filament/P1P/Bambu ABS @BBL P1P.json" + "name": "Generic PETG-CF @BBL A1", + "sub_path": "filament/Generic PETG-CF @BBL A1.json" }, { - "name": "Bambu ABS @BBL A1", - "sub_path": "filament/Bambu ABS @BBL A1.json" + "name": "Generic PETG-CF @BBL P1P", + "sub_path": "filament/P1P/Generic PETG-CF @BBL P1P.json" }, { - "name": "Bambu ABS @BBL A1 0.2 nozzle", - "sub_path": "filament/Bambu ABS @BBL A1 0.2 nozzle.json" + "name": "Generic PETG-CF @BBL X1C", + "sub_path": "filament/Generic PETG-CF @BBL X1C.json" }, { - "name": "Generic ABS", - "sub_path": "filament/Generic ABS.json" + "name": "PolyLite PETG @BBL A1", + "sub_path": "filament/PolyLite PETG @BBL A1.json" }, { - "name": "Generic ABS @0.2 nozzle", - "sub_path": "filament/Generic ABS @0.2 nozzle.json" + "name": "PolyLite PETG @BBL A1 0.2 nozzle", + "sub_path": "filament/PolyLite PETG @BBL A1 0.2 nozzle.json" }, { - "name": "Generic ABS @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/Generic ABS @BBL P1P 0.2 nozzle.json" + "name": "PolyLite PETG @BBL A1M", + "sub_path": "filament/PolyLite PETG @BBL A1M.json" }, { - "name": "Generic ABS @BBL P1P", - "sub_path": "filament/P1P/Generic ABS @BBL P1P.json" + "name": "PolyLite PETG @BBL P1P", + "sub_path": "filament/PolyLite PETG @BBL P1P.json" }, { - "name": "Generic ABS @BBL A1", - "sub_path": "filament/Generic ABS @BBL A1.json" + "name": "PolyLite PETG @BBL X1C", + "sub_path": "filament/PolyLite PETG @BBL X1C.json" }, { - "name": "Generic ABS @BBL A1 0.2 nozzle", - "sub_path": "filament/Generic ABS @BBL A1 0.2 nozzle.json" + "name": "SUNLU PETG @BBL A1", + "sub_path": "filament/SUNLU/SUNLU PETG @BBL A1.json" }, { - "name": "PolyLite ABS @BBL X1C", - "sub_path": "filament/PolyLite ABS @BBL X1C.json" + "name": "SUNLU PETG @BBL A1 0.2 nozzle", + "sub_path": "filament/SUNLU/SUNLU PETG @BBL A1 0.2 nozzle.json" }, { - "name": "PolyLite ABS @BBL P1P", - "sub_path": "filament/PolyLite ABS @BBL P1P.json" + "name": "SUNLU PETG @BBL A1 0.8 nozzle", + "sub_path": "filament/SUNLU/SUNLU PETG @BBL A1 0.8 nozzle.json" }, { - "name": "PolyLite ABS @BBL A1", - "sub_path": "filament/PolyLite ABS @BBL A1.json" + "name": "SUNLU PETG @BBL X1C", + "sub_path": "filament/SUNLU/SUNLU PETG @BBL X1C.json" }, { - "name": "PolyLite ABS @BBL A1 0.2 nozzle", - "sub_path": "filament/PolyLite ABS @BBL A1 0.2 nozzle.json" + "name": "SUNLU PETG @BBL X1C 0.2 nozzle", + "sub_path": "filament/SUNLU/SUNLU PETG @BBL X1C 0.2 nozzle.json" }, { - "name": "Bambu ABS-GF @BBL X1C", - "sub_path": "filament/Bambu ABS-GF @BBL X1C.json" + "name": "SUNLU PETG @BBL X1C 0.8 nozzle", + "sub_path": "filament/SUNLU/SUNLU PETG @BBL X1C 0.8 nozzle.json" }, { - "name": "Bambu ABS-GF @BBL P1P", - "sub_path": "filament/Bambu ABS-GF @BBL P1P.json" + "name": "Generic PHA @BBL A1", + "sub_path": "filament/Generic PHA @BBL A1.json" }, { - "name": "Bambu ABS-GF @BBL A1", - "sub_path": "filament/Bambu ABS-GF @BBL A1.json" + "name": "Generic PHA @BBL A1M", + "sub_path": "filament/Generic PHA @BBL A1M.json" }, { - "name": "Bambu Support for ABS @BBL X1C", - "sub_path": "filament/Bambu Support for ABS @BBL X1C.json" + "name": "Generic PHA @BBL X1C", + "sub_path": "filament/Generic PHA @BBL X1C.json" }, { - "name": "Bambu Support for ABS @BBL A1", - "sub_path": "filament/Bambu Support for ABS @BBL A1.json" + "name": "Bambu PLA Aero @BBL A1", + "sub_path": "filament/Bambu PLA Aero @BBL A1.json" }, { - "name": "Bambu PC @BBL X1C", - "sub_path": "filament/Bambu PC @BBL X1C.json" + "name": "Bambu PLA Aero @BBL A1M", + "sub_path": "filament/Bambu PLA Aero @BBL A1M.json" }, { - "name": "Bambu PC @BBL X1C 0.2 nozzle", - "sub_path": "filament/Bambu PC @BBL X1C 0.2 nozzle.json" + "name": "Bambu PLA Aero @BBL P1P", + "sub_path": "filament/P1P/Bambu PLA Aero @BBL P1P.json" }, { - "name": "Bambu PC @BBL X1C 0.8 nozzle", - "sub_path": "filament/Bambu PC @BBL X1C 0.8 nozzle.json" + "name": "Bambu PLA Aero @BBL X1", + "sub_path": "filament/Bambu PLA Aero @BBL X1.json" }, { - "name": "Bambu PC @BBL X1C 0.6 nozzle", - "sub_path": "filament/Bambu PC @BBL X1C 0.6 nozzle.json" + "name": "Bambu PLA Aero @BBL X1C", + "sub_path": "filament/Bambu PLA Aero @BBL X1C.json" }, { - "name": "Bambu PC @BBL P1P", - "sub_path": "filament/P1P/Bambu PC @BBL P1P.json" + "name": "Bambu PLA Basic @BBL A1", + "sub_path": "filament/Bambu PLA Basic @BBL A1.json" }, { - "name": "Bambu PC @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/Bambu PC @BBL P1P 0.2 nozzle.json" + "name": "Bambu PLA Basic @BBL A1 0.2 nozzle", + "sub_path": "filament/Bambu PLA Basic @BBL A1 0.2 nozzle.json" }, { - "name": "Bambu PC @BBL A1 0.2 nozzle", - "sub_path": "filament/Bambu PC @BBL A1 0.2 nozzle.json" + "name": "Bambu PLA Basic @BBL A1M", + "sub_path": "filament/Bambu PLA Basic @BBL A1M.json" }, { - "name": "Bambu PC @BBL A1", - "sub_path": "filament/Bambu PC @BBL A1.json" + "name": "Bambu PLA Basic @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu PLA Basic @BBL A1M 0.2 nozzle.json" }, { - "name": "Generic PC @0.2 nozzle", - "sub_path": "filament/Generic PC @0.2 nozzle.json" + "name": "Bambu PLA Basic @BBL P1P", + "sub_path": "filament/P1P/Bambu PLA Basic @BBL P1P.json" }, { - "name": "Generic PC", - "sub_path": "filament/Generic PC.json" + "name": "Bambu PLA Basic @BBL P1P 0.2 nozzle", + "sub_path": "filament/P1P/Bambu PLA Basic @BBL P1P 0.2 nozzle.json" }, { - "name": "Generic PC @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/Generic PC @BBL P1P 0.2 nozzle.json" + "name": "Bambu PLA Basic @BBL X1", + "sub_path": "filament/Bambu PLA Basic @BBL X1.json" }, { - "name": "Generic PC @BBL P1P", - "sub_path": "filament/P1P/Generic PC @BBL P1P.json" + "name": "Bambu PLA Basic @BBL X1C", + "sub_path": "filament/Bambu PLA Basic @BBL X1C.json" }, { - "name": "Generic PC @BBL A1", - "sub_path": "filament/Generic PC @BBL A1.json" + "name": "Bambu PLA Basic @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Basic @BBL X1C 0.2 nozzle.json" }, { - "name": "Generic PC @BBL A1 0.2 nozzle", - "sub_path": "filament/Generic PC @BBL A1 0.2 nozzle.json" + "name": "Bambu PLA Basic @BBL X1C 0.8 nozzle", + "sub_path": "filament/Bambu PLA Basic @BBL X1C 0.8 nozzle.json" }, { - "name": "Bambu PC FR @BBL X1C", - "sub_path": "filament/Bambu PC FR @BBL X1C.json" + "name": "Bambu PLA Dynamic @BBL A1", + "sub_path": "filament/Bambu PLA Dynamic @BBL A1.json" }, { - "name": "Bambu PC FR @BBL X1C 0.6 nozzle", - "sub_path": "filament/Bambu PC FR @BBL X1C 0.6 nozzle.json" + "name": "Bambu PLA Dynamic @BBL A1 0.2 nozzle", + "sub_path": "filament/Bambu PLA Dynamic @BBL A1 0.2 nozzle.json" }, { - "name": "Bambu PC FR @BBL X1C 0.8 nozzle", - "sub_path": "filament/Bambu PC FR @BBL X1C 0.8 nozzle.json" + "name": "Bambu PLA Dynamic @BBL A1M", + "sub_path": "filament/Bambu PLA Dynamic @BBL A1M.json" }, { - "name": "Bambu PC FR @BBL X1C 0.2 nozzle", - "sub_path": "filament/Bambu PC FR @BBL X1C 0.2 nozzle.json" + "name": "Bambu PLA Dynamic @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu PLA Dynamic @BBL A1M 0.2 nozzle.json" }, { - "name": "Bambu PC FR @BBL P1S", - "sub_path": "filament/Bambu PC FR @BBL P1S.json" + "name": "Bambu PLA Dynamic @BBL P1P", + "sub_path": "filament/Bambu PLA Dynamic @BBL P1P.json" }, { - "name": "Bambu PC FR @BBL P1S 0.2 nozzle", - "sub_path": "filament/Bambu PC FR @BBL P1S 0.2 nozzle.json" + "name": "Bambu PLA Dynamic @BBL P1P 0.2 nozzle", + "sub_path": "filament/Bambu PLA Dynamic @BBL P1P 0.2 nozzle.json" }, { - "name": "Bambu PC FR @BBL P1S 0.6 nozzle", - "sub_path": "filament/Bambu PC FR @BBL P1S 0.6 nozzle.json" + "name": "Bambu PLA Dynamic @BBL X1C", + "sub_path": "filament/Bambu PLA Dynamic @BBL X1C.json" }, { - "name": "Bambu PC FR @BBL P1S 0.8 nozzle", - "sub_path": "filament/Bambu PC FR @BBL P1S 0.8 nozzle.json" + "name": "Bambu PLA Dynamic @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Dynamic @BBL X1C 0.2 nozzle.json" }, { - "name": "Bambu PC FR @BBL P1P", - "sub_path": "filament/Bambu PC FR @BBL P1P.json" + "name": "Bambu PLA Dynamic @BBL X1C 0.8 nozzle", + "sub_path": "filament/Bambu PLA Dynamic @BBL X1C 0.8 nozzle.json" }, { - "name": "Bambu PC FR @BBL P1P 0.2 nozzle", - "sub_path": "filament/Bambu PC FR @BBL P1P 0.2 nozzle.json" + "name": "Bambu PLA Galaxy @BBL A1", + "sub_path": "filament/Bambu PLA Galaxy @BBL A1.json" }, { - "name": "Bambu PC FR @BBL X1E", - "sub_path": "filament/Bambu PC FR @BBL X1E.json" + "name": "Bambu PLA Galaxy @BBL A1 0.2 nozzle", + "sub_path": "filament/Bambu PLA Galaxy @BBL A1 0.2 nozzle.json" }, { - "name": "Bambu PC FR @BBL X1E 0.2 nozzle", - "sub_path": "filament/Bambu PC FR @BBL X1E 0.2 nozzle.json" + "name": "Bambu PLA Galaxy @BBL A1M", + "sub_path": "filament/Bambu PLA Galaxy @BBL A1M.json" }, { - "name": "Bambu PC FR @BBL X1E 0.6 nozzle", - "sub_path": "filament/Bambu PC FR @BBL X1E 0.6 nozzle.json" + "name": "Bambu PLA Galaxy @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu PLA Galaxy @BBL A1M 0.2 nozzle.json" }, { - "name": "Bambu PC FR @BBL X1E 0.8 nozzle", - "sub_path": "filament/Bambu PC FR @BBL X1E 0.8 nozzle.json" + "name": "Bambu PLA Galaxy @BBL P1P", + "sub_path": "filament/Bambu PLA Galaxy @BBL P1P.json" }, { - "name": "Bambu PC FR @BBL A1", - "sub_path": "filament/Bambu PC FR @BBL A1.json" + "name": "Bambu PLA Galaxy @BBL P1P 0.2 nozzle", + "sub_path": "filament/Bambu PLA Galaxy @BBL P1P 0.2 nozzle.json" }, { - "name": "Bambu PC FR @BBL A1 0.2 nozzle", - "sub_path": "filament/Bambu PC FR @BBL A1 0.2 nozzle.json" + "name": "Bambu PLA Galaxy @BBL X1C", + "sub_path": "filament/Bambu PLA Galaxy @BBL X1C.json" }, { - "name": "Generic ASA @0.2 nozzle", - "sub_path": "filament/Generic ASA @0.2 nozzle.json" + "name": "Bambu PLA Galaxy @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Galaxy @BBL X1C 0.2 nozzle.json" }, { - "name": "Generic ASA", - "sub_path": "filament/Generic ASA.json" + "name": "Bambu PLA Galaxy @BBL X1C 0.8 nozzle", + "sub_path": "filament/Bambu PLA Galaxy @BBL X1C 0.8 nozzle.json" }, { - "name": "Generic ASA @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/Generic ASA @BBL P1P 0.2 nozzle.json" + "name": "Bambu PLA Glow @BBL A1", + "sub_path": "filament/Bambu PLA Glow @BBL A1.json" }, { - "name": "Generic ASA @BBL P1P", - "sub_path": "filament/P1P/Generic ASA @BBL P1P.json" + "name": "Bambu PLA Glow @BBL A1 0.2 nozzle", + "sub_path": "filament/Bambu PLA Glow @BBL A1 0.2 nozzle.json" }, { - "name": "Generic ASA @BBL A1 0.2 nozzle", - "sub_path": "filament/Generic ASA @BBL A1 0.2 nozzle.json" + "name": "Bambu PLA Glow @BBL P1P", + "sub_path": "filament/Bambu PLA Glow @BBL P1P.json" }, { - "name": "Generic ASA @BBL A1", - "sub_path": "filament/Generic ASA @BBL A1.json" + "name": "Bambu PLA Glow @BBL X1", + "sub_path": "filament/Bambu PLA Glow @BBL X1.json" }, { - "name": "Bambu ASA @BBL X1 0.2 nozzle", - "sub_path": "filament/Bambu ASA @BBL X1 0.2 nozzle.json" + "name": "Bambu PLA Glow @BBL X1C", + "sub_path": "filament/Bambu PLA Glow @BBL X1C.json" }, { - "name": "Bambu ASA @BBL X1 0.6 nozzle", - "sub_path": "filament/Bambu ASA @BBL X1 0.6 nozzle.json" + "name": "Bambu PLA Glow @BBL X1E", + "sub_path": "filament/Bambu PLA Glow @BBL X1E.json" }, { - "name": "Bambu ASA @BBL X1C", - "sub_path": "filament/Bambu ASA @BBL X1C.json" + "name": "Bambu PLA Impact @BBL X1C", + "sub_path": "filament/Bambu PLA Impact @BBL X1C.json" }, { - "name": "Bambu ASA @BBL X1C 0.2 nozzle", - "sub_path": "filament/Bambu ASA @BBL X1C 0.2 nozzle.json" + "name": "Bambu PLA Marble @BBL A1", + "sub_path": "filament/Bambu PLA Marble @BBL A1.json" }, { - "name": "Bambu ASA @BBL X1C 0.4 nozzle", - "sub_path": "filament/Bambu ASA @BBL X1C 0.4 nozzle.json" + "name": "Bambu PLA Marble @BBL A1M", + "sub_path": "filament/Bambu PLA Marble @BBL A1M.json" }, { - "name": "Bambu ASA @BBL A1 0.6 nozzle", - "sub_path": "filament/Bambu ASA @BBL A1 0.6 nozzle.json" + "name": "Bambu PLA Marble @BBL P1P", + "sub_path": "filament/P1P/Bambu PLA Marble @BBL P1P.json" }, { - "name": "Bambu ASA @BBL A1 0.4 nozzle", - "sub_path": "filament/Bambu ASA @BBL A1 0.4 nozzle.json" + "name": "Bambu PLA Marble @BBL X1", + "sub_path": "filament/Bambu PLA Marble @BBL X1.json" }, { - "name": "Bambu ASA @BBL A1 0.2 nozzle", - "sub_path": "filament/Bambu ASA @BBL A1 0.2 nozzle.json" + "name": "Bambu PLA Marble @BBL X1C", + "sub_path": "filament/Bambu PLA Marble @BBL X1C.json" }, { - "name": "PolyLite ASA @BBL X1C", - "sub_path": "filament/PolyLite ASA @BBL X1C.json" + "name": "Bambu PLA Matte @BBL A1", + "sub_path": "filament/Bambu PLA Matte @BBL A1.json" }, { - "name": "PolyLite ASA @BBL P1P", - "sub_path": "filament/PolyLite ASA @BBL P1P.json" + "name": "Bambu PLA Matte @BBL A1 0.2 nozzle", + "sub_path": "filament/Bambu PLA Matte @BBL A1 0.2 nozzle.json" }, { - "name": "PolyLite ASA @BBL A1 0.2 nozzle", - "sub_path": "filament/PolyLite ASA @BBL A1 0.2 nozzle.json" + "name": "Bambu PLA Matte @BBL A1M", + "sub_path": "filament/Bambu PLA Matte @BBL A1M.json" }, { - "name": "PolyLite ASA @BBL A1", - "sub_path": "filament/PolyLite ASA @BBL A1.json" + "name": "Bambu PLA Matte @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu PLA Matte @BBL A1M 0.2 nozzle.json" }, { - "name": "Bambu ASA-Aero @BBL X1C", - "sub_path": "filament/Bambu ASA-Aero @BBL X1C.json" + "name": "Bambu PLA Matte @BBL P1P", + "sub_path": "filament/P1P/Bambu PLA Matte @BBL P1P.json" }, { - "name": "Bambu ASA-Aero @BBL P1P", - "sub_path": "filament/Bambu ASA-Aero @BBL P1P.json" + "name": "Bambu PLA Matte @BBL P1P 0.2 nozzle", + "sub_path": "filament/P1P/Bambu PLA Matte @BBL P1P 0.2 nozzle.json" }, { - "name": "Bambu ASA-Aero @BBL A1", - "sub_path": "filament/Bambu ASA-Aero @BBL A1.json" + "name": "Bambu PLA Matte @BBL X1", + "sub_path": "filament/Bambu PLA Matte @BBL X1.json" }, { - "name": "Bambu ASA-CF @BBL X1C", - "sub_path": "filament/Bambu ASA-CF @BBL X1C.json" + "name": "Bambu PLA Matte @BBL X1C", + "sub_path": "filament/Bambu PLA Matte @BBL X1C.json" }, { - "name": "Bambu ASA-CF @BBL X1C 0.6 nozzle", - "sub_path": "filament/Bambu ASA-CF @BBL X1C 0.6 nozzle.json" + "name": "Bambu PLA Matte @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Matte @BBL X1C 0.2 nozzle.json" }, { - "name": "Bambu ASA-CF @BBL P1P", - "sub_path": "filament/Bambu ASA-CF @BBL P1P.json" + "name": "Bambu PLA Matte @BBL X1C 0.8 nozzle", + "sub_path": "filament/Bambu PLA Matte @BBL X1C 0.8 nozzle.json" }, { - "name": "Bambu ASA-CF @BBL P1P 0.6 nozzle", - "sub_path": "filament/Bambu ASA-CF @BBL P1P 0.6 nozzle.json" + "name": "Bambu PLA Metal @BBL A1", + "sub_path": "filament/Bambu PLA Metal @BBL A1.json" }, { - "name": "Bambu ASA-CF @BBL A1", - "sub_path": "filament/Bambu ASA-CF @BBL A1.json" + "name": "Bambu PLA Metal @BBL A1 0.2 nozzle", + "sub_path": "filament/Bambu PLA Metal @BBL A1 0.2 nozzle.json" }, { - "name": "Bambu ASA-CF @BBL A1 0.6 nozzle", - "sub_path": "filament/Bambu ASA-CF @BBL A1 0.6 nozzle.json" + "name": "Bambu PLA Metal @BBL A1M", + "sub_path": "filament/Bambu PLA Metal @BBL A1M.json" }, { - "name": "Generic PVA @0.2 nozzle", - "sub_path": "filament/Generic PVA @0.2 nozzle.json" + "name": "Bambu PLA Metal @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu PLA Metal @BBL A1M 0.2 nozzle.json" }, { - "name": "Generic PVA", - "sub_path": "filament/Generic PVA.json" + "name": "Bambu PLA Metal @BBL P1P", + "sub_path": "filament/P1P/Bambu PLA Metal @BBL P1P.json" }, { - "name": "Generic PVA @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/Generic PVA @BBL P1P 0.2 nozzle.json" + "name": "Bambu PLA Metal @BBL P1P 0.2 nozzle", + "sub_path": "filament/P1P/Bambu PLA Metal @BBL P1P 0.2 nozzle.json" }, { - "name": "Generic PVA @BBL P1P", - "sub_path": "filament/P1P/Generic PVA @BBL P1P.json" + "name": "Bambu PLA Metal @BBL X1", + "sub_path": "filament/Bambu PLA Metal @BBL X1.json" }, { - "name": "Generic PVA @BBL A1M", - "sub_path": "filament/Generic PVA @BBL A1M.json" + "name": "Bambu PLA Metal @BBL X1C", + "sub_path": "filament/Bambu PLA Metal @BBL X1C.json" }, { - "name": "Generic PVA @BBL A1M 0.2 nozzle", - "sub_path": "filament/Generic PVA @BBL A1M 0.2 nozzle.json" + "name": "Bambu PLA Metal @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Metal @BBL X1C 0.2 nozzle.json" }, { - "name": "Generic PVA @BBL A1", - "sub_path": "filament/Generic PVA @BBL A1.json" + "name": "Bambu PLA Silk @BBL A1", + "sub_path": "filament/Bambu PLA Silk @BBL A1.json" }, { - "name": "Generic PVA @BBL A1 0.2 nozzle", - "sub_path": "filament/Generic PVA @BBL A1 0.2 nozzle.json" + "name": "Bambu PLA Silk @BBL A1 0.2 nozzle", + "sub_path": "filament/Bambu PLA Silk @BBL A1 0.2 nozzle.json" }, { - "name": "Bambu PVA @BBL X1C", - "sub_path": "filament/Bambu PVA @BBL X1C.json" + "name": "Bambu PLA Silk @BBL A1M", + "sub_path": "filament/Bambu PLA Silk @BBL A1M.json" }, { - "name": "Bambu PVA @BBL X1C 0.2 nozzle", - "sub_path": "filament/Bambu PVA @BBL X1C 0.2 nozzle.json" + "name": "Bambu PLA Silk @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu PLA Silk @BBL A1M 0.2 nozzle.json" }, { - "name": "Bambu PVA @BBL P1P", - "sub_path": "filament/Bambu PVA @BBL P1P.json" + "name": "Bambu PLA Silk @BBL P1P", + "sub_path": "filament/P1P/Bambu PLA Silk @BBL P1P.json" }, { - "name": "Bambu PVA @BBL P1P 0.2 nozzle", - "sub_path": "filament/Bambu PVA @BBL P1P 0.2 nozzle.json" + "name": "Bambu PLA Silk @BBL P1P 0.2 nozzle", + "sub_path": "filament/P1P/Bambu PLA Silk @BBL P1P 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Silk @BBL X1", + "sub_path": "filament/Bambu PLA Silk @BBL X1.json" + }, + { + "name": "Bambu PLA Silk @BBL X1C", + "sub_path": "filament/Bambu PLA Silk @BBL X1C.json" + }, + { + "name": "Bambu PLA Silk @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Silk @BBL X1C 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Silk+ @BBL A1", + "sub_path": "filament/Bambu PLA Silk+ @BBL A1.json" + }, + { + "name": "Bambu PLA Silk+ @BBL A1 0.2 nozzle", + "sub_path": "filament/Bambu PLA Silk+ @BBL A1 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Silk+ @BBL A1M", + "sub_path": "filament/Bambu PLA Silk+ @BBL A1M.json" + }, + { + "name": "Bambu PLA Silk+ @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu PLA Silk+ @BBL A1M 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Silk+ @BBL P1P", + "sub_path": "filament/Bambu PLA Silk+ @BBL P1P.json" + }, + { + "name": "Bambu PLA Silk+ @BBL P1P 0.2 nozzle", + "sub_path": "filament/Bambu PLA Silk+ @BBL P1P 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Silk+ @BBL X1", + "sub_path": "filament/Bambu PLA Silk+ @BBL X1.json" + }, + { + "name": "Bambu PLA Silk+ @BBL X1C", + "sub_path": "filament/Bambu PLA Silk+ @BBL X1C.json" + }, + { + "name": "Bambu PLA Silk+ @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Silk+ @BBL X1C 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Sparkle @BBL A1", + "sub_path": "filament/Bambu PLA Sparkle @BBL A1.json" + }, + { + "name": "Bambu PLA Sparkle @BBL A1M", + "sub_path": "filament/Bambu PLA Sparkle @BBL A1M.json" + }, + { + "name": "Bambu PLA Sparkle @BBL P1P", + "sub_path": "filament/P1P/Bambu PLA Sparkle @BBL P1P.json" + }, + { + "name": "Bambu PLA Sparkle @BBL X1", + "sub_path": "filament/Bambu PLA Sparkle @BBL X1.json" + }, + { + "name": "Bambu PLA Sparkle @BBL X1C", + "sub_path": "filament/Bambu PLA Sparkle @BBL X1C.json" + }, + { + "name": "Bambu PLA Tough @BBL A1", + "sub_path": "filament/Bambu PLA Tough @BBL A1.json" + }, + { + "name": "Bambu PLA Tough @BBL A1 0.2 nozzle", + "sub_path": "filament/Bambu PLA Tough @BBL A1 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Tough @BBL A1M", + "sub_path": "filament/Bambu PLA Tough @BBL A1M.json" + }, + { + "name": "Bambu PLA Tough @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu PLA Tough @BBL A1M 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Tough @BBL P1P", + "sub_path": "filament/P1P/Bambu PLA Tough @BBL P1P.json" + }, + { + "name": "Bambu PLA Tough @BBL P1P 0.2 nozzle", + "sub_path": "filament/P1P/Bambu PLA Tough @BBL P1P 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Tough @BBL X1", + "sub_path": "filament/Bambu PLA Tough @BBL X1.json" + }, + { + "name": "Bambu PLA Tough @BBL X1C", + "sub_path": "filament/Bambu PLA Tough @BBL X1C.json" + }, + { + "name": "Bambu PLA Tough @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Tough @BBL X1C 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Wood @BBL A1", + "sub_path": "filament/Bambu PLA Wood @BBL A1.json" + }, + { + "name": "Bambu PLA Wood @BBL A1M", + "sub_path": "filament/Bambu PLA Wood @BBL A1M.json" + }, + { + "name": "Bambu PLA Wood @BBL P1P", + "sub_path": "filament/Bambu PLA Wood @BBL P1P.json" + }, + { + "name": "Bambu PLA Wood @BBL X1", + "sub_path": "filament/Bambu PLA Wood @BBL X1.json" + }, + { + "name": "Bambu PLA Wood @BBL X1C", + "sub_path": "filament/Bambu PLA Wood @BBL X1C.json" + }, + { + "name": "Bambu PLA Wood @BBL X1C 0.8 nozzle", + "sub_path": "filament/Bambu PLA Wood @BBL X1C 0.8 nozzle.json" + }, + { + "name": "Bambu PLA-CF @BBL A1", + "sub_path": "filament/Bambu PLA-CF @BBL A1.json" + }, + { + "name": "Bambu PLA-CF @BBL A1 0.8 nozzle", + "sub_path": "filament/Bambu PLA-CF @BBL A1 0.8 nozzle.json" + }, + { + "name": "Bambu PLA-CF @BBL A1M", + "sub_path": "filament/Bambu PLA-CF @BBL A1M.json" + }, + { + "name": "Bambu PLA-CF @BBL A1M 0.8 nozzle", + "sub_path": "filament/Bambu PLA-CF @BBL A1M 0.8 nozzle.json" + }, + { + "name": "Bambu PLA-CF @BBL P1P", + "sub_path": "filament/P1P/Bambu PLA-CF @BBL P1P.json" + }, + { + "name": "Bambu PLA-CF @BBL P1P 0.8 nozzle", + "sub_path": "filament/P1P/Bambu PLA-CF @BBL P1P 0.8 nozzle.json" + }, + { + "name": "Bambu PLA-CF @BBL X1C", + "sub_path": "filament/Bambu PLA-CF @BBL X1C.json" + }, + { + "name": "Bambu PLA-CF @BBL X1C 0.8 nozzle", + "sub_path": "filament/Bambu PLA-CF @BBL X1C 0.8 nozzle.json" + }, + { + "name": "Bambu Support For PLA @BBL A1", + "sub_path": "filament/Bambu Support For PLA @BBL A1.json" + }, + { + "name": "Bambu Support For PLA @BBL A1 0.2 nozzle", + "sub_path": "filament/Bambu Support For PLA @BBL A1 0.2 nozzle.json" + }, + { + "name": "Bambu Support For PLA @BBL A1M", + "sub_path": "filament/Bambu Support For PLA @BBL A1M.json" + }, + { + "name": "Bambu Support For PLA @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu Support For PLA @BBL A1M 0.2 nozzle.json" + }, + { + "name": "Bambu Support For PLA @BBL P1P", + "sub_path": "filament/P1P/Bambu Support For PLA @BBL P1P.json" + }, + { + "name": "Bambu Support For PLA @BBL P1P 0.2 nozzle", + "sub_path": "filament/P1P/Bambu Support For PLA @BBL P1P 0.2 nozzle.json" + }, + { + "name": "Bambu Support For PLA @BBL X1C", + "sub_path": "filament/Bambu Support For PLA @BBL X1C.json" + }, + { + "name": "Bambu Support For PLA @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu Support For PLA @BBL X1C 0.2 nozzle.json" + }, + { + "name": "Bambu Support For PLA/PETG @BBL A1", + "sub_path": "filament/Bambu Support For PLA-PETG @BBL A1.json" + }, + { + "name": "Bambu Support For PLA/PETG @BBL A1 0.2 nozzle", + "sub_path": "filament/Bambu Support For PLA-PETG @BBL A1 0.2 nozzle.json" + }, + { + "name": "Bambu Support For PLA/PETG @BBL A1M", + "sub_path": "filament/Bambu Support For PLA-PETG @BBL A1M.json" + }, + { + "name": "Bambu Support For PLA/PETG @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu Support For PLA-PETG @BBL A1M 0.2 nozzle.json" + }, + { + "name": "Bambu Support For PLA/PETG @BBL P1P", + "sub_path": "filament/Bambu Support For PLA-PETG @BBL P1P.json" + }, + { + "name": "Bambu Support For PLA/PETG @BBL P1P 0.2 nozzle", + "sub_path": "filament/Bambu Support For PLA-PETG @BBL P1P 0.2 nozzle.json" + }, + { + "name": "Bambu Support For PLA/PETG @BBL X1C", + "sub_path": "filament/Bambu Support For PLA-PETG @BBL X1C.json" + }, + { + "name": "Bambu Support For PLA/PETG @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu Support For PLA-PETG @BBL X1C 0.2 nozzle.json" + }, + { + "name": "Bambu Support W @BBL A1", + "sub_path": "filament/Bambu Support W @BBL A1.json" + }, + { + "name": "Bambu Support W @BBL A1 0.2 nozzle", + "sub_path": "filament/Bambu Support W @BBL A1 0.2 nozzle.json" + }, + { + "name": "Bambu Support W @BBL A1M", + "sub_path": "filament/Bambu Support W @BBL A1M.json" + }, + { + "name": "Bambu Support W @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu Support W @BBL A1M 0.2 nozzle.json" + }, + { + "name": "Bambu Support W @BBL P1P", + "sub_path": "filament/P1P/Bambu Support W @BBL P1P.json" + }, + { + "name": "Bambu Support W @BBL P1P 0.2 nozzle", + "sub_path": "filament/P1P/Bambu Support W @BBL P1P 0.2 nozzle.json" + }, + { + "name": "Bambu Support W @BBL X1", + "sub_path": "filament/Bambu Support W @BBL X1.json" + }, + { + "name": "Bambu Support W @BBL X1C", + "sub_path": "filament/Bambu Support W @BBL X1C.json" + }, + { + "name": "Bambu Support W @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu Support W @BBL X1C 0.2 nozzle.json" + }, + { + "name": "Generic PLA", + "sub_path": "filament/Generic PLA.json" + }, + { + "name": "Generic PLA @0.2 nozzle", + "sub_path": "filament/Generic PLA @0.2 nozzle.json" + }, + { + "name": "Generic PLA @BBL A1", + "sub_path": "filament/Generic PLA @BBL A1.json" + }, + { + "name": "Generic PLA @BBL A1 0.2 nozzle", + "sub_path": "filament/Generic PLA @BBL A1 0.2 nozzle.json" + }, + { + "name": "Generic PLA @BBL A1M", + "sub_path": "filament/Generic PLA @BBL A1M.json" + }, + { + "name": "Generic PLA @BBL A1M 0.2 nozzle", + "sub_path": "filament/Generic PLA @BBL A1M 0.2 nozzle.json" + }, + { + "name": "Generic PLA @BBL P1P", + "sub_path": "filament/P1P/Generic PLA @BBL P1P.json" + }, + { + "name": "Generic PLA @BBL P1P 0.2 nozzle", + "sub_path": "filament/P1P/Generic PLA @BBL P1P 0.2 nozzle.json" + }, + { + "name": "Generic PLA High Speed @BBL A1", + "sub_path": "filament/Generic PLA High Speed @BBL A1.json" + }, + { + "name": "Generic PLA High Speed @BBL A1 0.2 nozzle", + "sub_path": "filament/Generic PLA High Speed @BBL A1 0.2 nozzle.json" + }, + { + "name": "Generic PLA High Speed @BBL A1M", + "sub_path": "filament/Generic PLA High Speed @BBL A1M.json" + }, + { + "name": "Generic PLA High Speed @BBL P1P", + "sub_path": "filament/Generic PLA High Speed @BBL P1P.json" + }, + { + "name": "Generic PLA High Speed @BBL X1C", + "sub_path": "filament/Generic PLA High Speed @BBL X1C.json" + }, + { + "name": "Generic PLA Silk", + "sub_path": "filament/Generic PLA Silk.json" + }, + { + "name": "Generic PLA Silk @BBL A1", + "sub_path": "filament/Generic PLA Silk @BBL A1.json" + }, + { + "name": "Generic PLA Silk @BBL A1M", + "sub_path": "filament/Generic PLA Silk @BBL A1M.json" + }, + { + "name": "Generic PLA Silk @BBL P1P", + "sub_path": "filament/P1P/Generic PLA Silk @BBL P1P.json" + }, + { + "name": "Generic PLA-CF", + "sub_path": "filament/Generic PLA-CF.json" + }, + { + "name": "Generic PLA-CF @BBL A1", + "sub_path": "filament/Generic PLA-CF @BBL A1.json" + }, + { + "name": "Generic PLA-CF @BBL A1M", + "sub_path": "filament/Generic PLA-CF @BBL A1M.json" + }, + { + "name": "Generic PLA-CF @BBL P1P", + "sub_path": "filament/P1P/Generic PLA-CF @BBL P1P.json" + }, + { + "name": "Overture Matte PLA @BBL A1", + "sub_path": "filament/Overture Matte PLA @BBL A1.json" + }, + { + "name": "Overture Matte PLA @BBL A1 0.2 nozzle", + "sub_path": "filament/Overture Matte PLA @BBL A1 0.2 nozzle.json" + }, + { + "name": "Overture Matte PLA @BBL A1M", + "sub_path": "filament/Overture Matte PLA @BBL A1M.json" + }, + { + "name": "Overture Matte PLA @BBL P1P", + "sub_path": "filament/Overture Matte PLA @BBL P1P.json" + }, + { + "name": "Overture Matte PLA @BBL X1", + "sub_path": "filament/Overture Matte PLA @BBL X1.json" + }, + { + "name": "Overture Matte PLA @BBL X1C", + "sub_path": "filament/Overture Matte PLA @BBL X1C.json" + }, + { + "name": "Overture PLA @BBL A1", + "sub_path": "filament/Overture PLA @BBL A1.json" + }, + { + "name": "Overture PLA @BBL A1 0.2 nozzle", + "sub_path": "filament/Overture PLA @BBL A1 0.2 nozzle.json" + }, + { + "name": "Overture PLA @BBL A1M", + "sub_path": "filament/Overture PLA @BBL A1M.json" + }, + { + "name": "Overture PLA @BBL P1P", + "sub_path": "filament/Overture PLA @BBL P1P.json" + }, + { + "name": "Overture PLA @BBL X1", + "sub_path": "filament/Overture PLA @BBL X1.json" + }, + { + "name": "Overture PLA @BBL X1C", + "sub_path": "filament/Overture PLA @BBL X1C.json" + }, + { + "name": "PolyLite PLA @BBL A1", + "sub_path": "filament/PolyLite PLA @BBL A1.json" + }, + { + "name": "PolyLite PLA @BBL A1 0.2 nozzle", + "sub_path": "filament/PolyLite PLA @BBL A1 0.2 nozzle.json" + }, + { + "name": "PolyLite PLA @BBL A1M", + "sub_path": "filament/PolyLite PLA @BBL A1M.json" + }, + { + "name": "PolyLite PLA @BBL A1M 0.2 nozzle", + "sub_path": "filament/PolyLite PLA @BBL A1M 0.2 nozzle.json" + }, + { + "name": "PolyLite PLA @BBL P1P", + "sub_path": "filament/P1P/PolyLite PLA @BBL P1P.json" + }, + { + "name": "PolyLite PLA @BBL X1", + "sub_path": "filament/PolyLite PLA @BBL X1.json" + }, + { + "name": "PolyLite PLA @BBL X1C", + "sub_path": "filament/PolyLite PLA @BBL X1C.json" + }, + { + "name": "PolyTerra PLA @BBL A1", + "sub_path": "filament/PolyTerra PLA @BBL A1.json" + }, + { + "name": "PolyTerra PLA @BBL A1 0.2 nozzle", + "sub_path": "filament/PolyTerra PLA @BBL A1 0.2 nozzle.json" + }, + { + "name": "PolyTerra PLA @BBL A1M", + "sub_path": "filament/PolyTerra PLA @BBL A1M.json" + }, + { + "name": "PolyTerra PLA @BBL A1M 0.2 nozzle", + "sub_path": "filament/PolyTerra PLA @BBL A1M 0.2 nozzle.json" + }, + { + "name": "PolyTerra PLA @BBL P1P", + "sub_path": "filament/P1P/PolyTerra PLA @BBL P1P.json" + }, + { + "name": "PolyTerra PLA @BBL X1", + "sub_path": "filament/PolyTerra PLA @BBL X1.json" + }, + { + "name": "PolyTerra PLA @BBL X1C", + "sub_path": "filament/PolyTerra PLA @BBL X1C.json" + }, + { + "name": "SUNLU PLA Marble @BBL A1", + "sub_path": "filament/SUNLU/SUNLU Marble PLA @BBL A1.json" + }, + { + "name": "SUNLU PLA Marble @BBL A1M", + "sub_path": "filament/SUNLU/SUNLU Marble PLA @BBL A1M.json" + }, + { + "name": "SUNLU PLA Marble @BBL P1P", + "sub_path": "filament/SUNLU/SUNLU Marble PLA @BBL P1P.json" + }, + { + "name": "SUNLU PLA Marble @BBL X1", + "sub_path": "filament/SUNLU/SUNLU Marble PLA @BBL X1.json" + }, + { + "name": "SUNLU PLA Marble @BBL X1C", + "sub_path": "filament/SUNLU/SUNLU Marble PLA @BBL X1C.json" + }, + { + "name": "SUNLU PLA Matte @BBL A1", + "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL A1.json" + }, + { + "name": "SUNLU PLA Matte @BBL A1 0.2 nozzle", + "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL A1 0.2 nozzle.json" + }, + { + "name": "SUNLU PLA Matte @BBL A1M", + "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL A1M.json" + }, + { + "name": "SUNLU PLA Matte @BBL A1M 0.2 nozzle", + "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL A1M 0.2 nozzle.json" + }, + { + "name": "SUNLU PLA Matte @BBL P1P", + "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL P1P.json" + }, + { + "name": "SUNLU PLA Matte @BBL P1P 0.2 nozzle", + "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL P1P 0.2 nozzle.json" + }, + { + "name": "SUNLU PLA Matte @BBL X1", + "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL X1.json" + }, + { + "name": "SUNLU PLA Matte @BBL X1C", + "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL X1C.json" + }, + { + "name": "SUNLU PLA Matte @BBL X1C 0.2 nozzle", + "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL X1C 0.2 nozzle.json" + }, + { + "name": "SUNLU PLA+ 2.0 @BBL A1", + "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL A1.json" + }, + { + "name": "SUNLU PLA+ 2.0 @BBL A1 0.2 nozzle", + "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL A1 0.2 nozzle.json" + }, + { + "name": "SUNLU PLA+ 2.0 @BBL A1M", + "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL A1M.json" + }, + { + "name": "SUNLU PLA+ 2.0 @BBL A1M 0.2 nozzle", + "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL A1M 0.2 nozzle.json" + }, + { + "name": "SUNLU PLA+ 2.0 @BBL P1P", + "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL P1P.json" + }, + { + "name": "SUNLU PLA+ 2.0 @BBL P1P 0.2 nozzle", + "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL P1P 0.2 nozzle.json" + }, + { + "name": "SUNLU PLA+ 2.0 @BBL X1", + "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL X1.json" + }, + { + "name": "SUNLU PLA+ 2.0 @BBL X1C", + "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL X1C.json" + }, + { + "name": "SUNLU PLA+ 2.0 @BBL X1C 0.2 nozzle", + "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL X1C 0.2 nozzle.json" + }, + { + "name": "SUNLU PLA+ @BBL A1", + "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL A1.json" + }, + { + "name": "SUNLU PLA+ @BBL A1 0.2 nozzle", + "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL A1 0.2 nozzle.json" + }, + { + "name": "SUNLU PLA+ @BBL A1M", + "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL A1M.json" + }, + { + "name": "SUNLU PLA+ @BBL A1M 0.2 nozzle", + "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL A1M 0.2 nozzle.json" + }, + { + "name": "SUNLU PLA+ @BBL P1P", + "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL P1P.json" + }, + { + "name": "SUNLU PLA+ @BBL P1P 0.2 nozzle", + "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL P1P 0.2 nozzle.json" + }, + { + "name": "SUNLU PLA+ @BBL X1", + "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL X1.json" + }, + { + "name": "SUNLU PLA+ @BBL X1C", + "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL X1C.json" + }, + { + "name": "SUNLU PLA+ @BBL X1C 0.2 nozzle", + "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL X1C 0.2 nozzle.json" + }, + { + "name": "SUNLU Silk PLA+ @BBL A1", + "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL A1.json" + }, + { + "name": "SUNLU Silk PLA+ @BBL A1 0.2 nozzle", + "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL A1 0.2 nozzle.json" + }, + { + "name": "SUNLU Silk PLA+ @BBL A1M", + "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL A1M.json" + }, + { + "name": "SUNLU Silk PLA+ @BBL A1M 0.2 nozzle", + "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL A1M 0.2 nozzle.json" + }, + { + "name": "SUNLU Silk PLA+ @BBL P1P", + "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL P1P.json" + }, + { + "name": "SUNLU Silk PLA+ @BBL P1P 0.2 nozzle", + "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL P1P 0.2 nozzle.json" + }, + { + "name": "SUNLU Silk PLA+ @BBL X1", + "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL X1.json" + }, + { + "name": "SUNLU Silk PLA+ @BBL X1C", + "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL X1C.json" + }, + { + "name": "SUNLU Silk PLA+ @BBL X1C 0.2 nozzle", + "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL X1C 0.2 nozzle.json" + }, + { + "name": "SUNLU Wood PLA @BBL A1", + "sub_path": "filament/SUNLU/SUNLU Wood PLA @BBL A1.json" + }, + { + "name": "SUNLU Wood PLA @BBL A1M", + "sub_path": "filament/SUNLU/SUNLU Wood PLA @BBL A1M.json" + }, + { + "name": "SUNLU Wood PLA @BBL P1P", + "sub_path": "filament/SUNLU/SUNLU Wood PLA @BBL P1P.json" + }, + { + "name": "SUNLU Wood PLA @BBL X1", + "sub_path": "filament/SUNLU/SUNLU Wood PLA @BBL X1.json" + }, + { + "name": "SUNLU Wood PLA @BBL X1C", + "sub_path": "filament/SUNLU/SUNLU Wood PLA @BBL X1C.json" + }, + { + "name": "eSUN PLA+ @BBL A1", + "sub_path": "filament/eSUN PLA+ @BBL A1.json" + }, + { + "name": "eSUN PLA+ @BBL A1 0.2 nozzle", + "sub_path": "filament/eSUN PLA+ @BBL A1 0.2 nozzle.json" + }, + { + "name": "eSUN PLA+ @BBL A1M", + "sub_path": "filament/eSUN PLA+ @BBL A1M.json" + }, + { + "name": "eSUN PLA+ @BBL A1M 0.2 nozzle", + "sub_path": "filament/eSUN PLA+ @BBL A1M 0.2 nozzle.json" + }, + { + "name": "eSUN PLA+ @BBL P1P", + "sub_path": "filament/P1P/eSUN PLA+ @BBL P1P.json" + }, + { + "name": "eSUN PLA+ @BBL P1P 0.2 nozzle", + "sub_path": "filament/P1P/eSUN PLA+ @BBL P1P 0.2 nozzle.json" + }, + { + "name": "eSUN PLA+ @BBL X1", + "sub_path": "filament/eSUN PLA+ @BBL X1.json" + }, + { + "name": "eSUN PLA+ @BBL X1C", + "sub_path": "filament/eSUN PLA+ @BBL X1C.json" + }, + { + "name": "eSUN PLA+ @BBL X1C 0.2 nozzle", + "sub_path": "filament/eSUN PLA+ @BBL X1C 0.2 nozzle.json" + }, + { + "name": "Generic PP @BBL A1", + "sub_path": "filament/Generic PP @BBL A1.json" + }, + { + "name": "Generic PP @BBL A1M", + "sub_path": "filament/Generic PP @BBL A1M.json" + }, + { + "name": "Generic PP @BBL X1C", + "sub_path": "filament/Generic PP @BBL X1C.json" + }, + { + "name": "Generic PP-CF @BBL A1", + "sub_path": "filament/Generic PP-CF @BBL A1.json" + }, + { + "name": "Generic PP-CF @BBL X1C", + "sub_path": "filament/Generic PP-CF @BBL X1C.json" + }, + { + "name": "Generic PP-GF @BBL A1", + "sub_path": "filament/Generic PP-GF @BBL A1.json" + }, + { + "name": "Generic PP-GF @BBL X1C", + "sub_path": "filament/Generic PP-GF @BBL X1C.json" + }, + { + "name": "Bambu PPA-CF @BBL X1C", + "sub_path": "filament/Bambu PPA-CF @BBL X1C.json" + }, + { + "name": "Bambu PPA-CF @BBL X1E", + "sub_path": "filament/Bambu PPA-CF @BBL X1E.json" + }, + { + "name": "Generic PPA-CF @BBL X1C", + "sub_path": "filament/Generic PPA-CF @BBL X1C.json" + }, + { + "name": "Generic PPA-CF @BBL X1E", + "sub_path": "filament/Generic PPA-CF @BBL X1E.json" + }, + { + "name": "Generic PPA-GF @BBL X1C", + "sub_path": "filament/Generic PPA-GF @BBL X1C.json" + }, + { + "name": "Generic PPA-GF @BBL X1E", + "sub_path": "filament/Generic PPA-GF @BBL X1E.json" + }, + { + "name": "Bambu PPS-CF @BBL X1E", + "sub_path": "filament/Bambu PPS-CF @BBL X1E.json" + }, + { + "name": "Generic PPS @BBL X1E", + "sub_path": "filament/Generic PPS @BBL X1E.json" + }, + { + "name": "Generic PPS-CF @BBL X1E", + "sub_path": "filament/Generic PPS-CF @BBL X1E.json" }, { "name": "Bambu PVA @BBL A1", @@ -2774,356 +2878,144 @@ "sub_path": "filament/Bambu PVA @BBL A1M 0.2 nozzle.json" }, { - "name": "Bambu Support G @BBL X1C", - "sub_path": "filament/Bambu Support G @BBL X1C.json" + "name": "Bambu PVA @BBL P1P", + "sub_path": "filament/Bambu PVA @BBL P1P.json" }, { - "name": "Bambu Support G @BBL P1P", - "sub_path": "filament/P1P/Bambu Support G @BBL P1P.json" + "name": "Bambu PVA @BBL P1P 0.2 nozzle", + "sub_path": "filament/Bambu PVA @BBL P1P 0.2 nozzle.json" }, { - "name": "Bambu Support G @BBL A1", - "sub_path": "filament/Bambu Support G @BBL A1.json" + "name": "Bambu PVA @BBL X1C", + "sub_path": "filament/Bambu PVA @BBL X1C.json" }, { - "name": "Bambu PA-CF @BBL X1C", - "sub_path": "filament/Bambu PA-CF @BBL X1C.json" + "name": "Bambu PVA @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu PVA @BBL X1C 0.2 nozzle.json" }, { - "name": "Bambu PA-CF @BBL P1P", - "sub_path": "filament/P1P/Bambu PA-CF @BBL P1P.json" + "name": "Generic PVA", + "sub_path": "filament/Generic PVA.json" }, { - "name": "Bambu PA-CF @BBL A1", - "sub_path": "filament/Bambu PA-CF @BBL A1.json" + "name": "Generic PVA @0.2 nozzle", + "sub_path": "filament/Generic PVA @0.2 nozzle.json" }, { - "name": "Generic PA @BBL A1", - "sub_path": "filament/Generic PA @BBL A1.json" + "name": "Generic PVA @BBL A1", + "sub_path": "filament/Generic PVA @BBL A1.json" }, { - "name": "Generic PA-CF @BBL X1E", - "sub_path": "filament/Generic PA-CF @BBL X1E.json" + "name": "Generic PVA @BBL A1 0.2 nozzle", + "sub_path": "filament/Generic PVA @BBL A1 0.2 nozzle.json" }, { - "name": "Generic PA-CF @BBL A1", - "sub_path": "filament/Generic PA-CF @BBL A1.json" + "name": "Generic PVA @BBL A1M", + "sub_path": "filament/Generic PVA @BBL A1M.json" }, { - "name": "Bambu PAHT-CF @BBL X1C", - "sub_path": "filament/Bambu PAHT-CF @BBL X1C.json" + "name": "Generic PVA @BBL A1M 0.2 nozzle", + "sub_path": "filament/Generic PVA @BBL A1M 0.2 nozzle.json" }, { - "name": "Bambu PAHT-CF @BBL P1P", - "sub_path": "filament/P1P/Bambu PAHT-CF @BBL P1P.json" + "name": "Generic PVA @BBL P1P", + "sub_path": "filament/P1P/Generic PVA @BBL P1P.json" }, { - "name": "Bambu PAHT-CF @BBL A1", - "sub_path": "filament/Bambu PAHT-CF @BBL A1.json" + "name": "Generic PVA @BBL P1P 0.2 nozzle", + "sub_path": "filament/P1P/Generic PVA @BBL P1P 0.2 nozzle.json" }, { - "name": "Bambu Support For PA/PET @BBL P1P", - "sub_path": "filament/P1P/Bambu Support For PA PET @BBL P1P.json" + "name": "Generic SBS", + "sub_path": "filament/Generic SBS.json" }, { - "name": "Bambu Support For PA/PET @BBL X1C", - "sub_path": "filament/Bambu Support For PA PET @BBL X1C.json" + "name": "Bambu TPU 95A @BBL A1", + "sub_path": "filament/Bambu TPU 95A @BBL A1.json" }, { - "name": "Bambu Support For PA/PET @BBL A1", - "sub_path": "filament/Bambu Support For PA PET @BBL A1.json" + "name": "Bambu TPU 95A @BBL A1M", + "sub_path": "filament/Bambu TPU 95A @BBL A1M.json" }, { - "name": "Bambu PA6-CF @BBL X1C", - "sub_path": "filament/Bambu PA6-CF @BBL X1C.json" + "name": "Bambu TPU 95A @BBL P1P", + "sub_path": "filament/P1P/Bambu TPU 95A @BBL P1P.json" }, { - "name": "Bambu PA6-CF @BBL X1E", - "sub_path": "filament/Bambu PA6-CF @BBL X1E.json" + "name": "Bambu TPU 95A @BBL X1", + "sub_path": "filament/Bambu TPU 95A @BBL X1.json" }, { - "name": "Bambu PA6-CF @BBL A1", - "sub_path": "filament/Bambu PA6-CF @BBL A1.json" + "name": "Bambu TPU 95A @BBL X1C", + "sub_path": "filament/Bambu TPU 95A @BBL X1C.json" }, { - "name": "Bambu PA6-GF @BBL X1C", - "sub_path": "filament/Bambu PA6-GF @BBL X1C.json" + "name": "Bambu TPU 95A HF @BBL A1", + "sub_path": "filament/Bambu TPU 95A HF @BBL A1.json" }, { - "name": "Bambu PA6-GF @BBL P1P", - "sub_path": "filament/Bambu PA6-GF @BBL P1P.json" + "name": "Bambu TPU 95A HF @BBL A1M", + "sub_path": "filament/Bambu TPU 95A HF @BBL A1M.json" }, { - "name": "Bambu PA6-GF @BBL A1", - "sub_path": "filament/Bambu PA6-GF @BBL A1.json" + "name": "Bambu TPU 95A HF @BBL P1P", + "sub_path": "filament/Bambu TPU 95A HF @BBL P1P.json" }, { - "name": "Fiberon PA6-CF @BBL X1C", - "sub_path": "filament/Fiberon PA6-CF @BBL X1C.json" + "name": "Bambu TPU 95A HF @BBL P1S", + "sub_path": "filament/Bambu TPU 95A HF @BBL P1S.json" }, { - "name": "Fiberon PA6-GF @BBL X1C", - "sub_path": "filament/Fiberon PA6-GF @BBL X1C.json" + "name": "Bambu TPU 95A HF @BBL X1", + "sub_path": "filament/Bambu TPU 95A HF @BBL X1.json" }, { - "name": "Fiberon PA12-CF @BBL X1C", - "sub_path": "filament/Fiberon PA12-CF @BBL X1C.json" + "name": "Bambu TPU 95A HF @BBL X1C", + "sub_path": "filament/Bambu TPU 95A HF @BBL X1C.json" }, { - "name": "Fiberon PA612-CF @BBL X1C", - "sub_path": "filament/Fiberon PA612-CF @BBL X1C.json" + "name": "Bambu TPU 95A HF @BBL X1E", + "sub_path": "filament/Bambu TPU 95A HF @BBL X1E.json" }, { - "name": "Generic HIPS @BBL X1C", - "sub_path": "filament/Generic HIPS @BBL X1C.json" + "name": "Bambu TPU for AMS @BBL A1", + "sub_path": "filament/Bambu TPU for AMS @BBL A1.json" }, { - "name": "Generic HIPS @BBL X1C 0.2 nozzle", - "sub_path": "filament/Generic HIPS @BBL X1C 0.2 nozzle.json" + "name": "Bambu TPU for AMS @BBL A1M", + "sub_path": "filament/Bambu TPU for AMS @BBL A1M.json" }, { - "name": "Generic HIPS @BBL A1M", - "sub_path": "filament/Generic HIPS @BBL A1M.json" + "name": "Bambu TPU for AMS @BBL P1P", + "sub_path": "filament/Bambu TPU for AMS @BBL P1P.json" }, { - "name": "Generic HIPS @BBL A1M 0.2 nozzle", - "sub_path": "filament/Generic HIPS @BBL A1M 0.2 nozzle.json" + "name": "Bambu TPU for AMS @BBL X1C", + "sub_path": "filament/Bambu TPU for AMS @BBL X1C.json" }, { - "name": "Generic HIPS @BBL A1", - "sub_path": "filament/Generic HIPS @BBL A1.json" + "name": "Generic TPU @BBL A1", + "sub_path": "filament/Generic TPU @BBL A1.json" }, { - "name": "Generic HIPS @BBL A1 0.2 nozzle", - "sub_path": "filament/Generic HIPS @BBL A1 0.2 nozzle.json" + "name": "Generic TPU @BBL A1M", + "sub_path": "filament/Generic TPU @BBL A1M.json" }, { - "name": "Generic PPS-CF @BBL X1E", - "sub_path": "filament/Generic PPS-CF @BBL X1E.json" + "name": "Generic TPU for AMS @BBL A1", + "sub_path": "filament/Generic TPU for AMS @BBL A1.json" }, { - "name": "Generic PPS @BBL X1E", - "sub_path": "filament/Generic PPS @BBL X1E.json" + "name": "Generic TPU for AMS @BBL A1M", + "sub_path": "filament/Generic TPU for AMS @BBL A1M.json" }, { - "name": "Bambu PPS-CF @BBL X1E", - "sub_path": "filament/Bambu PPS-CF @BBL X1E.json" + "name": "Generic TPU for AMS @BBL P1P", + "sub_path": "filament/Generic TPU for AMS @BBL P1P.json" }, { - "name": "Bambu PPA-CF @BBL X1C", - "sub_path": "filament/Bambu PPA-CF @BBL X1C.json" - }, - { - "name": "Bambu PPA-CF @BBL X1E", - "sub_path": "filament/Bambu PPA-CF @BBL X1E.json" - }, - { - "name": "Generic PPA-CF @BBL X1E", - "sub_path": "filament/Generic PPA-CF @BBL X1E.json" - }, - { - "name": "Generic PPA-CF @BBL X1C", - "sub_path": "filament/Generic PPA-CF @BBL X1C.json" - }, - { - "name": "Generic PPA-GF @BBL X1C", - "sub_path": "filament/Generic PPA-GF @BBL X1C.json" - }, - { - "name": "Generic PPA-GF @BBL X1E", - "sub_path": "filament/Generic PPA-GF @BBL X1E.json" - }, - { - "name": "Generic PE @BBL X1C", - "sub_path": "filament/Generic PE @BBL X1C.json" - }, - { - "name": "Generic PE @BBL A1", - "sub_path": "filament/Generic PE @BBL A1.json" - }, - { - "name": "Generic PE @BBL A1M", - "sub_path": "filament/Generic PE @BBL A1M.json" - }, - { - "name": "Generic PE-CF @BBL X1C", - "sub_path": "filament/Generic PE-CF @BBL X1C.json" - }, - { - "name": "Generic PE-CF @BBL A1", - "sub_path": "filament/Generic PE-CF @BBL A1.json" - }, - { - "name": "Generic PE-CF @BBL A1M", - "sub_path": "filament/Generic PE-CF @BBL A1M.json" - }, - { - "name": "Generic PP @BBL X1C", - "sub_path": "filament/Generic PP @BBL X1C.json" - }, - { - "name": "Generic PP @BBL A1", - "sub_path": "filament/Generic PP @BBL A1.json" - }, - { - "name": "Generic PP @BBL A1M", - "sub_path": "filament/Generic PP @BBL A1M.json" - }, - { - "name": "Generic PP-CF @BBL X1C", - "sub_path": "filament/Generic PP-CF @BBL X1C.json" - }, - { - "name": "Generic PP-CF @BBL A1", - "sub_path": "filament/Generic PP-CF @BBL A1.json" - }, - { - "name": "Generic PP-GF @BBL X1C", - "sub_path": "filament/Generic PP-GF @BBL X1C.json" - }, - { - "name": "Generic PP-GF @BBL A1", - "sub_path": "filament/Generic PP-GF @BBL A1.json" - }, - { - "name": "Generic EVA @BBL X1C", - "sub_path": "filament/Generic EVA @BBL X1C.json" - }, - { - "name": "Generic EVA @BBL A1", - "sub_path": "filament/Generic EVA @BBL A1.json" - }, - { - "name": "Generic EVA @BBL A1M", - "sub_path": "filament/Generic EVA @BBL A1M.json" - }, - { - "name": "Generic PHA @BBL X1C", - "sub_path": "filament/Generic PHA @BBL X1C.json" - }, - { - "name": "Generic PHA @BBL A1M", - "sub_path": "filament/Generic PHA @BBL A1M.json" - }, - { - "name": "Generic PHA @BBL A1", - "sub_path": "filament/Generic PHA @BBL A1.json" - }, - { - "name": "Generic BVOH @BBL X1C", - "sub_path": "filament/Generic BVOH @BBL X1C.json" - }, - { - "name": "Generic BVOH @BBL A1M", - "sub_path": "filament/Generic BVOH @BBL A1M.json" - }, - { - "name": "Generic BVOH @BBL A1", - "sub_path": "filament/Generic BVOH @BBL A1.json" - }, - { - "name": "PolyTerra PLA @BBL X1C 0.2 nozzle", - "sub_path": "filament/PolyTerra PLA @BBL X1C 0.2 nozzle.json" - }, - { - "name": "PolyTerra PLA @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/PolyTerra PLA @BBL P1P 0.2 nozzle.json" - }, - { - "name": "PolyLite PLA @BBL X1C 0.2 nozzle", - "sub_path": "filament/PolyLite PLA @BBL X1C 0.2 nozzle.json" - }, - { - "name": "PolyLite PLA @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/PolyLite PLA @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Overture PLA @BBL X1C 0.2 nozzle", - "sub_path": "filament/Overture PLA @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Overture PLA @BBL P1P 0.2 nozzle", - "sub_path": "filament/Overture PLA @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Overture PLA @BBL A1M 0.2 nozzle", - "sub_path": "filament/Overture PLA @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Overture Matte PLA @BBL X1C 0.2 nozzle", - "sub_path": "filament/Overture Matte PLA @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Overture Matte PLA @BBL P1P 0.2 nozzle", - "sub_path": "filament/Overture Matte PLA @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Overture Matte PLA @BBL A1M 0.2 nozzle", - "sub_path": "filament/Overture Matte PLA @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Generic PLA High Speed @BBL X1C 0.2 nozzle", - "sub_path": "filament/Generic PLA High Speed @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Generic PLA High Speed @BBL P1P 0.2 nozzle", - "sub_path": "filament/Generic PLA High Speed @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Generic PLA High Speed @BBL A1M 0.2 nozzle", - "sub_path": "filament/Generic PLA High Speed @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Glow @BBL X1C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Glow @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Glow @BBL P1P 0.2 nozzle", - "sub_path": "filament/Bambu PLA Glow @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Glow @BBL X1E 0.2 nozzle", - "sub_path": "filament/Bambu PLA Glow @BBL X1E 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Glow @BBL X1 0.2 nozzle", - "sub_path": "filament/Bambu PLA Glow @BBL X1 0.2 nozzle.json" - }, - { - "name": "Bambu PETG Basic @BBL A1M 0.4 nozzle", - "sub_path": "filament/Bambu PETG Basic @BBL A1M 0.4 nozzle.json" - }, - { - "name": "Bambu PETG Basic @BBL A1M 0.2 nozzle", - "sub_path": "filament/Bambu PETG Basic @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Bambu PETG Basic @BBL A1M 0.8 nozzle", - "sub_path": "filament/Bambu PETG Basic @BBL A1M 0.8 nozzle.json" - }, - { - "name": "Generic PETG-CF @BBL A1M", - "sub_path": "filament/P1P/Generic PETG-CF @BBL A1M.json" - }, - { - "name": "Bambu PETG-CF @BBL A1M 0.4 nozzle", - "sub_path": "filament/Bambu PETG-CF @BBL A1M 0.4 nozzle.json" - }, - { - "name": "Bambu PET-CF @BBL X1E", - "sub_path": "filament/Bambu PET-CF @BBL X1E.json" - }, - { - "name": "PolyLite PETG @BBL X1C 0.2 nozzle", - "sub_path": "filament/PolyLite PETG @BBL X1C 0.2 nozzle.json" - }, - { - "name": "PolyLite PETG @BBL P1P 0.2 nozzle", - "sub_path": "filament/PolyLite PETG @BBL P1P 0.2 nozzle.json" - }, - { - "name": "PolyLite PETG @BBL A1M 0.2 nozzle", - "sub_path": "filament/PolyLite PETG @BBL A1M 0.2 nozzle.json" + "name": "Generic TPU for AMS @BBL X1C", + "sub_path": "filament/Generic TPU for AMS @BBL X1C.json" }, { "name": "Bambu ABS @BBL X1E", @@ -3146,16 +3038,56 @@ "sub_path": "filament/Generic ABS @BBL X1E 0.2 nozzle.json" }, { - "name": "PolyLite ABS @BBL X1E", - "sub_path": "filament/PolyLite ABS @BBL X1E.json" + "name": "PolyLite ABS @BBL P1P 0.2 nozzle", + "sub_path": "filament/PolyLite ABS @BBL P1P 0.2 nozzle.json" }, { "name": "PolyLite ABS @BBL X1C 0.2 nozzle", "sub_path": "filament/PolyLite ABS @BBL X1C 0.2 nozzle.json" }, { - "name": "PolyLite ABS @BBL P1P 0.2 nozzle", - "sub_path": "filament/PolyLite ABS @BBL P1P 0.2 nozzle.json" + "name": "PolyLite ABS @BBL X1E", + "sub_path": "filament/PolyLite ABS @BBL X1E.json" + }, + { + "name": "Bambu ASA @BBL X1E", + "sub_path": "filament/Bambu ASA @BBL X1E.json" + }, + { + "name": "Bambu ASA @BBL X1E 0.2 nozzle", + "sub_path": "filament/Bambu ASA @BBL X1E 0.2 nozzle.json" + }, + { + "name": "Bambu ASA @BBL X1E 0.4 nozzle", + "sub_path": "filament/Bambu ASA @BBL X1E 0.4 nozzle.json" + }, + { + "name": "Generic ASA @BBL X1E", + "sub_path": "filament/Generic ASA @BBL X1E.json" + }, + { + "name": "Generic ASA @BBL X1E 0.2 nozzle", + "sub_path": "filament/Generic ASA @BBL X1E 0.2 nozzle.json" + }, + { + "name": "PolyLite ASA @BBL P1P 0.2 nozzle", + "sub_path": "filament/PolyLite ASA @BBL P1P 0.2 nozzle.json" + }, + { + "name": "PolyLite ASA @BBL X1C 0.2 nozzle", + "sub_path": "filament/PolyLite ASA @BBL X1C 0.2 nozzle.json" + }, + { + "name": "PolyLite ASA @BBL X1E", + "sub_path": "filament/PolyLite ASA @BBL X1E.json" + }, + { + "name": "Bambu PA-CF @BBL X1E", + "sub_path": "filament/Bambu PA-CF @BBL X1E.json" + }, + { + "name": "Bambu Support G @BBL X1E", + "sub_path": "filament/Bambu Support G @BBL X1E.json" }, { "name": "Bambu PC @BBL P1S", @@ -3173,14 +3105,6 @@ "name": "Bambu PC @BBL X1E 0.2 nozzle", "sub_path": "filament/Bambu PC @BBL X1E 0.2 nozzle.json" }, - { - "name": "Bambu PC @BBL P1S 0.8 nozzle", - "sub_path": "filament/Bambu PC @BBL P1S 0.8 nozzle.json" - }, - { - "name": "Bambu PC @BBL X1E 0.8 nozzle", - "sub_path": "filament/Bambu PC @BBL X1E 0.8 nozzle.json" - }, { "name": "Bambu PC @BBL P1S 0.6 nozzle", "sub_path": "filament/Bambu PC @BBL P1S 0.6 nozzle.json" @@ -3190,12 +3114,12 @@ "sub_path": "filament/Bambu PC @BBL X1E 0.6 nozzle.json" }, { - "name": "Generic PC @BBL P1S 0.2 nozzle", - "sub_path": "filament/Generic PC @BBL P1S 0.2 nozzle.json" + "name": "Bambu PC @BBL P1S 0.8 nozzle", + "sub_path": "filament/Bambu PC @BBL P1S 0.8 nozzle.json" }, { - "name": "Generic PC @BBL X1E 0.2 nozzle", - "sub_path": "filament/Generic PC @BBL X1E 0.2 nozzle.json" + "name": "Bambu PC @BBL X1E 0.8 nozzle", + "sub_path": "filament/Bambu PC @BBL X1E 0.8 nozzle.json" }, { "name": "Generic PC @BBL P1S", @@ -3206,44 +3130,128 @@ "sub_path": "filament/Generic PC @BBL X1E.json" }, { - "name": "Generic ASA @BBL X1E 0.2 nozzle", - "sub_path": "filament/Generic ASA @BBL X1E 0.2 nozzle.json" + "name": "Generic PC @BBL P1S 0.2 nozzle", + "sub_path": "filament/Generic PC @BBL P1S 0.2 nozzle.json" }, { - "name": "Generic ASA @BBL X1E", - "sub_path": "filament/Generic ASA @BBL X1E.json" + "name": "Generic PC @BBL X1E 0.2 nozzle", + "sub_path": "filament/Generic PC @BBL X1E 0.2 nozzle.json" }, { - "name": "Bambu ASA @BBL X1E", - "sub_path": "filament/Bambu ASA @BBL X1E.json" + "name": "Bambu PET-CF @BBL X1E", + "sub_path": "filament/Bambu PET-CF @BBL X1E.json" }, { - "name": "Bambu ASA @BBL X1E 0.2 nozzle", - "sub_path": "filament/Bambu ASA @BBL X1E 0.2 nozzle.json" + "name": "Bambu PETG Basic @BBL A1M 0.4 nozzle", + "sub_path": "filament/Bambu PETG Basic @BBL A1M 0.4 nozzle.json" }, { - "name": "Bambu ASA @BBL X1E 0.4 nozzle", - "sub_path": "filament/Bambu ASA @BBL X1E 0.4 nozzle.json" + "name": "Bambu PETG Basic @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu PETG Basic @BBL A1M 0.2 nozzle.json" }, { - "name": "PolyLite ASA @BBL X1C 0.2 nozzle", - "sub_path": "filament/PolyLite ASA @BBL X1C 0.2 nozzle.json" + "name": "Bambu PETG Basic @BBL A1M 0.8 nozzle", + "sub_path": "filament/Bambu PETG Basic @BBL A1M 0.8 nozzle.json" }, { - "name": "PolyLite ASA @BBL X1E", - "sub_path": "filament/PolyLite ASA @BBL X1E.json" + "name": "Bambu PETG-CF @BBL A1M 0.4 nozzle", + "sub_path": "filament/Bambu PETG-CF @BBL A1M 0.4 nozzle.json" }, { - "name": "PolyLite ASA @BBL P1P 0.2 nozzle", - "sub_path": "filament/PolyLite ASA @BBL P1P 0.2 nozzle.json" + "name": "Generic PETG-CF @BBL A1M", + "sub_path": "filament/P1P/Generic PETG-CF @BBL A1M.json" }, { - "name": "Bambu Support G @BBL X1E", - "sub_path": "filament/Bambu Support G @BBL X1E.json" + "name": "PolyLite PETG @BBL A1M 0.2 nozzle", + "sub_path": "filament/PolyLite PETG @BBL A1M 0.2 nozzle.json" }, { - "name": "Bambu PA-CF @BBL X1E", - "sub_path": "filament/Bambu PA-CF @BBL X1E.json" + "name": "PolyLite PETG @BBL P1P 0.2 nozzle", + "sub_path": "filament/PolyLite PETG @BBL P1P 0.2 nozzle.json" + }, + { + "name": "PolyLite PETG @BBL X1C 0.2 nozzle", + "sub_path": "filament/PolyLite PETG @BBL X1C 0.2 nozzle.json" + }, + { + "name": "SUNLU PETG @BBL A1M 0.4 nozzle", + "sub_path": "filament/SUNLU/SUNLU PETG @BBL A1M.json" + }, + { + "name": "SUNLU PETG @BBL A1M 0.2 nozzle", + "sub_path": "filament/SUNLU/SUNLU PETG @BBL A1M 0.2 nozzle.json" + }, + { + "name": "SUNLU PETG @BBL A1M 0.8 nozzle", + "sub_path": "filament/SUNLU/SUNLU PETG @BBL A1M 0.8 nozzle.json" + }, + { + "name": "Bambu PLA Glow @BBL P1P 0.2 nozzle", + "sub_path": "filament/Bambu PLA Glow @BBL P1P 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Glow @BBL X1 0.2 nozzle", + "sub_path": "filament/Bambu PLA Glow @BBL X1 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Glow @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Glow @BBL X1C 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Glow @BBL X1E 0.2 nozzle", + "sub_path": "filament/Bambu PLA Glow @BBL X1E 0.2 nozzle.json" + }, + { + "name": "Generic PLA High Speed @BBL A1M 0.2 nozzle", + "sub_path": "filament/Generic PLA High Speed @BBL A1M 0.2 nozzle.json" + }, + { + "name": "Generic PLA High Speed @BBL P1P 0.2 nozzle", + "sub_path": "filament/Generic PLA High Speed @BBL P1P 0.2 nozzle.json" + }, + { + "name": "Generic PLA High Speed @BBL X1C 0.2 nozzle", + "sub_path": "filament/Generic PLA High Speed @BBL X1C 0.2 nozzle.json" + }, + { + "name": "Overture Matte PLA @BBL A1M 0.2 nozzle", + "sub_path": "filament/Overture Matte PLA @BBL A1M 0.2 nozzle.json" + }, + { + "name": "Overture Matte PLA @BBL P1P 0.2 nozzle", + "sub_path": "filament/Overture Matte PLA @BBL P1P 0.2 nozzle.json" + }, + { + "name": "Overture Matte PLA @BBL X1C 0.2 nozzle", + "sub_path": "filament/Overture Matte PLA @BBL X1C 0.2 nozzle.json" + }, + { + "name": "Overture PLA @BBL A1M 0.2 nozzle", + "sub_path": "filament/Overture PLA @BBL A1M 0.2 nozzle.json" + }, + { + "name": "Overture PLA @BBL P1P 0.2 nozzle", + "sub_path": "filament/Overture PLA @BBL P1P 0.2 nozzle.json" + }, + { + "name": "Overture PLA @BBL X1C 0.2 nozzle", + "sub_path": "filament/Overture PLA @BBL X1C 0.2 nozzle.json" + }, + { + "name": "PolyLite PLA @BBL P1P 0.2 nozzle", + "sub_path": "filament/P1P/PolyLite PLA @BBL P1P 0.2 nozzle.json" + }, + { + "name": "PolyLite PLA @BBL X1C 0.2 nozzle", + "sub_path": "filament/PolyLite PLA @BBL X1C 0.2 nozzle.json" + }, + { + "name": "PolyTerra PLA @BBL P1P 0.2 nozzle", + "sub_path": "filament/P1P/PolyTerra PLA @BBL P1P 0.2 nozzle.json" + }, + { + "name": "PolyTerra PLA @BBL X1C 0.2 nozzle", + "sub_path": "filament/PolyTerra PLA @BBL X1C 0.2 nozzle.json" }, { "name": "PolyLite ABS @BBL X1E 0.2 nozzle", @@ -3252,6 +3260,26 @@ { "name": "PolyLite ASA @BBL X1E 0.2 nozzle", "sub_path": "filament/PolyLite ASA @BBL X1E 0.2 nozzle.json" + }, + { + "name": "AliZ PA-CF @P1-X1", + "sub_path": "filament/AliZ/AliZ PA-CF @P1-X1.json" + }, + { + "name": "AliZ PETG @P1-X1", + "sub_path": "filament/AliZ/AliZ PETG @P1-X1.json" + }, + { + "name": "AliZ PETG-CF @P1-X1", + "sub_path": "filament/AliZ/AliZ PETG-CF @P1-X1.json" + }, + { + "name": "AliZ PETG-Metal @P1-X1", + "sub_path": "filament/AliZ/AliZ PETG-Metal @P1-X1.json" + }, + { + "name": "AliZ PLA @P1-X1", + "sub_path": "filament/AliZ/AliZ PLA @P1-X1.json" } ], "machine_list": [ diff --git a/resources/profiles/BBL/filament/AliZ/AliZ PA-CF @P1-X1.json b/resources/profiles/BBL/filament/AliZ/AliZ PA-CF @P1-X1.json new file mode 100644 index 0000000000..f82618615f --- /dev/null +++ b/resources/profiles/BBL/filament/AliZ/AliZ PA-CF @P1-X1.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "setting_id": "AliZPX1FSA04", + "name": "AliZ PA-CF @P1-X1", + "from": "system", + "instantiation": "true", + "inherits": "AliZ PA-CF @base", + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.026" + ], + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab P1P 0.4 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab X1E 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/AliZ/AliZ PETG @P1-X1.json b/resources/profiles/BBL/filament/AliZ/AliZ PETG @P1-X1.json new file mode 100644 index 0000000000..9aeeb52554 --- /dev/null +++ b/resources/profiles/BBL/filament/AliZ/AliZ PETG @P1-X1.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "filament_id": "GFG99", + "setting_id": "AliZPX1FSA04", + "name": "AliZ PETG @P1-X1", + "from": "system", + "instantiation": "true", + "inherits": "AliZ PETG @base", + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.026" + ], + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab P1P 0.4 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab X1E 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/AliZ/AliZ PETG-CF @P1-X1.json b/resources/profiles/BBL/filament/AliZ/AliZ PETG-CF @P1-X1.json new file mode 100644 index 0000000000..14df69df01 --- /dev/null +++ b/resources/profiles/BBL/filament/AliZ/AliZ PETG-CF @P1-X1.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "AliZ PETG-CF @P1-X1", + "inherits": "AliZ PETG-CF @base", + "from": "system", + "setting_id": "AliZPX1FSG50", + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.026" + ], + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab P1P 0.4 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab X1E 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/AliZ/AliZ PETG-Metal @P1-X1.json b/resources/profiles/BBL/filament/AliZ/AliZ PETG-Metal @P1-X1.json new file mode 100644 index 0000000000..baeefd6c11 --- /dev/null +++ b/resources/profiles/BBL/filament/AliZ/AliZ PETG-Metal @P1-X1.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "AliZ PETG-Metal @P1-X1", + "inherits": "AliZ PETG-Metal @base", + "from": "system", + "setting_id": "AliZPX1FSG50", + "instantiation": "true", + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.026" + ], + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab P1P 0.4 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab X1E 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/AliZ/AliZ PLA @P1-X1.json b/resources/profiles/BBL/filament/AliZ/AliZ PLA @P1-X1.json new file mode 100644 index 0000000000..36a868e6e2 --- /dev/null +++ b/resources/profiles/BBL/filament/AliZ/AliZ PLA @P1-X1.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "setting_id": "AliZPX1FSA04", + "name": "AliZ PLA @P1-X1", + "from": "system", + "instantiation": "true", + "inherits": "AliZ PLA @base", + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.015" + ], + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab P1P 0.4 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab X1E 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary.json b/resources/profiles/OrcaFilamentLibrary.json index 7728161796..c1a9109840 100644 --- a/resources/profiles/OrcaFilamentLibrary.json +++ b/resources/profiles/OrcaFilamentLibrary.json @@ -132,6 +132,10 @@ "name": "Generic HIPS @System", "sub_path": "filament/Generic HIPS @System.json" }, + { + "name": "AliZ PA-CF @base", + "sub_path": "filament/AliZ/AliZ PA-CF @base.json" + }, { "name": "Bambu PA-CF @base", "sub_path": "filament/Bambu/Bambu PA-CF @base.json" @@ -204,6 +208,10 @@ "name": "Generic PE-CF @System", "sub_path": "filament/Generic PE-CF @System.json" }, + { + "name": "AliZ PETG @base", + "sub_path": "filament/AliZ/AliZ PETG @base.json" + }, { "name": "Bambu PET-CF @base", "sub_path": "filament/Bambu/Bambu PET-CF @base.json" @@ -260,6 +268,10 @@ "name": "Generic PHA @System", "sub_path": "filament/Generic PHA @System.json" }, + { + "name": "AliZ PLA @base", + "sub_path": "filament/AliZ/AliZ PLA @base.json" + }, { "name": "Bambu PLA Aero @base", "sub_path": "filament/Bambu/Bambu PLA Aero @base.json" @@ -480,6 +492,10 @@ "name": "PolyLite ASA @System", "sub_path": "filament/Polymaker/PolyLite ASA @System.json" }, + { + "name": "AliZ PA-CF @System", + "sub_path": "filament/AliZ/AliZ PA-CF @System.json" + }, { "name": "Bambu PA-CF @System", "sub_path": "filament/Bambu/Bambu PA-CF @System.json" @@ -528,6 +544,18 @@ "name": "Bambu PC FR @System", "sub_path": "filament/Bambu/Bambu PC FR @System.json" }, + { + "name": "AliZ PETG @System", + "sub_path": "filament/AliZ/AliZ PETG @System.json" + }, + { + "name": "AliZ PETG-CF @base", + "sub_path": "filament/AliZ/AliZ PETG-CF @base.json" + }, + { + "name": "AliZ PETG-Metal @base", + "sub_path": "filament/AliZ/AliZ PETG-Metal @base.json" + }, { "name": "Bambu PET-CF @System", "sub_path": "filament/Bambu/Bambu PET-CF @System.json" @@ -568,6 +596,10 @@ "name": "SUNLU PETG @System", "sub_path": "filament/SUNLU/SUNLU PETG @System.json" }, + { + "name": "AliZ PLA @System", + "sub_path": "filament/AliZ/AliZ PLA @System.json" + }, { "name": "Bambu PLA Aero @System", "sub_path": "filament/Bambu/Bambu PLA Aero @System.json" @@ -711,6 +743,14 @@ { "name": "Bambu TPU 95A HF @System", "sub_path": "filament/Bambu/Bambu TPU 95A HF @System.json" + }, + { + "name": "AliZ PETG-CF @System", + "sub_path": "filament/AliZ/AliZ PETG-CF @System.json" + }, + { + "name": "AliZ PETG-Metal @System", + "sub_path": "filament/AliZ/AliZ PETG-Metal @System.json" } ] } \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PA-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PA-CF @System.json new file mode 100644 index 0000000000..a30b343989 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PA-CF @System.json @@ -0,0 +1,9 @@ +{ + "type": "filament", + "setting_id": "AliZGFSA04", + "name": "AliZ PA-CF @System", + "from": "system", + "instantiation": "true", + "inherits": "AliZ PA-CF @base", + "compatible_printers": [] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PA-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PA-CF @base.json new file mode 100644 index 0000000000..84f3273227 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PA-CF @base.json @@ -0,0 +1,77 @@ +{ + "type": "filament", + "filament_id": "GFN98", + "name": "AliZ PA-CF @base", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_pa", + "filament_type": [ + "PA-CF" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "enable_pressure_advance": [ + "0" + ], + "eng_plate_temp": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "fan_cooling_layer_time": [ + "5" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "49.9" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_vendor": [ + "Aliz" + ], + "full_fan_speed_layer": [ + "2" + ], + "nozzle_temperature": [ + "290" + ], + "nozzle_temperature_initial_layer": [ + "290" + ], + "nozzle_temperature_range_high": [ + "300" + ], + "nozzle_temperature_range_low": [ + "260" + ], + "overhang_fan_speed": [ + "40" + ], + "overhang_fan_threshold": [ + "0%" + ], + "pressure_advance": [ + "0.026" + ], + "slow_down_layer_time": [ + "2" + ], + "slow_down_min_speed": [ + "10" + ] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG @System.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG @System.json new file mode 100644 index 0000000000..a269174eb9 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG @System.json @@ -0,0 +1,10 @@ +{ + "type": "filament", + "filament_id": "GFG99", + "setting_id": "AliZGFSA04", + "name": "AliZ PETG @System", + "from": "system", + "instantiation": "true", + "inherits": "AliZ PETG @base", + "compatible_printers": [] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG @base.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG @base.json new file mode 100644 index 0000000000..59e8a436f6 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG @base.json @@ -0,0 +1,56 @@ +{ + "type": "filament", + "filament_id": "GFG99", + "name": "AliZ PETG @base", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_pet", + "close_fan_the_first_x_layers": [ + "2" + ], + "enable_pressure_advance": [ + "0" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "49.9" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_vendor": [ + "Aliz" + ], + "hot_plate_temp": [ + "79" + ], + "hot_plate_temp_initial_layer": [ + "79" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "overhang_fan_threshold": [ + "25%" + ], + "pressure_advance": [ + "0.036" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-CF @System.json new file mode 100644 index 0000000000..f52466a1a1 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-CF @System.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "AliZ PETG-CF @System", + "inherits": "AliZ PETG-CF @base", + "from": "system", + "setting_id": "AliZGFSG50", + "instantiation": "true" +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-CF @base.json new file mode 100644 index 0000000000..925c386928 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-CF @base.json @@ -0,0 +1,74 @@ +{ + "type": "filament", + "name": "AliZ PETG-CF @base", + "inherits": "AliZ PETG @base", + "filament_id": "GFG50", + "from": "system", + "instantiation": "false", + "fan_cooling_layer_time": [ + "30" + ], + "overhang_fan_speed": [ + "100" + ], + "close_fan_the_first_x_layers": [ + "2" + ], + "enable_pressure_advance": [ + "0" + ], + "pressure_advance": [ + "0.033" + ], + "fan_max_speed": [ + "35" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "49.9" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_type": [ + "PETG-CF" + ], + "filament_vendor": [ + "Aliz" + ], + "hot_plate_temp": [ + "79" + ], + "hot_plate_temp_initial_layer": [ + "79" + ], + "nozzle_temperature": [ + "275" + ], + "nozzle_temperature_initial_layer": [ + "275" + ], + "nozzle_temperature_range_high": [ + "290" + ], + "nozzle_temperature_range_low": [ + "260" + ], + "overhang_fan_threshold": [ + "25%" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-Metal @System.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-Metal @System.json new file mode 100644 index 0000000000..ba9940e746 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-Metal @System.json @@ -0,0 +1,9 @@ +{ + "type": "filament", + "name": "AliZ PETG-Metal @System", + "inherits": "AliZ PETG-Metal @base", + "from": "system", + "setting_id": "AliZGFSG50", + "instantiation": "true", + "compatible_printers": [] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-Metal @base.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-Metal @base.json new file mode 100644 index 0000000000..d19bb0d0e4 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-Metal @base.json @@ -0,0 +1,64 @@ +{ + "type": "filament", + "name": "AliZ PETG-Metal @base", + "inherits": "AliZ PETG @base", + "from": "system", + "instantiation": "false", + "fan_cooling_layer_time": [ + "30" + ], + "overhang_fan_speed": [ + "100" + ], + "close_fan_the_first_x_layers": [ + "2" + ], + "enable_pressure_advance": [ + "0" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "49.9" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_max_volumetric_speed": [ + "13" + ], + "filament_vendor": [ + "Aliz" + ], + "hot_plate_temp": [ + "79" + ], + "hot_plate_temp_initial_layer": [ + "79" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "overhang_fan_threshold": [ + "25%" + ], + "pressure_advance": [ + "0.036" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PLA @System.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PLA @System.json new file mode 100644 index 0000000000..92f0c80c1c --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PLA @System.json @@ -0,0 +1,9 @@ +{ + "type": "filament", + "setting_id": "AliZGFSA04", + "name": "AliZ PLA @System", + "from": "system", + "instantiation": "true", + "inherits": "AliZ PLA @base", + "compatible_printers": [] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PLA @base.json new file mode 100644 index 0000000000..9f806a03e1 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PLA @base.json @@ -0,0 +1,43 @@ +{ + "type": "filament", + "name": "AliZ PLA @base", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_pla", + "enable_pressure_advance": [ + "0" + ], + "fan_cooling_layer_time": [ + "100" + ], + "filament_cost": [ + "69" + ], + "filament_density": [ + "1.27" + ], + "filament_vendor": [ + "Aliz" + ], + "filament_wipe_distance": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "pressure_advance": [ + "0.025" + ], + "slow_down_layer_time": [ + "4" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ] +} \ No newline at end of file From c5ba8be49f70ff40c52ab1d923838e54b2697b87 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 22 Feb 2025 15:51:24 +0800 Subject: [PATCH 099/129] add extra profile checks --- .github/workflows/check_profiles.yml | 6 ++- scripts/orca_extra_profile_check.py | 68 ++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 scripts/orca_extra_profile_check.py diff --git a/.github/workflows/check_profiles.yml b/.github/workflows/check_profiles.yml index 4ae214f9cd..5504396b49 100644 --- a/.github/workflows/check_profiles.yml +++ b/.github/workflows/check_profiles.yml @@ -23,6 +23,10 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 + - name: Run vendor JSON check + run: | + python3 ./scripts/orca_extra_profile_check.py + # download - name: Download working-directory: ${{ github.workspace }} @@ -44,4 +48,4 @@ jobs: - + diff --git a/scripts/orca_extra_profile_check.py b/scripts/orca_extra_profile_check.py new file mode 100644 index 0000000000..07b0e4cc56 --- /dev/null +++ b/scripts/orca_extra_profile_check.py @@ -0,0 +1,68 @@ +import os +import json +import argparse +from pathlib import Path + + +def check_filament_compatible_printers(vendor_folder): + """ + Checks JSON files in the vendor folder for missing or empty 'compatible_printers' + when 'instantiation' is flagged as true. + + Parameters: + vendor_folder (str or Path): The directory to search for JSON profile files. + + Returns: + int: The number of profiles with missing or empty 'compatible_printers'. + """ + error = 0 + vendor_path = Path(vendor_folder) + if not vendor_path.exists(): + return 0 + # Use rglob to recursively find .json files. + for file_path in vendor_path.rglob("*.json"): + try: + with open(file_path, 'r') as fp: + data = json.load(fp) + instantiation = str(data.get("instantiation", "")).lower() == "true" + compatible_printers = data.get("compatible_printers") + if instantiation and (not compatible_printers or (isinstance(compatible_printers, list) and not compatible_printers)): + print(file_path) + error += 1 + except Exception as e: + print(f"Error processing {file_path}: {e}") + return error + +def main(): + print("Checking compatible_printers ...") + parser = argparse.ArgumentParser(description="Check compatible_printers") + parser.add_argument("--vendor", type=str, required=False, help="Vendor name") + args = parser.parse_args() + + script_dir = Path(__file__).resolve().parent + profiles_dir = script_dir.parent / "resources" / "profiles" + checked_vendor_count = 0 + errors_found = 0 + + if args.vendor: + errors_found += check_filament_compatible_printers(profiles_dir / args.vendor / "filament") + checked_vendor_count += 1 + else: + for vendor_dir in profiles_dir.iterdir(): + # skip "OrcaFilamentLibrary" folder + if vendor_dir.name == "OrcaFilamentLibrary": + continue + if vendor_dir.is_dir(): + errors_found += check_filament_compatible_printers(vendor_dir / "filament") + checked_vendor_count += 1 + + if errors_found > 0: + print(f"Errors found in {errors_found} profile files") + exit(-1) + else: + print(f"Checked {checked_vendor_count} vendor files") + exit(0) + + +if __name__ == "__main__": + main() From e12ca90f6294e4f30c0df5c2a860aa77f476a094 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 22 Feb 2025 15:52:54 +0800 Subject: [PATCH 100/129] fix empty compatible_printers issues in vendor profiles --- .github/workflows/check_profiles.yml | 2 +- .../Elegoo/filament/ELEGOO/Elegoo ASA.json | 29 +++++++++++++++++-- .../filament/ELEGOO/Elegoo PETG PRO.json | 29 +++++++++++++++++-- .../filament/ELEGOO/Elegoo PLA Matte.json | 27 ++++++++++++++++- .../filament/ELEGOO/Elegoo PLA PRO.json | 27 ++++++++++++++++- .../filament/ELEGOO/Elegoo PLA Silk.json | 27 ++++++++++++++++- .../Elegoo/filament/ELEGOO/Elegoo PLA+.json | 27 ++++++++++++++++- .../Elegoo/filament/ELEGOO/Elegoo PLA-CF.json | 27 ++++++++++++++++- .../Elegoo/filament/ELEGOO/Elegoo PLA.json | 27 ++++++++++++++++- .../filament/ELEGOO/Elegoo RAPID PETG+.json | 27 ++++++++++++++++- .../filament/ELEGOO/Elegoo RAPID PETG.json | 27 ++++++++++++++++- .../filament/ELEGOO/Elegoo RAPID PLA+.json | 27 ++++++++++++++++- 12 files changed, 289 insertions(+), 14 deletions(-) diff --git a/.github/workflows/check_profiles.yml b/.github/workflows/check_profiles.yml index 5504396b49..ebb2974d02 100644 --- a/.github/workflows/check_profiles.yml +++ b/.github/workflows/check_profiles.yml @@ -23,7 +23,7 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - - name: Run vendor JSON check + - name: Run extra JSON check run: | python3 ./scripts/orca_extra_profile_check.py diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA.json index 8381f0978f..d038c4a467 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA.json +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA.json @@ -5,7 +5,32 @@ "from": "system", "setting_id": "EASA00", "instantiation": "true", - "compatible_printers": [ - ] + "compatible_printers": [ + "Elegoo Neptune 0.4 nozzle", + "Elegoo Neptune X 0.4 nozzle", + "Elegoo Neptune 2 0.4 nozzle", + "Elegoo Neptune 2S 0.4 nozzle", + "Elegoo Neptune 2D 0.4 nozzle", + "Elegoo Neptune 3 0.4 nozzle", + "Elegoo Neptune 3 Pro 0.4 nozzle", + "Elegoo Neptune 3 Plus 0.4 nozzle", + "Elegoo Neptune 3 Max 0.4 nozzle", + "Elegoo Neptune 4 (0.2 nozzle)", + "Elegoo Neptune 4 (0.4 nozzle)", + "Elegoo Neptune 4 (0.6 nozzle)", + "Elegoo Neptune 4 (0.8 nozzle)", + "Elegoo Neptune 4 Max (0.2 nozzle)", + "Elegoo Neptune 4 Max (0.4 nozzle)", + "Elegoo Neptune 4 Max (0.6 nozzle)", + "Elegoo Neptune 4 Max (0.8 nozzle)", + "Elegoo Neptune 4 Plus (0.2 nozzle)", + "Elegoo Neptune 4 Plus (0.4 nozzle)", + "Elegoo Neptune 4 Plus (0.6 nozzle)", + "Elegoo Neptune 4 Plus (0.8 nozzle)", + "Elegoo Neptune 4 Pro (0.2 nozzle)", + "Elegoo Neptune 4 Pro (0.4 nozzle)", + "Elegoo Neptune 4 Pro (0.6 nozzle)", + "Elegoo Neptune 4 Pro (0.8 nozzle)" + ] } \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO.json index 12c6fd1c33..5083a75114 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO.json +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO.json @@ -5,6 +5,31 @@ "from": "system", "setting_id": "EPETGPRO00", "instantiation": "true", - "compatible_printers": [ - ] + "compatible_printers": [ + "Elegoo Neptune 0.4 nozzle", + "Elegoo Neptune X 0.4 nozzle", + "Elegoo Neptune 2 0.4 nozzle", + "Elegoo Neptune 2S 0.4 nozzle", + "Elegoo Neptune 2D 0.4 nozzle", + "Elegoo Neptune 3 0.4 nozzle", + "Elegoo Neptune 3 Pro 0.4 nozzle", + "Elegoo Neptune 3 Plus 0.4 nozzle", + "Elegoo Neptune 3 Max 0.4 nozzle", + "Elegoo Neptune 4 (0.2 nozzle)", + "Elegoo Neptune 4 (0.4 nozzle)", + "Elegoo Neptune 4 (0.6 nozzle)", + "Elegoo Neptune 4 (0.8 nozzle)", + "Elegoo Neptune 4 Max (0.2 nozzle)", + "Elegoo Neptune 4 Max (0.4 nozzle)", + "Elegoo Neptune 4 Max (0.6 nozzle)", + "Elegoo Neptune 4 Max (0.8 nozzle)", + "Elegoo Neptune 4 Plus (0.2 nozzle)", + "Elegoo Neptune 4 Plus (0.4 nozzle)", + "Elegoo Neptune 4 Plus (0.6 nozzle)", + "Elegoo Neptune 4 Plus (0.8 nozzle)", + "Elegoo Neptune 4 Pro (0.2 nozzle)", + "Elegoo Neptune 4 Pro (0.4 nozzle)", + "Elegoo Neptune 4 Pro (0.6 nozzle)", + "Elegoo Neptune 4 Pro (0.8 nozzle)" + ] } diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte.json index cc002d1b0d..46e6b6741a 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte.json +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte.json @@ -33,5 +33,30 @@ "60" ], "compatible_printers": [ - ] + "Elegoo Neptune 0.4 nozzle", + "Elegoo Neptune X 0.4 nozzle", + "Elegoo Neptune 2 0.4 nozzle", + "Elegoo Neptune 2S 0.4 nozzle", + "Elegoo Neptune 2D 0.4 nozzle", + "Elegoo Neptune 3 0.4 nozzle", + "Elegoo Neptune 3 Pro 0.4 nozzle", + "Elegoo Neptune 3 Plus 0.4 nozzle", + "Elegoo Neptune 3 Max 0.4 nozzle", + "Elegoo Neptune 4 (0.2 nozzle)", + "Elegoo Neptune 4 (0.4 nozzle)", + "Elegoo Neptune 4 (0.6 nozzle)", + "Elegoo Neptune 4 (0.8 nozzle)", + "Elegoo Neptune 4 Max (0.2 nozzle)", + "Elegoo Neptune 4 Max (0.4 nozzle)", + "Elegoo Neptune 4 Max (0.6 nozzle)", + "Elegoo Neptune 4 Max (0.8 nozzle)", + "Elegoo Neptune 4 Plus (0.2 nozzle)", + "Elegoo Neptune 4 Plus (0.4 nozzle)", + "Elegoo Neptune 4 Plus (0.6 nozzle)", + "Elegoo Neptune 4 Plus (0.8 nozzle)", + "Elegoo Neptune 4 Pro (0.2 nozzle)", + "Elegoo Neptune 4 Pro (0.4 nozzle)", + "Elegoo Neptune 4 Pro (0.6 nozzle)", + "Elegoo Neptune 4 Pro (0.8 nozzle)" + ] } \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA PRO.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA PRO.json index 6ddbe449ef..86a540e6c8 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA PRO.json +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA PRO.json @@ -9,5 +9,30 @@ "16" ], "compatible_printers": [ - ] + "Elegoo Neptune 0.4 nozzle", + "Elegoo Neptune X 0.4 nozzle", + "Elegoo Neptune 2 0.4 nozzle", + "Elegoo Neptune 2S 0.4 nozzle", + "Elegoo Neptune 2D 0.4 nozzle", + "Elegoo Neptune 3 0.4 nozzle", + "Elegoo Neptune 3 Pro 0.4 nozzle", + "Elegoo Neptune 3 Plus 0.4 nozzle", + "Elegoo Neptune 3 Max 0.4 nozzle", + "Elegoo Neptune 4 (0.2 nozzle)", + "Elegoo Neptune 4 (0.4 nozzle)", + "Elegoo Neptune 4 (0.6 nozzle)", + "Elegoo Neptune 4 (0.8 nozzle)", + "Elegoo Neptune 4 Max (0.2 nozzle)", + "Elegoo Neptune 4 Max (0.4 nozzle)", + "Elegoo Neptune 4 Max (0.6 nozzle)", + "Elegoo Neptune 4 Max (0.8 nozzle)", + "Elegoo Neptune 4 Plus (0.2 nozzle)", + "Elegoo Neptune 4 Plus (0.4 nozzle)", + "Elegoo Neptune 4 Plus (0.6 nozzle)", + "Elegoo Neptune 4 Plus (0.8 nozzle)", + "Elegoo Neptune 4 Pro (0.2 nozzle)", + "Elegoo Neptune 4 Pro (0.4 nozzle)", + "Elegoo Neptune 4 Pro (0.6 nozzle)", + "Elegoo Neptune 4 Pro (0.8 nozzle)" + ] } diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk.json index eb576dce2d..b4848870bb 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk.json +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk.json @@ -30,5 +30,30 @@ "60" ], "compatible_printers": [ - ] + "Elegoo Neptune 0.4 nozzle", + "Elegoo Neptune X 0.4 nozzle", + "Elegoo Neptune 2 0.4 nozzle", + "Elegoo Neptune 2S 0.4 nozzle", + "Elegoo Neptune 2D 0.4 nozzle", + "Elegoo Neptune 3 0.4 nozzle", + "Elegoo Neptune 3 Pro 0.4 nozzle", + "Elegoo Neptune 3 Plus 0.4 nozzle", + "Elegoo Neptune 3 Max 0.4 nozzle", + "Elegoo Neptune 4 (0.2 nozzle)", + "Elegoo Neptune 4 (0.4 nozzle)", + "Elegoo Neptune 4 (0.6 nozzle)", + "Elegoo Neptune 4 (0.8 nozzle)", + "Elegoo Neptune 4 Max (0.2 nozzle)", + "Elegoo Neptune 4 Max (0.4 nozzle)", + "Elegoo Neptune 4 Max (0.6 nozzle)", + "Elegoo Neptune 4 Max (0.8 nozzle)", + "Elegoo Neptune 4 Plus (0.2 nozzle)", + "Elegoo Neptune 4 Plus (0.4 nozzle)", + "Elegoo Neptune 4 Plus (0.6 nozzle)", + "Elegoo Neptune 4 Plus (0.8 nozzle)", + "Elegoo Neptune 4 Pro (0.2 nozzle)", + "Elegoo Neptune 4 Pro (0.4 nozzle)", + "Elegoo Neptune 4 Pro (0.6 nozzle)", + "Elegoo Neptune 4 Pro (0.8 nozzle)" + ] } \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA+.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA+.json index 54cfdb3d0a..0ceb578de0 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA+.json +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA+.json @@ -9,5 +9,30 @@ "16" ], "compatible_printers": [ - ] + "Elegoo Neptune 0.4 nozzle", + "Elegoo Neptune X 0.4 nozzle", + "Elegoo Neptune 2 0.4 nozzle", + "Elegoo Neptune 2S 0.4 nozzle", + "Elegoo Neptune 2D 0.4 nozzle", + "Elegoo Neptune 3 0.4 nozzle", + "Elegoo Neptune 3 Pro 0.4 nozzle", + "Elegoo Neptune 3 Plus 0.4 nozzle", + "Elegoo Neptune 3 Max 0.4 nozzle", + "Elegoo Neptune 4 (0.2 nozzle)", + "Elegoo Neptune 4 (0.4 nozzle)", + "Elegoo Neptune 4 (0.6 nozzle)", + "Elegoo Neptune 4 (0.8 nozzle)", + "Elegoo Neptune 4 Max (0.2 nozzle)", + "Elegoo Neptune 4 Max (0.4 nozzle)", + "Elegoo Neptune 4 Max (0.6 nozzle)", + "Elegoo Neptune 4 Max (0.8 nozzle)", + "Elegoo Neptune 4 Plus (0.2 nozzle)", + "Elegoo Neptune 4 Plus (0.4 nozzle)", + "Elegoo Neptune 4 Plus (0.6 nozzle)", + "Elegoo Neptune 4 Plus (0.8 nozzle)", + "Elegoo Neptune 4 Pro (0.2 nozzle)", + "Elegoo Neptune 4 Pro (0.4 nozzle)", + "Elegoo Neptune 4 Pro (0.6 nozzle)", + "Elegoo Neptune 4 Pro (0.8 nozzle)" + ] } diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA-CF.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA-CF.json index 1111ff70f6..efa1eab3c8 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA-CF.json +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA-CF.json @@ -33,5 +33,30 @@ "65" ], "compatible_printers": [ - ] + "Elegoo Neptune 0.4 nozzle", + "Elegoo Neptune X 0.4 nozzle", + "Elegoo Neptune 2 0.4 nozzle", + "Elegoo Neptune 2S 0.4 nozzle", + "Elegoo Neptune 2D 0.4 nozzle", + "Elegoo Neptune 3 0.4 nozzle", + "Elegoo Neptune 3 Pro 0.4 nozzle", + "Elegoo Neptune 3 Plus 0.4 nozzle", + "Elegoo Neptune 3 Max 0.4 nozzle", + "Elegoo Neptune 4 (0.2 nozzle)", + "Elegoo Neptune 4 (0.4 nozzle)", + "Elegoo Neptune 4 (0.6 nozzle)", + "Elegoo Neptune 4 (0.8 nozzle)", + "Elegoo Neptune 4 Max (0.2 nozzle)", + "Elegoo Neptune 4 Max (0.4 nozzle)", + "Elegoo Neptune 4 Max (0.6 nozzle)", + "Elegoo Neptune 4 Max (0.8 nozzle)", + "Elegoo Neptune 4 Plus (0.2 nozzle)", + "Elegoo Neptune 4 Plus (0.4 nozzle)", + "Elegoo Neptune 4 Plus (0.6 nozzle)", + "Elegoo Neptune 4 Plus (0.8 nozzle)", + "Elegoo Neptune 4 Pro (0.2 nozzle)", + "Elegoo Neptune 4 Pro (0.4 nozzle)", + "Elegoo Neptune 4 Pro (0.6 nozzle)", + "Elegoo Neptune 4 Pro (0.8 nozzle)" + ] } \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA.json index 5cbb391d81..aaf9c5d040 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA.json +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA.json @@ -9,5 +9,30 @@ "15" ], "compatible_printers": [ - ] + "Elegoo Neptune 0.4 nozzle", + "Elegoo Neptune X 0.4 nozzle", + "Elegoo Neptune 2 0.4 nozzle", + "Elegoo Neptune 2S 0.4 nozzle", + "Elegoo Neptune 2D 0.4 nozzle", + "Elegoo Neptune 3 0.4 nozzle", + "Elegoo Neptune 3 Pro 0.4 nozzle", + "Elegoo Neptune 3 Plus 0.4 nozzle", + "Elegoo Neptune 3 Max 0.4 nozzle", + "Elegoo Neptune 4 (0.2 nozzle)", + "Elegoo Neptune 4 (0.4 nozzle)", + "Elegoo Neptune 4 (0.6 nozzle)", + "Elegoo Neptune 4 (0.8 nozzle)", + "Elegoo Neptune 4 Max (0.2 nozzle)", + "Elegoo Neptune 4 Max (0.4 nozzle)", + "Elegoo Neptune 4 Max (0.6 nozzle)", + "Elegoo Neptune 4 Max (0.8 nozzle)", + "Elegoo Neptune 4 Plus (0.2 nozzle)", + "Elegoo Neptune 4 Plus (0.4 nozzle)", + "Elegoo Neptune 4 Plus (0.6 nozzle)", + "Elegoo Neptune 4 Plus (0.8 nozzle)", + "Elegoo Neptune 4 Pro (0.2 nozzle)", + "Elegoo Neptune 4 Pro (0.4 nozzle)", + "Elegoo Neptune 4 Pro (0.6 nozzle)", + "Elegoo Neptune 4 Pro (0.8 nozzle)" + ] } diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG+.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG+.json index 67b208178b..b1a371f87b 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG+.json +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG+.json @@ -6,5 +6,30 @@ "setting_id": "ERPETGPLUS00", "instantiation": "true", "compatible_printers": [ - ] + "Elegoo Neptune 0.4 nozzle", + "Elegoo Neptune X 0.4 nozzle", + "Elegoo Neptune 2 0.4 nozzle", + "Elegoo Neptune 2S 0.4 nozzle", + "Elegoo Neptune 2D 0.4 nozzle", + "Elegoo Neptune 3 0.4 nozzle", + "Elegoo Neptune 3 Pro 0.4 nozzle", + "Elegoo Neptune 3 Plus 0.4 nozzle", + "Elegoo Neptune 3 Max 0.4 nozzle", + "Elegoo Neptune 4 (0.2 nozzle)", + "Elegoo Neptune 4 (0.4 nozzle)", + "Elegoo Neptune 4 (0.6 nozzle)", + "Elegoo Neptune 4 (0.8 nozzle)", + "Elegoo Neptune 4 Max (0.2 nozzle)", + "Elegoo Neptune 4 Max (0.4 nozzle)", + "Elegoo Neptune 4 Max (0.6 nozzle)", + "Elegoo Neptune 4 Max (0.8 nozzle)", + "Elegoo Neptune 4 Plus (0.2 nozzle)", + "Elegoo Neptune 4 Plus (0.4 nozzle)", + "Elegoo Neptune 4 Plus (0.6 nozzle)", + "Elegoo Neptune 4 Plus (0.8 nozzle)", + "Elegoo Neptune 4 Pro (0.2 nozzle)", + "Elegoo Neptune 4 Pro (0.4 nozzle)", + "Elegoo Neptune 4 Pro (0.6 nozzle)", + "Elegoo Neptune 4 Pro (0.8 nozzle)" + ] } diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG.json index 87f8df6cea..4c26dba51c 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG.json +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG.json @@ -6,5 +6,30 @@ "setting_id": "ERPETG00", "instantiation": "true", "compatible_printers": [ - ] + "Elegoo Neptune 0.4 nozzle", + "Elegoo Neptune X 0.4 nozzle", + "Elegoo Neptune 2 0.4 nozzle", + "Elegoo Neptune 2S 0.4 nozzle", + "Elegoo Neptune 2D 0.4 nozzle", + "Elegoo Neptune 3 0.4 nozzle", + "Elegoo Neptune 3 Pro 0.4 nozzle", + "Elegoo Neptune 3 Plus 0.4 nozzle", + "Elegoo Neptune 3 Max 0.4 nozzle", + "Elegoo Neptune 4 (0.2 nozzle)", + "Elegoo Neptune 4 (0.4 nozzle)", + "Elegoo Neptune 4 (0.6 nozzle)", + "Elegoo Neptune 4 (0.8 nozzle)", + "Elegoo Neptune 4 Max (0.2 nozzle)", + "Elegoo Neptune 4 Max (0.4 nozzle)", + "Elegoo Neptune 4 Max (0.6 nozzle)", + "Elegoo Neptune 4 Max (0.8 nozzle)", + "Elegoo Neptune 4 Plus (0.2 nozzle)", + "Elegoo Neptune 4 Plus (0.4 nozzle)", + "Elegoo Neptune 4 Plus (0.6 nozzle)", + "Elegoo Neptune 4 Plus (0.8 nozzle)", + "Elegoo Neptune 4 Pro (0.2 nozzle)", + "Elegoo Neptune 4 Pro (0.4 nozzle)", + "Elegoo Neptune 4 Pro (0.6 nozzle)", + "Elegoo Neptune 4 Pro (0.8 nozzle)" + ] } diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+.json index 41aba3dcd6..1eddd95bbc 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+.json +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+.json @@ -33,5 +33,30 @@ "60" ], "compatible_printers": [ - ] + "Elegoo Neptune 0.4 nozzle", + "Elegoo Neptune X 0.4 nozzle", + "Elegoo Neptune 2 0.4 nozzle", + "Elegoo Neptune 2S 0.4 nozzle", + "Elegoo Neptune 2D 0.4 nozzle", + "Elegoo Neptune 3 0.4 nozzle", + "Elegoo Neptune 3 Pro 0.4 nozzle", + "Elegoo Neptune 3 Plus 0.4 nozzle", + "Elegoo Neptune 3 Max 0.4 nozzle", + "Elegoo Neptune 4 (0.2 nozzle)", + "Elegoo Neptune 4 (0.4 nozzle)", + "Elegoo Neptune 4 (0.6 nozzle)", + "Elegoo Neptune 4 (0.8 nozzle)", + "Elegoo Neptune 4 Max (0.2 nozzle)", + "Elegoo Neptune 4 Max (0.4 nozzle)", + "Elegoo Neptune 4 Max (0.6 nozzle)", + "Elegoo Neptune 4 Max (0.8 nozzle)", + "Elegoo Neptune 4 Plus (0.2 nozzle)", + "Elegoo Neptune 4 Plus (0.4 nozzle)", + "Elegoo Neptune 4 Plus (0.6 nozzle)", + "Elegoo Neptune 4 Plus (0.8 nozzle)", + "Elegoo Neptune 4 Pro (0.2 nozzle)", + "Elegoo Neptune 4 Pro (0.4 nozzle)", + "Elegoo Neptune 4 Pro (0.6 nozzle)", + "Elegoo Neptune 4 Pro (0.8 nozzle)" + ] } \ No newline at end of file From d839c5211465835f940af743fea3ae7bd6435ba8 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 22 Feb 2025 17:39:17 +0800 Subject: [PATCH 101/129] duplication key error check --- .../Blocks/filament/fdm_filament_pla.json | 3 -- scripts/orca_extra_profile_check.py | 28 +++++++++++++++---- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/resources/profiles/Blocks/filament/fdm_filament_pla.json b/resources/profiles/Blocks/filament/fdm_filament_pla.json index 9bf3abe068..bb0a3e4990 100644 --- a/resources/profiles/Blocks/filament/fdm_filament_pla.json +++ b/resources/profiles/Blocks/filament/fdm_filament_pla.json @@ -19,9 +19,6 @@ "filament_cost": [ "30" ], - "additional_cooling_fan_speed": [ - "80" - ], "cool_plate_temp": [ "50" ], diff --git a/scripts/orca_extra_profile_check.py b/scripts/orca_extra_profile_check.py index 07b0e4cc56..105bf154ae 100644 --- a/scripts/orca_extra_profile_check.py +++ b/scripts/orca_extra_profile_check.py @@ -3,6 +3,14 @@ import json import argparse from pathlib import Path +# Add helper function for duplicate key detection. +def no_duplicates_object_pairs_hook(pairs): + seen = {} + for key, value in pairs: + if key in seen: + raise ValueError(f"Duplicate key detected: {key}") + seen[key] = value + return seen def check_filament_compatible_printers(vendor_folder): """ @@ -23,14 +31,22 @@ def check_filament_compatible_printers(vendor_folder): for file_path in vendor_path.rglob("*.json"): try: with open(file_path, 'r') as fp: - data = json.load(fp) - instantiation = str(data.get("instantiation", "")).lower() == "true" - compatible_printers = data.get("compatible_printers") - if instantiation and (not compatible_printers or (isinstance(compatible_printers, list) and not compatible_printers)): - print(file_path) - error += 1 + # Use custom hook to detect duplicates. + data = json.load(fp, object_pairs_hook=no_duplicates_object_pairs_hook) + except ValueError as ve: + print(f"Duplicate key error in {file_path}: {ve}") + error += 1 + continue except Exception as e: print(f"Error processing {file_path}: {e}") + error += 1 + continue + + instantiation = str(data.get("instantiation", "")).lower() == "true" + compatible_printers = data.get("compatible_printers") + if instantiation and (not compatible_printers or (isinstance(compatible_printers, list) and not compatible_printers)): + print(file_path) + error += 1 return error def main(): From dc491166a8a8dcf44118431113f20f428c34554f Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 22 Feb 2025 17:58:23 +0800 Subject: [PATCH 102/129] Feature/revert recent flashforge changes(#8498) * Revert "fix more Flashforge issues" This reverts commit 6e473fd5fa1b67cc68b73ca7317e7ae6a3e7a9ee. * Revert "Fixed an issue that some Flashforge filament profiles don't' have compatible_printers defined which cause filament selection dialog didn't filter properly" This reverts commit f8c0cdfb117f715f93cc7c52e48bcee6d425e510. * Revert "Merged Orca-Flashforge 1.3 branch (Added AD5X & G4P) + fixes & optimizations (#8461)" This reverts commit b8e4ce75e0ac26b585831a150cf3ff03afed3ad9, reversing changes made to be8bf5488486010c017cde814d16a4255f5d2549. --- resources/profiles/Flashforge.json | 1968 +++++------------ .../Flashforge/Flashforge AD5X_cover.png | Bin 738612 -> 0 bytes .../Flashforge ABS @FF AD5M 0.25 Nozzle.json | 32 + .../Flashforge/filament/Flashforge ABS.json | 61 + .../Flashforge ASA @FF AD5M 0.25 Nozzle.json | 35 + ...orge Generic ABS @FF AD5M 0.25 Nozzle.json | 22 - ...lashforge Generic ABS @G3U 0.6 Nozzle.json | 68 +- .../filament/Flashforge Generic ABS @G3U.json | 342 ++- .../filament/Flashforge Generic ABS.json | 61 +- ...orge Generic ASA @FF AD5M 0.25 Nozzle.json | 25 - ...lashforge Generic ASA @G3U 0.6 Nozzle.json | 80 +- .../filament/Flashforge Generic ASA @G3U.json | 342 ++- .../filament/Flashforge Generic ASA.json | 231 +- ...ashforge Generic HIPS @G3U 0.6 Nozzle.json | 80 +- .../filament/Flashforge Generic HIPS.json | 342 ++- ...e Generic HS PLA @FF AD5M 0.25 Nozzle.json | 30 - .../filament/Flashforge Generic HS PLA.json | 303 ++- ...rge Generic PETG @FF AD5M 0.25 Nozzle.json | 21 - ...ashforge Generic PETG @G3U 0.6 Nozzle.json | 68 +- ...ashforge Generic PETG @G3U 0.8 Nozzle.json | 68 +- .../Flashforge Generic PETG @G3U.json | 342 ++- ...forge Generic PETG-CF @G3U 0.6 Nozzle.json | 76 +- ...forge Generic PETG-CF @G3U 0.8 Nozzle.json | 76 +- .../Flashforge Generic PETG-CF @G3U.json | 342 ++- .../Flashforge Generic PETG-CF10.json | 228 +- .../filament/Flashforge Generic PETG.json | 104 +- ...orge Generic PLA @FF AD5M 0.25 Nozzle.json | 27 - ...lashforge Generic PLA @G3U 0.6 Nozzle.json | 65 +- ...lashforge Generic PLA @G3U 0.8 Nozzle.json | 73 +- .../filament/Flashforge Generic PLA @G3U.json | 345 ++- ...hforge Generic PLA-CF @G3U 0.6 Nozzle.json | 72 +- ...hforge Generic PLA-CF @G3U 0.8 Nozzle.json | 72 +- .../Flashforge Generic PLA-CF @G3U.json | 342 ++- .../filament/Flashforge Generic PLA-CF10.json | 301 ++- ...Generic PLA-SILK @FF AD5M 0.25 Nozzle.json | 30 - .../filament/Flashforge Generic PLA-Silk.json | 71 +- .../filament/Flashforge Generic PLA.json | 75 +- .../filament/Flashforge Generic PVA.json | 344 ++- .../filament/Flashforge Generic TPU.json | 228 +- ...lashforge HS PLA @FF AD5M 0.25 Nozzle.json | 50 + .../Flashforge PETG @FF AD5M 0.25 Nozzle.json | 29 + .../Flashforge/filament/Flashforge PETG.json | 88 + .../Flashforge PLA @FF AD5M 0.25 Nozzle.json | 49 + ...shforge PLA-SILK @FF AD5M 0.25 Nozzle.json | 53 + .../Flashforge/filament/Flashforge PLA.json | 64 + .../FlashForge PC @FF G4P 0.6 HF nozzle.json | 39 - .../FlashForge PC @FF G4P 0.6 nozzle.json | 39 - .../FlashForge PC @FF G4P 0.8 HF nozzle.json | 39 - .../FlashForge PPS @FF G4P 0.6 nozzle.json | 46 - .../FlashForge PPS @FF G4P 0.8 HF nozzle.json | 46 - .../FlashForge PPS-CF @FF G4P 0.6 nozzle.json | 44 - .../Flashforge/Flashforge ABS @FF AD3.json | 32 - ...hforge ABS Basic @FF AD5X 0.25 nozzle.json | 28 - ...shforge ABS Basic @FF AD5X 0.6 nozzle.json | 20 - ...shforge ABS Basic @FF AD5X 0.8 nozzle.json | 22 - .../Flashforge ABS Basic @FF AD5X.json | 23 - ...shforge ABS Basic @FF G4P 0.25 nozzle.json | 20 - ...forge ABS Basic @FF G4P 0.6 HF nozzle.json | 42 - ...ashforge ABS Basic @FF G4P 0.6 nozzle.json | 107 - ...forge ABS Basic @FF G4P 0.8 HF nozzle.json | 43 - .../Flashforge ABS Basic @FF G4P HF.json | 33 - .../Flashforge ABS Basic @FF G4P.json | 17 - .../Flashforge ABS-CF @FF G4P 0.6 nozzle.json | 43 - .../Flashforge/Flashforge ABS-CF @FF G4P.json | 27 - ...hforge ASA Basic @FF AD5X 0.25 nozzle.json | 29 - ...shforge ASA Basic @FF AD5X 0.6 nozzle.json | 20 - ...shforge ASA Basic @FF AD5X 0.8 nozzle.json | 20 - .../Flashforge ASA Basic @FF AD5X.json | 23 - ...shforge ASA Basic @FF G4P 0.25 nozzle.json | 24 - ...forge ASA Basic @FF G4P 0.6 HF nozzle.json | 43 - ...ashforge ASA Basic @FF G4P 0.6 nozzle.json | 44 - ...forge ASA Basic @FF G4P 0.8 HF nozzle.json | 44 - .../Flashforge ASA Basic @FF G4P HF.json | 34 - .../Flashforge ASA Basic @FF G4P.json | 21 - .../Flashforge/Flashforge ASA-CF.json | 63 - .../Flashforge HIPS @FF G4P 0.6 nozzle.json | 43 - ...Flashforge HIPS @FF G4P 0.8 HF nozzle.json | 43 - .../Flashforge HIPS @FF G4P HF.json | 25 - .../Flashforge/Flashforge HIPS @FF G4P.json | 38 - ...ashforge HS PETG @FF AD5X 0.25 nozzle.json | 28 - ...lashforge HS PETG @FF AD5X 0.6 nozzle.json | 24 - ...lashforge HS PETG @FF AD5X 0.8 nozzle.json | 24 - .../Flashforge HS PETG @FF AD5X.json | 25 - ...lashforge HS PETG @FF G4P 0.25 nozzle.json | 26 - ...shforge HS PETG @FF G4P 0.6 HF nozzle.json | 34 - ...Flashforge HS PETG @FF G4P 0.6 nozzle.json | 37 - ...shforge HS PETG @FF G4P 0.8 HF nozzle.json | 37 - .../Flashforge HS PETG @FF G4P HF.json | 39 - .../Flashforge HS PETG @FF G4P.json | 22 - ...lashforge HS PLA @FF AD5X 0.25 nozzle.json | 27 - ...Flashforge HS PLA @FF AD5X 0.6 nozzle.json | 21 - ...Flashforge HS PLA @FF AD5X 0.8 nozzle.json | 21 - .../Flashforge HS PLA @FF AD5X.json | 22 - ...Flashforge HS PLA @FF G4P 0.25 nozzle.json | 25 - ...ashforge HS PLA @FF G4P 0.6 HF nozzle.json | 34 - .../Flashforge HS PLA @FF G4P 0.6 nozzle.json | 32 - ...ashforge HS PLA @FF G4P 0.8 HF nozzle.json | 32 - .../Flashforge HS PLA @FF G4P HF.json | 42 - .../Flashforge/Flashforge HS PLA @FF G4P.json | 25 - ...HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json | 35 - ...Flashforge HS PLA Burnt Ti @FF G4P HF.json | 42 - ...rge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json | 32 - ... HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json | 32 - .../Flashforge PA @FF G4P 0.6 HF nozzle.json | 47 - .../Flashforge/Flashforge PA @FF G4P HF.json | 37 - .../Flashforge/Flashforge PA @FF G4P.json | 31 - .../Flashforge/Flashforge PA-CF @FF G4P.json | 37 - .../Flashforge/Flashforge PA12-CF.json | 66 - .../Flashforge/Flashforge PA6-CF.json | 63 - .../Flashforge/Flashforge PA66-CF.json | 63 - .../Flashforge PAHT-CF @FF G4P.json | 37 - .../Flashforge/Flashforge PET @FF G4P.json | 35 - .../Flashforge/Flashforge PET-CF @FF G4P.json | 35 - .../Flashforge/Flashforge PET-CF.json | 57 - .../Flashforge/Flashforge PETG @FF AD3.json | 41 - .../Flashforge PETG Basic @G3U.json | 11 - .../Flashforge/Flashforge PETG Basic.json | 42 - ...shforge PETG Pro @FF AD5X 0.25 nozzle.json | 27 - ...ashforge PETG Pro @FF AD5X 0.6 nozzle.json | 22 - ...ashforge PETG Pro @FF AD5X 0.8 nozzle.json | 22 - .../Flashforge PETG Pro @FF AD5X.json | 24 - ...ashforge PETG Pro @FF G4P 0.25 nozzle.json | 24 - ...hforge PETG Pro @FF G4P 0.6 HF nozzle.json | 28 - ...lashforge PETG Pro @FF G4P 0.6 nozzle.json | 37 - ...hforge PETG Pro @FF G4P 0.8 HF nozzle.json | 37 - .../Flashforge PETG Pro @FF G4P HF.json | 40 - .../Flashforge PETG Pro @FF G4P.json | 20 - .../Flashforge/Flashforge PETG Pro.json | 42 - ...PETG Transparent @FF AD5X 0.25 nozzle.json | 27 - ... PETG Transparent @FF AD5X 0.6 nozzle.json | 22 - ... PETG Transparent @FF AD5X 0.8 nozzle.json | 22 - .../Flashforge PETG Transparent @FF AD5X.json | 24 - ... PETG Transparent @FF G4P 0.25 nozzle.json | 24 - ...ETG Transparent @FF G4P 0.6 HF nozzle.json | 28 - ...e PETG Transparent @FF G4P 0.6 nozzle.json | 37 - ...ETG Transparent @FF G4P 0.8 HF nozzle.json | 37 - ...lashforge PETG Transparent @FF G4P HF.json | 40 - .../Flashforge PETG Transparent @FF G4P.json | 20 - .../Flashforge PETG Transparent.json | 42 - ...lashforge PETG-CF @FF AD5X 0.6 nozzle.json | 22 - ...lashforge PETG-CF @FF AD5X 0.8 nozzle.json | 22 - .../Flashforge PETG-CF @FF AD5X.json | 24 - ...Flashforge PETG-CF @FF G4P 0.6 nozzle.json | 37 - .../Flashforge PETG-CF @FF G4P.json | 26 - .../Flashforge/Flashforge PLA @FF AD3.json | 33 - ...hforge PLA Basic @FF AD5X 0.25 nozzle.json | 27 - ...shforge PLA Basic @FF AD5X 0.6 nozzle.json | 22 - ...shforge PLA Basic @FF AD5X 0.8 nozzle.json | 23 - .../Flashforge PLA Basic @FF AD5X.json | 22 - ...shforge PLA Basic @FF G4P 0.25 nozzle.json | 24 - ...forge PLA Basic @FF G4P 0.6 HF nozzle.json | 35 - ...ashforge PLA Basic @FF G4P 0.6 nozzle.json | 32 - ...forge PLA Basic @FF G4P 0.8 HF nozzle.json | 32 - .../Flashforge PLA Basic @FF G4P HF.json | 41 - .../Flashforge PLA Basic @FF G4P.json | 26 - ...forge PLA Buint Ti @FF G4P 0.6 nozzle.json | 34 - ...forge PLA Buint Ti @FF G4P 0.8 nozzle.json | 34 - ...PLA Color Change @FF AD5X 0.25 nozzle.json | 27 - ... PLA Color Change @FF AD5X 0.6 nozzle.json | 23 - ... PLA Color Change @FF AD5X 0.8 nozzle.json | 23 - .../Flashforge PLA Color Change @FF AD5X.json | 22 - ... PLA Color Change @FF G4P 0.25 nozzle.json | 25 - ...LA Color Change @FF G4P 0.6 HF nozzle.json | 35 - ...lashforge PLA Color Change @FF G4P HF.json | 41 - .../Flashforge PLA Color Change @FF G4P.json | 26 - ...forge PLA Galaxy @FF AD5X 0.25 nozzle.json | 27 - ...hforge PLA Galaxy @FF AD5X 0.6 nozzle.json | 23 - ...hforge PLA Galaxy @FF AD5X 0.8 nozzle.json | 23 - .../Flashforge PLA Galaxy @FF AD5X.json | 22 - ...hforge PLA Galaxy @FF G4P 0.25 nozzle.json | 25 - ...orge PLA Galaxy @FF G4P 0.6 HF nozzle.json | 35 - ...shforge PLA Galaxy @FF G4P 0.6 nozzle.json | 34 - ...orge PLA Galaxy @FF G4P 0.8 HF nozzle.json | 34 - .../Flashforge PLA Galaxy @FF G4P HF.json | 41 - .../Flashforge PLA Galaxy @FF G4P.json | 26 - ...rge PLA Luminous @FF AD5X 0.25 nozzle.json | 27 - ...orge PLA Luminous @FF AD5X 0.6 nozzle.json | 23 - ...orge PLA Luminous @FF AD5X 0.8 nozzle.json | 23 - .../Flashforge PLA Luminous @FF AD5X.json | 22 - ...orge PLA Luminous @FF G4P 0.25 nozzle.json | 25 - ...ge PLA Luminous @FF G4P 0.6 HF nozzle.json | 35 - .../Flashforge PLA Luminous @FF G4P HF.json | 41 - .../Flashforge PLA Luminous @FF G4P.json | 26 - ...hforge PLA Matte @FF AD5X 0.25 nozzle.json | 27 - ...shforge PLA Matte @FF AD5X 0.6 nozzle.json | 23 - ...shforge PLA Matte @FF AD5X 0.8 nozzle.json | 23 - .../Flashforge PLA Matte @FF AD5X.json | 22 - ...shforge PLA Matte @FF G4P 0.25 nozzle.json | 25 - ...forge PLA Matte @FF G4P 0.6 HF nozzle.json | 35 - ...ashforge PLA Matte @FF G4P 0.6 nozzle.json | 34 - ...forge PLA Matte @FF G4P 0.8 HF nozzle.json | 34 - .../Flashforge PLA Matte @FF G4P HF.json | 41 - .../Flashforge PLA Matte @FF G4P.json | 26 - ...hforge PLA Metal @FF AD5X 0.25 nozzle.json | 27 - ...shforge PLA Metal @FF AD5X 0.6 nozzle.json | 23 - ...shforge PLA Metal @FF AD5X 0.8 nozzle.json | 23 - .../Flashforge PLA Metal @FF AD5X.json | 22 - ...shforge PLA Metal @FF G4P 0.25 nozzle.json | 25 - ...forge PLA Metal @FF G4P 0.6 HF nozzle.json | 35 - ...ashforge PLA Metal @FF G4P 0.6 nozzle.json | 34 - ...forge PLA Metal @FF G4P 0.8 HF nozzle.json | 34 - .../Flashforge PLA Metal @FF G4P HF.json | 41 - .../Flashforge PLA Metal @FF G4P.json | 26 - ...ashforge PLA Pro @FF AD5X 0.25 nozzle.json | 27 - ...lashforge PLA Pro @FF AD5X 0.6 nozzle.json | 23 - ...lashforge PLA Pro @FF AD5X 0.8 nozzle.json | 23 - .../Flashforge PLA Pro @FF AD5X.json | 22 - ...lashforge PLA Pro @FF G4P 0.25 nozzle.json | 25 - ...shforge PLA Pro @FF G4P 0.6 HF nozzle.json | 35 - ...Flashforge PLA Pro @FF G4P 0.6 nozzle.json | 34 - ...shforge PLA Pro @FF G4P 0.8 HF nozzle.json | 34 - .../Flashforge PLA Pro @FF G4P HF.json | 41 - .../Flashforge PLA Pro @FF G4P.json | 26 - ...shforge PLA Silk @FF AD5X 0.25 nozzle.json | 28 - ...ashforge PLA Silk @FF AD5X 0.6 nozzle.json | 23 - ...ashforge PLA Silk @FF AD5X 0.8 nozzle.json | 23 - .../Flashforge PLA Silk @FF AD5X.json | 24 - ...ashforge PLA Silk @FF G4P 0.25 nozzle.json | 25 - ...hforge PLA Silk @FF G4P 0.6 HF nozzle.json | 33 - ...lashforge PLA Silk @FF G4P 0.6 nozzle.json | 33 - ...hforge PLA Silk @FF G4P 0.8 HF nozzle.json | 33 - .../Flashforge PLA Silk @FF G4P HF.json | 41 - .../Flashforge PLA Silk @FF G4P.json | 25 - ...orge PLA Sparkle @FF AD5X 0.25 nozzle.json | 27 - ...forge PLA Sparkle @FF AD5X 0.6 nozzle.json | 23 - ...forge PLA Sparkle @FF AD5X 0.8 nozzle.json | 23 - .../Flashforge PLA Sparkle @FF AD5X.json | 22 - ...forge PLA Sparkle @FF G4P 0.25 nozzle.json | 25 - ...rge PLA Sparkle @FF G4P 0.6 HF nozzle.json | 35 - .../Flashforge PLA Sparkle @FF G4P HF.json | 41 - .../Flashforge PLA Sparkle @FF G4P.json | 26 - ...Flashforge PLA-CF @FF AD5X 0.6 nozzle.json | 18 - ...Flashforge PLA-CF @FF AD5X 0.8 nozzle.json | 18 - .../Flashforge PLA-CF @FF AD5X.json | 19 - .../Flashforge PLA-CF @FF G4P 0.6 nozzle.json | 35 - .../Flashforge/Flashforge PLA-CF @FF G4P.json | 25 - .../Flashforge/Flashforge PPA-CF.json | 63 - .../Flashforge/Flashforge PPA-GF.json | 69 - .../Flashforge/Flashforge PPS @FF G4P.json | 39 - .../Flashforge/Flashforge PPS-CF @FF G4P.json | 39 - .../Flashforge/Flashforge PPS-CF.json | 63 - ...lashforge TPU 64D @FF AD5X 0.6 nozzle.json | 19 - ...lashforge TPU 64D @FF AD5X 0.8 nozzle.json | 19 - .../Flashforge TPU 64D @FF AD5X.json | 21 - ...lashforge TPU 95A @FF AD5X 0.6 nozzle.json | 22 - ...lashforge TPU 95A @FF AD5X 0.8 nozzle.json | 22 - .../Flashforge TPU 95A @FF AD5X.json | 24 - ...shforge TPU 95A @FF G4P 0.6 HF nozzle.json | 46 - ...Flashforge TPU 95A @FF G4P 0.6 nozzle.json | 33 - ...shforge TPU 95A @FF G4P 0.8 HF nozzle.json | 33 - .../Flashforge TPU 95A @FF G4P.json | 22 - .../filament/FusRock Generic NexPA-CF25.json | 254 +++ ...sRock Generic PAHT-CF @G3U 0.6 Nozzle.json | 89 + .../filament/FusRock Generic PAHT-CF.json | 254 +++ .../filament/FusRock Generic PAHT-GF.json | 39 + ...usRock Generic PET-CF @G3U 0.6 Nozzle.json | 89 + .../filament/FusRock Generic PET-CF.json | 254 +++ .../{FusRock => }/FusRock Generic PET-GF.json | 24 +- ...sRock Generic S-Multi @G3U 0.6 Nozzle.json | 83 + .../filament/FusRock Generic S-Multi.json | 254 +++ ...usRock Generic S-PAHT @G3U 0.6 Nozzle.json | 83 + .../filament/FusRock Generic S-PAHT.json | 254 +++ .../FusRock/FusRock Generic NexPA-CF25.json | 98 - ...sRock Generic PAHT-CF @G3U 0.6 Nozzle.json | 37 - .../FusRock/FusRock Generic PAHT-CF.json | 100 - .../FusRock/FusRock Generic PAHT-GF.json | 23 - ...usRock Generic PET-CF @G3U 0.6 Nozzle.json | 37 - .../FusRock/FusRock Generic PET-CF.json | 100 - ...sRock Generic S-Multi @G3U 0.6 Nozzle.json | 35 - .../FusRock/FusRock Generic S-Multi.json | 98 - ...usRock Generic S-PAHT @G3U 0.6 Nozzle.json | 35 - .../FusRock/FusRock Generic S-PAHT.json | 98 - .../FusRock PAHT @FF G4P 0.6 nozzle.json | 22 - .../FusRock PAHT @FF G4P 0.8 HF nozzle.json | 22 - .../FusRock PAHT-CF @FF G4P 0.6 nozzle.json | 24 - .../FusRock PET @FF G4P 0.6 HF nozzle.json | 25 - .../FusRock PET @FF G4P 0.6 nozzle.json | 25 - .../FusRock PET @FF G4P 0.8 HF nozzle.json | 25 - .../FusRock PET-CF @FF G4P 0.6 nozzle.json | 21 - .../filament/Polymaker Generic CoPA.json | 254 +++ .../filament/Polymaker Generic S1.json | 254 +++ .../Polymaker CoPA @FF G4P 0.6 HF nozzle.json | 37 - .../Polymaker CoPA @FF G4P 0.6 nozzle.json | 31 - .../Polymaker CoPA @FF G4P 0.8 HF nozzle.json | 31 - .../Polymaker/Polymaker Generic CoPA.json | 98 - .../Polymaker/Polymaker Generic S1.json | 98 - .../Flashforge/filament/fdm_filament_abs.json | 108 +- .../Flashforge/filament/fdm_filament_asa.json | 110 +- .../filament/fdm_filament_common.json | 192 +- .../Flashforge/filament/fdm_filament_pet.json | 110 +- .../Flashforge/filament/fdm_filament_pla.json | 122 +- .../Flashforge/filament/fdm_filament_tpu.json | 110 +- .../flashforge_ad5x_buildplate_texture.png | Bin 75637 -> 0 bytes .../flashforge_g4pro_buildplate_model.stl | Bin 1360084 -> 0 bytes .../flashforge_g4pro_buildplate_texture.png | Bin 89099 -> 0 bytes .../machine/FlashForge AD5X 0.25 nozzle.json | 125 -- .../machine/Flashforge AD5X 0.4 nozzle.json | 125 -- .../machine/Flashforge AD5X 0.6 nozzle.json | 125 -- .../machine/Flashforge AD5X 0.8 nozzle.json | 125 -- .../Flashforge/machine/Flashforge AD5X.json | 13 - ...hforge Adventurer 3 Series 0.4 nozzle.json | 24 +- ...hforge Adventurer 3 Series 0.6 nozzle.json | 24 +- .../Flashforge Adventurer 3 Series.json | 21 +- .../Flashforge Adventurer 5M 0.25 Nozzle.json | 34 +- .../Flashforge Adventurer 5M 0.4 Nozzle.json | 28 +- .../Flashforge Adventurer 5M 0.6 Nozzle.json | 30 +- .../Flashforge Adventurer 5M 0.8 Nozzle.json | 32 +- ...shforge Adventurer 5M Pro 0.25 Nozzle.json | 34 +- ...ashforge Adventurer 5M Pro 0.4 Nozzle.json | 28 +- ...ashforge Adventurer 5M Pro 0.6 Nozzle.json | 30 +- ...ashforge Adventurer 5M Pro 0.8 Nozzle.json | 32 +- .../machine/Flashforge Adventurer 5M Pro.json | 3 +- .../machine/Flashforge Adventurer 5M.json | 21 +- .../Flashforge Guider 2s 0.4 nozzle.json | 111 +- .../Flashforge Guider 3 Ultra 0.4 Nozzle.json | 194 +- .../Flashforge Guider 3 Ultra 0.6 Nozzle.json | 49 +- .../Flashforge Guider 3 Ultra 0.8 Nozzle.json | 49 +- .../Flashforge Guider4 Pro 0.25 nozzle.json | 120 - .../Flashforge Guider4 Pro 0.4 HF nozzle.json | 120 - .../Flashforge Guider4 Pro 0.4 nozzle.json | 120 - .../Flashforge Guider4 Pro 0.6 HF nozzle.json | 120 - .../Flashforge Guider4 Pro 0.6 nozzle.json | 120 - .../Flashforge Guider4 Pro 0.8 HF nozzle.json | 120 - .../machine/Flashforge Guider4 Pro.json | 12 - .../machine/fdm_adventurer3_common.json | 119 +- .../machine/fdm_adventurer5m_common.json | 104 +- .../machine/fdm_flashforge_common.json | 145 +- .../machine/fdm_guider3_common.json | 87 +- .../machine/fdm_klipper_common.json | 145 +- .../machine/fdm_machine_common.json | 168 +- ...Standard @Flashforge AD5M 0.25 Nozzle.json | 4 +- ...dard @Flashforge AD5M Pro 0.25 Nozzle.json | 4 +- ...Standard @Flashforge AD5M 0.25 Nozzle.json | 4 +- ...dard @Flashforge AD5M Pro 0.25 Nozzle.json | 4 +- .../0.10mm Standard @FF AD5X 0.25 nozzle.json | 23 - .../0.10mm Standard @FF G4P 0.25 nozzle.json | 27 - ...Standard @Flashforge AD5M 0.25 Nozzle.json | 4 +- ...dard @Flashforge AD5M Pro 0.25 Nozzle.json | 4 +- ...tail @Flashforge Guider 2s 0.4 nozzle.json | 4 +- ...12mm Fine @Flashforge AD5M 0.4 Nozzle.json | 7 +- ... Fine @Flashforge AD5M Pro 0.4 Nozzle.json | 7 +- ....12mm Fine @Flashforge G3U 0.4 Nozzle.json | 9 +- .../0.12mm Standard @FF AD5X 0.25 nozzle.json | 22 - .../0.12mm Standard @FF G4P 0.25 nozzle.json | 26 - ...Standard @Flashforge AD5M 0.25 Nozzle.json | 88 +- ...dard @Flashforge AD5M Pro 0.25 Nozzle.json | 88 +- .../0.14mm Standard @FF AD5X 0.25 nozzle.json | 22 - .../0.14mm Standard @FF G4P 0.25 nozzle.json | 27 - ...Standard @Flashforge AD5M 0.25 Nozzle.json | 4 +- ...dard @Flashforge AD5M Pro 0.25 Nozzle.json | 4 +- ...imal @Flashforge Guider 2s 0.4 nozzle.json | 4 +- .../process/0.16mm Standard @FF AD5X.json | 28 - .../process/0.16mm Standard @FF G4P HF.json | 41 - .../process/0.16mm Standard @FF G4P.json | 33 - .../0.18mm Fine @FF AD5X 0.6 nozzle.json | 23 - ...18mm Fine @Flashforge AD5M 0.6 Nozzle.json | 7 +- ... Fine @Flashforge AD5M Pro 0.6 Nozzle.json | 7 +- ...m Standard @Flashforge G3U 0.6 Nozzle.json | 4 +- .../process/0.20mm Standard @FF AD5X.json | 26 - .../process/0.20mm Standard @FF G4P HF.json | 37 - .../0.20mm Standard @FF G4P PLA600.json | 40 - .../process/0.20mm Standard @FF G4P.json | 29 - ...m Standard @Flashforge AD3 0.4 Nozzle.json | 6 +- ... Standard @Flashforge AD5M 0.4 Nozzle.json | 14 +- ...ndard @Flashforge AD5M Pro 0.4 Nozzle.json | 14 +- ...m Standard @Flashforge G3U 0.4 Nozzle.json | 15 +- ...dard @Flashforge Guider 2s 0.4 nozzle.json | 4 +- ...ng plastic @Flashforge G3U 0.4 Nozzle.json | 40 - .../process/0.24mm Draft @FF AD5X.json | 28 - ...4mm Draft @Flashforge AD5M 0.4 Nozzle.json | 9 +- ...Draft @Flashforge AD5M Pro 0.4 Nozzle.json | 9 +- ...24mm Draft @Flashforge G3U 0.4 Nozzle.json | 7 +- .../0.24mm Fine @FF AD5X 0.8 nozzle.json | 24 - ...24mm Fine @Flashforge AD5M 0.8 Nozzle.json | 4 +- ... Fine @Flashforge AD5M Pro 0.8 Nozzle.json | 4 +- .../process/0.24mm Standard @FF G4P HF.json | 41 - .../process/0.24mm Standard @FF G4P.json | 33 - ...0.25mm Standard @FF G4P 0.6 HF nozzle.json | 72 - .../0.25mm Standard @FF G4P 0.6 nozzle.json | 66 - ...raft @Flashforge Guider 2s 0.4 nozzle.json | 4 +- ....30mm Fast @Flashforge AD3 0.4 Nozzle.json | 6 +- .../0.30mm Standard @FF AD5X 0.6 nozzle.json | 23 - .../0.30mm Standard @FF G4P 0.6 nozzle.json | 61 - ...m Standard @Flashforge AD3 0.6 Nozzle.json | 8 +- ... Standard @Flashforge AD5M 0.6 Nozzle.json | 14 +- ...ndard @Flashforge AD5M Pro 0.6 Nozzle.json | 14 +- ...m Standard @Flashforge G3U 0.6 Nozzle.json | 4 +- ...0.32mm Standard @FF G4P 0.8 HF nozzle.json | 63 - ...0.36mm Standard @FF G4P 0.6 HF nozzle.json | 70 - .../0.36mm Standard @FF G4P 0.6 nozzle.json | 62 - .../0.3mm Standard @FF G4P 0.6 HF nozzle.json | 70 - .../0.40mm Standard @FF AD5X 0.8 nozzle.json | 25 - ...0.40mm Standard @FF G4P 0.8 HF nozzle.json | 62 - ... Standard @Flashforge AD5M 0.8 Nozzle.json | 70 +- ...ndard @Flashforge AD5M Pro 0.8 Nozzle.json | 70 +- ...m Standard @Flashforge G3U 0.8 Nozzle.json | 4 +- .../0.42mm Draft @FF AD5X 0.6 nozzle.json | 23 - ...2mm Draft @Flashforge AD5M 0.6 Nozzle.json | 7 +- ...Draft @Flashforge AD5M Pro 0.6 Nozzle.json | 7 +- ...0.42mm Standard @FF G4P 0.6 HF nozzle.json | 70 - .../0.42mm Standard @FF G4P 0.6 nozzle.json | 62 - ...m Standard @Flashforge G3U 0.6 Nozzle.json | 4 +- ...0.48mm Standard @FF G4P 0.8 HF nozzle.json | 62 - .../0.56mm Draft @FF AD5X 0.8 nozzle.json | 27 - ...6mm Draft @Flashforge AD5M 0.8 Nozzle.json | 4 +- ...Draft @Flashforge AD5M Pro 0.8 Nozzle.json | 4 +- .../process/fdm_process_common.json | 140 +- .../process/fdm_process_flashforge_0.20.json | 2 +- .../process/fdm_process_flashforge_0.30.json | 2 +- .../process/fdm_process_flashforge_0.40.json | 2 +- .../fdm_process_flashforge_common.json | 140 +- 411 files changed, 8893 insertions(+), 14352 deletions(-) delete mode 100644 resources/profiles/Flashforge/Flashforge AD5X_cover.png create mode 100644 resources/profiles/Flashforge/filament/Flashforge ABS @FF AD5M 0.25 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ABS.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge ASA @FF AD5M 0.25 Nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge Generic ABS @FF AD5M 0.25 Nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge Generic ASA @FF AD5M 0.25 Nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge Generic PETG @FF AD5M 0.25 Nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge Generic PLA @FF AD5M 0.25 Nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5M 0.25 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG @FF AD5M 0.25 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PETG.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA @FF AD5M 0.25 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA-SILK @FF AD5M 0.25 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge PLA.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/FlashForge PC @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/FlashForge PPS-CF @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS @FF AD3.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS Basic @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS-CF @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS-CF @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA Basic @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge ASA-CF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HIPS @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PETG @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PA @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PA-CF @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PA12-CF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PA6-CF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PA66-CF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PAHT-CF @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PET @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PET-CF @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PET-CF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG @FF AD3.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic @G3U.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Basic.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Pro.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG Transparent.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG-CF @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA @FF AD3.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Basic @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Buint Ti @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Buint Ti @FF G4P 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Color Change @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Galaxy @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Luminous @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Matte @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Metal @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Pro @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Silk @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA Sparkle @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA-CF @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-CF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PPA-GF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS-CF @FF G4P.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge PPS-CF.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 64D @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Flashforge/Flashforge TPU 95A @FF G4P.json create mode 100644 resources/profiles/Flashforge/filament/FusRock Generic NexPA-CF25.json create mode 100644 resources/profiles/Flashforge/filament/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/FusRock Generic PAHT-CF.json create mode 100644 resources/profiles/Flashforge/filament/FusRock Generic PAHT-GF.json create mode 100644 resources/profiles/Flashforge/filament/FusRock Generic PET-CF @G3U 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/FusRock Generic PET-CF.json rename resources/profiles/Flashforge/filament/{FusRock => }/FusRock Generic PET-GF.json (55%) create mode 100644 resources/profiles/Flashforge/filament/FusRock Generic S-Multi @G3U 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/FusRock Generic S-Multi.json create mode 100644 resources/profiles/Flashforge/filament/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/FusRock Generic S-PAHT.json delete mode 100644 resources/profiles/Flashforge/filament/FusRock/FusRock Generic NexPA-CF25.json delete mode 100644 resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-CF.json delete mode 100644 resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-GF.json delete mode 100644 resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-CF @G3U 0.6 Nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-CF.json delete mode 100644 resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-Multi @G3U 0.6 Nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-Multi.json delete mode 100644 resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-PAHT.json delete mode 100644 resources/profiles/Flashforge/filament/FusRock/FusRock PAHT @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/FusRock/FusRock PAHT @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/FusRock/FusRock PAHT-CF @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/FusRock/FusRock PET @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/FusRock/FusRock PET-CF @FF G4P 0.6 nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Polymaker Generic CoPA.json create mode 100644 resources/profiles/Flashforge/filament/Polymaker Generic S1.json delete mode 100644 resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/filament/Polymaker/Polymaker Generic CoPA.json delete mode 100644 resources/profiles/Flashforge/filament/Polymaker/Polymaker Generic S1.json delete mode 100644 resources/profiles/Flashforge/flashforge_ad5x_buildplate_texture.png delete mode 100644 resources/profiles/Flashforge/flashforge_g4pro_buildplate_model.stl delete mode 100644 resources/profiles/Flashforge/flashforge_g4pro_buildplate_texture.png delete mode 100644 resources/profiles/Flashforge/machine/FlashForge AD5X 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/machine/Flashforge AD5X 0.4 nozzle.json delete mode 100644 resources/profiles/Flashforge/machine/Flashforge AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/machine/Flashforge AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/machine/Flashforge AD5X.json delete mode 100644 resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 nozzle.json delete mode 100644 resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/machine/Flashforge Guider4 Pro.json delete mode 100644 resources/profiles/Flashforge/process/0.10mm Standard @FF AD5X 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.10mm Standard @FF G4P 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.12mm Standard @FF AD5X 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.12mm Standard @FF G4P 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.14mm Standard @FF AD5X 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.14mm Standard @FF G4P 0.25 nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.16mm Standard @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/process/0.16mm Standard @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/process/0.16mm Standard @FF G4P.json delete mode 100644 resources/profiles/Flashforge/process/0.18mm Fine @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.20mm Standard @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/process/0.20mm Standard @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/process/0.20mm Standard @FF G4P PLA600.json delete mode 100644 resources/profiles/Flashforge/process/0.20mm Standard @FF G4P.json delete mode 100644 resources/profiles/Flashforge/process/0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.24mm Draft @FF AD5X.json delete mode 100644 resources/profiles/Flashforge/process/0.24mm Fine @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.24mm Standard @FF G4P HF.json delete mode 100644 resources/profiles/Flashforge/process/0.24mm Standard @FF G4P.json delete mode 100644 resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.30mm Standard @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.30mm Standard @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.32mm Standard @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.3mm Standard @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.40mm Standard @FF AD5X 0.8 nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.40mm Standard @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.42mm Draft @FF AD5X 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.48mm Standard @FF G4P 0.8 HF nozzle.json delete mode 100644 resources/profiles/Flashforge/process/0.56mm Draft @FF AD5X 0.8 nozzle.json diff --git a/resources/profiles/Flashforge.json b/resources/profiles/Flashforge.json index af094f8661..b993009876 100644 --- a/resources/profiles/Flashforge.json +++ b/resources/profiles/Flashforge.json @@ -1,1447 +1,523 @@ { - "name": "Flashforge", - "url": "", - "version": "02.03.00.00", - "force_update": "0", - "description": "Flashforge configurations", - "machine_model_list": [ - { - "name": "Flashforge Adventurer 5M", - "sub_path": "machine/Flashforge Adventurer 5M.json" - }, - { - "name": "Flashforge Adventurer 5M Pro", - "sub_path": "machine/Flashforge Adventurer 5M Pro.json" - }, - { - "name": "Flashforge AD5X", - "sub_path": "machine/Flashforge AD5X.json" - }, - { - "name": "Flashforge Adventurer 3 Series", - "sub_path": "machine/Flashforge Adventurer 3 Series.json" - }, - { - "name": "Flashforge Guider 3 Ultra", - "sub_path": "machine/Flashforge Guider 3 Ultra.json" - }, - { - "name": "Flashforge Guider 2s", - "sub_path": "machine/Flashforge Guider 2s.json" - } - ], - "process_list": [ - { - "name": "fdm_process_common", - "sub_path": "process/fdm_process_common.json" - }, - { - "name": "fdm_process_flashforge_common", - "sub_path": "process/fdm_process_flashforge_common.json" - }, - { - "name": "fdm_process_flashforge_0.20", - "sub_path": "process/fdm_process_flashforge_0.20.json" - }, - { - "name": "fdm_process_flashforge_0.30", - "sub_path": "process/fdm_process_flashforge_0.30.json" - }, - { - "name": "fdm_process_flashforge_0.40", - "sub_path": "process/fdm_process_flashforge_0.40.json" - }, - { - "name": "0.20mm Standard @Flashforge AD5M 0.4 Nozzle", - "sub_path": "process/0.20mm Standard @Flashforge AD5M 0.4 Nozzle.json" - }, - { - "name": "0.30mm Standard @Flashforge AD5M 0.6 Nozzle", - "sub_path": "process/0.30mm Standard @Flashforge AD5M 0.6 Nozzle.json" - }, - { - "name": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", - "sub_path": "process/0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle.json" - }, - { - "name": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", - "sub_path": "process/0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle.json" - }, - { - "name": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", - "sub_path": "process/0.12mm Standard @Flashforge AD5M 0.25 Nozzle.json" - }, - { - "name": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "sub_path": "process/0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" - }, - { - "name": "0.40mm Standard @Flashforge AD5M 0.8 Nozzle", - "sub_path": "process/0.40mm Standard @Flashforge AD5M 0.8 Nozzle.json" - }, - { - "name": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", - "sub_path": "process/0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle.json" - }, - { - "name": "0.10mm Standard @Flashforge AD5M 0.25 Nozzle", - "sub_path": "process/0.10mm Standard @Flashforge AD5M 0.25 Nozzle.json" - }, - { - "name": "0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "sub_path": "process/0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" - }, - { - "name": "0.06mm Standard @Flashforge AD5M 0.25 Nozzle", - "sub_path": "process/0.06mm Standard @Flashforge AD5M 0.25 Nozzle.json" - }, - { - "name": "0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "sub_path": "process/0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" - }, - { - "name": "0.08mm Standard @Flashforge AD5M 0.25 Nozzle", - "sub_path": "process/0.08mm Standard @Flashforge AD5M 0.25 Nozzle.json" - }, - { - "name": "0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "sub_path": "process/0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" - }, - { - "name": "0.12mm Fine @Flashforge AD5M 0.4 Nozzle", - "sub_path": "process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json" - }, - { - "name": "0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle", - "sub_path": "process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json" - }, - { - "name": "0.14mm Standard @Flashforge AD5M 0.25 Nozzle", - "sub_path": "process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json" - }, - { - "name": "0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle", - "sub_path": "process/0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" - }, - { - "name": "0.18mm Fine @Flashforge AD5M 0.6 Nozzle", - "sub_path": "process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json" - }, - { - "name": "0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle", - "sub_path": "process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json" - }, - { - "name": "0.24mm Draft @Flashforge AD5M 0.4 Nozzle", - "sub_path": "process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json" - }, - { - "name": "0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle", - "sub_path": "process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json" - }, - { - "name": "0.24mm Fine @Flashforge AD5M 0.8 Nozzle", - "sub_path": "process/0.24mm Fine @Flashforge AD5M 0.8 Nozzle.json" - }, - { - "name": "0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle", - "sub_path": "process/0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle.json" - }, - { - "name": "0.42mm Draft @Flashforge AD5M 0.6 Nozzle", - "sub_path": "process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json" - }, - { - "name": "0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle", - "sub_path": "process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json" - }, - { - "name": "0.56mm Draft @Flashforge AD5M 0.8 Nozzle", - "sub_path": "process/0.56mm Draft @Flashforge AD5M 0.8 Nozzle.json" - }, - { - "name": "0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle", - "sub_path": "process/0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle.json" - }, - { - "name": "0.20mm Standard @Flashforge AD3 0.4 Nozzle", - "sub_path": "process/0.20mm Standard @Flashforge AD3 0.4 Nozzle.json" - }, - { - "name": "0.30mm Fast @Flashforge AD3 0.4 Nozzle", - "sub_path": "process/0.30mm Fast @Flashforge AD3 0.4 Nozzle.json" - }, - { - "name": "0.30mm Standard @Flashforge AD3 0.6 Nozzle", - "sub_path": "process/0.30mm Standard @Flashforge AD3 0.6 Nozzle.json" - }, - { - "name": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", - "sub_path": "process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json" - }, - { - "name": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", - "sub_path": "process/0.30mm Standard @Flashforge G3U 0.6 Nozzle.json" - }, - { - "name": "0.40mm Standard @Flashforge G3U 0.8 Nozzle", - "sub_path": "process/0.40mm Standard @Flashforge G3U 0.8 Nozzle.json" - }, - { - "name": "0.12mm Fine @Flashforge G3U 0.4 Nozzle", - "sub_path": "process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json" - }, - { - "name": "0.18mm Standard @Flashforge G3U 0.6 Nozzle", - "sub_path": "process/0.18mm Standard @Flashforge G3U 0.6 Nozzle.json" - }, - { - "name": "0.24mm Draft @Flashforge G3U 0.4 Nozzle", - "sub_path": "process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json" - }, - { - "name": "0.42mm Standard @Flashforge G3U 0.6 Nozzle", - "sub_path": "process/0.42mm Standard @Flashforge G3U 0.6 Nozzle.json" - }, - { - "name": "0.30mm Draft @Flashforge Guider 2s 0.4 nozzle", - "sub_path": "process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Flashforge Guider 2s 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle", - "sub_path": "process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json" - }, - { - "name": "0.12mm Detail @Flashforge Guider 2s 0.4 nozzle", - "sub_path": "process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle", - "sub_path": "process/0.20mm Standard for engineering plastic @Flashforge G3U 0.4 Nozzle.json" - }, - { - "name": "0.16mm Standard @FF AD5X", - "sub_path": "process/0.16mm Standard @FF AD5X.json" - }, - { - "name": "0.20mm Standard @FF AD5X", - "sub_path": "process/0.20mm Standard @FF AD5X.json" - }, - { - "name": "0.24mm Draft @FF AD5X", - "sub_path": "process/0.24mm Draft @FF AD5X.json" - }, - { - "name": "0.10mm Standard @FF AD5X 0.25 nozzle", - "sub_path": "process/0.10mm Standard @FF AD5X 0.25 nozzle.json" - }, - { - "name": "0.12mm Standard @FF AD5X 0.25 nozzle", - "sub_path": "process/0.12mm Standard @FF AD5X 0.25 nozzle.json" - }, - { - "name": "0.14mm Standard @FF AD5X 0.25 nozzle", - "sub_path": "process/0.14mm Standard @FF AD5X 0.25 nozzle.json" - }, - { - "name": "0.18mm Fine @FF AD5X 0.6 nozzle", - "sub_path": "process/0.18mm Fine @FF AD5X 0.6 nozzle.json" - }, - { - "name": "0.30mm Standard @FF AD5X 0.6 nozzle", - "sub_path": "process/0.30mm Standard @FF AD5X 0.6 nozzle.json" - }, - { - "name": "0.42mm Draft @FF AD5X 0.6 nozzle", - "sub_path": "process/0.42mm Draft @FF AD5X 0.6 nozzle.json" - }, - { - "name": "0.24mm Fine @FF AD5X 0.8 nozzle", - "sub_path": "process/0.24mm Fine @FF AD5X 0.8 nozzle.json" - }, - { - "name": "0.40mm Standard @FF AD5X 0.8 nozzle", - "sub_path": "process/0.40mm Standard @FF AD5X 0.8 nozzle.json" - }, - { - "name": "0.56mm Draft @FF AD5X 0.8 nozzle", - "sub_path": "process/0.56mm Draft @FF AD5X 0.8 nozzle.json" - } - ], - "filament_list": [ - { - "name": "fdm_filament_common", - "sub_path": "filament/fdm_filament_common.json" - }, - { - "name": "fdm_filament_abs", - "sub_path": "filament/fdm_filament_abs.json" - }, - { - "name": "fdm_filament_asa", - "sub_path": "filament/fdm_filament_asa.json" - }, - { - "name": "fdm_filament_pet", - "sub_path": "filament/fdm_filament_pet.json" - }, - { - "name": "fdm_filament_pla", - "sub_path": "filament/fdm_filament_pla.json" - }, - { - "name": "fdm_filament_tpu", - "sub_path": "filament/fdm_filament_tpu.json" - }, - { - "name": "Flashforge ABS", - "sub_path": "filament/Flashforge/Flashforge ABS @FF AD3.json" - }, - { - "name": "Flashforge Generic ABS", - "sub_path": "filament/Flashforge Generic ABS.json" - }, - { - "name": "Flashforge Generic ASA", - "sub_path": "filament/Flashforge Generic ASA.json" - }, - { - "name": "Flashforge Generic PETG", - "sub_path": "filament/Flashforge Generic PETG.json" - }, - { - "name": "Flashforge Generic PETG-CF10", - "sub_path": "filament/Flashforge Generic PETG-CF10.json" - }, - { - "name": "Flashforge PETG", - "sub_path": "filament/Flashforge/Flashforge PETG @FF AD3.json" - }, - { - "name": "Flashforge Generic HS PLA", - "sub_path": "filament/Flashforge Generic HS PLA.json" - }, - { - "name": "Flashforge Generic PLA", - "sub_path": "filament/Flashforge Generic PLA.json" - }, - { - "name": "Flashforge Generic PLA-CF10", - "sub_path": "filament/Flashforge Generic PLA-CF10.json" - }, - { - "name": "Flashforge Generic PLA-Silk", - "sub_path": "filament/Flashforge Generic PLA-Silk.json" - }, - { - "name": "Flashforge PLA", - "sub_path": "filament/Flashforge/Flashforge PLA @FF AD3.json" - }, - { - "name": "Flashforge Generic TPU", - "sub_path": "filament/Flashforge Generic TPU.json" - }, - { - "name": "Flashforge ABS Basic @FF AD5X", - "sub_path": "filament/Flashforge/Flashforge ABS Basic @FF AD5X.json" - }, - { - "name": "Flashforge ABS Basic @FF AD5X 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge ABS Basic @FF AD5X 0.8 nozzle", - "sub_path": "filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge ABS Basic @FF G4P", - "sub_path": "filament/Flashforge/Flashforge ABS Basic @FF G4P.json" - }, - { - "name": "Flashforge ABS-CF @FF G4P", - "sub_path": "filament/Flashforge/Flashforge ABS-CF @FF G4P.json" - }, - { - "name": "Flashforge ASA Basic @FF AD5X", - "sub_path": "filament/Flashforge/Flashforge ASA Basic @FF AD5X.json" - }, - { - "name": "Flashforge ASA Basic @FF AD5X 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge ASA Basic @FF AD5X 0.8 nozzle", - "sub_path": "filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge ASA Basic @FF G4P", - "sub_path": "filament/Flashforge/Flashforge ASA Basic @FF G4P.json" - }, - { - "name": "Flashforge Generic ABS @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge Generic ABS @FF AD5M 0.25 Nozzle.json" - }, - { - "name": "Flashforge Generic ABS @G3U", - "sub_path": "filament/Flashforge Generic ABS @G3U.json" - }, - { - "name": "Flashforge Generic ABS @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic ABS @G3U 0.6 Nozzle.json" - }, - { - "name": "Flashforge Generic ASA @G3U", - "sub_path": "filament/Flashforge Generic ASA @G3U.json" - }, - { - "name": "Flashforge Generic HIPS", - "sub_path": "filament/Flashforge Generic HIPS.json" - }, - { - "name": "Flashforge Generic HIPS @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic HIPS @G3U 0.6 Nozzle.json" - }, - { - "name": "Flashforge Generic ASA @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge Generic ASA @FF AD5M 0.25 Nozzle.json" - }, - { - "name": "Flashforge Generic ASA @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic ASA @G3U 0.6 Nozzle.json" - }, - { - "name": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge Generic PETG @FF AD5M 0.25 Nozzle.json" - }, - { - "name": "Flashforge Generic PETG @G3U", - "sub_path": "filament/Flashforge Generic PETG @G3U.json" - }, - { - "name": "Flashforge Generic PETG @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic PETG @G3U 0.6 Nozzle.json" - }, - { - "name": "Flashforge Generic PETG @G3U 0.8 Nozzle", - "sub_path": "filament/Flashforge Generic PETG @G3U 0.8 Nozzle.json" - }, - { - "name": "Flashforge Generic PETG-CF @G3U", - "sub_path": "filament/Flashforge Generic PETG-CF @G3U.json" - }, - { - "name": "Flashforge Generic PETG-CF @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic PETG-CF @G3U 0.6 Nozzle.json" - }, - { - "name": "Flashforge Generic PETG-CF @G3U 0.8 Nozzle", - "sub_path": "filament/Flashforge Generic PETG-CF @G3U 0.8 Nozzle.json" - }, - { - "name": "Flashforge HS PETG @FF AD5X", - "sub_path": "filament/Flashforge/Flashforge HS PETG @FF AD5X.json" - }, - { - "name": "Flashforge HS PETG @FF AD5X 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge HS PETG @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge HS PETG @FF AD5X 0.8 nozzle", - "sub_path": "filament/Flashforge/Flashforge HS PETG @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge HS PETG @FF G4P", - "sub_path": "filament/Flashforge/Flashforge HS PETG @FF G4P.json" - }, - { - "name": "Flashforge PETG Basic", - "sub_path": "filament/Flashforge/Flashforge PETG Basic.json" - }, - { - "name": "Flashforge PETG Pro", - "sub_path": "filament/Flashforge/Flashforge PETG Pro.json" - }, - { - "name": "Flashforge PETG Pro @FF AD5X", - "sub_path": "filament/Flashforge/Flashforge PETG Pro @FF AD5X.json" - }, - { - "name": "Flashforge PETG Pro @FF AD5X 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PETG Pro @FF AD5X 0.8 nozzle", - "sub_path": "filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PETG Pro @FF G4P", - "sub_path": "filament/Flashforge/Flashforge PETG Pro @FF G4P.json" - }, - { - "name": "Flashforge PETG Transparent", - "sub_path": "filament/Flashforge/Flashforge PETG Transparent.json" - }, - { - "name": "Flashforge PETG Transparent @FF AD5X", - "sub_path": "filament/Flashforge/Flashforge PETG Transparent @FF AD5X.json" - }, - { - "name": "Flashforge PETG Transparent @FF AD5X 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PETG Transparent @FF AD5X 0.8 nozzle", - "sub_path": "filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PETG Transparent @FF G4P", - "sub_path": "filament/Flashforge/Flashforge PETG Transparent @FF G4P.json" - }, - { - "name": "Flashforge PETG-CF @FF G4P", - "sub_path": "filament/Flashforge/Flashforge PETG-CF @FF G4P.json" - }, - { - "name": "FusRock Generic NexPA-CF25", - "sub_path": "filament/FusRock/FusRock Generic NexPA-CF25.json" - }, - { - "name": "FusRock Generic PAHT-CF", - "sub_path": "filament/FusRock/FusRock Generic PAHT-CF.json" - }, - { - "name": "FusRock Generic PAHT-CF @G3U 0.6 Nozzle", - "sub_path": "filament/FusRock/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json" - }, - { - "name": "FusRock Generic PET-CF", - "sub_path": "filament/FusRock/FusRock Generic PET-CF.json" - }, - { - "name": "FusRock Generic PET-CF @G3U 0.6 Nozzle", - "sub_path": "filament/FusRock/FusRock Generic PET-CF @G3U 0.6 Nozzle.json" - }, - { - "name": "FusRock Generic S-Multi", - "sub_path": "filament/FusRock/FusRock Generic S-Multi.json" - }, - { - "name": "FusRock Generic S-Multi @G3U 0.6 Nozzle", - "sub_path": "filament/FusRock/FusRock Generic S-Multi @G3U 0.6 Nozzle.json" - }, - { - "name": "FusRock Generic S-PAHT", - "sub_path": "filament/FusRock/FusRock Generic S-PAHT.json" - }, - { - "name": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", - "sub_path": "filament/FusRock/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json" - }, - { - "name": "Flashforge PETG-CF @FF AD5X", - "sub_path": "filament/Flashforge/Flashforge PETG-CF @FF AD5X.json" - }, - { - "name": "Flashforge PETG-CF @FF AD5X 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PETG-CF @FF AD5X 0.8 nozzle", - "sub_path": "filament/Flashforge/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle.json" - }, - { - "name": "Flashforge HIPS @FF G4P", - "sub_path": "filament/Flashforge/Flashforge HIPS @FF G4P.json" - }, - { - "name": "Flashforge HS PLA @FF G4P", - "sub_path": "filament/Flashforge/Flashforge HS PLA @FF G4P.json" - }, - { - "name": "Flashforge PLA Basic @FF G4P", - "sub_path": "filament/Flashforge/Flashforge PLA Basic @FF G4P.json" - }, - { - "name": "Flashforge PLA Color Change @FF G4P", - "sub_path": "filament/Flashforge/Flashforge PLA Color Change @FF G4P.json" - }, - { - "name": "Flashforge PLA Galaxy @FF G4P", - "sub_path": "filament/Flashforge/Flashforge PLA Galaxy @FF G4P.json" - }, - { - "name": "Flashforge PLA Luminous @FF G4P", - "sub_path": "filament/Flashforge/Flashforge PLA Luminous @FF G4P.json" - }, - { - "name": "Flashforge PLA Matte @FF G4P", - "sub_path": "filament/Flashforge/Flashforge PLA Matte @FF G4P.json" - }, - { - "name": "Flashforge PLA Metal @FF G4P", - "sub_path": "filament/Flashforge/Flashforge PLA Metal @FF G4P.json" - }, - { - "name": "Flashforge PLA Pro @FF G4P", - "sub_path": "filament/Flashforge/Flashforge PLA Pro @FF G4P.json" - }, - { - "name": "Flashforge PLA Silk @FF G4P", - "sub_path": "filament/Flashforge/Flashforge PLA Silk @FF G4P.json" - }, - { - "name": "Flashforge PLA Sparkle @FF G4P", - "sub_path": "filament/Flashforge/Flashforge PLA Sparkle @FF G4P.json" - }, - { - "name": "Flashforge PLA-CF @FF G4P", - "sub_path": "filament/Flashforge/Flashforge PLA-CF @FF G4P.json" - }, - { - "name": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge Generic PLA @FF AD5M 0.25 Nozzle.json" - }, - { - "name": "Flashforge Generic PLA @G3U", - "sub_path": "filament/Flashforge Generic PLA @G3U.json" - }, - { - "name": "Flashforge Generic PLA @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic PLA @G3U 0.6 Nozzle.json" - }, - { - "name": "Flashforge Generic PLA @G3U 0.8 Nozzle", - "sub_path": "filament/Flashforge Generic PLA @G3U 0.8 Nozzle.json" - }, - { - "name": "Flashforge Generic PLA-CF @G3U", - "sub_path": "filament/Flashforge Generic PLA-CF @G3U.json" - }, - { - "name": "Flashforge Generic PLA-CF @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic PLA-CF @G3U 0.6 Nozzle.json" - }, - { - "name": "Flashforge Generic PLA-CF @G3U 0.8 Nozzle", - "sub_path": "filament/Flashforge Generic PLA-CF @G3U 0.8 Nozzle.json" - }, - { - "name": "Flashforge Generic PVA", - "sub_path": "filament/Flashforge Generic PVA.json" - }, - { - "name": "Flashforge HS PLA @FF AD5X", - "sub_path": "filament/Flashforge/Flashforge HS PLA @FF AD5X.json" - }, - { - "name": "Flashforge HS PLA @FF AD5X 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge HS PLA @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge HS PLA @FF AD5X 0.8 nozzle", - "sub_path": "filament/Flashforge/Flashforge HS PLA @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PLA Color Change @FF AD5X", - "sub_path": "filament/Flashforge/Flashforge PLA Color Change @FF AD5X.json" - }, - { - "name": "Flashforge PLA Color Change @FF AD5X 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Color Change @FF AD5X 0.8 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PLA Galaxy @FF AD5X", - "sub_path": "filament/Flashforge/Flashforge PLA Galaxy @FF AD5X.json" - }, - { - "name": "Flashforge PLA Galaxy @FF AD5X 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Galaxy @FF AD5X 0.8 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PLA Luminous @FF AD5X", - "sub_path": "filament/Flashforge/Flashforge PLA Luminous @FF AD5X.json" - }, - { - "name": "Flashforge PLA Luminous @FF AD5X 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Luminous @FF AD5X 0.8 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PLA Matte @FF AD5X", - "sub_path": "filament/Flashforge/Flashforge PLA Matte @FF AD5X.json" - }, - { - "name": "Flashforge PLA Matte @FF AD5X 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Matte @FF AD5X 0.8 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PLA Metal @FF AD5X", - "sub_path": "filament/Flashforge/Flashforge PLA Metal @FF AD5X.json" - }, - { - "name": "Flashforge PLA Metal @FF AD5X 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Metal @FF AD5X 0.8 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PLA Pro @FF AD5X", - "sub_path": "filament/Flashforge/Flashforge PLA Pro @FF AD5X.json" - }, - { - "name": "Flashforge PLA Pro @FF AD5X 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Pro @FF AD5X 0.8 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PLA Sparkle @FF AD5X", - "sub_path": "filament/Flashforge/Flashforge PLA Sparkle @FF AD5X.json" - }, - { - "name": "Flashforge PLA Sparkle @FF AD5X 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Sparkle @FF AD5X 0.8 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Polymaker Generic CoPA", - "sub_path": "filament/Polymaker/Polymaker Generic CoPA.json" - }, - { - "name": "Polymaker Generic S1", - "sub_path": "filament/Polymaker/Polymaker Generic S1.json" - }, - { - "name": "Flashforge PA-CF @FF G4P", - "sub_path": "filament/Flashforge/Flashforge PA-CF @FF G4P.json" - }, - { - "name": "Flashforge PAHT-CF @FF G4P", - "sub_path": "filament/Flashforge/Flashforge PAHT-CF @FF G4P.json" - }, - { - "name": "Flashforge PLA-CF @FF AD5X", - "sub_path": "filament/Flashforge/Flashforge PLA-CF @FF AD5X.json" - }, - { - "name": "Flashforge PLA-CF @FF AD5X 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA-CF @FF AD5X 0.8 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PPS @FF G4P", - "sub_path": "filament/Flashforge/Flashforge PPS @FF G4P.json" - }, - { - "name": "Flashforge PPS-CF @FF G4P", - "sub_path": "filament/Flashforge/Flashforge PPS-CF @FF G4P.json" - }, - { - "name": "Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle.json" - }, - { - "name": "Flashforge PLA Silk @FF AD5X", - "sub_path": "filament/Flashforge/Flashforge PLA Silk @FF AD5X.json" - }, - { - "name": "Flashforge PLA Silk @FF AD5X 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Silk @FF AD5X 0.8 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PA @FF G4P", - "sub_path": "filament/Flashforge/Flashforge PA @FF G4P.json" - }, - { - "name": "Flashforge PET @FF G4P", - "sub_path": "filament/Flashforge/Flashforge PET @FF G4P.json" - }, - { - "name": "Flashforge PET-CF @FF G4P", - "sub_path": "filament/Flashforge/Flashforge PET-CF @FF G4P.json" - }, - { - "name": "Flashforge TPU 64D @FF AD5X", - "sub_path": "filament/Flashforge/Flashforge TPU 64D @FF AD5X.json" - }, - { - "name": "Flashforge TPU 64D @FF AD5X 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge TPU 64D @FF AD5X 0.8 nozzle", - "sub_path": "filament/Flashforge/Flashforge TPU 64D @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge TPU 95A @FF AD5X", - "sub_path": "filament/Flashforge/Flashforge TPU 95A @FF AD5X.json" - }, - { - "name": "Flashforge TPU 95A @FF AD5X 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge TPU 95A @FF AD5X 0.8 nozzle", - "sub_path": "filament/Flashforge/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge TPU 95A @FF G4P", - "sub_path": "filament/Flashforge/Flashforge TPU 95A @FF G4P.json" - }, - { - "name": "Flashforge ABS Basic @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge ABS Basic @FF G4P HF", - "sub_path": "filament/Flashforge/Flashforge ABS Basic @FF G4P HF.json" - }, - { - "name": "Flashforge ASA Basic @FF G4P HF", - "sub_path": "filament/Flashforge/Flashforge ASA Basic @FF G4P HF.json" - }, - { - "name": "Flashforge HIPS @FF G4P HF", - "sub_path": "filament/Flashforge/Flashforge HIPS @FF G4P HF.json" - }, - { - "name": "Flashforge HS PETG @FF G4P HF", - "sub_path": "filament/Flashforge/Flashforge HS PETG @FF G4P HF.json" - }, - { - "name": "Flashforge HS PLA @FF G4P HF", - "sub_path": "filament/Flashforge/Flashforge HS PLA @FF G4P HF.json" - }, - { - "name": "Flashforge HS PLA Burnt Ti @FF G4P HF", - "sub_path": "filament/Flashforge/Flashforge HS PLA Burnt Ti @FF G4P HF.json" - }, - { - "name": "Flashforge PA @FF G4P HF", - "sub_path": "filament/Flashforge/Flashforge PA @FF G4P HF.json" - }, - { - "name": "Flashforge PETG Pro @FF G4P HF", - "sub_path": "filament/Flashforge/Flashforge PETG Pro @FF G4P HF.json" - }, - { - "name": "Flashforge PETG Transparent @FF G4P HF", - "sub_path": "filament/Flashforge/Flashforge PETG Transparent @FF G4P HF.json" - }, - { - "name": "Flashforge PLA Basic @FF G4P HF", - "sub_path": "filament/Flashforge/Flashforge PLA Basic @FF G4P HF.json" - }, - { - "name": "Flashforge PLA Color Change @FF G4P HF", - "sub_path": "filament/Flashforge/Flashforge PLA Color Change @FF G4P HF.json" - }, - { - "name": "Flashforge PLA Galaxy @FF G4P HF", - "sub_path": "filament/Flashforge/Flashforge PLA Galaxy @FF G4P HF.json" - }, - { - "name": "Flashforge PLA Luminous @FF G4P HF", - "sub_path": "filament/Flashforge/Flashforge PLA Luminous @FF G4P HF.json" - }, - { - "name": "Flashforge PLA Matte @FF G4P HF", - "sub_path": "filament/Flashforge/Flashforge PLA Matte @FF G4P HF.json" - }, - { - "name": "Flashforge PLA Metal @FF G4P HF", - "sub_path": "filament/Flashforge/Flashforge PLA Metal @FF G4P HF.json" - }, - { - "name": "Flashforge PLA Pro @FF G4P HF", - "sub_path": "filament/Flashforge/Flashforge PLA Pro @FF G4P HF.json" - }, - { - "name": "Flashforge PLA Silk @FF G4P HF", - "sub_path": "filament/Flashforge/Flashforge PLA Silk @FF G4P HF.json" - }, - { - "name": "Flashforge PLA Sparkle @FF G4P HF", - "sub_path": "filament/Flashforge/Flashforge PLA Sparkle @FF G4P HF.json" - }, - { - "name": "Flashforge ABS Basic @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge ABS Basic @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge ABS Basic @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge ABS Basic @FF G4P 0.8 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge ABS Basic @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "Flashforge ABS-CF @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge ABS-CF @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge ASA Basic @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge ASA Basic @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge ASA Basic @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge ASA Basic @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge ASA Basic @FF G4P 0.8 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge ASA Basic @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "Flashforge HIPS @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge HIPS @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge HIPS @FF G4P 0.8 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge HIPS @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "Flashforge ASA Basic @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge HS PETG @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge HS PETG @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PETG Pro @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PETG Transparent @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PETG Basic @G3U", - "sub_path": "filament/Flashforge/Flashforge PETG Basic @G3U.json" - }, - { - "name": "Flashforge HS PETG @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge HS PETG @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge HS PETG @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge HS PETG @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge HS PETG @FF G4P 0.8 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge HS PETG @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "Flashforge PETG Pro @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge PETG Pro @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge PETG Pro @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PETG Pro @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge PETG Pro @FF G4P 0.8 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge PETG Pro @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "Flashforge PETG Transparent @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge PETG Transparent @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge PETG Transparent @FF G4P 0.8 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "Flashforge TPU 95A @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge TPU 95A @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge PETG-CF @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PETG-CF @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge ASA-CF", - "sub_path": "filament/Flashforge/Flashforge ASA-CF.json" - }, - { - "name": "Flashforge PPA-CF", - "sub_path": "filament/Flashforge/Flashforge PPA-CF.json" - }, - { - "name": "Flashforge PPA-GF", - "sub_path": "filament/Flashforge/Flashforge PPA-GF.json" - }, - { - "name": "Flashforge PPS-CF", - "sub_path": "filament/Flashforge/Flashforge PPS-CF.json" - }, - { - "name": "FusRock Generic PAHT-GF", - "sub_path": "filament/FusRock/FusRock Generic PAHT-GF.json" - }, - { - "name": "FusRock PAHT-CF @FF G4P 0.6 nozzle", - "sub_path": "filament/FusRock/FusRock PAHT-CF @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge PA12-CF", - "sub_path": "filament/Flashforge/Flashforge PA12-CF.json" - }, - { - "name": "Flashforge PA6-CF", - "sub_path": "filament/Flashforge/Flashforge PA6-CF.json" - }, - { - "name": "Flashforge PA66-CF", - "sub_path": "filament/Flashforge/Flashforge PA66-CF.json" - }, - { - "name": "Flashforge PET-CF", - "sub_path": "filament/Flashforge/Flashforge PET-CF.json" - }, - { - "name": "FusRock Generic PET-GF", - "sub_path": "filament/FusRock/FusRock Generic PET-GF.json" - }, - { - "name": "FlashForge PPS @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/FlashForge PPS @FF G4P 0.6 nozzle.json" - }, - { - "name": "FlashForge PPS @FF G4P 0.8 HF nozzle", - "sub_path": "filament/Flashforge/FlashForge PPS @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "FlashForge PPS-CF @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/FlashForge PPS-CF @FF G4P 0.6 nozzle.json" - }, - { - "name": "FusRock PET @FF G4P 0.6 HF nozzle", - "sub_path": "filament/FusRock/FusRock PET @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "FusRock PET @FF G4P 0.6 nozzle", - "sub_path": "filament/FusRock/FusRock PET @FF G4P 0.6 nozzle.json" - }, - { - "name": "FusRock PET @FF G4P 0.8 HF nozzle", - "sub_path": "filament/FusRock/FusRock PET @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "FusRock PET-CF @FF G4P 0.6 nozzle", - "sub_path": "filament/FusRock/FusRock PET-CF @FF G4P 0.6 nozzle.json" - }, - { - "name": "FlashForge PC @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge/FlashForge PC @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "FlashForge PC @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/FlashForge PC @FF G4P 0.6 nozzle.json" - }, - { - "name": "FlashForge PC @FF G4P 0.8 HF nozzle", - "sub_path": "filament/Flashforge/FlashForge PC @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "FusRock PAHT @FF G4P 0.6 nozzle", - "sub_path": "filament/FusRock/FusRock PAHT @FF G4P 0.6 nozzle.json" - }, - { - "name": "FusRock PAHT @FF G4P 0.8 HF nozzle", - "sub_path": "filament/FusRock/FusRock PAHT @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "Polymaker CoPA @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Polymaker/Polymaker CoPA @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Polymaker CoPA @FF G4P 0.6 nozzle", - "sub_path": "filament/Polymaker/Polymaker CoPA @FF G4P 0.6 nozzle.json" - }, - { - "name": "Polymaker CoPA @FF G4P 0.8 HF nozzle", - "sub_path": "filament/Polymaker/Polymaker CoPA @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "Flashforge HS PLA @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge HS PLA @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Color Change @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Galaxy @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Luminous @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Matte @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Metal @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Pro @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Silk @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Sparkle @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge HS PLA @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge HS PLA @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge HS PLA @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge HS PLA @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge HS PLA @FF G4P 0.8 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge HS PLA @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json" - }, - { - "name": "Flashforge PA @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge PA @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge PLA Basic @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Basic @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge PLA Basic @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Basic @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Basic @FF G4P 0.8 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Basic @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "Flashforge PLA Buint Ti @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Buint Ti @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Buint Ti @FF G4P 0.8 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Buint Ti @FF G4P 0.8 nozzle.json" - }, - { - "name": "Flashforge PLA Color Change @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge PLA Galaxy @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "Flashforge PLA Luminous @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge PLA Matte @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Matte @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge PLA Matte @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Matte @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Matte @FF G4P 0.8 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Matte @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "Flashforge PLA Metal @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Metal @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge PLA Metal @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Metal @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Metal @FF G4P 0.8 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Metal @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "Flashforge PLA Pro @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Pro @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge PLA Pro @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Pro @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Pro @FF G4P 0.8 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Pro @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "Flashforge PLA Silk @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Silk @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge PLA Silk @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Silk @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Silk @FF G4P 0.8 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Silk @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge TPU 95A @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge TPU 95A @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge TPU 95A @FF G4P 0.8 HF nozzle", - "sub_path": "filament/Flashforge/Flashforge TPU 95A @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "Flashforge PLA-CF @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA-CF @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge ABS Basic @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge ABS Basic @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge ASA Basic @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge ASA Basic @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge HS PETG @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge HS PETG @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge HS PLA @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge HS PLA @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge PETG Pro @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PETG Pro @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge PETG Transparent @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Basic @FF AD5X", - "sub_path": "filament/Flashforge/Flashforge PLA Basic @FF AD5X.json" - }, - { - "name": "Flashforge PLA Basic @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Basic @FF AD5X 0.6 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge PLA Basic @FF AD5X 0.8 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json" - }, - { - "name": "Flashforge PLA Basic @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Basic @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Color Change @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Galaxy @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Luminous @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Matte @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Matte @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Metal @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Metal @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Pro @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Pro @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Silk @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Silk @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Sparkle @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json" - } - ], - "machine_list": [ - { - "name": "fdm_machine_common", - "sub_path": "machine/fdm_machine_common.json" - }, - { - "name": "fdm_flashforge_common", - "sub_path": "machine/fdm_flashforge_common.json" - }, - { - "name": "fdm_adventurer5m_common", - "sub_path": "machine/fdm_adventurer5m_common.json" - }, - { - "name": "Flashforge Adventurer 5M 0.25 Nozzle", - "sub_path": "machine/Flashforge Adventurer 5M 0.25 Nozzle.json" - }, - { - "name": "Flashforge Adventurer 5M 0.4 Nozzle", - "sub_path": "machine/Flashforge Adventurer 5M 0.4 Nozzle.json" - }, - { - "name": "Flashforge Adventurer 5M 0.6 Nozzle", - "sub_path": "machine/Flashforge Adventurer 5M 0.6 Nozzle.json" - }, - { - "name": "Flashforge Adventurer 5M 0.8 Nozzle", - "sub_path": "machine/Flashforge Adventurer 5M 0.8 Nozzle.json" - }, - { - "name": "Flashforge Adventurer 5M Pro 0.25 Nozzle", - "sub_path": "machine/Flashforge Adventurer 5M Pro 0.25 Nozzle.json" - }, - { - "name": "Flashforge Adventurer 5M Pro 0.4 Nozzle", - "sub_path": "machine/Flashforge Adventurer 5M Pro 0.4 Nozzle.json" - }, - { - "name": "Flashforge Adventurer 5M Pro 0.6 Nozzle", - "sub_path": "machine/Flashforge Adventurer 5M Pro 0.6 Nozzle.json" - }, - { - "name": "Flashforge Adventurer 5M Pro 0.8 Nozzle", - "sub_path": "machine/Flashforge Adventurer 5M Pro 0.8 Nozzle.json" - }, - { - "name": "fdm_adventurer3_common", - "sub_path": "machine/fdm_adventurer3_common.json" - }, - { - "name": "Flashforge Adventurer 3 Series 0.4 Nozzle", - "sub_path": "machine/Flashforge Adventurer 3 Series 0.4 nozzle.json" - }, - { - "name": "Flashforge Adventurer 3 Series 0.6 Nozzle", - "sub_path": "machine/Flashforge Adventurer 3 Series 0.6 nozzle.json" - }, - { - "name": "fdm_guider3_common", - "sub_path": "machine/fdm_guider3_common.json" - }, - { - "name": "Flashforge Guider 3 Ultra 0.4 Nozzle", - "sub_path": "machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json" - }, - { - "name": "Flashforge Guider 3 Ultra 0.6 Nozzle", - "sub_path": "machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json" - }, - { - "name": "Flashforge Guider 3 Ultra 0.8 Nozzle", - "sub_path": "machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json" - }, - { - "name": "Flashforge Guider 2s 0.4 nozzle", - "sub_path": "machine/Flashforge Guider 2s 0.4 nozzle.json" - }, - { - "name": "Flashforge AD5X 0.4 nozzle", - "sub_path": "machine/Flashforge AD5X 0.4 nozzle.json" - }, - { - "name": "FlashForge AD5X 0.25 nozzle", - "sub_path": "machine/FlashForge AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge AD5X 0.6 nozzle", - "sub_path": "machine/Flashforge AD5X 0.6 nozzle.json" - }, - { - "name": "Flashforge AD5X 0.8 nozzle", - "sub_path": "machine/Flashforge AD5X 0.8 nozzle.json" - } - ] -} \ No newline at end of file + "name": "Flashforge", + "url": "", + "version": "02.03.00.00", + "force_update": "0", + "description": "Flashforge configurations", + "machine_model_list": [ + { + "name": "Flashforge Adventurer 5M", + "sub_path": "machine/Flashforge Adventurer 5M.json" + }, + { + "name": "Flashforge Adventurer 5M Pro", + "sub_path": "machine/Flashforge Adventurer 5M Pro.json" + }, + { + "name": "Flashforge Adventurer 3 Series", + "sub_path": "machine/Flashforge Adventurer 3 Series.json" + }, + { + "name": "Flashforge Guider 3 Ultra", + "sub_path": "machine/Flashforge Guider 3 Ultra.json" + }, + { + "name": "Flashforge Guider 2s", + "sub_path": "machine/Flashforge Guider 2s.json" + } + ], + "process_list": [ + { + "name": "fdm_process_common", + "sub_path": "process/fdm_process_common.json" + }, + { + "name": "fdm_process_flashforge_common", + "sub_path": "process/fdm_process_flashforge_common.json" + }, + { + "name": "fdm_process_flashforge_0.20", + "sub_path": "process/fdm_process_flashforge_0.20.json" + }, + { + "name": "fdm_process_flashforge_0.30", + "sub_path": "process/fdm_process_flashforge_0.30.json" + }, + { + "name": "fdm_process_flashforge_0.40", + "sub_path": "process/fdm_process_flashforge_0.40.json" + }, + { + "name": "0.20mm Standard @Flashforge AD5M 0.4 Nozzle", + "sub_path": "process/0.20mm Standard @Flashforge AD5M 0.4 Nozzle.json" + }, + { + "name": "0.30mm Standard @Flashforge AD5M 0.6 Nozzle", + "sub_path": "process/0.30mm Standard @Flashforge AD5M 0.6 Nozzle.json" + }, + { + "name": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "sub_path": "process/0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle.json" + }, + { + "name": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", + "sub_path": "process/0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle.json" + }, + { + "name": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", + "sub_path": "process/0.12mm Standard @Flashforge AD5M 0.25 Nozzle.json" + }, + { + "name": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "sub_path": "process/0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" + }, + { + "name": "0.40mm Standard @Flashforge AD5M 0.8 Nozzle", + "sub_path": "process/0.40mm Standard @Flashforge AD5M 0.8 Nozzle.json" + }, + { + "name": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", + "sub_path": "process/0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle.json" + }, + { + "name": "0.10mm Standard @Flashforge AD5M 0.25 Nozzle", + "sub_path": "process/0.10mm Standard @Flashforge AD5M 0.25 Nozzle.json" + }, + { + "name": "0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "sub_path": "process/0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" + }, + { + "name": "0.06mm Standard @Flashforge AD5M 0.25 Nozzle", + "sub_path": "process/0.06mm Standard @Flashforge AD5M 0.25 Nozzle.json" + }, + { + "name": "0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "sub_path": "process/0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" + }, + { + "name": "0.08mm Standard @Flashforge AD5M 0.25 Nozzle", + "sub_path": "process/0.08mm Standard @Flashforge AD5M 0.25 Nozzle.json" + }, + { + "name": "0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "sub_path": "process/0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" + }, + { + "name": "0.12mm Fine @Flashforge AD5M 0.4 Nozzle", + "sub_path": "process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json" + }, + { + "name": "0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle", + "sub_path": "process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json" + }, + { + "name": "0.14mm Standard @Flashforge AD5M 0.25 Nozzle", + "sub_path": "process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json" + }, + { + "name": "0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "sub_path": "process/0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" + }, + { + "name": "0.18mm Fine @Flashforge AD5M 0.6 Nozzle", + "sub_path": "process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json" + }, + { + "name": "0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle", + "sub_path": "process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json" + }, + { + "name": "0.24mm Draft @Flashforge AD5M 0.4 Nozzle", + "sub_path": "process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json" + }, + { + "name": "0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle", + "sub_path": "process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json" + }, + { + "name": "0.24mm Fine @Flashforge AD5M 0.8 Nozzle", + "sub_path": "process/0.24mm Fine @Flashforge AD5M 0.8 Nozzle.json" + }, + { + "name": "0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle", + "sub_path": "process/0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle.json" + }, + { + "name": "0.42mm Draft @Flashforge AD5M 0.6 Nozzle", + "sub_path": "process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json" + }, + { + "name": "0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle", + "sub_path": "process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json" + }, + { + "name": "0.56mm Draft @Flashforge AD5M 0.8 Nozzle", + "sub_path": "process/0.56mm Draft @Flashforge AD5M 0.8 Nozzle.json" + }, + { + "name": "0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle", + "sub_path": "process/0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle.json" + }, + { + "name": "0.20mm Standard @Flashforge AD3 0.4 Nozzle", + "sub_path": "process/0.20mm Standard @Flashforge AD3 0.4 Nozzle.json" + }, + { + "name": "0.30mm Fast @Flashforge AD3 0.4 Nozzle", + "sub_path": "process/0.30mm Fast @Flashforge AD3 0.4 Nozzle.json" + }, + { + "name": "0.30mm Standard @Flashforge AD3 0.6 Nozzle", + "sub_path": "process/0.30mm Standard @Flashforge AD3 0.6 Nozzle.json" + }, + { + "name": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", + "sub_path": "process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json" + }, + { + "name": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "sub_path": "process/0.30mm Standard @Flashforge G3U 0.6 Nozzle.json" + }, + { + "name": "0.40mm Standard @Flashforge G3U 0.8 Nozzle", + "sub_path": "process/0.40mm Standard @Flashforge G3U 0.8 Nozzle.json" + }, + { + "name": "0.12mm Fine @Flashforge G3U 0.4 Nozzle", + "sub_path": "process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json" + }, + { + "name": "0.18mm Standard @Flashforge G3U 0.6 Nozzle", + "sub_path": "process/0.18mm Standard @Flashforge G3U 0.6 Nozzle.json" + }, + { + "name": "0.24mm Draft @Flashforge G3U 0.4 Nozzle", + "sub_path": "process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json" + }, + { + "name": "0.42mm Standard @Flashforge G3U 0.6 Nozzle", + "sub_path": "process/0.42mm Standard @Flashforge G3U 0.6 Nozzle.json" + }, + { + "name": "0.30mm Draft @Flashforge Guider 2s 0.4 nozzle", + "sub_path": "process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Flashforge Guider 2s 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle", + "sub_path": "process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json" + }, + { + "name": "0.12mm Detail @Flashforge Guider 2s 0.4 nozzle", + "sub_path": "process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json" + } + ], + "filament_list": [ + { + "name": "fdm_filament_common", + "sub_path": "filament/fdm_filament_common.json" + }, + { + "name": "fdm_filament_abs", + "sub_path": "filament/fdm_filament_abs.json" + }, + { + "name": "fdm_filament_pet", + "sub_path": "filament/fdm_filament_pet.json" + }, + { + "name": "fdm_filament_pla", + "sub_path": "filament/fdm_filament_pla.json" + }, + { + "name": "fdm_filament_asa", + "sub_path": "filament/fdm_filament_asa.json" + }, + { + "name": "fdm_filament_tpu", + "sub_path": "filament/fdm_filament_tpu.json" + }, + { + "name": "Flashforge Generic ABS", + "sub_path": "filament/Flashforge Generic ABS.json" + }, + { + "name": "Flashforge ABS @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Flashforge ABS @FF AD5M 0.25 Nozzle.json" + }, + { + "name": "Flashforge Generic PETG", + "sub_path": "filament/Flashforge Generic PETG.json" + }, + { + "name": "Flashforge PETG @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Flashforge PETG @FF AD5M 0.25 Nozzle.json" + }, + { + "name": "Flashforge Generic PLA", + "sub_path": "filament/Flashforge Generic PLA.json" + }, + { + "name": "Flashforge PLA @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Flashforge PLA @FF AD5M 0.25 Nozzle.json" + }, + { + "name": "Flashforge Generic PLA-CF10", + "sub_path": "filament/Flashforge Generic PLA-CF10.json" + }, + { + "name": "Flashforge Generic PLA-Silk", + "sub_path": "filament/Flashforge Generic PLA-Silk.json" + }, + { + "name": "Flashforge PLA-SILK @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Flashforge PLA-SILK @FF AD5M 0.25 Nozzle.json" + }, + { + "name": "Flashforge Generic HS PLA", + "sub_path": "filament/Flashforge Generic HS PLA.json" + }, + { + "name": "Flashforge HS PLA @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Flashforge HS PLA @FF AD5M 0.25 Nozzle.json" + }, + { + "name": "Flashforge Generic ASA", + "sub_path": "filament/Flashforge Generic ASA.json" + }, + { + "name": "Flashforge ASA @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Flashforge ASA @FF AD5M 0.25 Nozzle.json" + }, + { + "name": "Flashforge Generic PETG-CF10", + "sub_path": "filament/Flashforge Generic PETG-CF10.json" + }, + { + "name": "Flashforge Generic TPU", + "sub_path": "filament/Flashforge Generic TPU.json" + }, + { + "name": "Flashforge ABS", + "sub_path": "filament/Flashforge ABS.json" + }, + { + "name": "Flashforge PETG", + "sub_path": "filament/Flashforge PETG.json" + }, + { + "name": "Flashforge PLA", + "sub_path": "filament/Flashforge PLA.json" + }, + { + "name": "Polymaker Generic S1", + "sub_path": "filament/Polymaker Generic S1.json" + }, + { + "name": "Polymaker Generic CoPA", + "sub_path": "filament/Polymaker Generic CoPA.json" + }, + { + "name": "FusRock Generic S-PAHT", + "sub_path": "filament/FusRock Generic S-PAHT.json" + }, + { + "name": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "sub_path": "filament/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json" + }, + { + "name": "FusRock Generic S-Multi", + "sub_path": "filament/FusRock Generic S-Multi.json" + }, + { + "name": "FusRock Generic S-Multi @G3U 0.6 Nozzle", + "sub_path": "filament/FusRock Generic S-Multi @G3U 0.6 Nozzle.json" + }, + { + "name": "FusRock Generic NexPA-CF25", + "sub_path": "filament/FusRock Generic NexPA-CF25.json" + }, + { + "name": "FusRock Generic PAHT-CF", + "sub_path": "filament/FusRock Generic PAHT-CF.json" + }, + { + "name": "FusRock Generic PAHT-GF", + "sub_path": "filament/FusRock Generic PAHT-GF.json" + }, + { + "name": "FusRock Generic PAHT-CF @G3U 0.6 Nozzle", + "sub_path": "filament/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json" + }, + { + "name": "FusRock Generic PET-CF", + "sub_path": "filament/FusRock Generic PET-CF.json" + }, + { + "name": "FusRock Generic PET-GF", + "sub_path": "filament/FusRock Generic PET-GF.json" + }, + { + "name": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "sub_path": "filament/FusRock Generic PET-CF @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic ABS @G3U", + "sub_path": "filament/Flashforge Generic ABS @G3U.json" + }, + { + "name": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic ABS @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic ASA @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic ASA @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic ASA @G3U", + "sub_path": "filament/Flashforge Generic ASA @G3U.json" + }, + { + "name": "Flashforge Generic PLA @G3U", + "sub_path": "filament/Flashforge Generic PLA @G3U.json" + }, + { + "name": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic PLA @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic PLA @G3U 0.8 Nozzle", + "sub_path": "filament/Flashforge Generic PLA @G3U 0.8 Nozzle.json" + }, + { + "name": "Flashforge Generic PLA-CF @G3U", + "sub_path": "filament/Flashforge Generic PLA-CF @G3U.json" + }, + { + "name": "Flashforge Generic PLA-CF @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic PLA-CF @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic PLA-CF @G3U 0.8 Nozzle", + "sub_path": "filament/Flashforge Generic PLA-CF @G3U 0.8 Nozzle.json" + }, + { + "name": "Flashforge Generic PETG @G3U", + "sub_path": "filament/Flashforge Generic PETG @G3U.json" + }, + { + "name": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic PETG @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic PETG @G3U 0.8 Nozzle", + "sub_path": "filament/Flashforge Generic PETG @G3U 0.8 Nozzle.json" + }, + { + "name": "Flashforge Generic PETG-CF @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic PETG-CF @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic PETG-CF @G3U 0.8 Nozzle", + "sub_path": "filament/Flashforge Generic PETG-CF @G3U 0.8 Nozzle.json" + }, + { + "name": "Flashforge Generic PETG-CF @G3U", + "sub_path": "filament/Flashforge Generic PETG-CF @G3U.json" + }, + { + "name": "Flashforge Generic HIPS", + "sub_path": "filament/Flashforge Generic HIPS.json" + }, + { + "name": "Flashforge Generic HIPS @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic HIPS @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic PVA", + "sub_path": "filament/Flashforge Generic PVA.json" + } + ], + "machine_list": [ + { + "name": "fdm_machine_common", + "sub_path": "machine/fdm_machine_common.json" + }, + { + "name": "fdm_flashforge_common", + "sub_path": "machine/fdm_flashforge_common.json" + }, + { + "name": "fdm_adventurer5m_common", + "sub_path": "machine/fdm_adventurer5m_common.json" + }, + { + "name": "Flashforge Adventurer 5M 0.25 Nozzle", + "sub_path": "machine/Flashforge Adventurer 5M 0.25 Nozzle.json" + }, + { + "name": "Flashforge Adventurer 5M 0.4 Nozzle", + "sub_path": "machine/Flashforge Adventurer 5M 0.4 Nozzle.json" + }, + { + "name": "Flashforge Adventurer 5M 0.6 Nozzle", + "sub_path": "machine/Flashforge Adventurer 5M 0.6 Nozzle.json" + }, + { + "name": "Flashforge Adventurer 5M 0.8 Nozzle", + "sub_path": "machine/Flashforge Adventurer 5M 0.8 Nozzle.json" + }, + { + "name": "Flashforge Adventurer 5M Pro 0.25 Nozzle", + "sub_path": "machine/Flashforge Adventurer 5M Pro 0.25 Nozzle.json" + }, + { + "name": "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "sub_path": "machine/Flashforge Adventurer 5M Pro 0.4 Nozzle.json" + }, + { + "name": "Flashforge Adventurer 5M Pro 0.6 Nozzle", + "sub_path": "machine/Flashforge Adventurer 5M Pro 0.6 Nozzle.json" + }, + { + "name": "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "sub_path": "machine/Flashforge Adventurer 5M Pro 0.8 Nozzle.json" + }, + { + "name": "fdm_adventurer3_common", + "sub_path": "machine/fdm_adventurer3_common.json" + }, + { + "name": "Flashforge Adventurer 3 Series 0.4 Nozzle", + "sub_path": "machine/Flashforge Adventurer 3 Series 0.4 nozzle.json" + }, + { + "name": "Flashforge Adventurer 3 Series 0.6 Nozzle", + "sub_path": "machine/Flashforge Adventurer 3 Series 0.6 nozzle.json" + }, + { + "name": "fdm_guider3_common", + "sub_path": "machine/fdm_guider3_common.json" + }, + { + "name": "Flashforge Guider 3 Ultra 0.4 Nozzle", + "sub_path": "machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json" + }, + { + "name": "Flashforge Guider 3 Ultra 0.6 Nozzle", + "sub_path": "machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json" + }, + { + "name": "Flashforge Guider 3 Ultra 0.8 Nozzle", + "sub_path": "machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json" + }, + { + "name": "Flashforge Guider 2s 0.4 nozzle", + "sub_path": "machine/Flashforge Guider 2s 0.4 nozzle.json" + } + ] +} diff --git a/resources/profiles/Flashforge/Flashforge AD5X_cover.png b/resources/profiles/Flashforge/Flashforge AD5X_cover.png deleted file mode 100644 index 67dae78153931bd2f66857c7d917690d172660ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 738612 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 z zmE&_r4~BnUbnBvM4T_p=z8JM?@_fI(zTPy~|FCg!^p57)a)+|TqwLZNfr1sGbcloH zOptA|>T3mogW87dl?p$>IP3Np)%8qf^3-u*47puV7B4zB4Q#!)`{DiQxPk3>0;Y=r zG~a8n^;S3aS!op5>#@8uExyaEs+!qaH` zbid1{tE>BVff!$1)!*E zxG+4gGW0M~>tzV*FsC^F&0;vJGUjIaOM>TetL%``$PRfqhRR%HXu}HS6|waw$vDb`!IV?e*YYya&#S(BLRFgGa=xPj=-7TdoJY z(A_4@l7x6 zsFuVmy${>F+#6e01{%3C(cM9OZW3lj`6CvzdvmDg`J@GF~ zh)UI{(VwYL;yP(&lj#M0bZn+w$#j#2S_@R46kJyv?2G>CF0=f1s2#g(fF-{7o3ha* zBynW}?OM}G&yu?%oP-9}M?F=*0@Xa#H96@D>JRLc1G!_|oxgUM6aILCl`V+syhHk* z;)c5gRyIAXHDpO_S#_dsl6!WhIow&=#mjqYK}g@gS?b)$Lr{9hb>tXC$0kNI3R@dCxqJVI+0ILpBi2-+HDhLKD`T z*Jl7v3aN`;AzA@#1HFyrdxZwb$J?WZ*4A(Ufw1RDF`&rY-POsS z;f=_Co)Vqtlu=G99bmPl)(8@DXkjLlZiAH_dC7ZL#S`>KtTVIJF{vc`0K6#qp^QV< zW)LZ~ZgL_g@1~av291xNKUiUWSRA}x>;TX_>`laNl8hocox)|{B_d{|jr?_~e!ggnnm{4l#?8v7CqP;_2yaSf>y@>y- zi^}odl?EOe20#2h_y0-JpfOf@`rbrb7ofIgKB6Xr>5Y=L_Lz+A511}-<>w5Wv&Ayb9#dg;VAjA49)F>a7AMgpkM>Hdh zdkMb0gCY!7SF0fh-sM0=?|jV5kg>KCnteL&ZfObZE=Br%0hEu$-XkjX^IkK9rt^%S z%)%HBmAHH?A4#FviAwcuv)?PMI{9HY4PE-Qg8oLNo)L2D;Q2@C$(s%~Iq&0cli``# zVq9fRdA*P9$O^9n8D}LzHHH7aUNv3#;|R?MT3{oSMH%>j!QE;*obw>9ahQ%S@BBy6 zSu~7EeK) z$VSci2j3<=F&@AF2BawX0&T@&b0iOtg6PGT5vXg`q*-Db|LlUIlM~7D_0*Pwj0BhS zA5rVZ^jOXY`Cxu6`WijxG)PWHZjY(*3J9%ryBsa59R zju^c{ngXJ_pMo8Aj(*l^uF#e<9t(GBQ$ZVUd{qJAN>my_)ih4dr^6Ey30PQjsy<*b zR^n~(zsENLwknqjJ34mmebeX)JGgT)d%DxVZ4L*{)zY+%mqw&2_0V?wq_+O~3)D1d z?(*_d{~YWt5PI!*5P1bPL}rFi>0xB@_FO?60$qHE zaBDoJrbEWA9Aicn^f5E^`Q??NAbwznB%ao_Rfwo=J_+*Ip1UUa0o3dLKMN33SdXqx z*PT~BpO=2<4BH3~fBMmp1M)l`7zA3%7@^RKx5@LPs)|@0p~(%u{8*L9BBcn@)Y%tX zqgOC?Cc+8_beC947~Q3&a8VG@+%SsLaHdr^;*61f)`M}ZHOVlYVMiw}E+1u*a-y&@ zYyJRDO9t6tWcxMDBPd-h(f&SSw-BO(i3^q4LN~Rl)eZK)n4={ zsiXvwqm8zQv4jtiG*mni8>84KzL%{B{*d?Bi}B`7uE_FNqkN@Z?f^VGE94%`4ArM3 zZ21lx;6J#Wbyy^vox6G_&jHhJa_|qxNUl#<29i}b%t#1(+j4wMr6g&;XlE|Xm1YxX z?gbmD&Kanv>5P2Z^!f}am~pzTfdFdDxJiqCDUcpY=_mhcIa>wMfzPm-Qoev(pfxha zCREUlu-%p=Ymr~%=Z+iU%Z-)ZVur20%blye+vEy-REBw|xIY%3e{}fb0n49E{4ZMu z=8Zvx+WIi%`h&g2U(n$C7Tv>pjMrNpb%{1!kDkw+1X>z-27mj$X}9>irq(sx-CZvz zQ)k>jQX(~Y!sr^{G$d4$$7C)%TakxVjY0!Gf*^cgd(xx0=?<0qGGSh;RgJ##%*;NT zN5hiBu5wHZ^cZYa2XK~N?xash&;@3Z8LpoFmR#?j~J@5u; zNG-t+B1^XO&Gv@}{!IjRUl`7m|K$3Y3uTqNr?R|x1*&Zw;ev*?$56sl~B^G9j z3Oy&cRd){r8%BRqY5HZV2!m&B`8^+HCJC&XjB0$;x&NpK2-e7yK6w79_RnD zG#}ku9o~mf8f}Bn#UfP&j$F{enDiGfMO#Mo&1plO(RC?;zpZ)~K62%#$-Vt|G%CNt zy~5E8O4jWD_(1d0<`SneZ28knQE~S)f2)4IJBI1Q$P0vDUjYs$#E?|R%#A}uDy6~Z< zI?BVqJu4@_AP@5>jZbAxvVNlcQY}YZ0qxv#$P3wkts=Q^G6@>&N)d zfuY5Cy&C5i{Cm>}?!Ws)z3UC9G4g>s7%0pJ&g5+rLl22WU5^)@wk=cy6DHx^MW} z(?1x6IDLS=4(o&L=P<(; zF+3(2!Hm*dL=3Qr0vd&Cg})tahM<64}gipd(UyYeKXrL3wjQGDm6`aeOH>CS(rwEZc6EmKP;qgy&z?}$nJng>VP`pjx z{X!uwpf4thDE4jDqMqr>Vu5*Upp7ub4!wUdBC}R;^ps_ORxKoq2rsc!Z52JvQ0w&= zSQ*tEL->L(^|yBDz{gQI*RtC4rM;Y9y6%_WHyl+UorI4HYmw=XP61vbr$vi;g3Mr| z2stT9Fh?^|&ghAEq?g)grW8*XBaM{yV4?h#1#;DsI?hf<1!=2AG=k(W2FuUge2j0t zhQQn6%`|U7LGb%8^6}JIe~t)G=L5R6goOm0bfY)vo)GxJc>Ld0V}MTCxbkvX4kvhs z#8GI&e<1lasTRcv8T>U;-i*pr04W)7EioZ&S5FOMI4r-8rjKz ztN!;DLSD^Fx*Ycb#69~RqP9g@bwS@{>YXa^Zr=hQEXAiy!Pa3l1tS*CRP6$iiZb!Sr`Rt`nN2N>cz< zLkU5d#Usj)6qcp%?L~I;853H6%cGwAzdVc8HGds)=T#=F_&Uc4FN>iB$ceS>zu~fS zc0b;|c3la{aqsxvY(ldyY@ge};mAh_bBP=iM@T@WM1DCx4*8yEZUn6FBvhgImL(yj z>@-fy$h1gXj3G8Dfi(PuRQK>#;u9AW)tR4&^$FIgz1RDk)!*?SmT)N3p%F-xNg%Rm z%$mrXRx?dC8ND$R5oVJ_V%(wU3;7Z5igF-~JQlx8{rd7<)J&OCn%O}q_5e37N=`<~ z%7MpFHYYbhdCa493vhu7%!wB_~CMG(mo020ny^*vuwt0zMBwOhv zLT?8p<-dD(uTRWnKBfW}Q3FTN%$ zV-G^y$!y?6NHZwEh+!)rK`-}2TdK)5bbZra_WjWHzC400lMH))V?obYc(T73y4t=i zHs2{9zFExtVQ76lef=^`vh(y&HYBjre1pW2YjoZnDX`QXO;i15+UVe)$@2lv_9p!3 z_Gw*Ub7)sm03T%vxTUUoP`U!&J6Q^=;YNPNvX_eHyjoh8EZ?OGdJzGY71Y{TfL{}^ zi~ZLC?fx)a^B>`ud4}Nm+dwSBG?S(eH`Or5}-O1yRJOp8humw3g&J zGl5bF&6Pn#PtnAm2QxUVDX=@VD_hQh02fN8fFoLd#coKFpBt2J28h)&J0N9gt2z|SwQ2-jM)u=A@NNf`gvj0}v z5uJs4g}u;SnG5iCDhuWqg$<4wv*+}9jS5T$IJk1d1UcB(#NX4_a`pEkH30%e6|8$NxC2o+9im)%68!s!zTE4oK!iB}W zk)DIeOIYH4Kx1L%kDb5P*bjJ+az1RCHk^Cghr+2 zs(J162=cu=DF@zz3tBodD+inEExSCsDT&i7Y~r9SqA|Nh2OGeN$m-+ndfm9%4*T*9 zQLX3mzXZJSUHbI)*j}8WxjA0cAZFAcvh7*`UxBfTNwRfR!fntf*$}FBBGY;&+qC zqJ8x@QS}Ywrolhqc=>w}5wA5?aXS{_RipS_w?HfN5SrgJ#oIO9mmYzuuBa97&`}Gd zFt}9KoM_e+LWU6>>(=>iG>W8A1YD*+CtkWzV`-UNyStr8x{G8Po0-?XjI$EQl`p?W zK6`ZX6fSx&jRCgFnUgN#?aX_Q{%tvs2LwjJ9oK=?>cm_FFXVF6?81p#{1k#uQKKJZ zk=+`I(na?}Lyx1_WuGhyxsM?KgyEs1;bP?yJNY*ShDDW&)#?ueS%nX$w)Anqn+S`k zR%DU86@$z1gZ1ewQk&$`2McSRM^j$N-_1OcPmu9qcv_%ze|ugcBks&{Jk6LklJI07 z?yx6Rfi(f%^mPv->2{rk_U(#$A zg;w|?y*uX9DBbt4T0VwIkirtgiU?V+epZq?cZg{Qrhwxc`rzPyD~`(K|9PHu6VUzd z(CZruM!!~GmWDjG%`{dgE~aU>`l_PEcf5S+;j9Q8>`Uk3)236+lg=>nV1b2TpE_`7 ztm~25m>^6%E{-PvSInI1Qcr0$ru2$ly$-OAXD0Y@O zhPrnI65Lq?7!nS4_348d4@MW^(9oD7mC@a#HnzI3d|?d@9L~C_mAAM{;}aHZxP?3D z!0dCkf^2K9=GnwA30v>Lit#($i-ri(eu}B#hC83fM+oT-S|j#;lLL0>`gk# z^vmy9_Uy8`@}l&@=1>a7pxAYqq#YId(a18Zs(r2=1J!$0CrC=Q+&AVnh|Vu0tv`jn z&>m34ite7$tgX54ZllXL3~UIv{r63~L-V66qQ>{4!u@10^?GHxD;iJFoh0>hJEYl= zV^@z+EBfyj(y^YhMK$}G=R@H5!0(N6``)jjtasljI`Db`>ck?iFp5Pc?9!LC?b#iC zs3&?rpFQJEhY{p{fnq!wc0bxcbh~10IkSH~#8=ce41Q*MyB_w7J~_c<{_#$hBb=3A z-Ry8sN5Fi+#F~wIJ&+8O(y#?!S$qgy!~9^{6PX~s%$`|(j<6zgiB&>_#gCx@@;7B2 zz=EiM?W!Y)XY(0h(|ylHr`v&8ch1nu>yx6;19o$Bvj}PMaz0Y_EegJ2BFI2RMD(ca zH(O{`z9fDRXX?+Y?lUJ+mhz%y>9ZrUM9~gLq8^fOI1YTd&GWJ*BKqCph&n79pB_su z(>&Eg1LDvBi5Ht@s%%N+iq=5TW++ealevZQg}RU(Mx%?XVxrFeXAQwD1t^*7mbxL7KAn*BZ?*O@YOAHlTthxe?FAcT3on=u*fEqx> zz1I5)6Fj<3s4BwoxQ?&dB5zi3|J{C!asBCj-%?ezn~fyy3*7dWW|dlh^%*^sd&t|< z&w>kO^v(~21p5r@2>*eI742`M1Mt_3q*QS@-{IK}=r*CrV0qz?B`E-@t58$g*McG$ zGT4DH*dNHQm^F#xX*=uE_+XQ#j8m;Ilg(q)#S`7`veQv|$uoEqTOVS35iWER`D>tZ zZ7LU`vsH;V1g9%8m2n0{AU~oIMd9#j#zvyuy^^0)wcm{Shkm>+{#%WU_(}v*8-OXF zyuBQ%yfz4;4-cuZY{$-|i=@ibLnJj}TR-(BnroLK2D@^P9tV#qCW5<1@^ixmRRI zuFG7x9R||p@E!L^)id*MEB-`^uo@tt2@?Al+U7yf~d=N**M z<_)Kyx$J2Za{SZXyqNcwb9_{X-p8iH^VNGZ#}k*=*qh?W|E1Owd(MP%!~{oKICoo@vIr=z$ToyEU}3gEK+LX>L|~!pU+lct7XrW!_qF$ ze!U4qD7J?tGl77LfPg?B@t_8b|b$T|ajqP4AHgK92>(%R0sO=LNtf!_}_d5*pn=g2`L zvg$Z=a`GsOFT(so-mT(FGbkYJkU>G`7?DGuqKP^7iBT98$jz%tbZJ6dr06{l*_C;Ewu;mXE+)5TWm55jpTo1;G%*_o|g~C0cn*T zH;OM-G4^K4>uUG?X=`}uk(*Y_%l#@5zI4|x*%;my{A#{N=3&!WAgy_GW1 zG3kH3N#k!Ph`?=D^0V%J@$ef9XFzM(os-*f)+F3`{(g7C{| zDl0y+y`y6wFtxEF(dEW}Vi%ngKODlpf;yR$CnFIx)Q z%R;_aSJQJ=z|Nf@KiK;ZGwZ{W?_Kb0^}WA7iB18|wW3bE)9h`jQTAWZ5w5VyCsKpg zX9Q+m&NqSwTPtpicL+s-J2K?71UNr=`P!mU85RH<5@+!mEnb~rUe{3PHh%7eXW=K**u<3MZ-?cH+l(Hl5Y?6P+nqT6MYI0=PyEz(Wz4_I8=j-pQ^{#iCVA9cGB(mqoqLiJ2qM$pB zDPGulNRven&ez$UniO}SOw-R<+~Q6g$glT)d_VxN(BOs>&cP%e`JnRhYXHgygj#`c zn4s$md#s{jFM550r_!Fm6==A0m=qlq4b1^)nP!y)@=sAX9FCD2HD`pnOH_EzC6-D{ zT;ahh?IiQzWVDHn08Pl_ips5iXjY5ZA3k{#X^kU@tqc|z?MaKCR6Y)xv6?+DD%#2y ztcGQ#aCaV7n{7F2=~hL=%gPa}+HC)h$ugVCo0~rE;d51~Q?U&pdWKx+=(*|sT%VMSa~OXyz#V~8Z6)>NNCBc7*6lsyslwE8A;H}+}is~@kbEq%81 zwbU$>U!t~VkR*#gYh$K^t|!gqKv_1lO3jH<#*yxYk|E%=Dc>4`c;HD{!AOkZqTifsu?ls$Aj7jHxsJE9 zTA;mXdQ3UXS@G5E=SdqG2CDn>s&@o;Z1@M?pDuScH@pDJko$78Gb%9=3xJb3iw@lb zd5AQ*W;T2vOzirh+JGsb+4$brQvh?_bZ;=^N9qK9Vnq(g7dGZKig8KQQO$CslkwW@ zYNOyeY4LM0s~RP<0``0Wd^$789Iv*T1yzqp%aH8fY&-j&?PQ6v+!PSB|4N;A2KMAu zxE#CH#tvb>@;bj{lrcME|2))s1W!hm1lPnf6n^6#jZW_B=5~E+u0I4AP62j~!_{VI z;}Af+uhU?}T&A8}A^}T{Rh30wHrHt8qQOG>!>d>8^p*<00J%q4plq+-Mp&%y{LQG9 zMe{slrK9@v9)Jp*IQ_hAwf*s>c8g77-X$AesPpNBuj7!XrksAmiI=EPAns=I|CoBq zn7F#{{d;gN?#1053KVyD_u>?H8C;4}WNvItRxeeVg9RP3e2E>9F&sS6CwT9bvCNGRtTP?w52VgvCh`5m1IyuPH!tr5U z-Yh6s9gUn1iJyM9c6HDnw<`N7qqkT!Tj0tROXmusZ{8;`7M+3kyKk=LWXN^K?OmDe z1=)+t8x!CrXx5ePI)89#^92_1161jUpwPA_y7OpC12n4hyo$|>Y!S|P$%7emQsIQm zqGfga&x3C0QZ?7M%DYtc$!q$WKOH`QAN3j%8n#ET{jcMu{;%T}08g`Gg+;{`>Ne4$ z|1p^-DLdTjrov8Wi5VoT-Gy>CG9;?(OPk)FnWGr3m^0+0S5d#toI_*=vH0ZT;mW)^ z&H%?rEdzO;cgX5}2WmKl20Uq)#bfVZ@1C^XL6H-u&V1f)rh#wWrh93ij=mmx zpUK3de7)J(?S zCXYoXeRC=zM%M;eLFK^;*dQf7hc#ZLKZ#UjZQ?eAopsN-8a2L{q6iW}#mKq4cahwU zao9nm=8{@5#9G^5d zv1sKy2ayVUuA(Lf=1kMOy>U3@tvtY$U`wjnK zX$^jSrg%*D+ZoFrPWjT7-lqZ+k%JZ5TT0_hUph!E_Ysqtln`|w$cm@`!aexGEGjwK zoS0-|*xmQb+#FYScCINec8w(|Ja8=nfPZnL1)^i7Kb}TQh~U;Uz0|7G^=46s;pAEq zoXk-DlweHGhEeSB?*?Oe5FY_5J1I)W@7r5mAd<~a0c~Y~)B!y3pI^A)^!TSxTc8OC zj0?%@8f$a)zGaug^NzR4Z#^cZ}UwQLoN=t>E zf0NEAfuuLv@uApLrjW*xM`taEb9>hG50YA1x~yry+XJ|u@&??0C)*ySBOR`v z5{g(d1`Bb_*6WXG+#4QxK(7B-;gz^+LrdwR(O>w3WWPb}`4mP_O}sOH)JtHZ8Fy2w zAez2uI^LA9((p0$IlWoB7@P7(3l+;z$A<=%n+HtZ-Uq&mhgESR6aG*+;KVkGx^0CWQKz7iFT>c!`lRIAtU1of|7F+eE1qMOV~Cy` zsyB)OTeMq6YTZ?_BNSF_^Og_zcHIzUW1 zRr$6=en1_0f7{$02OvClE_cVhcT;r!{&Wh!2Bg_TF~EGPt;)sOImkNCA2{v?hdz~g zvsd_}gy>9PeNSad>pNb*2b`BM>~=1i80dNBePA*t8ZR)Mf4ylNTcYiV0pW!+<=fWi zSE|eQe{SqEtCi*0xHVq$&^@$!Qhr!H;!GfwP*o235#s;uoCNTm!DwUE^ZjW+!%#-t zYrAQsUeG(DCWI<(CX6uN`27NL&0x*c`Lo0vZwnaMmfY%iM|-gi;4V_C*)!}vfvw+r z0E#f7rsn3_`u0#Up|Cq;POJo7mz+CFSP4;ZY@JKkNMHIS)-aei=a;?j7pqqBg8>P^ znChDzk4*?Yo2~||z~zq!n3GebfwHRKYlA@;0$~aLY8LcHbzNdCPSgGhJUneLj1ga` z6q}lyy}i?~w97+Ew5{&GVTmZyVxOFxn0k4Ac=`7e=%*!*N~(We@W|BBUXr@HEAY5h zTReO8dl@NOW*z5o-zk!ld)~ek@^+AKiK?VnYp=KS2`K*B*nN=ehztdi%kZfRxHexC zsi=r3T6WSftZ45_+cF^guKual6!2E^yFph`E2qQ-jeLYE^7QOqUu7sV!mbrdIi{&; zYOVG(<|MpxZ=tm<7R-MlJLz$97zp~`EoE2C6tRhD|#*Jv7lh6Te=wve8NnS@J!B-jM z_EiGavq@XhM^tXRp6`0LN1a|5IcqfZ2$0OIK(789NSouwJX4B8;`O&PVrF^O+F^b`14au zTMj#)p+@q);)qBKaUYfv9#}N>2Ph}^fcJNbFp!%5lTU3ud<;YY5mEXs@q1zS)H8U- zy0O466jB*XU6Ihg9Ccc=K_OwvvJMF7ANJOnw^J?5XSs;M!R*&b9S&7yEsF>SxsjT@ z9O+!VoClHx4diWgg7M22kO5c;5zygcHR%GPT+~{#)9?FxU1qpBhSjFQoR414FOMGU zZ5}9q>mu-->r@*L0x|fgO}Q$`Qn8_PukoU8iQ(=xGsr-{kCfUbZL3|irV~VMLY#z1IsWngCic~=1(E`3x#tLBC-#(Tf_(Pz^pC*n>>@$c+G*!MNso`m3U>?bU z+Ox=%DCnlOw7jtr>IFf(q}1*7;4FcORPXw1rL2cBkt4KfEUp*X{Gtj;HJh;j{mbqe z?UvYy;(UYJ+$oy#+NwB+(XgF??Nki5_IbHMz0 zV0PUrYLS%DO-}Up-3dnXzo)A)IM&DD93MQvlYnFJ%3~YjF`I&p|6hj_n*-d!vjI6;d}8j1#Cu3W78PKk%+j!wwGPx?KI zecMp|Lw&=W+5Xjv=jCY+GR7DZhCO#C|Xmq7uk=A8ucYy+TU5^ zsR?x7E?i8bGmBL=Mnju6Y@`bs=Q=d7Ub2MzND<(c74c-PYfRdcbfXX`;G+>3zq>1v zz>r4qExmH_$1#9aqx*U%ZvR_L`SE`OvXo=&X(@pZF=W!NEL?J{39TU;b>g0F4>0WE zte8-La3nLil|NfT3lN;mON3wQVes53+BV3p`e@UHB3IL*ex!4}7xJjijfvN~%MJUn z+^wt-n^UMbV}@tBd?o9H&e1h2*==#?SQnJnxLp(hRk0zrmgC#G^;N1|UTmrhOJWOI zoVvDH8pF!)S(#@K;FJuz3-nJ;^8Uj$7zgCVzGznn@dFqI#!)X z#m}N``<_xjcP3;Kg3<3{g&V8t(xTzrM`TbIl!0}Ss&y94 z9lqN!wy55jMs_=VABq46moMpyl54z#j@v!w79e} zxU_%w2u9bCy$N;=j1wLc@L6v2RV6`(UbQ6oTA{WKik>n#24 zg65)dmOPhJm*;s;^>Krr;oxM2d4P=;9p+m7i9V5-W8wb*2m2$WMszD_6W zHdAkTOyeTBiHu+A3V&_0x)~8PKPH5Gz)a23j?URK_!oTM%z@ryMoYKqL37sjTKGi^ zl5s}u^xmlpo3u>bLP%r4?o`mcB(Rn~F(#{IfKn%8M=quG@V*cbL9~4fcQ$S@i?`v< z?J6rHO|HKSt8xIG?1EGRAGz)y*nm@q5V5?v+UG5(Tqp_z7NkGlXJnDS`$em9|CN%I z6XpKI-b{r8M}u+(?6LrX_)GsMl}JGDsLPDkNih3-upj<(Go{euJmW2bM)VkE@Ud*O+KI<`4=iUEHS&HB{b;`9K*Mh)nP5V6oNUIJf z3fscOXmi<^Y4=UKVD&MbJteBty1qv#*nNd+oSu(tc+^HybsD7~lo2CIs0vtuYJ8y? z$nPeG?JY8}8uN2Wb)^6bhgv0sn%W@1{n-Z{L z!*x2wyT0MEIXBT{)gMRK2&)Wy{S@Rya*&$3U1x+|_bg&xt=sG_a-av$F8!uNuLS6o zqq9&T;dlk6@@$k*U=aZU`IDETIyBMC1Vjo`-mIK@NZQSs4Uq$=CxXZa8li1)*oP%tcwDSs}yQctr0t_&<}>I z#zlPpY{6c9)D!S=Mxyv7@+9(lUMoau{w?+vovF5L+J;D&lEg`TEZnhR_~G{GS=A0P zG%2aKDQ`Xt)q6zP>f)gA3FR10((v!}HHr-UldJHtbRk8!kMhT;kNYT$a&^o9rRM+N zdi|hWy}rGo4O|l3sAkEiZ@=E+UQfO(7Src;eku}TRZ1=^<3NwIRMqd#YsI~17yy>zEMJ2PRPFeb-%ZrGvRlvlSX`^(}cW6IbpRi^!+QI&L3H8yq?m`OKbwGRR`f6O-+Wmo7Ghrwij zIC$5?{PPiG0#Ze@*FabETXATh)x=@kQe8|aI%Li^vkq~kewLU#go$8v{K4V4l{gKH zKGobQy5;gCZ(e=U)LpTVtVzDh%!RMQtzQdACU=Ctu^p9~r^qi>dDgik^QsI&Dcv43x0X0#cL3;YG6Ny5aF_Dqe5q)bk86K}nH9Y3H_tY9uAcL} zDCoZoovgKv3{=-WMbCr;e($#LqE$%s_hR6H8a<+|8AesxOUphXv^Bh>f{%I+4jx90 z>TP~{$6h7Khod+itNA9qjj6W9fVzD?k(5hF;9lJQousm!2J!_f1G2lV-KL)OKqYoV~ZVo+>S8ZOU_2 z;RCM*ud>}yQjJx|)Qb9D+lTI%M_j7>8H#`$W&y^dR3{o-Z4k96240cDA9P49!m&RE z?+Pt#8N5vh(@_G2PIgXCPW#!XkS8haHV?bE(26+x)^snUC7A8wLZ{nyYA}=D%De2e zste1FV~*3^E!v(`e@FY*@m=*4TV$ezoHZP~)UQOQyJ{FTIfxCIg{47=5Qru56LiPO z+ls&OXBZ4P#FD>BeMB_xQiaAWe4(}>Zp8fLGi-IpZ>$CxqIitS(i~0_j8o!wGNmHJ zJ9Og$$h#%})n64Z-^XtkFtRg;h8wq$(scp?H9OWGTUPj% zrZa48vDGP?XpS{{0{Q*1S!dVHmgiO-%kiCVw+d3E!rwOIJ753fmnU+R`^T%4{O*e8 zinYaWm1_@v@w=`o2IfVS#S`>EK0QbD;r4dnb4o{1W^u3^8c>ikc>H#4Rs1AhENPQT zyHVZHb$)jG32cWFGYH-6xH;Q|^U&uZ1f5NACuM~(s5>@bM%NwU$c{hOqNz3$QCz~M zD*q6=8H8i(V7;P(^9FA_mYQKu}t%G=%u-1uK{`+~s*wab{xE2LUsEw=3mkfdKU zHeq3xwLV*fgzfaCmIeu^SWV%}Jil_j->C%|Z6?e9NyOna{cU#BdrQ8-Hb2v|^Q$J} z|2Gt^Re*+(lZtWQR?~Jl9t5Rx=O7osoSeu!(1TzSCg&~x;#JV?gy1OJHXOVr8f>SXX|Yf{qKUvBM}hB=T zFf2oAawu9$Nv!g4ZQwiV=Bt?*Ou)z?`oo9ds^D$8@xS%3(L+Cya)7mr7ZnRhhXZ4U@H*I86e0p9+ z{un;<-ysN4?qH`4b;oXn1c$)2uRe0R%%9~5bf8~6$c;D4VSn#}@fqYNz5`O~r{&Gf zS(n?-LTRn1bG|7&PN}?lcc@n^UbGf4b$)^?+WCELEh7dTR4Rp>DHy?iux{V%-F?5# zH&eqq!|YhhH24~!b5p^*6~;o2HPh&u`4IMI(~987o|yX~&;s53l(e;kb@(kEYbse20hJU|;J zb+ovMC;eSb{|x{*^9c${E_tLYmpD&;;>_5t9VS%(ce+FZJ>a=HjR~vz!fik=&<~(B z0b)IP;wR-X!88?seBViEs^`Gr9Qh5%E&xbJk&Yr%}Ss$Ff zo$3p|{7LpcnKk#mI&CI}o&8GS-R*sU%~UFI^3b~V-H;xQv*800mBN+PXrAJbO%~1T zj>vsPOQ36rRcnHT7F^$qO-N{{5WxON`ZwCyXureY%NK`}2?J#9=x>+Jf$wF8=~_Hb z^|3+}#Fj_Gx*mQynOR#Ss0d!b0wAFa$j67je=#<}KvdrW-cTXlzs0uBo}P>Kd+7^% zXB+K+#8hsP9Gg?892anSNMc9a7GFH{xGYnr=$YtTwzZq`)oTW&9sXdgvoNwC1Sf?1 z3*o&|-aga`PK*W2fbElvUCupr#gUqV0}NZBK0g^XHENm~{uyh3ZEv_18e!oJ3p#XX zd}x)6TvVrj7v&KpyCJ0H1(z1Y<$}B;8E}09Vx(A6K8mV~KQ${|YB1cpRQAc^=utUp z?Z<@73Y4YWnU1TvvJB>BwyiQCoG{BUQwM9_EBogld0#92Nu+EIP>3hrqsP}<`0kp6V-J^lwBJd3q zJ+Y-J0PSGlq;Thrxm1=RM?|Cn#5;&L#b{@c7->`T z1OH=WssGnszb{&LLs_PO%d{-(02s(YJm^jWVwbhETVppM*$9O4`qshHLpxDWCrJYY zJuf?8q?AV25=7U-QwBNj{VeCkfM52h*g}jV>3MjPB53AI{OWYix=PL+P<#uYZFR=9 zkrtc|Jhs$##=X425R;J^QJboaSe?8H4ax@;13Gku?Yf@n(HEM==HgwIP60~-#>nEezT9SKfL}% z?Y;H1d6%SW^^geM0yW*;dFld~nEx8qjg2W`Ei3k^T}vJ$Kq(si(Q9%Ca1`=7TbFaJ z2NGMn80zdyg9dlpn}Efw@vFM?*H?CY*O+>4SLXItv7749*_aBK-F^JQiqt%jA5{p! zJXXqs=4HbUj)aBu(k^b)^7H>g1VIH8#nhn?lx}hPVQV=VS6HLVIsG4Lg^wD zuXX29e8T={E2H8=Rg@5EI-^k5OhFeftxHve6eqRdLpO~dMkuPuKup_relwRI8M3Dk z?fSF8ShP1ZJZYG?S7LlUPV6~*nAY_L+ z!HO4SA!od0KDKq+cFjn?q(^ArxPqyyqJm9^D52Y1NmAT%Ai~DIKW82`;yh_xgPJqmB&{_A3t#6uA+A?A`Qt4CT2@_(B)L){N1?4sGtcs^hZ|%; z#4TN$iwN=n34=&CI!RP>znqy#o%>RNzQrU2iJqz;X1pi1KK7O`xB8Wk9J*Et7I0G` zOIUp8hI|)=2r}!fLrVeIWl%?19IM!oNkbR>6mm%B=xI-nye(8=c|ZB!=JoF^kQ)ED zyWtsSNGc4Av<|E8HxCz*M*K?+&OEIP39=syrCOWNJDLHaQ94?(6J5OSVH_xCwmmfJ z)Mwu6!YET(%j)}i8uTdwaom!5qR4ey;5TEq`31c5eQB=@r>&ey0(H`+17SUBqmxWM$HX4V!i&{nUpznRAWwZ1$}!0r zB_nB4UkEoA<3GNO(!~vf-2RxSoz(VF*KzNqhqz*Aw6}|CQ`T-KGh8v>6dp6-d| z6TVDKT;l@ofwh5oiCAg#1t<)@Fmay0rfdljovgU3=yhgmU`xKya6C)!88oPBs-zC> zeN17~_Kiz&ow9{a6WCuUQ@qCBAQlsl+Ktu)`1!>?_ystsFdnnsb;NXFo-_^yL=fzN z8jR=!k)<~Lt3zG|3@f$ow?omL@6I+Fw!$&g4Ic&GB;=5NW{8a59HvZN4t8&7E-dsW zE~g?9zbQ;*O*#ve5>&uO-0Eu5cmDaTY?_Vy*P$_;MgZA)f$f%~ z)sN~C%WzT@2LU)-L3CqVm=(tN(gIBlA5G)SgjX!|)&Pkl{r}B}7}1m{5E#&6)RXN@ zN5k%ai6BIX_9bmT)!AB~ddxrP7m1oh@FbId*^6b&d+(ScAru|HV)lc4;Vx=d6HK;{ zWQCv}hP(vzvrKG`*YvNyl_3H_v*X4fFj5Z<-6(X|Wut&KY;y-(D+taz?*bS)DnT7+ z+XA6^Ki^6Crcxh7(iUKF*O7}oaKlG4MM|;Tx1rUqK<9Nl60@EL+KW(? ziNi+jKij7L6LFn4Sl*95Qo9U8$1`8|Qn-5VI;Hgb3FqDQJcXaagJM*Sup?k?dxR6h=67BcdOZL+x)Bz-dQzSM>@UUN;}R0#C%A-$E?r0 zjmjG}U*qGQy${vlDf6?N(_~lj-c@jgoZ)&Jja{oQ_g6$FBb8E4RjezUEfRi~N)~#T zsvM^nm2Wm}ib(nStJ3Y~Rh02rOc+{anL{H&2^!;tvU`56|S>&-1FigOa z^OM6s-%p_ECTgVSx&#w47m>l!A)Cd>mx={avSSf?pC*8kLPo!MjXH9>hE&L?#CqOW!*#hoq^E8&pmrQmYN375 z7%A_NWfo3^kHVA`FaCyt?kTmhF9f7Mgc4sYI$cd8G5W9h=r{jA0Wi*3w?Z(}P(`Zo z+JTV^B7w~mhq@i;lM+S(@erdk&O&GlUquWU3+u1f(XBN5`;5)6RFne_iv+St>bUBA zh%&LKl^g&Y2TAa1Vh*5QK@WQi63olguK-@VE8*KmhE8fOKW@ox1cK0o$HY=|^b^CA zx>k+0l3w3U=$5H+uda%{m*x{B{-u%E7W-6U9f^q;e9?<=Zf*yD&-S)H?)}#3bZM#Fo*9)u6(VOdnZ>rtIr5&k6IWrVgsS-hny*&6TzNp#6f=|Vv z@GDXAU5*Y95=RauTZ;Wp%g)v_tVqcDe(4I#K^+0CV8*c>f7(pm2f5hqt_5pt^nIk0 z9#Z-^ojk5Cc@-P@aJnUZMVY|_FpJ&B$T7FlSgX-A)7|k`M4$3epn?WYeD_uP5lZal zO3T}Q+EGNc#WpPsi0X-4XFH?)<(&)#@~|1mr=>F&#$51B-?h-9n(n}`qTC1R&GN8r zLL!hCH4H{p(P~1A<3fj`kFVIHq>zKGlNwx0NwRa}Ks`)|ay{WY72Vm-ku)3Mj`g#% ziOp+u4uv1+!S7Y_P0SglEdq!YD`NC~+jazzC-30lPd>S2zI5V2{Ot{JZh^{%=T)d9%~ z?~lvAM={o=3;Mk9%Tb`y{_Omdsr5Jq}dZ7Dj}w2yqA&WihB|NqjD|E-RC%2j=m6QA6FpU~@qWu{rC*vFxG z!1Al|)4qoZfivqq!YPs@L`u_EoWhhADwCQCOHCb~Ab_F9T%CD*XAp#-nG$gqmYhu0 zU=)Ebasdr+f^P3TO@4Leyye@bz6k=pyXP-i_ZX>51XRG*vEbc_8(?Yj>x|VakLy14 z`mZHfniIXO=_xa-F9(uRv7FA%JfU|`OG{o(wrN}U*Y7@|of{;AS5YdT_V0y<`jNyD z0sZU$wrrvH>fr>&--u}<9zQqsER^I)X)U#Q9Mi5go$6I8Y*YPAaKV>~2!cTN30F3j z_~oOMsri--IX@L)47}ThxLPtyRHG0G_2y$N&n+;2Lq$r(0d4H5c?Cc14@O7v1W(Vp z;EF3WG(y45^W*Wr;`MAQ5Jt$bq8den`=we;&S$hH*MYr}*d0!BmQto{Ls;=ch|HCi z7uRTP=N5DIi^rw%g6glOmZZW6IEdb7T(yj{K$0Q`?G=jK{ItZb7F+2q^ne52A;rm}H#9vq7b% zEs%fk;mTNc(Py&ufgI{edJfjrc`Q#11F8$F|s zqhRqbm2-;{&WJd{^bfn{1$}9an5Vsj^b-d@WaqexS1zYijeBWs2+aGmTtPjzdYi96 zvd+8vKN6*i8s8f&ybN}alIp}PXWH8eg_xy~x{d{&0`H$7IY&qI>1&D6pGgUZL2OaL zKZ_)Zc9cLd14TzKeNf40mK%YS*w(&y7@$DHJfC$xrvU-`&e_{J=)vq^peQu-ZE~k~ z*W?KpjPBfgfAR|S_Vc@TuzE#PkWbwW^<{A#0F2Jc+WG(%h*-Q8$e3>0AD%21-}NzE zG?Ln9Q6rWRx9ZERn%M?y@5i7H(Dm_BH44MD-PB%d%Ul1hcH~_?F7>;ZeE_~dujC@9yXO2((u`Y;Ru2|wAHzciI>Mbl<9_k%U z3va@H?m&CA^n&6olSS*I_A}oXRGhq$Tt!P8uTcW2@L5#WU7_TpM-L2Z=zM!P1U_i3 z-EF^cs|B+KW-&>Ec^F9kj#|v9;+MdA`tRp%p948OCQKm+bVwEcK|_ZR-=W>Fvn|K0 zhJFbNZ;{Z_RUxHbO3!isV63)XL=+Rt{UFZ6iSK12P$YQUL`JCjs}SSpoFd7UzP+9k z5yyQ~z{b91{BXRKK47?&+$=i$Ed9om6`3uDFZ8x$yyr_-ICCW2 ztQ=mnx(_tHEKOrJc8A7zWqoi8|DFsffa{;d=C!f)Tb363nP#!o#I3rBuzfiuh!C?< zfA*=5aXJ~hkLf}8&eSbyA)v;M>Op2%Fy4xz`8LrQ-{bX;<(&7F*&M%heUG5X!7(mH z;6~0@|9W%VediG{y$14r2GZ;be5fmS#&X5q4##nDJ)@8H@WZfY6#@I%Aq^F^^-myK zWNtYTSrFyO#{mqU>(cIS={WQcH0eL1Vy0{?cfVqW_G0vp@`cOz>|3sbPj-*rOTN(@ zk`0bQC2%R@G)wI=1?dU71Yv}ABF#wozFninhryY}FdLPuq zAd;L^p>4Io8r($r1+qDS<_g2OE)taEwgNZKK`GV0hM^z2NT)x`ItbvV!a88D?+ zc^d;ZsC)o}@^1dTpMl=z2lrWXE7$Ll7oVW!M5nO&67eOk+qJY_(k9zQ`V$ST9Fuol zlzb^vWt?Yp+;Jr%Al!>)59I0;7-p^TG3xnMpC|B9I__Sd{u;0U>AE^~iYapClZ+*? zswWgj1biNNQ-2~aSk=BCvO(ugvSTnZ3kJLp`XiC+YVVz`1`E+mSBxIKM2-M4*WbavopfbZ&xINZu z6}6t1ZDwi2g`BOy*vcJn*e__j*XIDv(@)&h;5r?@N_K;u9L0Z0_n|};9psLq_woKC z#@SN_-K@tR(@3+Zvdc4atMb78S%_DRz+Z(N&ek4V0;(Bg1-B-UYpY-}HziH@e)*bh z4Fxg~k=>x9%p8p|cqz~liz!!1k1TPeN#E~gU-e@+%xVThomm5Ix4wwEXw5^l+^Ojo zzQZ@cyq-NMZmBdpU8IB{9%!MDPbY-*TUd20O?}Wd1QH^sB#wUubZTF9 z93t=jVvcRS1U`#gh`f@$+zm4As)@ES?PW6Lc;vK}iT}CZGpoHq_y-$uO5qrvnU96(_?A2H`uepO^o`=%k{QK0gumLaLbd8 z|A{^fWa1+k4=}FCQ;ppxDF#4R0KJ9*7%_-V_5;2Y`_z&H)4e*4h-yggF$;je6E-n) zyWZH?5@wONO0Pu`v(etH5*0BRgAmaOp~O@H@(~ge0VlwpT;8}DIl_vBsJ5@GjZD8B zQ@A+*N7Ue>-BMC;$Kv26cLoQ8L#Tm#@Fy%z@te5(NlLhUIh5Y^UV$;jYE>{@+OO>$ zf2=0O3rqiu1WlxD6fp*>znj;i=NymS?+y!(THZJ&n+ZX_3<=i&+E*{eyt{6___FgC zrERBf$iOPSU0QZsqQ=fI$J&jt#)Mx#<%Wa#eK2&%2&bw2;mt!+10e6DhEk{%dn)Q# zr&Q`YXjCxc-Z%2o;C&**hhe#_ZK~CjtyMyis+_b6cW^A~oTCYcp@&)RGH~KBUi5rf z_o+tyAYa-bj>wSRmrEhHz8Wv6%`5O&<{TFXqL-HCocOWuBZ0KOBt*&HfXYW^{76;YpM&)r>G;Bx`WEVR74U$!)74 zz#F6MA;CbXqNad9BjyEz)WFH~Q_6>;3^xembh?wlhxD5&hHiVd6;32({R(P4VrZN4 zSIyivbvfe?u1X`t~)1FBvoBR>ORf1mtvDh5n^2YGRD8pvJ6U#q^`ww`Sj!U;Z zr(EA7ztZxHb}>p4iic=j@tAFjk88nDP;DE4kGfGIuTUIw*U;Q2=Uq z;fUYK*w5B)C2uINMnoU&R*)Lok{>+JfsVmMwUKwcE%R!xSi zudl#-m<@a8?WC3|jg8;r+i6?Fhr&iY&8VVvqA1Iezv5>rY`TLYaR7dIi z8aGJuO&4=t0hPd!sz%(%FHXHV zP-Br_%w@mk9_p9EcD3p+W#aO0$*{9F7dgLUfGSk-2)KPhZa$8~l zNSJ_7laQ#lJY~1nDeJ;(m*}dMp|@#VNRvK`4E|odxAwBKd{zHjpuNH~ZYqw!Nc@q# z06WGP9Ytbv6gf>7p|)7QyIL+^(r$}3R5WSmtGVloJFj&NoSA>po+LEKW3xoHaeMW3 z^0k*{?`n#vf>=gtsKGETzV@%pM^Mr?p+K45s>iWn8FyZ*QD}xKrvb^)_o8bus#>I3 zNfB5W&eRkPlk1HhXLTXUB@T_&oa4Um`$qy3@P#)YL9sM#uy?9WX5|uwUrN&>c&&qp zj}k{V10UYSR`ve=5yi5B8gG6_^tb zWMD!adsTo!*EC+D`+S_os>xb}GL^?o3(1=sn!XJIK#-RzLb>+szv@cJpg)oRpb)hZ z@4!H*I_I~X(MUzavXiu}_ayS1ZgL$$gXbw5yG+FgcQkGBsm^Zse$kf^sQ8&vSiw;R zBB3j&IAO-=*5V1ea{XF$2++&K5eZa=0J*`?4$!S9Glu5x1E1^I2)G!&M}xnJqRVZ8 zpFZ!pNd7QMaMHnaFT@HukXIaS>3KRWxU7CD4}{V(+Bw?*114ossF-gHA`jO0$=%Q6 zM`y35@%+%!u)8)ccx__No8KH(?X0cmoG@k*-QqI{0q-;IpP$9zU!@{XyQT9*@Xg#? zRet8I)282iQq-WX#z$$FUncfBKa5K~8%@xRH%`m9n%NewMH;*6Poyav%>2{*Z$pnv z`+rO<29OrIGex&kgonUdFd;utJyWip->@PNY6ShjrKKppLY{h+%n7~(9 zZ}XRlGF9iojg%G9N!iEv{*~jNQ>Kw1j(|gQKwtK3s9$X=XZdnoTPu9VCOti3yid}Z znp(0j=e#lRJM#Nu#R1p1^igZ#UMcdL!6a8K{m`aX6cWaLHU2!zyvfRdWXOCuP6ynB zEm85W7elF`Oi8^zvf|wg9`a9x$df|#@z4r?)(Q`0Mz)2K%GGw)g+CeBW$L|QNIIMM ze2hR$^%jSB75vDWnnwDqa5En|y9T-;EU*4=Ze(#j$IqZbTIL>^uZL&iy?ImJPW}_T z1N_<@n!o;l>3>}N5NEqNr!XSoa4W?A7+`6KJ&-)4jHa}}*Pr3E7;-Y>+byiAm1iXP zS5yYa2{~);>3LZ#pG5n^gA|s-T4@OuB_GEjaI}Ib;=7GZml%5wHa)yNg(u@?Ce#~C zhy~L%1lNiJ`$^)C>;ygVO|jT)ENz}|9tpTK`S`Hp>c&dMiIo+r+AE*UKAY?JH|-~F z^59MVR83+Z(}-pR4b-@tkAk}1jj=i)l;?!|MCvO+m zcoY{|BxRN#oc2HrKW=v;O(cYFLITWwSM0wGx&}8nh(?kR>$2iE7*@h}xq8&Vo``(E zw0=tw32mzagmWpAQs7Mjs(|MsyZb);uD{di?v&!X%phYZX6it*8(MaZ;<>{zTWwU( z_Zfoj`y!J8Kng7k42ZDLHwYum@k8rRzkrDm1S(Ec84H=e!^kY;xSoWRRv^!**TrNJTBEq2J zF8(3FNGOqHWZtH4ucqbJ?qP7NT_`Z_K*L~ z9YfBwoq=f{fgzw+!csg(=(y1)^?jyhb8Vya?$)!}%j+&LSFx!J$Ojj?FYkYUeY0pa zeA#yQy=94iCV}51MvEwCN+Xl_gEr}NU)JZ${?AXNa;+KLPM{|~10tj1%Sjmma~B5H zzx8K8%cW627*Ur8D~sMSc0`;r&1I#qsxvbra?ID9VvX^h+jI;wk}`p5RnGi3it-g%kqJ3-1tASDs(uCrkyq51t=TU z%Pbi=mo3LDe6ZP5h^KwdApW^KI8ir0Kwg~T(4wq&B;(nau=%lzmd7y4Dmt$z5S7{! zD(VEJkS~v_>f4Yjg|0K#rwcFH1A+yO2NbioMhtnfi>JT`0KZ5w2#(o=}h4&aehh6l|J^A zTm_a~d`mL>3Qnw&YPwl=&-tXXIZ-2VGae)z)jOTot>0A7!Z4mxe~Mx2qe!~6BTSFS+#x0Ae=Ihpgh2uStwWg16DEZM=bD5J)D zhYL2F{}Hyls#kzwIBb3YN&^8D-mbUNl8TQ?-i8R@bK36<3l~q%=(ehz&fz%~lb1h- zqZihzRh4y|`Vx2c4utW_G}TkDv2#4vprn@d<-U)Som29Ea)reIJQdShmO{vu_5P`O zU90}{tT;)6LsUixMY1e1V8IW8IT4~=I5O6Bn%{N`BJSr`ZWRvha!!H0#46-Snl>k9 zFTfw!rsCY5kN$#~u&)RYCoaE@Lr5&CandQHwIpgWPeetmYp$~3AG^Ix70mL5FZ%t1 zUsn(C{50^g;UiuI|t{AY_mS}Vw*`vI_=ze_2a$V8qbypP{}^J);`k)c}4x; zDPMBt8>pWWhH*s$FjkIr0YwrYT&w$Ba%cCAGJxxLOHCNv8#S6P|W%q z(T>!dSPz9Bqdslo_)POu^g8dqtz&nv7-XPT9o^=eTDk- z99&V3Wop-X2*yXzv(wqnG9(YW`@J8tWOq7l@^as&@{ieFDLH zs*HkzmO6>yZ=Kn3JbWALsn*z3%O% zU4p0xoQU+G*4i;HgfI-TKWbXIvTk4rmMJ4T>pmNHaV?!6fc|I{7I-+MiSvk2(4%t| zJcmY7*^tc)a_a^N9p+3`m+svHZ>M(NZ#}}p2mGyVze}0w1cavU9Fa!n*jB_FB7=*! z2jYJ6)EC#2{5Jwn7=*R&oIM&Fy957z5Z_+P`5vgQgKN_50;3}GGGA|yeEQ}Xdo8|H zV({gh}Kjw3T4`ks#41(o< zIxdE2+cl&i$!tO^IbvztNcMUgjZxUX^zg7g0eX{Kn@|>!_u^EBBUHE6r-1vf^g#$#cGTed=QwHiT_%hu^2tOspESg3 zGyGb8=2}Bmm%B3~sN=P@o3pdq$+O9`g&ptbaRBEL=wt149=Bk2@p9;XTet}xxaBUO_g@2!XaAE9f*r&^wU|yw{T}i?HDpCRV=UGqW(Xk-Z853?|E;nIBJUDd+V<@Gu8z=I2CO+2vrz15v>iT|#(FJUk5&ymQw%bi#Tq zUN`H_Q%7D-RkQ`IQcLQKlKH&3GT8#T6?uISJQRE}UC-CUQWKk(zOoqD;`fVHJPxFlf@;w; zoF8&dHR!B2lXI;R)?H@?WAfXr_;b`36`>|Qe!9_u55vNr3i#oj$WkgfvAfP!o|!Es z&o2x4rCp5bT7A`rKACAKh&3bTfmj9;ou7mcY-PRPO?HGPe>qJvP&D4j*1soW(P_t` z6y9V`Ij55?200ad(+jn=IYdp^Xt~L!Y%*`!_PRSgE!4Tbdh$C&H8%8|&b)<)j$(raJu9kB<(&CA zEeZ3=Ruf>5Wj(^;uQ<8tF>(Iq>!tqxkez2bBgV&&pL#%Qf8u8a2JWz4;6u;9eoS5T zq&mr>xl%u>rD+qaq#`9T(sCp`3)LW7g+5)ua4^)C0bN~_{H{W{TCRy*5s6zmGIcJww|ITMk{|b47WH_~czf?14KGZ~ z&F>tQ?HB#ULA1fvorXuE|B}@IG#Q!wI`gEb7=J0ZXeU3g-X|8^k z-x;39JYeycQ`$ohH&Vx`*JZI#YNJ@*Z{FIpzg(y3L(SD@q;Efvep$C`OqJ*Q9AKx3 z@29tnM#rj?%Y9HzN=l;z?|`Ps;xM3i;YdHpqBrYTgD?WfOa_23dUKO3$LCts=cF;W zZ`$|%Xy!Mn-)kWN5`L7JQfhoX*-yDba!kpcD&@^m8jP&T;lipkEVj&!ZULu=JOMg1 z?GKE*?OD-hrrej~Z9#mgfMGLk#(km;cMjITLAAs5Mn_|I>4A})?3V)Pi;U65dsnB9 z1=sV1k{``FDX|HKKfx=)_D6OzuGtSN$M5jNAeYgXUU)>xw~a}yN=6iTcTvjR;uHd9Ivk!SoF>(TAk*p-H2(S$jRo@`50>N?>N z=xrgKZ1|X2QxCR2sc^`s1+4J{q+#h{4fK;`1?YY9#;ByG zwpJzd_4wv`RH`})Kf`OJ)E9XhR)0}aT8b5*o~f+yH$AX(!BBAAOIhumo-6zotK1n6oL0VQ_ifXi||DZ@TyB#k@0q2#+`r4=Jx-sg<(9TrDt9-S}vtFb}<_ z6(Wi@Ei?v_U`!D3a;R$KqCGsQXhZ9eRNb(8f6!-Sw)saEhzSuT+n`f~%s@#jZ>$YZ zEy9c+U^O0KaY!gkPtklhgDXhW$B>w4B+^Ews@e=s}y2+X}F^@xF2q#4kk zr^HYHe6OIco%G3wQS>Jl|Ko?M()bT1l7I1j)TMU!&Brc9^B4T-Qzz8S17pk62S%1x z8zoqh{B}!O4)2rZ_L#M4T0&vce3R^s9YebfDRJJ?GYjok9)g|(rtqza$*+gvnwn*d zn2K4N!Gl(T3r?ZtjS}-bvK)!`c8t%0Q2EH=9A%P36l~Vbx-8z)XF@yp-M3Ny0V-%Y zuF2I5pVpZO&_q~ym%RDITDE-2r}ce_Tn&Ov6&yEc5vy!x18ynZ&myh{95jURsM|4u zWa!Oa8WPP$HxAnpNo(fX3K6t?*39Mh%|}6JUIWA$45in7kbO=B16gS zPJiJz{;!~w|9`$blZL`XB8~u=CkOm>@lc29mA-%;2zBT&HK zi^w=tSk)F&A;>O3AdbeF22(lrnK(fu9Vs6tly)^MG)btVa*iuvaV1bb)w2O{(=HP8_rn63z6+AW7*ZKSVM&999i0)Y4 zGl?Vpb8Tf+2PKMs$g8LI z&8G()p#C39Yu$uZ%b5X!ahuX}dmI=HJJUJi95yAwVhkw?Zfw5Y`zG-krr9BUh^C+h z4I+Q>ua;E-Gai(@an%by7#SO_h$t424*qbu4F0KvSmAVM@Ei?43JYnjdxzue8N|u8 zz2h^Fj+!;stR#Z|gd;c5$If3(Ms0bChbPEq9bMcm(#S6sQ9 zNYqhg{i=X1M`+HA)c;Xl#DvBC>B}9p>J(ghOh)f5*^A3FH zW`y7`{Gr7l2m`^(`G=LJp|uA4`Yw^A#=dQ#ahXq}Y1n}mw8lMZzKNrLYRb2gxh?O% zEB|=7)E(h+kHtmP9=-h)^kA}rU)(K@FVyJq#=*gR zyi)m1sKjPkCp&r2V3_9D28@K9cY`O=fpfu@;R|cRBzjU-gH5lB<7CQd5UmEob?A-P z|Hjtz|F60$o0v_>L+L)g+Z~j+>|WUDaa$&57&#Jvml01YQ^&rAM3ZWheh?ui^J`VI z=A#8uAi}%7b5f3rR)4$?As4+O-2u50IYS3kJlcWepe@B{E#|ot zO1Ts)xtI^RxGSZcTPkq}_&n(P+KOY7l+L5dWDWAgv~~4o>k$?3#o~Nf^TexY{y86Q z-v%fnWz*=WVxc7AyUkWW&E-JD-J@6}$QOY_??83Kp@$yz^q&ICm*zctHoJ}9y*K8J zr&D+c3P3Uek3m}DEpSW$T9Rl;@=~7NJPeF+dr#AB`?xZTwGEknbV5Bqu2cYWS7VPyDTXS_#$$>}nWMyovIwf)- zvt25n3hS2-^SE!bbi6xp_PEHf1e7GG6H`+Xte;MWLx~SL&E%3hR7Y!zzK=}Pww2sr z$`3|4BG!2^>qhe2r6Z=Isdhrx=sN$l6kWx)k-jW%TVxrhCD3c(eK_o0&CYveP06ha zyr1v{&-T6qkA-=92v!la^m8^5j zc-jBr>6cv!fKc0V#|>)INR-xHHjFZmmo+_cVZ)79Xi-eihgYl8M| zLE9hLHtj&UEUT0%q+i3SR4_da29Y2`sp&3F!1jxl(|pZBsGrfMr3>EmiCMKQ+WV{h zJfKvERa;&9 zut3>Gp&IFrHfkqhBWmcT@FCWs$kbRk*K!45P)4s8J;YS3EWBXAL*}|IOMAvDaKaF< z8b^k&18wtIOvU*;-RkYm;qTlb)OqSl0!Fe($poRXDT3xp{!_*=x>ew_reJ=@{$R_2 zvLBW>6fYG}K|yyl{lMbK)Km#Twgk+@2uanpHnxDS#yV)D(_mnPS4g1$)+UnmH-cj6 zn2Xp!X9zw$eT?MP-#e!S9-m)7d<|yg!N;`af4{yB$)VGWY6qe!{xd;JAE>Ycji0c> z_P|8GP=#(#BPSeM)O_f?QvF7Q2BorWQ(?z{yO>+m=+NdxrjT!RQ?CrF+G#^~CBnkd z`BXI77YnD&-mUi`XH)g3TuX+Nw)t$Km z`N!8If3oh!L8F0-dw{ATy3`DGF>H-q;^qYDhZPKuyAmJ}@9x#cVW*!-=llx#uqop@ zJztK$suTGv`ki_XGk%weZ&oRR%KX{zy^dGw_-iKu&+2FUJD}%0fBIXlL1&9A7N1wh zJK{Au{v|AVj{5ssI+KXY(wxqE?HZcca zSqFuOhPleI`=M+eijUp9%=uT{MvYT`7b3Dx;3d@;$>gnj=rYlze>eZ&WXpYr{1eS)rAJR^mcmiJ##dY|@2eyq zQ|?`HvmOq&$lX_=D|KX76}oqaJlOI-Bk8UC2WZv5u67Z+3h(Rhop=`hzM_$R|LxDW zRNa8pMunYuEQkOvhNi2$!@7pnwC5R&V?5)1}yyKUq!^LsH=(Re;hs#$`m z0n`^IMO!C(h_fUN6h&__tA!kePsGF^dxiq^Ghc<`Mm>Unjqvkx7GO{) zTH4elf6%IJz^A#VK-Z*A9|8phj%VblNHAVNkj73YluBENU<|Hg)xw+YE%Q9ygkt^@YvU&8Y~H2bC0!UTFAOc(Uzt`eE2 z{+1IqqF*97dhZ1N>n1Y6hcy8B-~Tmj;XekYWgOgu`Ls|pvJH9Sqtz53x=3Ky2CDW&?B z?lAE8@T7U%si`Rp6L@9A(4~DQXeb8&Q2N;@uL7>@lt??bt77xBrdrv^)nGww=_kn7p@HL>+0KOc()nJu6 z>dt%iO&!72%*>AaT1_ijWN}3dvAS^!4Vi+ zdc$u%#UV{uL#$1lrMJPcJ59xOK2RU&$6zqNO<-fDjxSW5uhNxT-jueuyXmjB75!D( zuslLK!r%cL&&3OEIG^FP#As0INg$5UL|@D}a#pr+)pkRrozfmHg)ycliV42F-{LGL z8wBThG1$IM>x=_s+v~0C|E;lrqikDJ6A}Ktu=Qd%H)^s}{?KX6P}SUej#2=9Ve;e; zN14ze`HE+(dr7^o=tgs^?EFm;@5G@yda*wPX|>;=B{ zdH~yFXHeOgFL!TP#0%Hbvee@po6Wd^r#HrW=|AK+*aHe8eew{{PagllV~z-?6{(ly zUW}2D^}s;(#>){$FfNUr7R?#ugFosVa0?BXfrUJ^v}|>s{>DuNye!0pI|u+qwI7Vo zPHD`6zvvM)8O0$-L`ubb}gs|2k6@rHHKKrp^QONm@rPrFlDV?g|w-0V(A%@&_>&PnzD(GNRJ|IEQdPeV* zo9TcLR0nsZ8JM&f1Bv4{_-&$Kdn10Ynv&4}SdgNgcQA%G3P z!IrK&mX5o_EQft|k{A_j-1`T{)(WWY#BE}+Fr()=HWL7bkhS#)XZXA?zr3|I9OwTE z5awSXZU#vPLI7*BOSIcUp0xlw0kB}mo0VhI_I3NddJQ;8X{<(42AYYoqPYfddR*IF zT~Nf*oanSo!L-vjHyV(}TFwSEMQ^66Zk zLugebd-@|y`&7EXE}i*gk#U$L*r0=VBBh?XDiNX6!PBb`J<0pvsLLhz<~LZ=P4lN; zemltc39llOYh&gpJ#*#(ZU|b*giN7z3-X?MMOHz zFlOgrp3M+;oGFJarGZwTwRI(&sng!#`F~SRSKwjtTA;{T-_m~C>ku^Rlfu;f>dLdK#LtgCYxXUG6UG3p)n zUR7!{XERCk0E=ai;lIOdowbEKc^qgYOk4sAs~lylYJUT50+cX^l-3q9GLqe@nqK4I zl)Gc5aeMztb0yks>eAWjJ3C`$9l`;9BB01+PGg!#m3ItXy4TH3M;Ly#cfw?@(vX#} z+1}s?Ho=h$qtn2U_eOxEl$fw^o;Y;&IN~6R0d!s*go<@Mgr@G6@DtG`KkD>ZW}8`f zCF<`R|6splV+$uDssRfGlmYN0JEI^TN_p5f08+q@nU72g$}G%0Bha>#N|{f}VqW9@ zr>`o?d6$`xg&EI$6zX74J1TUq_*Q!P)oPyZq1_;@^iPm1tDQQ+=xGq@pr3c~q_w|z z=NE+zS|wjOvo?%|J_@GhD%tGJOdO=ngzdlX<}YVNjLWU(8R-cl!`J16hG0L+?PdoA>fDN zjQmM2yB=79=_R`u0B00@er`ZQLS}5uJz&$E{0Fhs{gPGqX-@vJZQ390KZ1p!-;+77 z69Pv;4X`@G#eI$x>;+-utua-23KbitTxS(>=2)*|yif)F6EHHh1a)*eXr02L%y(9o zZ)v7X6?sej*b+k^Xvb3`c29a6{&OBM`CJ3KnSawh09=0uu)}cxGwO(N@Sx_S*&;92MTFCniAw&7()9qwb&QU3>w6$hVyY$zw zTabO=?SAO)Xa9tNiN!=TmpzwJCs9Z4RY9>FQ%VU+W%)0zeWciZ)Ix{tmmM$Lo*Kf) zvuMB$=)^5Pe$>-VrRKw}PqRm4JG&q+Z&820I6ohsV~hP(Nm7Md|11W47(7Aj5W>U7 ze1)!wAlZ$FV17l7{+Zb3rfc=lhAJX$6v+t|bPmf=Wc7hJjB899E3ME=2pvL07ioaX zh|z7`9raezt=nM(nYZoS6*R3Z4sB(a*8--qpg;Tnh9sf?H>j*^gp|)1VJtgom77ok zZPEnQ2Ib*!S*Hx4FAO7EJ&tGE@~L+elC}r)H(Xw#>?T3EWZk{Qm1c^5f@})JS?JHd z>k_g&H(1!L|7J2RA`X0F-P*(uNO|ExW)OKTAV=~~dxD7;^2CJ7{ySeMk1*2G!%jU< zD8h>C6W1*eD`nAhxbi004k2EF(4y(9(AGYt$w|C{>~Lby|0C#q`k$q9 z9?}b(&tIetW>uLfttYi#LkKVg_*~j+aO0<b*=0<#1M@;+0VX)``~pnaVLkiqm>1~>V2&eo95!2^$Ba`d8Z&AEX?%es zcorj8D6?eHq-~)09a0!PM|U;RIBn9FURcA#dytQi-|zCdzl_ZI63hg!+gt3mpfD+2 zARjI^2aEgVm)ADL*FL8kqa1adP&7>r`pLr4qrTKb>cDkj$$;UqBy*0_JHxYV^Ad!8K`C*SPPE_x1(!tKlB+B|*t zt-BQ*Y=)Uah%Nk7SCs7c^V&*y|1__fk0a(0be7Xbf%XmTWzLNsMYX6Dr@DPVZ0|44 z?-hiQM`S&S^U+0LMAn+ZlX^tYnUy)vkCb>$-4~*J&h@+u z)nK7YYha?RQtknMegK&-r`D=!6%VMg1F^R&O9LzeTl8^f${e?liJFmk?!`y{X0Fg$ zrrE={WqWhKEwU-$J<^lK^@U@&Kg1iT0W_chghVQmBAJB5k$AJDPlP-1TUB|~uYDg7 zwN4?E2X&Fc!|yVaQtkDrC<&@XDfi$A^?UaPPQ~@dd2ODrNV&(sgQD4T6Y^!6VN(B zB_$Wg@kJGg9#yG6EC}C?@B!utlP(>Aoc`OE3G9`Gxat@Mq-=sItyjrdpR-u-#%Z0l zqP{>z;TAwRM!b+6%qs5a3D8G$O8A3>N$S7IihN>~@4kKTt9px~Hs{jK~ynis#tks)te4bv>5@ra!e$8vC@>tukEL zue0>5<}i2!_7gHJ$IiP{yCR6l#B$i!%=DI6Q|2#?#)amIwa3j)FU-rD(J4hGQS`ju z{O^&r;lYE@;k3_`6s~%J@M7oq7z1FdOQ;6G{NOCg>+@=8`^Ie>1zc1uie35a@!h!+Mx*WVCm3f(4`;>0}cQo}LlXmz`n5mqLB7Ua{lj^33?i z`uh6D!rf9!uC1*ekq1sO0+yvZ)!MDCtpf*x#q=lX9Jy=`etxlyjRHE=OT1&l;k~=! z;<6V-r}9X`3dYSLp~6cvAd7%IwW z+{hhg=tHld-xAR8l?mBfVZ85jqPuz7&h7im|XQIPwPDD>y+~ixp^$02AOW@1IRc=7Dg+Ffvjo5wNuxNnYsPD~ zb-MO-I#qT0tUb)M&cNo}YI6!o2Sdb~H^uZm<_HV8YHajQkCs}tYiaH1=$kJ+YW>sIcXx+d!&-B73&wV^ z7??4x$2eWT-G*4R3$Cn`m;E`?VV7#^Dv%DJ`9n}4DQ zfzdbN-bk~*Ew6--qx`n_^@EKT(f4^0)!7MsMs5r_g0H*1&lhW5=W8!5LZGddxb+6k zo4g+Qy8g6R2lgwwngF;8(3#h6puE5~g(leu8COlbj=^+rn)z%yi5ine4U8`A*@PN( z(+>w%*O(6FlsU1voj@C4ZtGjj`lQY4Z>ggwnoI?e^ z7L$D^CZ6%)1a`8>&;d2rur1q(>!z}G>$ZBi$dM*I()S#p7~HyAOxp%Wg2gn(zMW#< zp;nho1PM*u*!#b8C+_o0_sk~HwCmL_0xlIh)oH%`H9PrTeuHU(!o|2Sx&rxfwmyms zV;#go0Vh5I5Q4A^Gzwg-Jxyu9if|46X~wlEOWI$py;Y%gJ=({DKg}J54S&_|+I=tj z)CiT$cKZt$aPK~q= z)XIG)2Y@#OI0Eh$IXj)waWnQ`MkaJvmvm|uM`Sx}hLY-&<)c}|AXwQ3uZ4xu3w{vo zXS)za9gb#CRKvOM1RhG#RQ}S1xw35$ZP}nICR3c>J-dambibe;3jfmm@M+WI2DRhm zf?D6eaHqPZD=Z9sOLRVZ<~Q{yN5X1-MWMJ z6D?D0khB?$xV2Gh&n~7yB1MULt(q_JEiq-UyahM-OaXL9p+)&nAt-8tdXU)=+@Jp3 z%Q>Z{Yi`a&GLp}^l5z+O%)d;5UPA*BJ99z-5 zf_R~NTC}A9tl(u_iGF_S)bvDB!wp?0mVCfqHWWnJ=NM16C%n}xBl7Y=B|`Tb|KkR? zXviGC~xr?%m6s< zFw(D%!PNTGwdSi#7-$v)B~P3ITX6ZPIKzNM^}ut>9sN(uhb|TW!9=pN6qgmpF9mMs zsTi?T3a#sN3zr=f zqWRcyp>M&}dl$A~zEBCbr5iqK(b(I(wtJKNA^5&)^cwY;`=0y3_S)$GtnBFN8gb_p zTzM+5pKY{#eL|$2w!{mNPJxxyi_NyE{uPv)L8zNkYeA1I2=oh)9&K`8+)_HAz#4kw z`0?)h8j<@(=yP$CJ1l@sUU11@wJ0y>bxrUe=K>vIzfn_771D&GrIA=$Ew$^)ds`yz0 zkKlWY^x~M6)&bx7`a_kQ0J`tJFIgAFpSM+{+$B?PVKbjvEf`oSL~~O(N4%9_4Go9m zAKki~T*c(hzdqt4e?Bk`HqU2fJ7+nUU<7I9K-x59G$tGV&B;L998$&rVwYd{p9!s+hYojw>LQQQ zmr@Ay0MZ}ZEn%NE=v&{Hk;#KE2UjH+mWkrAI0{~K#GeCc+95+!P5jQ;(ep&zR;gaI zAeidYWK7I4^A&Q;uu8@q7*Xo}L|1FcS1l0_NUi^g2p~gTJI7m_B-$&1C5ob_N&g@f zH8@i3i6_zFG-h&5Cfwajf&IZLzCK9|y9EKtM@aCB&*a$%6;XUQ8?%K8HCailaU=wG z-=Y~|EZpLAlB`z5LD8b8iDM61nI&)my(~{u#x~7RiGU~v$cKOeM=-!-vaQ{9jor435k6`3(iA zhm`|Yk?j4@qROo018+p%(<$1Z|H_jE5GTwj>7nUopQ!k02hQ8MQ50;$NQ?y9_K&z* z@Qf8v0<(P9D&O)zGI89j>WB2-@p|>cpy)^F=zZhqQ^n|CBm~vV#%NXV1CABT=sye6 zh{Jw1!O&HFVtnt^%G0=k_{o&w!)j~T6it9hITU`bA8?`k_E&jFTI7asy&XW@o)~>_ zk_ma?-#lS0X=90Zr5o+-zG8)iaoHGcY^#f0Gx(f@iA2mEiG(S?jg(&Pk79ScZ!7^D zB|nvYPt?OHcjI0k$p?+zto?BTSFbyuPVm8ga|@P^BLiZvy$ke>!5g-YfXY+rQKV{L zBpixQRAO?`z_6LNp&uc`-Qxuy>Y`K5HRiOMwQV_8@B7Z(YbH2k)!Ap_7pheW0*sLW z=5+$ia@ppyjPIowUxOG4bT!SUm;oKnsyIUUEN3lO$vnr!Mt9uNg$P8tqpNRB%a$Lp zeaHKM@1Com-z&k*Dc>QorzHa9{OI4%^W9-+ZKRAK1;5%3kcTC?Mh@F{Rvs{-`t0mY z-PBypWIWtjX{FkB()*$EL^3FZ`*y-r%$Bcm}*dB_lYN z3SB7>95Uul%H6Ixe=J^olNL(NLZ)F04r?t&?3lI0e^f6zKQf?4@(%D!fd|9HFD5z3(taxjm3HRH zc}gTr{TYBKh?h&s=fYhzQihmjX-C#W{HT$_);ZKmfj?9=Hofonlg`_F-XhKKhCt8T z7b95rV-oUE#^ytS{R@jwrL?{Wn%;4>d+^jz)_FLn^NWa4ZEw{ z*Msip+?Tf8{!uXE`>4nh-GAxQk;sRqzMJKHrX^QSCsY##x#{2$cU1=4G9Hj6^B7GWL-gK0p&1AMg+cD%;%*#N#E0Bjb5 z0R>FxO-=vzJH+4{2?D8^GPv{77hU8QyyUvmUBt@= zUyGG>+XDLrq};!2hhw;(+M{q#B3By+wI}scHxj>cksi5wb>TKXbA^!y(f1les6D=L zdF~pMEbtv{f~FdoB%x$HGF+;B;1b(lRZKm}=p|F;E$;6SP&DsxL+#}Li9@>h=s@$U zgGxrKe6lIW1nQWGG_&A?Mo5}dVd|5Kjc{jB4N5pas}`JQY8e|OHexP6sw*0bJC^NV ztSoqcH;gitLu-Ls|EyIeF9dyoUH2kbHV50#!q+Yqn!(^)g1-Cm(ro{twfeu}gk7ed zeyETda#A1#D|j7t{v<{a1BF1`f-PbdM?a%Gxz~a<(*!%w3R!aW{ZzB~tqeWzFRXr5 zm|w*K3KC}i4;o0+%9lUS2@%`sh}ahuynm0>e}nNKtj}(z(Nvsuiw#<|2;wy$3$g5U zlDa6f=z<1XF=cpecb(RMH&hQ=S>;MANU1B7sH;E#hs%N`72Kt~EY>(@8Dtqss|qCH zd8#{9m3rqEjc_KaaA#1r**ByR{#oIMlMHWP5q8=z`uyc2M8qZFImyK#tnuI}6R7Io z(*x+mlx@M5I)cTksg-sF|4j1)a9tss$jB}bmY7OKc*84iu zP-%bAbN)ToAjx=EUrFyo;HGQf?BXqDy4eeYgV)09U*F%!zk*@kggi1t4zeu7s%lsQ zx(*48HxRyvPPYHtV}}@raH%YK?Y`!0xGFs%9o+u7}@+<3Ii?wjH947@IzSHN`>Y@B4zwZI>JM1)p7(f67 zr7`Bhm`2F!hA!T7K;RqAxHKsPQCxhcO#iBX$uUE=?JYMFsaf91g+QyRtTG<@Gdy~! z5Cv9T%|)3A`(JCgh3k}O|79xvaP=u8{JFvU{~t~sPonRRNiM?%{}RultXa}GsR>*C zD|cl~G$2ki(jaYFMv}HLNlY8D4%+6%RNH73r}=%3pqMuE(23BClsufoA!S+*rw*rM zP#kqtcBxWHgZU%qw>}!hr#c$vg?&XU&HOypm(=u0m1HPoXoemZ_;iw#-7aR@dESN& z3Kdz_5~91ZnlocZOuI}t-xEswPzH}Y{WIYsFD~NJ~=*)Gy&MZU+QNqts=g_ zI@d>x$PSro+vZip_dj|f?f8pWNq=wz$AurG1rxV3hp4QB3G0fyQ1I}ljJH$9_1EJY zt<%{lWN}m=OQB!XZop4X?MkIh#)7XUerL8zSr~3yctE{F-#Q_&UQHvt*oZ_s@Z2p* zxW4KetqoIh;CxchzwPZmPG7k2%sycH2FnQ$fjjH*H9pRg#f4p4tgvlKg2htMYl zR}e!V$aoeF{6ZI`CPy z>^`3epg=xR%LcA}Kj)KV&$0cxY1qW!Xaf}g^G(uH zRki3v(_v3os6&8qvCxLp6^5{ZM2{?WobOW-!=}euyNH`6! z1g7s6B{!tO$$v@aU-#CIt|6yRNfcC8R#tE^n?I(})0j4RA8aa%m)11!jYfNUf!mt( z0J4SNY5h)scj39gSyct^V8LN)>HKq@k{LJUB^ZN#E6tpIc?x`EJPhZq=fwY1T2T0r z%kA8{J>P5{!n~5jpPW@jw!2Y z(1VMW`9kh)-F;xXvon#{gOULU-tdANBQ%UcS4*vg+QqrC^6t;BcuRAq}z^xv55_S!lU!eE@ ze6J!rzQ?=uU28$#x`*)H5_WRl{ubt~^@Xbu0-iB?6HObojJA}1o&OwVYoXE0!Cd`3 z5&1h&2{Pv9K7Cqa7#vih9?C6lo( z7jIgT74zt90mQy>aRO(QIT_R(m-Kl^@(k7&C!Cfhxe;h?QT&7{MNFLyBCHh==VR&k zKO>@?3tSQyGN&}tXhl4_&^?HJhym!TAfdo`933oR_(Q^qX0s{#4k3Jmfl@+doe!VF z^1{|m7d}=jkDC286N(I4?03IWNPJZ;mwA&|!cV;l_S)atbiCsruztK@g;)rjSU*L+ z5-kbwWL-f3)!G_KKdg){V_3aFkSoh*L1rA3Yp~vWqh3nJpycP(E-2#z$iZ_C3N1<^ z`j1xHVx3atE7xKzbHnKrh?5G`wXY;d$L!W^ZB`AmY>9V{CNq=A4=J_=pkU-@PLT`O zJc@ictifw-n2~1EowHjMgQY-D%4STQBC4LG;W+m0uA$jkNh(~iBnLo634-#@!w z$$#vo)fw2&mPWIEOr>2tg2ipLtp#7-TY41$?YbZO9vHxDM0E!MG3u8sALz9jaRkUP zX)f-3(WSfZ1qeNjg@i!cd(-p9cD?g~L@D;a%1z+b^KKfr+TI_(u!Q3TwqW}fgo%=; zEJOezhE^L}b|VEr;y@p2I}3VUVrrc>T^xir$AnYjd2tAA!e_nG?k^Hw+Fa6pgaYAV;GU03G%@Ia zC75wkvs?T=xe^FvtETOmL@1M+>l+IHs#uEBTUBpkY2;~XAq%%ud8#_kO%S8UEjlcw z)dsU}+tTs1`Z}zB+rpLjBS4CoSx@H=Sx?Be_ry&H2J;Vo2#UKz=RusZ4D9E>g`?FC z^NbxbNfQl<2v)@@ql#zn$1depcTgJ})h}w5ny;QM%7HnW+zq>q;rGPrKK6 zwi{H!W%OLV|F4oCX8m8T<{zN-w~NR06LwX)J%Wk}53S?8TW?9LhSyK0yM7u_eI)4x z(pLrn5XO=o8H5O5l}4Gyw*BH6*o?}qpjXNX>#mtK;Att$1W~O}8)W%v>7#i^l{i@6{^nKZ+t^8AV?Y$N( z^}DBcMA?LU!5mcOOr(;K5UX1RP*AWABb;c!j9)#}C8M#E1v{<3tE#z%$p-|E2K>j= zlLF&DI;=~ZX?lA()}!FR<$%`;>q^fm0jNr^DcH|#r zw%BgsDwn8DGuj6W(TB8{RKRnc{6y85bWCR4{pW-l{rLdOFW?h7v4V5L`036uiL8(# zZZsDYX&F&8!K^f`Asq$dN{joC9#?#5+@Lv7Q||BSA}m1$#V?A%CANY#&;c{H(K6-3 z^Eb{wS=_|UBYdxrS_OeOos=rh8)zX@!}Qg@tr_+AhoM74G_EAjD4I!)?LK=sc|`)r z)VWvaq*t*23sZNrZCd;@nRZ&*@nIa8&hI45fn9fRy!*zN`AD0$+xWlY<}`>h?~?zw zZ4^)+jQ(WGe2BcC4f+<6Ok>pV!9ApB?@NAa8&+6I9YVmKYqU4|#8>cXm0B^KGEy1R zgpanWoyF;5+(%SQvpI_ep~quA$Rrpr(I4s`5`R85Q%>&Ocf{pC>T*LWJ3wrL3J=qg z!Yej|6EqsIW72CiaY7O2S&$U>su33xu6w#Ueb37aQ_{x3 zBhGJs_5wNWh(bSrp9jB$os%|rHiqGtv)~3q?WFIw>)Z35vp#jCYo@9)DBZ4Barg5Z zwMWJj923rkppK{fk{qWX6XKUv*k2l*DDGWBAV6jsJFe=46*t(H?`tcu1s?a=2hvT? zBT{{~ntI)u1U0tJ&wGf^HAgL5Uf$l0uCx9G$QKrkZ#~v7pEFA$P(y$6>JpG>L(f(q zTNtaX?qnw!*&NiT5II-^`6?^S}AaNZx1dI^TVaeYKH&lylcaFwu>| z_}LSVL86a;MX^be%F`-FN|iVKOO^uDqnakSO${#;(L0FpDVtIi6$wJ@if}ln4H}Em#n&qo9&EU$mug?3M}?K^V8mE2r9AY-JJwJ>N~`xr6oYs9nO(Q8plo; z!(lbt%G=#H_@rKx3^=w0H|Kl)A5&))6IUCp;hDkRU5dNAyOrYZZpEdzI}|AHPJzcCr_bfBDU1Q#hIgj>408sbiYX-m;t#QLLbbctIkT0a|gXb*h!UZ zjH)m0XDFF{>5S;;XYNL2G5B>v zE(B4ho+n|EV31QLQ>E6->Mp{Bry38T5DbmpQfC?Yio{dW+dg`i3i&32DpG*+NAs&b z--J*ySi^JeQ9)Gw$Llf^17_`u+GVdMYh+&B&>vBIBDSLJPCwBc^()B_p~klct*V$K zC=UlJ(c~{Y(qbqDI~URzW}F5Q#_M)d)i}<$T~OhFT;1Gn4?}QIFvTM@A zv^*YWn`D$CrFEcufeQUFk+88tz=V!?la34J*mMdITQ^H20oCZ{(IZr|K zKGI#}DfROf(Q6+$d+5(*Cr}{ksxBmhdl8yhao_9Ltl@s2fNHGoY z3l)b@9}3^J^5I9fLlKTDzO}6v;(9?n@3J6p6ifz?X&!>%e4+;*NymSfI6ly2c|+rH zNjCj3Z|TbWyV>uVi1jyBJ6UH!O+tQzlN&0wYQ==h7TXJc+RT0UO6vQ#-21IX`m#af zV`_8cZMA8NL60^9FV&KeP+Xk!wyI&<#*6#=8JpNWV?Qwe&AwZb*CkDeFAk>MTE_c5 zC|lugK~2%X_vb+T{d^*7g)}$!nI0kP&-Sv{Efis+#=U)zy+o|uU1X1bq(X5B98L^2 zLyaE76s*1%VqJKdnFS*@R%5@qDfoLLfo4SLGT zVK_{*qh^+x3v39iQMG*OQ>`BZ2F3X2KGzY)YVEyPa$Ha7@aUWM6aSQya@02l8wkIoMdE zuiU`Rj+Ica_}q*RKgUDrx$F)x;VnlAIaRkBvJrB9yl9=dDD8r~i~TL7a7wb-+J5Kk z_bC<#blq6}voTnRx7NyIQK*UY8~?dy7Z>rJ5jQ?Dp6lLG^R~f?v?U1Y@NQ>qQr%|~s>rNr#HvWn&qt7!Bk`u>( zFy96K{m&i~=T1f_3#z&#L6I-W2s-0%T{qp))oGO#Tp~}{`NWn$Gpq)tuz*B|3Sf{a z$VuXw;DVgZiW4wGXk3!N1VuMYdIjxBSh77j##F5YiT#w@|D{#e6dBZYh5;0uxg=)G zN?OlmZu~8E;$V=)!rf1tCe;KxCM`~&M$faVLNOf~o>4{*(9PRZ+h*J)YJi_i7o1nJ zGyyt9!lHmO2$F?A6CPv)<78#Ba%TcDQ~Et*6ps5)r)=gTH7S<~wrIRX0sEYM_R5}~ z8n=}}_{mSHi))9SpeE)(9{>38suYD}gF(Z%`Fr=n^9z@j67;zE7N5Uut)ER2(;@?c ziThY%*P8kU-}~(OP`?p>OFQ!1d6*=ER)@7X-&h2EF|4ofuZN=~e8?61m+|OP8q6R% zYw)ouW>BWe&geU_OT3IHH}&A*W#8WYu|H(dgJH=*3PICc%*#zUXvh?r5+fi^=-9hKu>JOLFCl^QTW0mQPJdc;G=Ce#+2ftLWxp)y&9-Ki4U}t#p=VHWp~* zgA6;QiSRc1c+1iznx!S5G0Rbey0iXH+#GpbpSJHmp-N%Y68x1FdFj8OdQE-<0jF0l z>vN3paQ22TQu!cZb@wZ*+9pj$^eNl1U^Hdv|!q6!wG7!M7ha#v#p~KrghnR%F&}ySI2X$ZgXn=0eSvX`yK91 zoTFOEY-2vW!62~i&oC2&By6goOLv5qHpy4k$T^d0E_j!rUwhGXDBe67=Uo(yDUCBe zjz3VJLcn5zSr^&r^CefETQSuS`o=5P_mEqouYc5b6hA5LE>;h>0oCR5N=4obEAY4YjX=y!gJLsp&QqXdTe z(=^fC-F%|MJA?cpH<`*nmW5V1?@wj(24)u?5Ppu z-o@)TU^{+*DDbdVj9N8*=ESJ@K?21h2nxTo;B&uh!zwx9K~q)TG>Y-V#xNkr0Jo3w_2@13+!)8N<2Kco|V_#0$i{!KWD>j z)SL)!Z*K~e?R#voNeVG&+&dQv_u14}Obplj8odgayH?+O&bM;W(C+K>SIoz`zrcs@ zJM(*Bm$iAzRAz9Zt2gc5Igop_T%2+a7(Bo#7>U^?c=93y41X&w#hx;fO#wsm&ZUAg zAC;8xbL7T*C(9is7o%L=B^d6;o+A^GAzF7D8OwR2^zv&Q7{eKFM}T0y=TU=8@Z1?Z z=Aj>qm^q2ru9re6K}hixnk{LTc$DacAPC+!k4X{6zzy!sS(2eaExyuAqM)uV71O1P z%j{svs(ui7g~Cm3o_4mk06(~$L71i$W|pa`5>G?{yQu{64IHW!u^7y8DMl=6)iBpH zeXVdvdZYvs`EF&c4pWVh6G-m)&aS#MBHsU4)4;%Rv+^wPU3Q~Rd3KYu)ev9<+Is|D zlnvUZ0#~xk-$Y0|!fDQ0uXKx;yxIFjFa)`QZ2D(|3#^X^bSJsi%+&A2rDDY@rqJuYoC)SrLDcB!cnK|>FU8l(j9{xwdB|jb6uXn}tg0Q+P zx_>p_W7E@9->__fbGg}zNE&}T`T{W&V042QxAE}s3c~}Y6JXu)85o(E^xfvcEUgaH z9)A2#QHn|et8kTht9z$CjE;sPflOa>LAcL%$MM5yA4g7qD7wJ1QlTb!6I(>hrZ5L8 zQnj3Nmc%&m%_-EiBu1lWoSoSAiR>Pb0GAsGqxkw;{%4=O)V&3ep;z)0bnMV)Jb47^ zt1AoZN&F)FtGRb)dlM#~-C47>EI^P#Wns1a8r^E@cb|70qDQ|XMKU~(?1H5ah$VV_ z>S6PZ|2#e-9^KeZ$BTgrqt#TUcM!%JUd2!PlaYA&-53#}bhFV3WA*wrH_5Z`YmAsL zB=hgdJ8qZlY|IC&+J~l|uc!Vb=igJ2iu!-vdnXjh)8uuO+YB_X*lcMzj9K8I?b}iJ z@b+|AwM?vt$F2AT5}$F%p{W#wj#6KPw$$=AH-n)w2=T%_bo%E~N>y{0c+m(D6scOq zcS}x8VlU)X5J@QVaoyFAMV zzE1sB&woWG74?n{e2#y`2sprd7*{5&cj$~kD2y_@t=e|sb4KZ^=!N`^A6C4#H!m$~o} z#^7)XXG4|m;>a+OIF%gp8S2TdOPpamp}$532XU(Q(&4e4xdaEyYNhfA{{}x9{Xp6V zIWL@MQ5lA@*8bF$h9SAD2MLTr@Wu4(GA6=}_E?X)z!;AXkvnG54zvgM8m>(d;(eQWP)}CM=@E(P>eufe@>gKa6oL{C{M9X$^8%n`b<#yF@ z7w@O4W%g+sp$hfSmG8+Eo?`nCz!I?qWNDX8B&H(Wu%M31TJ3)cW92-dKC><{-{rK+ zSh{U_+%Mu`NtaV?6R6~CV=&Zbp)AuqZu>GeVmDoAP}AXgi2JZQKV+a=h(vU`p|V*7 z{eEEPOMESUG`&?x(l^#Qc^`S+Op+aLMGe~26@KjJc0wp zZ$xkU&kt|sqJ4ocfv?pU+Xq%`9mLbO0CxT1I7p*W3 znyjYTI_^k#B8nLr%AF<%zmy_MdY0TFS&}T2H-^FaKmWbIZSEFU*#d^(|I=pP$#J&F z>Utq#;qcOZbR?@>-RhCfu%NMEQCP3+r*XDhFo{XUD(r>UN|w5L2w2cILnrc*qF&XK z#ji!GLzXE*mPau8o*LlH*1!Eo`1b;yAhvnkn@E{;(#6LkWXk{4En|WvW2zbiO4May zN=(2^a9t>NRU<|4iG^heNqZMS`oXGdr4Xcyse&3ZP=MiW@6E^GyR<|Cw8RQl>|KO` z8i=P61>;ZW?JKzLD61dhLsD%WLin>}UzWU*DBxn0c`QHse%~i935cFemNYP!xbS>i7nRP(kI&D6TBW4L zUZ2G~*AP-S4d_BE&as)WiuI1<<(9by{jBiLy>{bJ8nL(0+O|e zM-#9>1@GJNu#GI`5){ArN@eYd02?%MtPJI+HC%{rKXqc53J zd@r`O=Br$sh}q04*=nx(35uUWUH-i&6;Y~eT4r7g^r;ay-FS%vdwFP#7D<| zax1d6%m`@Ef>f}m)|?&JzhdqOh6CZhc}_aJdq+D3{LOC3GY<7q6N(n0I&J#>jAkqK zdkEic7Wz}J*Qnw$I}IEh89EJcKi*9IiC6kaazGeW+;3!v9i}SPC=&evi}Xz!Lmcrf1&%-^GE(6o@P{F};`X{b38~Np!NJM=)0)y$>cdp@%)+1n=@jY5K7pJtf(j7!|9*hp5 z)EoMk(M8|`3a5Ck1^t5O*Ql!61qR50n|bc06;g+l0szBe7}@l3y4?3+ex5roFQ2l+ zsN$DHOb+#fwpKZvN)JY&PFV*bq5`l#fPM8-AQzY&o(x5mNeS4F3xJ-5vdDsJ)*J^j zew3t})zp2&DF0>$nydxN{xEHgcd2+Gm1b<@;KBA_ zF|*#1GJc2!c{G`2wi)#I>D|*-==U~QIv>fi@hRRv{D?**zt51bYc+u0KrE2liL(zv znT8GsM~<6hMlUi-Hmhk8*=J}=`W%DK%+c%<1>&bBRzMXCt~n8CP=t01Jv!oVJCWi1 z6yrMD3HsEpq13lbeYAo~Reg=Z5~LlHdaY=H@0O2Yumvv%*o-gE0@rsaW=q`fWuUv(OtW6cAtn>agHuOzi=_h6xwp z*N;r7sRjrX3-g64+WP88{B`VDsZRui9*H_aP%1e zv+h6v4v1@p)a@s5EM%hqleJjS%nSz5s_2a#Y^Q`pr@hu65qsP3l>L)4!zIC3*ZFfV z(}c=ICq%wnens9Hz>;aPEr-h#p#u~MT57MJ4bH&WNB6IM^6JnVivP$_NRfPcE)m+Nco`4;nb6Zm>* zSMA62yv6$J*6}jA0_6IV*g1rh#~&W}W&UFDtSH@LC2IMDK}}wdHx?ZJ4djj9*cT1di|dXEF(FB+8nXM%KeB0lhp`ucZkz+x{P9iF+wtd?RacCj3eRvpn@ z8F*Dc{`4v#wJLRJE^+7vHja3ntq#s?VvtV0d(`{SN38kxaQh;rH&Rqpu@<&Z)R^9? zqvnjH&eI!;ER+f*#WVu@Y23_s#F{238(j|89!5Ut9g#RH6$2y?MGfTHf!nN#XRFx* zi-wwtKhV~i!Ri9^9RJTCwxP(HE{LujpI`xjp3`ki$I`xMe@_7l8c%}5bnNRa!#eqx zR7!@Jiw;ft#ZZ->N$d^R^a->(rqv#C}E`6Xi zb2i)~4JvfPc$GRJ*P_NKA_zlA0Wr2LdYjwit1OIEI1VIfw!t?^i}8>PxH8Qi_j-%q zA45K=Lr1BJgWGmyILJPv4Hq0H&&1CZ=uY@e#1wqcaNO;Qau8FBbKJa6e=Tpz0lcLT&z_VCgc)>eH;K;hshnrB?x~A`~~eG1x+||$8UK( z_w`8d(+X<#1nx_dWE5C&HU#v^5bl@%?ns@1P4`knelk*Ar~v}*-jYgV@3o`;yY`$x zAAe^y2p<{G=8*n#=dEdtb><&??K0Pb*PO8@dD8gHPf$lqO}y*lrKN>xjX%`XupiPH zni%VUH82AOLo;lo4WOFx+ayH$`_If72Z7pzWDTM}4V7N3!Cdc6>?tAPYEW6D=f&lK zM5%RnI_vnt`ocX}O#h5{T_ApYVGAzaVR*=f_^oX4Xy4r2MpJz!hQvw0YCM+srhhs< zhMF@hJ{vP=Jw=@qx((3lxG>?bpXqZniuxSRPQ1N{>-LT9iWJPBpJsP-i0yhdaev&0 zJ~0*^+q`i9khWX@hYLZwPOKYn&h?y__YCU39r5GQlO-{z*$d%3;YuTc(mtaAX7kt$ zX7&lLZZhlV=1iK&XLSC7r>^0t*XaDg>euD!2jVyx^XUnFx8{?sUw3O$k@%-^w8%dZm^|c&hp_lEK_Pf{e_Pf)!>zy4-zw32M`*x*CfwbDvl$s^SRYrI{wM1@ROREBm zk_8^i=l;2yxA?gm&-MUcbb5OeTd%n<^V_qvuS5o5|77HAe0wF6C8d`8?N>qBr z2qIT#XEt?t>_WKGc+`6HrMZMftXdLNNthroGJNujjfnv&FVFA}vlKrz>U9d4OX@n+GlxE2dDJ-9GSP$x@gUzHqCt<8s=o*M2!C-3JCJe>m*}X?`lsBmJ z&<^h~o2PzhcU}AR&Z{IIUJ6z7O$GGceMoY7k3CeiMRU$2;0yyc#f(@mu-{RoIlh;wIwL2IT?BQ+{TxM)esTftvq!(0T7gZ!4X0~7nd)xXTmqFKw*$i7+CzpZqAWakbeXEuv9tY6-EPV->e^PnD=Gc zlSEA^BMz-66Ht7C1auTU5Xx&JFm>e_+%I zdr>4Yb?Rx?EYK+kRok3zCl^PBOuYq^!z8}V?|CSnaBu&a9vXp}17I*)IhtA>V^eel(kLYOE;!_;DBmcTShD^Dxr~+(KI$ zX4P$!7zBRWxu$lL?W$OAb$9OM{F5!WY&@dgJw5Lw@|y!xCLle#5gG+3uaW&0MkOg- z6Mvkb!aO(pqw?P#fUN6Y-qSKbcs;20J7EmGwhbULk8+j_@~uS&7=Xxak*;a%eUlWh z88czd=~Ih+Qz}1v>Psc(q+lb+W4u$(|i0SrC5lGkq|$Me?MR zB9!G)L>|5e;!0zlzY(hIT@Sp;wSVM}ZI}OR?^TR)z*e%?)dX+J!0Nhf7tr(T`VYYX z_e<))u;JDfJt2R7r%gXBv^P}#I4eiB7)~x)*#e4>4al4AYX%qmSluGi*`~+hYk^-x zL?ytTwU&(uS~N7 z@n=!D$XJKg`(UC$gtk(&-yW+l3c2`2x@vj2y{m2PSj z1F)1OxUE9juGBmDsE>tQd==;Nyp_;@TH0|k~$t}c?1^u*?obZ}_ zJmzqEgz)6=}XKPu0yPjlKBu>YtO7w|RdK zJY`HdpZ)tQ=gZ(-S3 zuq+%WlQ!cg!+0R!vYk?^!{Xx1COHc|o{khdO!=>Xq%4cc;0k;i;8}E>wc6RwFE(_E zJWs?sBxVdrkq$do=`$s5>j#d5=NP*N=Jr=BDKoFhR94FgSgkGz2o5SOEoOIfS3})g zc1Z2EDL!I*b8R2dd7?+a23Qz6hIq6jkftg-M9o{zp|x4o`!$lTK|*|A7^GMoTyx&u^BP7n4sFDGin@tC|B5T-QtUiaks`z`b=;qKWNBwLo=d8Y- z!vV{Oq|P^}={}q|_|bLU6l<`iO2S zV1-vWkfX9+fB<=9e?Ng*zVqHBi7MTs)qQLJ6aV<$;{C7muGoq^DcFUHD4>HM-hJiy ziu&4Te2)ZlQoS}e`y;EnUe0rOfhPx!d^-f$JA1MTdNXP&hu>ZJ37D4TT(hAEZ>1-) z{(`n|z80@Mv?7k?&u9qOf%{Es{z`?%aIrY-W*P%LkD-d8c7}f=fUzYRR*ICp1twz-VM|Og|PfU%a8? zc~coR=@OEMlgcwSN9x1o-#6I?4+pg(+z3SEV42xFvt@7EvJV4ba+r>bT_Q3Nd&+>| z>rbMPym3{l5vfxUANFPhT}s6s4qJVa%Qy!q{a$H^1`DK^w#yu2P3li+QV+r{$?C*( z1v_b|qda12G>LspP;U;ir9p%>=Qq~`Ypm6vttMT1XjiRpgr(p3EWbXgb#TDCM>Yh2 z@>;53Rn!bi;a{~_;(qotjyH?F+1n@vD|ve^91Tcz7I5jlQ|5&!|7y5jg{v@F2c?fi zU7Uj1R@HxTK`wHYIrXO`-53MOZG-%dP`P5{(B1)gZc(uVB_&TcNGqy%w(t&`_KB4E6X(<{$whHL`N@n&x*ezFBfd{7yQ2Iu-#w~42Gbk5l1W!%Yi%f z_}!Y?bR}jl%g?jL3O@(GQ&J`9z6krAe@{H>54QM1Q}E~sRZQ2RxS+UKT1Q62JO=sw zoZ?2D3rFM8RI>!3MPm>?b!BFy_hohVq3veu1DR;tv!eQjbW97z>PiGo2 zHuUrO)H7F}h<`}nIohj!kjvR@{_Az;-@oRB@xvmlyu0FYKu5~FK2@F-24aW6xmoGC z%=gHObtjsc**)KMl3N-bNLBJ|HmdbRJlSkOZ^)XcJCP|L=Zy;bW~N%bKfB%9n?-Q4 z7z4Ka8fsVhZi}9qFz&n-Fw8isJ1$2zl>D>ehrS-X?47>L$;%VbtJHpb@$7oZeXBZq zqBZjQv;jnSK*#?c1B3LKQy$JJc5uaiR>TQv;qtqCpL4yrEXoKQ;5(`+-^yd@8T_gW zC(`;eQWNW%Qpj?w`Gw!jx&aMbt09SlOhc%4kUgAI5-S&$JZlc>N&cn`piO|rS`>wz9>kHd+_29Dhzk*D7_t{y>)>c*rQm>)R%>;(W@QXD>v4?!-I+fnd{ z@5H}F)g3 z7;7O(+_b0gmg>OF1-a6fFD`7tVux5PEG1m4EvZ1rBrObz+oVJsN*Z<@KQ_e|Mmh_N z9Cm~ycl#yBqMK?m%UsNg?O=~M1hLb=V9xyoc0m?rPP$eT`ZrjIrQ9v~*3ro0>wL$M zs>B+MxN;~XiQT-`N{EgVoyl=^k#mKFoFD7K{!3zN!bv}anlD)HIQ^$k(h)HqmY8^O z(>78~tH(>2H^VCIHN)7Yb2S<-wkq;N$NjbB{L|&$G`)Yn?X*&hw0A59 znEGem)KaApEBS3k3+WJaTBTRvOX7Kul!Eb>TW?>os&ne|`np?+I@^$}8awAHp`piW zMfNw8WMi9R>0ss4^#ydq9yy1k1+VQarBDjKj` zn3p@MLN|K&J^(FtiY0Mxj$JnL zb71rvwPCPsOQhYVT@JZCSC8;-Ci}5R3+tZ_cDtXgUkH$k1q9yTHC9$`Gno2ac?RD7 z(cgGnpv@$RnTJ$&JR-hs<-f&L``y;(qoBPLd4BX0c?>n!5-$`I>PbAg6vUiLsRDuv zrlZ&kyRixt{APWB{Y^A($1HB+Ic}rJqkhnf!-KKX9jWFjzA&|U8-GU)jo(E^0eo0^ z>?WNVY=dcpF_giyq=rGo@5aw{Q@|S|%s_51lo5kVA{|87)_+QtDj(GNdm}gv8rH{g zT~Mc+Og_0Vcn`NXb+kM77*v^uRA1L>-vpJTSiD9s@~5-i&KRkf1v7i={Tr?+5^7q< zDdA@_nPn#>%WH}hD+{IlHWaOLoF>D_oFvxFV9MqoF<9$p0%n#1DjTW^ZZY^m&!Bbp zu(>-xg#YLBdOeh+H}dcw5SK%O>*ov?sr&(E+xMeHH8f}pI^OI?kh79llpOm*8{t}Q zobt!XFo`Fo5~`6LCV~{h^7mhLa1@qy7qp`M?vTNbjc;(Lb4^tmHa)$Ms0FME!>?8M z%MKcUgRoOES}@ZdXdd+HbGDlsgK^ewGYU3cv0iVN>kNZk%bnk0g^Tr&zSE*&wa8xM? z>ezXaiMv@MW1VkhSAp4sX=cpBvkCUiBGz@$EVg>-R{I^8@6Veoq&4l`oA8~E2vU{>YBGXMeXI| z%r;&RAGU-o_Q30a9<2~I=vi0rQr98XQ+ym+)vW~SxDPj5>_nn_@Q(d=9otG^#N+2< zIIHh#LO@i5mkr&5i1Xjh}b`!zaPtkNXSev-Km zmk3lIrUunTlf&4GEx-W^r2uJztQQ-vcswV2-JYxEYnsbjd=PqZC>$*>zhM;A?$I1u zz?21$L`x?TM3I-3w^oFE>17Qr*+_}F5n5|aOZ_0DHzN6|E6icxIB`;c=F5f;Aik3O zCBG429Wyx!ehWL%VgNfI;xvpYbMRV29;;;21?`)N+$$}CcW>px8CrmaWl*8w4>09e z^o2QrAVHhMH~&!p|I_2a*mpC3lS&tdY2Ii+?v8K-uq`fhn2v4HVr;!x3T|#2Nh@-n z!LlEfMg^hY$ceNYC|OAYoFJbb)WU5&>)|5e@q5Hdt_=Jgu8qL*9F68+pCR)fD9Bfo zbQ!8aV(?9Y;Zv%xWRCRs-szFZ$>)H;`$3f%wV4xuHlezg0u__pWglg<)hPHYtDHa_nb%Q)9y zn?83P#$l!YMYnrQ8sax`HFVFVvM|t}9n{NzvWSd|uzIfH(@pbXaBIeDFGY9}2Z!zn zhO`1GflNB{|4omf-d$W2!`+z{6IW{-2mJV6*-@JHyUr`F&uwq6fG`l%|Mjc(sp#AD z@bFhvArS$I(`4%%UKlCGQ+AmFRZ4k}ChxtilFhY66}DWcDol376E*%PFS-6LMVdmx zs+3u{v7^y|7IA%*tg;l^p?aP8PBEAL3pX_MeK~o#K7jt7NcbjHKpFgSLmg+Uir}4 zAny15v{s>L`@MgNB|onnBiU#een>hGA~uWyVF*k6)-O7^>doTk>o1y_af=)FRuD=hPWb>L?qplWNSshE=jHWQ!JcGJQa~MR) zmhi^CBC4dtVPWd~-(to`^1lqY*7~CDuwJmSi1d7a)(<{_e?8hW)YeJD>~g|)lxm)% zhHQld+3xR>i*slpO1vBT78|(QHXnhnl&6jFbAzgm-?L}O2EE~_F@XZ5dwk~phLVAu z5ADyB9I1=FQ#s!G7ksO{xz1p@0QZz|?Fp+tpjrEB&g&EeR{0%%GZPGMpDk>;3(t?| zCD4Aa5ZU{5IOdT`1(o1r?V6h39MQ?HUOkLo;AwZ1$Wvt2dBr==kHne#Ra<~e`3O0|uA6o1V-m!fV;Oz9iTR%`{ z)*jQ5mt5|u(Fs6!^1i%h2L{rr6gqptZ@pkKo>896&vtFI7v*(fb|IJHB}w%?2h-Ti z9;mfK5@Y*cSgzbZD{bmiyD1)*+vMcdM4R^G;F(1^#Ie zDtGbcaJ{2qT4HU7@MFWy=aJ1Hl4VPeUj0-#`4Bd!Rt(NQ6QxE+H&HkUc)Dcj$BE z?$&I9A#Ta|JyE0vN`l`eXg$`p!1z_K=VvB0Nw6}3t2o=UkK>*%Cr>=8Qy-cMaw+GA zQ4OO{(>ZivjDW@93*(@nLH7i4X8jK7DWZaq+qCj)IlD3LTh)q<r=jYs8~dY2dd>DR8&+DD0^aPPkz;%y3hjFpzTFg6Dqs3y= zDHRT6xnmk@%8iRqhcw-`&dWz3U*oeXS8LUTJBv>51K>JE0nN&sS*AkUA2}!%MtGONA0ZZ)q-|H zsnz#ul7seI@Rf)7`1pEkTUn-@Re=5uiILX@%(ZBbn(?>-d00PyJ^cb~;>=yWGwe=X zr4R@EsLG`XC#nJd+>k9fqU;?NW#(SN-)$dM(`}NJNctCbVIo(Y%-CYFsKq&>>#iM+kqRf?E?3@a9%((}8ncuCu7vmh#RP-7Vdof3P!Ekj z?eGB_8NP|8O?v08)>6~KXB%1Odt3WryEPZLu&Tp<468^C^ZCQxu9JJ0f z=$4}JJ1&+&?673eK#g##buX{~#rF<)M(lBAmtAQ>g%*~nc^uyRGLiII{F0HLmBt@M zL2p+Mx}ms-Efk|7uN~pY1jgVpS$A!$q2j}PbE8Kw;$m#|p!VNq83=HH2qHQN9EEYj z3sy_z6zhN0lc!SToPxez`rYERk&AMclR@G6NP&jVb(>cOGklNo-^h&@GOJPS1*sNm zbs=AKK5)Fl_@XO;&G2Y~vvoC%w~|Ud4yv;dL#rjQFipctLdswXYERIc`tGs9xuyMt zw%uKb{K1KLQ#agOqaci#DI_?Dgt)0vM{1!w6=FvpKFs}IGfi)*Na<#h@eEqOEF$0= zITpFiN468YDDdAI=o2q!MDgJtNA;A`P+81fxLd+JjX|Ib%(6YnSH)sdbOyc%{Kgzr ztw94&2$iQr6|ig+;d{{!#EN|i4yIR53Nj4@l2mnmNO@w?Ib}lZhueUKPWveJDqv78 zFK0;=@m<*V^}pnYZPeYrJ;BbJ8TE7xxzuu^?^9h&w0+RALT0&9nEtxkNLi`o z{N@YC{k=EXV`%tgCT(%A_OLnOL}`ovcWdnDF2~yvErHe~Na|M6F^zEc(t#qjl3A+b zGOmLlp-xfdB>+Rp2h5Zj9VTZ0mo+5Op=@qdoC4p2fkA>X!yYtC!*hp*hGuLs$*NSE z47cL=v=zhJd5$Ie+%LNNJX-yX*jD8>D4R>$KbeUBHRN7JB$8qK#1jI*(JP5vO1w5P zPUE&1OWUIqbj4p45Gy{Tz3(`ZNhGN`mSsd@WsP=o_qQ9Q!f_Jj%vr6|_ao)t+|gfe z{f9;D{4X*9*5ij>J;4iV6&=}>e|$-JkM=i&BvEXuOhbpVXB2knYFo|ij)O6Mi4!Hv zju(Gt4L9;bh2BSRkJ=*nQco@N4@~_&Oo?sxn3{h^hRC#9FDycKY{LWJvb&>M0}nib z)bPv~TRhJrJD|&t0yRUyrycntHv$1t_7!nWcL5Xek4e_6Puw)XFj{Y z>8hmHMoqp8+s@#585rY?YeUyF7qkp5)2!8BA>>1Mrc(`fw|5vWRx9xp{vE!@RCpcO zh8$;<@sX_%q%p$WA?ZsKl>r)a{*d$j;FnYDq>x~=Zyg_f(6#y!d{UI5zdy5Wvcf^DL_ zE2t->Fk-eB7^DgBQ-~F;N?5tFTqS_!dHiscqST2R0Wr}7EhuR219E_5SkuSa(*>aR z*zgrd#NkUVt+~d*Wx`~{y`~T%cYI3$YPJxd);QxNV9%SIo`Dq(J?b{1HnL=tL|Ub7 zH$^L^phW8q>0G8bdWzr_Dk{R9%amL7heGjkQ&En@rvTW+{^a#2*cEqaMQynDlb)MTzu1kB^%4Bi%OM?*$h@9|`16`MK9=~@Y{Jtyp&VyH(Nu8m} z?b0$RE66bzlDY)3Y=mJc{W+`zi8B41WJ$RC0WqpvXk%j%MC*{Gd%4lRpN1~@W^k%{ zL)ep*GbeWOrOvX2wp?{Z;2!-);^Ptm+DUB(wOFAboYVS-4~aAjd|}I^^00bP(2Yl2 z3f6MdU~ez@%NJlzRMHgn9tY|@;oO1tSXM&bJUpA{VFG95qR1`b=|+3x(a{l6xps37 zC;Jt9P(OMfc~Elc$9zFSL0@m7Jdr=+ta~Dz64aU?i6Yt&1dB-3Ya` z4t`tz{o+`!LVFN@Q&@z+BN8iN-nB6n(2qxmG0H&&CFtGU&jJXB4-Y5Yp!XSF$rIWr&GL{rU0NfIqzg`&z2QJ1T4S z`E|T#3Fwr3)b_k~tF69x^&`;TPZLgC7s;|f@+-(@Tf+1t&%yC4jNifYd|d)P^W0-E zau|I0-Bw$c8-yH@jYdXNwITv}3U`vhUoWXThtqZ2HW*tQqoQ*ds-XmlyF+? z)>9W3N@+fyrD4H+!JQ^ziiN}PHpKaZklzDtC=fH^TBOszyO`)cMYp zp3Lpy@^duzY-2O;#^!5n-=)Gz55O}&p@cxI`I06k6!?{*@RKO)Qt`O{FD8S z!91k!ni3fWOMq94^FjA&;&^R6v0pCyeYB*gkdPEFDbhYNu3anTbUDa|}jjADCdxBnWC?Fgc^qJQJbo&a=7LvmNi z55*+7rm7#fEoD}CY-CZIv~ve$BcT+~2nW!6`CIp5_@5<&Rm2K)R3$;*T|+ZxxRP`( z4<8YMP)hw0cv)3{cf28LT~rtQicZJl15+B(&#w+~o)5MU`dw*XzQ|H4pjz=|5C_3$ zOtHFncZ%7{WZ29jEU17Yo=E|#rGaCZove17uBPP^9Lgid?b7s127-G?zafYg(z(4s z27}rP+d2-*dHfv)`bjBuDw*E64Ay06u|P;fkl9rc7Dt5y(!-JHN>g)nLWCz)@djeZ z!V{ws);NpkaC?`?(D?g7YQ(6!y<;an=cIA;>W6Mp8RWf?{C75VDAiEftdMYKKa-zd zNur3l;eQZA8Xgh)N9AytTMhKBH>-QI=wdkm^d&w8&kD*yHg{EZ^*^-8(GKBXykYz} z**fcFxUHX@*U$0rgifTuKJBd1MEc2ChvuCf*Tx(r+C^*6NdVdq&%37pO$_D(&%}yZ zE6%R|yWUJ!9E=fy^Ng8rry|iwiAmmVyf+LyU(nykuh1$#Fzd>wSY%|vMFKYcTz?1J zy%LKK7ZcTiP{5*$ezRJ!S+3IyO;+Q|VhWT^^Qdg!Xo&=FZX3DyHGpSS*^2DzZNm=<$MtVZtse`PdjqMV5=KA)RqK}u-$KRIO012ofJSrWf4(Gu z*?^{sIQLGUA{nIn2~A7~7JILyCE|HLxw}<{OSUsvv-m-T5jO6a>z*|3VSKcTk`Fl40le|^&dJ(fw&MiJRgKM`rFSy(v}cOeB0 zPab{2O^`q_vnqfAjyNs|6%Zb5V9qLq(b*D+>-r%(N<6I7%9wt9v|Ey(4(`@EWYYfJ zjSeOAm;DPGnv1JP1V{ovy^D1Av?=4q>6I~7PerDNN`RIYk_H z#fwMzqE_>Y`SW;IdWxqOy29O|a{#Q#_pL<1K#+Sr(=gcb9U914{n6d7TNf*`4Rfxq z+yaHeaw>A`B{>uyBosD`&C~J3@im4)8wylCZDQG^mJbkm%mI{~Y5P) z^!=08E;72byF7ybqG|oQ3A?e0h;a}=kr*hS{}Iow;5Pb=JZz6{`r}H|6iI%L$i|mp z)^nd1SCbAP@pkG6$S94v@0f67LI=&*GpF{FC#*sNUf9u*T}9dlpp!*U?F@7P&OT(T z^#Mm~z-9ak)xV56vhm{%rQl7$<5y0E6vaINK29YV?_y}L&2sv z^_OU)t=pAhNN%Sisf4KZ_j)&@9IByz-?%_}Gw($1*la=I*RNrOcZ|HIT-24&T@ZTq6T zySqcW!HW<{k?xT0?oLVR?(RmqyIZG1-Ia40i?Dh@ zMRyhbRVV3@?4`BN`a#7q`{caxlCwyG2JRAZh#uVPJGQMA7X^EXgKQv1kpV{ux=Hm> zJi(quixE^69eGv@=5!%K3qCfFvf0`JIN1C&y4po=$o4qu69)%4Z{r_;7=#2qt=dg5 zA%3~(9Q2_U`Y#DFf0{xgbdJ;n$ec<X*7Dgr!*@~ zG{G%rywX}JNwN8~p%rC)i$$>LU}=%hmb0{e*9HgU2@_Za^~iKC{2wHB7YkJuoLqfb z6dGrUNDAl7r^erD@erz;!C?Z=7Y(wQ4_Os&9D*VZX9F&rdHhs)Vg6t~M)ad;5 zZN#ivaWA;k;>5ydJ+r;8SeF`~&NJZ)u#Fx};nv~mnrVqcqqo5KUymTUwBz|5T!Uus z__NG>i53!{6+Rm|l?^N6rJJ}|uNn2l(_VL^oG*GL23Iy|IEUI00&DozQ}-YedUcTc z1RNs#4^1@$!2FVoMgeA&u;wB1z8=>f07`f{&+~qW4gCa$SRuS89yyMEhIKs)-qDku zKkQ}j8(IEI0oHG)cb<;2hs}UeGSAPQm^HJcK3yKZ4k zR$RF814l0Xi8?KoIxU;pl`yzz$qM=X#5nI-a8&RNbX0oyVFv;b&(D?O6X5ULXm-V7_%_R?dXA!Jy8lG!|Iw8Fxy@a)(|^5nKGnt`l%k^Qkx8T67NODU0NKz zY=eRB^6U`q?GrJupOCkvDdvhsFNHW_K3Fc~eMmPfYQ9Lw%v!T$y3cq)1sW(od4SLF z6}w^(ac@*b_Ye6>e2|>deqm20I1wY93l+=X6yH=v;KK@9!zxD{x1g156=H^AkxmtG z!671^j0RiUj5APu{lM;x7#NE!APLz32@6r+s`D?btHj4N+WM1}*t} zwGM*x1`fMI00qqtinvkL5AN5RxVd?5RnZ$!*p^A846)?>d*EIfJXp173!Dh(ZJZKN zX37Rdouv_7$uBN6-%$%q%$i8r5)F!m?zw3u^5x)=tC30IDnG-lFO}8_B}B-%tO;qd z<p*KPw#UuH9W9#oYr0h?r!dI8L)ox#0bSNcH_6ZSwsM1~eSSL46JNtj|5- zgTuBC{m+Cj5hLI*%5Tkk7y#TiOp)cq79t6zj`=zOk`F5KNvWKl&Hm^@cL^=p#g;AY3kLUT`%G?iLV$ffq9CPeKuq-6J* zp0-(*hD<0By?D}(eKUXJj02rJ`Mj5KH-enWGDciSl*7}!L{Sxxwwo}Ngl329S8T}K z{M=HHE{T1%38sd+Voi#IF5bvSkd)<02=jV zHEO4t&F8hNfNh7lZnicp6SJvP;|!&gaI*0n9^aw2wK5W#oV_=~z1b!bQ1_(XC;%GYPJSgB#-&*e%`sJ7#)GU^e-;yee5RW+R6 zi4A1?r=VPc4_P7ci;@U{D)$Q71)9fvY@rH(MM5vZX3;NSO6$q?h4Q^hSSz*nz% z?!QNmd@>kLEE(S(hA9~GH;3XZY6Jg4dZnT5G37*@iP0Wq6#fXBr`-Ok$sF@{Ab_J* zC?}Q4Zma#XuJ_;oX4C8S-{uicxrN(P2s1_Tx`%UTUvrO!9NN0c3gY($uG__CZ^_4d z2H+I^dh_8Oaq*P9IH3+6sC>~j6dr&33_%PPyAWT!$nKynzpF*Wyr~0ypkyh@48I#e zFk>gUpBSq=Zq_5RW<^58HL6P%8aXs9?kqr@T?AwENW610dPP&|uN6iL9*zJzTW|tD~Mbf}1}m zG?@Vigj4-h;Q2%GN1MFsd?^Nle8@KZYAgfmK}E?V=U6-Ew?jG^@w84M-T9yJ)Ly!d zjj3}}pf)sjI4L5~FnGr%BIO&0a)TpYtWF2g{+EWjB^j`3vh{`Qh1xA0t`B2djm*lZ zL^d6ifr~`J&N>|5C46sBUa-+X&u;Ic407A`2D-5h?uRbGhiW4z5i#Wi+Wvio4kXt~ zuKIIcG2~Ezmh4gLG#*e#1UzxOqkAQP7A>XUnlfykC!IUB3Qj$*p+zOX3?{HZi_QNu zH-w6nY+?uaDgK{bSK$W8DU`Js+4eJMzYb&pARoNk^aNO(Lg3`?QlU>fm=Xt^c?15qekZOR6 zJiwI4ihHiItSln^+1iK)k{%J2{PZ;zi;Eqjf1{Y?A+tUYy9KgWRIp(w2}M!ooI?dZ z0-`QlqY~G=S_}C0&Cvh;Fir#CYxUSQoyHGcw~xCniX?~-eJ2tci+g1EQ_ZFz9MuV-kIR*WX2Uy7Tt zx_VYG(WLc26m}}ABKD*H12OSFye*@F-i`W*fSD5=N-%9xdTcljwACsY=4qy_8`U>z z7^3Ul&I;;kn1ii?5S)IUNj^4MExXK$`@1QNdL|MQlZ1W^i>0@C%H>P`?_0j@Omqgr zxoC{l((1B%Vk}6wnn~UDlF;f4muh%8nV#A+k(+jS}vCfpN|_*hqjAd-zUm0zDB# zUPOI1I2HqJe}0Xn#Zqqy4fvx6ZQ;>NWk)oLB11$DLfUm)!vgaawNskKQxu+4mbPD1 zkHP{!@Jb90)TzXf!{ko^rFr(b1w@DK8#02X1nN7LOTx4X z2*qDTCw5U9NM$siSrE2ltZk;E?kz)>xuh6&1h<}0yB-#50N{@W1FZuKch7e6IM^VP z`)6SnHTQz1{M^M~8JdC`czFA76FTsn4~>ZWJ~A*J@pr;UQC+8Tjxhu2223j3%Zl4y z(QEu_IE%2P#@biX)gECInJ>A8e^viJAafLsMnI)K>j%G~$iVg4+G_`X z$>dv@Y`-heW!DR<+Nmnd70ObZ4OQ4s+m@3mnfl(UsCnrwoTN14dPe(Qtg&kkaf(S& zp4ygR&g`4v#S%RYgq>Br^L|>a$sDAAt_(h-6_f!07P0XX;{W*hFnE5?=;vM?{FS98 z=OC$+-;rT!L)UWzw$njurG-Jo+_VaURPY2s#UyOT0wG0wyGx3}i5L~c?tRb1?`KkM z|7-VMaH);f{;U*Oo))g73HD;>i})&|*Z9Xpb#)49f0G%a=mW`yRtE6Y((h!Jk1f;1 zGml>zk?^O;tPbpVz7*9oCh2xjt3$2`thgZlaJi)8l1Iu1CPcRlQ-5?<{EQ{1vJ|l* z#PX1n5gQz5m~|;gQs@yy&))JpSq)xibYtGGp=ttd_BkFU3n0i*2M@YL=)9w)Aeg^B z64&uN;hNf&3mA`?*?aglT{Y5Eh-Op|uK@;Mp!g|DO~E_j`XxN6)k14}1zkm2QnYjF zCz|UfHPlb!57L%q)u0Va5^vgbf`7j7P1~!3555SW8^o=7i3W;A;T0=Hj4Rucs1q{2 z%<^EY*%o9o?=NUt8;Zr26X-4(wdxqOZ|rVwgXl`=av8og>g1ia#YbU|nf;KQjHou# zZiyRB;Z6y;5z4qFlE1(>_@O3!^;X%jFh0!aR~|*p$mtx==Q73Lij|v*KwUq@$$R^+ zKREWk{-E8x=!Jv%C&;B~ia;6%9JDcVC=S|w3xcA&kjB?vc2&K&mBulM-x%n)@^%vT z3NEKn(KZqC_#tnDMDFLs5dtFQ0ck3+f$hZuDsF(*Nf{4_`a9=Q)Uk2kUV#xnXmtPz zh10$d4eqbMG5)4(J+oN9pzh6@8=RLJ5wKY3k~`)}Vh)aEcqQ{&qWhQ9w3SZS+0ab! zN6vE6RW4aARW=vk&L2awhv7uw8@MRnpG_3=!Ha}|7mheC_um(BdptKHd0|=&T>547 zbZro-&sJ9(JA4DQcXeE`wcNx{uhH*e+-5 zPpbcTS$Cz;SURu;E!*~+%C3(xxT_wPOi;r76bZBDR&q| zmb#(8P=k+V zKmoX|8NQGLm(2i%(^*!K^dtq` z4$}bVXxNi?G{D~hlmZTdH)dbqr|hW0i~JgOc5ikeftwkCy33i4bL?9=CP;6(PW3Qi zph%d<2t(Jvy1t;F8pGv+uOjtYCTY$pa4kUxH~GkZ`p(`pWPRCSi{4|-FvH+qhf#e^ z*7}!#$mt&_%Hn@EvMRnwoEhbme26iKq2!G!|e!{dc6;4@%8bfRWiqNbW)b1t7sODpIAi{>y56l8v)=TybHnsJ;=R}Ogzm-D2UDFmSb_hYF z{sJ%%t(Y?0)f<>$1S}fJ!Uk}i!pfq-508>^&r@5pnJLhYi0c!Embk(t@I@#EL5MC3 z$?W9~s!!Y8(bL%Q5ZPxaWk{H$e-Zb;TrcOi8QQG zpvItz0w{?R%3z+^fNE)9ezU>}c#3C{%F_)24VS#7XOo|Kc2oXI0?wz}A#}kHqgh0V zLW=37e=xb&Q)j+?C3Fl-NTY-(=T|B1)05aQicQtrRfXty+-%Q9zgGV{<`+ZN;e_#0w#}#$8cBv8e$K|{}s_W$};5_%x#5B-4H7!YQP+_Yu6Y5 zH1ZG~JnC*JbO6!#D5|Im(yAFv_`CtVBRJ{bR+SPGQhS5kXn>kdqmU3}dd2*d^8M~B z4TN`h8I!?l8eU?>#Ej!7K4KDq?c>lD5tQurT7dIrf8m(b)~ znAx8|N*5F!I`El=V`5Q?jKQ^sxFZBWa8=TrlW2Lt?S8#NRUK#2Cq~32m%e&W;<<7? zQjoWB-7sqRJg(uYD$z4`k;H8~6Z2V*c}X`1JuoB%0nB|6a>Uu1MD8QqndS{4Rs7V2 zrH3uvdF8|C$j|KP(g-7kz2p_i)`Ecd4+YXK#!Ov|U zgQ|hnCIE5!J23s1+4s=Qm$3U@yBm=HvQwKM#C%PojaAV=ka?#d7b_nJ{Ch$^H_$+N z0zzrbvHcu?5V|>d_yz!O?V#hI)YIe0s9Y-PFl!4S_ZBxfJVg>yEm+QlP+^@2wV~zN0x#M=xVOqn(jyC8LiGT{7ks%?3HIu|VuJ9{2V##Z2e? zoik*A=e4n(Reaw|yDCT+<${i17G?5-{caky&;>JRSVW2KmcgPV!zUmBP^fACZq&TP zc3lmAFlg1uCy|!3JVZu`fm24=g|=n~6>@!*Gagx1EkTLD4<1USNY6z=2DsA+ zv*9V_qm^K3tH#3#DTb65l`K0&e2ueC+|$`EXzrCHe8)P0#Is#bEF6#tC|j67>0ab< zmr25~y6L75t+>OVoIQ%xD;@1(KewdbDJD(;oT$1+T@?^~Oy?V?zokeq+id7SeIP*3KF~)0lSRyjc^fIo{$l*&&&n>I1?orl#tb}s``&QhL_F? zLFXzocQlSAm{&l)hy4mnvzywPDv%I1%BwVUtVCLu|WtapzI2> zz-tI)_4tMKpT#;RM+n!%pK&WI@rPt097bMCGm{Z|k?#=T&rX&_$g@h9EM`J~PPBLN zLFwuk$P#p8BmL2sXyQm9H5wx&3(66 z(`Vl6ERA#*DY;vuDT}3WUyQ}#0_6Ei4ax22cY!Fx!fWT{`}u+6)6=N=UCo-Qkmb;M z4$W20C`04-GnC9!+4_Mcb%XEt=cT;>oDMMi-~c;)G{2kAS97u-c6M(JXCL4CCruL! z*Ro;1z!?zxGlaeP*7Q@xIVcmtlZ&8zWrJ!kRlA6Xz9UA5v@&FzbC8T$#g%7*TykBb zpkbh(iue(n8BaaK&Neaw?NUBCy$^{8;~2>+YB(j_m8lxbR?&ort8%|($pFWJ_pOCo z+iKEHck1+z0@5^O?g-AbnN`cwFeOWoxg1rkMTz`(NQZdMU-V(WMsfyyOlY=rBI6&} zD=hU8gWjxuvaOWv@w9#k{1X$2>~WNa&-if=0LK3CL=wh}W2RXXJD zG%ZUTJ)bB)O)0VD=Ei;VdpoCCjiMOH1(V@xRG&`TvUaNcNQ){SJIJKTCL_>ls!~#$ znMuxYlH7WXcg6sdlhR9%{Yt#Ye*5&a#yYK<*0_<@>Gp`K=l<6N@J|18F_kEHQx1hC zCV1g!1Oj4v-7TvwgdfyZwK*>1ox*n^nk-5A)CTs85vZ_2q6^60U@Df-60Ny>HOAE# z&#GmMLgug_qP3j1u>9Og+SL*4u`j1J>w9H{0UouWYGsf+x-Xl#PPVFTL#MW+L%)yi z`-4L3P2W|9SP`G%cD0{Vk@@!@e#0gy*yKfDK90ZPcnF?!Gvfz6&R zYj^*T26*+A5by)?a{>V>`^PDgs9}Kb0Hj5F5AM0!eti?l-agyMt^;rZJ~X5{4F3*) zaF03tXIJRDTX_VH?$39`8?KQ}HV)pd-+?VXP!a*m^0BoUijiKA+5K7VX5{Fsti|q^ zosYFTtN`Nrc!eEs{?@J7Uj3dm0$5)FAr6Q{!A*a3C!I78ep=w(M6la?y}|4ZbkDG4 zlx2LKN^(7T)S|BS$(%$)%RTjk9s>+T>_9>YuoBF!o3_u&oevR>eQC*yE%R^l*AO13 z52MjwnJb>-ERz0I^tTkB3V18}9x>_nUXLOGgZ9-Sj_HQ(sXsZd%N~p!%shsQTedtJ zc0A;iTzPR$shp57KYv6OUk-q0j-qHKRYs=Hl$Gi<3*Mr`i3tNci9SoUAp?s+_Ezd`S*2(nW>XNZLR2 ztEfve1kDh#BgnMs?W9hA;%^p76Ktg110~EH%~8CRL%fOR`XexMT8vrz09;4?JlF(Z zW5Vgb)2>rBMNQClloe&Dw%bso!sa5g!S;D}&epRcy^emor)$o6o-p%$B6~x7@BjGP z-2Gg!hTdm2Ke`_!*0N;x^1^?#H(MwSxmSC6%S9Q(ZveX;8&{zD)n)=U{uX^inVec` zV+G%f%_>v7#$M`DURq|1T=KpBQh;1ang%c3Ki(q?d(+&I1Xd^xx%G*N5K2?WH~dpA z+qWU;H-mVq15pg(dECOERu(C4%S(s8#0J%`DqFe`vrec;81JM|-l`A@xu}@P^Ng4o~;6zm@~)#`TSzjQcBJtaxnW zMgrTq8iv9!GtjMGn3(jCb5%l%@X4!lyxXk@d9p3ZWO%ukB)EqUN-muIRo1G;2XSO6 zf2p>#z>EtE3dg=<$vpTZ%dJY9w}ThydnhuXI3N>DKAE}Qb2V=->=G)F3HLcWh7CGW zP?-~!a3bkn%OJ$^Z46akdvGI>K^O~`6@OIB)zqm9z-%oJuEO5!tWxCWD*p*VYsd6; zZXi+8=Ei*fy8veZ0J>>7YZH@90?S4cX(?PPo>Lq^EqOhQ0X%JS znBhh)gXiwrj9 zWN}onCB|7giO}Q;s%;Dh@8A4&1azO=t2%TVGVqeiLaTBPe7g|XBECUuYVguB_sa2x zHRmAnpZyW*<2BZw*CUab557CHC!=a!XZE8HcJHdJ0T*Li6@k5TMe0JoB-uz6?Cssj zFWwltN3wrqn?fq8d5B>Txg;T*It3#fkmqsy%?~q384gUsZqzJn`^>n&p2Q!V4K+cd zUc_``8B+%=`Ftw=S0Jkle{{oVJEQ>3i_>QG=##iI4zzyi<2v>SWrN%Sp~Rr1Xhtpxz zO#k17mu=!~3Jk#n7^VydP?Cgn)o9KRQwieQGI}BSv5t@~+Wy=XRlv?-T1vjJcr6fO zpW2~7bdQo|yy{m6E$hMMnO8F-eyIzB?qN`15~>mOq>3$j%Ap}1a%La&Zvlxd5-+J?10ng}l%vd4rxv=QrjFh$Ssb{A!|S4S<9BI9dpfG)kyDvf3c zzDN2*yG9H>NQ!X0#9^Nj&4QB3CnX54wQ@+Ez8A63wh^+JIutT<@l;|5oHVJ9dEW-& zfj(*~2~6s*@-1Ju6)7{p_(cCx>pF;gO4CT0xEp0jNm!7By7dAxNlnl~GW^1fy)`(8IAYWpyd@SiP&z(8?%5I(_no>K@x2{jpR0ZR%0-n3xy>4mJDeU`#G|tM=W#s2@FGtx}deTKvf34=t1P%A(LKNR< zn>himXxJ(~Q%*+VkF7Ga{6}C>8&w4xoHk9U@aiCZ*x_T09r)ByjTlH`zVT}RJ(GH{9 zgCWTcl+QLF8;}@3-`NQ6LxSp;jm7*dfx{ixMc$wmh_E2gkOgBJM@w!TO#PLFKK#(~ z;2S(d30(=Fu<$2quHc9rRn4erLIsw!$cVm7`5no=7$OqoIT4e83P=)S033r~XHlzD zEx|~c5L$lgY}Rc|8>X%vSXBPCDP}Fc@yYWT7kTCuF^M_Xi2W0{oL>DpALT2*eA;GO zYN}Ao(7#@f=6_S2-;4bKtt6X}Lsr|yMMI1`pF=1XA2nUw zoya;c#%0j289Bii*a&g(nTCdaKYv>8WEIO01>?ffn`~$q9+hRdY}Z^d#rU9a9kBL}jRiWJH*9mX z?Rd=UY!t+!9^0!0^b zvG{NZ2lRu(YE8jCn4}hS2|BlS ze5yWkaylwBSg9fy(Ztk=OJo)R%$~hx;7S!9&!*II%kNTP9w&wkV`qpSmi|6vXLyNp zsmR%a&rukFPjD1=!{v7ysl4^NryHAK&zb#qU`YiyM1ex-&^ffv7BD`~w;%-cq7=dY zHqHNp;np)>wAtv?w@18}z#DxoW0k|`;Hn7?LCaXrT;-z7Sw!|$anWt18*{T`*q+5r z<@jE9$b<*cC51N)pE1TB2PcKmcjO+AmWbKyDj6t2sIkifBAP@F%`OGTjY>VG%gskS z7vJFC_R4p98TQ;O3aiHP2Dfr+mKb|fZ1jw*pgTz=3- zgaWK|5C+9Re#O7DrW_sCoivB%V`oc@{`3)$lg3w|ZE4Fcm_`VIS6^}>ma75gobZMQ zT^a_R8&V&+5Hy>G`y3m4OxpoYj|OWBz>!7(5E+p?O)YvlMqQ~vk*ZY zEi2tI0)}8Pu~xGJf#)Tzt>+kNCoqBD#GkJaDPkqisd40S<xi_ zKjjts^am5$*rCC@u>F;Bbmf@<6_tIg2k{T!D<7vUiJZ?hN?y6h#O8mL-5$EvZ=|EA z?}4e{zp)eXGyTVW3zKEkD8c;=IJ$ili2GOu=b9YKOAmIDMa~7NIuw2&%OqNr^&)%f z{5SMD{I8T+&`g4DR2_E{ilB_6JS?B9Jp7Tsn{8Afc;IUQ0gM`3CKK-wGMB><*sL0r zS>9Pvtx0mdaFm!Vjb^-KuL^R)gt)hAv{k`>xHry>9>`x)ztU*SEM6#LG}3euGny2PAU<~k-HB)`HEv# zf}lVp3%l_Z@8(07YX;XK-O~Ljo{>rf_uSD*zLZoqs6pDEuhNXF;>K=@&LK$NAfG!ayjwDMu_6rKnIWhgq8#)EH)h6wUfNNGQbRa`G26-88($9VB3 zcH%}2?qAiBCV0TJu4&%9I^3*cxr5e9@E04R6#k4$Znpsj*a{iBvL<7lqQurVSuoz0 ziT2Pf+XP}@R0!+p3K@lp1xNtMEk6%9>V9`&nuyAOWF0S`(ZdwzwNNx4{&43djx2?^ z4Xm^2p@BWw#bA(u5J`{}=#_j_?f$h5h2_j7TM5S12czPg!bb&IXK=twaAwYyRa(~S zK>dwC3!Vw;Zjn@BfvvPh}Yt!OF(!Q+3EazIp$&$S@DE} zdkX_RcEkY3T%`Bupf!q#6Zj_sosiEnHUr&+DQBe`)4#vt!tO>*C8o5wL9_rUW{zde zB<5F1F^>|175R`Q%}(wt~~c^MO*Mx98Wsg$c;P9|}|X_H1(@`%<}=P9P+ z#WgTe*#^|dLv!Xd(DK+R_r#&yFGF2)fEAK4+&w(PZQ)1O4)XvINa6{ghk{eHSCzto zPn1U>G8mIwe9K8<|7F$kFC6+`LQTZ80=v()i^FIdmFf|y0kf0kI?>Fx0@T&or77>& zzO+FsZ;unKi=gOO^tp1a_jf2&&j_Oslp37s7p;ZS3V(t-Fi#TrD>$j@aX`vPlDyCS z*Y0cqkO6XSdfEeA8r^Sz^hO8JVs<|-{Uyv6@`7V=O^CB7h6-%_fIslqK$d-mr>bQ&I?${LcH)K^5yh*CCamG;T&rbe zqhvt~JK}%{5qom%n-~-fp0WfOUZn@@q8Ey2k3FaWfkd0R6zJekK;)^8kAiEYckl7z zhG}K3>au-nMasCnDCOuT z9|4)2O3iNwub6Phwd)veNK%ZLn}JonugTUtd$x%Oyr9?4O>1cjWk^)`K{kY%0gkyK zRLH}V8+Bg7q-Eywt z5&70$MSvG|Y`j*sV)N+jGfaf_R;%MN&#}I$_Jx)rsSYN0`h9)R8d{T!dd-#KxG>Kr znjn9AU3`1c;cf2$thUwOryw`gBmY~}cjCYND0YPO)Zl{^Y7*5#mx>t42Dm9c zGPX9jcu)S5rXkH+zT+0n;V5EQGbN-Ts*?RvA|eF1<91Sj#}v%4o3Shf>(&r;%4}jR zG0-dYlD6%vT;nEP2-}lnoxV|($wa+F4Lsu{Q$q7XpaEJ$f0D`y;fnpqxJyX*);T8F zSkK@UA=v|gwT78i1wNt79Xj9L;j5KtAJq37{WmLwtukyZwsN*uot!Lxb>C5BV6+Bg zHNHoV13tVTU0Z>WS3uhI->}kX?cWP0{&qunjj<79#g~Nx_s%=n`1GP5n%pXNhtt2l z;RBCDS!SN+VgMJlsP_R}kDeI(*x#~0R;tJ+HfO{7svWMjC( zAf!5y#&Zr5?^$RkQiNwIzDAiYQR{OCqb%Xs`t>k&?4g*}cddi*kixo4Uvzab7Qpt~ z^D%?O&_P)L{jK}m&(GcW?>^(#9$;>!uCCtF($QlrfF;}a*_wwANNO{b2oBsyQ(B%I zREMNz0wGH*rZIDBf}ap~K9EjB?p%#(j7tHrh~D(0LyQ4>1JK$jmglZLjd$!V97RIKxhQx|r%v6N9C9jKY5Owp z&Vn20hF|k^yW4$Ph_vVt zJtYW#H9}l7O7IJYG9@8m*ePK#*~%^+SRd6=ixfsVLmqYEzV^5a^*R&A@&WW&AYy^K zIHZMAPko5Bn->_rJuRTC&7e6P0H&uxmyQ(!5rx5j-N~+SGvuS=!oKq<4}&vu%^f{( z@~i4!g`9(62^eAA=DFeJH2Nh8*t0Af`|iD?MZy>7u&7NmFVO>Ko4(k#f)4xCtY+w( z`_Ylk_6;IzmPXwtsKk;W`IBzsadwdJF^t)g;BNO5k}8(O9$g1tPP#TnB7W2>g!(sI zr(Ck!eIs9=^Cz+NW%6i3wgwe01L=X)0oam~l2l^3S}kS(*&f~{8>V=Y5~Fq9e$j@C zjJvG>@vl@jdX2!d#`4c`v|xFh1O`%9Vo|@jq6#MBW~0%+Iz$$q#OE6@A;q3xc2`9od0!`3g?=J8OX1Zjbas4&BtjsX7%4R_I_k$hHPXpVP3)0!MkTS=bAK7xlkD?ZT zEY&gyNeQ==ntlRVOktrrPMzV1{*#tY{x^^LY?t@EbWlv0su7N2aq94QP9T&J&v>HUKlu*P~3T=o#P zsHAk3@iS~f0Rs0`AJPYs&fAOrX+7ORy!2uZqXtbQSHAw7Hzz+_v@PGT8t;21KA~)% z!s97^;Bo_KpYV;K*&40_zz_(dEI87q(V1 zGjNl0dWX#|$7!DgRC_Hu?kR|b<Wy`HB%9P~ zPgMD3Z?VJ77uNdmxi@Vep5m zS~qGzqRURVUv>m-{r$(aY#cfs9VPd`fVCgU*7W6Fa#1?CKdHhDY-koGfTZ? zK*k}r!D;CLDrmWSX}P)?h}7)d?PJSFu^M}QK_YU4k+RaFAW??xCCG76KKK>^o-Z{~ z@<7Kw3F%dpG!Mx(egS*fm39O%KB_B6{^?lwQwE#0;D#y*Rc3Y0VnB94av#;^mZbR$ zj(nZDPgVb9NCvJLyzDW^I#K$q({C4#V71GlmshKHg<&jO3qT&n3cD`jmH$PvpBhPH zPnWYly2IXc4Sw2c19mtwcHeoaz zBeQe4KW@0ytvmojm0o~0f+0STa7*{kKcpnn;^hi#I^Kn7=b->^N^!XR={X==V|L&Z z9Ju`;)C0JcS*Jc+U3gsr!Cm(v$eaYCw3pD&tsdqK{{4W|bUv~KxPty}L*>7}YOyV< zOT>zWTy46inS6R5-^>x#PSJS`Shh2{=$v*AwJRqehYmANzy{hY%yY#8*estzwJbaN z1oB@L?Ej2j;Jp()02@$Lrao7`{DoQH>mcz6@-kfMIB1GEXvI`SXhhX}c{ic?O+lxp zZzyRm>n}JWiC5nfz&?+gP7krIjwXlCRqO~NMf5_IV;q7X{266KclME2;J&^1gO&v# zY=j?e>1U1#Gp~0KV6s2@eb2ijAy*Im^i5FhIB>^{$U zF$1N31ac;%u*@|#BvbE{Lv>sJvY(`L@rD$ZL1vro*FQ~F-3Kiret2SHD zm_(&@36cgS$U9=^aN;bEgeZYnk@2Y5o^~P)IOKyUi%6 z8N=$Ov=<-K*tlC~^|qHwVZ&hPNrs@N+6YoPH~rr2?0tNG0I%$7tLy8}WP1fMA`(+k z8@^sWtK5$D-9hiR>_>BMqdLU-VjK~O>o~^0-E$GSN(VHVzR4|# zRA)~j)2mF1>C5S63Z)5CE8FPrsdX=myk%6lMLHY=R;eec*&80sc3}QpOKb{q2(%)0nR!{awR5DFm1yuI6Z70@vkuU zz`l1nYJrj~-}^ROB-E2Hx!;Omy4EBD1TnsKE3OcB|6iK!r7G749~A%cH^kKH#~_4K z--_OXfQsE#F`UjySMRLrw|PQQkdEn)qsVah;w38kuB%UE*On1`j**By&2jJ7}=v&{y9l3j4W4`1K1HHzlCjv3+SpL168_b|&g^Uk)_}@vPw|j$} zbaZsK9}fT3`TnWaEnNc9DQ#`-YFDhm*fU($qz9AEREGb`3S#%8*SqZNgWa2t_uGfA00;boj`At$y<(7XcZ(21MxP9xl8jQN zGBygPAy1)bJn#47__}QzK-~lzJFcl2l7K+t{AMOt19IaOGC!Lx$5uQvftz#8^6VC& ziu4bTm+8lbUQlLgg@)T*sv}vO_7a4=GkQ6z8X~hci1fj#=CqA0CfHt;FaN@3e4)>% za{R#_;`qvB8}sD!tqh#8@vW~V&zYylzf+mzL{*Ho8ANF=jg4hbkPIVWaZE*-JAcD9 zt=9qmbMa``yY*sv_&Q5b1=tJ^Z&$MREk2fEV9e2ndPg|~{(>9~H|cxs640b52{yI1 zcXSMt(n1fZ%uEM00oR&GLkD#>8?Xx2?kE!_cpln=fIzVdONp}ya+%S955%R_CTDva zVtEmiJS9zOtdfl6*w~J+ndI&Ql96hV^OAIl?Vi6tIuwr6Ke*7dPe@X&fYg*6GL_?vXRRz_ICdbo7j;sB17E0&jTocs}tt4qYrE5sOfLdIzXqjJiTN z6ZKjWN;oGiO~vT+63{VeDDEv9+Z1NNcj&U?y$f{H#L|lLla0-+tYM%k8~q zQm^Ee!eTCRi_r$-2-t^VHQnkiI!H~6qPHw*dwLf7v;^-hSMlzFWE=4y1)uLYLwtwokr z7U!h)ebWo|PqDj0VyOI%$%aR^P?FScnld4KG!?Mz;3}@~^~Gn4F3`vda?i8JJusJ{ zdhYtXG#NV-EQF{#l*o>Z5ZT0nAfK@R`J3t88~K7@YFr~%?mowHoeuMQpH1}xHZ=aD zc+7Y59VLO5}~QDLimvGW1BwAN)75l;no zo(0j}3+V^_j)8H!4-jC?!!*oz8V9Q!Nt2-X$ZtbVpk4mO#(28#y(c~?x=;FMFDZH& z7dTn`+QY8je~VB(*F_0Ti_SDW4@Rc6v?NmdQ;MrRX}k(mUNLhRM9fy6a)5gp@^_hg zxeY*ZkbE-5p6YFy>fsd~Bqr>fr^^iEernN5CPDc^&BERSf~YO>9^37~&cJ~8tAuHh z{Nk+;c1S-pMkYEkHk5K=ZL5)BlM&N7{7lTb*`j%Ur?$7l3={fD!eHl|NKSky1F?ShhrZq;r2--XjlQT19K@?Z)jbD!j%^V zC5Vb^Rf#GHhhwhWjPyT2^q8>=Vx&~hi8D>W{EZIKl`#mL;3_$VtCE-Cy2t3igU~bV;+wS9`Z|ScS+)wRE-@0h0j=+@5+ESW-%))I z7Ol7Al?SjcdTxAl7*i+@q>wj;1&LEHEhweweT9q&DqH$NsBXr|Jr2@bcu<7#);ku& zgEk@(_VB7z#y%zQwEygFYhQY;AT12(m3n9vUFCDlJdi2NGDKSEiuZF%wNj;%F%A5E(u4N&t@u5&8CJ^9Sg;*qAOlH%nD-_rF&gOWb#)XJgtCX^5FvzZOPK382kS z%OcHG-U2|M!yswDs4g8}kA*oZ08jDFaxn6~1oXRoFNYSvyC9q-iHHCcpW&vf`|CamV9DMcM6zBa;;QTQZ61#C zd!@jQL^^Y|vTjz=yQ<|X*%?wlZ#HDdMXN$DNQ9=DtYKf-54n*S_bpbWR*esDPOH`ODh74CzcHacEj$qo$2@2>DeZXwR1JAxs*uj z7#w76!yQ1^_Y*CRT3UA|mh-zuv?hy#9FISORYvr>&&vL0B}XdkJB8{^Qsty~P2l(x z_L5u0`jBXFOFiK)drap*)uD##4b4Ji^RrcBGT|oRDWn2_Y|2rs2sY!*SA~m1>SDfD zbi4`^#Di<>Svh1W*25V6)5G0>sWf@QO0I0IEw}jzbJ)TkeMPrEVg@>q8NBZUyP~Ly z`U9UTz3J1MYd*si!5*6denPTmq`UjyT(3t!+~d@$mF;kd0EVNEoA>M-x_tk8xfk>I z_tx&+ov*qZrGsjRrd{o2=>M_w&2f3Y@85UkvTJp>>{>0`uH{;`xoq1u*22QF&1KuR z?dSS@e^38cukNnvJdZbzFXpl^x`y@4nFXYwdHDKrCG$hfUH^tGp!dJby4|~6*)uaU zsX3xc3qz-oaWco_@sZ0GDwD|Jbmkx4k-@(*}0D6yCqS zO}8~K5MuuMksFAQaYE809bkKP!j9si`96330)dKOaqLqXhc%lmpd5}|hbOypvIt!# z7g%Wp__ZKXjOF+D4DzVWRxN^tX?l}j>+4K&(DmKekEFv*L`ZjV)fxY(TgZM{{4U6G zf+ix0`O7So3PXL@^AR%(!w~tOW&%gBK4M0KY$QB^t1Zkd^1mZreuQ#|rT%OZm7HGV zW~#h4hM=m7y%~lwwse`=wqo)fGHm;$g*E zv;##PtzGiBp?X!CR;AE(h5lMFD;aU$x#=bt_g=xWU%6CmJju?UY32uKoX#aJ-3lqn zd!1>B-3rw3jKhS8CHaA5F=W^9Z6Ym%7>xsSyX&CqhLtYNb}wIU`>_ipn67@5M?~nE zIjX6p1@b3Dom^y*4NDO^ZfYtp2P(oJK6n;>7jzm%$Q&bB8PjS|K{Q_u%ffFw0ao#) zxR%b79>9iG&vnUSFye$brF2f>PL>@1n?7+C1DnsF(E!L#KN2*ksp?7U#K5_?VHx#^&C%Nz{tSd;Qg=$Ntizt>JEZ z=RL*ji;l|}`n5GQ54k|wU)rNi^U*Ele;MwSP&-YP=*Ylm|<9y?d#%1L*&M`3_Vl$9?siwbHIsAfW6l<@&8ZHqt<{M4E=GJKP#%lZ78Y627vyn(e zFK)UlUeE5^{;=*a+~=RMq^Q$MJTw%A#(Rq@VFCX81S;K_Rxo<>e|{=*6JFwgwY&MK zu9I?;`Ysj5Y}O7irKygrDvfy}IXIq~=`{&?op@QvLcqL6MBP1s-O?l$lm<+Z>b0tC z--;n_n+wfk2dMQi}g)z?*0H)YFyj8J%x@X<`;zzy18)zk{}264p+$P>I+Re8^ecp?Od#; zwJ7@FV)9$0OZuyXs+zvEiI#NQ6I%HeGp97RV#4Ha{{|ZO_O-ag=8CuFvkY{_Lwcwl z>y^G@5v=##xN=jzA&~3JJv7IpmX&cFukz@BjVs6t*I4*AYb2f?Ze#zBM@W%+BkBHB zMV838#=(3RN<+ifTyh35fdoC){BR&-@7Q<=wplQ{QswFMGXZiQ0z|cicl7wdX8?zV zpnD5|M$L@^4T$VLJx_F@Y-S`!*Ii%ElO{Ve=>&J6!R9*j`A&Lv_1XU7*&SMm?vE%(WiPD8JvwGhgxWSBCS7JbK zi~LS>EEULQSJu}#L`9BW!{5Jb#(CkY3B}2@sc?nS5+<0rvkOiCy@sN2i!sI~1Wa0R z+C$W~;mL*z1t+GCis{(akg)KhfUkn84Ex!juk&5~gW$sVWu-~y@6-dI;mo#E=cPM+ zij&v1R4g1Su_1r%4BW;CIBEw^cduuhe!ije;h`gnBWraahwO8#Ih!8KjYQzy?YTv>C^y$M69@ZL#{mA zXLdW7PbCY_DvJV5nvXnXaRqAoT9Qc}QeRo1WXrp%sS%|6>7azKZIffdx`+@Z$^2%& zWzWj3G3-%;xH+}_kp3|1=Yw4`fM3oBMMN1C?!5ZgSI#9bAajoE*I?zfxqnO?kmN)# z?Z;~xsS;AoS4HZyTD5iz}%m;!&@aZ}X!LQPH|mR)}Jq z7GGPHAH;@E7^{zR_yRpnmN0PG;pO08JLA;$vfc{Mvi-yNhM`%AAtbET48%4V>~Cnl!) zU^zG%n>w0>2{6$L-|q}N1jq4T)=+lR;^L~)m@YTFxlALu?pHonvVGqHU>v~^hp;HH zngeeTohE$m?e-NyenKIBIxLlm(ZSO@I!QbT&%whZqTyun!m~3r%-+Q(W-ykREW{6x zXm~xZAOl01{v&egwe|5Z=Nmb;`EyMw+VAdH0JXlUxw&6L;9W8amQ-?;4flEj6`HO^ zxXjRxoZPmDbw&+Jp>;#hjOI;?pDdwtVhJNxcp>d+EZ(D0FuD~#bd6${HVPJ0n6+YC z+e`A^-Pz3AK+FXW8=ME@@W#I)LP?mRtTmu5$=q zKL9Z~aHMWxiEYdUPZ9m`EKjk_io#Pt%arjvD>O7F55+smzeEWVMo7An8PgDXGbwjn zSMP%XJ^0D%D!9Rh_`nb&$jtH6b_(N=2i_ZV(_Q`f&${tqxlDj)cXC_PVEz|z{9^=?O zV)6a2nbIDlXz6T2#jN#%jAj|3BMpM$SU!a<(I7gYUK$a^JM}Q5r0vO<4_2j}DIPfd zq-%`QNfJ|QT<<1}p!1$oa@rLY{ccF@Agd9o6+jRX77agQ$fs}^3elH3qdkeB5PO2OFI>t0WbDc0A)qm>Gd=0A zpRo%_wW0o|3MGv48JJU7ZG^G!qVoaSgG|hp+DEdE^(=%@xSK}ikJH3|*5Z$kkF(^C zp@&^wzCyrvMMmNZnr4-&xjk-@;za>sk#<`Wv;|-e)nHUNZ06?@3xiM)aE~~12@RzJ zb{a&vb8zA~stXr<2Wni~8G3YbBwGA1r}$EY+IQ-GoS@o}dZ zc)xp=mhf|UJ)-&z!$+e+6^MT+ASehtL6buBx?e*p|U zEi--7ECEglX@nP_*p3TyExL1wgcM5ohh3?gc0#|@+Vb}LKkls0p3MW0@~kyk68k=5 z$itMlhxO+|B0foYO>B0QTVKnDzu=t84(~Kmv$2{1b2xAw0CLalEMzbT_(c_gs+x$n zJo%d_OOB?nzI7%UgSx4wAGT8MZ&bdWXk%wi7{!9GHQNRYuE*2hmxE-)w(TM1P&zF8 zN=x?;Y8)MO>E9%($9^8$j^nSicD(=?%sp^{J{-JXB9!yR@#@CN-OF9sAI~xGhhhBV zhl+>>bz1)KcO_Fgj<#40$bU1d8%v*i?>UYIf^{z_3*U^2>g~w#$xh(;G4bOnu{ift zbHU~IacF0Qi;M4RgN^iEO@1|uGPAId5JM^9ab@O)wGBAF7H#JjZ5tM?e^WkLbBQcC zyIsA)_`Gh#KG=0U?GNfK=xC7^m8|gE5kA#Vr0UQDwXC{d1TX z$_dr8>z>+~FxTUV&Trpo%n>p08v{kAtcFq*0@i}AiDBb3F)b3URZ(p3?We>O)xw!a zPo=FRMP!<*IB1#SqD#1b>>3d64-!LsZV-iPs0^&*wFBfXj03?ky|f?|*0JqJisF=$>(A!j3hBRpW(kT5z`)UQr~PF;#H7hzv0 z$$}+fjoz$!TcW}Rod5aM+M2dl7SvCDqjqLhScjvZfmLXV9Vg}nwA~)I;Jdu=J--p_ zEPUyMH5%vC83jc7kjxb;zj{kyctJ+1FHMA&6r+}1#T1own$!W+h`o&Z>Q-Iassc77 z`9}m!F3k2??upQ77~wsF!#dZ-5yh`?KW^t9S_sBW_B+ng8biKj2U2b{Dn5Rw=GlI2 zLJW4Q-^kMrgLy;wD0-f#`Dmz)r$5w>;`(*MJ$m5edm|#eAUR>%jLMmZAAr5(5=5BRZ*Yp7F^?7LB zY>!w>jb(znracpcShSh)kT!_t5Ad~#a|k{=9GxK>uVWj1B=1`!hIr!MI(%y4iWfq| zCb3v%)G&9d{CKIZHNk>MH+amb>^#%PG04=vv<8C}gT-gsaQ|xOej6L6+5dLUyJ?LV+{@>Kt461^zb>@gWkhaf zeGO#GA{8{ky@SQfqbK8#c7>n?+iwd;VMNkv9D)P^7i&MQilH<*vW`8=@(Szdx3vzY z^-qTG_HzCYV&-FpkSqqZY4zRM*E!rp%wJdV_C_GNwXYexZv;$i;rB2cZf3cD!9xq1 zlW!&UrBfjX@@E#W9%bK<;MXo1$Zq#|zHgFheYtHVMjnD^WZduX-T<=*hK-wX!^&xC zke^Rgh_Q3+0wtRy98K`~qa7~scXqMnf^t2jSV*)kE(Km2M}t6Mm*m1`ME&_WYeOjP%_y_0 z0j+wHnw5jK95%#z3{Qs;8ZFC*0D@^|&%d?4H-|#+m%3s}y^CEZ9wOnpTHVgQhg^(r zoL6P|dx*0jVxx{VYqSY@VEF81*57ylNBomqw0TH#^@K)*v~@lQYROxckfY}x*KJ)k zN6j<*-h5)uOd}hts#ng4(#{(QPhDh2_mRL*nP&vO%wIyn3 zmV$>8xz_owD)sF|Z_t__bHab}5f8-ENKd7}MMeaM8&cRz@tUvxQN;mQ?5`F?XXdc? z35*nzjEju`cM|q)vzhfh8|Hy+1<9}AP^CuWno}63MP1 zgqR7Yg>wb>q=}=!#}em!9R0B4dlJyo(f%Mj(SwIrIdk!KaDMtAeBO!%V9HG@F`v&Z zjHx~m99POvSEut-UZi>OpikfAgWKaFX~$zfQ_krAjb3|uyEjMBW%tP>%m3-{sJ^#b z3O|t8;Jzp_gV2(6x!KL9@iBZs)!bnek=Tb~xcZBj527#^E{72-t+IL`D6SImRmZ-# zS3=2zMe_PO%Ya-+(UVFmFP<-)ScrR6)s zndW|_x0M>?dIo=64@A%tc1dD2*}O_kAOabJhcPU1l;DPw_qx0JBJC*{&rQEGPA&xV zsHUYs_TNCPQn{y_49rJWsJF6bf-E<)=Q5DdG~M$+1%8z$eeK!8$x@mAU?1w~ZtzdP z+l$+u!3KCNG28h{^lbU}m#H?r0VD=dn(xrqu9t`BI~i;WLe+hS3De{E`Nt3$){lchQ)r+E0Mm=+P*clCp$csREStdiqB)vAPbfqz=&^~Ffm8z4)!uRIiO4~TU7n6LCZTcLo+yqdQ5fVLR+{$+d ziVd6@@Lv)>7+M((%8AX1l`Ld|sSq}dId`mT%H+%P zgNYn}(0{nFeQ9&4_TV2)KF~p<>xPX%e}?j*0-frtc?Ko4KYTyDEmV+e0xO2(PlGuI z>%;Zbu}L&Yo}-Xs1oKQk0%gdP9$*_iBu}4yD)97(2`IEh;RHp7FNDMVg=Q60u&Py7 z9$M}u_qFk)>->xdXe#Ii6Rk2F>c~lRl=IGnSjpIOd9(_Oa(9*+*Ki9)2#gn+)MQw% zCtp-yn)gJje+{pj^9%#Jd9~*M*Ud55Y74k9GkX2GlZI_kUKVQZpScjRBAazgCMYV@ z5vA-gz9{(DO5JLAmhl!HEq_LT^JQXWd@tWXO=#C-IK#!o)v)6LZ=$A_^^@@Xygs(0 zmEyx4SsB7Q;rMew3k1p9N6LvVur&d#277Z9J|~Snk)5}{nes1Q7QXBNzNF5V8G(M1 zw<{7L5Yx$chlCuhMNcULQexh;Okb=}a}VHBXl2%usx;m^zwJeX*TmF(+L9_v|Gl@a zFJ{y(n6hey&_v0g()0696~6mKmhi$@qrkN`9Tu*l|JWVO8g#Ai>Yv*dF|2VXkNLRd zRsnldRHq2>%bdZw4clDAol)J(d@2Te!6<>g(h|A^BCYrhO1dU@Gqx030-GE)%&>A* z92&i*33++lfX$>!25wK<_$z*7*1vHoHDMGm09wkeuuk%<$%7PwOsAC;klExwoMcoX zr5*H7amk8~T_T|BrgYXH(o`^qqB-WMVCOgbq>1OwJfjEO8WV%2-tW{bg#-H#q+!mC zY@Y#>P~SKFIP2@t;}qV(NmPJ0v}=2Uoo}?#*3%xY#oElSd&m$Y!X4`m7l@Z2*C%+_SewVawLb z!%D`s?fxwas$pdvr_NYC_R~O?y^~Yqn9B~Ayl_~UKVbCjyr^C~Lkk09Sc`06LqN?t zb>-$hf0HAEsJ3RIer=5JhFZH1CZTl6Qz*O1FY6}1W8X(~>**qC%4 zxGH3bi*@fbqeO9ld6bdS^P*Tx>TbjbSneH7Om{(7#73axgh5MJ5$wV96_k|IV@*HG z)?~p48noy9!J{P_pNj_{)XuB=jV`_S(9S+il;9sJ0umbHQ`xqiZ@tzmE?00N&N>lT&%hNP^DG z9YMMuO%HGBDT97GH5d(zj8q&lcHT_Ms!_wEKbQ~v2NxQi;=V2BfYNbGVFSev4GNU9 z*n|wh42c*pa2(OzJzP9=JF8}u-ilm{HT$<@dr=lF@}!wq@cJ_dTt4Xdt^o6><;8S< zOTk{FA#rNc52Hm7^TZDX|G%U~wk1w|xFE$;esWb^@RV~I!l#Wo=61s0s7$Rk-KSA3 z0XZ}Kn+N0}?nxdgE!;X!RX|4h1w4Q>MvcI7`lg%zlE0PflT?igBEtq3A^@FXIl=0o%r2m&We9yJXK!4GXrN4YZQJvSV(25D|Qq zER6$h)?8QlxbEr$-~9`pA-Ejp^EjL59UO@l5M+qXC#ll?8$U3G$&QhCUcLL1U0rR5 z*q1b&BZ9nT*~S&`1zm2zkR{V!2v0cy!$q{IxxL@CU1-6DlS?Q6gdiWc7IJV?Tdt2l zc>=I!rK&G1T60{Nqs18ll{7)~5N`YB5dtRy3SmYeJ>|D9pm>O+q-?k`b?k_Wns@h! z&mA8bt@cuV&WAT&y`|;MUKU(jzH3J)iQd=xVPqINp@Jx4+VAhSuX%sCGTWsXlGgFd zw7H8L%2nbA)^GymGkqX@PX_Fn@W_FciArai6&B|68%?P2cJ@F-`~<9k0bnb%GSLt> z%Wt-La=A~W+gpLGfX8&rCvs)whg1MT0j07@6c^W6?RhLfwu0kj(te4fSl6shp0)#^SaqO^R{>nrv(aP*{D6*@V3>?c;;J6 zxh_Rvik(7E2KiMng(EU4_;*k$lb&RHo3!bb5e8Ne)05C} zZXqvSsvhpqSJsrL(8y5E0YxlIFGEzhSvk4c-vIX}0U)qja~qEX<;h`N5Mg07(1xbc zGzgqZsa#d_r?V^?;!YsE>99BEO z9VS4Nirhjmd3ECWoq$Jjp=92_J3j{TcHS{XF=TP^b+1&0TLDI(;L8VreITDYH|&m4 zcrp9r-?D5!78#totXYgoNPPkcz|b1i>-S{n4}=G9TOnS&nck)}#g`vUa0P2ium_Jw*c`qL_1mD0AXXP3-YXzh`eE#bIgozE}lq}5-4m3th7a#b5Sn2&syO)ng%*_pJ5FX2q z35Tog;7c-*k%Ediafir_a}E$X@B_B5en}iI<2ST22nLyMDB5|2migxEdM~v#9Pd+qy z`10MRFdy|e>>5vG@YlNSvQVzOizYZtFAz1e_y@Qh$&DN(^LZ68tN9G23;9p=g}u3i z{`Gx3F)!%*)u^*GOwe`jbW-LHnS{n#dq{Vyno@`nVXF1hx07Nf@lFYG8bRaUd)1E2 zAs-c49$F<_-$tN~hxAhHbU2pw^;cGD&5{$J!m&RP6cLQ`?ub77S+O(M1~4%9H_QL0 z8#+Buz!Ccynzai1W?<*TcPV?Rpa=srQvfFSUR^+x;exJ3M%RB-hLj9FKY89+<| z%V#bhkrV9?=O4FaozHXv?^lBg4i4^-cl$WN6I9zEGSlaZGcxyg5Kmp-*=B;iNXhxm zG-U8sz^2x77RCVE_UUW+Tk%J~fVboO<}3N{+o6+52lmV@rjKi;tBp6kcb=@A><-2! ze5F$C6o>4uq`Q9c80EWJtuMlBQ*8Czn%3M9=-niESiDglN)pNi_Tejag-(zmi4)lr z?oQMql=fyPLKQRqoV7^y4H^!ZK9+e}=`pBU{d(B{f)F`j4kZ`*2#PKowl?BLO~zRC zXMxDbo=rG8hpvx>xVJ&oMW6 zB~V2wPlsLIMj=Tu$acN}0lhECfGD050)6wlHvNIqP#k|08Sv=6Z}~oZKAL@;=I;FO z6Zv@ceG{l!JH6Z;G6LYqm}%si%P;R4B1CC8B^guZR4B%EYGl8}esx;r1xI-@1)UZ_;>GO zmjn-yPmsW62m~r@RsfTj5gr^6RHjcw(qV!yGc&^r33}^?$#4&>ol&O8mAN&FWuZ8A z;QPXmPnvlKYeVSZLiuen^g9+*ED7I$X?wqI zV?QwP?NG&LKLFMAAsvH9M>N29)UBHLB~ry!FIitY-Vm7;e_nUn`BW~imZmpey>@Ev z?5xQP`!k%PE7y~=(N&mC@xnX!9@!C@H(yz7}cKqo=ZF7eOSJRnRno zlEGR!s2M;Ux*eVRt%&D05O@js`~IwcS^wAj)5iO_Yus$$AiKbL!(3vZ?h4Xq;K%?8 zr_3mqWFsXXQ#5i4VQ(cBZTdmJCsHJ@F{2)76}n>YeT3ttDw5ndx+=cLtANP2ku+*^ zu_aKdj4)b@bt4Z7sr?F@`7)(q3HMPQCom+lTS@r&SPQJ+1lTRl@0QPu@mZA?9urh* zXPylfW}$7SFtcxB4sY#d>`M2Z{LvrV%y5hWT9`kUmY$Xb3wlOSpWye%{%QpR?7}VE ziLJx!@;e#)b6g~{Qo^u;eb`*Z+dWeLe)>bNn>~356y4_deV@k4O;Wxsk0b;u&e^Ef zFmq`vkiYvp)(|v)gTIQI6cf^sDN7LFCQkiKZ`MI42921(TO0>@EUYeiDNKh+ZE2(n zYBrfKzjcPQ5@|xn^oq^p5rX;2NV-#UUT<{_ZJ>>(#|OC>?A2Uynf{0E&K_Oe?st|utNHeCL1b|ZtE9}XfZ;ZnM{ER6jSC&1WiQnt z93p!DwZX6N$q|JZ5NG`c(LrpQDXT3Sm6!7?c02tyW=&0_kIU+vAs_plPk*l}?12CE z<3R3?-N(J%)!bhn7(iQp1kP0}z}PAI`C8n3!mn>RG0F6%4WI2Qxf$vm9%G|*<-BUe zrb??lwBO4=3GOy9De>6U3Al)$p$i=Z=P}en*5M016M1K_sQ0JrBG8=_CM>&C@E%~{ z$>P4QyIsR}JkRM3E_`egN;2Vn+~&TqzN&xB`9`C5eDHZ4v~CP;c-?pd+{)(eDMW~O zY{v$KP`j<-d`dspMF!t}uU~@&AU7y##Kd2tKnSv8<|V2+Xc|@)V{}l2l{4f)gW*&Y z)(FW8uv{`aAxjsmvWLCaQNQxTxX(KM@E2?rxshFL{qxk*z1(KxGCK?Mx4-nr)JEVz z?L7O=^)bcUl;etYh0);XUrvM} z_^XSh@>Rtp?=KHBk#+u`4nY{})R&X4CiPtB(5r(xwt1T6qBcWi<#pz(T~-*1UrO+) zZ!NNBibjIhx*4crZ)5uracM#T!cq|gesN-q z*V+G)vT;%p=@8>|H}hzxQ?=PB1(jrU*}3pcmD7 z;Q_r0D{Ti2`U{JIjfa!QcFq=K&KBGL50#qcd@m<-Lhr5n-kvT3aX(u>M(=gE_6@!< zjj47T*QEB9*gma5CK%KnqOppQ&Wdxhhbu2X{_aYul*{@-2f`gCf@oW6I1@NqUi!f4 zI&c~%Had0;Z8ywVg@%?2=>-wTIt|tF74#gG6qIWS0TsXz#Ce0Wc+vpZVwV# znN}~gmGY&%TaQ1VlBjJ3!o+)ot4L5KX+`gg6t>k6b=iyNxsHuS2mLiK% zCOjrG79VG~Qxlu01Az}2hM3QT{Jf&|GhWn$_xp|8%~&JWKV!MJU@5iNY3$A=4dJC{nJ>~xS}7Q5#9x()?&RsvKdUfTi?Gr%{n5(9`1C#u zx4{EdB3u?Q5g2@ib<*TV{Gji^X55!G-TQ2iI{-$k07iE-$om&!?@mB%_Xql98I~)% zk40%AfL!ybi{lydZBs`_4|5b=2*jJufyuJ1ot=Y=59RQ$HR8;>igHfMa=ZEI)FeRP z_yR0t;aF%iC;ZO*@J7s`uKrK+_}9kzdc?MPZPP*4R8ZJSrq!q!YZjjyK=j(XJA?zV zr6P;!m5ZyP83p?mzJ8DPZkJXu%(4C-M+SNA=Ai=4ww3^JpGov06*qHnH~iZ8=XA}Q z9q$D~ZUyJ^9GQ}W+q?6xAVXO~RC>F0$;5+@RVM7p7|O@~#yh%cBn5kBboo%=+w8-g zHE5|x?0yPsm&gQbjSlYqYgSG*AHEU32u{W@0keA;+h<9HABHt-#RYw(MCIpfkou&M zg?W0n2p%FOjI-$J7{%6lbqJ(hgn|-X_6FygNVo6X&k8 zM_-lfLpz^OIx!xm7VPNZJklns$pgN;$p|_|*>i9xY!^zSIXvM&h;GZy z#guMNb=A(LQ=)PH<829+(0QPriVD=HV=3w?mT&4y62cPFcj)8`Q*ahMlY&6HrWz^q zBr*8oYvrfe(M&erK27R$GeO&xt~f3&A-I#4uBtAQairHG(H!s-v2y8arPWtHjzN54 zeOL|9<6>+cH7IKA`1ep-#1EfOlg`kzb>Ru39h(GfaYu}jgQQk!!>C6Y0SLaX5G`wT z_#K(j5C!vBc?LA5u&{pC>7~WDE^%sPE+2y2w3>PS+T+hmbZ&5%j>J5Y6`kgCe z2T>=PbgS#D`gj;FtsTO%{hDzpSmKNCvqvueosc)7UxJ2n7W0OO+L4P|^{ z9AJd5uJ>fJvMMikqp2i~l#mk218M0SWVaL`X`Wfl#N{W{-*Gf!K*^KAB#`vE1$J73Wt`f zU8@6$b^^QTo5^M~hcQ&=u2$~siY~9eeG6|3w$M@;JZw;74sd%0Z(t(nU8l?r4?=c) zAIA~oMW;^@8_Dv? zdE;gC`F=Kfc(eyQmxtI`2*fyP-YoW!o!^D47lz7%ezLJG5y>O zDmsZ{m|87cGMTotdZYX6@4;ta8JVl`>O3Ce(06zD4H9zP^fRXneCCC#_Lw_PU)pDF z48H`tsi$x@_e>hH`c9z7d5mMd%dtAn(X}HxV~~W4G~mr9svrWi)bQ=bztvV#p6LFE zw&n&pN!MIHtTe^)_coLc|dqJj7K}gdoqVHS^=r+Vp#38aXt4@ z_~8@tDK3{8doYAa!iR1q4{%5N@c+*(_aArk%$337z=yl}OE~8k@%to;hE2SB#ZTmaG+R3gIonG&2c7Jh6Yq&dHaXdBW;S46Qz!iS z54>&Lj3=;Z6G5tf2xWsg^>+VFDj=_&cU~gpejIKE!m00AwKPqbvTAGVwgf*F=ka^` zeqQ*;qHb1)DjEilN4jhmUP@MPU2DD-tz}wG#K_)P5z9c-|!85$6fzg%bjmtBZ5nZDhKSV;4zEKg@O%gMz0k01*2DUP4+%oleYQwS1L_)XlA zgr77T?sec4as_SZ+V@1Lxg=J@#JI)d1%(#nXSgv`|GXUB{dPs9je+91wpm0tkg`oy z#o;l>80~sP#k60r1QcLWMScU%w}e*-1RttQu&PHu#gC1w{A`n(`LkCm!Er)9wIEL) z0%Tf2JNKr69jQv1G@sB;99Td9m^%-M@6qdlY)PXJ&Ra zO51!Q9WBsd2vEwP38PqJi^Z0+jBJJQI3bji(!A@?sykP*)}^~w{XVL}G+ObftcugX zn|)M77^Jy;7R3y2B2x7w+=s4ABC_U}KD%R%foBW^#veV;Jg@8eU*4Q}Q4m}YUSAxo zjF2J1AbL9nRRuK6rl6~Z;Sj;~*Qv%CyK1*5kyh>!;68TCQdzZ8QIrx$NW-LE|Ahth zrWQ!fFz3$jXk-1xs>ldOEO-{t)yjpY`HWLjlT-@I;bn6JDgH8cs7n?ezCRmOzZb1@ z(?+#5QTI>nC!||$8tKBu66{`$F8*DTXZU%1?uXw--p|v;=T6P|1r-;RE;tW~69v5a zjvfIUkI{d(8hvg!t|WYKCH`4to$_I#mGkQ3ui02L!!%Z~DqAKSp{F4Am4JuK*)(yN zgc{wQm)3vWpOiMrG^ro$JL!|>LB6~ZH264{#^p=5FN&6{jl^NPzWE63j2hQXFdlgy zM*u$Xm*)Q=x!mR@@$>N25^fRg0JSpp$zMI?pEx*D?e(p@BK{a-9G_IYZ_#k^ z!R=~$={;27b@Nx|$z5>&)mtHsa2IfZq}=TJmpqip?Mia{<#FR;;N&S44tz;j{3*P7 z%uj3Q>_8hbL_=IM-;I=pL=Tx|Y&zJN^I3ylx=_lwFe+n6;F+khoXA6=a(`+=13`jP z#J${Y%__CHS^q?Ok}-z>F1i^5W6UG}=ThX8s=qN z6cE#z(j=d{SsQz|6QUWlW7o2VHDMllpnpdZN8ZtzDa54IMp-3nQi*0`LIk7;Wk%tM z>w(-y;p6L|Q}^f;6@_7TXK51%K!ol65lnZETl0&Mg(iGG41WuPFgK4N%aypD?)%~? z#hm6Zan7Vl=y_aJKfy#_SeFl=QpDlWZek96PY?>m14KX|X<6HkAq&I}0Aq7Z9}pOV z1?=31rmPyJt+~+Sk&{2}^t)U~Zy5RTI89!B(^`BrD!RTRpgfyg`@gPcHzMGEufkWx!13( zjP4YWZLFcSCl0px1*EAp#uNS;)@uRe9L?poP%Qlc$8r70lD2`WL0^n`O=~yNMdt*6>||=HRT{MiK?bsNe7e5&Gbxsdg-4gy*i^DZ)0p7A6rO-nvOOS)19CIe4V(-K}(?K}rj(Z$|!mhIB>NE^k*PV>L`~_{obd}Ney&NYR+yDaAY3=_kY-8F` za+^-^DPDn&%VmW+>ZL#hWkWVl^R=CZo5kzL?uH0-qy7Z-yQAO5y%c(tWS;~jgL{(tUImL za$|&hfG$LXUJc1Z*oC$p`i3anJgzGE?3=lBtOM=9)z+(?3=?#sU=sx^`3>Sb%zTjo zjcq%nIu~4xKcE7D9D`v-mxZV~0`=F4N8>VjMT84=pUZIE8hIShxy8U=a5FF{qy~z2 z5Hg6+kfWq5F)+oq9BA+9FJe-wl(}mtUpaaRY)B#P7U6cMvSgY;)Hxph(2eH3-KFsx zjnI&Fvcl<^;mXnX^Y=IbR03ZO2tb^%&-$8!a!DGuNiJg5+ZT*m2>0PLJ#y;UP1Ag` z=DlHZeQ6%ZZ+?KedF774%#6ysU{+||n!~a?7VnvOCr%$B4TT}#e!SpS$X(N$f^cI* z6uKgE?ZWf+jT7P{V?}dNgWhIXic=-4sp!`lgxR!({oB6-816 ztQig609%++2CSMCLASM=2bpDM=K=vMEG`qkT5jY`$FgfiMVFORfo2r>R1O6L==Rt^ z8N`rfa40Itmmt5D6(Db`L$-%rTx{lcxe3wIAU3@H?&a`=@#Yc>>~k7a$N{9qt$owz z$p4bJKj_tDc)ecXskDw624HETn_4=A34idqzrqspdxgFEgeveqK`*3oq>Y&YWaU$q zaF_KwDeKPBOtB=vf_#hJ@7CFlS`Oc5SL_cDVfAUg!u7ne4exj7WAkBDc2(kaQMQU1eWV}Bqc}Y}UQH2Z2`w?17_&mHS6Xto zA*$<}mRSvy@VhxI#H~!+(>0@d`D~>`yIX&_0@RuFEdBZl^ivd>z72;-?0$uQ7NcpF zs2HIa75#(9`=4+>{eRNLjYpHV&3M&VMud_^Csl*&p$hvgVr^Q${Hh0y;0bId*mPO{ zvD-A^W7m%*vgIMsfJ)gAwiwx|IV(xI2F`KTO&B(A?oF1V(4#3`bz?O)9uv@kl%xSO zj8Aw^>N&T1=bw6;$P3?#m&cRNcfz_e1?)incyy@)Vfq3HQrN;IlO$4b5OsZ*69g26 zL8g{^{2JncA@nZ~B$XzH&Ba-q-{si`_2rx*=H*-mAk(q=@qR~67Nc|?J|aAKc72u9 z(#cKyJ$FP=QMBq*HGODoa19Gu^A|WY1q5`);k2`E<^1*rr34KF4a3>mp%Ccs1+yen zK1ZeZ5&AAyA_=zd+R+TQOL`e|IOS~8%&yjvtSS#bK~iag7%0E1;r&%6nq9u4QJbh+ zPx|MnyU8#r7zrbz_oithsDPC&x!_IlL*1+wjbW9$RMiMQ(P5Ot0=;aPcI2Ln1Dp{W znPtA_S1AdGp&JnZFkbXXoSOI>?D%Lw#f@EElGPtt%zcV2!W58RX01dl@%B`2C|)S~ z${3CukQX{rX`NOO zw@Wj@QEf|B^QkijDhF~oW39LMwi4!&6q1$L=`$`me#v73$=&A>DAmNjf_0x@_F7nD3<+GApea1>;r^$?`a^n*9P_d`%m_2iM0N+PcqO1-#$)S&El3^h6OrX%mgD zpEAC6fvjMPi#``vz;nh2zVy`5u6m9&Etn6S;43M!*CJix#A>;U>1&eyaWf(ZZY}xZ za+cVqP3$UX2>jZwP1_32X0rvseIPS?aMixBr08)zxGoynIOVxzsBle7YU`CTSBeq# ziWffweTNfxN+9{eb@B&P&w~><|Jm!{H$ph?%nVaNg^2UXKdc9nZXB@q3x;KM6Dh3= zN{>+NC^$lSv&^bMe)tEw6pU7Ps&4)UJ1@1m04W;(yJwu%GZY{-3N%^wxit2loe|*7 zeEvepPH|EfS6%-7L}JP4pJwbUA`%Jd841@L0N^K4TRt7vvK0oEb{UAnXj?&BArdMx zPyOV#9)pVj6U$Umt06T}X8f!|(vvpHIbS+DYZgEB+`Bo?H zKyEgSR~0gzxN&FEg{IU$%@cX>Iepm>`iNp?ZxoVIM(G7#Eo-sU{r-+E5S5<_9fp%j z%(h#y0T}1FsL_;6kwsAB`eKS%@;4sLGs3DblI@^?eQ3VW&dpqb!h*y2t!u=f zRaHLdE6AmbhqN(M5KN(iD1k&D*lgLQQH;lm1sQ7KJFk<{FtFzZzFKHO)P8*N%;leZ z(lA7ex>?wE;=g-$p4{XR6>~kT+L?)yi>B@Pmbn~SQqiB;l!vn;V(~^O*Y~5PI3+}= z4dN8%+LxZ+hnH`J;Q>a3DW|jV=3t`g;sM@3i@#ns(wOg4`L%33tEAIr+I437T*VPH z{J<`NeR|f(rlWFFRcOep6|(V^WG6koDdA8E;q2+ix&FETXYLVf|f!8ZoIGS$agM?!wIui=~L=ivyXR`({9e6KJXED%YOtGD3lIZ@HLb=D{U>}KB2~p`b;Uwe zSHGVnd;H@uNa_9Juti33tD0tBwGeH8MV)FtffNG}p)Sh$-fIu{KK zAHPvl46PxyVodRF>BUB(a(TsFzScy@$W9ev<83BxN;Vurlg9xx7`shs{8tNn)Ip=E z$$*H}JI2F8!Vy!H-z$m?S}6YE$WKkdC|Z1mc(jXJeK^v5EI_{mx}f_D+LK=okorET z2e1o37fKRG3U_QvXJ@Z{H@4$}cHj0n%?GtC^`+M-sxPfK-gc;v3sw6JbkOTo}?_Sw!t8n8XO_=?jvyVn|y?m z2yU`tIq|XOwgGbzwyamM7Q-3O#G%pM zW0&UZ{yT8dXeTclLXB942J4}6yk$dmN_eo2WO|U_?_S;j*Ea?ghXDVGk>qc5EGI`&Y_H7;CR*PL=3v4HIf|9J=d6TkmqltUF>RQ<%W4#;=G?f%%o5BqJ$ z@EIBC^y!#llr4?lH_I6h?^@tT55#BzKKV+D8t);`!GWLQY#9IcLr}hF&ZzK`m#>Er(%uma{d|CwQ7dzDF}IpJ6_kL~ z6>OBY+-ruii`6&v!WlG1Uuy7e-q%y4e3Y@^E+oOD6**ExRQO`GP?F(MmfEx21IZE! z($<^EY!dyiU4e&}7aRgd3(d-*#ef$MCPhk{#8X9Hd64-q3O;dzH5b6{=R>++F>bTx zwcH!{y`qsYBYM<>Po(~iV(j&(qWV4J%{^m4vZ3YsG04#Bii=h!M^CLPg2py`$$b+^ zk=^I~3sF*#txWmvjY0Rcky=ouGwLdNbw;9Evg6)y7>*}xwZ_vlnO0T~;|+gu0g7XZ zV)hdka%hqkGMEhfWEVT`8bJjY{hg*03eyB9>gLq(;}gA%7yAI*E{)6v;8NjX4|M_s zVVHijKRtf;M+ua%l!quPo3C$p{74%8LV_YSC$X1Qt6g2YQK24BpReLI0YH%?yFUPM zi1ru7eg`5JXy8qKys8U$ou^fS_!rKm9UIPcKB-lGpgln<5DW{Jop&o{v7cz@dcwhC}t zxVS0hT5Ot#Qki60hyrmJGa@;wt6utGq!( z_lXRDGtBiwO(mQ8EWNiQ~ezCL3=Z^3V_<}gfmp>O>u z2dx_e+rAIJ&!z)Zudd`s+VAJZ_|$x_2)qJGZUcMRHE&|bt`XzvcuacYc`=*s3q|zT zSO8jefYC8Bu_dh8n7W{&R|fTQCJH&dXJ${R4+vW?U3m>>^8E#5ma6c>r*rZVoMvhK zUoCK*NJ+ou`i^=tA#Am4X>K*nv66##3z{Jbvy`cQBZjg85YZkD3z|F)Kh0F-xdF#w zF&Cfc8{tf`5Z{d`mvFy4%2eXL!eIFf(~SV&gbD@hKu+l_|wdpF(42!omP2OTa6LhJo@&@UHFE1fQ}Z zEYiQEJV50RT#_hMJ&}L16Z!Q#NomDD5|9tVBj*;K4nq-a_f;7cQkr*(5JaBgp2g*lNU}3554|D5g3|oul|z+ zg?!2(#$bkvw=qtt3y?ff*wnmRqs0U0Yq(7@ahf|#(p~)rEPGLnI7Pp3XcBt3c7M7* z&NJeS(7aSX56Wvs=(My7_=Tg=Fbj0JNX2yKrdW!j9iE>YW@3e&F*BNc8QHK9Oo>=C zJ#bYF%Xx|K#FfMFI8p>^5kO=x0}~?*V&1=qMxlO7)NqO5MLz3W(`0Vt$@Hk%GJX!D z%?mIz&W9CR;um+_5CvZgiTGE)pf>lVnG=@;vmTPsIe*AQ`e@E4&P)U2lIpNzio@~H z4gdbu?_CW;Z44IwC;L)r$+0u0Kcp&;R(&R8gd>RQ&;`SX>R;s?^UOM_G%m0pM*Bfj zft8dYB~}@(aHxkhT8!o|WxD3cEYX5q@q^vt{=C$Vs^B@%hFKmM!)6iXBCXMp^FF)!xDHzkV>jYni z&u*%eadOe#HJ5x^X0iC(ukF~#_5$XSDWGtoM3Bj^{aQUlt++U)Z?r_$ls6{xv158; zb|=B9r>SMFVcp$uE*#4cv?=%{!tXf@NCvWN&b(pIeoyk@>Vw=@W`1L=sy7kk=WaQp z=P5TN4Y42PC?V#}p!i>cA3kH{z558r?|?zk%mUEIP3zami&VP#f%hqvt`OB81um4v zI4)o|gopsxv);)YR4i&3;I(=H2zXe!U900OAfT7?Vrv_^K>^S{8G%JN%QbX30io7982Z#^0V3W1Dc4uaH=~xweVSyb?ib%ky zk`?GOb>d|OlDTgKHuBZ4H{DXgw@atD1-6L2cShsL#-_&mZaq^loStft(9>T65e^b| z`*r8TBA~<{Hmv$|{3fTYq~`ITwh3{{hrh2$j~%P?w8zDtOqeP+_%@%&ki)|OUn<}e zesSB6^JSn$j6N)KQ`zhJ)b`(J!V} z&!?0CchyvC_w(Hb)b^v>?cYNuWzKh2alA z7$&}MqFB(LD#N^U3Zh$nF-CTGN_8A9*RAX0`r@58G`yHeDC(Go7^)ywpRO_kH zb0=kW^NM2VlLHDdry+jVaTmFw5CbdWn;k@SF9CPhooqwpM>D73*N8x9a;Ps;BDdFP zC~~*3fsiW(b?5<~7K{Pe4MM@Odo|vE^RFbTJ;6qZf!FNN9nuY%`dHE!QY@cYo6D0xrA&zx$lXA&6>0RudMc?66w z%!USA(!!55{>PKtxm`E6x{JF5`?vFz|MGPFj1jjhVM)Y?a6~w+HAt6a)}?rE`Di$C zAHg^j$F)d=#q;jScFvbWPh!fHBCvbl{<@pqDW-59bVp312|iu)d^ln3(swisQzqMt zi+oZg!8FoiA@JAl&n$kt@N9A6=dJ4u)8uV#s!t-XZk11eVrZyvsuIxv58>dh7>7bh zzycIuItEG;$0;n%GjTd(J2BC|;Ej}`#l#Qbk;il|7??&?K2m(7h)n*d8ay1@h+}(q zLN@w0%j{v+m=RtuOd|&D`+^eG3C_=ZGbW9xA5J3qT%MXXqvq8fl!a@&I4lw16&s5Z z3&{br0B0IO{R2w7?>Q3ETXn(D;OSG#9uYg zuNmnNC+y{VlaIJegFEY^eI zuLtXU+Vt0L4xzu6IGU&UIv7o#)hni(KbZc#>= zR3OG!ayzU{-CanT_F@wRP{Ndbk!-ijQ2_(1amri0#jglh#Yvx~qA^b^#9QLeO>Flz z0H@R=KWy+4spSw4)qs?Bs+c({Xb zmM4f{k=BLEg6e=6WDVxX!Y-N^mNmm^s`}i?fgqNMiysfKs z$adq>;pM<#hu-i3>E%!EE27Nb=|7(GU@M!+-yaLY0j*vnhe|(4BW?63RLMOh(VM|s zO2$HSAygPLX5U98PS`{JvFb&0RHG?Ho4y;H?D5s7L^%(sWVMSHnPvdeWLHZF_ix9> zd-xvm4xnqkU(NpS(6L+B@k_IjO@fH5Y2k8y64DLiO|_wU2I8&Gq*E_bW=p{MsMXYo`nu1dAc>9!!U2%KOR^Fj_DPar3G)P1*pF0^j%v3O0pP&OJD z0f?bm44TQGp1c`(P$x6K-aDS!lPW}-n3#GU~X=Kh^A$_*H9Tsi?b-QD{m0z=K$q}Awm z!Rn~fCF4cI_V4D>lYhcg$e`pw)+Qu-q>Y@sJXlA2@<%0LN|X^rU@EfWFtdjadi3<@ zxACG+w(yufW2&1r{Ve6&=!nb~kc#Rth+Qqw7NMiR*RW}&BUe=vl96u{ zk?o3?B63qtUolZ!k!O<5K|sR`kJOF(>*HEHk6c!3^)ZDkT8ix%CDYAJQ6llP()tf% zpA`XK+J^H4MqSXt=;*)pb(U|4&D`8P+6s|}a=)05@dh70r zppF_T&c&%|-zRq@sh_H%?NOX{fD4OiOD16Z>vj3%biQ@*H3U#1*AGrmH^Q_HBiai7 zG_xi)QkUn&y>sL7Q@oJ)2LI`bAnEe{D1RkLcGJdR;~k8`YiUn>wb<>kKzfc)Mf6mT zvDNNO=J$hCA9va(vb)DWI=6y&E8?o#U~GGH%}dzI-|}#m6GC&2bBD5)KI6 z$2V|agob&j7>)4&`s_c1s*97%c^Jvl%Z7eAccw0cZ8nYd#781QXA7X&vcf2b1H1Fg z8@L&-Oz9+l z$TYLVpn%7dy@oiB-+akwPL03o18rUIn%U1tmd7eDLMmT6IlU-soagird21DIX`Tb!TI=)vH#hfo}!M^?W zHUUMhXt!lyJSI_#h!onv)^!+VmPx+xABup$SiM?U&7zR4Kn?J5F{I`)t~#PXK+eQ> zF-7|*_K*XKiCZ!?fC^ft3Zs+@naMQ^WGS6H-=Q`VgP{CgbQ{iMR4SKDrtI1arvlDP zWJFR$(=((vd@5JlbIcH&%}nup4S#N2J)Jqf6GGnz{AS1)X@s|twj;g&p>FnyPA#=H zplVU?CLlZQrelSOE>A}wWt6(vU}bQ>8}0}x&_-D|vFE^KHu7f8|InJ`nA7$dK4YSq z(XOpK%l!gDwt1T~B|oegA1I%l~h;LI-ngsrovRnyurypyitPB_br@lo0n| z2h@0n$pS8J`*MlKRs2LFWq0WyAta0ga>SU6CI zi026OB#1=}h8mhvl)!i&*9W*JPOGzwT4*=t5PFjNOM?lLQRB!l5_Cq9V-TXLBnG4^ z4os)4oSi*%p^+Lv0};5UWe`hJ8Vs5*u%zt*wN%I)ZjkGd%17&D3ObP~-?`TCZyE=~ z31LM^4Hc>23hy)9nE1rLhzWCrRX&vBV3zO7ljwK$_;h>LJhD^KYJ>1Wq}qeH_ZNk0 z0XNN_h-oH2Kni~j2cmjB!x3s@fC&IdqSB1$tlDuemG843MrR(stM&VaTB*dxb<7WDcUQ8v90yRCgBl~Xy>on(^l z?Cw6UI7{++a+yC>ZUFj%Mmo0`=N-~7s;V|V5!Dr^8>bglkFe^6@9hWQ<=p~^;n7R) zZ5JGDnqhFp18HB`=@vSgiA-l#fV{Pu#-?4Vd$UBGfkA z0Y()Ga5^QcZggQ@R?Rs)1_d$Y00_p2SXysW58oVdoL%PbrysG=!i>}rTp;i6(E-w8 zGxrF}9&5hccc|Uqt`9Tl&}kB1LLo9Qo;;K1+Dk);)z%)=WfQF9PbPDpW+$kCoDcFF zSH5<34pY;r0`D|CdwVfKMEd8cW%tU_fbbdsO{rHz>Y~$-c_eQnt zzjRA(tJBR~52|`!y8n3{jS|}LeuBS$^{N;=2S?LIu$0Q(J|R0wm7ePtDy798GyOHI zGKZC+TY!8?jo;VC3p<1qVD+U9isAQ&q|BNrtnTdmMcVX!O7ZjFyJ1wXcChLtj0bspcDTu|^?kXPfPzOvN5zu#tJ3RXT&Phf|UUlrt&_7s9DK&p< z8d-t$_HOLeNns+fz9B2DC1)5KD}1~pu!QGBO!>taw;=jKYFYf3=>UvT`Z28>0XomL zM((QK5|NxKuA;g82bG>|zRG-1NK2Ygb#%=01)W?~Oi5)b^; z5z_wmTVRtpllpa_i7TkkC)meD{auX@k6M(|&bpDQ$7>H+yy(#aTHY_`#WvvH31>>w zo3&c}1&|zmES*}bFZh224ovRb+TrCwrb9qFfbQGydwaP%%wD`pDXb_i#L%bnLBmJx z$}Ed0X~U~K7wfcD+h*9mVhFJ0ZH}HtUks&RXDF-?QaXLPv#nn+JGZ1gEM+e9h#D5bx=9BP!Pr2ts#Ld)32h z@31Hks70gs-HYuFlRGYMBT|Nlq?mD~G)%Oy$&je;6#hVnBnDwb-3-IRH93hUbAPU3 zh&Ay?TdhY-v&d!krMqHr<7~=;rEJnR&W1v`li-k%Srm6dU$|61Pw0|SEh6}y0$<(} z@Qo6jA=xH^eTT;?lHPcg&UvsI7`0rj|1lggz@O0}}!Gg|>{Jz@@m<^(jBfl3mkhxEM34#Dz~9 ziS;%IyyWf0JpO#^XEnb z2Y}A0zHKCnj(mp@q8a08-^XXgw;?{xV0jtmm=aVe9C|N95Qb9?r=5!O`5^5Oo>sUG zRMo>CWic%HF7gUFIpT^@9alB1&##h0y$xU4p7ok;bFSC7$->B}`9w724gI!>^f`g> zNY;0Ttn94DNjV==vqNMb?+&JFeHAm(GO~LU)asD*7l=cUO9B*EhEzFlXD!&lz6gZ? z7WjDr4|y-?zjT?&Xb$rsk9Ic1q=)CWhtarwmF$q>xk(QSK%H~{zT+<((3-&abo2|g z=j!)cf;O^U(2ed7Z?bc&)5$;PJ89Ad5+?+S0>`~U@LH7`1fiJmM0>6ge!l_0CBQS_ z;f;@kP1Q_YvZJJb?uSRexY&l4uy$-;2aU9JwMogA?kz)3vAk?O*Lxx@$@G*}kBY2hq3t2VEnA)f7Au7+;7*~aNd_0LtcJ(v$R2~z z!Z3>UP9~eo`J)2SO7<>G1@%vy8nH+jd%Vn(&7Zyg?UQfE{-;}fAzzIf^-It@*?J<^ zRKFYxH0Z!RZF?oHGf|+7Ptq@ih@cgmEUs?C%}Dl1IJuasX(!z{RPNg@Sp9Lp^sX-} zLd?es-hbkdo!sYY^4yJ~Ue|T#x;*H}%x1lB1bMHz-=BGO1-)$>zQ*!+`Qm#}MifP` z&lodVt5qa8)(*iMx-^=n5VfU~BE)GY3S@plcbpO56s8r{|DAZO46Ix%3%l^egozlr?PQFej`r&E5KC&mZNcD&&$(JI^qsXuT!oyhL&6d`JPYOnuUJRuoA_Z*=4bSHq`QfI;~c={lHLCK7WJzZCliuSRZ78_8Xk zJ#4x{=FS0PfofCX^LsTJajs^Rv;yeQT}g*{Mia@&%a={-!$U#>+rm}DvgTE%4^!v% z5kHQM^^}}AnP^&Qo>G(3|FQ>_-RVdhS%S*L#=wS}KA4}SoL&~uZ+xZ*PuHxY<^1ul zc-g1{s~{3Uy!iHD5}HLoOL_80VuxL$HTBaKa3ue1Vgy9{N57slHVby}bH(}6IZQNj zipxZ*3x$HMXC2=l4~1=$E<+n0Km@^}Rt%nWkIG`VxFQ683knv4JtYb@)G795T(E>P zD?59~tg)|Z)wp}pxP7DG3lU(+&$pw@@dc)$=M&;gzzJ;Z2r)=FSe|mkFVnu4^Hs#K zJ)`EoE95l_zHAH5=TrzPwxRFQnffukl12zz=en=>yXkA6+qyQq4%fMX#Q1&4hnL^d zlZMZOhNOooT0IrdTtw=(ihWE;N=vf!xPkJf_b#`EIi%`^D}<+CQ4FyQ5PmfpAIFo0 zA|wYa-RAmK!nk*pps4(;nw9)M)f?ygf|(YtN-~!=xC*eOW$e?>O8@x%yVimJ%|NfF zM4H0$k&qxQb`a&+BBQ1=_^DS}P?eF+U4(rJwvRS4lZ47oq-9<@HcZ)|2jTN}9H#^F z7lB5&Q@l#wcpTWm)m93zFKVe~1Hg0%u-hY*gdRPc^_aTuD$a$yLQtH303Z2~+29k( zUz?2}r0*FT@0hZFZ+{4k4HHce2?O)rLPKx@br$Q9qnLsp*+ZC8_NLh*!onkj`LHGC zmAD8UB~ecDa;(?(qoBDpv3dh+whageEB%za*hKUZ4d5Cky=_i0c2#aVOc>2zq3EoL z5u7;Dl`0k&)ZvND$&2vZU}^H8XmmrYRZv0*1XruIvgHm8{R8Bj=G&=}YrpQh@@koS zC}bk-)3q)_lwR`7kp?6|5rn?7RxS%);Y0ewgg%$3{1Gumef!w6;1u`Jz$qB;MbF#l z{BQN7Y2b^)Td$sAH=M!2%hnwA%k2Zb!_*85);o0US)PK-X%<5!)?5BPR^u*D$e?Y2 z2qq3kF^@z;Wm11xWx!x|cLuU_4tyr0(v?ZT?wAHnOtFA8N&4t220woTbp*=;Nt+up zgru#eCu5>)=|P3oAd=n|tih-Gt=3x3f>Ss-0YfcG;zk*{qqwg<%w`D(8TX5PvTU1> zb)zF$CEZW!HpQHNdn0DJH8wnVIH&n|3SR-9#3S{csqP_%V$WGca|*L5RWLLt-iuEH zf`CY5SryBze3(yM=7>h4eM_hfj=gMFQ{6%-q)@1Q>Y>_fmM(!OT3TBbTng%klqM&THO3EYt-B99vRGN zMIN0@z7EvWyW(lK*hTQ({@l6SNmDgl`fqBk|3Z#l*8j~lo%3~RNIVCD>K{B#-d0pT z2O$Xtw{*?I(0R428>jRJnf2~(ncjmba$#|tW`gB?s@hgt_f;O>v&j_iDnr-G)&P-Q zQiWfG2A1BfdO)J)3ZM~_z1}(q=M{f3jE$C9vh%RYxMgyGOj-@5K#{tb9on~Tf>!ZE zCnHsj+hfBuLDneOS$E(?qTvY8s0%-i#_YEqSlvFhY(O$0VqvUWp!(|crv`y4IgSJK zsPf!B8zF?`&Av~tlv5d3ENp8Iw*7Jcv5A~8y`-{RAtAi9M-4HFlbC6mt&6k*YjTiUvu9Ys1)Wk_rY-&VEYOoiP|- z8q6H_dIiv7aHY=>2{>LB(8MW$OaD1Ie|tbb)(!);fvNbZfC@e{sbkyx&%u8e@7%Zi zKnR%5{Q!oa)Y9PNLee1~iPU8feQn#X7P zRkL47jh6w*_bis*++WJe6LpJYpd z=edXtZMGt9Z0SM}oM}x6Y zR@3I?0O?j20yqv<^26v;cVzO?0Q+epivfb*;kuJQ{VZ0q7m!K!pe2b33-;(QJ?`{Q z%XZkT*U(i}4m0kIkH$cqO>M+)4<9{4{eMU~FtCC=Y2ueS9R@I~cu}ybKw`%3CkLh} ziIbNXZRGbQljhZ}qXRfvOAdwO@k*L4wBl(T2D7h4KE_36)ij1q(%Vj^iu{@b&`KtA z@6-i|n}C3&Z+G|AL%GfvA^OzR1u*U8Z7S_9v$HE6M4kIx1f9PPx;MX_p1R{(PRif$ ztiDAFd=GNXAoeC%KysW7ilhbV>#aFyEG>*kmr49$v&= z(RzsQ3W=U{$f-#kF*91QZpYWujaYwsG#1H+@WuwP*U{9suGS-;Qkj)Qrb6EHG5qTh(nT#NF9@ z^jF<<`~3CP{PR;){CrHe_gO;<=bvZINUW+Z_Le`HsY2|O4XotKJ%5&=0T%*!QS@mO ze2><|ft8rZDu-5;;>?sqUvA1rqp_~8bFa6U38`0cypJVeuq@GpGB5Y*`U_9=%q);R z_sh|s5&yb3rKL}I3T%T^xEm%d%4hr7FQ@ZM5bK;TbsBd5t-8sg4=WIPNd!wJrs-@9 zZ1W{ad2A>AD>jl}#etiV)SC^mrmMwV2?eJzu`->?r@jQXFjDekmBx;IPZH1DK3} zQ;#xKm5ODjU>m2}XHhS;q?>}3_eEzf$k!P;>oK5}wyv;I6;>%$rZXvWSMSe>bB5TfxBFg{Hs46L9;; z^X4s}m{F^SLq`7vW6f2Zg}j-vXALv9Q))rDDMzjsj-6@U7&X7~W6_)h36uc-`&cM| zv2`M&M!R?|JSCvQ6NjRZd~{;DIIv?s{Y+bd3EaqpV^9Be`POp_J&&5i7s*0pAfyKW zkqLkTot?}}(y`UfUS!$=fwl-T#73N~MWbodcs<0T$VS<^AIczvPkN8nf}-eBs=Y`U z0nswD<9iGmbHx!>M16zfsh+Q+)cwoL%Tdi6p3eG^(;v-McD0*!y+?G<88Ki-1W*Wy zg$p`YKAba14o+aShq$bt8;S#t#WEOV1|yL&U;+~GVE{SxH|#M>j2zX)$Rh;MXN(`_ z2&P%%<&(1*AMsVO^i(;5S8(VQG0UF^Z>#zbX_laDwBOB+ool#PiZ!x08tw3!7HB*7 zOnxYTI=ya!WIvOn+QmFi8Crmo}|fM~;q@{T!v z$naf_(++Q1;$i6zF^%5Ip~L-Kx|vB>n1cZzngDb-2<7r#IJfG&Ijt-=vD9kR`#9XM zxC{M!I{yqIaI6!A(34U};VaAmNM#h-)_r|9?G;+xr`w9Y53nowTBpXOn!Uo7ds#rg zI?IWN7Jw@RW(i{gFr3BX)8q{&kShafED=a@C+6#Kvg_XCy*jSEf3^g*eYhQ=Rrm|C zl9e}8*OR~hKq!G}{(|sQbOe+C`zO-6I09*uCMUrl{Ifk03jB%rH-wwk9^B3-Wu;;Y z{;yS^f0$5Z_zmBvb9NIO*w}>5SL)xPl$~+kZ2mfJ)qwg-Q4QxJ)lj#*kgD89KMeQa zpD@Eh?lR=p?a~I*_z4SU&1HstW+z@;WQ1_nFSd5`Nw7FAMHvpZ%XYbQ6kF-rE@`9< zQh0tmD{NlO&WnjU2F1s(K~BUq+V8efRkPV92^FG`c;n)wmvb`+e*X9uvtQf~p2L;Xf@Db z$5*54rjmRnf-pt%GKXxKar^o>1Tz$l7H(|KhVa)wK5x>KM5I>qog~eFhRMlE0C)a! z;@;U+TEF0@6GgW35QT4LI7exaITD9-h9RRDaGEYr!#85_9zCUW;|d0YJfbN7o3{Db zQBLszk{nDG#}%3yR2=m3Se-Epb8R`6GpSp;jd7a%Eo8D%8v|6iXs_DwWe2%m!E5sI zK!cBN0d^QZS=nkm3*oN?>#y-;m{=&7NZ7SU%IiHosyD|zs5R5tZ^INtlunMuvPlx9 zkd41MB48*HB9)$vA2MKeI&tz)npD-=GX6@a!lw3^DWnoh_clzbR^rYN!C+qMv}1=q z^ghw$+6rZ`xjRoe&s&Ry4 z8kFB#J!<1vdN~3SpBLK|rIz^DOfl(uUum9WX|Bcs@WWkq8Hr zJt4Jgh-|SC_cI>h(nb#+kvQXtwtdmzP@tFTl_xE(K$2DELprq;IAd|1wk0qzue&#< z8&iBzIfX8YZ9*e<(dg-b>yRYWjQ+m2m>OOX#NKDGoWsqh5G1E{M}J&%X;90S(pi+@ z;SZy3z&WJk$c#@Nf9C5&3|zgS2m;9UR6om169?=Z z^=Q17CtNltL0XHM1Q;3N6JXvSh}i(n;^2xmjU8a0J^GzPI!^f{7{`-`_aZ~9fEchI zd2l#z&ztm)Ns=7}?~>jfL>GT?^mdK}>T&hEhi~?AZ`%dMuxFYWfj<^b z9$G6+ByDEq#tvVhM}_&M2mgzVGVLNVOCjV^pd)5%9!4&&7zGnSLsli$gE2}LzQe#t zVan6d{o9R2495m)JJIL9Rfob>~N(1UVGK`!-VDf=7%t{p`|2AbYVfG zCnRNo?*hCeq)+}d&8piPoA1)y)X2(zWD*j!sLJ9|Ix~uU`S%tWu_?^2GZO8*sJxof zIqR3?6n+1RiIaDpV^Zw^0T7-~t^Yevo%28F>W3xL^|U}gumA4Ug+EdFw{pD;xAe$n z!;zsH`NJOhu3)HuyrrgkL(eFN7Cn+{@^K);ZnzDzPG_WII@D4!;bNg7#@+BpBbIje z=k72d8cs6;(6~4IIX4H)kn?Ud!b~cY@0UTs3MoAKpUhcjY9rP4>-oyZ%|NC5!Erob zc?6DvoM0$dF|az-r~2$wJ;;%n{l52fUey9+9s-`x_?`ioVdlrOwW;;@arC63OjefJ zu5cpu`|9}t^gs31-$2-7$QN*EB6s;)Mj}XqjO&>{rU&<;_(rR=s$I-4x#K|uwvZ81kPzAdk9zQg++Ckr~{({$aBvFb{8I+pT z_@6A?S2J>Tg8ayu63Ynsq7eTbeK!)1t?DuK=B;{2s8I(RBv7Xj-AeADGk+^|Pv2g~ zB241KF_OUm5y+#D4-%(pY69l2$`?^6E^Zk7NrAyih3Q*Jz z>e0l7w{CCYp7djZ7F$4lb8eNGk|b==c8D7e-XBE*3h+LqJNfzq-Apoqw)R~A(JUSx z`lty3`^Ik{AffoLp?TdlbiCX~ujA`CKjN7oJh(ye!5=%0Kky88gRB!TXJ8HstVc7# z)KQxEmiwhmLy=8?Z*YCEy-pgN5uh|a6#0Zd8nSC!`e^Boj3mYaVs z{2*$sE*)QKSR^wayYDzVxxNm2gMW~~Q!FdNb{d{NeE{b$jrZP>B~?Phj(PNnz(kuK zq8QLg;)f+}U3;e7+!KvKxvjW~?sbq)`Ldlxj zXv4Nt8VExYL*}81pnyh%fk_!mQU1AfDBXMIXyhb*`O@o4W( zbtG@1#I$x_s7io5xb6%KF#Dj2Wb_nQ`4LCv!C|4XrW$CnV056f%uoH0R~S99Sy~{z zIJSv&?sejFK4nE67c;!ZMEX>I*KYSQBJ;tycHk?Q%PuGA5V5W>ERdx?Phxdy*UF>hF_th7IzAR|ivJ$Z($=(l<8C$tFEtn?CBYUYwnzb0ayON~2^b zxUY-*?Pt)X%FLHd7O>V;J5wyqt>`fYOU~?3V$RpDr})~ z56^$}%9~SElB{f_*0|u$A6|cp17tkBaY~>=#J)LQpydD^eYa*N&gZw@L$>B8{i+x; zQWzI6PCH9l8v@hd+K7*7vaC+2WwIZ3%R!9#_+#et&+EM%ihurODUjoqRM0g4z}G7_ zEx+$S=)Zjr{lH_!C>Jhct&LtqV7mWO@Md%>jmm}6WmW91oBvov5Fk(ZB$R(@;dyoW z(N!TRi9M7|=1aHJj9@@v;jfDL=+~pl0U}|B<(GYVn|8D(UvxA?g~by7CQqVC3l~I6 zLU_Q_I)ujx{>g6d*0 z9KgH=B8I${0DJRaB*It%U$?@|04N8fkXe&^e)=l3_+-mlvHPlebhd2Ue1T&v8a-c-6Z7nD457EMfeU+C5vge3Qkc~9zg zH?K_+9i1kQJ)bVlVpsi7Y!K)~=V?4(UF0lJIi%D(i!*#eTukvJMUZ_|l?_l$6%#A; zcW0gO&r5t3YB4?MZ&hh#@SaoTi|Q0y*8F zqo5m0UEJH{_VqAH_;?YKyYZUChoJ>G##W)Q)=ZF_WfCYMwNcvRvGi`D*bJH*NV3xP zA<$0$T7aGoJ&weC>qqn;u%tGHLfK7T3u(0BQpZxPRptqxGOB~n*6YHsuxXwz_L^ckYF3}i*X~ocdiSskEaTmWl^H>R~qLgF4mw67zTdm>|2GQLY4pl z!CZJ&Sq-lHle{*66Bj*rN_}g@W_!!&zdq$2>>$*RUHYBHHO_W=NVXf+&u( zBCLU$$VulLo&X}^BYIuz@#lzz90P6p{AH`&6t?gTCaRq)21Z{pOagklXO-J@SoF)erH~I>Y) z>`u_d>kjzk!-79$piCvt+a5+bHwJj5{S_;rZm6|W5~uSdvYe`b2;#R^*n^MKtvWxd zozGbQZl>}HzruSWuzUH>Dt`RmS;{r8Z>d&(pD-hz3#&YDq8afaQveQDLBlCAbV1~- z?Sz@v7U`1>SVd<>RZ)_roV_H&#uBVtmJdgVFU^}L2J|Oc$ba1Myi(|RI%}^7oD4zD zE>q}Y2p_uf=IQ9KZ2&Zsm9tIvU{E}9g9I2y5+jn8RDv{`!u$eZ%LtEc;TTaq!*g1~ zlC1_6-<`_&DjRJb-s{+j=r^tX)qXqCQpQZyO`N8vT>W&rxj^P`gJ2KoB|R9AL+)m8 zeDguy_fv4>>RJrWIb;_|kUkSducICNSdA3Mh-*3qtL2O33U_kXzddndCMPz9Vig8H zTA()Z!vdbtt=QI>x+u*H9!1SE!k6;JC7wF%l->m8smIFm?F#OUr<#BZYZCml zES+OmW$)XDceZWYuE{moH8a_oY}=e{H`(USZnABglkx8P{omv0OWeU+K>b#F4J`s1CEd>!mh;0o%A#SE?qgRaENu9i5}|o<)mDk9z)# z#{1_~JIDR4YB#O_`k4A80iV7+S^I{qgOd}5%*^tlPtjNZ+h|fO4`tQ|Qw2$x^2SDw zC7&;&ZfhXi#XI)hGq^5KV*9?1eO!aJe8t)!fGkD7qy}be*)X znU0q^A$ceO36ji!RHC9-te^~!kFY<;0s-@@%)D~xEW-2?qyY2)U20Lj!rOy`a-0eS zAU$odiXboYgGJJ(bT2Ug?$e$o?sS~*XHy>&Wd2}2u82G`Ih|y%yI*>fded+$$zC^T zMTg?9E5T1H@bv0;{krve9Y*qT!1M90|5n1&!ZYD5#G~(fqHaB35EA7W7n~Zj`1fug za&cXaF{sQPg3m!iU`sRua!w5BKiVaxsC3%|sNWB6a(11DrJAbNOKA8$i8@#}qW$|` zsu~MIXUOxv$lU*Ue%w{)_p$}I`DONP8rmO&JB1%B()SC-#rouf_jr3(iznODtXg?E`oJy= za!~yg^q@6b3l#6M1%mwH{f>2FJo*MpSN~Qju2tr)ON0}rRmvgQ@~txY=15sIj6(-b z(#&>6gI|FyLc(BqzWjC-DeOXZ+F-|5$- z0YdPNMIlsSO>S%KM#G8r$576bmJQBY6rb7PLZey)^0^F~n<4tJ00`rFouzlD#yzKK z1xz9i+0F0a!!L9aBT((|6!9QXWcx|^2uSPpcv`ITbyGZkk&#nS6h${~Vbw&SqVzpicNTwk0uK5lwkT?~5Pgp^F>4n1!9kr?B529~*EUta2Ms3)9o z=Wzz+^U2GqAV1|;k%DyM-*9_+J&n@dfnQ<_q4XGUS<;k?ZO_~i6BmypMP|zL2?3Qy zF*%yn=AA&foext`?%LJ*vH9PgC|6+)sXbJz=YFYPm;kh2)+U19SD(k0aayX3#pREb zSEhh$Kwir)BJE|o&v&$8fja;+Sz)3MxZ!MHt5CBLSCe+j4#)vqL-6p?b z;!{SLr@;nru$wM3M2!r`;ANEz7RTWH;oFM`io|~Bwt>^j`K35Ta z;DjG(B*~>KVSSG(?~Y#ji|`{O+zr*ZE-mN; zaXewA!-DFESEpvd)+4$)A*`-7B{V;J9G=B^%n#{DVYpmrfJ9bq_U`$)d>FaUiY+%N z`Ig3#@*5CB>uB>?DJZ8ySGfg6-e?1ZNXzE`F*W-}>I>Y8^Y zY$^3JyX;3VuoEP7CQ+E;ET^HKO74WJ3zu?QTbd@eVV1t&(u{5*--ac-2}zUMmQ-P2 zH;vQtZQJB8qe+i-Ny5Y`F;`xnFt z4Kzz~;85oiI@ zBANf0SD&GU}*_mo+~HRn*d1mL}Hfc$E(ax2T62^zNJ6hkT^JQ&8@xgg9XMJVVy zg(U}EbGM^vow#A3*=bS)unL;xb$!JkaN*adD2YzOQ$S2>;qZqA{qV;tW6|r63aZ09 zyimg)5MVH~5zT-^i!qhvr#9ZJZ3_ki8@ZyQIxinTScpGprU#P7%%F5?&z@m7!UqJO zVQTL7@caqryeSV!UnaH_5u~Nr41<`k`7E(HIywR!u&%=v zx~L{eEW@h}%!0UlinZi+bkZ2#$r)<1wR|YOYK&jSsNh?N!E7w2Ib?d)H@Zt}y9S}( zS%$MUmLx3~%TDiapDV8o)N2Whf{3pvubZz~;rxd>nz|cY&P($gpfbWa;t0 z$7x69f6EJt&R)geLqN(xb7Txi1)_@1!h&0J`x93J*{%Lmmsb+f-yL@H6gxe*>U(PJ z38C?DkXPK#56{_34)A%|>vygD_*gYIXm@kqjUu1^4R!f<54QZTQqfHWu*2vYM|TUi zd*h~Lbukb%he4G=bvc7S_L!kn!Z9LuPhCw0OZCcV7exG#fx@!`C3cBimo4#9%bHIgu+ouuk75=pQ z;A^H?(^kth%o#b1v~*P_f+{mjq>ZtMRxXE4>MU@MaQhM1TYuJfG;|2ZRwJtobIa&& zc>rg4ISQxKCSYUG1HkITS`S7!CS2ppaM5m~493K;#`NSe(1s(uA&qF1sYQZ-B7d4;I}O;K4?(6sl!HdczohBf9pl_4xX(^*@ihjR@%WH)~+RXQL0E`HUs zzaF67^D+FD6KtMqQU5vd7lun^8UOguqv}LHs))GC0rlCNo|-zZSZU)xbMjW>o-staMWp z3iW8UkS!&|mq(%$?gB&z?o15%x$w;|#SUV^7reqa+Z`)8+a_M*KU|<))%iUZ&4MmY z=%#V2+(33=Py;uQ2_e+$(cbeaM+wvh;`6k^RZ?>J-1PZ%Wd^c#xxc+~q7w_W#ya5t z3n(qfRlBAsa)V~hXxuae=QSXUWzO#jBBflPz(s;`kED2iYs|W?hC{5IJJG7D!dI}8 zrb}FBsGXfnj(P<`d+LyI$EAl;hMLWjmreezzZZ6~Q#pc}U9U@9R6F9}rNMrwN58Kp zDH!?&^2HrDAIWo&*3Yx%lp*=9=bmLrk(uJoJt|L@fSwX3&&OI^f?i@c8JCJ)Lbc2) zrFSCVOzhYuN-yUM9TRb<6rdS2t|mceZTLa+zgR`;>_B!+D^))`r#6L1Rh`DLs2SZ> zPLV;RdzEM?I1Q67@fW}=|Jbz*!TCz<{dWndjqt$~i225QYcb9|^Y1d-8~GuvosTgN z8Op_fqnS|9Rj2R>HfHvw2Ev<7*;2 zioK9@wsThP%xzWOdTIo`ZT>BE$%<*7L3q> zpmWHUFZS^#Bz|wzpRDn=@NcW3LL&qT1dYLE1C4<-)OzqRXS@#}5KHL5y&6KdlM*&R zR_>T9piIE)2lcP`p{UvfV8}{BQyuKr`kX+VzaYBclC8_aidvK)*zpS?0@#QwQj|qw zo3oArn;q-wlk+ez3#E~tTdyHw$SKgA-M+b^X2lViia%R!l$MzJ(^bk`k}1d}MeiX2 zFe91gSaqatAK*n>H_8E(Yu0`1 zXy@5C)~-e{%l8wA#BOmTlxI5V-wNE(Yp!@SFq!NeRTN+a zyI+vQ!2#bVv$W_#wQ3o!U*-S;GN;NgqjoccUOi%IvQ@uv{oQ%turYEH66}JZc4t(| z0X3}zcebqV*Bi~L?{iB4Bei;6!q1~Rl78V@8WTxud3 zUasy=5>>f1E-IgegB#?SkKeI(g9d&iANM6!Lfsc_LNOG+_XQ+|tMYC&LC9Cs0~hLG zTm+>-+UK%l_qN#d+}*RvX{gGiaDmbdz$1uF$l~JaTxjYbMf=A~#SIKcQ-xoK@lPU< z(5_BQ46G)1KsmAXeESrmCABVawBV?q1y%ubUwM;#fVm#Z8l-Pp7QRanQ9u5LTCP0r ziQs5U5~e~e*_U>%R(uqW9wUS8YxpxcPrf6?c)!4Nw_4Y*ZQQU27KGm`3AUsgzWQ8J zPXVWlubq#-#=x$1$=q5)2IbqzSQs*+$Z9zCwEH`wTv%gQlkCymSOW8h(+S?aWs`;| z;jsB;X4UaC<*ETG9(o|HS-=sfdBZQ|c|pw|vJPF$@^=^0^`nK~LBULR7YZ zSq#ZIUpRYb@IOB7SFYr9k7E&YK+93-Q>vduscoOcD|w`>R)Uw+##j_LlGMjfp?8>t zW<+^Bm$!;CceR~$(Se-=$^&FKYXZ%grod7I+n8v9g2fY%aqeD>W4j&@hwssP!G2oi zN%Sr=kFVLZ2?*1vp&r6=xzK&}TgD}?tFO4wGJ5U~zHsDy z0xaO$VPJOxAU75G9B;r(UFPFYn_dv`sdMk`Tqlv_a>lEl6;b0Q8YJ=D*?fNmz`njC zr>f%|ALE{Gdo=|J-Ze9Po1T7qRA#10VG~+(8W!sIy6JDZLIl8RA$adRoGn{+9 z|6%FV64Vv8`El8?wPZm^X;ERv?ZLFF0i*#Yoge>57M;>Ii~A9q|62wfPh}$X{;|Uj z%_9w%ZIMs;%@>+XV9H1lSrBtyZiCgiz##0=f<@_#SgN&Z)Ub2vzvEHz-=Jb@>%51< z251qS2-MUWGi;oB{e3S9dyco?-@tLUqqa2VJXZ9n;JK~2MX9K>Zu^&y3Yqrq0#hPj zfq2243qpAy&cpyw5vGHxgk996du#6>>1EUVZo;Ojzb4kjJt*DJnSfn!F4!WCGkxtM zGj0U((OJ2?;;Ma}$fA3}SNssX2HO_haIz}u#T(*g9$ z8?kVns&F_gOQOTeJ97&5Y>91z0v~jDRGG>3U08||qhFQacxzZKQ6WM#2t{ar5eDP8+AGB!hl%ffE9()pO@R2tspxnG`>fPZ zxjw)9f*Vky69_EoGnTL+>a#FW=9~a5qhlU)p{ff1{M&|*ldZF45Saz|yQ?yrpHehw zD_Z&DJLW(p`_-}Ml5^g6$Q<8q%Y<>PJ`Wk9c}?x#8lPqjL+65kdGe7IFvpq41qadQ z_L;Mv>aUT*pzSVg$>8n4ion=FAzv;_3uokcEpoDlbdi@3^Y0S2YF<6~oT z3$ikL@hYNED=U1(p!THs{UnHpy#9rGa!T1PD2xbocmsF6@dSC6J5vFnU3~1>jxp=ee1cu+waKh@cl!EDAa8W zB>vkiQOcFkknrTOn1oGq*v|@NSl7XeE7wQ-@0zIk-!);^Tu?C}hAq7O*T7ze zd3TUMJ+F+v11t_Ax}bIiBR;%`vTo4C%QR+U2Y+v>0rJ;<8!Ef%XqmMxm4ri9G0 zUSS*Ab78n!d?-KZTF(R5xX?1s?vc{!ll$wRkw=#;2dnjr1INGsP9i@^Hz-kH{v^4_ zElovB4Vu%pW}>uf7mV5johXv(kjxQ6Z{E9An-oHj#vA_mSTc+feLusV1GzdXVkU_ZstqGklZUFObq2y96%JB3|XJw0g|&42z-xb~xmh z@o!OPKj>)(-w#62==Q1atY-J4(+kwM>ysk!3)Vs?o{(Ih(mv;VChBcr z5G%%EfGJm<*)7Q55yl1`8)B{;T0PndQWx>63ZB=+fUlnQe=8l9O%epCHrtVZp_nr~ zl;G+|({GaalP^l?F(nA7GM>c5;GK9pTSPvVZRI1iVg&E_-^Gm6cnze(hM@wANEa3%iJHfFvinPo;GOyWJN{^h=>EL(}M%ddeIE3NWOaxKQj7u zE9xmdic{v2A{E2$9l@~&Sx7L4!gtfAES!jqNM2?yUjW`oi-s6HR`ebSRtriRalE}1 zy&V^zSkkpBR5a~^pbnreFlxz;jk!n?6m&+BPV!I${Wp3u8FMshl`rmS zZAG|G-*8%$(U0pU?7ytu>C~EGZ32h9DP&inG~gN9y^90VS*=_it!TBw{yyvJOa!xa z#v~S@Sc_4=t%wq%IXjyDY@l!T@*N2_D8#kBQopX!gH%(fLVMd0;;02H=D2ij#!@M5$ROlKK0#ZHggS%)<*qr}Rok})<#-8&f z)sHy(x?f%El0zv39HvM2S2tj+R4~G`u9A^qI`}OHmRE_8b3Mi6&{$lN$N;7#O?Wj6 z*&{y}4AQ8t>F(^l@evEO$MSSPQM&>e1pFQ_YdRmwHD>Pl5;&P=z$78{IK)o-6*zv= zDnVX#kN6wQ)hSIb>9Cal*Jo8Ovp5lk|khooed_7 zk(m{Zm{c-?C3Cn~sSoVqdilo5;C_`(GuKu4EZ%;Jw+?K_uCb`J5cT;)yUI`oczwaD zjI>yeZ{;pklW)@$MIg6}VxZ~8Ee11A4<1g@+&Jcf?>r9O8A#zqrZ}Ztyz=OlIto>l zN`hCKT}ocM5MXfWF^f~Rdwtil%)sH}ki}ZnSVm72$V&=LOvIR1tpl+fJzU_NWn8}? zQ{YRis;GO@U5)W=WGPS9r5nhSFr2v=YiA!xY|0?p9E?h;XLnDjnO%6t>O{1R& zg{q3D4TT~#hkWArrl(O+NTfA&A&_EcNr6rml2pLhlYGZzCyQn2@hXBd}AUyTqbo0J%du@5`y}NDsa7ND^*pzC( z@7$ikUlw};6@mwSm^Z;mG*AK zF4_>twkgi1QA+eajF3nEXtigO#o~@1fw>VOso#iMXN~SlOBvofj$i$75i+IWM2j+786# zE@U|O&I4JL$#NML^bL$dmmKQW-*nwSU0{lqfRBJ5`8XeXX@61c9s@dAim#m~nSVnv zHRHVa8af%irnDEGtqi9yR%_tKuK$o5nRbhI%AqY_&g^UT~mrrrl6e}X$fy^D7UrM*9C+8WZ%Osl^!f6zo2eBE`8oRBx+e;`Z;BdggGR)!SN=ASCGGV5r z0&dJ~ph1`#>RJn7@(A75tavTr@WBmRO-kQ7)cmA!Jh$PO*RAIusn0pTN0QAmm>e(` z%Q?>7n$H*D)9~k$aR2-3;}tJlCAuwCKGZg=W*ZD!D_~v&i_o#uF_8sG?n3vtz&_*z z7D0BI&x+%UMff()1BKLBxB>RnX^9s@2-RSqr&9ae5Ih3lpB2!OSSsBfs1#+z71tFg zR6L=s6_Tt0U7QA>#`o~xWoJ!wSBfwskHdD7^HBh(3`+`P;$K_UyNG^KBYm2sCxyJ$ z3_?B|mfbSIkk1(1T#x&1@5siGKb5D6t%V|n%FAfu$}yN6F+$eEr=#ji7I}n!dV}r? z4Y*)4$%Fl1#yS2K+U#o+P1!{bPHc<~ex4cS2>ad#pYSw(eAxF6|B#raIyM`>NtJqvj~ z;eHPGW(2m{`$QrUpTiS6wT~JE{)(r4k?;8vM4l6({9ENz4j+wT2%K9VYt7CX$ka}P zZ>)Bm(YZA_P%YxJj+h3roJ=Kp(7axP1nFmxlHx`G;yhz=V3S4IV1LIoLh1kPY_i2* zaQBzuZ7>W?U}wAi919E-J*~o+_Uy0Eo$>5vMP9b1o~NH$k>Blg@pS+z4osYo6cm3b zl}I=-1Sl%DEZa7xJvJnH@}H!oLV;$t+yv|0pCVJkpiNG6F;yR8M^#!4w(?aix}oN% zTm(fvmMk*Ok(nKd>}RywJknMcu!7>*0UnRwo_^8psHytE57497J&nMhDljm=ZJGPBZrj z^NOWLGn_c`#EJn_*HQu_bLY8PcHkg6BbVihTAmqk$jZdDjsLj+kaPayg5lB()ruO` zxvM%l1=5g`-Ohui0=@Kf%4ft&AZi{Dw$#==6?u{%hRYnoHX$d9@K6ny@^Ynsg1 z|6?1u$FnGV8a{8mX+FMeo#oKRUM>&~k+n~BQMQnkv|=`(tySA89~{mL^_#|@T2~~r z`$H~$++51(v>H}JsvJCH@fT)P8P_oR)C}eLXRu1_ZxB^H0uT7NY;1$?ya|~N>&N+B z$b`rinXd$k1N#QVMAu7UTpO<$HA<9vk1p?Zg3JghY!X)2iYIXA28@7O#K(4f?7W{u z$h!jZfXapt5ywvTC1$ae{&B73(t^iBSroPAs!~x*(y1YDY1pg8%b$!?9i^zJ$~VU| zKI=fY$gvINqodSid4eR>oBPBPQZoV1H`qN_hJFVWXk>NMHL2{}#fF|GvygY59`@xH zuE%tjS!n1$s@xF~DWg&>TVewmfYxlnpah9kmpbjv*Qf+%9yFE<;R+Yue!07@U;xU1 zLnqzXts49HyjO%_46r23vn*-5yLe^iW|7sN39q4h*pED40IZKbyWSkvv~jMa3a}(~ z%xLs_N}0h`4W|0?HE!Q!#uAEfM^1sC>O0~9FseNyPKM`vys3#Sl0C2K(tCF1Yj4RW zK((y!x%2yDS&QEXP*gjEK@*rA zR$YkMbqg8s@%fwiVk6aFg}~#kzNGL#MRSQ{o@fH|*!6?nt{sY^!Nr|CLKqI{YtO|T zoKJ4FK4G7K)aH_;A?U#v(jolcEpR#gUxfb#n_Bu)5W*5y`mpwgG&*SxSsyF11ZJVX75fQmDNBKLZszHBK~N~%^NECN*nr0F+Tz;$OGHj-rfhi`alFZ zF#DIf9=>N~S&wye9aK-vjcO9(oS@X$D-r{r1K2UAd(wCDMT;zsSZ2Lpb2A5TeW zO>O3;F&A>3?i+sQ-|KGjR3~#gsI7V?ODk_1vvxgomK8%CCqeUW!J1k>2Fj$ zY@u!+5^72VQ#oExMKWQSFaiO^4f(SRAX7S2{&vx6Oso3posM&E5vzreQY4eW23TM` z>`*hHB6#>Vj=9Cfba&|^h5ONn>EZVY>E_~=I4ikDW<&| zFv@hT9qnQZ89~_up%##C+ox}0dFo`Kgd~Xlsor%}lgDjn6;r*2$4+JU zLW(lm>eEKpzR~fAV^3Yy)!q5Kq~8zX5e-f(_*$N)s34<2h)Uc9Yq&0aM+MvL|(o_ z-KZ@?QHD_xGbw;K1w)626akx52u*cwsa4lh1Xs*m2|^ZTv)It-9JDO-mk1$iZ2~s} z(>9C}j}P)DM{Zr{!Wv7T*~lrd?Sr;8<}(3c)HK{cnPL{xpjcGouX*`DxYug7C`_vY z5{8VoZ>Y}?q%(|1ZgKPN*|b*E-e$#L*6!-Rb0IA6i%bR3MA28Nsra5dwB5SQ4D^l7 zvazi0pwq(vM{=y&aC>A_TtKVKRE5hP)^Clby&sk+4TujOL-kvR4R{Xq8@so+=t@E! zfl{#~{KBV0P2j)l%|@37OL+F?Q4?gAT(Msc7#tWbQlxh5N+reLi;5(P(~E8Y*ECSw3zG2}4LfX>k_=!x^}rMS-qC(5Sr zL*zn@4=H&t#4&^pRoca%w7yI~Tkoaxy7L1kdR5D4u=`EctLobM(?6xE^pTnyI5PFr zbW)Ta`c~l6YxTVEOlR$y?FWJ&LVGset49jrL#3e%FUS(c!% zc$pS4GUJs|iu>Ov1`0+?qTm+oAa&LJ`>CH5+DVh833vYH5dsYQKl1QEn7)PmdLgUAv-L;(jgcGeXS;0yDR)u1>L_-RrCCDsN2yxmJ)$xoi_rr#}{^eDC*?B%8 z727ezE0O?>WG$D)I!K}kczO|&G-^<@ z*m?-ApBJn@d=ly_RtXJF+L7SHD;@~;$h%^@4NTNRvXRIbE2YbrT`Uo^(VOEIc-6M7 zXBpcyz<6o!7tllt{`fLU=_39?9BO7hXq>+9A#GTrrb%Tu?EXj6ii0&HMKH-{sd#L)^=g}TWS z!Kf;I(RkDXV3f0z8;t-2oxx^J3xvb#NCwNR0xh_qVtvP-KYpZ7nR(>> za#O+WPkhVf8Zz8>$gIS5ugH6A6P`yufYy<6SIr*>r1~)KW}@Fk$7)RihV<(L{`vR**h&~Q-h>tX*&lCOAQ`!g zT{I8s8=x*`-xlL}U0++TcU>1Pr~5_wlj-am<9E{Vgg;;61)-82s4?6ceiNYS_#^W; zqXr-t=9oKQ@^-iP-8DFM+^ou_6{{o|Pk`#{NU~M#ALo3`EN%=%s^gj+>nZX8^aC{t zRq*CRIFV`g*gZg3r2O5YxyGTJS{8VHv1RN0AAxvklOId!kK<_gQE0K*eqjEx=NGK@ z@y(EtcB)Gkorin|`t@FkBd;O)Ol|<$89`9 zt`mJFWa7;RRo&p_qr+sE-C*A1K_SwzUCG#_^7T#_Lly(d(5!BtPr9GK0_fj~%1z#{ zsvtT&q92rD5c>iCb!!tEFXRV8a#&U_WcFw9DW(sgXdy2$DR{N3*Z3WA2-S*C)dG&W zHhwEyngkgr?4(K$+FDmsFtFl^p@3ly7>iA z2!XI+oP&|GZ-wEtT~mg11>(R}t;4U#=O3*|R%sj#5En-TSJzDOYI)(u;{9rONebtYkjg zgJfoq$L^F-_wacWAmn? zZCUxKg~QWW!1o@trt1YhrD*T%4G~0!!IdiOokZH>h5vaxEw5eeDFcbLeL^vLwj1~P z*Av`09j9?{*J>pf54h(kJ8PBIQvZ|0yRv|qF0l!`F28ElHvNU+(SF1H)%_sS8VK3; zGLAPrL~})Y#9=HHRi&$d35Jzo6eVh$jDpSG0lo4GJ^#fB7kb`M#1%})+Lo+jTWRl| zGwy3ZZH?5U2_Y>ar-MT7X)rsgJJ<_r{$nTQ4+7XZR*UFI6SYB^TsSsH5^ajc-XQ*vDSrkSOh}w zC1%n+hh(9bkT@|Mp=@h27$zrY)3@y=foTZZWiEs!#a$s^kh}#6$0*lnH+$&i=Pt+*Tsl*dQv~c$ROOP~YCgtP+2n6R*&W2Bnq*RhNs-=fs(}>=T6PX zY0Wju$6$AlSwoxPvsyV11x4ae4o2KA@>}tw!*moPMW6@WV4`6pa(tk1&Yn(Uv) z0v}Tub%Zd@1TGx^Eo0}VwtB;-`%ICF$DhQaXWewF^$Ry~c0b4g@g~p0_I7TuzX$@j z{V9*rSzGb>hrO1+m~9&#RM|i2bOyy=PK8_hoJ4(CgG&d?7Bh;GbuiB{|AaFwkh zErMGcUQxA`)FVI=JrRdn#Iowy6*X&5eD#nPiuQQ9)gJ`&=-}WRfU@a_vd6n! zl&Uvm2Ap9{%uDuQi!&8f0+xBbtQYpo`V8y1BQe0(>&Yz`a?0z;m^k@J_udQP(K1%# z+;7ygyFCgR#GvmXr@-E9Vx}0Hg8^hZj-$;V2RmML7bQ%;tmrKZ*IO;qY5-OS0@zF4 zdRYx-I!CueM2O%)=s(^_sy6NX$I2Tmn-?M2&ykUDj=wyuR6KQ8gt3)fYN;EmAXx8X zO!Z8pYRZYLp{j817bU)*8^kIrv$0md;4q-hpTCFrS6h~8sf2=armUXrkv>bde(8SNrc0e%k0c(9|j#K)iqZks`UGR$s_3qK^21UH`0=+J~@ za@k;-H}>teJw5QpQHD`0+HHA7OD^AZaDD#0173h#+8^!4hK2?c`&QkG{%eAo&X3hA zzccMEV!wxm+=!B22Y_qa6?`+28a^=S+6Cg*m(@lKho{88jdzJ;bNe6?TUq-zetZNy!#RROA zMLJYH4bwJtaIizr7~A!}zmaNf7;KaoX zL?1dZ5w=prub4;?$Xy<10A2KD#Auc`&c#Kr&NkSuLRwB%qkGKMmlFs@s#EhemLRAA zxX`1uo#RM2sp?PriAwhEbfB*XMWw5q895fib=#hCjTB9zgi&;!;=jp53Nq5gSX_Ka z#J)&QFcmIqmCigi;m+5h%S(aC4^LbsO2o7sdRTn&KcTeV!CrJ0dQ49Br$~C+Kk)%d zq$0_UL;W!x4+u$Q zq1afj9xPX`jGl=k?>9jk=nxC^Gf!>&)mhzq0E7kRr%^t|K3KN8F@8m7U=HsRNZ#zK z%Ra1Dmch&NR&>6STY~)J_pJ1JLR57L=|2TxIQZR-7QmpiAucdDIrE2|cc`_vu{0fe zk?~*22?bWe>Clx|U_y+t3B@))r*m!G@{%}ai-#MruGQE*(eKSIaQZIfzGndQi9!sCkgh zND8=kQPacKEtCP5w>G*8%+1ySb&HnYXvn_ZV56G@3oC*erw#-aC)z02doOrNA2s*; zdEIk*EPu$xSwj#s1-#n*mxvBIZ7POXa9?}V1UWjuH~PCyE2&?fJ>|o&jc3$QD}UI< z{Nk=XfQ!5pK!sRWMli&OVVr;ua_E>VUS5~=@jGoT)8qekofO0BX;%u0B>;OzC5_}C z5$s*Kg2F+-L;ZoESCrbV3kOgG-C{P)2;oFj7JDRp2$S@$q-05htblKsn3#9g{0@t?EVNQ+@VYfQCi15zE)U=AZ|uu9T|SueU@rU#?>P6wBdGS9}w zn#R<(D6k3cRVjhZoC1En(A0g;cO2gLGg6>AXWwi_5(02FKPk}EY+ls=T{-HmTEi#m zP_~YP984B`8Y(Y}Mzj^3GR19`BHOgn%>ja?ez>_PKywm&kt4+W97-I^>b8C>Ad?cq zrZXUuI)wpBPTO0Uxyh69f&HpS7rmTW!Lb-qfpJMoN;@MJnFuER?B6b$S;ZzOG=VzdRfm@TfegG0O|Uf{ zkk&&+vwkT9sK}ARN(rr>gMRlUTPIyw3?IY7?}^=_!}{;rFv4#r!Y{`K4p~FtQB$_q zo*Y$B)50@duuc|GbI*&ij;+MX{#0j?TdY^9V5ej4`^b-#|fbXpn0UBI3bE-baeBgV=k)^#` zVN*C#MOoSoa>v&A-IThdCfsTK<5c?XbAdm#QDAdsHfzl_zSD|y&!CH#R5rcN^7Dzr zI4{2Ry>w`>#^cffi>w$+W*$+S;{M81oxdDbqK@S;?PM;v@$86Ofu->ZiW^Gn6+D=B zrJlnjMN~!dwYzpA>>h3^Lhce{w;FMk9ZXHu6Q{waRJ-`jMZc`kRRvfDM{q%^A>xiu zdiWm2EaGHk3l4)=8@>noNCMvXu(<;7kizeyu~a6(usG&8%U5PTb~y$2_^1MM!UQZU z?1i);1Jbf^ZBCU~O&K9PQ+ocST0Xn6w^yR5rYUG6iKlo@kVN%=XECu^W13z5RFt{6 z*0R;Kj`43F{~uN7{2gceM*E4`n2poew$(Uk>`ZJmwv)!Toiw&>qp@u@cFw&0p7X<5 zYyN%R8hpDp{8gd%l3=d<0+^oBp`IniO4dIZ(Jfh6d0^c?^;E^qkFd|Yn}u@*WsGosQ&~u{R6K49>yCFM-Bm4uyzFIvMyN!8e6SOB4`+2rMwEKNg z+wP0t+bnYJ7CjSGeWf@%SNqS55iz{vC&zbfD-=nh3Nre0+34G;cxn%UmKw|Bt}y`^ zwL{iL4li%_g8Mw6S!IOfVOjhmuDVbtreKT$LmN6ZXy^2y_CL3hG&%xz0T-7TY!jF} zdR@Gr-A^J%gk;mtWS%C{zpZXVuuDuZ3?9XaT$wl+e{KARJ6`zVE`CsAdjZ1TYJ`eF zygTYYgHEJs*9zIY=g)u2-5qZVj*iTTHq~%IO}j+iZ>Z4p>WH8^*_2@yKoRvPV> z5ZfFLuJili;kQWE$1)`=oub}uMFqeZU@`^#UmB%wW_c+I97F!v;$Hk(?O8`g4TM8| zSv2-XBEC>P_ZNSb-aFI^2A$Emx0PPE9kWw;IE7XX@@v2a4Hw z5##H&!x?iQWX5dpFCS5@;EVSu+aOgFy(7TO{^dB+j*UoUz*jv$Gj}|^rgRJ7E1|C5 z+;OxTm@{jfqB0s}QlUis(L0BI{+RBDu#bC7;Fl(@4wlyvMX|$CiRxQ*$ zc74n&e`(_Y^5x#vv#x)xQeSSRXxzDHgYsbf7_=qg{C-?$g5^D#&*N1rB)TtTiNKzv zqq+9Q0tpT5`XUC-JqL)vw#9+9Q2~U5G7>mSxbhT?iLdfqF%o)V#QGC37==AY3mEPD z-b{ofom+IX7<<#AVHRM-gkpw+{KG!k>jJKT>RYP1Q(UPJCcYvtGVfQi-xV3*!^}&Y zr%%Wo7g(=qc4Q8N0UgTq521>%=A{AHZkI{mD5^3{(Hdv=e%XWIX@43{&R8eDWGH&s z{i+Pu<>{7lV@u>Vglu7!`7~?ry|w$8%&IaowdTzDW9M_05hH({!$ivbabB`ESg93#R0M!VxgPRGtk_)mIsS^lR=`%Cz2jHueQlv)k`*|q}2lFSny+)u&gBSV)Lo~SQQ8w(yfr)NF3m%QKi$OAy(WW*&~M~MRIp!?wD~8BINRMI+>vCd8Ks`lBKOEN?7t!# zM_!WWndfrlGSUp+4WO@9W71Ya!8nfJsuyOjw)a8(*edcy1*0_~aj}T+-!=!2b4TZ* zLhgbJco4=5Fabkej=!pRXZKOB4L1sM@8r(u$bHu0ds;_#CZKDcF{u#eD@WPBD?l`K zddJ$}^hm^HF^Q(iObo%mr%NKPSXXMIaKVTdQ_pgh|F%|CkueJgk->qLz{A}-chv50 zqNg~F3UZ=;CFJ)aTj_zRov`J=>v&kTa(mkLryxP+f@P2|Z|sv;O06<;%FrE3k3X?& z>iI zA`ihkrfS^1yMwIme1SgPKvKx@0awOPbIuH{N|vu(cC-^F^R}hOTxT!mF(#N-VvZzD zr+*dSn@Uja8sj}I^5+@2?~n}OzyNMeE?e|X*J2}&h!FD>Wt#4<7ecl?Lc3FDW7#jr&!c#N5hzAFbeT=ih z^>%Y%i<$1D=0IFk#ZtJUY=O0Bo<0Ky;2PSP7im&Eb*C_5$E-VUQ0|g+mKA)W6c-6#;^^mKzU^R3 zh*Z?RK9vZ+GiZR9XN+&pEUL7Mhy}I1Z+Ad>Z|1&Kw(zGvukr1dOZC1-$r2e~2c~(y zCRTC6TV?tWy2W*Jb>9X#VHkp}JQX9Zb>RKyiN1aS>f#&wB3aX1fr>#PQ?RjfMKqE_ znkJCy@Q=-Wiruu;u+p$6!cBv=an+g)mQAE5>{v#jNc;%oFA*g zI{Amiud6g(MS7d32>t`}!cWd!Z+}2^+|3z*x+Y+_x?6fWa+n#>UXNHJfl`EHbwh{W;lbw(+$udUc~ z?njs~xzZWG|GvAfU0;TuXj?tKaCUWVL}q;dZ#WCz{ ztg#ZG7cS#TO=sqG)kbivdH#k*V)NYKA84(qZ_> zONRsKN6q(Yq*}o4{&7kp)=+ba))?2-GFsa$Oxbb+iiYKVB&<2&i01cIS1<~Bmyw7^ zj*qEs(kwRPUV7j;N0BH+3_Ow9EWUbjMnKh*Lf%-EjxsbxFbSo?#oNQnpn371QypHh@3=0P^YDI}!Y98AwT6Z~u;YG;{Dy zX1O}P4DrMo53>-+L?MRCE`&KTL6JCvSYDK{k8BGF2ncv2uFJQEA$Y=f=_?Jap^-aG zP63BXs+Pa>9KZ3ZYY#4}2f?=a=Mx8@TG1Jpz)ddvW0MfnsAqzu(TNZE#YMS!99vW^ z5k2TJ8&R-wjA}oFLLka=LXVlB+RE*vP1$LnKsKF{5=vrHkbaK}vi?MSF6+}T%cA2% z{>N6*e_vIE1sT3-GtFE^mImv?WxNGuy=`ddDLuC*v(BXn7i3rcwTy%FQi_VQteTZ9<} zxBif!R?M+c1#GX4p?>IlVi`dZ)yz5g0NAmbJpB-Tg2#X;RSl1*5sJg z>r)XC+%ezl7NMv9#0RE@BsbG@m*6>JRKdh)c&eV=|;9~g6xQ#Q?yV+pQ_^bLK&-$64 zlQF(^cp+=_)k^RT3=B2=+|ROpE<&eBsYN$|a)KY_4ZiRnon$r@qkspoMhmtR|1H$+D!u+C8+k;)QY#1F@^N+BRTp@o1D5$muY zBgd(5V-)M)TzAXzERufb?BD)?$v2vr)?l0s>^-W-w7{{Y=TpP!*j|hS4}j*2qJ1=` z*J?MX{ymMhw4PVOzIJYqC9ZA3l*12e0;p=tjI$}dL{d%8q#~6X7nJ8z$nZ#P5w!^+ zJ7Xdj!{Kk`8uoB+_IyQtg|4VC!v_BqZwx+@`y3$X_XNH^g0K+5_4P+e=;<`sIXR#v z_iCw@c(rfMAxi>Nz*p!|kO4lN1gMDpqS}RM?&K`(k@mQw^S~Ih_4oy%Yy#k_Si5X< zk^LuT?&V0)ZF69{Wy+C7eBbt9Fv%tjNxq>af+}fzo?A9~WU=UTLC;c@8IZatz&ln` zJFsHZP~$k+5WUB=`?Gl%6qDyZbnoqaeFQ)k8(<*pD*k}u5)>SM9t=(-tKU$o)zrqa zx3V8pt|SIuovS(Gmj-+3$el!hm-=$Mi1*T$?kHq9QikGTmHNmkO`n>Ad&?4W(1i#L zdD|H9_AP}7aS(zr;=E#R0JE{sIOGRaLT|u;df@syQYblgObCw2igP>4Oi^E z!LGg@Hsux+sQpC)s&kZLhux^xKC2T?=q_qe4^H2QfG>L}Fx|yA>oDh>`MkbK9R#;) z&2+zKY<01go_Bsu!Vqvn^8x^*(b z+Q{(#DRY{4PCNd+`*tG8CAof%JIiLG?mLE7H&*CR-8%+L9^wly4@a{a@X+YU`i=?Rb?k~6_!H#u={Up=nu>*#Qg8VOs^@MT z<>Rz|IAz^W(ACiS;=(o%PtnVw^nBaCN^ z4}wN&Bg)M~yuC>vsJ4F@sNsMqWqpmN=J_e#qv%p0tm+~V)q!#Dmxfw3aOsk@SZR{a zna#=wi*AV^MMqB%*~mIS*>tjLFqZA+sz~ZrJ=i4i;04{0Q}{+TRs*84i1c>CApfA* zIX|bKn$FqV>{JGgBDA0+{O%3-9$V{cBMHKdAPelY;@5I+rk;x?MUKtHip^wkuOeE< zVEp#`*jXWz@-hdxrId=pnL~dJRp#;}*+o$*?g`4##ZcGf?-su8qzlY7nb?Qau@3dE z>v-%zzKE%0@>9UgWAH^Ln6>dg>#w$n)08BckMtgd-3fnNuBW-aEMK`kJs*&tD*gv~ zNj03S!VLjiqc`f-2f~xASS6`-=21sYDvg7Tty)EX*jayB{6IU$6>Jntu7jZ#U7he4v4IQ5ZY|lp_0N4J``cfl&)F4T&>|^x>vQw*6%?$Nj^n1%Lf(j(?6~VJ z<(iR65%a`nkrNp5&XDu80{FUhA(Dy&(vbh^-HFDLhydT3-uqn2uuE~7{j#RENLjsD z_c%J$^B-=lUGCpAu}%+EfsNYjG6C-d)05`yCdZu(41OYhPF+9wn@ynzC*A+z#6+_B z87~^OdpAPd7fmc3(1HL7FE7f)K&!a`B|bU4l6L7BiP@5)wSmP&grwaOZ4IS zc`ZHm;^net&G8h`{e%GOc>EwAf8Gowz-#B zn1P-6%t%DKja(L0&!@gWzOpcDO&xezTxv4dal|dTXue*Pp_@cTP{Sa!zC%Jd+d?+0O*^pUiRRhwv z?vToDHhJgKe6r#{a^&I8ynZnEVw}pLS*3fX%xV4sY+g8@pJcf!%yF~Gl(D4Uqqu*@ z@nM2161{LKNH2^BBB^H)QYIXc!3+TA-u(y`Vrx?4baLz*BF=xB67Ek+FyjMA~LHJsBG z=CLk#`cUYw_hPN8sFYTJSez0m%$YdJ1tGiIGj`=Ja;(ZdVxypeP6!lxMEGDA)DJ_B zq==+r(lS30Kc_f62}=>vucC@513RiX$!-r1l0Em$%^hxh@?Qa+*qZGT3NG@=rnLaZD_GW7ColCJMWKM->Dm3ADX+L|7?Lkwjam4ySr*m zeB9i<2@2UkGCR7(xyv~4u)4#PM&!w<-Y&wC;zm=k@jrhiA>=3buJk$*8>Jycp<*k- z4<79l+o(CBSlJa4Q8>v^Wr2ZnJta71*+}cusDroL|D4RXcFYbsjlF8q|I-eRI&S4h zM%&_*;Qn2|b5~YOAYh(fSt-?dLs+k_5Deb*Jl$#GT!mj6!YSgkb?*T4ZQ2*8tJPb_Dv>{xbEdqs{!XUPDp@5I+J3rA%bvH8*!d;Fj@au zr-3bN@@7%EaG3^QSz2VL3fO7B6Roten=RC3yn2Yr=y;K&DtL5VdNM;XxeJv9ePzEc zQ0>iU=@#?z-uHd_$_bg(C_SWp>!WhZok#wgjHIk8d23?tH&rHp;z87=tPA1D$3ja0 zdu^V3?Q(X<7>4NBaHqLE{>k^4ApVb-3mwWM7kA|wd^z2#lZocZx~BHC@D&c1 zmXK7%%e(=%pfh6a9~VYngtcsQY!PRFXMvqI7VPGWH^G)wU#6z#h0@A7@92=iptVf8 za1pEQq+NgsA7vmNukjq%!8Dw(BLDUVk5QUy<&>Kd^gUE0Y9;&mBdeazGp5%8t$vo! z-62Sp{wveIae2cr-`=qfDis!C>EF_8uYg=K)e0f)L+m}6P1-)b<7nlcdcy7i-*sQU zBbHawf^d-v^99ghdM+3I!rwpooDp|3sHRL18bb&!AUpkOp9JSe!S<_Tnjui=WS6e_ zg?!V3MUIL#(M|p`S7Z4S4WKd0lM0(Yst(`+He zo|(;W{~23JzYn~W_yqdOFSlmQyEfm5tA@GCKO=6SqWKa`_-uTU4Csal>rLd`9*+LR zxq5R-G6d6shVh{Em;@V`g*29{85CNR6rW5f&rz8m6 z1&h#EoLYQG9qiw`A3DcFqW@pUWR!N+4l#7OU2H zi6=MydS#tVzEkl#0kmv^#?Tt6?e#e6B__-LeubVk)xBX`<6;({-L@gjEK$E5nS5`IN~Jp9WN>n`fx` za9nB7JV8u~xCg8Jjk841ojeAJ*4R-`#iiyM^Y=UcMa@iup(>A)p<_NzngA{5Q~vG# z;Y0VQ;9H3+cv2BY$87=8J4V*l%We15_~-L5kuP6#Kh^Z{fsGfD;~FrWB*jF3Nn_m+-D90u;E+|9c3UMR!tmQO70w+ zy>=Elqvv58W5IYv+{0X-ANpzAT+H80l+dkY%Y;FgvD-F5RQmDOw6E@*p29zZ{EFj@ z-8?#(y6e7Y7gt$#+HJ#fe}W#jJ^{^gG$|tm#vDB5+m5LfY8F?ntxV+!$z6`F&b%|a z8Z7D$EitfKN9y|di$Hot{H^al z?!?f&?n&FX*74O1(b5(MC324Adm>^o|E7spUB-Q0`te`jFXByd5K58T_%b1w)|m%p z#qfY@59!3A%S*?`Y0xHd?Y{=fA#%4k3OF4=(fTwzy3*qg67K$VcMmhMXz~3N_>a5@ z@->5!FbQapVyUj4V0&fys4||4>C+Xm7V>h!u*;icm*DyUMAf0x4c!a(OYVX#_Ynp1 zEo`;iIddeXU;NEM&fzS0Y-)4O0+`;|MB-Ck7Y#v zi0Ku{vLuQpuFL3?u^HoolF>7~tIM@_AtsFEtHqOKjSHT`*@N*4DvBjh^M+;sw%mHR zn1;n4Fq08|Gj#XYjv?@QR9B9)AFY0hwQbrW?tdrX8`~;zAL&}CgAr;kA;_oVwVO84 zue-&qDtE^9pKq$=_8!(i_OE^g-xp;C6bq?)54$|%+sLfmJpzKx%8j-5abh}#LqzlK z01t~)%9Q!`=69{9Zx;wO?6BIW*?=FiQaBwRT!fKn@y&VnY2o`cGpqG8qxU{TTPE)} z|1J-z|0XALc5Zw`%@*0jhkfgXNMmhIqEsmH@w9u4y+S+bo-L%>UEGlV!HBolbAgi$ zDADoClRUe}v3e*k?LN%zFuLsUdEGDRh{up1;f+-#f4uuM)c2`?@pHA>+uqsPnRd*k zS-a!27Y420l@ptZWg6U1@y7tqkA0#?jB1*J07~Y$?u*Y(%23-Jw1f~$NsD+whnPwG z`f9)SNpFTvh?+Hs3KIk$1$Wp*{9cF3$MB_3%9fcKdTkcCWqPRi#8F6Zn6k7I@W?bt zGPj|iE4&wzJyq9rov(COMQUos4>5Kq$`!~?_6FBg?px6M)zm+;M3|>)GS6P_80*Hp zFL`(=e&8;*w-#@v$G2K>R#|T$jC_L8^d%khLz%i3XG{&h*wWV0GdRe7XcBti5|NOg{FKg2jy{+P zyeB;C1h-T2U-G9BsfAkk44@wbrudu;vn{d= z?nj0*fAXo$V;rqBEj(SF^0Z*V-~NWqG7K2gcdkEvRETd+rMtyKO*|s~hWyIrtc@OQ zeiRMfmrGpP2u*QQkLS1Ow^SJ9lA2IKk`KTEKSqlkYpWEBO6Ha<35k$L6G{YH>B?r6muW}P+<-`xblVg)QPx}{fqhEjxcBBw zBx7O;u3zZrlOV*YeWtvRUWHiizkj><|LzGZv)4rwon3i{G-YjWOPTsTlGrQy7Fl;+4P-BsbqPP&*fg?6_-Ztb zT%FRvJ@7<`cQ5u@NS|oc^Nrma{#u!IVW+N*lJ=_C`b?`_KbUkpX%z}6Lm4X?K>2tR zEdpK#IMD;zgUQ5T4qndroz}40G2YfuZt8+mtSHGaq@Sl2vo^ogZov60ud0n3JYlod zdc1xJ3Be@42k5mK3+S5y(kHWUy)`q{gFkMbeVY9&VH^``peZKXkmznJ9QJ#dR3l9w z^CV%h#Hg7VSz)0-h`;3UO&%Uj0D%#8X@SPNw%ziD8Gzun?)%b>)gBu-LF#MdCf-n9 zIPE)Aelt|N3G}b|NgoN4+94T+SO(^YSnJE+f%+m=hzJh>%;alK3Qd^bC`S$M(l@+& zv}@Wc?jJRqt%F8EOgg(Yi4SqN4}W1Ja%i)Otd;0zkws42#Ipnp8F=;pBP+BJx`x(qJ~Y z4=sSI_c~tSyWTIh)=|bX1mAXI^iDf{-SBRr_I`nWPMj9srG!U0H7)l&&-%q502TNM zx6mjSC8pP}wm|-Iu<>=0p(yaWpzqe(x>l_`#QG3`v?Tx<1s^kFwDLr6Nwj9Qs})|m zkRbuqpl~<=hcJwkn%#p^mWCK|TR|5HGZ34Q|Z>yg8ajh0pB?1;iT8;UBi`zI7)hsBekWJ}-qo zfHp@Jyu#z+FDA~;tsa1OHL&z%Au-MI2M50P>|GJclLF7Toilc zE4e(V^fKi;3`dEM#epC_%!^-&IW3eC<_-uOJtzLgp^ejA!0XiWQrd+1e zh(9Wmk+YVtM(nRNt&MicTBTbo{#{H@95He!r_pqm^v+G(rW0uw?{zXd5^gOq&qglm zVNU#gc{#TvPj>+AIn1Pz$O4?nB*NNN90#nz0!@E`|E4z-W>l$7qX}V_E<=TIF2$jg z0t`x`9zJ|$*!+$LOf zS1`PX%sY#`#=WQto7A#;DiHiA_%7&qWoGw*{CTRM+}+wSw+;@a^7~GOcYM}r79zi$ zQ@UR3q!8}%PV00(8%_lt2L#{dn?HZmV%^l}V4}`hc1xttB$53Ek4q~om;(-YOBzLheJI4OblCUCc=upO4bw70LX!3H2iy>PbOnUSA# zhP{gbpSjcRaQRUUSQwSVuwtHs|ILnH))78SC_7mnI`WlfV1Q`qu90*&j#~cTFX~5; z+ej^$3@ic=s$xx3H>`^TQX1TTT!3;L0-@*C+&Lpwh?O?&Zqe(4maTAhdDcXT_`j_n zjY+fOi2tzXw`Af1N)?3Ao|davk8qC!HI?Y#p>c#mx_#r?&iNbu+68pRWKhX;_AUs5 zFi2b75k7f{p*9Ckhow-=5dQrtKM&i3Bw+m}p1QYPr#_aDmaAw~j z3OQ)s{V>)G$cTUBBh*20E5lgad`Ts`hC<;>pIJ>uU-7gH7oq?T;#oBPBoZOPI}>QO zhW!qXiv}$uz){%FUmdpT8QV9|*+AA?8Ukj*?+5m+Jka(r1>{%K^TV7uuPoc;b&P2H zma?Cu5`I}pVACzxd8>sVv7odNtShAdr?Wvw`uKjccLPIU|L?UkzL-=`ykE3z9H4Az zGCd{_1M2-Nt$bi+8rHB)n8xVTwiti@ZsxokwNkjT9ZWiO#g|K0HG(7 zM{%(4q2vc$?SA3rp5cM#GtAbw`Mw5#cmz|H zX7@1FFUH43={ha4RYw&81aa*X+F|6)cic}@3|=mmRQSwRERZ1!?ZrxpmJ1LG%+?aJ z_sSCq|HcDhawtDop`YZsMhU3 zK!4#y=i{x1PcfGAz_El=g0+|{r2+3#f`%!xy>LOH8wKcUf@cLL^j_qB5!)cznr82j5V=yb;Y?fudaMPyg%k&uajyQT4?vT~ac|-&5qZe*glMK#sCw2i*fZ{y zmCn6WKz&)$q!rx$9{xll7+#d}OHn2&j(WKWa~3>u=r@N#bfXaCl?*U#_W-LvhRmc^ zY?%Qk1n%)lZ~&wzKb&cQ13N+)YP<4o}L8co{(?ibiajitMzdq)Za<__8{RkZ${gheR=AAA-tFU5Kl{>Pn*j7m6LyKz)n|T>h7H~cbeD~W ztEHaKarLzq*ivI^FevfEgL7&w&UrdhITOcTfa1H8W_j$`Q$v$I?>J#qF10y`k(*EHA8|IYV z?rvLKCCKhmGpeJT#ILH>7UD7LV}WmM<#Mj>lSX(Nl*3Rhi2@@Y!dgin#Wc zkx`fTRg#-GQSYDYG~?gyXWZg9YBJp_Oz5_>sS=niRH6uwW#&8}K8J?J#(|74K2T;i zpNuZ;E!&ymC;H(9?qAQ@uJ+UvNDc~!w7k4%SG-gMP^eoyCFN;>@tvmYe$viH@Z)Jz z{UhV^A*Z{RZoJZP280FP^f;rJ-E&GHd&#FTGj5Ugx8hyDH`Jm@ab-+ZYEDTG0$f?-02}~$ zjZx&+#@#ZAc|zi??-A3NRNy*k+eTr%cfwPDI5$q|r1BDH;NUn7`tlIks4HX($F`Rb z8HZB*oY0xcVj= zhFyUF!*;!$lH=|Q_ww`vaE`LZjK9tb5U`IjNv2zS-M|EOZ;Syhd+N3dCV4@rb_0+J z@yo5xkk7J#1zHBJ^Gq;BRnKTbiMIwdgEMSv`7@`{O}4;ecRVJN@Xfu`ajL8d82oi& zutNl99c@&KSXp6*e~k;?B(iQ0#9fuUO4me3Vw#-qs_8-V;J#G#@pk;kH!yglzXC6< z#%4%^&q6OM+6WJKY@Dr+?q7u!Q6zeY}fp#Vw2y)xfR zqU++)kGzx7tb#%ezJf4DLk6*3F+Ct}TV);{Yf}assJW*D$Tfl? z#7=ihINkxomq^S5X7e7p$27577k}Yc3()!=Q&e@UXSjZ(X<3LIsBz@k&%$^tI&4}W zC-8`s>>}Ox1F{>8I8h$J!*lRVHwIHy)m&*(*Ww-QS8QLi!NQopC)jKa8kbKAt^k(w zuUcn=2{D3)5fQAZq|vQbKLr>=0kr*Qe5Yo#2voKnE$Jyijx}>IGzF;<&v~I?)FKTK zFPgtoh1-@$76Yf{4jpKK?5zo77!HTjIrZn?nu<({{sUsyZgl=LCeBI`ca@*S zT8GMpef>$;AhbB6!AR6{G!wbULFaZeKF=X4k^nK%k?UwG=+D}!O z_J>9_acpwx>_i0MT%;qb35jeWesm)Uq7)`T$Li!pvO0!vjdlKF4#_U0T}E1+yOZ-h zOH2ov>|xpXXE&$67ScA&XglfHn#4tYs*nbje#a4ouo*Fscs?lm&Z{*Gp9+R5L?*a= zdEU+2k|vUxzAul{*)n*n?*kXP+gJhxEmL05kondpsX6g@Vae9calLB2+$>qED zSy03F;K7Be05J>TNb+n7D8?LC|J4cl~ZfPtR@F{YqlvPt#qi)SQo24%a~nJ~|^tI$(H z?gr$!AQlC?=}6tVwlvfB53>GODWSfM!QLu{;qnN=DWXfpHW6rO3xP?Ct`L^0_}Twd!0m?zV2 z-|Q)8Yi=`p?aQN@G+k>%&H)>TBVNUQ7x+W@;I@`;x!j+{;EeDlNon{!&*CJ90sAjs=kO z@6yQp3KfN+vHtmlEGz&ib3>D`(u^7WtAs?h!BOUZ zbZ`y`Y<9x;qn+sk`qbzzdnN&AA;Q&HH6;$|0mygqA{urUL6yfHQ{_PR?zs;waPS>uY^*;OG`Xwic#K6Q47r2nz;EuJg~X_GNiXCa8`ID42IQQ=rv8$t3rGP=FR#*!@Nsy^oN=u>i^e> z5c*1A=?_)OfM)Z1I2i2mv~~6IB2#sAXu}qFr>cy%JL!eRp`zrmN5G-^5z#X1x%>nMb8ZXN3}~Oa0hZA zbD7kQrTu`StH79l|E?_VNt`M!Qfj}F$IMXo^lv8J?d?~lb|8{yd1BQU&!+nAFUkpD z=1%@Rv3R3hnGr!e-xkpz@Enc`T;wV3rK<@Ywg+h<^c#++y(+6l~xIoCvJm9 zTo&lRau2Fd6|fW7wUF=19sG7S>_CcmBu_;U82$ie^Lzk3qpzz6ykwxjeTN!%On}mH z;=C86E}`z3zliDm;KbaXu1PMp+C#@9{?oYn)j7~F1zSQVT>>rYdmES)G6rNQZj%@8 za9aNe6d8Bsy@6bFK+)y$QFTc^rb_D~}-#G`Gg>JlfiiD6eHXmZ-bdpGHS}nUOs%TjH0hYF&*9 z>$u6V#v57*Fv2P*V%=V1slr>wePHM4PTPF6tl(F1ZQ^pAal}UR;d`Wmc%tJ=QIufX z84-Trj?ejt>=x_6be0s%2Y|GS-gs&ki9IOCEAw%15U?*Ar}($Dutb@-&b(DGQ#gXR z8T6qdDahmj!tdQxO3`%==z>&XdAy%hv{OtK(%e$#AsB=MW96vOBF|n;VGpV{Z(0j| zw0w-ikp7l}#tGVupjSVhYnNH~Rwu%Y{`>WJ!M7Mej~nCP&WVv{6%M*0dq`}E{Gs6oBL=E?)kTelIhd4BecKlDUU z*c&b?gvajHpp_=b@X+u-6g+M^+?lM)sp;ChFk$FKu(DSU9FU?VU8ou*m>{5MFdx5O zmH0EAaF;@ZxxKu^BC4K4%j9n$msovIk3B#B{IN4uN+a5;CVVt|GEQd-A%8Jw(mB)j zeY~*5O%g2sPuJai1vEx)XDDt@%Aq1w3ot!?cCsJZ;^|8O2c0P!) zk6O#q00Fiu>{f>~ACa@s3OLZ^245J7ypNb%hL(UrDGg~)NiHei=jW!JKg~t57?)?_I z*YE(%6h1Jg9jI`H?!>Tw`2-z~4&h9NGZZjB9?c;$=|b_8jTb(tacgB&|0cM9D;8nc zpoUO4{oB6bHlB2|u$IO%J&UorY`+RQTlKCcd^#lJ zJOd|Kf$QhdF1co_!?>R*O&iu-H)G}1J|!5k3fX+UeAA<=70K2?-{YuRI}3?eTd+|) z5=;JAt*_dCn{{l?{k0U3wc6B}cIJzmMrBQPireQRmf+cTP=mDd>g4rXslmKLRQUkB zY*)%o35ptE>U7F^*!8dL0Q+BhczO#FEH$m}+rshA)9H1#sFZuKkIJ-VT_}9gPYuzt z#8CRk^&8yK3?opTQyYPZC zLPj0qnv&eB)JDEd?;;quRSsvPd4QSk6Gs)a{d{SJtK z6k06SjN4b=z^lO;v7#qN!`?K}gtW%LPWT(D`NPJ-9@?N{t9HQmsj5FxiPq(o(DS{y zy$$?tB=``Ue6G^<+xb7zF$g-;`KC!NVv(jVF*h|p7-DbnNMMb*3%J4q+y&33x7|8M zTyb|GdzIhX1nvq$<75U|OwV`bD*D+!4rxvcEOrPlbu~__>*41yhj(YC80B<6q_Tyc zRC6g&>09-1vWtGcbn4s6h*!tuWR6C4Cp#icQfY~L{TP%kgEy{t^MZS1Aipn-HIoiaR!FE?>o}t>kuK7dabL`n{@I9x5_aEau7{048$iSJ_{u*6 z*N9Xa*tT<~$Iv6URiF$4`nns{%u5qV9GFS`Wv7p*MxkbyS3NNcBM-cg?s8H)UQzK1 z8*_w*wH~tgGRhQOuf1jG+XW8zxKsEv?mY69FuLU8=3enSTiX)g=5GxRMJ5W6Tpx?@ zzg_;VdSW2@$9d#@k3)cbk;QGKo$0$9-28#=G-7$3fi(94S5eswWI1@KHdRm5#L{8} zHQ&8^dWsMRqZIe$)tNBo*3V1HH_$u0`{4gV8B-o*M$*XPUcf2}SHNug0tr^1zXrf> z7HfsTRUjtrhC-qbeC>s~8tYpC^8C^8o^7jUwZWw*?hA?G4|MDhA!mQRz#3?ndz(@`V%kL+5G5F$Bm4@69H=f zWq{9Eq3Ai>k;g9USt#Pl?A__3RbN`dWKib$KJw9I4bYSg1=zodn?mNl^)#EEv?cMt za6&|Y7=+fsDd4gmf1FO8`lW~VMh`+IL~M8bOieNC4Ke@iXPXPTA5K3)I-{V`=zddc zogQVb*hKuS;1M&E@cg<2DjcDvu2G2v2%;8PUY@0sP*;G9Gu^PQ`iXqFrWQ(ruBFX{ z1Tn<33$pd|x!DsTpfkAeIsqt4w4MGBOJ^ArXVbM?26rb&Ah>&Qx8NGw-Q8UVcM0z9 z?hxDwP6+PqFu2Q^=lxC$$U+fIvd}R zSyT;gNkb03xBbkD7Dkl}mWZ%nR5$7dd9-7Z9tP?Mj(LJz?>YOWuJO3;P{1|8!we0| z_rJXM(r4k{56o)$!tdF=yZlYaR^$aV1FX_TyrvkpuN$j- zFD@IYMQg%frt(v}p?jR0{o;K<9udX_G1{LESjg={GJTn#^DVN!@;m8+kJ+Oc-U1axd2-zw)c7Ox=J zv%eH>Eyd13iIdaGG(W_<^;|(pr7v9&?*aF{&jtp2y^1#A;kEmXw$0s<&l{hufY*4z z=lv5F`J(xhw%e#buc>S~YaMhXAH$8!P4%#K56z9~_Mh_Iurpjx9 z46p$~j;_^|D1U+D!n$2CIkcqft26G4W}nahn_l?8L4TOcK*1Z{V$4VJTvtmoy=Jip zt(sJ4;f5dxj2{=gL;lmSz-7HVsX8-uoH>^etk*zgRpqHv7$J8#&vP=*Nc1wNHQ1Q^ zTB9lzB}SvfIU;c4@6~K%FO7Ilw)drEN|w3%?r?B4-r%&x&+{uCI6Hp+NXEUf1D`Za zRiE1ME3#iXh>7p9VuElP#_?(ug^Bor(;(Mr=1)Gz4MK5$|C-tnf`GewDWmll!)ftM zGiW(L`#5;IV8bS;rI!!Pw#qF?dFN@_p1`5Gwc-pM;T~6N)UUWk{emdMD+q@xVFI$b zyB*=-^d`gp>X>%9KNZN}`|I(Sp|JLIV8Zf!Q~N0uOC{mG=-E$w#jq{3SvTP_4hLt$ z14rOr%-Cl?3C`DGO)S*a@ZvA!U(R?omVI2RlFa7f~h@6ht2K2uN&G2U5IYV9dGvYF$ep7#Ean)qPb0U2grTw$3_aDV%X_%z?5uB z62&_`w(%o`yMM4GQ3Vv#6tS8JG2=<*FCt2FQ#pJM$GC0GzmE&l0&-)S=QeE3Y)_X{ ze@)g_^AZyVwV%dta$PM`#^q2-FZ=gOf=~u&7SPJk+mVm$2G$84?7|yj!OTY8Arq6{ zv{Q00V~)Th4sn(pkkhbcVARWi*?U>8<&|XX51+~#ICTShm333h*t{ci`C#plze}@7 zWzT3V@Muh^>Lk7U_wOGcz!l;tXX|}K;~}lnz|a4|w*LH~QO|Yj%$Jq`BbjQl8pp&m zKPMA(rViS0o=BftTCAkDo3fD7t`hN~WR5P2tJ;it2uXHbJREPvFZ?*yW`aD)Le|+G_g_k4#Ek!87=J3w5KvQL@O-?6FVJlEgb;KBS?6?6Z^2#SxrB z1+(p-(se%^v2mvWLe)Ew4w>6Hw9Va#H(t1LP~TXMfEQf7)m)BoMNcCl-%HYpLE;bM zk?5Qft?|)f2T>)FV_}+}+luBhSAV|81>F}m@6y32uoIojEclv&@+?aaDLv0?d!6HW zvR>>svpUzEk($I&SmP`@`U5uGcQc6TM}*h*(4td`&`P!M=HS;AN0ic9E{S}LR{>~- zs4Deds8h0BOhN9q-wkYyBS<)K0bw?TYwh9ik{UeRAxe8hK%_yiqVm2}PaT*e;gdA1 z_QWXMao_54s0Nu5RpK$P-LR6I-vX1z|BQ!wWU*{p{Ot~$UoZySJrC0KzbF+Ac-PE@ zPZtPd&r!*&Zb8osO~bu2@P?UfL9aVyMl%^GQ=+SFz__MOC8ZLV2fc8B)N_cNx~g7o zO5xfIrzd(GPwpEH4X4>o>!_lM#$s^SP=9af)>WvF@E zwR@6kSO@TJ^NdtNTpv2NZ$fO1lDm)+RaFE$->#51lWS)Ae}_2eI9PU9qzFDB2tlen zGo)*DDH3?J*xMM;cM%%Qq_C9_Szq4NPV0FNlA9+>tBX$qlp>WK7g-OuuKVbFN-NOI ztK@`>$L2EY;C8k!F+_eu>EH5xPqPi8%@b7o@)+KR4Z+*Vt z_FS32XAytm)o3|OM^4@x)nI3K_)x*<<1r<=Wp&V7l6L|XYqD7-oL}cS=c}{tn#LYr zo*4pSeFI)L9*-8*TA*H>(@5>VgZ>vu|348W^QP@6Y#`6?f?$D_h)%bP#l;%7TBnrM z&_Gcbt+Nfh-KdHnWrznd3!nuHD*9HZ=EmOkY}+w_1`@L~fub?(V>kwO(M4W}T!QpV ze<=qtRB^UEKDZPs==Flod#@4D()GCsSF_34kIV)p4xhZg?sRzQ%u%0WdWikALi7YVBCL9$Y@MFs-Jx_aV~vyO0-L100gVb2^L(#`QE4}?0YD(n{&;wb8jN0`2E-{e*~s#L7LcyG|t>K-gj z&|zn$=J08fW& z!tOABZ8#K&ykdxjGccdm26qTrCn2mBT~cq%ySbj_gg^`pr=f_4X8m20yCSTXiLIO6 zrfV#!E!t4sjK|&iGf3{8MC~5Pdo4Y@PU-ddTzD+`TqlF;1mHh;pH)WW&i*bc zD#|w`fJM$i7-TPOnwK$1#Rs?CsxLwRxUGHJUmrxLRa$W-LNaU<+~`!{^XVCJ!A4fJo?AGNj@$@GclU?xwk`kH-nx{JX|Sx%bPoA3@y8VZ zLl-!`@Cx&D;S zGl2N+3%yuEV=Dhkozd}`Lh<;2O{mKMpJ5-O3^RM?^r*HC_swchn`GhwiKakvz5d}4RZg$yP5v<>xk()*!e%bB&dZfr^(J%dCUd9Q)=ioRaS z;PiUa4Y9rdAem}PhtOh(B5vq*6mu4tAC$9F#J0@Zj0Hqc+9}pq0(+6xe0dRDzd`G> z14u9dyxzf-(57(XbTs8Fb#!g{fs+n62#<(Gk7@Ku$k&DNY@PCKk)GQ)ds8-pi`Fo(< zvwxYmvT=2s!4L6>y$)|s|Leh#w+Qi0)#W~AyUx=yJq~^Jy(!)0Zsl8Km?;J}Y3pK? zSMT8EDW=8I(SOnrQvw#$;GyHj;z8@%Z(vW)@WL>qaDu1SO7?uYxOTwulWyoPyP5cF zZz;iiRbkaIyQoIYCSfWSptGJ0-2Grhj(I>p+ z)jDZ}p-U5bsVFv(0aZLjsj8Gki0G{=I>Hf@&bovv-Gs;M7OacFXkAXTVC_n(d>dmT z3jl~6TTa|_9vkKdOj(x7PnwjLpqxIuGoV#AORO?eg4&6nw|9`}qj0eHYnJ&b6Q+T| zC;-f%o>jJy_)O6bbrn==_?ZZoaUXn_vA(cYKJaM!UH@KS9P@+{2Etb6qHwLviU0(C z?gM%n6nYzcNXmN)`5YB`{+xRrF1ZDl_*2N>6ybk#bRUxpnS{X{zk>^|15;mu zsg#8RPl=o-^(P+$aAW!`93z2kE($|bSB!ScB1qMJLx#E+NpDy;Wv?4nc%VjIZ=by& zk+L33mg=>C@#k!Z=0T}bvRIo8WS#|htZMho_!&&QdKx=9IT3$Aero27B?qI4dtZ_Q zLQ(8dWsL6Ev`?20X9_+0}A&MU1~fY_ZFJZJXlD@L!F_TV&16W%uIjmxDf{hU3<|W zzLl_?SaAF!u(5nJMK(dCp9#y7uzW8Lt{t)o_8C-86aGP9p)lP>(DaEj!$#i@NP%KV zzx)nH6$43%Y@B^sd)Q=+>7lF+IrbCNS@q<4ws3_0}2E{`zl#tc(!7hAZCML|S+ zn&9c<$ydtmfv3u9=yh}{m)<|L--tBo*LV@tl8yTQyS(fSf(gOvJI_sQVAJEtI~Ko? zPh9i_eb>wC8Q8Vqb{*+m$X4X&d7kbzxp{y{?Ws{{`|}$T#Yfvdtw6em9zpFBPrCjm zAJTei`M;yAm8C2dnm}-66CEgVB_zoKMH@x?29H1^Sxbk2Bb!!Nn%fgJWVogae zhy!<75XuI5+O%-P#BWFPYPi+t2mZ$dv1*Zj+`6KBio~4Z=aor)|7y%&AC%K{BiZ^z zC@*0RRt$*DQz=97W6ETTmKQ1Dm}F2;;(h&-Brg_s*{s!&on=D1Y|ojP-y%E5TXD@K z^KJ3F{t!f3kSK#0j29HtL^nqRJnm0xT;i|myBo?RIEb%2W}j)$x1vI{qg3PiK4Gri zK*XZOU7v!#T~7ZruQ~zZP5xUY-LFj^z1OGo%%AUdeiuuld0nq;=Z}0LOKD?7yJ{om zDGG$4qQXnn=U+Ndx;H;m{Mmnxfc*k0pS?NpGV}pqY92h?;p<4^qhgg;-(`P~iMn46 zBR2ax-7T16X4fCt8>TpJz>9p@@FabhjQQ8|V+1l+Plqa(= zu1_P(WL$6g0AwXr1~Di2$NhUt7_dy9FhLZs5^gaD#6zY#zih!!W@ft90Lwsb zXa3`qn&swg92gp;!j!H3OR0awk0n*u8#6{0U|BgKZ&i?Lod$J#rF$Ers{HrmwqTgXsU#EtV6me^3N7)AcF3%2l@>FaBlezBlQ7DYQ!*6QAy|=>1NPF9`aEZEQ+cit#_Eqi^d*Ik{r^92_;SX) zlcJ$Nl2oR6HO&VC>*+5yI^(^14fVh5|Bw|`;e38Ftj)QH_~Fbc*uHqI8{IxvmpOv# z!B~{sDloNj9uKUcRyL%$E%m8{q{*__t-jQGTv?fY5?!jk7CszxeePJRFlhW%Bm|r6 zvK$)BjRq$zgDdG(0P(AL0BX1m>B!*Tyg{RUp_94}s`c#tJOUBzP(JCm#>>~U!am=) zsM^s@G1A@3)zH3J))}N12I+m+1*PbL4q4CC8+I^b?vepP(r1tb8GI2Ht1%24Dr>{1 zQ9DgY>{*k^ay8Z)@*eXGj7jt~Alg0T<2od1alitd^iyDI#(|Cl z1diO^aWmtHBB#V0@;QuVE5=J zTyXUB{_`fF6RX_99IPjN0f*B+K)r6CAMc;iI;ojG*k}=(ftwqhkifitBJDH%8SVL1mBLQX zebWdV+>v6JU`zwJDb?~{Q)*^Ij$fOHORE(R%ToSIf;Xm%XFQ=dkz+(RMK*qp9d+cw zTat7R388ROw7@!5zOhBq%@y}BJ?VZ7l@nJXx_zPQOKX@Q+ui!3v2`d;89 z?ul$~htWtKzYw2KNwTy1SKd@*M=#piMh{CFM=b3;}t_NI>l`@|iLW-%zrY z9zZUn3N=k4W={j)D_lunaS+vY3^G5V<1$-H4{EwH@#4P>VR`K$P9dq4U=#F)+>1cy z2AYnxxO(pNKy8E;8KV8ok{CnH*QK09x7;qfh`A-LF}OT{aG#gW&AFfl*f{lHaf5tQ0~E<_ zAOgQekGzczrfna@j&H3x+z3b{n+^-86AINOJ2Vj9Jp59Ts`k_;PQ;1*7>+{Qt#A*hd2OLjzL$@W`W>b#5f6JYtHrOSkpklgQOs|a_rF0+?1qEC;Awc0i6-wR%y zBfJqDIY5a-yc%W{wl4{(=3*8Mw=sTO)Uw`xAKjHGn@5gc1*|LZI5BN{7>GLGQB@IJ z*J{=!i&usby1AM+f(nrFxO9McuV(#Vj3FXk8TBK0fe24pp8lHE9`xrbQtJ2o6qI3X z?*Pw9xJ7RAwNmTYwo%uz6#c+N5@XpU3(Bt1dm{dkh>>gJm#RJ6>D99GOwQH06n-IF znqfK`?_vKr7I4$s_3s{B3EBGa_}qQ>+Wfo+yB=M^G@lc5JStEU?P`c(RQA`NQSte9 z%97;w$}$(x2Z0(LQX_UCl9;>xFpo_x&bTXTvJsEc0fB}q@#@SkY=jeA6&S-V@eUt3pq9@j8`?dV)5lwc^X!vJ#R4pu^1Nu#m`Lk= zNilM1ta(pG*ebOe(Aj!t`pElS`Gk4|ZT0>mY)_CqZ9Sf6$;>#&4<|{0Hc;;Gav5s* zjgB0)pN&9Z1e4q(jEZBZRg>?W->Ec-0jE%(uHAmecxyF|^T0DsGW@|=g?2Krfmktc zBg4&FPz2Z8_aoq*K~w9V#)lmK${nd@BgYaCG@(SbxyMB#Jyn>bkLTh=(r-G0iQ9Aj zTY(%k;i69NttQxIHYh*K3+>0c8~Q*O=6clFwe4UOYdJ1buU7c>n>kuE$`HVFrkt^Z za7Gc6G`N_qFR-PjC2p}p$1&Zf@hvLhG=ECC^ueM;hzv-RI0Yk^+M}VkJPq(5gO1q>kGeuj@tNHf>*udGcbB7~FTmVf&%miakU85rCf8JDY)p1HbM> z?Q$c}oc~b*Tz#k*A%iu^qR?M!N~bPt`VUFZu=e|J?qQZFK6*a;?0*F*JDz1@yf9-C z;me_|g$)Q;WY?crkZD>h&7Bd=WI;4|;Ed9~$$)t5tB$ECUcn5Errj`(X8{q20%YL0)YH6F7_`C$6NIw&nW)#B zVFkMd{O^txmV)6wkBQ%3!Dptby7wJ4|Eu7Wz4$ysE%Wy%)rNd$I2T^HZQ*pO!$!8~ z#2L>_vmCdi_^8ED(7yD3W8=RkPM?aD6fz*rio{-}0^As6K%&PVa8+A6j_9gktXt>k^KOMWLuIirMzB;6(p0^dze2?StY z920UGjm{p+d^93XN@>Z66m|FshTM3z{5t2K zTg;r;7Q66+Yx6N0KBV;{f-lTy==mA{(5o)8h2Szr&eIVjI6X6cefP{}%SjF9&hEY; zzixa3_||}UYJc%5Gu%!{jNs&?o-d?$g=`m5UbarOu0Nx7OTeDoXJG+d7MjFrCCH)7B;n<{DA zX3Kb6zL4>{_o@<^ak?ZqA=PjE;no6uErIci44kG%*vjvEdR0c)botr`ziR^j1`gy` zO8?cYG-ZKSbpZoCqmr5LkU^7)nsGye#V0#dT5IB7dR3ZxUv;=uN0r2#`Upl$jg-5k z@y6=$f3}<=B4-2eB=6ym(H)Op9ccUdP;F1Ud6RSm2xT?k4ZPr6@2($+B^;=@5O?$xWelQ~mpE_GP+C4H3$ z*F@Un>anmV`G~st1A2?f22ko_yVi-th!D=>b! zel-1_cJ9sq9b6Bx0e)t@5hoaE`vp~F(^T6ovT7<3_V`$N7VI4sn*$-5CEo-E=NQCRfTwu3zgqg^I*W}>^7ps}$^(ekWB!w~)uLO$^RV-C+R z$on-$vJzBnE`qgBt2MB*^{RC9XU@&NLHfau@#<`_aj9=yIX(BJh%z*lUcaGtg>ko_ zy79=7Dv6#f=EGd8O%OlgOHYJPEk9OzILhD8*Td4xjPiS(Tcm<>j+t@tzugvicL0HI!kcL&|}2iB?#{E8yI=( zLY}&SiXu#eLEk@4Y{Zmq;_cUr64<~`Yq{WyR4$&`fy?uxOQ$Jdrxa6 zJ`4=Itx~1#mJb{VA4S+EIy+4q=xHO*aH3kjV!J?Ilg}mmy@l)iNPw5E)C%+4f)Y4O znsou|hW9g^;8o|0fUJMnmUCI*tAW9wCV0v=>N~dFKN_bg?@h2~n8B_eJa2DK z#sPHv=v#7#6*r>OR7*!iC%Qd>-qQL+%jNVm6}FCnR)6R^b*9~v>i=LaYgWMq zpZ5mDz1OjIz22aYZprS)M|-gjCxYvDkRS2qbHK;vNVm_Uy}VO()m%Gv)xz349h^}F z1?%pOVs3WWn?@L)Yi3{VSX(0>Loh%sA%uS@jtt=xzd+bgfJabdPW(I997H_5)_9HO z)zQ=IoNEWn7NtKa#IOlr!ivB&(?>Zn0}Vh=Vd*Plv&K1U6TK4pp9sI02Y)y^?>a4+ z>aA=DcCXLx=-m|!k34-6J+cf8REOR%-H$L;o_gV@$Yp_yx)1c2Qbt(G!7-)tn$$Ch zpDD8jAv%?ME+o`1oq8{@%++>3RQ4vHI0)&Bl-+KjR@=eCPgpw+1QHEF zd?6m^9p9Qanv(IJgVf*KLb87j_|sr<Sarf>n7gx|0E067%bsrRGUjW9bECX<ZkMKoz zVAp!y{fvIOWbzCG^7itw2nn{dvwBLdx^vycrq%>7FhR7r`1?SqoV5UTOQQ$EBLs`J zt~Y+=tkmO)68j6HeC(B5g%Wt5OK_P45nK-6~X_gAew8!y`Vdi4mSJtBOF+sYJ=A#zav zAVlfqp6~t9#n;aRf#%_nkBqymwN}d-i+U|jR_ZR5yR};nyD%&2?sPB+h6Q9EicwRU091tO5z%(4vz#S*Gly| z3kn-`7%|FY8*M_UmD)Pn@K)&D{?IDY83vYBiQ!504FGZM1)o;XBS+uHwpg3dp`U@~ z6_R5&St8azH7J&kh=fq+WxP}h?d~9FV#{|zC}e0~swvdmaueq!-5^`=e4yg$z&NBBFD-6 z{tz>$pf2lfHoHhH;ocbtrGUI6t;V4;>V(Wi0k)>U3Sx;%5ZGabSThN?Resui`3i#K zk*{q1qC4*JzGz$c?P@q;74#jT&Vi6Q+xl*<>Ybim%}12-Vfr`f{%bk@CC|+z>r)5i zV;BQ^=CU^mBY6YAT@dt|>T1U?9~}qfR>l6(Iz_XNLIkwo1-)FRF|@3C!X(O9*xyz6c5p3Y$MEHzu&4|j=59q_ip3frC z)`_?I$jQSUQeDr-DVKi0UhGcEX#DINSy$y*g;fLuZkSp`p!S?d$9X4fIeLr?fNL=% zjdul_(FSRzT~Qi#9Ffl}v17T4Flj3T>yB4|=W^1fj-*DdQ}>a~L}%_J%hw6-!SlcD zZQjQJu@xlfl<*ztl~`)F5zNJL6YNTU-7zg&7TKl<*5~0T2mAU%xSz^xCR9+p#69t}t@Q+PxOyiJP2KR*0B} zFtsGk10`$EFvVcz2U@haB#m~s(4A`;E- zz>dxiAG7@)V)$~Uo+Z|2e~Ddd{&|c&?wx~CG%$EGN-@`9C#h`a>i*(OJh8yg^9nxG zH1qYySA#zA&Sq%8eJG(X)5?GLtsHB(2Np9{JrfaN1;Jtu8zVNnU~LCu5cWOp-GsUq zYTFgX*uI;y72vnvQvX@DOrsUK;U^S$cmGDAWM;Eu-d`p%YU3*HYi`4kTsM+%h##nS zn>(z83HbiL)O;s-*Hc%VC{iE5~+{U79ml$M0se zWbo2KRMRkavj;za4AEP&7{j!G!drHmWWXqW(x|r?f<`GDFIYb7ZY5d#Z zL>Nxo$|0mDU+jhUPH!-C@E;Wv9G$&`3e*{72QQuDH*p(^6^&WjqNvg|G%P1#rpyQ4 zU(vvVgVffL#vEj!OkZ@Hzm`W}hpy0V4}2?zV!axJ>&-|)RxB=M=|?Tzwa(Vl!-hQs z*rm4lF%}#(b5=?AxKXhhq#*n!47CeqmJW30@# z_K(M0^)Au6Rr%se39SfbwKFa=67#RjX&(q93@)NFK}o^yJjnJ|Ty+xZ>#dkd{{a>* zTK{+4apBtP<6$s9)uWP*Rc(*@d~pNN*{x6R?n(wPL@aPMGlfHwuzJ7_P(Y%XM?%OY zJfOa0EH!OcLIxtJ*pvQED$9=;j)kzFh31MeW_6*k4~0={+$!90-rPYlcp~$EeDwEN z;|(Zjd!UQR-3$Yhwzqdr$MtqD=XC$D!UPkAxwF)T_&%_)4YUm^Q(X^i1i(oj8b0{o z0854(tG7w9$+(5nx}tOpsL@pWHDEA7uhyty+-Tdf1i^pot#+XbV6ZP&s{CONvLEFN z(EGkBPy+~ozbC_h4wqx8lv*1B7?1~3WYUl!5>V=YH%yA^woZz92x0A?&Z&}j_r`^j z_jt)uXNYW=rA-23&EZ2~o+U}AD;%kN&9`fO0Hba7An6)mt2ds=;xtf)(RmE&<(V6~ zO<}&%Xyarpyq2UUv{cLoL0{!RKKf2vN_%BdzGIsbI>zpI#i2xXlLmw!HdsHsRO|T=(Be-g9qF z41I?I_7IXyxoLsyA{ljlIM;p*86O$FH)}B}m{T=EFTFO|Rz7j^@edpiw$=UtKb!7B zGaNlrtUu`skFJL(YZIEp{kun(K;d>69c>tq6Ap|t3_H5Yd!0qhC~oA}hwGZ_gR;L~ zcEql`;9`R2D0&CLT_i;p3kSPj$e=ygJ$KOpI>gXGmNu9P|M+)*=BR^$AlwmuF4^?O z#^IA-A8kHA5ylWF!usCTotslcurt^QZ+7h)n6Uz;5v05Gf%BIboO=?9IEgehb>4#u z3#k9vG17dd3WPbZafVG{9r4C~sanu-{SX&vdM~Iy@ALnt$l}9LvT9k(*k2XRn{oossToM9XY+zDN)8SFiRGNAEpN=mvx(7mBj2#YD3ySXFOccqe25t%se5aL^K1L_{4#Tqf{*QRI~Q zx1Oj;lp4qIm1MS#xb2z_Uunj4bKE{O{tSPZKPIvltRxE*&&k2kr~W{&=4tv!2!!?f zLYV%qviG-E-Xz&qZW++^%n$aGYIKs~hT*SdwE}^oHY9=F26?bFF^TpZOCRNB?R28e z0fFUj_6ow`7-JYQtyHQn*%GC!>1~KBpG_P~$&6N-VX=5hI~vK9=CR)={&K6!QDd3c zU?}K?$oh09Q4YDeyCtK{wCJlw znG(o@G);YthIof+rZ!V~bgEK!_oj~c1vX1ak!Q{}h;OQNUvMqE`v5?BDlfSvW-jHd zj1e{+9^ux>rA&t+3K2eJ6S%G+&HF7eY8oIebr4pSB-Cijm%R&)(ffYWq?A>+l)+35 zO;Ce{r+DO~Tn5htj_C}^5f@GRq&JgKz+aG`z&D!JKg0y;ie$9%>ZicP5<-o@^Um+# z$jz{|3uWD^kV)->T$SApFm2sJpggV4F2a*JUZ zR2iSfBjiBOCh>bf%7yJutK*!!ZNHlA|K+o0?Em-G@BQ1aXo^k)S4PQiVT{`@-O{$y zYBLAo!e zOR`%DaV(O&VKQtGW)IK@s&INs*IXpZJ1Ev%F`=^4u2W=ktXolX7n-6KKP9L2nzX|oNW`?zC=}`vj7y%!426TF&un4l z?5s+=$(vSME|QlF@QRiR3G$TAnf>phj>eWK$k$88lEq$%tB3aPP&KN5kz)@HXgw}M zP`F4s+?<0k3U(rleJq-9%_Z1u5X{08be%zdP{YvHw8Y**jY z!^)xe{h=WDK;gfG z;;`xHmI!fm8zW4hnWSf-PHy`Im0|@cy(#_|ij-T`U?uzF zZWHRjz3?UCaWvux6|w9|7Db;9vAQ|+>&C!0S7a}sZC8jX%%8qKxc0=q2Pw_oy^&`_ zaFC*ywNu}7>%GVt5kWEc%joK0p*0aR3#D?ScYU#tGMGm=w9T*JrEhzl4XobC_=9eL z!v!zKaK_+VoQDc5l4z9Sx5e!YpeDFqV#Jhn^!gKfc5VB z3xN%{gc0E-;uJJ&#-9|4n?bzQFE}+)*n77Nv4iIM6aB?{b2Y@!5|TDVc2*=TVb`Cd zn|T~7sk$eD%Wb|Owjsy8X)!W55&(q~UW6z>wTWALimJ0D^^d(k^S$hZoH@a!X(=%Y z+dE`N%Za?hezYZ~bfm5FuIdz%%@?iWjz7jm3UV+cfpVssq`RA6|KUG8l!SAp7BHAfC2u?lW@chdwx_N}uD_;{`S}*N=i>c=IifNM#E;8b{#uOr0Z$YdwJl8agc^&#+{g2+Q z0-BG=#@K_O9i`;0>rXl!Itl^0KkM{0>t}=A(^gXLR#M}cbbvjK#GN5EA(=A-Rh(sm zKhO|*+m^P_@JoS&tr1kZ{bWhHy|8?W17_pmvM?vk+$yJO9X{4MWY|(wsT6YSSmddz zPUVqR$oW4cbdzo)h7;BMx%v2p2Q>r(nSGxp%p5$@PI2_sEt>Fqz=fz?hqu_?z^`2P zx+g^R$WE_EqJ}Q4Tp0;+JveO!{VQrXMBh=|DZ;C5HzCirA_%GNlMh=)WE{jop*yj< z`-}~`r*TJRyt@!8y8@&k3(%Cr7b?1nbUc(Ttop{&oa=;jwgb z3e!jn@C7EM^`mhiIdm7uxR&NY%@8LiVt8veypq|A5T+teb4u=@14*Q^-9D(!miy&c7@2CGQQJuWC;f+@hR+_60pGVGz zhli{46D-wle-UI5#L4wgZ(?T8yKpj&#mnK~b3(8Z{-$O={#I`&r;V_B;>Rn@jm3cX|;2}bo3j0iHYNsyYyGI{bx?H_P{tkD7w0klGgNH zzSnF*w$LKHMu)5&s&zUzoJzA7rFl8`M}vOw0*3{RnzUhsj|#1DhC9iruWl*DX$LBi zbbCag4IPY9pI`xJGPJO%2D1Qs$j{r%yArY9rr;c+8Yt*mC?$%z3DZ*6-4e@bNc^?w z={O4R^AH0{*GS=c6V9xB*SSM)Mp6ksjakrziH8MR307{+;c%j7Zj>n3ClR2QzTk@F zo6h(W?2RY(K_iUQ$_vLP^>{9;v;qw*dz}UtG!QVw1w1jmc@ECv`lK#%$Wbuh4~R5k zB!&DIt`AU2UAy1}9&#Me$)r>^VoGGtV`a+xYSF67aV81v*V@R!>hZd!l<2qlixhyn zt?pzMu?a5RV5-KDt8O#B))Qq-ogH>yZ-E!W7yAEO2fEfGaH@yO0CTqL%=|H_8y`}6 zHR0VuIi;Ol$lOSCXKKsF$r3Rd<1&UZIlPQ$$nHN$nE4GS(TKrh?8_n)K`B~O;&Fz^ zx_=+B&L=&t&X3^(?qY?sfS7L zJ4jZmJRxn)Kbx?&VjW$~sQ#W%6eWvRgEpmdUGL!TG#ryY>S9V$>%*Ov;r%I1n?U(lqcTqHP8J z6R?$#C3PNlGG0aWFlYC`1#6gL_KH-9!k&-V!>=SuOGrq5=TWpuWj3ZmH|K;$(J=Zx z_c-gl0mL(?XxByHP|17osO$I9u`z_Od)`Dh+GE4Ml#~oPt-O`DEI9+wCdk96dlt(% znf#*jz@j^5Y@fysO)ixr&nWa=zPsGRcG(;((fE5q2#(QAtb7vYYbUnc`EaCH)5~@7 zke#?iw6fRpUG3U=uIGW7z_4>uMfKrAQJQT`Ytxm|nZ$T23v-rdl* z5ht!;E4GI`h;QCMY7^Fe1F#JV;j;4>Sz~POnh@O0`7lw#erRA0i`|P8C;zGm2a+8% zYW0do{$Ww;<_sU`vrJ#$QJpclH@~%8dQRCbHv!Zv!Ndd{f!=a#x(6qhH@2z*PA7WD zUSB)GukY9Nm3{!oj&f;XaoUs4BjxqKY~T)eDCjHVQJET8cTJ$n#8!T?Dn}5*^|eB0 zBj1`J#r2;17Tk?a_Zu%AiY}7l2>2k7sC?sihHW*|X+5YkLz-om5rqEa)ogZAN5$s4INKdEaeZyA1 z5Y$Xxxx(eabmHh_$f_=F>H(V8yZiCJCiM2v4Gv}m*PbcV%1qRrv2LyOtJPde@Cut; z#DsnG7>%0XF{@AW&&p4{8LGIJr68$QOA4mFKz63%R_alr2O|CA?bB_<%CObQKXX-u6^FAd!9mh~J7yQsOvGBkxD=Pzs#QR+Z#cG@t*^7n< zJ4Ev{5@aE&<}8ZP9?rQ@@nBn;DP=3Ilo0=z=&MX<*Ui*cyR@`_tt5R{VTZ~Lf8s_& z^>6y{+^sz~+O?rUqkH(9{t7hMl!NkK=$Pt&OD`PcP=ZyJy7`%Kp??mf$-Vmtr^xX* zS0=v5WCadAJ}FQ|q^n~2t~^N0zW!@wRz7L3#XF0rCH~o=P|Nd=o=Gy5emP&mOIvEe zx*J?KNQ(4~OxVnelPMP)c5eBx<(7W#0X`a4hhsz^AfDY5{F9D<_J#A?0<;+KW1Jbq z-h0Oy2^3-v*a}J#NoF%oH*gym&Uq}atqq!f7q5vi(llw&-t}#P_yU0n4E_pN&cFM1 zPH16qBuq+pe(~RjMDbG;o9zBcNy$2wHo^;AAGec*2EJlm#Q`1Wz=Xk;i4eGvv?a{A z7{eR01bh5B9Pn(QfA*}5`0+$7^xkhP_-e8B*^l-y@Jiej(3E%ABSFDx2hX%4UkYUc zXcZTLqhH2akRVE%fOi)(XU31duY<>Ro7mg?uJxrDuN@us%YqkItcTvJA=VPSd0+!{ zlCF3^NmMhV40tp6ZM_0{XZPHK-DaxU)&5~2EmNI<7%go3l*JT*ddGnfne(?ry?d!8 zM42QdQ8*sK;HGKC7fA`f#Sv+pyQMC%ezcLzFk>=PZh=A6_~+8_f^#JJvom;)g*$=rC=mA_|v5j64^KJ6%H|;JtvhLRzq7Y+NUcWM0z)tRv*a@Y)aH5Wm z?k~#ZU6gvGqHDW+0#w}bNXG6Q#J+4d?1$9%N$DMW32(Xwo4WXcR80lR zA)5|(a*z-Vv?Co@In<}mv|dA)LU=6+AmA8-fKhEzj^%~|$jccse;)Bfh#kNH~gr+%v)vOJ~-M2U)z zY#u9egeNknK@JEN{#wDL`&UAkQ7Q_e` zyV6%~sKl;1FR`JD%t z1bs?ySHkJa)JK-I`MG^1`HMeqkn4w6CKiIu?jdT)BjA&i_Zc$L(91I7T?ckHASLL7345mR1q zvk~K#KIh**HgHldoPQ5E{{}NyXi~rz2@X!b1TQ*Lxc0fBX`M!a(4hrAP7)RX5tcAc z5v^suPx2Td{73V%yI=vZV2L)*`&J$;^0&3ueajN@b^FK7#LXa=P$G)Zc+AmY49Cl!hIPaRJ!e|tvnZK%BlZq)_ z<0FA?MI6Aq1c|9hmH@E^-1#SqqI%YP+NB1AxDBi)uf*+G~U93 zQe6fx)3-}BCvRFDu^~CR`YN+ji3LKCkEg^8SE5#vW_THCG)~byV$riYibj-7b@n37A0(D63a~ecO2NC=cTD zQzEGMIe6ngar}N+nODz_jrM-4(RkmtbCsX|&aX0oI2IMq3~w3ZWhD`ysE09t^v%C1 zreqvX^zD_O9bK+KJ~VW_41zCS>={M~QSj+(0$$H?MST~oAXXl>z?yKvrxTm8;-{_qNP54wBCPujOmw!-Z_at>KTBhjWn#vIPJ0MHF z72eFbcn+)f^3+~>@)8S)2PcHI3_lS@GD7vB!^?Dz!V_pn5Sm?cAgb4>F=K}OI?hgb z5j@a?d(yAksP|`~{>=C__-nbEkm65pkT_X7HMJw(P%A6Bz=z5N|J%sFSIrp~mg9%D zff=9Ys+pZ0KRd^ZW0|%If?FC`9kKf>-NP))6Z|!mh0_9%Y5tngb#s%Gb)EA0+&<>LOqQ*t0; zUZg=oJI?-ECR*4=HDJ!x=gR&s4ZQ%^IKQ!#G!hr3LCIInIKgVuV!PEI8^zt%4>Ryn z9h@0I4$K&_ZLB^AN*LMVh_+wdTn9rkPlkEFRP{CbIn7A&_A@qgGy`EO{G<+ z;V>1~DgYa82GuDEu}o3gJ4G#x;Syl{a>Wus{OdgrSzky%cX%EPp zdk7x}sI*NNs>K{Nf)!)K@;?0bSZO>^t>lrW$hNs2MuOtRD9AjLpaVi(FO8OBXK&Yd z6-VS6M=8Hy7* zAu_cZcgPQCUk!ZmUq}kWYtp32`*uT1?%gOw2DK{<3NpoTrtx19nuA@gG}>iU$tZ_1?H`(GZKh0_IXA;1s4?EdhBY+q2K+~z z5-n^SUTsfB*w8tbWQ>S5Xt|4nabb>kQhmt6z%2XO@a;3}btG~|p z=NyJ?xkh-9(iBRUS6j$6zSXu7WN1A&G0`93qFgwQ$f@I^4+XWIc9~3TcoROid4t#3c76wLxj*^-RW&p;Y>gR%K7dXTaWX@8Kq~6I z6PX#h$e?lGIDwSw%;!1RvgBo;R4dg`P0$TA$DOezEWWkb-Ar(n=Y)*w^;Nv#!4E}_ zX}j8j%!di-AoG3^Ek`}xr`FN|UzeWx|Mz8pJ^2T}x*jkpuvt*X5L~&27O@9Lt)g7+ z*t*dN;6_UXM4*6TYh*f{l7**mS%DI=o8?XDe9I0-wFmZHW4W9v)N0bzsngm&EZca$ zv*hM%wR>DFIpE!Zy1SyUKl#K_$mQ&6?Yv_YFPy39-X(DK=I2wEuobv;RveV3O2=X; zt0xY=iyk`0n{lZnX@12zKl=%Xn_}9^SP1#6vr`9^xpzS#cg2lqkHRc+7Z@X#9>92y zVcrS?4Ddr>oXtT@TyNL}SqaRqtd?)XqFiHLQGKV?Ao^3pbp84vx19+WrBXwgE%&Dx zPt7*WCUp?O@_vP4(1Odycp4^1a%&bWEE>REBEF1vnqQeCZE9K^OxMlA)<@pwPhF55 z;{gA?u)1F|^6|MWgwBcq9`?l(p)P4E<&@`skgUH#w>-`fr@2{<@|tqm;az1`hiNJPYErgIm~7|gj4&mgfWf;F@k27q%bL9V9crI8SN945Po z3iL=S0$;1xA3t2vJi23WU(UJITbq0XQ~I0wInFynf;JCE079N)JP%U!l=SOJoqV4XDPT|LXV`jcAjcYM?+SCbf>cV2B`HcAj zyS&*EDDm&~gnS=VA7@BKi;JWTvzC>>t_NWK;34)3_n(}bwqrhV-NKgYm3!bIGzvr7 z8DyYqvD@ihemLORpJLxR95Uqec>B!!WvQ+^ij;8>a6k)@=l179#a_AB6BkeinP~p( z4MT>zgo@a%S0=5j!Slso=CZ=Vxx-8`(sLqq7hj3?3<)}lzEhOYcK^Ycu~BfYf=Z+_ zJC7M2jj8Pa(`UTI=c4*Bf`B2M2eal{VOPWv&>O+L@l4zJr#dtxxJK_cAQC|fA$=+hrS`&gXwMiy$FO7N3ALvPM)l|c{pge14UGWf?>mU zDL^Sw;A=FnIJS712bB>*L7OU>bQV%Qq*vBLQ8DEYYy$2>Fk7tO1A2qVI^K~( zI%Y_~>?mvP9RYl4uZ6%|y&BHgfptF^blub1ib}DdzsSdAiB8BhbiFnC@W`f%i1kS=H@0>6BM7FJY5Jy63`?_X24E@CN>rgpts+baD z5@Owvbz|N_nS#F0sd~tL!z^c=%E}+u^-W0QE`b^HZG2E4lckBXs*lT9Wu!WTi;Ww^ zibriY&3?QP5EM(&mZkKLiF<=GH1UV3Q2>^*siRNa!rC0U3=G{IMHWm?A12%I;H{rh zd$!E0ma1>mqP$93Qj*F-pZSV0bIirx^*W(v#sbHh9%f+;{Gkls6zV@|k441KU1mP2 zj2>6>HjSrq22h6gcqehzdEAjxeu+kI zcP?@#cPI7-rnx{siiw?ZJD=J+lzc7~CY!30N z4^}fzQ8Z14v_?+Ez)wQ!SG`FSKMo+-dubhOCAH)HHnmwf*{nQ2>lxpN5m#|%tMPM3 z;-pR#9(XxJ$)Hhl#Z+siAOmk<1N z`2WQoMi40%un-DoPZA(RQ(o=szi-o400%ggr(>XHCNn)apeWU>0qe#Wfp%M7Y) zezSfnGo1P^V6oF^wF$ev%Seb1ZW*&8ZfiXwSB2-;MOodjTXFwb>!QX(dUUseP&Sc|E30eS`SIETteH3a*1Y>~XV~OP zFxQ*y11CWMp8Zfum-*$QKQr+E3O!=o_I8S zPKV2Lu*;tG`=Wt&<=uS@($Ax8)@P&_Yj-@mu{z&p)tIz^^HsFVcK)EPE*s>&NrTw=3X^Y0_CtDD<@Lf9y) z)r3I|Vz6zw!!2zt0|s1HZf=1y#0UFxT|)y2f$c%~!w_sKdczvL4nK&z!bs#ogHl#@ zHVDA>^6FqX#>ZKwhG`l0+!Nwh5)RCRSO_h?%4g%mq**Wn6@v6ncb!)ebVHJtSE-P- zeqPcBYU$E~PTA*OoL_WB&Vi~VRgb&x<7Wr_r-kV??c$X3@5BjKcbZqI{@fzM#P-p3 zR47iZH+u+a6M>+)?3;%+3a_>~@$Hs>huA8_2~{eg+3e3O6;IrT|9+Th2|A7v>2*wA zzJY`jdB9SyJ9%mWsZ?K+|D%W4Y*?H6;Q=kH*!GVH!U6hDZol?@9I{c^-5S6nTq0(( znp~^VNTULTNul(P?;!;MhA7cb!o2GH9u5!HIodIj0i53HwZ6W-p$`ub1U&A+48CVl z4M&c55~iC__MZO(JqEn~VXzt6>4)HXSgF;xwqIiAVBm))-*>oT_pEw_~MIoPjtkJNT1kTU4Mdd}%u4NN$)sbq?!gBuJWCl!sS_=wxWT zd$hAHn;=I!B=;gyb@P}-{_DN zOE^(Wn&)(X^&7zxn4w5DL*ZD|oy*%?G-P;)^OU~n$b&|dDZUqHuy5V1?Pgx5p1+jq z^JiTdM{f7eGrJvh$C`cDFVVai1qw)iM`lz~_)~e(h4^@eTYF1lf)Tx|Z~uixs~$M> zag-F-!FK^LQKK_LMj!as-7x+IHSOmZ&pr!#Fto+`rjc7$NoO;Z`x0h>vVJnh98am zJ4X7Ry4@d&(%5v$~-QIytzI!P|m0Y`IDcxW}K5XPf^%8YcfYO@r^o!)0CD zRt6?%!1GLx2Z#*vf?+yD?v-ZUf+q{Ob7`SLwL+*{GF(SarYu|@k8_Lv>)h+6*04T2BzyH5KOQWX$S+k$wg z{{Z_EONiNDPz@Th^XozwVZui#zo9HxANhtdjv7HrKf@n~D3}J!jr>)+7P?X2U$LKS z-M!!Ul`(-yU#K;m4c%V7BS^FEI$90^S^Kup+(5+=;moTQ%1KpB-gA33F!>~ngvK3i zF8XFPsrtu;)BM1>7g)c{{413Pvj+d4R@LVjXi(`2&1ctRZgtve1MKpo9r!#zS6ANKkWhIn|F1vlKv7;g93XW&nd@W4LPi6xYe##~#< zA1#O@$0GOHb4c>LIFcmuTKuhG?V3WVv(!iDQi?}ynznsd3Lw|BEV~le)d~cBo=2K1 zl}unCA6|N`PB-6v?w;PvAHyx(dv42G8z_#3b*J!S?0MSNYQ2foR(mcg)MaEol`8cg zR?|U|Oy^?jO5wk}+Q$Ix#o>aYj#AM^Tl(LW2s=Ud%hueg8)nqKc0K#?>6)OM>oBn;^q41h7= zq8=20?1)-0vWcy?_zaTSIH}hDf)46AADp^`;s}A9jHTqjIy&A+>+Z!Lo^h8nEU1;$ zbMS+qmIfjMiiY2@kyW4x{f1|E4?_Vn(@}LDHbDTF;5LmkL?ku6jT>4P~}w zrWHiepfl2dza~w4nMVGTXA@Vxyr7z=OH8wmdbK7ljnTS`=Tjun#(tQ!+U6+~ zfkf6C(8Q~39|R>eLjsrStXsAgBZwD>KO8|o95v1VM$x+3fW$Bvy=KkleeIO1<)Sn4 zuqN%1y~}Blh%y@f8ZF} zHmYg`rPKIiSB;^Jh`Pll&6*xUcJdnuHPHVLMO7;|1AMgjT*qvu1!y)|(>HZ0!Qur1 zzax=zlu@RC6K2C;&!poT*lHmLHv3(@fRYZ$(6i?PlJVoMG3Yr))y5bSIaHos!W;&_ zppfkCYx&={Uv_+74}*|wU3~n=Fx_Yx#z=o0TZWJXVfHR|UVW(sWKkXG8hFrKSL2d_9knrW?f}Fo;mw7MSHS}c z=ZQ>ij~)3zT(h%0ly4!Jihg__VfK7d9S%*3;d-wjulz3MW!+73Ai`9)-$4IOd(VZ)%|cK zGcQauC%JU1GYJvzS~MI%3-{qv)&AR*K;c2SW3o&OgEQ)!-moNMUhmSoF_fL3!|c*V*F__Fw_P zU;++Flsez}k1Bvj;;S`V_ITHk$n=8ij5|I}F;Ej5Q*Qk;%ba{FG_I}er@Q{s{i7w3nHePZs17`}&_wn>mvCmwzx*ZkY~`ME3Zx3@O8 zceUn>GY$<%t^5Hk$HV<{sa@p?x&DA7ZhO*z%lnC!kg524rm`HKfytiry!l00;#ybK zH&6HleFDCM0$KE*wT}d|&l=|Z9s-Qi>B z^;nqt94eQ_>yWx7W2L8>mZ{Cc!i2f*KA1kxg_Uo$1X31>Y^yK>+S*gV&mLIQ5tiX! z(_nMM>6hL*@SRDqLxj3(^Syx#x!SN?wup(&>a84ewdE0^bW!#K323+vL&;STzz2i- zLzUji&4$=6Jviok^6Vvu%;+zne*;Bhc*jJBr_zOlHq+iO8UQ!6YVDmVYy`W5F5#d2 z0jCn2vP%ZEHT&DSkO?mI+BQ4KUSHGA{2@*iZ>Akjr=+z#4nN40jPTD5%f*8J_o!X@NN8w2swHNOJ!*G}KqO>&&$;BN*Ay2jI+ z73+F0romJH;*x}VL;QodP-d*cunY+!Pc5A$O%Al2o_6T=YNRv)Z+fQmX;NUc zgXY=bkPlb3;k=yuJ7NKK+Q;^_K7%KETV-hVO)YS+R;zVEeO#cza$GtE8WP(a@(vR( zR$zaSCs92|FlNfm{vmi+!-EJG>=B33FI+Xx()G;yA(7Q|MRsgqB%p{d_32EK80=2! zC6!d!%)BfN(cbB%jSTQL@%V~aVW3R*Q<>xaMD^L~Eof2?eorGDlq@%^IeLqMZ*^RjvuuIOdX&{Px7rFGKa z^hijnkx4}QpEv3K|9O)zxm!dq#xQL_9r}kuZT$(ikt#$|yENOzPGp970&%t|sYkI(!4<5`2U2@8#=K4#vh1@#AF6MoafokhT!Rw*Iy-PcXj+V_E< zKWY#+p^@A4fEc5v3WEsu(P-9u;l)xJ73`H`VaCHl(wml;1&Jfvrh$$E z#MI&N)kGQ6y*uruPq3Gtnu&^h>q^GuAHq*n=QoGHAD%rulj_otSFLn_cdz@M&Z93SouJ zej9BEI!_mJ@p0p19SwF^I07@+Ho-ft%HX1%PKm6N;YX1gmFSAN#ID{-Fx6Y9jYSQb zkYJqRZ{g5#3OSc)i%{z19NA*7n|)Y0vQnyurN#YAPrd#^Oi}-!24`2aseXC|X&gMU zU|+62XSN3)`^ti#{&C=vWBalb(G^8ed}&Vl?#g%qISXyEG9;{9%*yY-f%E9e^Jm@c zmhgTh%%e{r?`}OW&rPz%kn)lquWK{j$5ml*y6IgnQ7?5kkW(4-Hkg0{9h+h&`f-R~ zR;#JW9``VR(bGOOtZl*KJ)T^o|BgPhjtYW3yqSreXWT^L;W{?RT?7X5+Te1&<>&N6!|(0ngb!YfI2`T+yH*-y>*-z47lko=S{ zaWX5C6Ub6;a6p4|-NiuZ0ijp|B#St!l70f=?)DXlQ=Hs|ckqk6Ac`@AebiEEuVBs^Q<*_{QsnxykcM1{pUV#O?yzy{?utE&;ujsc)8inFpJ` zl?5Vgo0wm{>5CuPzJ%JZ?Ak;!t&42#2W#ViBs2P%u@=j!G->Y16P5@NIhu52`b(#K&RXoWzc}lQI5vpvrtd5##iu`gBdTm+6goGdTBS7CH_$s zYabK`J9MH-f*!HQK7>+0$iUmCDm@}`d{=m(a8oobiA$ahM}|_dlDvZ$Kh1W+aKudv zV@I7)C^H?9FQATQPWeZB07^v|xeul7ZB9DjMqr(`ng?b5^omB?gwFZ)@MsvW(5KOX z!-gvxPX|l{{QMW~*0H?BHPebLZXO~@Xm@tOMe@PHffX-*EXnr!rPhuXEr#E}tDCN` zkQ0X7opTCQmD)1|IEe%-0*3XGy1=L{)q%vpsr!UlY7T?tGaPRP)-94D?D6r*)R3+F z0p$&=WYz0Iunl3$e5>RsdvImdktT{?#z$ z&eYsTx{3EjNal6!5hK3-olK>SBtFXy(ku1XU*<{4m=ZEhHE4cgEYsV#rJ2jaz#_IE zSF{pX2Dhyl@ioh};hg3Kw`9l3D9l3LDQwsVQ9ZYtX3P!w7?xQ|tY=Nt0fU9ipbA(+ z4waEW{Uv;Bg^`y4kQ8ggZWVcP(H=9*7PoM5tgkXN$VE6Ul?j@v&hZpn&RHr6B<_%D z!0s4(edasr*4%-Sp;^A#f4E^BS;=lW>F?47{T*Gd29FJkRul&7zbqcu(PYXM?`n!i z9qO`FitUJmTCq|YL7&wRE`84h9eXdv2zR*2Vl?g@JfKRJNQoMi- zj5ZCMN3UF#nshS-`snf^VrasU+t`f}xFPF2n%W9M6C5X-3MXX+;3TvkO# z!g}KEqux8BlTktWvO1Skz2Iv)?qpQMC~=%DtG~5v-H`YsVEw z9rDM+>-u1X<{9uf8=Sk>;(e%~VnJfY2SU_rXpo1nzc}KX_}N-~((`Y)7Mah@qjJ>( zqfB%#MRG~J{r|qiknh?cfrt{Zf}ot*^p=eh#G}?oax`!9UVE$k);W8MUY1V=)iEAD znE#3+W-6EhJ4?|^epQ+_J#$-m!3qV@;Y6rGQXff~P7b$T*!#fx%aTK60IW_FpVxH1 z?=ryJ)H>vygRDCjF$(){_EA8Oy3@py`ar+uC z5SJtH*`JFVGV~z(tIwRB=Qvb)y}Lr0{I^PB9=r*!1nD1VuoijZg*MxdmBP0?cl-zeZ(!(4C>B;R6HA^hJ6W}nf5u!sS@y`0ZUqho`wQbLdAVpnnHvzP!0$wr@(`?m$C@a>21T9j_f1{_B& zS%v_GsYe|O+~Qmb9O{H;R7UxwFCH}T`p_fJFvU80WGh-8YG`H9S1JC6_krswQ~5u% zonk5nOw4Z1J~hTi6hWn>9XxMYmLpkgh9(S@Mfy#e26fto%s<$_=2PVJj>ei4p_QF5 zgz-TxG`HnTu?efSfu&96dA}o5*^g+FpWZzIUCWXDuR(qfLoIwS%YOIE!0jPkKE7c~ z^%k2<#bB(-RMOgWj>Fgtt_(QOOUz;(XAf{>-MI=L;k7B>*j4S*L~C}7F3)*Ktc&63%`v=q4Flf{ECB1s@9{ITO^FMQ**JXN92FspbTHIjDUSLBrM`}2(_3A2qQG-+@x-%FBd z*F;S|VaYAJt}ApQaS1z5#Zl|YL;o3APx-^+APEW83t{r;EEFu4XC+@-kWB6Th{HDx z;wlhrr&^(vQHv>EnlX2(uQR$UY^+a{G)yWOz}kT3FK4cpJgic6?sI1Uu}rtQx-)cl z2NN5cbMT<|%6z@u5r)a2XV|2>r{u;T@?zH+HxkDmZ&lYWJK%2k$!F2LQ&w9Uqesek z)}cKo=lQrWdf3GzS}*0n(o7!t&=JoWX3n??D=w>{1}mx~X-7F5QpMZ4YfFFGrqw<2 z>ehDx@@tN9{PY z??LN{)ACRpnu4qbbt)^b*C42bJez_z8SQ|_m@W;>n&NfVxv9HYbLu4@=aq()*k@5H zKKdbl(rHW!4o2g#s!t4#Q{+@wO zeb8BQ$GJ@f14&4ypjg`^m&tr1i$~!92f+_8|KLP=ahv)>kp3O3(k1^DK{$su>QBHn z<|(gYz9{@BFDwWq9v4b)6wKIBFnpI_wqi`VzG-YadEA%3@fnU6qo`K>a3@kB; zqbI#Dg)`Pnfg@v-*S8@vK|EBB-|Mo_*^xxKbCtdVxXZpPrXjr45wZ(ZvG?LLjvoXO8 z*t}GZvl~%xY?Dk9pCKdJC(CgP8@k4qtraWJ-80@%el{jA&p_9?8ZVa5!tM&=dUxqc zJzr;U=}42K-T{>OsMk+^m)XFofKA|<1x%}KTX^e=Z^21PcvX@8NFF+9p;*-wKKw|g zl5d!gZtUhLS$ji3{|hgW^7@X_sd(wjsisP)GL=6az2+SIW(}3{gy?!^-+?GYl*2I* z8C})epD5&^yBV0Nv&kaRE!*~Qx9@)t<=>s&8%>;Er~6%Y&y(Bt@_i5z!AyJgFZx$D z`j+4Z%DB=}D5!)`^7v4YQ%#e|${P`fDJzLKYUMVgkZ{LmRgLp<9;X{Z1ks6#nl&qH zUQ1N^kspP*<7S03%Bo~ZcI3-{5JKMmL+794^$@2U_jOVz5F4-d{NZdlElwML|KxE) za!7B%CW~Me7QKWj07arm<>fn=f5g|-hy5AnJfyk}Ww<$lTgR7hK#MFw=q}z1bMuk| zF&T98yvqmlzAF4;$0@>Kw679FE;(9B}R|csA<2x~S z92lu_zzU+Z61adxmh4>`jQ|~%Lx?oX&9fxRas#0mXjc#`I&us}C%KcBOvJJ@pxNC7 zS1RYtJb}TPdSY-Fv>WLJ*(a@V=$UsRL$Ld+{0Lqs!C;|2XW8QM)!$Szb zdD#l*hqL9frtog+c$v%Fm``rhrJN-dJW|#rw$TlB0_Try-=-hsdDnNHY)Hjle@*`= z-qk)b(QdQR9$47n1hj(j{EEacF_PGr72PH1 zEiyrVxdnLfPU-eBQ#`!E|H|d8TD=Zc%^2RKHdji-;8q8bs?DFEKF)#8D+fpj)<22t z2R{(dxTNFOVfRbc9Vh#UTqFs;XsF65XpW#KATj=#7hSpc(VqzI?gx7EQeV2*L ze{vRQ7_dlF*fEl?83~)=JHO14P zI4H2>vhkOSo4~s`y)%hE&QWTx?P!{%Wg~Y|OS0L&MG=(T&(pj$Pb9iHNTm*AJQsjn zMcrT2RJaK5#xw|d53J7Iyn{Y?7Fz~}z?T0+5~$LHbdj@A32mXH7qT*sr-Y0Dz~ zd5<%|LtS*^ddro^3fh2Qd+8^Fl>}dd{$t|`Kw$X8Z6ZW#Ahty}?2 zmn5&5kbFrOWC$b&LbDvs>Mu-P{{mo~Ocfh_7TD10*`x@Q~yBvj|Y+9}*`jlgh(jB4g;!2FiBTlbGOwRN^@FiT@!V!hVBVf*Jf zh9z=4DCdQ<;X}ISuL>Tp3^!TS!Lmfnc!ZyPkP-B@W@amt$5|50Urnt-^3dbk1@(66Vds zP>>W1lx1QqZD0`!a;H4%_xeS^r!?Z1yEKmAwCik692S3WT>pDz zs5ZTjg1UNBY`7ph^`f=YqkaW%f~HXW1YVd~XkMadm5zAy-=L5gI88;5*v`7j&@LRM zghSv^xinx3_J5Z)xih~T3?cyh+j$z3wH7l{ooC+oDP#pA?&W4ytsn?Bl>SmmY~0BL zlC%}by;ZRQYjdyZ&BK>^JBCyl-41xcL(R%C5Sw~-*!0FQ^#b~|kYI0zSK_NPW#uD@ zq|qW-CBiqn4*9Y?!m%!Ys&nWjW-)@fKe8am-gXXN_(djmUb4SO>eS9u4IO%PRti*y z9UVdo286S6a`s}_bqBsaUVtT)HwSACX6{c*YPB65QNSjs-NQpPfje)696{~|cqpSI z&IaD4Wmf=(hiw;59RcL)*6_Mc2jjqNJ!_%vW=ECovm4>04yVQ}pd(RgH1{>gkdbbg zxqCIuON&SBQR?~QvR(FZF7du`fG4AhmE1aELKvh6e!*Tzh>c4mty{c61~?{79u zwfr*YF0~OQ#IB?~Di`w{6q_h?Tjo8qIf@*Ss3KD#-y&`vi8eH>d?Mfnb9B$J#dkfio?3Th zQ%u9U@X;boN%O-G0uW+1G`&bRf(`C=t2sxYLq*Q>|Jc7oNd+Nr)1|xpbsaFDOnsY& zL+R_$U=D3;EDw>9YyxUeee*3csj7RR=^<^;!F(Ai5MO@XA+6UO6kS}KR*~297OiOz z^IV{4K%IvC3moYu&!yhiAjP%++pvmB;F@zNu!axU?_uPh+~v+{&%T!aYRUngKp?ct zJ-3svG5W2xa5YqsUP(T4x|)oGY)9absH&ANv`~1**u#fH;vyWFy($YCfy8ZmG-~A) zDbFbw{R-}=Y3!X4T@|FYc3HgV0ij4YW8ao|9jEqH61kYYU~Sb5sn-#iDAi#Tg-CJN z1B|_hK<$NdzE=R2wu3>ZMQZD>nq>poB`%!?;=Z1UyO#0DaQx;r6a%T;z3`&OR!uON zLy=&(z>oro5+Mv`m+Q}UBDH#K$@$!rGTc2>V1*Z;8kowqJ=DeRcDH{dao;puG^9E3!_9!2#XRMKq-@A}cPd=~uhJDc~Tk`)%qd=;Ot=nPul= zx1Z>R$b>n4cWA=MS*Jy?qXM(UAO9OVszE)1)rvR7oaUbyVIeCgz2${*OW}~&k`M-( zy+}WH)f8OIYoHW(+!w|40YgRuHo=SE;K zt$YW92CyQcYA+g%q-lFNd|d-I4;i!uVZA1VIZKvynO(AW5Ja)EDzCGeJJuC}l$F=< zQ)uqzDpnHnRDdG)KU*fF(BRHw$W`@;XL_wKYi80QaR(JLmoEH;DR67QBmUspyyf$P zYc2~DJTU+S6cBfqnL&vI*I0Fq*!KGU%^c-k^0*0^qY7cNBOtu_iS#Q;fcAG_gpM&+ z-*+Fvq}#JXJ5{@ErzKDnvLt^~^t6}&Ad1-A81XhS9Mfm`XKQ&Du#c`7V#{f%0P7Ch z)Twm1_NMk%Q8TgE5DIZe1MUEQM(<;0vjFD4WKw{(0@^3~7ukleGf!QPp#kehOM@zC z<)WiI+_K@$3x}>(&QfL&s*jJ;*hh$~_>0(m`$P4mJl%MK0W+D#Ed31C+18n+15U%-WYvmk%yZYw`Qpty!MU5` zfVq@~HgoO188gm#_;f*`44t{@I1C^!_Op{Xk>(;zJ*j!v&lN+t8P!lJ-L2_<=Uqkd-n38sTRIN8= zIt)v~*C(!|u&OYPrf4`+0JW$7T;$4UF1P?Xca$cNm3a7h2HF3e#+|-BU^=I~I*Ggh zKh$3M1_H*cn8lX^$Os_d{*V>uGO!87ky zsMpojE&bX)wE7xK7F{dvdZVpFeVOmiWcWplQa1Z%&*M?D(v})P?&eYeft)sC0gi|x z{E_PzxzVl$pyE(kp*BQoGLgFE5O0910 zwONSEXwpez{}DhXB@`T7-mxd*;;l|bm=9&@^(zDZKx@hVb9RUO_dZ#y9?%G2R>(WL zE|Hm)Fx*oDs^DwP7uALr3NpY5dj1R-p5k1~tKn!B0n$Z^oZ_~Or>TE|Bp?n^=Flj;+9Nuo}b5t4z2=Gwkr%HVOoE5DuUddqQfsa-=u?VpHK^4uGwgU$=g@xJ^tJ zyoX!eHX>X*Cw?HX>awRqWl1P`eSL&i=~QW-qN>}FJCsWTh89qON6DDk6sGgD<4%}~ zZrB*Dx_qS(2gkTE^RRou)kqe*x7mHRV>|-aw9Ig~4SL$62mE)wS$e*5B+k1 z!$V#5cBeU)XZ7tmnYgNR$g6*u^~GQySqN*F1e!LZ3ZXIzBGA+#kkOFCN~KU_8*6z!k;`tppdTjqVzuZFR#12?6UB3HyMiXbV8zaR`zahfk9?lHwIkUx<}|& z^264bLb{@}8-HE0VHaHyS7|JG2OO@=~h$HO#KPtcwX1 zfL!ubj%KBMaj-x2uBZZZP`w+LcozsqH%!OuAV`8fVEOd{V{{R^;`voES$X{hQymQO zQ1I7@=QBfTgT$y^%ylt8{-PjSSo1m7NGB9qB_O97lRzaHEBp*2;sYZk=ZK1cw9S%Z zI~i%+Sq24B5x4_-=(sZXueZ2coj%xPWij3V1&zF(uYCX7_I{B01l9%;06k{c+ifvh zTljbcLdmLRWT%o5AnYY$CDZ6Knc1lA((eRG7D!w%ZsF`_{e;T7FP+f%ll7b4d;W;M zp6UgaaK{h$KSs;)=)|xcS>ku(83hH4W8-lTd)N4(-SkU2;+xuIHzPu>N%j~*6f(LPW?7}8 z0Jxgk(ji8y)70xmRC@4S|_R84W+72`pK>oUdYU$si~T9y<~0T5wDC?C|tP{ zrleXd5%j9X-}HNxoZ!xLiFsUQ#3pD+4c%kF`O_-@sTGXpubMOLe>4L7!vB_gS2CP= zyPLujdq&%wg~Ez!fmIzg+ot{d+)*r)vo)!z zifUEN3KfL#ABay}pNj6$K{BAepJrWr?8Sz3yJvn9JK^70=62eIpmnuVVevH`p4CDKkZzLGmfg zo_smW7MAr`lU?0Y%;C`OrHpy$ymc%1@IPq_hC$iG-M;J8?Rt#1uh*3S!l#wBb->Vi z!P{QV<1T@`_8q(c%g`n3uER74lY?LWQ}NGDg5)1wU<|vi2_F>n8U$O9$W!rJ7tjyP zxY2Ck;7%toO;-Eb3OGF7KSUbh+vFVMJ;9=BnM_9@t?OQcn6q@3;t z;__YDjNs?IdVKsYG{yqPRbpz9Wz{OF@xl|n*BhTJkDQO!L!pn9&dVpJ(@Hf+nDLqO zAQeeyk^zW5_a@TSW~7~{K)bRZu?+sqUFRcfW42}_;6H7}G4aqPTw`bGLJIcD?A0DI zIKq*6e7iZ;eal}!`>Q2dC&Bu2|1Cwn{WnA2VIY&z#BbFg@-v2+)QG`>mscV=FQq%F zRuRVq{Ej9MAG9>L#AAoSLnf&twli23k}6Xt4dnN5Ogsu8@ULn=tkIBtMlN*JUf%df~J!lBB<5brEo(^bzccmmyh$bYgp@Qu-}5#CHzLsWpfjs(!(PP0iFH zXki$ssvuuWCtl2D-=eT(s#7bYlJOQ*8nulQE%gM3a@={d>1Am&ffos6MDiCKa#!$i zlVb1TmYL^NXb{P=Hd;+EeK|y6>*Xg`pS{C|9jkZ$y>nA-ywra1Ox6*p-OD?f{O?jc zB!1r$z&tTE?qw%W*D%hg*tr~dY}-Oc7f&LSTixU_AlwNDT5-ra@VX> z(_n;+Y&5FX*g4(f`3n*jN(1nMNC1G(+4%h*JOa_A}y+r5MTeYQ5euW!)A&W7F%#r=Z!45 zSNN=#fy-On=v;`O!foKlb!O}3Y!fDPv}0oYsE6K$_G|B^?{F40tJ|^7|D~bQmZR#- zChXv8!j8<<+K*->!Dvz=M3x1K{B-~Z$7@JBY9VNq)Jp5!%&+Rc&E0^-TE= zyj@b+Mu6V0Pd-bAx7()edip0%h6J@uO%D@Xop+TVh8mR}{8fuDy5>9t{zX;J(y&Oi zIsn2*)5(-7#t0#%UCp^uG_qDHSbLk9Cf3)y4D*__*XRb<{f*+b?VnY7;71!xwjx8g zjINe9%ps2@)v4AVaPW9S*ZtRG@cu&Cno@_@$qZfIS5@m5iAu)k^8QKjRFo}@S+xX2 zIkr}$abhikm?tv(9AnN@O*NM>CdS-KCf%^v;&9@?%M4RcfSiO2)Rj<(_`B2rd*^Zt zu*zP{5#(zDQc=UIKNg*`{1L=m+A*bOIwiAHbmPB*kSO67@sgW=yMlp#NA#T@41<~* zQzJjWVGW9dG*Bslrjv-=Dy$01D5|1Jy$YTg0QU*F+{=P`Yk3)BGLF< zQIC4atCFz-QCuy%5q;@53YCR~T({GEG&JtQnKL(s{Bq3XJrfnMm3pC zCaiQg<@!%5=h~=&NE{r;vxO6)gk1sJ?O+Ba0VZaLpId>AHNUH`_sXtgZTu<$kzk)A zFSMU+jSnPWD<8AElEq&I-?F^4N>klo4B^ofhEiXfC#18>rqb(A=B{f&szf7=~zh7 z?aa$e)TC!BRIx40X&%EY;jGc`Go*#LRIo`(k)m6Amd<6eHJYbz_HQ(3D8G7O`s=M6 zs%~@#-LD9qL$9C9t94JF0Px<&kx`vnb6id$HfYM4Ag5ck{!^A9D`UaR~A&?GjuYUsup8=kqb1 z-8VO+=SyR-Z?0(iM|B}q`>&tlJ-jpmhUzPKwK(Y@AT0J6@gP`X4;$W07EB$(ajT#+ zZg2w2dJKL}(r1FlsXjck{!8l^iNuPavcG45RF`-VyqDV-fjL8t1vxSfUjKO})W#Muw!ybGe_ZoD9v0bf;+)We^B1|H`!${L0*D|Cqc&H!$X@fw%LQ|x zFuo@1?fuadZhp_;j3(mdSFYYa&^2oxys zM?rqRM$2vd-cAKyywsQz|BUC~Hc*%sUQ8vyTc56X?RW+m>J*$5)6A7R#Vhw8>}+I1 zyD`;zKT4BCG)I9miuc2I27=K2nCvOltV zSHrI|^0)=pNHb&>?02JaP4QCT=OL7`%}%G~Gts$gx%yzH5UZAy_cE`qU*?lnc zH}tqtIL_@x!v#&^nftKf*V|iq1HgHFO3?dX2aUz@i;9llftr-!GbCmYgZxrog9BPPDlop%%H zB7edt%uQ~J2#T}?uhr3)LT zBP;OUbuymB2IDZQ>($kNR#fJ6RN^LkKrZ^I7pP%L$D2ggu`@GR_v0Qq9Q-o-%%4jO z7P@A-eq7Z+)BjlXThQtfTV#FX7fbEt+jtQUy{1%bM*;U&xFU@?DH;lOYOJpBpLCTJ zlB;gq2kbCVI#`OBnb&5ji`J7qcH?y#3{`iYi%yTN zJ`Wf3lO1a4JGr$SEk)I7iE~vg#UDx-;HBKJiBg5liNDvh(bYDMfFv^N z*~gL6zSh#(z_Y*QE zlb>8`EqhWH$RntC1xq5^PM<0M=*U9|1@G(RW5pazD{>UgZ9>OiLb8;#RET@O#zCxE z*%);N(;4p13a!zqp4Pw9 z`tw?q)mX(J+guZQ##j@N@awx15J1tEVHn;AnYmcVaHoi9D}SFG|H}VWpsU`Q+75CH zl@UpjI*(ubgAw;Q$Y;3B=xt4Igwz!#isC6%s8uOrycRwSVvPsN6Kln6dv$3k0lekd z4Kj+o7gf;0z-LDOn-AI-89b!jnW<02$&`~b9jU^b{1^R7N&dgTMMM=lToAvaP8V|?-x!u61olu&c@K`Znw13lZ)U``E z%zx4>;tMFNkssFXb^qehnPKUtwoS%%H9(XW!EZ{^b;w73qI^(?N?w|sWsaoLoHWJV zJ#gI6_=)Q(Zo=z^Ba&+F6w}SC@B4DcZ^HF8D*LwucAGz)B2KX1ST71G=sS>06lMAc zzWUvHs7RJKawYa$;yBX>X^qkdTYFVYv$Yb{*p6ZH*=T%hZRrX!{)itwp4SjZ+B`e+ z+&ZPId~vAt!u^qceHH>S70|oihQUlnp|s*_N03C7ua!P&wzR&E*?;@ZTD+uD{Ir?1 z_G~!Uh|E_xSkXY*pA$A9;5q%VIN6|%K3T#0uL^NXl8=Vl-JSX-(ZDmx`~1bn`^OPb zvU4e}*PJ3SgHQ1q6SnE?_(t=c**@bjPEok8Dz^?_ir{-I<=TQu;Ox@r(J{$_Q%&X< zvr_{sg-Gd7S&|Rq4Vs9(a~cwHid)=qp$7x*#9k`(1mmUlAg?qILm5Q#O83_|(a>{7gv zD|!)ZHr;v+pQ`6Ihq^*#hT$t}(lHoirO1DTGzEfB4d`-#gF*|Cn=Xa5Nw@SQ#fyKT zZ6Tlrye*@hVyPjQU5bCiV!}`v{Col2YI(7*Hu6SVa2nw0I7_Yz_F#RAaN{+sXHgsS z`W_@54kz;W_L80uB=)r2br>Z*Pi4%(9!pm2F(a5a%Ro#dO+#`%e&9$E-0?4Cq**qj zyGQD=PDREuX3P;adS+IRal3|bMPz+HMAIOqnOBG%!PWI6&g?M(-;FMS>M^wIP*mSW zgCZ~CD|aH}|BiF^j(#I6m{BV@*JJ75fIWf<6-7%$v#=o6g}Wgy`UW9dS}Zx>bM)X8E@%upm)3S$}ud)TE;8qEaJ8p7R5_k427Hh z8DdwVQN4)cnuRu6J6U`QcARzGLYK;sIqK>k;H`>>@n=Ghf|F`fCs!SnCZ=D4_e%*FYVb^~j{L=s9@H$Xx4w)Z=ug}ThFz1DG65ncVZOMWcXI5fvAy@SHSq{y1YwKFD zEl1=t*0Y91oZzxiePbuZ0J=@tnI~oE;cDPfgOtM*`Undr9CYe{SM1+(1SoD}QkpI{ z-j<)9o?z7lB7v|rlh2dPt?mbD!{d}_5-IK@0g}wZ3TTu4$IsXr3s$Zd-pyu&suF9F z1+Mn z@$_$UB7HTD7DU2GjV1C-5@~TmfWjILfLHgx$&K;r(dBRs>GvqjzGlXi~-M$`Qbj!*auI`^5SfclRI~*m06s z1RZFoW8A3MY>vd@Mpg#KBQkhtJtSr%GS4&r^aBS5P`1bxv#oVFA-Y^_47d{j7xksC z^SL_#gTz}&|2BmoD3=>doBi9<^+zr@F3z2pO}a|gsf7&aOIz?6kx>(MjVfcCL4@4F zbT=(-y-@vFJ1PY?2YE21$g$pfBwIa=*n->2zaT<87P1cQ_2shg)-f+>Ch<@ypzHI{ z2E;R#vAYkNpZc`PK4geknCu)D!m}}jtMB6PdkfRs)s_-aQ4oVQJqfwN%P>)Y+7Z>uyE?-=_{_Mo$YIMgNM{w8UNX;+BG{qc?dlQnk*yNg9-dPY0zMbIz&NKg4%fW_3>KndW z{-Q6*s9pJ@M;@s{e+o&eRVSpYH04(UM{;ppua$yeon!%tR%bht=C;^PV6YY@_U{ zp4g-rPs_ahJ zuoNb}GA^Xu%VoCAoNVdMBx<@o)#lVN)y1^SCzx(&M}gKjY&80Ncbpmxl*(=W9LgrG zeqNiQval>GcUV_hw|B*R%Hv%s(7X1)i~;2nX!Abr~i+5$-<)=yKts8;3fsG>a zSu%m%TuQX!r;Ai$*RqywiCtEcGYH}hX_GL(y?*)B zNB#NTyArcc^%}C-1KXD_C(I)U?ig6awd?G@diu4xTgDXuA+t2PwC5 z4H!Bc9Q{J4$6`}vghoEB8zn%44i#|=?)%@Q_{ZR|_2m6s8KvN4!VxWJBln4tQ8Z=p zDEuDGd%-DN41|XRWss*5S%PMpNu^+rFm666P)>KqLF*VzYlVit9R`f5)N0=gwZE5zinQSGV6uT(g;ApicQTLnjZk{i(9Sy=J0yhL3*eYO zjU566GZtiWvwGaW8UXB&NFp}|`X@r}ghID?A+=h=C1=T`rGaz2U0sNLQ+-K< zr8GqZWCBL?F!6J9+U;J$EK5qcCDmw{KdkOFbL@ed{x%8jfme{Vp8wk5>Ll;R8@o`wi{ zIH}J+xZ~*;5CFN>>VtxEu|7Di-DKCnJvdveaMitwV(aaWUWW^M%Bwer z-G!;jX{N%P{Ovz7%hS;R^(zXdsgO|(Uz#jWd$U*qpHK-vm2>^-t7~Cj-c_K27DyL& z>_36Q(R~)t>dVPr)DZBob6j(J<+@mFe(}kXeQvZk!Y1*2@U(l^N7=3MG5#3%D1toW zn6Qm95EdkoIS2TlU^u|usC#>Q`m&$N`|5I`GGj2JKfjjKQzK2@{PEnSGs5Qv*2lM_ z^E#dajIIaEiH)P%0X?wHKoY_~FIfy-%WEb6mEdY0&-}08aj=~g)!jo`7wWuF)6&*B z!%d=~!%0Q17&fZz zHmsZ!g9Ot);iO>ztws1WVCp@7o&Z#om+~P;^mT07af=rRuF0h5N{-$AK zsVK+rst&>;@@K_06xVn!RZEC48Nq~0+sQRQyGqbXR zcp3KWuy21ndF3gwXHDE z%Q=4j5x^8hMue3slu=isWiMN|GDJ^p)(%M^a@W>e)2Q$)TcL2&f#F#5`QQ@GW}zHO z-JTB?7ea9R1rGI)tj+~?tbGGSqoRF7i~+5CtmANE4pHM=-5N!&5SQ8fw>^KcC@V92 z>v5k2z}(v&P7tnjx)4YD+W=g{$8HpF-`?J@kxqeqr4IlCsrwB0-vU-dz(ZykciXeJ z>*eADjgQaa^!(hYQA?~xeRDjXmvnv7dgNxOuZUfO+_yGwFiCo}hFB9g&ilMFMLFJK#kKW50c^ zOp%@mG3jIR_eBSP&cp_Q>wK~2ljBwKs>?NsprtLFD0jzg7G>;uJ&>boCZZ4OlO%;l zk-JJHVk2cX`>nbCFU@dWKKeh}-Ln6=n_Wql?zXHjD;Iwp8Pl|pIcblnlY%G2_nHMu z2yqki&596$TTqa+Ze_~oK5o)bKA95xf${EKP#zNsQ^7TaRWr+`%#mw6Mhkx^BzCn63bi4}({U`TNVByjKmFFgUkED7VU{0u>@Ezte$cFq$1aWLrCzXa za>>DlCd2R@+u*W=uJIUnOhu|eIUe4$MK32 zHY4(2$xDE)`3#=W(fefKcV{1VQx6>-GkG~u0Q+x6l}#)#cyl;uXKM@QYv<}3x^Dsh z*FOF?No*~z)kM_SOxYHj^uUwHxNZ}vnx&VM*F3YkGLO7AWr#HjFj_|g;p#xvg(N$4 zI`opn;+v;en`BX;zt8UuG8-U^TIQyNBep zxw~}$j(iV1bvn8L&u_F%I{`xQ|lS3>qXXp8# z|MuSb-o$0I@jAjC%|&p#;zLB%a6~rl;UOXb zaz(F~iUG9sdqXaI_lZw>$v(pjE3?b+z^G<#~mupIW`xdop``>rK1=`$W(^?9K~t zt6teJqLWw}-8JL%gJkBpg7#I^@H#8V34APS-S}U~i$O#<} z$=%*LdNorY(^aS3U9+Nr??FD_TDT!0Sr~-gHcxn0(!xn^CKE(qHm&NRv!XO&cV%;5 z^3RHL=DFLfbf5^QtV7{)|C@(GVVypm1Es?N6)?Wu>FSeqHxN`M^8zLDf~4*brJq3G zDhbY-K!s#1PW`jM?q&hp*~J_vma%wWZFoGM3EfaxZ?;4McRV{u5;2zp_%WBKm#CA- zIewv2PH6a5pw&>Yra)yfbD$NnBaVS#1|O0wPnB9m*5kTVF(a593|m($9w@jQp(1J%*YmIH7iPCAt7h47mFTb3Mko0INy#(sW6q4O}=*Y34@7hPF(D-c|DZxB(| zs=F2*71@L0pl|Y2_TNam!*FcanjaY0K<0eD2wgmhhuY?&z%Q`pG}~Ug*n2~jTUGfEic0l*hK*+ z_^s^%i6bh)j<++L-I(`vVnZC5wGIb~1(_A>g@%FA6ecCh{(oPpKnSp1F3|1|_n=X8 z*ZBlvOO?uG0z^Qh!9wa^8W3D+&;Y zxAAYQVDOM0IugEovgWhPiyya(HBGG%_*~Xo`&aPZSLYu8F1~;Ph&AnW*0pMV?gX8ENrc`k@ThQHJ@k20{<1w*pst`p2jb}Mpwc&2S} zA&VmE8ixo)amv*0N^@y)&Z@4LI^T2Y!cbt9f}G%YszHVgEUM-*L+rC!S*n*XxE^}) z5TP@C)8}V&*{}{#XppU@&4P4YS+C@BJm`r_&;~qUnzEHfUl=vHME;9EvSd0BQY}NG z0D_6E+wQ8cFC*mQnBjaN^12%xyi1}tX>f40A{%uNCsqdDCGCCqQp}izse>r~B&1ly z90HisVGS$uvHKA|ZPV>&fI`A+$L7qrC#94#{$nnf-1HecCoC7CJK{ISi`QFf0 zhq&_SDN!R6Tu9aCIAc+Npi|@e`I@V>J}N(bf$k~+ubsf=lnYX9@oy<>(re>>w`^1c z{Br0w_+0Gp`lp)NzrWaJ_`t@1kd?A;X|+B69B_~Ooxiw#Ad*tKsz-H@;O*aFTk3_!GKT#0k{G=qs0PAJpZSe4bl zA^-cKI%SCor^HyN7bg!xoe70luN5k<;k5amyPa=*IA!uTHkX4&s*R{ zRXz+!_-IU?B5t^uR8p(fo%h!{4^3K$o>H1M7<@v6w{$;Uzb-hpu-|TlKgFSwcc0b@H&}ZUjuXbPz}6h!^}2tut9y4_Zw9 z$C}$d*r?9@Tb5@eNmRR99tOwlj(AKNi`AKDzl-6!1!@4|`S#A(c;3d^LUITwj2|5g zZkx=#o;JX=%~dl;jt=eN7DcU=Y;Am-x^Vh@pzezL5C`@xLa=^Ete^KYd81%* zYx{332TZXsrqZKjIbPXf6~*JODX)MngH|gm#q+q#BO5qL-#o2K8IeV7U<>8fU4qHY zC-4<_F;$^2-NoKH+?us}!ZW&mhX7!rg55@&A>i?PF{LpD=eI#jxf)g{K2X4X-$~{I z3-xCk2>SU$iw@>-0Exp82~oJ-gw59T6%F{*0TP~g5{LGC^JB7r=Psm@7V_pB>DBD| zt$~-bcvEvG{jBj!QhT%5s{}vfAK?)id}<*qb$llK9nH-hs--MxtM-9iHBnr&#`cTQ zu>I*bnUIvf!We#qQ#VzEsW&X8*WQ^7f8-jBxQf&lYnF2=oI=X}xw%cBDyF0e%ED2~JBo|5%R4G6@7cxKZn^#w!i0i?&}i<* zvVCLQD4e%xNqpK|$rk>v*D%z$-wg5|KLs_}&w{V(tl|^VI!aRnug|*|P+oqoTl{zB zj_^Nn6!xGRh7mhhCw58#*eSqS)iA0Rr+)nlk@@0LJF=&&|I;@R+MwQI>SmfO-3q-; znpT4;1?&<(0@wiF9UmVvffkxV?7AugAdyZ&Qg0KQ%=qd%Idc?*SdbudAztBH?PYIz z%AlJ8-+-ON+3j=kYLm@&cL8id&d1I=A0UF9@ZNl2sxD(83I;F4P=e4Y2%WD*U^er$ z?3Wb9w@YbET}x+wxP)wJjvwgbSRjD-R`vF$e4(FGtw2i-KDN(iw&JDnhk?XKRbnv( z1z)HoVTG;YK|zJse(I7o0|_7YJIs zhb#Qvse(0`Ke|So1#FbS#sG(|jZ=*Sl0dpCT~QDDt+CHIGS}_3+`l%D#NJI;Byv0i z!DvApddu2NP2Vcd3+|P4MYACEVr_Q-j7R3cnXEW&+E=QJ0r$hUNHfWWR<{7kU`9dI zfEwsY0T$YDv~k{UUb`&HpV9`=+Ir3rd1A&TFAM=J6$?NvICa9s7Fai}wR&I|AJX%C zKO^P5tzlmtZGU||nPmgS3&0%^EZ6;movR}a0(+J1gGWIYBa+NB<=LqD4t)959l{C% z_}929r^3(|X4rP8#ktK0I_xFC%z!SWHAnfnF2-wqzOG|wkuT6ZxM|g44Hr7&&(!<{PLqtJgrG#{IZ?W4 z=+d4+c?Cvk1zZW*A`&pgzE;4#3P=KuilHO=agkAg;J;qUPD#nC`wB9`*3xHtv(yI- zF3h-w==n*s0+Fc|ugbnGAuqjfjkVHH*aZykHxxYRyOY&E}xsT+1c67 zkNZ`d4_F{5MTQU3Z+Vjvw?sMtn{jTv?E5}Az&bR&|qUQY3sjAroMtHEs`rJ01)p#4G~i0?m^eeQGCOB>JilNJS){$O_$zPeWw_*^(bnHLG$z-0}H#O&vhg4S7mMw3;K;vX^P*ZhWi({f_ zeX>VwvW^Jb+DfJ7f0`~n;gqxbeWQ!B_2r-2$v1dk9m|2?#qU=c07bE9g_$^*S`WtU zb|vC(=Ue96r%#&nTMCLp;6^?g1^6Z&P)ePDQIwg*TaXH$L_fdenbTsx{fucWc5VJ@ z3jKzCAHsfYb%#eXWjC?Fi(I^bHpi_79=`obYFr28c z(VrwQCMH(P)-uJbLdlAGW(F+Q6%pMDYxS7yyw$EAuV7Oroon=}S&pe8V!7_+gx4`l{{7kN%KN-@C8kZ=`#^cb zP5)xHpckuzsyWQXB^wjX6vMpyGQJGZ+>t)k}0qQf7ew_ zY?4MvPX)RUf4f0=<`@PVlF0S`7Y(TV7Y*=y6~+I6s4HJ>WMAgpI@f)ceuUs%g0q{M z!hHfqRS2DL*UG2F94bxs?X^DU$SYb1A2#t_0jyFZS`h2B&b5u=?iWv0XY+|z!t^y>MV84)h_Xet5VB*7LaSrPM*;Xiv%1s z?fUO%fCjLw2%6B~dtO@|e=oCL9ZhZRn5-=Ja9?a9!&+w?h+BOZqFS{AlRzLDjkRO_?7wpwv{|VfPVzN_Pf!| zvd+8z%6{d6c0$ImVt~0{5=r*MuidlH$B#ubf{mf66tE*o)0mugQ@hMOBD!k4G7J{i z>0Qsf4GuAER})Mka!SxU*HW{=K0qj%xNww*v0~bG6W;!5i2lP%IbyCRSsUfv`F;w! zXEbHf&fPw8((~SdgpQk+w})Er3jXxsV!Pc1nD-INjN~FL8`)5vgt;DD%=~lH{YAaZ zTak}i@)6>k4?$T@}h`NWsyO~Zvkq<9Zg6(Tt{|8J|=+i<-rIT-Y#DV=MA?fuKBV!p=&qGq`SNdoc#48cOO@Y+djH)HlMOK zn_V0o9dC}F{^L6Ggt=Vh#kwZk^CeyU6y{`l><&wT6#B-{(lSJPcK`xC z@Y&X>1gc}C(Ryu{s~k1~h%yy+gn%|63#*E7&r3ER*cg zfHAT#yfq8!B#eJBBYPOcw-%%md%DKTRpQR6;(JFM=m84HbV^bR$Zr$^Jx+C{o0LOy z(&-UVRI<$SIAXQ2njYixn9MY&n6~U`e}@~k5jkv-((PT0ls)y7@iUwP$-hR3&uAmV z$TCNGE6*9$R-{PklJT1_?!Pui&0?Vc#6;IgJ8YyH)jtsP3HL3N!V^PH=AN6k@T;$9 zi{x*4VJ2};S4JcJzT}vG=qCTh89`OP|C2XOiV0+7^8s_~O~P8ERZYH4+~ z--LJiP0`aPe7diqux%Tx>_!~MXszehEmiTRBK-g_*+taMI@+YjqEvX0LCI=^weveg z2z?EHRXNz~vQ>0dPVNtln8~clps|#JNsPNDM^hWV&`gc)RHkZ&=&NRkFudrdkV@^J z@>~lZ7HBX<^$Vm~Y?Lhim8!qrn-}4hM7(YT8j#;g&LE7SXQ35f5uxj3?>Gac@q!a8 zTZ`5tA2PXQWWF5#v1#oY)p>8M7PHZ-J<6)6N96rm{kK^eVf)oHYk#DS4q1EqCx`j@0`|8 zCKQETcOx#HFYA`g{cLP{0R99hVXkhzwBBSr*)U*@wq~u@*3LwDp!nCPPgQQTt5q?;n3DIm)|ma>>&2QQIIhH08Ja% z5N)x+Opr}AVT?tE_0l+`a)9>V+IW%nU;n>zLAeBkZvZ2o`LT;f4YhTCJVlL2u^?3? zS-v&nFNVEgDQGX|i!>^w&2Zq(nPs%1P=mLKGr-|~zLvDAv%Cgz%F|Z%BU_BjFH16r z7s$i_eAZf>orB6%*As`FoQ)QT!})5jw-cAvDgwPAGr;)@EGme1KW;wWB$ig!+hH0_ z*BVDKm37L@^q7#9*-GD5Fv&GX4y+;a$D<(6*dxy45#DmqgbPONkODF1Jr>`s7}v*A z1Ztl&E#=ruh3VhYFAE|543~2l*bRV9`+I84;IzvpJS{zEfR#OTr*myn{r$0upxAZX z#EGq~@k`9L4!Mt)6%{t0J=a;+ss+_J;XD4y=akWS8Ai8tpo8Ew#b^SV?|IpzrQAS{ zf|wtZC#K--V(mYaRsoRVaUZntZQ(AVgwdr`k$OoMxOWdTH@MNM{YtQi_BVea?>AMQ z)aWp=L_!h~3--Pc^AD`A!h*a`VE&~`UM@OAfU9wUtG0cdU>+YB5BFPYoik!AD>`Sa za`};cIuOT%}hy-#MNkN{V|{Z%G}JP4dM;b<#cB#X;ZuGOB`R2_{17396J}-1r40#0z_*T$c)af?_;$;49{X;%^nBhNYc+Jp za&;Miq2ciGP@{Tb>nSM+JP$wRe6XoR+T2W z${MXEVRc~u_M zGtfneQRl2uEVA*#U*GRS57>+)OD5KQLEqWNQ?l`LfZbfGb{67+%L! zJY>7ez7Qo;K}miud+A87oH({QB!%E5i`3z8!|B&C8^yLv71n}QiaDdc6l~?l`i#}l zhf=Z2>hd6Wf#(cl0whLTL`GN#T)L9gh&@4W{0Q zcnJqd(`coV?SkIKL~PW83R)NI4~A{u6F#d#Z*LFhuG4A7SU^*(MYMl(B+JGrk%@UK zxu?(ibOP){zSm4^4|`xl3aSx(8e4ki1)kRi<>^f2iWb{Os%pXojIi+ zDQBWVo!-n&t5LJvT_&?0a!j=Mu7gec-J)6j@cM4b&gZGUl&PpiG##_TCVKOvEq1(4 zb$CJ(wCAg>5ho99H+|SOV?RzLg1V|Q>Y_CbM>Kuw7yg~kGPm^nUt7-ez4UWT42@0~ zTo>$Ysx?;u`_TUwUyT?J#R)^y5!|1KzBfDRHJM2bDDy2=MFAaK1q08<{wE&qtNNVE&X-CX;t3ZQg@4cp zq~2%p{~Sc;trvM0d{+0bq=K*#yUx@0b(?U6T-pZWl{+?5H%Wobdqm7qF_eo zkDsrLJOsIyWL1uZBO#4xuE^D*A#hsu#X*7_E{+hRGSn`5s`!+jV6k*zV& z09y1Zf6*VURY=zxfiWUAj*wTL@&aGkO38YNXWf^YXS%g+BWjRJ85jQv28nz(b%@#*tWgz=l#At_Ff}@V2!LX=QXbr zhrt+~2ML7_(V1)i+~q@0{^?*f7# z_P!W}^TeQbf5Y5deiB}_5>}x(TsnU%y-A+!Ej9x%MH3}IoqeuA{*~}7Ma47Ul^>Kc z<;@r4SfAuVTA6{a1(_JSjh9!u=)bk}V74WWjYRMp=MHpN8^{?lzYM{)mqerS8+A5E zhd?Ga*5FwYqQmi<+XRyC%+a#3+tz{-d!!dVH3+s_Hu3ehM<>Rk=0aW#a)*Ejc>Gjh ztS;CysL|%#OD2b^^%+M8`K5qdEWA%LGRkMHuQtU9Q7}cVVg<}`gBQGR_Ri1fjJZUH zb;m*mawWViZcl{RaoQ>^Z6W}u2*4TZ0wxwDpwtxjxx3%I!vF|jpXI&B3vIxKKw(MH z(^%k4;K(9hD4H+Ft_=CdqkybH#5B%IqaRdhK(`cFBDuN=K3_I>-(75UZfwyMpWB() zK(j_r>{L{4+MT*6!E6^mV%Dc{Li(ck;m3e=6jC6`lpfVY(W&J#&~ z!uU38WYYD;-Z6rCayfy26peA`+(CE(Y-v9SQvXkH4AoZ!m~~LpA3SvNPh=yhCHqHF zD45xmpc$xIRujo%IowPrvyTlEp;7za_zczQl#Y>tN)86v zuuKp`E(02p_qwqnkigmhADc4}@Q!D8za*~$Uu0t$a~u#Mva?ew79|<$fQuD)dpqFQ zINNy^w2eI{P$8*S|D`4f28rat3a6D|TA`Elv_~CJ)-`m7p>622OL1&gE*BD#S1$)! zkBh>eIpu39Q=e_Kz`c0L2%Hyy4?9AoL7(LKIOrM{> z$&;cKPll%Vejj%E0ih@kJjf@j*yqJluI2=X2rU|8Z=S9+=M#T_8xqfHS|m?6yxhy%hum;hc~%%&vc-@ zs|zBe1n;_!Oq}hdiOI2Cr-FY?+l_mSbQP>I5xp$23(G2%(M3j8?iGaCRex)umD@y= z07k!t7%_B`KuYauM{(ADDc<(f8mbWfk=S8#YXdq!<=cdLRcJ+aPayO5mpZRa8Dc@W zuVnupTYYrjv_UlnC*tGH_U!j8{O+F7(eMsVm5D>%=Yc{=4Z2j|#vq0=yW_USU+;;= z^8z3sKz%JX5S`ShS}JSY-Td%!-;3r1QYiok7_~#DNuYte>3P%kHpHsTC%0LjTHz{L zW=mf|Ob-eC^FH_UwSDXB6JYrgeLW9z^W3h320=M;0MrVOkt#P_b)Jp_a#uSb6Y4lMlsXug_6{KTPHuPzZ zC{_DLAS%Pt{y*=@{~i%U?JX{-+@N6uIU#Th8w$a|l^X4x!f}^rAFI(@*P+l{Kd7xHgD!kaaj=*muqQQ&y3lh78A@g$ zOIJ;jj||$M7?6K z@x{s@+#b}QQpj{I%3k`6^KWNv9{!URsXl4PfqB{tS=|$VW%Dxcz+W+SADaUcniy_x z&Pw5m`W%Nh7e^rD8&pcgGm4ce1*Wz1{4>x0Cdm0= zh3of0*(kcB<0@^=o7QPRM7PV0!Ch+-%?a6-W+$FE*}I14mee_MIp;=dj^fFO-W?ZE z9+aKVr_HxHZ9AXGnwWn3JD^z+p?}6Unr^u)K;BguEy(i|#)h4$0<4;N!6{*pK0@d; z-NM?sBnnP(W8}UhOXVTfmii`!sOF>r$#C~?<>cv={?WCcd+?9U|1OOGcUXE3p6@OX zcHy*WKv2TJMR01h(M4&{IFUpe4w=$<7-O1qrGe3H33u$UQIBSa&R|Or3YH=%Rz_Xm z6c@Hd0+1-<$dwvwqaQ`X-U7or4d&0AZru$l8|^n!qbDcO!;G;t&Y_lDF8}$CC=y2@ zk)MGk4V`?D0@6^jmk4)cshd`S>*ywW0OCj}c2vy1En2~U5ZdLs~1S_A; zG>F8+8qh$k9ld-UGFFTBOFg6>gwqG1cqPRsR3feQqB>rYOXH{oZQ-qp9b4y5Yz~Bt z5+M3kc8i3+yz&}Ho-H&!xggnu788Q028o zB;64Q^bX39d;7&tmOQ($;H&wd<@w(z`PuZi|o z&)53KeG@CECT6x?D_h@?drJZBm{mkUfs9XH5KpGxg{0V{6tX#Xd>a{}F&W7|5=Ym- z9E&-II>+rVAE%`2uDhyQwmP3Ua=)9;1r5Bpoc4=JEj4%iyyJeYMiaQ;Wg7nm4;Tm$ z`f*F#TU?GPx^7Fmek*j{P*BU=|pZvAQbypXLJm%<|rgsavU|)7|&`0WT z%%KGNx+ePk?tLPwp99!ryxO|EiH@k-Uxz$?Ke$3M4LH?EiAW%Y-g=S~ftpV$+&V^l z(|n>{Ld%_Zl>J9xN0Z5$y34tg=SE zBrpb75_pG!ViX~;g))j(X7XP~EXfcuCj;zq8;x)%Lxw#st6)e#FHCCJbMPnL*85}C zmG9LB9`9XtV#Q1ydLIB>k;xxo@d*~u!4Yp*TcUA3ooS7d}U;XQm*Z?1p5=XQ!8UK z$S;Ycqw~P{w?OUJz&Gsfnd(lwG)v=38abBCVM8$GKd5gVy+r#C@7#FyYv{w!P&|oW zodM`h@vdni5~;{7j0ioTnVl{H8hG0}U->BvI1up%ZcHSqpg}>T8e8K~`C!OmyR}f3 zY=S`sG%50B1#!YTJ!MHhdaY*iZET$W-c(iQ zha6O?)$jCH)Qf1B?_M-IWsB|=V)Gp9e>GPKF>lri_9srRqo?_YwnV_@S|vQmRb#k0 z2ZIoQY`o9!mnD#{|E<~r%HGu=I{b=0Trjv+xruF0C$o_A(cxof+@#M`KkI8zjtDL? zsqw-z&{~->0e-EU+s$gTFZlc_zTnr%w7sWigoBQ;rZ^~F_$--ofionqhySPG@YM@g zQf2jffQICN2g~TYc~+M{%XhekvZUq=XAnt0=#E$t;qbpfpb~S298Wc%^w}rhZf|y4 z@$1Xt)!g-}4PBh1uNNEx?Ao_J zr`&FqyT5$ak15qD1m_&oTSFW()+A}x9<0o6)L@tHwrXRUk4T(MeTJlQv1SOj*MFCg zc{T4gLRMY9cm~A+*37j|S7Oa^ z)W}P`c^-Rq3*VZgX4-~|wZ-Lcu(K5`{a046W0@LV2n zLiM+txp=4|i!=*T|mZ_(9u*!@^I|f08RY9=zy(M=G5a6ukMr`g&h}N1rf`QyzY)@UyI!npQT363)TOk z6|iHfRFA2zKbJwtsjx8tdrX?MycB)&ZBWZ}kN-^Z7MT`b&EZXZ?K_^o?~lR9nUP~# zyO)<>F3~$4v}IQx$<)7Iy4YK`6Lp&MKF5EVF>}EXW5L$0MqbG$<}vy-Xs4#9nYUJZ z%>~~uFW1|m0dySFG$K-+Mvk#YBpxqH{uvLz{6$1WydLY9eBLh=2nYN>0A_3V{$4H_ zdf$5Py5hs^tdpw)fiNlj@h-D0==Tfm!GpSfdyp%U9(EMx*84qWTlL$&=I*!b7a**q zY}@{q|4)-XPoO`xjh5f~3D#n;6i6f9@@Jdr_Ba;@ z!S#viLu~zOWsS7NLN*wtE};${Mdg64Au>wN*NK+h3)!vynk)b^-hUz14>O?InKTOl z$aY)-Jq)44z>=Nly|-J_S@$Wjp<%w%xfk8V1&__De0%gIioS2}NL@36=Bg(l>h!2Y8Kb zepbS#4!9sp?fO@Kzir;hf%zq1EUlrK$NJkR9-?{T)vOL{#^iE$4WgQt9&rh94^{>8pI^$==~UZ$`i6Xb;H|8#_P(rAV~#s9 zp~*no@cz5iWhHNAB`@e@y7~?|D;L0#KEf5v(FbmpoXBN4z1I62wSFLaXPhX8d(WDZBd@^7jFenyqrOD67tCiUPlyyh(@6yFUw$Y{_d zKGyebuqN8ZbK^qjH<*WNC1c4AXn7Cl1OdgYrc43YRj=aFFpd51ZuUUj1$pQB z8GWx-WZC7Kk3)L(^sYc1@n7ryGZ0OdwH`))lW0)aspI4IKIGZ8N|I~_LbsFcoOW9R zZ8r$U1aqzAqV*k^zG!9`d7BR$GTQJQLxr*bPOB#OS{}rTj{ir&sr$baoESgY9ie7wguitq0JHn4 zswGnw%zz@yRW2hu{o%*0y_+f8BepN`Fg1z`F19l#7bZOG*)+tXRZvm;VH4Furi+g? zOWIg3XXYbzC^=xz_w{<;ToWu)mqtD+s*HNE-Xx47x{*P+>DNo>{fT;xzx~4agBS(= z{wWAFen5oZxuW?DnjsjBtWs8roy?5~qpkj69k*fgdCNOklz&G5l$}yw;R+3V1QwE; zn&5pB)!Pz;1fCVKTH}nxe>c`-#U3Y&Z2Dp!4$Y5ZKDGm_z=BpC(vRL<>tF>5MT)Ty zo^3eLzg>e9rZ}{fh%#U!ATb&`tPUdNdhGWG+rC)UXHq50P(%K;lw;e2YB%c{lRtVc zwU8C|l17ah;(#gQqIe1##yVc_V=!^XQ$GeY%aTK7+B85&KU!H6oO#Qc26T87fv;f3 zy~SmLfUm9Y*JW&|QJKzWKX8Rye51Wzx$+5YI_Sw*l5Mv)C`6h5JvX}V!%ay zLL^n^U0v{0;`bHY8G&{A$VnV;qd1VKOv|V%rn)=<)iwH>HIjUu_sCw&c7;pKAgsT! z7#K8-V6?eH#6MI_UV)n2`&WHnvAIda;8Dqpb_SB%Lwk%wW4hQ>?Qm9JIC&q&%fN@o_= zalb|MtoP4!gL5IkcP_ov81Gqr;_RoR?wx` zY?aq-ON1BY*wZ6KO;FzUxY6R_U-P+SH?`@$mss<$D)@AC<)X{o21ihuNbP&S zN3=)u9{Ar>uu;*myTSSeMw@D_q`FwkZM>)NSIk zU4!Tj1{194Rdd6|0%Ge{9T_#tsAIVN7;nws9PfrSFbpXvjw^CRPCTr4Gr_!f<8y)_ zkoiwdv(KIe`%SCL==6@;0MnV~$_Lv~)0fr@Opgu1x7;Z>yioUq_!xaVGz$)PZ36$6 z=2Vc!$6)ThwECf(-3Pg1O@xK{&CaTUP6RzXg87kVA<^>_FHqkS(6{~dXtszC+nAz_2v z!;yL?)9H$d9N|BdG(P%S$c~VN0-dYkrbJ zE)-Ct*}E5A;)u2~AAT-jhA7;Xk?FqJzDv@>ptvh;73D={-E@kXa~vO_=EzKVQvi!f z68!yZ;Mb<(2Xp>idR^Vl?#7t+^zd&2~Ij5QvR!L zQo?20F_Xx~V+rRwAT3C&tU&kFsB=hmHg{XK)3p{)XGz`8ciSBe&n~9Ew3;7$1ojQE6IF+5yoS)hEi@FGQ3}6GWgZsBT8^^#ic1m?}=GE zrM>5lrLR1b2u(Ox;@QTeesOVRuHe^a&db+vf?1qfa@> zu(Urcbb}|O+{*3|Qnprl%d=E(xp(HLeyV z+d%%%;nHK6e1Cd#{Kkj(ih%Po+mg+NRRhZBa`uS;hI~L2!=+fDINdxE%Aag?a2#LO zHRTG+?S$}#f;Q{q9TmyAzXqO%U0>Kpz_l;hX0ybzz6$DEzl4S zN4TYx?f6RJ0->*98rbx0e!fxN5gkPZ8%qyU2+6V^-Wc9Qd@ui99T!#O1>(~V)p!`E zHzG~8T!=y?4fR@2K4$8y{>Y0Hcjyke|3Q||)shh?I^``DHk8bI%X4u4{vMn&%?+d{ z-u|TmR)~kM*`uwG-3`^ZZ(23WzB-@>G4?o_Ly5yJwmu2risWDpyFm7JuiEBIez|e0 zLK#<~WS&ud@mZmI&9(WgtzbWB_qpDd9YL70na*4wygAW#kZ$y(C^hNbES!YiG}z>* zA_1ezoz*hxYrCV-Cu0N6@+XJs&uUc;5TBo)Qe#d^wvNa;9x(lhmM~z@uvYsX(V->` z%dsl1G7TDafn6F7K`?~}|Kbc(<%7EH{Jc8#zV!dOJmIxYBmLBk#(Doi@p@LMbk|&= zvT^dJN5{I);0WQ*&rkycEi^?AyJ*5TWYpEu45SwyfxO7rjdvYad-YIPISrrhEq3AP zK=0OrjKtK43ZfZFi2;WQS(FD{%L9t^m)PSwoI-4r#2YXBRA9vA3g$^6Uz32_)p;kYIw03!ZZf?HuYwu zVr3Bc3^$UtOPXoj^e<2Z_54AJ+(58kx&>@|+|zc%18{k$8FH!BCJHWp{J;WKnHqly zff?7b_n`!FO-)O#bO+2%BIcbneL7$a|oodz4TXG>$O z+)fVE(;i{^==Q7QdXZqtjbRa&u&2NBkxQouh6){853SkyERJG}V0= z@rPbco3Qxbx$C~gF=P1*Z_}7UqQ!%vD@hYn7u~59?4DRU#6)j08rsd6==0dU5<)Kh zv?2Y&vfQafXGnnm{F>GO$hP85TayS*bw`MG=A5u4tO#j8;-zWEt#$f+Yb~e0U_8zx z?=AMP%^Le3a!u&?_ut@};J)pFZS;v%#%Ca+34eMi`B0$Lw?^Ggh4(qZ+`)K!q^iy< zU50%|Fv&7+g+Q}zv8Wx&{vPc(_){mh9$$r!;EuM_{QcqBs8#>sl>VE2Nh?W{(R1>j zOSQC5H50$b7qsBJXX+ax>wFGH5(eVki#qPgh~ZhT5<0f3>doN6fgQu)-IvwYQ}?3l zS*VMuI<#b{-PP6QdzEBt?)$}ok%NlrANR*m?=m;x6tavd1p!}mxH8Hh8WZb~cTKTr z!jLxy_osA?M~*!A-%NUO>zVb`nW$q>d3Iy6SQup!YU8H!oYAMH>mGmdbdkW&X7*UA zG9JmELQ=qW$gNR8Zf7{z|BdPf(&m~==q_WkPd+g+sDB-GoqY<+Kuj$S51%!C=q*36 z<;Z<5htF}~JSPPvvqlKg4bV5^npLL%391Jb%(OGow|7GuHXG>XhQ*WAd)CE5AW zV+F7jD1SD%mEvKJz??Wb*I7_>=w6h-BMW4GqAI^vw_oaSc)zD?_%cpKk+BgeP#z zE-Er>o!RHG$QSw!WAGC-jH)X7GDiNSH(dKVi>SB3%R^|AA$wZ5ieb&j`dDA7VB}BJ z15UVCd-B~78VD5FuQP;r5@Z!MS#7vVSx^8zO(zzs1N*mc^mO892TbtMTY>&*cyK>kh- z-}cYo;~8NsWYb}7IGy#=5Vb5qfWU=G{O)%;m-+Ss@p^E#YG&vOUa&a$VXIfB7S>3P@=pL9I~yzWN4fU|a%!34D6MCb4KIVf2^ zSS47c$jxuFC?gH`sjxClGo8k!^usHM5Q=bbBleVa2ajLoJu5B*pSxe%-Csc6(_OaT zN9Nb5{)ZRkbj;IfIpSN3P1&{856vWLQ@M;9%Hp6Vn{Ez$ozL8!XGV539~s#BlYMt9 zo)3HW?v}bV{m;ql&JUEHV@ z!+pFnt)@9mf9iEvgS?h>IK%EH;-B9>-J#ZYqg57qB6w#&>e8f`kN>i*b4e0IL^sr; z|4wYdSE02DCt$wdvdCU|pBvpi>zAY4XW1#S9CChxqrjMY_r=BP=V9*kwspZ8Mvg)N zV()4grU8U*$_b-btB8DaUKE{YmZ*hbb;Oi4Pr?w-qeQJhetY*vrkgj_OVi-vE%s>y zlOYK2cd=PwP23YNQHN*8>DlYO>lNqCz=U)zGswyFVIM*10N>ZN(Czm6rSoiU9e-&jS{>$mo-2m}?XYMFgE+CI{Y%GW&-IAIZ3uN%IR6H|5J~ zoq1bjVdCx8vr;|SMOFw=6;rHHIPUNpyyUBftYOlD*9FCDn(my5jRuAXSaf;0gsQ3r zy}AZn%Ag%7EK}`GTnL10^bc@xuT$=R?s91ZD>#s{Y9LDIe^Es}^+VzMdPfx4)C>NX zmp5VtG(1|g^DCn5=T%mGB0>5WRxlL)Opd@XXk#pObV`3W5X&1H5qpvB@?QP{I9oV6 zC*;fh#ZhMgSBxl);Cz3DB~zKSsL~Pn*z)pqQt2sUM1j#a{6`O)!IhrFIg;d$L!@s@ zabP@K1Qyp>9-}?WGU-boy`$QU_qVSTdlY2iDtfhzUcsg{p9EM=7UIotFdb~@1b0RV z=_)1(}O8f|kH180GrDx;8sl#{&SeT5l6MJ=iv4#N8}!fx%Qo3QZaKSUp;@<1*S zh)qwr!Obx_z0VvYtdw4+j;Qr^E(yU8o{s;RKef@mkTVQ{enlo@`4q~)Zap7zcKvPc z{!#~0R9@~L9whmm|Ma=9cJ(BY54hGG6;vTF?+#vG1_eiSKNnfB$lE{mBx6C$_^@LM zH@m-X1b?XB(Rx9L=0bzEp7mzzi7(?Zb7chwGnjbqY&wh`dAn%%V)ne%IO%p#-HjI< zyG_TONeTUT8QlId1)t$OI2hmdHbaY>oJ0+D!k|#m|FeDC`wP<}Ph*VzNAw6H3~3`G z32`C<*4=MeCX~427Mu2(!!E(2_3uZUNPY~Vo-!vs`|oQL@8;na8Tq$X+!h*$o}IbL zPDrE%R#qXM+57-5YZqvRd`jWJ4c!CsRg;;Vvrqg26>RdrPL?P|^yO6qB4E|Tb4*7E zQ&r}tVM2sP873)6$lfFmRi7>5lV4rd{wyBJ_ZBfQ)JPgI^`t>f$g!Q!42Rrp%szyb zM#KIAMNq!Jitr_Z++T=bE})j>Or(ggR#3OrAfh{rgbURQWN4S%9cDt~mAbE{w-h7s z!GS0!Mw-KN5|TldVndE39FKGYrO`NtMs{jLlQ&*L1!}kcf4G*2073f&R$ZzHF>Wtnvv1y))Fs4+%=0XW`8i{sKwoew0F{uy(BlzMR=0!N=P9wM{7ZN$ zGOiE#hW6whrF=^~a8&$dE7Jab1BibC3T-EaOKEGR_^<$A2=$(1o-28NQbHi$l z)x!v65V^cZSh7~K{@Lf<=>7#5Xq#UJjui@ zPSB3%tcn)s=hZa$i>SJTwFyj$G7pHTmpzBWZ1EclsWQIeQf9)@bPF$TSw8RWhn;QU zPT)8wP5vgdl_V$zTaYSsZRP^22r->6D;(634;T3LB zKVy&osV}nQf=mRBk8>a10g=hB$d8YW*JhwG74gT9>89@cV#e&M<+JG`BUM%R+kM!K zHdig33NgXow|M$5&3wtw%<(r^^??jSJ)WB4I_TZNm!XZEiy&A!oF+&y_*Wqmhv2JF zrK{WKTi;tQ?FZB_>0@}LKcsZwpmlV_y1YfkMq76aZSV)pLg4Zy93Z7UV2+BD1uM$n zX6vyDuZ^q|4MV6krves7bfZ}bCYGtl7!Cd@5wdy#DlzMEc~x<2AcrH;hhZvvs8y1jvlrU=v0<+}PiaWid{rfF1|5uxRSNZ_;h^1@9-NN5CTeLzRxv*5er z7s}_3;CtvZFlYn-um#<}XO}oVx@#^atM<4k{xV5~4(gKIb^zR~kQo61S&u9XY#6gj zz4VCQAOa-8M<^L7TmoiK}xv+w*yFP6cs(pLnw8fPe1(#G(6tSY< z92}SO-}VyQ1Ee4jh7scdI^|%k7iW@5oN@trux?_-pU#1DwzM z9mZweKxKJ5r|GBe22MbU_?`~pBpoI-B&UGy0 z1Q@|l-0Tl|q{0Nh%hC1)4vldmJ7Ad|5T7(_%~tB0EXyBqTYSK|1)z0lzI>-e7nj2}XfFLby%q$+ezZzo^IJAN+$ zrk%6y@-#LRNL7at8B=sVk_`$pPyO;m;$8|9#(qK}=bVNrT%SuBt3w(XMLKY1$GxZf+D|Amiw!9m0_igICC49z+(F`$ z7n1fR3=ak_FUy`HX|Us3tU~#2P4F#s_V7Ku%=}xGvm(NES9rdjb=&2%{$k73b2Us= z-{KW3Zw}eT997e(ab%B^o3xo?f5g#Z-&=+q6DV8oI2&^u#@Fen66T~!Yp(iwMocJ z7%;#ob+$hQqi^?AJn4DmAF*OfLch70t*z;Q4lQ?cd%Pcq-)~HtoE2^o8^CEddClMm z>6R{sJv(7x9d$oV@#b2oS73zs#|nO83x3@RGKLf1;Q{G(pLUyNdG5mg*5bAB^9oIj zU+LtD-V!DCddcc8ukv-4PUT)UO{_Is9AWkJRL<)WH4!b>=kQ8Sz%>%&v@l`WU>tMbO_OhLQ54h_)9sNWkc_jFlaeJ_MR_`J;8K&zm7wuG z?+bK2WM5V4dtEfX33;;QPQzb+Mkz01ELA+jxh~TRehe5x6KXs!7{cfR?D@r|7|dD>`?ex}EXkN|8!BIZMXQd) zcTB-8-85Ej$wfRK3Q^DH71*v4hr(Y3uiK)i)FRYfpGJz0KJxiU!w|Q%D<{&hSI6nT zc=8bd397v61eg?5XVFvt{*iDxX$|YiFJf)ZM-*^XfH6WJ#`@1Ca?mllu%G|@+}c<` z5c((zPf}8&`OHW@SD%ZE#9w6hZ^ibsiE%U%XL((XunfqgI$c(=1b5y|JGU~f2pA49QGXz7+Gnee^c2$ zzV&wp8Jq0ZU0TlqbWx zO-ibk+*lb*Pd4H3M*|iR!e-z&X$7w zZ>tLQS6{~;ScCV^$APbxSY6MTjKHDcbv2qeeEjBHCT4QPYNGlXItm72#3p}tYQpky zWou*efs5i(dHD#W?4I%b_UyLJeGknk{GNbTHNmg*)rQ<$ISOeEa&S|kv6sR;zRTpp zy1e%?Hn^(_cERtm5?=LmUq~Nn8bw=NjXlM;=Sr64A&&tW#`TW=#9j2t@ z%a*G>Psx=YRw1ukKErb9rJWh_W-*j5i0I98UJ-Ky?^{K*#6UZ*O;$j48u?Rww?B6@ zv++V>narVLQEwi2tw$r)Dl>jGUZsJ1b)oiX} z54_hEWcTKz8!vi4vceY`JOB#RKx8L%{vaai5CcyH#j`H*21WR^aMqqMAb0%XG9KB9 z*TS#!!{8;P4ZEQkJ(LHA`^FbDpP@GI5k(JDbh%O>DNl{hZJuIhgGKM)uD1$I2sW5F zPuER@Ui&^<3vHY=e6A;(h&o`Qu-~(A3=Yz-%PdT{cP?tUECUxnPh$b9@DbL^=4S8G z(tnk6eCY;FjnQqkaDsSLXjne(7NJx0IKkf4f1ly}14>GM<@|(TL1U}sej0Qdsun`k zvKoOr(=pHevBaYY2%hA@g7;U}4=@Tp*D*Rc_8fL+{8n;my4xiqsu0R#dQs!*mI#Ex z8YN=z#{$??5bHgKsI#4~^9w}i;vNbe$&3i$5c#C0AzWuH^I`W>MzfrLje$_{E;J5q zN0i=5kEqz@L!i3{u*Psm0RCH%1w4-jzrQG|&_=7x{B*}94Z5uf-=Dxfc4Pa!J4ane!aaDpDbV=OP!X9Hrh@nth=*r(NYX#J7rws4p2e$)M$} zqb|0&)jxKpKX4TAn-V>07%ThLbr-z_R4hALad@>~{PX%FbG;Z?s|4yZHPYJPBspDK zZKb4&5fc;h+4ng0XcsL}*zM=5$6%V;*!6Tjn%E6@_?2g~7T8wJTrSBJi!`!XMjM~R z2~Uu=V5;k${DA4)d~0QR{P3$>XzoGyhd!4b4Xs~Bz3=}72>t&F5Xc8(C&RvoJnsJ6 z(EMCF*mbPiWAuElz99o#Z4myuj)*GY2E>90Ei)kgU_F>75@$+@#ZOCjCZ7fv(Zt&wRB@8RdV}@EubE6l`vi}f z?)5O;gv}@XY_fGMx**V&RVbFUDhJ`EdnE+(&e5?=*>^w2G+6<_C^OCJ_6I9We1 z3wIXNJ?fm$x)jfZRNYB&${1YM=~TuwXoZPO(?2Mdjp%fk%9n^4#uoNqWq|4ppY-rZ zi>Q7F@2A@hTyX-skKkU^P?T{E`7K>}$s-|>tRsH9iC;>i^#qwWE`Gqn0hUk5 zo;GPlekHSlw%b*<=W2&k{D3^5-ASE;H$@9UBCU)Scm{xekG|d`X{MM7WAC5^KOG+W zi8^8<8=NQ{qOU(T(54T%B$pfgJ?}>6mhezr-CXrF-4efS+HKvGRX-|9eqjRnHcsEK zC%>=hPtNWeyste3ihr+M`Cd z5YQw{Kv9jVCg?O{?rDS8TO~&{R^1!3;Tkq-?P+g)Uhek;vz=_S-PS8P$Q2PjzVpOO za!I)$l47f8w3s5@25m~hfWawvtrK8VO<27@e+Qy6P6;)l_!Ze=%jjBCvm>a25(qN@?lm=IKQVXxHaV|B!28Ku2lV-(> z>FN-w6zmU2Ngn*AmM+A04+_NykN?9A43@}+$HOU8aV(sTVtg-MKleaX2q=v$3|KQ# zGha>PpX;4I4}-{ngC8Wx!5nkP{_{dBHTb=?tmg2u4&YU6`M<8KlUbD4uAtmFj&t6ax+Dtqg`1NMg+cu-ciFw{MfiZUh+;xUb>HhiBC%aR zGZfU$ry)GM&xh(WJ?{37y!EFrIh?1%-Kt?ncu|QZ6K|>)a-K`2;(I;a<*(t7&JVju zGi|J|UH$hvJfI9}|LbA!%KNBYe#-?YdlxTP&M(Yq^*H_}+-hALApVZ9lqJ||-6bx4 z0kctgI(L$#Ik#$Y4EjADS7IH^j*u7ktH#Rg{}aLW+Gd;t$@ePY(io~D#n*zV8p=`A zn^J@@-TqvvXGjK<^+ub4lcQLVDP8Wy!#1fyJZHg6ZEdU$4Gxm~a(&GL(c8}U`B5>W zQQow;5|kDM_(D!*Q6x5pBV)6o@_{`4tlXUn{SV8pDxkqCuwl=?4pqsEJj67tq_1CbX_);|slui`?)x9l)j)IOK z)j&z}Get?q%!iI4bJntY3=K_0#U8Dk%Fp7K20OPb3t5Q{=}QG{+#G7AAd3s6)x_9g zysS^~54edu)rU$F!9)Nk0ns_}OOLtVnrrgHJFy7Lp@ERb6Ag?49FlWJ$?(jcQEy`(x&=>&@xiWcABkEB!Y( z7IS=jLIWTVy}yq`m0B?#;TE$?dm#Hu{#n{%L3gJ(7q>fhH$$eft~;hRECN!^p%awF zG{wD!?VX^Iwu3ap)Lns>msk5wwOe@WWgDTiQBnSK2c#Lon%~YB2uzm(D~J7b_~7RdyVX4syX(WXrtLiy(-VFqW{nHO&3X;ap^n|6xWB;_EJFVyRC> zWzorue^y!ZX{{q2!0nA~N^DBM=^l>Qezf?$bZ)(IGT#4~!U4JsmMCKh`Cqa(vM+M~ zRGdnvSg*j4Efi1VtT))rBdlZ}w31n0yb(fJPf{f6>oKGPy&=!?d|s|m8y`OS1o)&% zB5Tb{3cPD7Z^h#>%$(pphjUGF%ws%yp$Upf;bU$P#3(f7S)sdkMUzNRGguE|D@pP% zdwTzkYIt;fkhnrKB) z{0I>JbJ=)wOP0PZnvAF$vl86Xuq}QjOE|@-<$&aiHai!g>q{EYRtfskTx13K);=s7 zrUa4>_T{X$+|L>`s8+y{5Qw5D5%~YsT=#bIMzQ9(x5s!v*_>olQLC3zXQL-+`-U(T_0fKIJd#i( zM>U7b4FMpypKOIFfJ&jJ>!s5;Loz2_Lz2jMjl9=<$0%*>9&RY4D%_#50>V9>RZ_H_ zMW*fci%~Nw@NafRq&sS}3xO!F(~5kj@bVhAySM8$?RFq*FSjySt^NyHh&?oeFrd*gIDe#x|<$#4BO`JJ@n{px^WfsMU=nDcJk zXbWV!>NTnJdGp-=^v?gdb^U40P)N+rO}b=e?pVPL5*Dx7OZFZa!Q3o$A@O3+skx^V z0*ERm_UEiT%F&gR2agl1D~{_Xw1ID`i@kV`UiC0_ebmp_my95GKr6bmWP0Oli(ueC z6uFTc`15ZTn`9#i=wM_w%;P}BqRHPtXc8d}CBq63?a=HTq_7yP@3iTW!kURUgtHhg z&H=AcJ6+%@o_Pl-m=x-pJGb)Ru@q0~JXWR-;(|)iFy3GYZ5IL={&UB@&wVK~vmpgQ zhk5CvO_>K|uAf+Z$jY~(XUJ?Z6f3Yi^Bx{%)uS|dl(`n6tYZ041!#`^evf{<`3@y~ zEkraB_fry`RZ8$$#ZP#@uT(x(a-r#<8Xmj!mkR8quFY<%RlLAI=3#0nx)(#?9&koM zkPEd%4%}J1l&^x*G^X8;>{=1LPZ~34a6e*28Emn4zDVAuXfq?ui{c?GE1UeH$X6|4 z))AG*gF#i@;V(e!=M$GXqk7Q~;rT02ji9wbSA(3u#?!A1^O)Yn_6rRSDpn7l;t7rr zl3jDw!c3}5qlIAe*fKv3Pg8Get9=N$XEC0uq9vjRHrKvZ4CAi2Q-B5sCmn#sJz;md z{4c}>EldWqUpW&w=2^xR%1-Dq8C-C5WfK`d)uqf@&`w-~Sp*c|LfjrD++rBF=(MSq zQfS&rz#N#`&mb4|60lyz2P8x~w?_Br`U(c5%IeIssGYLDfs*hov*>s`{RT zQi_><$t}x)guKyF1baLO_bNM_4@$N6E33aYOlYXCaapOhI4v%cRq#Yt6fcY^@d`WB+mxX6W@)(fGP|c)0X0 zRJ0*xSP~36^JUa-v4kpD5W@XoHtaTOL;F3m zHx(MTI#};~8r(g@walb!#Fx(n<2E%?U>?tjqFjZkJLy!Iy*VV|52K0YLR5qrRPU3U zy{PKV9zdMfp@YX&ndgxc=-m$WuKMPU$;^3*uzUv#mBG-#XYe$B-ftuG1l*H0B3D8o zkM|DVY^;{}Q3Cw~i0SSd^Zh%uSm^dG#!8y{8Me`+;vz!Qcx*b>K(L@OZ1$bvB_@NOszn^1rlE6I42pA5+>q3 zvcN7lCchSh*v;ix-zf09=@Ksf-gIp4iEzz~_Z3^bc44Q0I=|w~)zJhW>dc4ey(M~0 zzu#>>^!}b{Rn2~Xwnb5PGOhh$kZ~$9*8lkf?%)n{-vWflU!UIy*P2&uH{h3L8(i7w z;0Hc*Yk4BwJ59FBrNnssGMVJ2iV&yfpTRT4J4n;6JYQt!f(|f;9`}j1>-}|U(nyl( z)ti`?{jxOR@5XEPwt6YwL==oj^NuGlCMbxM0fK#4_|h~y3e~VDf86h%&O9%k{Wv__awx(v z9(5i>nsLWI{70C!y zl2VyG9bA?%n+JobAlF!;c+h=@EK&#@&pCxbyzDEBR1gI_KhnlL5w+w#o;?6Ts5&yvI{BAc1PII#-A?WrtTxyKkj94 z&-;cYV*hBV;U1EVW%7);;YIppw;XR-_*u62h-s|EU^bbiM7NpuNr{wQ?)J{5s|ZoY@~m-7b9ZqX#Aww6PBis3b%@cxjr2MZLJvxKbEG z;9-d)^EB;wq0m)%$va+$}U>4zUYxVAC^|L)>7|K$OF!oxC2soXrCLxN+$@Fp>a zALC~AE5C`*#g5#3NJ3U{6-2te_@--G->}$>A<-`cmsF_R{Fl4U)c51zH|XS?c*A;r zOfc+AVjuCeB}lblaM%;VZwY@5jtVKH4Wkb=V^v|D-=f<%0y;9r zZKp;35WaPx{UU7X7itQezcgVoMc6%<6JuELrs|hAX!15Ua9$`KLP8#4|C5ORq=F*Jw+bwaMwJ#$ z&Aq;wm|wlUsg|SHWlvC0qQP6^7`S1~jl!_ulk+6pLL3@~@VfF7->5z)L^XmO^9!Sv zBS4&pPm(9o<4NWT4c-m(8)de@HS4uw^iGJDU3aVn#l+$}8!%D90 zB_bBi$KTg7pa<0pRdXW62se>o&zVf(v4nVj8h?g2Q5#h;Ekg zM=8{l@m%GUJIh9sWFE5bS&a@0r{P50Q`C|Tig4@lZcA-OjV^1Ao$&8`_}O7tS8%YP zDG&uZTp|LVfq)SchJcW&WC?;fzQO+6PYRwh^0p>X*5rB{CqNPLyuu|QNLgIV+62Ji zi>qr;^f}hvq=p$3`%$Zz5WwJ7E3MXLyV!W8_jtZ$q}#?iYriG7TWbm}s+`)by=6FI zZ&-ytKAPM8d9Af~>np7)im)4;5^DL0uOKB{a(!vZH+TQ3V{kd!`xrg21IUgDy-Z{H z_l=dNF-`VWEa4(Iq@^gGfs~3E6{xg-F(+wV>hF+13v`P>-4yQ>q@kK+!rjzn6$;_i zzR}XTtjT;LsJw2p{u4FmYCsqc3IEY;QAls11^xq=-b;xD4F5e6An@{~eHw=!F`EXo zL;g5@b#k;!_)8f%HyIdVR)q)3|6;J`wBH1c*ySMk5d8r=rFs!ft8y2_1T{Z^WMRu5 zaRd7Ln^y&$20;tk((2EJlchbCkr46b@a)g~+s2N%4%er>!Lpm9L)XJ5@|YU^F;?d1 zNTt9#8TB};uBCROCIT$k^1V-D+G<&Iwvuf~08;gu%v}#Wm6J?+Zp*j%5f6qqcr2)B zJU1oGK?ky>MXqgh)TP1VNdzOKc$hba>s&+X$R{}f@d(w~t1Oe4T4un9fwTRSf+!Ty zSYV8OI_}Vsck97C0-p|? z0i6A#PXiJY&$O8e)KIsfV}RUiR9`&tMePI5apV~qg_dJS>ZvofvDRnf*<5^Cjlc$< z1!q}1ZaO_pn{%7ZljpVz*9jwA{*s$cm#9i~h&nZj=o~bAKy>UB57OuyblD9y0ErTQ z3L~6saCGzgK1P&3O-TRKGL+q!?L|wB;5gNQx+K|?@0Fr1r$lC*#h^vjjD18fAJ}?w zfU@*}EA9{dbSqFSUc;;$1?6GI`h5e5q05P#-0h zmVdO48l(nfYM_LJG&^JC`2;m#7}5Q_Bj|7fcAsG1!_DpMjZ&pKzL?k-#|XF_&R4y-q`w0!7>AX5oyz&eAL9-{VA-!Zh|Nrqu-JNR;-bsPOJAaV zJv@ru#vbMQaG#UEr9zR(#9 zs0||Hg~nHgaaO1-#*v=Dw*RiJ`hVBfGv$awT|3iGP?)0zQ`GU>79F~`jQ*b`xS#iA zcTuIKYGx48Hmw8ZuphM28lS(v1kfd$DFlBn?ZWTMMr`cQ6ovL7%n9iWEE38kkCrIu zi4nW!e7QY;<`eh1Msx)V2WP)wCy(OM%^o@@7iDV@f-KF{CUUfh7+4KQQo(;Kqy%c3 zj^u2cntsFO4jpcCnsekrP1(#ABDrd^E-Zb1!b9}MEhZ$SL*BlqM7CiA9joF^oaSKU zOu*X1)M+0ObahdP5j-~Q74Z&CFY&jWq=+>|nb%V($Vp@EI>uh~l76f0W7gcr?Gb^& z4MND^jiw;Bw30t$}etJb0_rZgqS z+>e`1mbAZ@sa_F2ZvL3k!aHILWjA&)-NA+#E9G#eTq-}^GEv$v3e@%r=gp2Fx%J?Y z)VwJUoi}S@44}X{TS{ae5w>ZwY3RQAaW+ku=;0l3c35zYEn(~Z3MTN!ccm&3;tFV$ zd}29@i~pt!$s2zBQf_WNM~vu8T3HS{Wj!go&{(LqTAqJOq%0~`>CLiW4IHn4z?+u-XQ#l?QN{8FMN-nWt_gJ0dfi+| zBO$LT2h2ZIF-x+Mg^O)u!e7mdOh`alO>1imQ2LR3tgAni}zkt&B~;ZIWdyDsySx9Y7pi#q6a- zPS(FX8ql(xT|SOCVF-U%;Qg6wxoBWy1X(C1i!T+335w6kM}>4sQdK*PmhH;U-I(?Rk`eys~q_r(jv$2RGA`yBcr=0#px4i!s-EzW1iOYz6?35I!Z!u&n z#$wFa`pPQhQ-m%0Ge!1!GVnfi^*M|*BwcOsJYEwno5R9_j7AtNpou--Q$Igey$Ka19J(4f zM%28!a#K5&H0Y?VStNp^Zr2(`efJ(UP0tyd6$vR_(}1Pkm28ri@L!sLNCd!=5Q z<)UQVMhj5hMPQBIne{CHY_<~)LMxUV#P>t*&iqC}w~?Ys+5!6Va2wc9Y}^y)Ykzv| zY$KKSY7NpKBp)Q|BW74c4=TD7LpFa!ldRxE#@8yr3ZU@z7E0XYy46uDOsLZSoNg2_ zB*T@Ow7eGH(P#Wyh@dDNF({W_02@?ctwvI>qUh7WaL9mlR1`1}KNJP*Iyw6J1-f=7 zTNhv(-6>i(#@FPXazQ`a7!d`3X1DHqKdY6hL?<93(DnLC4tzaXWZ7E;9X4k;{Vt<_w*%#A zofTMIl4AZSnVD^l@8#(Ai95rY86-{eseNYv1^?spT`-@S2&_G4Q(swQ#AWnYuop*D zp>P(zO_Z4d2y}9b7R^g14uKc$`CAUi2CN^h9;WJgZt+5|jL8z{U1r}UX7r%OACDqW zek}QCDpm=(9HY0>k(D!Z1hnK~r>sQ*JNUGR#6XT&2dZoryR1QG^*7-H@5sv@ZTg!P z&wz`N{_?A5bX0Dh`R!cs}k{4v~#;7oDIy!O%uTIaFMozw~!rP$@Wbz%<&eZoPXw z7`(qRd`fxPI*Ctu;)Ol^vi=N7uA57X`{Z zNZ@JEI7LmSicz}cgwv6_jyr=_vkls%)=@t@{$KQ~7V04VO73Hxd0#n>ZV<_nbJ*Di z$YmNMK;-8>UJ6VW($MY{oaYuU{0^>~L+MLy0H+pA`NmABPwTnfpHOn2V3=4XDl?A9 zN|@rle8Y)JV6<*s0M3vP5Ba2XRQ3y_xd=H7?DZ*es#2w*9d>-8u;a~C2nsX2z);1m zxq!;M;46Km$mUBWx4He{Z$~+k3`f~1DaD8+Y8QOC(s>|N+z#y=jFdJUo~%{1q&SIF z=;U(t4@SAn@Dz&PP{p^y|pu#;Gc!t8DEgq6!&KtpB8`cuEap^_= zk*o8oxmNT}aitK8iMJ`!*=BgIn#%wDC5n!Es$?%0aT{Cu#4{%}!F&yCUK8Fs50>qm zu5`+cEcve>{$IgZ#6~;vO`t3YK)rFEt#`(>sOYfl2?&e#_V2D7>w{_#6~&B0<5t z3Fcxd60)X_W?s~j+zln@H(&t*H*i zTD5Mgj^gz2(kIL0)K9~he?3};HbR|B=-3zborxY{N$$mrDW>qSo4RF2yJe=t8Y?7Q z>ol`Y-a+S(x-!hYd{l;*a@kEaumWY`#g#R!bYiO`oT>H~AVFM4%L8Qu=K3=WQ8mG~-wnh$AhQ)Rh zMh`UkKJn4jF$QZ3<3gzRV%)zWmE~2W>}WDmKMo$8X+E&qd7(!<1eij zOA%<1X9?C(8~2VujcZBnX-Nf&_)nsjjio3YOJg zDAo$Ufr`rDLSzhRHck;h%;*DZhosn7lk`Gq@h&1zv_C`O#4!O*6V@N1sQ4X`++>>p za8fmIx=Fpkw)gs*B(P5}YS()9+#;u5%0&9^ohc7_@P!n#G!b(5s(bH~TWY#stg;U4 zuS9Q+C1&RZcMA0yFK?E*hbofT8BYy$sXC7LP}u^3F?3g%=c$0Ki4Qb1vk@!FpeKUzl?8yawCC9Thy3rl}U z4+~MVp*YYf@`BMcmV~oM0Dq&b6eOdM3z4Y{l)mv`ta|W3(@G&wcEtKz@Vucp!nf0{ zr3Mv;yN-HxMiYQ90n>PdicqYy+Q1KL-w(- zcDpdhHq15+w;}FT6yZnJMJcr3Ly}nxN4wUJm?%N~bqKX%u1Bky<^w|j0(nTuB6K4s z>H(EM4d!p*_X{^|xzi zgI<0mF(61L-D!koc$Y7*9<}srMw6r}{XBSzs;FR9qQh}H#s_U0y@3Ea7K0!+7Z4xJ zE5!y59A}zRwLS~*)%D-rqB~jqg3#Z!!mOAB*WmA_<6oJK#^SEJbwxG~yWE05p%@Gp z9mt7rH&;`-_JOsN&KpL&*J};_aTuScR>MpsIztt(Yrz6`i$(XH8v5H3QKD#aIvAtq z$yi2WV&JU^Oc$@mveQ<>t*!Ej=?Z-~OWUbSf%#9zZ|+6^f_1Mgwd5DcHe9Dz%5O*+ zI*9{91eIOO0e}B#56u759u7t(_g~d0WiX&kYB-4Dag62p93s6@gG9Nx2m=3^y?;MF%7ja3<(62RO{7i|c-%xUT%vSdM2-Vd zxQ&UInDck@uD)Jm|29urO3cd_lHsp;@Hej`C???Ulf!7TOUXuHKR6M%T55OmuSNfW zF`|KzC%*f_029#Mq$oPPC*P%#r|}7>#ZKpS_Q7n+ykJ{N=aLD3H>7$0UY+g9=c}hy z6f#jZH~CW=iv8zh5hD}Vof~)fq|ooe2tolyp28BjLd(AejAS2t4LcUa??OY_IfwaZnmhO-%XaB+I`ZfsIE~sKbXAS4<`g7sS45>~n;DWw3*hj1ECv`g=WqsUrll zm#0>$5qjwnH2g8NFNDt>#D&cS%m~MoJ8BNn!)6hH{<u775grFy3^i+~&Zf2kj zF|i7ZII6T*4klHBujG0 zc}ij`29C#;2aIj7IG4LxQ8BsA7kJ5@OoAfu^qvSf-E%WFo!67*_6R& zhvv#nf!3j0XHfQ_i<^VW0iFRzSZtnWg1j2lD#`O3pWed$R)9Y3<3f#?S zF0Uf`Mjy5&i-~slkvBXgmStcpemV=6M$k3dPRuvd5YEcN0`Mt*oe~4=MwJ1=Xc7mD zF?Irh)>PAW-JH+Fq~xR~4ef9y8zz4LBsN$hzVzgsJP;d!GZ3%(Iy#E-8yuR>|J}jE z;~Q|X>a#flYFx)L=klL{i3vWy`0?rJ$`6YHk`1VNA?f_~+d%luM17Pyd%fh7f?By2n8eEW6qUH+-iN}DUrx!)@UfMb{nW^V^$h;`K^;3&}n=rUIl zz-2tBLxw++B$!}IpdMN42|vl;#2{PNbLr?YD9J$jbluS&wuHF9gpzo-{j`AO1NUZFC zTnWeHRZJHeI0Yx2`%MX%NX1g)-9WhUK(aB79U>`i9jj&Vu#$?a1AI{aJ;+ z%bAM!TvzMY6=~e@4q@Qw<%3JFC(zYN`0{mV3HxnTIyLmiS(?-W>7doH)GYBea-DG9 zf;c#a{3cL!f*AQ8W$oc{@@{;qCX6!pvEg_S_P(tVG3BRCu^^Mb2&Xn{6_5vg#9mVK zR0`xZlte=R3}(>C6TF|DAS6xlO9%`UuzR0Ey6{!_LiV_20jaL&_y?C2ThJfpv@+MV zSxg>y8Y&(Nf%l+No4WcuT^LtQ%fetw0Cwy4vq5i&tSTutOz?X_asxFiS0tk)z)vBX z8|WO1s$@TF5rhek@1qtbXogcE!FURYl6gYIwJx!EJa-N&wTsmVuBafg(8JNs$Oc%2 zgZIy^hFz<|jTe)zOQtIVErHtStG#uWs+T8+oWFN;FRFi&R*d~2qiVvBqETOUXfLT= zxgip~GbRTYqX&sTJaRuWA|i;mLznfZMdXk>Vs4g~&f2RJix*12*;@D&Vk+SvFdPrr zED_}#Yi4grIHNwA1>?MufOsI;JF1Kxo?;zy{4VZx7ux_7)TB1~W50$lklm0nCeK!$J2-lV16nmE?MkyJ%ths{e`K3;!>Urd3VjN+9!Xc8n>M7(~4^ zjnd@?BEo>o1WVI?7L6q=X2NY0!!5(X#yhQoCS<$QBKb%U7rYx|T%;)~t-r&6r+_yG z=aV>1D}kLyk*m|jkV~cGRR8iKsx*-B$ZYuVXRW`#|D(d;j*wY73%oCE3Plxoabih{ z&%oIo%|D&SZod$^%g8sGbNSMK-pmnWK3FuP@hd&$KIfqgZi@x(oeBKcH9U0>xr~(i z^kB()Oa@mj%ju1}Pa3uzlp@3CStw^rU2zPElzAI9jQkFJ(2+Mfp2&eeQ&~z3o+qkh zpnp3Dnzlmt>sUhabB6K=e?(`iAk=kOfg1s*+RGPzBzSr* zJ_>#>Ttmp(g&-Lf`5oM%Aj8_?g>G#}+^`4L*6_zz$qdE55NLY*g%dG?6pPRg#^Yt^ zl-$(ewBRK0haI+TDQgYpq^oyHq50llTRbc*TuzZ8*>OKOE%bx|6BC$`Y;E7P^DVC1Ewnmk?;h}+1%dU57+3uzRTz|IHk_nywe&<7W%cP~ zQHxnP1K97GUC>$!c^`<8&voTn#6ppg{Sw(fOfWU!#k#!BNCo*|nL==gXWlC6-5&p}M@lE8C3? z4Qg|E_$erWKHf2@)5wY+DJTHryI|U^4~?o-A~jkuq4160@_^UB17zeKfR*aPe#4vN z?Vg67%Q-4$a$Z}(Dja5z^Ss-6MPN7-lvRqn{xa|0;pye|dgpfmL?6Zp{<4Eh@NLSR zWYmrp13Vq-kb(ap0z>FKuP!<@hXww6_A;l2otWvrm{X)kqIh%Dsk!VR>t3Yb+M*{~=ksW% zRwHChR8(|H<n<8S8q*0JH6FORZwg}YH~dKY7Gzsx*NUAWQYYjwt!nj?>H z$Y?XOzap8JrESPKF*}(hmveOs$qIEs-Sy{4nIaHj==@{~1E|%=f@ouSf3+3cq<~v^ z16OQ%Q-d%Js&5f)@W%i<+t(@QGyg{w+!WG)u7D&@ltpIrB3C6Lb*M&xgJvnlMmqyY z7|d8sg3$}jQ|X5~5B(v1 z%szQRtzS03f&P|XZqm_Q`$BQi+SQr)SW@jI(#Y$dR7D9hqlr3ZdeI!{P^?$B;NMt5 z=Y=H9S_0aX6a)scuz5L4uTyUgh`d^i!(?6hxZXyitVSEbRQ?S9;jKcn0Z-VIEa$}p z(n#`*+M|UVc3)gZFKouSCZMWFxDQIvcBZnqw531uW4*bjKI}X1wStj(keppz{kt}Z z;P!cR46!29@)$E19i4_>clH7C{Vr>NpzJA|5=)|@QesCv4Moqnr@Cm7c`QL%&=~w^ z6?UvzqPU|N7f`A~$jjR@jR@e`xX6MTjJ5cSf50CDPIANhS)NptB8s5CiWtuH2{ka1 zxA1Z?Hl;Sw_B3Kjiu3SAR&{G9`@VdSjWvmPE6Q~pD=@<4m42a70k%$izSQ?Q83bIv zu8~{R5p@Bw0@3&Hc1B!4?^`s<;-5cK6QXWz7K?v=Y@VE;+BOcXb+di9BMs^zj2Ue5 zzQc?9!FhXk=XiGu2?%s;B&SihmZwCWFf{F;MCe1@p<@no?0T6sgdL&Q`d43vWipzeQA=80slx)BaQD z{Ql<+jHNqlipr?8QZ9{0CJ2ffA)2B9q2&Wyk zvJnn7)^qr;Vi@6u;ISUY1$zrH8%vkOYi2g=ypvYSU5t(`b1f-<&ynk`G+!gbB26OB zBc-I5qbN{iI^oH)4hZOC1RH%mWu7!lvW+GV{60oWr@j)HWKQK5bk{njnl@S>k~2xC zokdHQtuVObOG4*|jLXqQ04p5Q4s%`d7JMDz-G4?6DFV^pG~j< zbX@^Fa}Fj3LRER902u*|{SjZs)dCFXC)+XQRekVK=;2+^6J-6o?Vju!I7@k)t^N=vTM!RhXe~g?cgSOPJ9_tbIILTf*vqq%F#$MhEYPJ!M zwCx--jnJg`RUDQrhOxgTRoZj$R`1}w!IFr$xah1=a5=GaaNC(?Bk;(kq##)~=Q2t# z?eGTT=M;|gaUj}QEQiNs2`rbLE}^EtYAMGonMIve*cNLT`TJwkRRC%G;OSz?bxRs5 zAn{7A-s7R4Z#N*YxcXiuB*UBZ?9_xW4a9JYx65hjZchN)W5R`SgbaA4sZnxP%MBhO z%0*VoybTSF(>$ht-*s|wx{0T<_=7CCdr@4Z>$MvS$QOBt478s6L6t3}q^kT(wH=>w zrG@d$WLlBX1TgJiAfpcrWJNjsaa@9NR}eB__1mbW6WH7-=0F6hz(=qhu_>aQ6K)g+l&<1jNJT( zoqX5PR2~IwN4D5!nN^oK8ZH=Ow`+`JqqN7KBUFQ2d(xxk@d@MeZS{we>2As7;7a|u zz1sX1>hz@ZBMxO9JWhU`SnQ*sZYv&W%Ym?W{!!;|8*&1kx8(uB)`?8C85vp0LX}8I z6^dgf$E^wu?^0k09P>#6bp0;`gK3QpIEA)lNR_|u@BY-QF^!1;UFz>%X=c;xlVFL! zf4W)fHhthGalj=SFum+Ke{JKpK3j*MFp2pZH$jz_*eRv=*bc2%rx1HLjEe*F>i&w) zY1oq6^)-j?=m5#&Cbm&hl1sx}!iOU$)vAURq;bd`sS#PM->bP6u3=t4om7k=;E#4l zWRV@;ez3F%7ylU=rF9>&j4dfP7VW3ZNNpMP=qwldtpk}uqf~7nX*L$mh!KRzq2QSD zUWK88kW=DQjw#r9wcbkGIwL!C`^qV_)&1Pa-<|+is`8x>XmNxY>q?-HsmYj>lz;a6 z1n06FD#f#Dk@_S|8(>N`2I4ZS!NxjLk8UZEj{TT&*5e%>QP|+Yz@gA0BH>KYl%c#= zSO5y-sR|ZJeF89LDF;sQ`vzPg1lo_)3cHQ9okv492t?QK94Z$GTr)p21costy2E`a zhW;KF(Og{c+mBGMBqdDO@zZ>6K$=FOz!CG%SEdo3WC&C^3}$=fWamdvFVt@aGIRDZ z+J{3A9$8`>hQh7yYk1Y7ncq1xze|S4mX?B=#ey|1n|>(${185UC$W5+$M6FX9s;p* z6?g^q<1=EBwl5LA6G|@Kmm7vMI7?-loSzyP>X|V6;5zI%E9n+jS9#5kT280jMP>7` z&eqz4z1`0#3Xu~L%iKcezC=6D0QnLNf<vY(=)#Jz4%(CJ{3EH!a zQPH~}(%*k?Np#$f>dp!8nUOYVA2pvE$nSoUv6Ts@MsvPb{r15@Cc7fN8;al?i?13x zwxS!+%wF}0>22c)1ZjAF7C0eA`c?mnqBb+lLOZ3#e)Vd7*jl#1Lph|nI|YRrl?<~EY1U$LyW>(;(hOnTi;uob z^1i!3>Aa5|H|c0=*JZs6pGi25t@%vc_V)U8e|Faqe0krmzv8SSwLimN-=){X)m35b z06H=f(J2bPFsXco5@M!#QVTb?Z?UVB*%U){$ZZT`G&OoI;L%BuIMu`Zyz z=WSkbZ8@q1*__$Q@u?&dQ(f_-q}npunaNa`Xles>TaV5oWEj#&&yA!$8wJyL;YV4n+rZy%+vuwT0BAh zeRaj*rX`HLx=?sWRZza+`$%atjpQ3ltqXm_PJ9tGgfz# zJ&5MzH$kZCZw)fmnPAQ^PfZm|LJIz#_v@~anYQw|CRHTRC)?lgVlz5VGH4B3$)hT~ zgcDpQ5f1e)%B<)PC`Fh7m_&L*6y2lRYkFmFsuw}u`RKLjQtd`N=y>0l4 zc;BJ|N(BIz8hGudbXtEB%z@=UF1tw0;-nZRa5Asj;aNm!CpSj|x1s)JDXte&Z>h!b zb!&FMJ3|r8PP?2~w%>mV_Vu}*9`y0^BPWuS-9o7Vc78hG?ub6!EoY!G(2EQAA|a#Y zA|tSaz{t!x?5gI~qmaCJN>1=0b{;AeCe6zoCwDM4O77^%4nnKeCSsI9j1a9`>P^Lv zNDBb%%?GT+{cl01j4hmLgJyW`&@LX`EqnBtET)PgVU*MMlVUf$5eN_1|R$MzL}9XI&zuC3M$ zd$bKbco8kpCmQ;Rp>S+GsyGvFW=_{-+6Ib-g$@mo(PRL3)&Xi#y{00&b%m9t+z=i8D zWd!l^H{OuwMlaziD|cy{8QqV*Axd+{=l1SuKFcd*DJ+0r`r)4C(puYM%8bP;ufJ^h z3v!Iio46Axji=OQo-?A4`iPf7KxED`oIQJTOREW~L1JVtlPRmTzV?l|`4XOaN_2~H ztG;0B0fZDEa~IWtql>mED}5~% z?98V&;ehh1LWumU1P8rCa?KH)RR4D1bTA`-3|tw~ zu%_*z?!X%jtJzzGTL&!dvL+B&gO1t)C1y|d6k3zk`kiAy<@G(1imD2yAsgU@UdVcp z0YnMe^_%;hO?u!%&Ep!)zvcnMZ%1kj812*BgZDe#^i54|(sNosJ}29MpRAy?XYlTP zdrtI-H-R!)arX5Em8n%-xp^sq)z^Gh7iDxW~}U zb1zDeZ)#p8$7+X7G4r>z->*xS9^OICqv03YxeC@1@w{d!n1ndN<~m* zCbdJMwwlX`N(xk0T=5Pk#eSNH4?RAC_pUu5_)=i(AWxVADix_3{C83Lxcz$%Jy0_{ z!Kl{|5H^7whTNoHr1|S8#G9uI<#z0yilOTh+qwX4*KdOQ< zyp;N%TS$epu+(VPz#;wtQ@_#n2vY7}?>c5*y4^dS8%`dZ4bT71Dgq45`wJ}D@q>Px z61Cxru}x99E=M!;nL64W#tjLODAbpBR(6RJcQ`2YH*$*&48t@T-H>nwSQ2)I_EoP> z1$^yr`~ixRAkK9VCLB^dy53($idW&|Ix|^=hMKZp-F$a2iZaqL!GGY;zZIAydjfFA z)}GP5botv1H}{Rhig`2Nr~oUOTHVUAa94HpsIm4Jw0$geQydm^HJQ41>F=a|r5fgj zLOW@TBVx#oTC(86f)PO)w5iXmpD(aHKUq)Aiz7>QoC)rpi`^NW=8!6kvkQIZgfmj&3+spTm>QhmYJP9o@}C9Mi({ zTksof{uYvF6g@uiPQ@169=mpIwQ%-_QmM$k#LBX>cgAG&X$)!S^zg+i9o265{oN+n@`w2ho|f`jKER&{7@>e@B=-rg3*2{k&0 z3{Y*G+E}!Io}Qjj{3K3ENzrK}8`x%a@(-{3>wGeCSKZnew(AsbN&gc--E{*zm0P#F z>bmx@Q2>L?258^ZQE32XBrqXC6G-n60Gkpq{h2pHA66%HN_0d;lUA|4l@ zs*Xpd@88jaizFAchORz=AoZ>DCrk3Qb=meRg|LCNSdXZ>kxh1)hx;OglA_VRAy z=;)~=l*pCa>mE?qee2Jc4TqXLa~H}&>*MwOagy4_N9QU^Y&1%R zNl3GeA;ZImBuD{eG#oPVEp6|)r|$)g42%&eosVu}+Z>6XRfYB+_Tc|E{+Hrz|DS2( zc~(tbOZai-TseRs2MhKy!FC0-G-ay#3No_>6hoh0daG6<(`ew&oc@HgZe4Yd+OJl( z86E%CnI40Bs}jX_a)O^dH(u=n{k#A2rsN&Z&f>z4-5CBJPYHMaE*xKeST5w6Dj)%j zFmRH=&NCILgysqx556QadrC!)aO|+CkS53$cf&Nb>tcik!JX+^c*xCoLlIImBfbJq;d<?eS(k+%FVegdehuR1nh1@SZqn( zGFO`-DS;~<^Q%6h-D{X#9CAGlR@#HR*V-4* zYC6>Kh44nT3s{%$&{KoZv@5EF(2GM(+tpQ^tV*77V4c{Kje~T&ikp0c122oaJ@l6i z)KDMH%`ru`o2%|5Fy0T2V2x)(2a1xnvU;lNJxAV0bCmUCKj21PhV){490`a-4vr zORQ9SF{LwGi{QX!ptwB@3)W64aO^>09B!-q>U}_tdkdZJp1pn*9)?S!cSkyaU7pob zTdKs-|3e8g%t9ba(RvnR+*kLAKDUz&zfKTS$Vv~_BS{M?%|t+{_Vsva!@FoIMXRQ# z;oNEBLx$Q(gKGn z5xD}860&@|FP>pNe1vE0s=W_$#~cX4PHNYm#(0iJ{?MVLt`XZEyX>|eCyKxPeEU^3 zZH;R&0D!y29)jOJU%0=HpTC?L`glE`#7cZlZC>L~?wCAyQt2lU6t9)~d~iw_>+I}s z3lVMPHq!(-$S~$u>zR{MBhGu=vv4?M&ZtI`L#lAYvr}F=bashomS!R|q^Rs`NO+ZklCdXk(35Yv zwWq(}86ryMbeI}|r~(}AIaGj9f8K^#;dvqXRIP+$BgdI1$)SmLdPxH%#h zCKkCEn2-x=**_+z?e&ask!!g%wkjwHT5cZ#=P)3rf}LB8c=Q-bOY00GUK;GijR=Eg zJPqUF?8-Suk{Ii=0Kc*g5U*!sB_5#}ioFL67Zu)_=x2{r=A(-x$D-PXx>iW*1*}`NjVu>Kudf zYTI!A#A;(Fjcqr!Z95Gb+cq29wj0}Q(Ac&ctJ$mXxA*LsOnzo2ncUA>_jMiTak9__ z6<=sUP&s0xz<(xjan8blgOXHh0x{fx8NBrGQMFU$FxJ>cOi^GO=d$k6xx z2%cIcZ_+=thlVFw%bmbKd4h)vY>B=Q=?|*F-j&2UVl@u|c?Y7-ZsNwJS;vl@UtYEQ zX*OGG*l|xM2I1brN=s`Pz3!w_>C#71|FX}GpJn?zT*$nbiltedB8g#S-W*g?qZIHD zUhHa&`JQ9sXNLsLpv$F!G)|p1ojr38r1`d?A0d!@n#2LVNrb_q$xAG+Y|y4}fdOE2 zny&2i`BVBg^R1ED9Td>8JIgRohCCCEJK5Y~|N0!SGzt3uFRog9qs^$5B9LO@)v2XNe*7igM1&LIxVft(pR#;|3 z=OS!q+gy<&Wd^o-RqlTAZ|6_C&VY28_|YbB-JDKezdNBhL&)!W*Pr+2?)fzkc^s{0pm-cVw%_U4ff-F$+yer$jMHi(`9eCvF5BsY~;p0cqBI0Um2=v?wNa^ z@#B7`Lkc6XV&=qW=`68fmM3tW1dH|>RkpUj5`SOmk{!9E-pXIM3#vn6?KZd^qoQ># zu?wlXN;RtpX*G8yM+g!l=T~60|Jr6C%@^L+HVEWoY^wPR7YU}SNbHiQl2G~44zqWR zd`j3Oa%;h1al}pt<$&P|%Zn=E&xZ9a&P~|?b%mI2xHIiU(2fSrGZjC{?%;Z58dt`G zPR*+3M2Mn1*u)^7ui(?H*(=ppL)^s!+kTL~oh(NdBbffG7}|(7UB${Qn-NNvf{-Y0 z9brhJ)n!NpMID7G1`VP?B=Ex1%)sM7zm5ILo@$)*lZLBQi*2u|YiaxpzH_$^33!A1 zjy64j9Q;}9y)F~x-kVApB^Bel>TQyAI@%e;_ zT+0}DEKWb16{%}AJq=9ZXEKsTU40)GIrlE~D!F2J2>O&+I6LR6@*KGn90*2rP} z!o^ylYQm8n5I!R>jvXVhoMDTF;Id}Ioo?*iqFJS48Rvv_={aep;vdVDF01(U^TUJd z?EGi-N<=x8y~~X?B9O}*k-7MqD|ReptIHWCMWN&L%U>g~`!ltu_6moq1+UiI@h|h` z!WF2C7r1JAJ5w7S7Q>`f>a@VVcpJb<^_BwqT3ucdZ8zG1k~qBuptRBu^iP8XD34Z7 za9kf;?T;2Oe)rrfFE-9?;M+<*9xyqK-$JgrQGa*TP(x2)Ev}26-kE_HRE#a4#XD{q zZvj?}SkU*C2L)cQzgia67OtnJFzKYW^L$QHFTFg6Bf}tN%-l8%oKmg{rM7#y$}*D0 zgPGKmGsm9|f|DCu6RwGa)r)F4EAmLiDVk@9riKa()JQUuo=BMUk~~I*w~T|`zKe3} zET&vC|BE&_R{s}n_)Q*|ny)BhEXN2F7)qoBqGdK~A05^}65=tX)3E^FDazRsg(S&$ zki!PX5NW#P<)FaR*c+)J(bppcty9oKcEQ(SfB&6nullG|7Ebj704z7#ts&rZMc?Po zcH+jB-(v@BMa91tHZ?UsU^nc}>p8`GQHl;8=U8H#u9|8*7d-%Luy3a>z=mZQ_|wkz zXmXU|ZIH`Br{epi8kvS+5QvG$VBZ?OX&M}(DX5r$VT`83Pk)u#i*N%wCGgatu60x9?zb6;=KS!LZKZ(@3C{0E&y38M%$9Pe0b>GUe*~ z_{|dN_9%4CG$Jh&iw+|}Gpr_7+(T1~h*PO~fjGX(&PD5MEkK2>KR{Juo}Tm@hkUl8YlG~y7|Ks!J$676l@$fvUfJHy2rSXK`*iHOOgmRx=nrqX(%OP6R#@h{ z{FRD}id?ybmr6nNmFl|LR;BeFN+v`)NnL^c8NTs<+&*v#&E^+AJ}X|IN2c z|2N-`coIIKuIHzWIYJN&7hN_%WDFp3vy2!5EBHn$5(hx7kwfF{(8X$3CTv3BvS$1Jk_3D10v#v~ZG3b}Rax z3uV?Oj7%gA6%J0WpW%Pv95`k{viU`yu^u)q9!piooO!6|{Hq~pN(_S3y#f_*cQY%LxQ)0n^PsvDxpqrI4RP8Og|WZUf$f z2}Q|;xN`$qjr2_zKx*g}G94RmSI-bJt`0wJqAQT)t(_#)n`(Bk+w&Unhw0x+BUfQb z^6$h}!je->0!2d28W^TArWv4*qSe+404^Ko_8>>hviygh-rfSyR9XQ4{D&Q}6*WN>O~g5PygFpKIb8uOC*=Dm{N_?f7}Pp56GL_ji6hZut>v*g4Hwal!Zy zAD|0#?XH-#naZMs^*`n#3QVui#&w`YIZ7_oejI%cnTrMcS|oYgK854GdFMUWZL-1- z7OMF?@b@F|=hpuh7IwF4&4lPd$-xHp@aI6`#=!^tX@@t83nEH=lK%!xg8~~Lw~T~c zIR{w=o-prNu$cVE59#>6qehJrX?sNQyEEc1Ns8WxN^gc$OEd9YulWcjoS2)Z6H@P6 zoh|LFiz~j0v%{jELw2jS>Ct!OZM{O+h(@c{;wvZvP9kH9Z@;mdXfHIqaA@u;4t^VA zNi3iBPK7AduU8t{-ZwxH2KVd;t35C49XItrMvx98Ck?e~VC)YbB8#>C4jpx)c@k|g zLPNdy3?=zS-GgL(1Z{SQb6+we`pq|H5n~f~Mv1Jjw={&I{YM}PEo_NA3|_GxHo82C zDK!~Odj-36U(^O)^*Ei9U@`3FfG1NdSaEJ3I!+LnA5>6#<#i#@Jm-tBU-SG6!{A|!M6x9? z5Z*KN!&3!&6!3_C1%|l_A1eZ3z@1^>>V4{J_jnujtL^6CocXl9rz6QZAt?ONnWRlv zxjLYV0B-XG7CS!s2mlgX*3v`NUymcD^HZl{5J$|Cgc|z;9{n0x7c7>8SlDKml)GLx({^asFE_Eo*j>KQ zr5|@12Io*9QRlnU%E#`f)ympSeSKZUt$Y3)A*>|I@f-!Z97tW=)rkybZWJv7B+#*x z2WN8@=)s@9nY%;d7BN>^L59<0`FXzMPU!oC23^McgpvwjKwu1_$+V-(NT`rIGR4BF zSm(Oa8V%W&PBi;UG?+Y7Vr6Bgj!nN|2z@0fx1OMXF*5!tc+?_S>Id3)$Nk5@Yp2}ghk8QNROW2J&LWkFDnk|t3WT?}xRVs#0#Y!FJE7YUU=clE< z<${1HEIcE(2BvWF?guxvhH93UWS^l3`gJ-^ zH2kh@=i#~lq={T`ha@kaKS>F3EKRGcC2nf+b5suD-?l%7gPP>?B-gASF}6M!4AB$X z$%3*W`Te1_G!SbDF154o;Kmo-#`!HyVh^cBor(TMM(WD3f0*m3V3fs$Lqy@unrUtK zDlt}5W}1ggy}N8@YrNRX!D8S5fCA8p5P`omj{t%NVD?>ORnNKw266mC0L;r(DP_-a z)F}ae(iF^-Yj5`rKQ$HW!1w-y>!n+Q1PFPPrv(7{2wh#>ZR74i<9cDU?YBSR(>dAO zySw;m*>#!>y@Q-RoFkTP{Q%B=x`29QZr;k-0di_1xZEim0iN$7Tc*4`9-&{K<>p;% zq>K7HLi|`Ea97t8kJ#_a9~Tr(t5F_s_>BBWo)S-Ll!Y-`9;{MsEbapBKy6puH#=d3 zf4BIbZep*RFJ8LL=E*Kdk*CO25V?96n2VC69VI}xr$zeUlQnEV`4$$DS6*gs5^0*8 zL$Cz~I0Vfw+d|{KTEZdZS)(2a8HV!3vct^%J;#qRn*O^+z5jQO3ZwFcPa6_Jf)tG^ zhMylpM2|z*EFm|Ci4zl?Aeu6iQdad38!Y}l$*vntL9$OPWulsgJ7^N2HVxT8RF_=( zPNp%DGwvZaOm2TU>-L51dEU6GA1@5%so3BJ?f&Mb5pViO?uDA#{V}(ybp|w{?-Q}_ z^*dqGnS;I|_Q z45sRz(8$3~HWGWnpO?qiCH5jZl2aeq|0-90+U@2O_g@z!6?S$X>1~?51+une;mPo0BO@TPl}u3?QrBKkg#s43 zChOo(lecG<<;zG?1yWhf2bSoG%%`Jr<%TK(u9qTT&iUZuwYs9s3paw@ozPTGQ~JGTcd-F z(%fQZk%0?o$bw_SlAZV6^8D&DnXHm%vP4B!U)PWy$WFK}Z)}Y?TOoj$z5|HRs*p4s z@EGiM<`y>t^bA85^V>iisoAE!t0U^Y%Lh5tn2>LA;w#BW$dpvUh&ZC2t~-^YycI*?w;5f`K})w(|EV06|2OiRDSeA>7@x@) zAQ0emM`pm*Uf&3v(3Pieq-FKDx#N~p90iVx7ve)g|ux`wV34qbRVCJ1P0cE0}=ix{3 zLw4Bg-_+YxT;s@$t>PT#rT?x|e?|-coL>KBo`$WFqB#J*twQPR{7J8Z5viBE2#2+5 z1X~mswwkGo1O0;4V-_xYf@C~Ab)=hSFS}M)*HoMs)gSv41f*Qk2WFw?A)}x$5GVFG zoDt9`tA_jjzUU79<=T?)FKkHGo(M_&iKYQ5V-W4k&)Ja zQ^qn%jFYuxLul~K9F;|h$fI_Wh6KO|hdF;`;bd5yIcjCr;r2728pd{`GvGal54ck# z$*zxqnjfEOW=C;|;&dMgCz`3ZibVy@fZK`QQbhdLnS^^5tl+p|q;P|_mro8p8;qNs znf;|;MEk|c6dE#LnX>l1o=#^5Y{?yN_r)eInG@a`4R4-8nR!SM*AGF-wbZ7{agj9wXTEY&;S+i%boTH#-^NQEoFvO{MsG8mhFyt&s`&D zn_FO47vFlT1BBihAQJ-85=s-v?`tVRZ-@_>2ECtB_MLNTN!QZx5sAGh>0;`75<-oT zrsB_lb7gSsVYZ$7mgx5M_v%)t?cX#*6;C)r&wkTbfjD zkcyFZv0m`Fez1b4JVs8E_>i4^#ZODoP`y!k8V75GaL){~uxxoYK*m9s!+eVD`OBo$c1=erKZ4-<T zZ7Qx-UR=AMK}C*$&5|1mCLmE+dxUN1M&9BZ&V(p#ybitRH^jy0w6#^(&XU*Xsg_vv z8J0f%P1k-X9^w-z=vCpqOmO+@xMm1hgM>g21ZQsL?_t!x)YFPPGG~N_#KbI3;`nE| zh*F^%yKl+1M!%N-?$^9m$!es@3gfak<_eYfPdy<1whc-0Z$6uG`%=-~4=9a*VL|WE ziypb~(xW8EwYjCfrP0cE#%8TR8t7~6NRy`k1`CNRkaBZ*7oLh{vZXr9E2~gy#eV-} zs#`|QO(920MbYvD(ev_{sKgzoe#rjA%3WJx>YmPDQU99PwPkgVI6LldA63o zj@w@-ZTblNtI4|8J%PU8Eju!*dL{ee?L@D0h$8e)(+$!~7im8=vcy{q)>L+~+rILw zZOjIexi6*&sNKiUkuXE-<9n2`z^MXRoSyzQZhQGvQL(wQy4jvu)(SC-B#@KT<*dLy zWCbpCDQ_+}j>`+-BsB>Q=2w1DlC2c^00vkI?m&9&2A16U#DEV z9Dcs;_th>9q>uU9H=U8FgFmb%9NDthIz6{MPqiP<0weA$Z47Nu76bd>t*u=pvJ}{; zeXsPvX385K1gEpwhy5M2G=bYi&JD2>YVxMq?3s;HmD>SqL`_QeLTp0W(0L*8a$bgLsZ_VBXV>hln~36}rOituDCckR^x1bcawjYzp5J zJ~fLXbhn>mfM~a+9HMo+FxFs^CWvAXXS#9jMRd*$ksW@G^OD|;xKmKEb)rmI5%r}& zj3!kXFhB6cNr#A{M z(x@R){*(MSX_nTE>Vh(w5)A;B!3=r%_=g)4&4HxsRe=qU_w`QL)7$y&^48YKUf93e zH)27wDmhN&mWZuaiEGL(uacs40vK}FI7{)khlKCpd1QTp3twScTLLr7Nwzn53QePY zdr-%eTm|jjM6<`+-PoDl((Xcso06Sfs;lGCD?|Rbb42>&Bg{`YcYTcFiBhZDC(E7f4%Nr5Q&u1ZTp_5vL;gzEH5^j zq?%8%=m#E$Mnkiy9o0OTprO`p!3$2Df5i&C{WZ5V+x%^>VP}kfHV(M=gaS8WNzW^{ z+Rsv2_?MZG5$2|WFA{zY9x~Rifjnn5Yosnoq)v-$8N0N``)&>+38%M|>a}`cdke&3 zH5oM0Y~<=2yP^P-{v#hnA~kSw$qisl9NI+1FxtCE-eDdcJUpnS8-fbh;+{Nv8s?W= zhoA*wwlU|joVn^+yAUqWzRSy|X(UpmqIzhim|-8~^fAT{y{GyDD zq+5wXpvU&%Z#_t_8GJ#)wMoAXV?Mzb?kkVBLpw*|)*KXcNFU}y;%MFQlKmU716hmz z%fqH&WJZ`mU}|ZTE70bG8~0x^^ujTrC%c2aqYjSfqTVQ?A|nI&n&mx(>a3mm7|VN# z-$AIMsJlnOL`h2ZzR9h11l#(EMG3QXPAHH-R_g|9)2C%^b@gL-`J6|><@);vToxE(hT)Fh1s84A+E9}NO36VkxL-XD)SJbs@< zD4gFyKHf_Fm2WUYg5LUAFi$k|N_#4#5xtTcAV7tkQZ;n}-!baty`+{*koSu4#uk6i zoLay$6i;9f9q3~UJ2i>o9)#YEoHq4u#}&nhY6wy_>vvH^llj(9=2DMK9x=h5u|Ug> zYZk+|nFEEA+m8H<+l|u4o;W|5a1h=nwGoyruenluQHbHff3?95tEuH*u`He;&aGhD zZgxg=b@}k}`Gz*zIoP+x4gp}>6MoxOvEL=%&N$c?Y?$l#IC3P>f&@WYemzF{v^{|Iuk)q)0%!Ai{RlW1 zb|6T=+6tNL{Radj-+{;i0BO*ZRXBY79eJ7pG76NjIfmTn+u758hz3u)Uf40>C8~=0 zO2w*oH7w;q&&tU3Cwvb<9s#DwDvMN+ujsBs$vpZsSvffZJ*mFp&zFR6+vWi7@plTS zbxd{K((vgBb%Oc!5or#Q>EPc=CCiR3HV_`C_~#7rE=!F9{MD0$kM-x5-}F^g@i~H8 zZVCo&VtjEnHi+`v$uW|t>9@Qm?aH{{A!CphOv?lYc>yN&&4KQJ3L?5W8`-~R{t+lw z$8194Zr>5ZDhPfxdo_ajJ8GUyO^xb~g%VbED`ug7IsVeiLltQ#6k;@bbV?&nfxV_T zCgfcAIxALo_RmU%dWSE-H@wvS@Va4bbv6d9h<*QT0>Xn+TxM&VCE;3QoV=cChEM3U zLPH1e$vK`7Vw2oYEPu1WMty$LrLf`=Vj1bvPlzKmwI&jddKT#%gUW}xLB(_tGG*gH2(^kHdTnx3ULG}A1Abz{}j`p{Wzx)kdHbt@fc4VD=3DPcKDdq7O zDnEAYo3Tayyd4ooAXFP(`jEuzAc^Y>_i}04#5knx1%H^Yb_c~x%GEDgp(1q!@Z&t@ z5Rb=|MWb>x_Hb?V-DojwiW91^sT7AcrW)RimFnfVwkAy{5>0CsAxOd0JIO`nAUXjt zR!a~#up|M~_i%5~y;4o~31TJHSZQFbyY>%UGFCRt63W_K2M z!To7gQA_6jfduvX)$ynBN^}fgAtQ;Z442ZT1B|F~q}zL+#f&7QYm(ndne5=DFp|pb9wPIPYnih?D zs5-q>i8LH=o&nR*6)Mw0d)l>;du^uAV`_dIw}th`^^9836EH zN#ipn@OI44H4MCI0)3124h{h@NQApjV=4ft0W8IUMxebvyZEKkImy`e6@bsdKk>O^$PXv&E0eY638&+@57v#swuE<%7;8@=` z;_mk@yTUVWU?%|72IFl<1J5cDB_$=0E7Y7k0_bc%f4r}DJ26XJf@}B3UiXD5DymCd zqiFC6e+h&`B_Gh&CIfkiLCx0zR5~^Cv|U;E54rEB0)E7m9aYl{z=Ok$Ki$>^xDi}u zi!LRP^NEP%g-C=8b2MIk1;sh8^XPe!eEGI)2Z!x%`m3X$`9(SYcf!C5!5>vkH@!s~ zojRJ;1KC6!_`A+AF49l3o?|In=KqD+HU4|4w1^C3<+7M}MDA(%rs^3U2N9z@3KDbR zn^e@ea3oSA#)&|%y2&wXe8Cvx;zbWS%M7Gl;Ddm7A2ihwFzkZ+lH)AKQ!W^V1Elxu z%&~yIMVa5z9@68q{Iu(7iD$ERwLqdXaG`l5++eJCnf>h?BMkl<8Xk^n2A<$EMUp37 zW^D0{wt^?rk@Y2{BT;4EK6;XYql1-NV#fH0B|JiZP$1{8-@c}7Lgjl57i8YWf?osq z(7Hhpxh{&;d72`4lBYABoU8Q~4u^f%18G(K{kMGPQVC+v>I>xS{_K!w)O?Xed*EvJ z6KV<&Q1bEuNDJ3oBr|F`aAU!u`$5_Xq4qjU@WSA1U@_>In;hf{sIh;xf0wawqAjo6Dw=_phwHUP7ZzK?l<-M|0)}&nPHs*^m;NXD;he4D*4AL7_o>(?mOphSwAp58uTWeM!!+6Klikum z#n&kuoZy-ZkePEEpi?eW0nfl)FplVEgwNu4Yt_{UUZ;^EE-L8jFF}iy?57pO)>e_- zXT8zNltct%TAhQVokpSV@#g{!94cXEFIhNWDwz%1jddlE7#I!Nb*1pBFxEw2}#-!8xk@n#Hn^VL-4 z?{eyYm8y(8y*u`48DNas#^^-h$f)#%O0L2sj!S5=z6l*c10IF_-#|x}AsPXnkgY8k zGT}K9kXg>6O`yu^pyM<%Rv_!wk9LP^vg2-4%VBwdZH8L*^(NM)oWMt;K*#;l$=sM{ zm$;f*uGDZv1>Fs@y^j${Y?XeoJkL9v1TMlrd)ARPZN6GXD1SOpI|>=`IRDyu09vui zIbD(EF}XJKddPDO7sm_&pJ)v^2w9)b43R|2PpX10qP84V8rVMG<52TG%}J0z)o7UB zoj+SK1H0-AJT5#PG>8rUz6etaHCDJ-@0=7FHz)&5?fTQOz*zuCeu^w13XDAgR=k?w z&lm`$5Q!Ve8Mxg9L1}UtO4H-kpLlfF2VCZn`A7&{8(K#=@?K}@Xmj8UgCUyvCm_t^}ZL6Z-y>(y&?^c-nK+h_28U>RsrKr z7H=DWOZA;lX=BtVCeMY*WlX2m`9@ARO!q_dfd>UBR>?EcO5J@p1=|t-U>Rv(6oWFz zYxm^SYx1Y1OnZz8G<|2d)}F-JMbJK7a4{9+ny5g>#>E$N#C#`(bQb716AVEB)B#L2fn4gEH&CI8JfA0Ww$>XHn2IcrVk z*?>jaSG)Cophg2o^GBB0UIVLKpsPYp2jr&)cY^cX-jqgmMea`rwRM6nF?OFQ4o~kBNf!|L-+B7=iJGhMJpSrJ5DC&t{IQ5na zZEJCqH$a>4j*bRe_<|N}&#j4n=K?v=pt-v7$SqwVLt@@++8;$F(8E zCC5$hUSoiz>tVwqg1}(gGwV^qNZ^7(gVu*RfYpf7|`gn1OY$EI>?3wfrX}R_F;RuoCLPs9Ci8YUK zjE9JG6|!Lq^TA0`d%=aL6RyK$ObH~kf_qsAzKA%}Qh3Qe=B@+rMA|kAY@cZ%Ez-+I z>b73oq1U2K0oZbIZ$Fb0fv93n?u}t!^U3Mf%E{ArFa*_XrgPkZ2$-$_lL&+DCidRg zo&+bK5wqynXRHiuqIhxcRvmT+SW3n>#QK`@*Pg&Jmo?)qTbRzw!HC?()|Atna@lw& z!AS5bs-Nqpzi7N!gOupZS?V=$CePgU9V;QqFRFFmLgoR;8aaS2<7bW>J!rx=c z*ZLUNYy3$so0Kus6}$)M>bPde*HsL3aRdgD6!}AR)n%gkP9Ve@Lr4mF?KknN4QYR2 z+jQA!aCSC5lllBa@R)n_`@2t3h46HAcD9Xdi3u`_c%c%Q`6OUP7Uw^<&j5r6!?Q7@ zKxUz8mA%=VwexuxZQ0vt=V;j0Co{T zl>iW=fSN^oj;;0al#dB};u&A!tKBxR;Ylv?=i7AOb6M~5K}({UY<2}^A2ep2H^XO! zOaubH(ST#z`|@Jih$A!KJ)vGV8OzQ1ad>8|A)WYM+dc!)efhA4Do^f*BwHF9v{eNs zPfLwX4neNys7Ljm{jtOWystmHISFDPViA$bQ$=ms&Eu)Jiegn?QWsQ22dIe53)^0> zru{!{CGz&sp64N~g=SZZQ$wvu)2<{2W~_oLTz)yB<&8yO_rXw zxw_i?6H2)JPbeX`L#3LJFABd6#mgdssDL$9z&`WMvFsOJ)HPMV0(syUjl3k$>%_^@ zS>;PjV?!h6>#&`^1I&4%@btG42o2sj>M|@4{C>HLFstqL(-UMa@7u-c?kio;DYVDjpaC9mQZmwWo$McG~3Z;opz<5wh@`Im_|LJwsq zLijx-hjOMoSTxm60eN^4Z}p}hTWtj31oPpzDh<3!J+k`k}?oP;;`Ao z-{oHY8=Bwpdy$0-TwC_@_~TvlSr{u3ihmb_7f7}wbbPJ=Y)nV zYtTv!JY!f)M#v$P$W7KLo`A&3tiG>v9nNmLx)su$Ek+DX1mL6wpE zgORi$@T4v)(ozaG;Mk~8PH5+;q~)}<*ERIMB@pkHivV;WwRFGUQOy}n3* z9RUrJUo1!Aw7!f-PTOUryeXVDvg@rf=xaH0NImXyI@i?9b8q`xL{T%w{KzNRF`xi1 z4z9Thn8arP_k0m82v#Nk#xPD^KmbIWII`1?SsrnG*77Ya*IPXxB)q$l$r4g)h0=r;|2pj^zz4gsi0S)xLICNK^|T#296(rRUHB@- zYgd%Jsl@Hq*2j^u5%kcZm0CEuohF)+2=eS$hNQ&M%l`W6_l zJ|hE@Mi-i_P3;2K*9cWsT-Qw$tpo1uqXOzDdtYF8h4U#_A;_P;t&42UsVW^pS5}uNzh-j!lq$sN3LUy!x6y~^N?f)(Z_aB z3n!Y3`UxhkUc6a^w07WNa8F;015BW8u zFuk_%4_zLHpOJ{PS^L9^sa~Z$e6cBOtd!t*6;1Fag^FuORkbV#fV~!M(4?eJvFohu%_4e_h9DPK;Vl3zAE4yq_X$lxz1-}M0Zb4~sqW4s z!c#s{KP87O6=dD7x50o}4;pYPfd<^2%WMtBSZSYhoa|sXcDbOemBm(?i1DBGS@#5+ zrW{UsFGU10V-zV6SKs+oz9DE7Su%4CxK^K~M%^NGeA(p=Nxw1wJDHoq=WhS82-Hz3 z3V6J^8uJANE3G|^FNznLmkOBiYyASaHbP2hQjDgLG`YD!ev^wO2By1mPi z`$n=$^2AgB!u?KYu9#QIXJROpgtF>FA&7R_r)Q#7%uwE2DpY+oHVi%kVtQQ*HMAxn zDVzG1-FQRG#AF(D6C_{ax;~fqJ!+POaHRJ35VI|Ku^&B#JUK|72^&2n=PEt>s;ztf~o9fC*IP zFfnZNe4O+^lwH0F!hgytUEmr(m*d_s@hV>uxN(54f%>^3lD2YG-c+?NHNc8%|?(LPjdwNGdd&Bw9w$ST)y|YJ) zoBZ3>y}v%z12t%84_`W;4>K)Jaghl4`hkDuU|`w;Kq*59_*Y$z1b~_U`tC&K?OH;h z|K^6-cD*%%(RWAhoDhGzF9_x-=*o`}2+@mgHMzgs!JT>rw`}<$9334!JuLOa#Pa{e z2DZ^p>5M*bfY}Ae0x)>!{r-sU5{R0mpZGmcXLrH+W->_VG}z@(I+^*kk)^VtqkTbd z!&r5!5I3rCaQDrk3bTK8!?}$Vz z3u+7OriZ_F4!@AvPJVb#txO zl<%sem5{0?85$+Hm&9A&p2FlGX(Tag^Ae9ysMNM(Hh*jjJoR+X-cLsR);>P)Ty@@W zwEA6oL7zlXJcla4;3@Rp42^tWVDL8@}b!2Hm%`h61z z-|(`o7$|B&djCpCJ9G8O1T3Z{1fG;GGR=Oo`TDA`m}!MBQBoeewi|#U`l_LYeUmo6 zQ)y`nPVwZWK%9!mlc8XPk(De-lhjL7^H)SJb`E^BF_kf9SKm$qpR~C6blG0cQ)?um z)@o0(PZ^1VHYE2q9CL(hI6i(Z7CM&gAoRi8aIZEd!vc5Fa`di3BM zmGE*GeI6AQasjM3jG0WfY{>r9JMiO=`_8y7avnNI&6xKO&hQwSE6TVx|>3@9H$^l~sJK6MH^7kdGrs>)HVP)FyrSap=lGkU#^s;+`m4t~cpK_v~2?o4u z7pY%0-x6ZXcj%`(|CJ|8rCI)vyGvLGi5R!u+m;$7b z5|E>Y{1L|b8)fO~gz{2zmUr+W`FzaWQ-;->V&-N;Qs-G}#A@7&RV5wdSmt&*@}l$QPY(4F zO!CIb>H#Z_?KBA67~jmLy%1}n%p~Mzv`%ZjgzO)$mL5z_R#2cak}qYxmg$ecW201; zhX)F9k~Kso&90FOl$D``bP&zf!ym%E2Mwu&kmd@)cvM_-4+%BB*32mEON$*!D`ZD- zTrV)w?Au2ys2EIFcb~q@9n3^Z%p)GJsg9~?Cr~w7H|#!HhqUf{g6wIwi61z?I^eg7 zbM|qKQH*Ds1Tz}Be#3t@`)rwv$L7Ey{c}+QZYgg01?cjd#FAO>al=9)TpwBaUdLjV zB(*{=W>{@3T4!x&))bQ8IDb3bqK-Mk#?HOLFfI?bHGhnW!vgau6yom1rDS_~Alsdr8jJb7pGFkmtvSBHLmGg4{#ZN2p-_`SVp)JY>wD{EZV&c8K2Y=X7yCL@O*i@A^d>#y9*-Bql(Jh zAmd}o`v$H6xpF#1V0;i{#VnK{fJ48ULR@yRzDc64SzHO?9|5rdLaLu(mWFaUCg5%M zf+R?y#h=r+QEa8EA}ELvkQGlhr`}-?K@D$^OC}$(X{lH^wKN-o_Lz7zm>y6z5xq&; zM`{syla;7tKk7}tOE}*o@#A!mFJ8hvtw|TNb@S?CCCi)=qLeE21-Xh!i+(TQjNH2^ z2oJ|3Fu${*7W!S}@W9c<;P8$?@RKWzKie9+hS1w(PvOs#S zuwjj|Gja}&uk~GBQ8x!6UAa;Z#8-V~0lW~DfrYzt3n-!)EoGJhX#uucz*yX#p#%VrvF@VW)e(C*U=yY5@Zt1 z02Lr%y&_6lqQ0>3pJBnw$sXc3U}*e0@=vnI{CU}tmzq~30)m-D`f*wzDLK|)|4p-B zKpjFFq}_DU_>uAZpsA-6@^@wjq+7UHtw(4h_ax;&Oo>Tv_)u;6jW@j20M8^#>0z=E zdxD8Oz!?$m9}s9?ivT)$Kp^~O0i+R#>T7E0>JAKB!K#dM1MG|_CaTmNmY+X=ilVxX zqc4P?W++vJJAm=OKP(UZeXBEsZf_`>=GDrAO}aV6u(A zl_!A;^DrQYs`KxHgn}g}cukZQx~`)!W_DIh$ma9l03L}pohDyPQlrUcoM3gEsM^6W}-oCqyJ5!$00v8R!$3AY|= z`*ty>P4Ge=fv#i%UJ4y*t7~5|$c26Xk<5;9&E6!?lG5D3r%2T;`HzV*>02MdLS4z3 zBdlA04CW@e&TOaSgc~Xvhau}*H#CQ(%tI>PcJ<;Tc>cg(> z2@&VR_M4T{YSwt>wqp$Jw%%+lXTw1kgZGj}!ooQML7-r_10$Q;ma8n>g-2XaMNO~{ znts~CK2fYX3bE;2EK^>6*I0o4v!^eBPB$V)$wr$_4N-zsKxZ-CfYIKbK7DX>@{Tur zc_FyF*w{EWY3pofAdP7loVk|YYm13^P%MRH!r=I7>;Iaw(+rhG_$OU+z{hH#!8V0} zS5p}HJ@_khzZv!4JaLtO`4`v7^mElZp&ri~eKp;}!av~7mR(#272p--{Xa$ZQwO#> zDkiS0UB*gANeZMO1(cLX!dN5wN`cs2nfy4uOKnr(Nvycv9If}ldoKmjVzU`Rz92Yo zSuns2M-@b^{LP3*na*>=L9CXE&12hw4NVT*Yqg3!FwQ`_V&~Kn=iNo#W{=ZNzjhM8 zgs{=NoMRJs(C&(*Z0q`jz(mn>ekBeh|2a&KrF5=nMDE&eeF5ec}Cit7)YwFp_X2l zdUZ?IV-mZmW_A?ItWXoV=O62;@XONhoZSzSb%9$YcCfFA(ivIu8rE9Pl1cQ5Y%E#|1SKMeq6ls8qM2O9bRJd_NnT zTxhbC*4G?ugzi}F2Rh%_aWlq}X|JmX(eSSa9g%&u85oc*pHHn`cj$MY6iIvKBr8O`r)a#M|;S(VXbM=6;&| zw!XP7OvnX*BNC!V{JU`QClEy(sK7`0h3`^Tn{f5kvN3XTPj(|T0GPkvLnr`a^G!i- zOV6vFFNxUK1CoSgTYRgN9WS$OZ2VgAKPtX4m9>bP-{rJEb~zs*+uEvXC6@FN&)F!M zH=A?8ZxI2{J)VW9NP#X~8>^c>$(H+%Pfu3qlKQ2^oE+NV zs+EfB6_Td^%1Duvg+K96^qA~2X!c9PL})&aI>RBK)3uw{W^dJ1G|fIjvN0|+`Y50A zAX2KHI~%Lxb2W<0*X2K&USgHvqn@=XTgx>C__WFZqbcpI*ZrR1ixF3@0{mp#B5!`q z1bA|4QZ+5--%A#E%%`8W4+eEEJLqTNzO|sJDxuF4DZN$l;J&ZWi9t3Cda!xM_4^+j zOW$=U8D2lD`u_V0?w!#v2m_V6Tu6?l`*1yXTTJs(46Qjbe88voG8bP?d-jE%%ez!% z%ZJ7*NET-f`vgN-UHaQ1DrQ=~6D2iXSXfZ&v_HjEwzZqBSku?Csji~K6Z+3`cMvn) z7o8?A5%0iJ!lL_Xs$wM$>yhbSf3fr=^oZbuQu+nMzS+WR?&pN>kL(X6?ifS6_WKdL z=YJxMP{?4W-J7+Q&HbjH|7-hTh2D&_w#4fDN`ovy9U*ojR?-;>l&b(-&oP;qZ;jho ziWh`gd!g5yUntPOC*t>SEFoeh0*X7ywEfoh*8cMl7+YK0?W1`BRGr)JBb`=`P}$z% z6V<~D&pj2xW(fWk6O~upSS;>O^+*@E^-ax8I~&Hc3<0GPdA1$4VCVA~iFhzL8$}2A zKCrM#MDNtUWik=&HRx_FRKu8Q zW1gl>&{XVWYhS4Fa({1!Zlrg}1_BfuwZj3Kb4|Dt?T`Z?tv&kE7C!)c7Ke4|(IFLJIj7$TV;rgR7WyHxUv4 zmoX0k^R^rUDg4GJiPW6r7EyQ!Cu30w7&XmpHhgYyZ7WL@q~3d-m)hitMjWZ_~+Qk;Q4ZSnufA=2kROb9XhBeZj6 zXY^VXeyLb|RXK&QuuLv-E-&Fjs%H4pmMi}r~0>SB7 zzFCb!4K17HQR^}FcT+eL@xbM;Gi5p}@{P1fb^N=(LaiQIf!_RZL|f1y*PG~psgU8g zkg)gNMzOkH!10_n5Hxw`LT8kW6^4AO)5_wVPbVr9n#NV=Wi7|q;(Zzbt8D08sBq%e zGWHGhY=*r{-ayM0Rs*{>oFV_^5iR>xxK7mCA(}NRHA={+7vZ|CzVeuF|26fcys3?6 zP;2D->f#CEynr0){pX6`p~A<7uyTx!e-UXge>bEc9#Ge8{u15Q2y|VTVVan!8}VhA zQRBr@FYYptZgM?oH@4al{B%@cBUZhMPLz?Z#gd-!`+yJ?o=>PVWP1g(S&Iw9;k>XW z>)C-{LP(_5@R>FjF(noRT5FA9J!7_7faF)=UP{t3A2RfbhWtZNB%K&%jDNESuN* zaP}HJxz(w{9YG!j)`!hAV2|rP>+GXLthBw|60hGkn8ERMg>tQ~JGezB^itD>Ooy)w zd$bFiDP7Y34MKdV8Y1Z*W2x4sbtIz1#YY@;31s|b7hsVbL>IoBykV|TP~fgu!jIBy z=|9SKyQKE*qfhK(6C9>zDA0}ShyR{|4?ndTZ9rAj-#xiOM&tB0k7`gWphr=6i%VIg zkR#~@#@xgAlRVKJshom>f&;$7GNrRpJtCs2X&@gkIqCM$#D7-y53flo#r171dt^(ntCo z?LddfdfA3s1BNfqtcGO9)8tz-9SM%_eSWQf`gqZ7GX*$$EiBm>tBr0I`KXpHS09?= z<81!T3en!4`ADF6k3wBpl-=A{uR1u?*uAt2Yworfl9INSl+SE`}%2G%E9uKS&n7UI7uOkdt!(Yp%RWkg_30e zW84UW(tUBAm-iD??9`oxDKC(vv!v!okeifhLFZASp#|Oj@(< zk~N)EyDHfFhR1$_3V_w1-BODJU9BwmXXHCSd@h=z)GDs|H#47oF7sheSFah#1DYKy z3g+-QozQJVuG$nZu-r{SXz3M~H=^q0m@I|CTY+Zp%BCU>8b%F&uqL8szBY$0ZFf28 zz^P}zE9%#ChJN|HC>Mk^_ToPlrhlCH0g~+XS-wa|E>HX?Qqp$!*0JcPRL^R54NzMC z*<$k*3Yy23r=eMfN^{VRD6F z1co-wH%(1$9vP}V?Qmt0S8#`52XK>({sqsDq1MJLUv2nY8daZd9XAqO<%(r`Mmwso zTH9L8p*X|h-sEyU5{7o4k?&)UZ z(_o!W+g4H}pBD5YoSvJXnVDgr85XcL(rt9KF@dcc6%iwNfJ;f2L@9zSI+^A5_McDzH^JJg2PEn>PR!M~TWLq4Rxah0Wpf#AB1u9$||J{e$c z@#Af;wCn_V^J&57-}>e&X<#65$#H*(JVGn38~Jh%7gVt684hfp>zbHjG$ElLz|b8f zd#H--nu#D9mRd`16UO`2_*PoVbcD586DO2-{iSva*sXp4&D)-vsfs(aQ0PJCSJx9z z$DOHE{*@SJ8Weomu9HGDOn23iV99Fsu1Z7;cRAgh_eqt|VI)OtvYQ&I_#r5*K^MlV zUr?L*+&LZ^X~>jnzNTngg?x(YGu)Rv*g4&?w1>FHoBxVR;=2D-lu|2I$WLWa>hQXS zpx`6#Vo_C4G!!x%Wn{V+@?G@6E7@p65m)jCf&|uw&SNM%oVeqVU5Y)LN>0Bau_DVn z=#(Rtng~_Qvt^FTgVDdx=Bh?*RmWolKT;1Z3B1zQtBN9B(08v1%}aYp$c!y`;_{NH zKy!`RcXeMp{F{z){xBf3F+o=3h`5V8I!8vnS24uNg@u*TM2cW%V+~aze$b#Y2_}>Z zBn+y!Pe^v6>r82n$TIJl|7-Sh{;Ar2fKow)gbQG(FlLrn6EAP2Vj*idDvCCHl4)7a`u04a0#j7so3FMb(OaSR-1yDv{f9uZQ@m zm9i-Jxe*hs=Jrc_iFg3WC08P2vQ7k8#2-0+BobIhA6HsDu(k6;lk5fdXQWB8==ErQ zsHixl6#rlwRTRpycf47C@u)}j!PxVPFBnywKj$Vr85{^S9GYq03Fdc^SYPY-^mS!fWH?lVJ< z8*`@l`aOD}16YbqZf;@AuJD^|_%SLNemq&m zZF+gDr;rKK$tf2093?T>UxzN80OxOL2(N)@;GZ=r<*-S8@BBWlc5dP7>DHN9(D6Ls z1}`w(tc{O%boPh8kDZ<6oO1*9(9v0f5OuS3|099S??E??;Y#vnPna1-ZQ}aXfBJke^u43dqmB}t*0h*rH zrwhlV1gs-f2zFnEln>tcei!?r*4DSVU_`~DLfQB`k>EZyUPEC6W(bov3rOWIq5$aq_ zb~6w%TWqdLrZUH3MBAbzf-+$oLtSyK)mKz_GAwm%&iC<1dab}nH45%O5c(F2Y|81E3W_I0uf z^SGG5oKi| z(v7`C4}~~lK&pKRHpLn~*s?GL+uwyI`N6>Fy0M~fWpPghowWs(!hS+@$Z*S|Ecz^E z6yuREBfj>K^f?SqIrLHs*WG#|1PYu!c1=8l1EBM16L8+^WIWO&kVD`P3yTYE-NdGL zc4%3;SrBLX3G5It3>ldb!UP+YG*e3t0(0$tPSd9D@R=3jo6g?tZM#&dpo)rmcH-@` zTR@jw2i5O#X;udb#e7L;kUS(kV4}&zp z)TcqLKbFd=@66}F>BI5DQHxnOPKkfnPSld_i+KPuUrIs_d(XsJWR@A6-2J014TZ`# z-?wy2Jsd6#c@&9po+fl#R)>yHsXRA3qu4MZ5UkM%33el7WQZOoJ5~0;!6(bSZ;IBk z^1VkP+uw5QB(m`!!G$U;E`>%bqH)ljl8$VQ&4}eU<~M&}#W8JY_R?s4@lqrvzm|Mq|x{#Nki++D2ktR9+d7b=NLq{qX#@$F(`AUT~js2bP zaj_Ez6ZVIde7iKVWQ&O(F;Z_ZefEwPCY*>@c>5diOv+;d(jmB@fDYQ(LYme-?mT%( zSj*MT^~QGMeGqIi#=r3C%YKFjOSpvNo;;2tH)Hz--CwOeegSiIarG4}`hWh1=b5yi zq9}MA#-GDE5qB(?iLo<^yEDh`PM*)8sayb3*vJX2TdxVDF7*GMU?&6I83OCVxq$2G zpc$h{E`vg${@(CFrpV(aiCo<+-}kG5u+f}b+?_~WW?v$h!O86?tlg)0A2p=1*&CDpQU7VmiFB!5X`taO$o3N%M&Nh&9FCDE zM>IDL9H#(Xuva9cMrZ3=qa0J9o&OXd=^x;X~Ec72?iAU0p_E0no333vx} z`D0{d=|b;xw0b;{omBMAo5lX8j|5zO(MpILDfHMJn%rOk^PgRw!=Y4Ab>7|UmYvYV z$0yXcHAg*c_+XG^kpQyO4vN|wvaBJ^*g<~x~lz^9^)aH^Cw9S&dhmuoH!w$>DtI>m2COmr`8bUUUPz| zF=J~)k}Nu_cd*-L^~FbDekaqoSZIu%_ptRDcsGSxo!wO4Q=Ex1ok`*jDCtkVr=rj|;Y*Q;p3c5f$Hh%1K<3&-#7-om z0&V7oIL56)Az!^@J+DTg8piI2-~1%LBbSel6H#O+K03YLD|51w9c^AM>GsJ3XBx+! z8x)?{BMz1DI{n6x?J`<4>708A%v&AzwrB=;eaIyoII5uzc9Pko$cU~f&(wuMorCtt zRIWaxox&f7Qdo2I7tgov&m~adVStC{ZbpEt>n~zTC3|jhI_U4yyXAZ}lZn~41cDT?)AL^X2SdCe#O)c}Qa**Wo3B?Chm^>B% zb42cO&bZ(RwPNL+d@P)Hii?SZ^_>)9YQe;F8l)cTsziedA+u=O{T`bsQ)bgrp-S9u zcU7;74+J-n(e%#-Q!vSm^x+m}lbO!A+W6?TOjks0iK0rb%wN8z2$}Mod(Q9sW$$xsrJ%W zL+QCpST`H`S2(|nUE_p%S54QpK2)wADtGrPPC3~r?utAf0r1Ph^PJ!7N~M2U+N!>} ziamS^Mp^hfEH8cE`VIr79ui`^E8F>N@3QRdMvf0e$<3gx{ehtFGgXq!9JNv}D<`@N zhdhAYE~^jgC#0SsjjET}hu3$iBI9%rf~ovz-P3IcH?4V2(qco_1}f;_QpNP;>^*^F`Oq?#Pexgppmv!?iKRqb0|X1D%3O5}tE= z>Tv5uwAaC<4czG>@d%_z13dgFSJP3}Ok2g1^zTeiILHMZImmmeU_|9lJ0G==zAIQ| z(ah~seqn}d+8$=}SY&qigu|047sb7ryiuIPJKw{b=%_EMj^d8ofHeJG8$Nrk0>s9r z8kvEK@!OvjS`Y=2=xk~Gkh0~>Q5=XPfYdSUX3AxnV}UdNc@4YQR$b*d#AK}&xMx3G zq9X4<4@zZ8X~hP9Awc@IQxJ_I+F19Df28^o0vo8PgFdYnOC_M@Siz-9V2bxia2;9- zt6yTgVQ|F}k+R=edte|!V032&yDz(QNJaP8_bN5>=b)}1VfYj%55rbyQU+Vgvxj{A z!atJ@HPbaSVr%Ofo1skdYQmyn6O|Ps+ATu0j{hj);_Ve6fUu?=xBmSy2j15QjrPC3aM~3}nDau=r(MPSaMUDHv(PhmY1Z8X8Im7G&JKz0Y<9KERA5 za$Vd0910#Hi?M(H4B3#1m#rB_XW;~P<(Awv9u}gPETZc2tIm+BN zBhAqK((uDt0jm+i5}N}uA#w9rCXk9RJ>OL-gYl+;4o(?!Drgd2v_%(QnfXxsk;@Zk z823%00Di&v;?bS=k%x~l>y_v-!}PhUcsyvz$dGDEg7j{2WCWlZ9Nl_r8Il7QudR>K z_6V=`NHRo1^dOIN6M1sRZdO@0>9_}jc?SL~AJ+`^IxsF$`-=rQy(K_@aH+Sc5 z%%;xr?Ci`0s3~Jf{tcT>Uz$Q9wAB``+()ypY1M9x}^GaA+48zQ<-0m1DJw4aJvtqVRGaxo*{Xf^$=Tn4oL*suaGk+pMHQC65$gWUx&R0kICJ3r?%O~*{ zP-f71LJibEr?!YupH%rUeqm>Wm5?_+Ptef4?xoGi{xJ;yVizAmH|G8;f6`We_v{6H z+5M3FuKB(%(lR<>;-zMsH+#G#Bl5)lb_5*LS!voa$t@`C#h;YnD87S~;1ohO%ZpV& zAwfJ|WeY9n(8{>ZvU`z)5{!$1*efLw-7h6uGX}q}F-VhtX`D=s8!^<=A;V@#wv98b zJ1ei+bTRws5nw9x{xx(mc6C!!%|iCQc2)}hu)-Bv+=LCO)MI|IX=N1~EjwOQOSA~a zB$4gfsLC3LS^RuMJt5kDg!v5#3${7?g<(&b7dGbph1gE(LeT|6sEovnb6SlS{O67& zg(P#je3Z|LNi_lf5Yd2x(?gInRSE$XGQsKELFzgI?Uman7aQQ29kIwpNNL7F;sl1q zG<*JRlR^bCm8NOB>J}@dSJ8}BDh)Z$Q8beZH^*yeb-1+Mwic3}opY>_%tvC$9QsbI z|EQ*d4r^nhVqcWXGb8lKNzXH`L?Bff!u6JtZKk4hkh_cff%s4QiUGnQ=rGvFx}7WE zr(A{l?%t}}(!443FjhMm!}dqPQi2T&wwW&#xhkmTlgz%Z``C9#l-J?EQL8q2FG8e6 zhS!w&0{cf{XdJj(4#iQu@OGpHQw!-delE4Vd-4TgTX6{GL+)ZxS)E zUCjvSqyTNvO@9|4x)N9tXffdfXE=cN7&%zL7wugJ+>T09iTwQw_y6@wy}$lTFqo+X z-XnCQH{ccw3@1;|Nc+-|mp@I1|Z*y%-!Q5k$^wmuxB`BN_b>!3`tL#uhRt~ zfvhX$u9+L~g92IKBEtX=7npWCU2gcH!rSnPhzzg_zrf}CzQHQ)Iyu^qZ@yl50B#cs z0QBR3|M$o4GO)K*UAvnTfl)84Gty9j$#v(Ib+D*Y0kO@=y?8?CH*{9OL0~&s)(s0u zh3a~+YRXZVp6w3U%@8zri5uq|IQ z_GA9f>sa~!3dr)+lwhM~Vd=nPl5Vpl^SE85wWd50L8dInlSnCx?lcdM0r@C=8NejO zb$C)R8Yxbew?&18co+GJsSo~bXEk3mX0NVkOY_)8+kNH|!C|9Fydy z=)^3u152!;Wtr2a@zpdYC6n<&z^4F9`2m7Pkfj-dgo;g!1rMuHQ549XIuea2s(++Nl_P2m+XSfP8y-)ACTD9EStx%lq#`!|srC0JzZt_Oi1saHi13|-St z{>}a^7N2A*xEkaOPbqLawLJC>pB0!Mv!}-nbW@PWicY*|udw~3n5-o@ZO9^ftuCkytqMry; zRo?egB-djyhwCnh=hOj>DgG@JX9D!P@bVhyHbQGEg&;|ma zOGbPtUkBgF&?DR^zffzsF&o%KAQMP~27B^P0gS4shBG4<9~2<8o zerYiQ0kGpN$4^!bB6OK%P*^L0&{da_@si}G7 z-jSg&;`ubB26SeoJ}x+PrKSHKrvl;uHq|sD**(p zI6;pK;FETMtV^0lb#^$lTay~moK~%)TWZh&C zxX{vqN!_9J%*Kp&W(VZLRABDS2-yk{PCH-coQgQiQc0yqvIEx~(Zi;4CPI40x$VzM zjqIAVh2CC{7hE|EJSKBCLgOd-0jwcV`G40vK_h18 z6Sc&|q9fQ>&-pd`>)yJ0ex4DP6h7M)4zp9_gSE(9!%{L>Ef2Ynh*2zvTDLXf)*P)a z5+b4`>nn4^vjpL*p=z+Czos{!`;Ek=h=*MA(-Eu4g(DooMpryhL(>*x!~FX$(e($G zwOmR|N2Jj>4=D%3Ik$fjRqHJNQo8B^TsGn?6KK(#D7pc4KSyT;t%KbwH*i(mhr)G_ z7V*!FH{QRdiVvs}Fl#HD11VGFyN?s;t>6SF6wx%G%=|dedS7G zEO)_d(PElADPOfKO6|jc6_<|okvIw`m}rsFUp%^f`tJzJX$ZC4I@!UFdE_u6oN}Br zwc+X?w!+a)3uy~Fgy-LPlq{>Ho#QZMlF0Ge4r#AZ)#L`{U2l9s6i7F2t18NUgx+{o ziO41DzP@TE@V~PvqJ&NYEFu}dN;0M_fst6;17vIppm|R_5)w#=gXyp4eY<;Id1Uk_ zd@%L04rBOFDx_6$%T$B1>S)1OX@B8LQdDNwpH(i{&VH~U5zl@UILjo%F9*N5VdW=N zdxZI$wMm&vU}0GAGgFXZj0=D4{yHu%psI6k0gfHy9UPUkC&4;oWmu=}MF!fK-2`HvOggNp!a(MSQ3vba(Ac~} z2cQxL9ZU@f54fmtPhCqwXcMQi92A5THN>%=Y;`Nf4#SLnDnS`Z=>&f((=%-=m5orqrypOWefFK;8jyv|NnJbivvYrJ zKUPxN);MfkoJ+V0>VtaU-k{L$AK1IU8}mG9eUXQXpvb2}dfhd^!(;gAF*cYopZK6s z9L~T^n$Luin)CT0$v@@}KTvCT2t{^hQjv(FjZcq}lgkz@IZ$zOC`9y84-fH)wLGv^ z5~WRoTFMYLBFJ0T3sW%5WnB}xOxi|<=tn`b><7g-AgM*iBu@<8 zD~W32FJ?Mg-aVQM0%U9wj=)VDA&5qwaT6)#*%x>^6l$h>jzWNpv}eEFc7Mhd)SfrGwa@e~Mz zp-44ktZQQz*JoBu(+6N#5mSKvzYWsdMFL!*;|;w)@flqJ+lJ~RxC&rNKrjy%8%T$! zP`bLh|1H!2NZLs71(?jJi6{7>7pQ12Ho79N_kqxhj)<9IS^&`x_?5NDcjhZKjVyp& z`K|kE2{xF4W(uUXyIlMR39tj0t_`2}*N3;0c_6IWlGV^cQ9q`Na_X8XSMd7Mv9^q! z+7c>;o77;B?zdN-4|^v=$M4lpNd@SgTw5W9NV@OdiczJ(8ndnNlXv`q=K<|ggT4}z zJnyLs&g09cnQozgz*6a+@;{Tw?^SLaMkopw4wpK<@{R^5Qr0NdKg32z7WMdnf#s7Q zp;*8xN}_QDQ%7lsgi#ATSpRZvs0SG-`7_6)`{DFN7LN>$5Z?EO#gy)srP+h4nO z5z8dE%n3rRHJD^A5vl7>jRRGer;_`!XeN1&W3B?t>6AB1ML*#E<9o}IG>plk>Ee}S zSb&%$s*nKtw{plm%gKG)FqFQMM40h zp}{r?!NzHJ`*9H~vh;VyMRn}vA5Z}QYZB_hMx4H;m z60j!)KQ7)s19W^{U8K0?K|o?+Jv(rOhVDBfQTF$p>n^RXN+c0L4gnbyn0^BQ<;Xxl zrJ1pU@$vE5e$|M3eO(3CYNe#n%}Yf!79A(I7y6(OLuXUeZl7U*tmsIk(m}w|H2ehb zfBDdjaR8sw0MiQqON=dj2*^9%g%=hU6Fa~U7wZEH3p{{@8SqU5^58%fw&ogB$WC+VI(hkncaP^u!NhK56Drk&1Ml}!eP{9@{7TwH{O`y zxdSTu{@*kB5wMi@jnmq;?Mtin5C$m z%ejr2-4(iL8mR{v`cOp;y`?E7v+ibLvZ11@bfQ{sA#ygGE1ZSgfBK?m*kuQv@Zs)D z!U)8s%v>8W!wRFg@M8-r8B@k@@^PdLcFxZJyuJ*KtS_5d>8CR3Fo*Mb;wGI(7@Wh?k=w5E@GlDTI`?>nE>I4999(q z#SGmeX{T0CGM^{xR!Q$CxpGei_mrxDZHM?T#O0%jI&E`4ePo|-Ie*cmt)|9b>u)EN zl-E_I0i)hm1M+z4Rc@@&us@oZxls?LzQfncPfNEX(7v;IOekjBLBQA7-o;W=VhXT6 zK)u7mh_lP6@qxOhB!EQ7m*SNKK0HVL)qjcXnAt_MrbgiL6EwHQhy&}8H;S_7g>^8R zhLfMz;6fXE`oVJ03wIBYuB>L1z9Os6wWc&MyZA6h%g% z3|AIv0@<6Rjo{N$o1u;We7F%hdt{LqAXC(bnKb3n8L%=96~g$6S_ur{ zzXDp!O@Zha_p>%P{lXf?+vks+e8A&gR$^h@U2#qmq?ah_0h21QfFCmmTNbi_WQHOdBDBM zD|wHqL59%8Rl?h`$m70VaS@jRSSyorfJ>wn;%n>jTw645*$P(df{0L%p_CwK^24 zb6o$o`CaqBT6Wh0Qr&!5p;pV8sfiJXNCjrvE{lQATw@V$MEs*78kKl9CRV{;4@Sq& z20z0=S{Y~~T%ob6ZNDK`mSe&-aY&y=sP@8%XR`Ch@(mVD9&*~+b;Vu!9tu7lFApvF z3LAEm+vw%~4-)s*C-M?;bnngEE)y;Xi{Ly%kTb`D`caGK097=_sQ3$Icck?yK71y1 zvqhy!QSY~u0iJ0o5j6^`c3DPOv>LZXlkdOpRQV*2m9O>L2Sga<^U&mq$>HJocf`FQ zm10S5Z|7pP>Say1qkTNIC`c-SHqPodfq??mLaA-!;&9SXQ9NmbCtEo4P(#?NN=(b2 z_V|?cr8DiI=X8j^DGMy#=vV&W@QuO3G7kX^Y*s_3VY+8NP^Jy=J0{8_^hC4!uNGnO z%@3$hCD#1zGyA=v5`L1mXVXsJbqQZcKtRJY@rVkzgXf)zI;G}jB@PC05>E-g^~2Vi zxD@C`aZNYxXf@vB(54{ee)K~^h!Bj307$=}!0UN9`}GZp#;WU+c`O#Xl)TVSxJ(Bw z6cFk^68AKp;3u%jKdfJ)PMqfZO+_+u`l_ZL*pqXt8+x$N?0#haS~9L0+)9>JMb0!b z*>=5fa3J#cS3(TsJBr4v5L4r?jB%tyO|qzE3OQcJYD#mt{+(gG{3z}1ID}bHHlKxG ziH>R4Tnbs01LP9D4q${k_+1GD#5*T<_wWh}y|`NOkJkl*Ms?xM+r&=;!r(w_ei;o7 zs2eY7s_Vvi=b&q|=z`Jut~R0%cB5}zH&3vC$53rTRP0%)&s-pKItBTkA##Y)Vqde( zi2w~~Y?-L!FMo8ypcR++@^R!)x0pU_y;H;`pzMLk1)hb)#YA)d z-d>=TX!xG5wm0e$K{*8lV9!1dS8CP*bFTW9mWYrLKbW(LA?Ux4LV^F35WLc;roc5d zEZ55^td3s(@xOrz_HK(AH6mmSN`=|UiyI+i=JYPfk|OckQAN zRUkSj;0?n+z~y~wp<`sE)JCQ@zN|b;kE>vr(sl-}s0eXKK zB1Cnsed`XZb8`*_o_$7_kvI06#PjFbY@7->%XP;pO=A{yeu9e`nUl@>vt2;JsaUW2 z??HWKAg1eK&!Dc48g!M}{`fUIRKX2Zi=RT!T(Y&%X8%efCYlaSDxr&Qdi^5DLZak$ zU=Qzu6@zS@p~v}alM*|Z+1{dF6KQx)l}dxV;|Mj7)mHKNJ)Spi72#5Asgv? zT_v8Xjx+@87n;`Ko8)ccglozJv%*Y1gj3|rR%v~WX8 z)lDlNTEq4MZ7UQw)&)86FyG)FK!iBIVzX-;4HA0dsB`bpG*1)0 z;_woK*0{<};IdtgTsxo*Iv0$g`NRJPdXU9abA{^bT|U)biCTxMZO>u-r=Xge0)?62 zzn8{@>z8HDUnQKN-g(bp%_+m}^A<9rOQXoYmGXMoKeT=Q2um*%3qn=dD&)xdsTa9k zQ6t`LmZa*$VJ1G%Q+j(@AjdJeq){uCfrW%(7peQQrgij}b2KoO=PIau|NL8TuX$%y zaUa|AhzzrhCoK~NO~VH4Pi=ca_g?`sFy zx1elt1#02Z%zwX5!ar>K_&um|blNi^2KZOvSnIWzX0my;Sb&Q56uI+`d-6Y9v*7_0yv>RLV7))w^uV*)BfFFTLNn9A-w?2hR=g;YrrKL?JN>mzzsvL z?={>(BT;;O{PY}I&t2E1xF_p`Ng7*H-1!;;%!PqH047M34-p?qZd?PC-zsEmnWvpsCaIZvB8VOkuS z)zWj{^Dgp}x09qvh;^gg$MbL#NGN^-qO}AsHQLHA7hn_unPWIKCwiCpX)Wt>k-joz zCa@pQgfSrVs?yfQ=}ijr-|qFQJ3;o;^N*TM$3Y)MjGEADm8~Z^MK?m2WD;|!lY7~s zjT~gh{#$jp{Qp-S`00wfg=$Ep$L>DdI$>H=;P+!Co)tKb<6E&T(r?jWJt{alkSix^ z(0Db1!;#&vw^G_wDx_jM4Q9Q|5Tnc>VrVbjP_lZjWC8b~?_(nGhx7A8Qs)i4PENIK z;M-a+s+W^t@dL-0KpsiBw&mlnQL!38AgM5eVHbuNE4i{G3^c4RHx92)R`AXMd18N14mvAR^y+ zSeZ&(W6@#?A^9Ps*((X_%wzx=^TZ3~r0k0PO}u9&OWdAB+nquu9-+7(fi==}DQ#Ok zaJOXts^s4syX?&wvvs5qF99kR@UXR!h0-H*U__K+Vny9-h%fm~$gSFXoL!&#fOHxw zwK40}Wc3xwJN1eTOhMqy<372p+8=xirYq6Q~t?M~lc=iKPC8F@>Hq%G!)Q)$IOr~gBp%@ ztewIDL*?1|c~GX46F1{KPf@F-jfQdtYlQ5$L=z~NI8a0*G#8C>7>dw%-!9; zW&}2XjD)gG-i^ptS9O7*=HUJiVNL^zOup^v<1zmgkFmgy9e~v2d3S<1$qztNcHcq} zGA1qfgayQ<(N9mQvU7gy?pJDReZd>$_kDY`{I@fPQ@R%n3MZ0E+fD zurOhUD(y5waM#z@XV;$0jS5^TAwKFpNXursaGUR#|x1Bdeb`SX*~k>#eA%h^NYBE``)K-j#_=)Z4Kx@ zyf*)>qz8m6il%xv8kqc4iyg;=Qn5u{)EC?*ZU)o9qn5E*e^KIJGC}on72`>iv7<;z z@sI?MxR-g3MH7>;8W~_?)NAM68AbaqY3LW~FxC47;5?A6u{IQ}k=EE%0pD~x(tP%W zBM|Qz^H+I;30{A?y8V?g(kaoIv#6#=&Y74>CidC9c1uuaPQv0&mbLlzr%$3ldkR#h zl^?oz`qvFNVScPm?!JsbU%051mNEsTfRHg;--C}v(Qq0dIfuDVwNCf3N66(l6nOXi zw45+I8IpVyKFT0w_*>aa8XAgT6L#wKr9b_z-yId1e_MyCFg7bU)>P{4Hzi;VW4aV#gjX?6N~2H}RLhi42K`3-PSKtE*+ZRxm-4s5 zBrbWeFZTR26oO_e`o1`F+@bj%2C^Q5JlB44UrXE3kqm93Icp2ELp`0ybv&(sj zQAmm$0q^-iwehb5`9PagDSKC!y+k!f28~)IxXf6UDDlOht?^MVar$$ZEa(V!!(aOP zyhes2pF=BB&3pUg*-vWya6Sf$P&1K^q;Uq{l zS5~1vsVyTHM;clOHOVwI`r1&X4hEydhEZI8Cj5U?y;V>iUDvgHUR!QI`R;O94HRDd#yRg7}t11-w2OIXc+#n$SUwV=tq)Y z+P6vG+YR2}@xDWi$?_Atic+bTWpUL|h8sLym$VDlUn7kwnT*NK_BT(2;}%%gC^DTd z4D(~;p@uCKhG4LAeX)SnQLoRCXo394Uzy>ZtX+`SJb?rm#*yikmDyRLRE^;T9>hX; zpNIpL4NDpVYS3N|vJ?RYrdLqu4^{W}%S)h+07yb)>FM<{5`Pn!rq&A5`#mP_UYh8I zUr*0(9&rXy0mcZRy)^kBiSPTBQLfJvu;)Vol|)fIQQRGxDtNc^#O;Q#>=n&?N|w@g#AG5 zx`LFG{zTJ*v_WBt2J73rxiGd~WMG@Y38#XVs%SZ-)hFDx;MSnP&b zL)=h&aGA>tD+MRpcu2ST2>Y(tE}nPSyvSeAmICeqE;qCMAGrPPbe6yCc>8OdJiI*m zeC%)be;jST=NVgh97+{OjGi$Kl*&nAGyhyv2kO}S_89^>5r?J2#0i-?uwj&}la@x6 zrdLk-V%|#}%Av8*!Wiq;Ui{<^XrUZm%NNl!TI;f(Y~2p-*=2%$33Xe}ResU5?!0+4c-YKG%RvJ$a*}pJAmLiK$?9ADnsyqA)rGvSgGlD@Ny^!k^ z>;XYVW*8|%$f7+%tSTlH0F1D}{&P#zwzY=R$(du#c1UrPso^hEj&87QvB4{_Z1EWx ziT-goF1V>XyrfC^>S;*4S^CJnX9=V#1B>I64Z@4YG)K7-BK16Eq$FjaL1EVUEpEdP zHs0`nhTBvNmCw(kMLuup_svS8Q(QNiLq$xH5rYg3GqM7%pMA7#;8az9KVepvD24b2 zy5BkSY;sb?Do2ouTl({1$I!Di1QQCWHwS)!Eq-k6kmHnzoe#m=JFo*XHuHn{`X>M( z`41}>Hx~}Nc{o95Uk(sI8#=TE3>s*l=sjMQsEQPDv1 z{v&k0*%@K=grIQ9{;#EbTkk8yG~nD5@Vis<6?x9<7ZROE}i@VvsjKRpV>k8W3P1zligRpA1%S5I0Fea&g z%0M1IO}7<@YSF|cO5RKSp@2XNeo)Fp)yyl4* z_1_}L-%StfR^x@;jyyW7KUvHxk%8`{h-rzso+W7id1=%byH=%?x|j?ehL<-?ZhH$3 ztvE^rfznAQkeZU>1RsGVN;=FE8aX2WRf^t~PQkof1t<5D=4VS(R$!f6+Q{pFH9I`H zQB7j>dWG^~e(mu-wJF*CaVNW(?b6!utIyi5=*;QT?e@U>aPG0;b_QBnkt>BSg>WvH z{OCIZtQ<2|wz`aBsGFqw@;8x;&(wa%QD%Aw!pE=Qa?XAbHQo`Utp_hYk6Q~Pude9V?}I4~?ML=7 z6|xWkMaMVZ%Gcm$I1#?cntC{AmW3xx9+h{zlg3JWTl(REgXYN|+6ZPm2b?;5BH3km zb;XmSl%8~Sg3)1{{uLu}A5Up&3MhIC*Mn*Ie5rmpLWuwcPENY{p6De2SUSL@agTm; zOun#*UG-&kgptRH@h@7s^&Ay5F@gCf3Hz|Q;qAJFkWNPR8$8?U9}~nI%O+hsp3b3! z7Nw@>U7V(4YEZgtK>{K>T@G?`$L%!~Cyij_Z2l_DbVPcv7&Ep=a~NQM6ks3FCiEb= zh``6FN@e=-W2Z4ek*2-!ZH+@T{!@W;{$R3%Qi#LE!20wGX@$Gjz##rxK567jC5}k) zXk~_m4Hzon$Tcp9qk`r=W2@6ABaF-;3YXA3QIt1BoVW+asRCMfPiVlU{TxCJ40>C% z5HA3rrl>{$Is^<50srz%d;tROsTh_wK%@lbYxf-~EkR_Rwq`o>!BMI~huZ~lYRgxM zQvh!h-4L>B9}nzpmqK1V54XhwVaF@_?1g}M@A*b|#M|!{)n(4HLLg7sZ>j?Zpb|X) z{Wa`J*tm!E*fQ%aCtw%_MogFz>C}SXXF;PTT~%VT{5UB5U_AkTydqjhE{C*5%Z8%YC!Q1xq7)9U@*D zMZN>&ynkG_vnu^DFZgO>AFSFcGx9U?*%xRP>`DR^pu@rRMl4Rr z&YBiSbd^C?IfEp~i-+-d>2VPP&G;wL#_@Z5Y<-9+y2u8M=6*C?BoBN+qx_j0Y>g4e zp}HR(T)`A4~$?~H^$motx2qf z7*Q+)Xk<5*H7p`(qZ_!rM@yxiAA%x~{0LtH=kjhpW@ez+;CWTgJ@InENt&{g{c7_@ zF=6K@F(|PDCAe?R9gsYsz)~y>pjH!lQnX_<>gLU1stmcDEMdV!yh+$RT1GKD=%X39 z$N7EO5WZ2D+@4aAf zG#Ux?Y>0-Dyk8{%m7~F&n`3YT$MbtCN|>2HEPh!$?$&kxT?3v8+Gs+L^Yy;ULuM7` z{+G&ML-t%~nbfBd#q@#o?0PkjgIwVOoV$LekaPpF{atC8S zxWxw40v&z5mGn2QT#YnYh6^bb*{370MM9Qr;vpqgPz1&BruViPp?;(h$$h77nBtVx zzb%WxusNB|m2HNG3-Uk3>vB-R#2a%6Vi*_Q18DA8q{7C;Jic7gL?yv>sXb!ZnZRU^!yEXJXQ!ep7a(*egWCq6~;2Jqlq8mD-LkGh5* zy9P5%*K_GhXB?LQ#Rp>ZCq+o+OtDs6S!VUx`M-}%yY#mJTes(h`27Y}*v5#|AGLHkVYDmY19=pPe2?B4{e*R zLzmdnId>6zuW+f+7aqX|aHx&^ag%= z45Usk%2R3(hoeGC_h2@8g7WLar@pf{+I?n{zKmxi zwEuVLIV}AzciT=aYT#0X%sG+_!8&y8e6khCS-E?|;hsrbSFR2Yzf4)L>~4-ry0>H{ zu^>kZiOnqm#Ss0akI0FzIG+PH0RDhMzBAolHZ%?JZ>;kQ_`ZOh|LM%qP&{+MS2j$A zA{Ks!3^@7v#(4YkmNiTKH;|$Gn1hm(YfhEQm@9D^9i%Hl8Rh$?;S5K$TwWO3#GI|4 zBJg`A64WNq%%Wu!FYOsykWh05)&YjET&WyCLht4z{WFsePA15V%{IQH5S&~g(6opO zeT~*V)}Am(jC@uivzWQjq|r09RYI2BNSDRpCsze}Sns`c4h)ty(kr#v;1=rdax>*U z?h*?^?twyLrn%P5bcL+Y8}KbBO1zb1m~Z+x)!B)yU)^ezmzfp*Qr2INP~tVMc)~>9 z#q|qY3aY(>sVpP04Fhr1nPW`rC&R}X931#MX?*xC_2skX<Z*Ao!ZK%+`dF zptfG$`T<9l0mq_&<5{>&`T+zVqoUN!T7)5`4dbXK%)L^CTmjPzQ4)q@LVf?J22_N} zS*l=Ek)(%$)CNYpX(<_L$|t6jg#L^z#H1LpXnQ$@Q8S%i7W39u@UT;?zD07B+L4hD ziZbL<=;S7CP}(`Jd(Zeo>tJS)*ca_Cc2K1yt%p)5iVib%;-QXwGq z4dPgH7-!B>fusa2KT#mup;g&G^C+M*tXW5P<_IE2*g3{KdT|29D^v{v{Rh^eO0@`y z{eW(1*x?xzGyVzj*$*ItM&{%Y?McS3+J~1Z=M^~M16d>!z&);Wz>*t#b!?Tly&sbX z{Cz-w0G_D!7{J3b=p1!OB0RLX2qY|;>)RVcOuhyJzpgCw@~;^Z?(eU@PM?R%UKkQ% zjx~Tm_|Kf$;d=!i;!gsQ0Y!DN0fff^+>V5asg(eD`XLV|T!7=c5yy1c%x`H3hjpv; z5HTYzh?_tRmXGj9!aoi$HbT+0b`!Az(;FXKfZ?V(@BQ|WB$j3u5p!AOsFpG=$v_Zk z-%Peu^j=_FG<-yyZ3WuBbbt`~szWy6o3<*=WF0cZJAPO1bv$#(k%&McV%0S!hzDsg z+R9s73-SJ2$F%ze7N1d*hR^(eqoCE?g#6p5W@BtJT@b_Vk#}v}rBuQZiu-_%utGfwez99U&YwToU5zFG2LB?#{M(-Ght!Jw3?jslk5WhzA2ZJPsxgK za)O(8dWbwN*eriAgO*XYl#k9g)--b_+3H`*fgFM9j!aN@+oNa|NwoT(9SOs%<0?4= z_?%_NN9gzy_ok!ZenCRI(EBGBQk>aBwxr)$`9+%pW zsz5Q=-0!*F5exb_Q+W;~q8!9Yp6jD8(~>sTVo6nCuDP>DnS7Amos zY=Zeag=qp1#il^fhz}G5H1tJ)mjKaZWiA;H7_<nbYBd&$ z&{tCUCe&#}sDOhhIoN1ssJ&zLAS!W}^cbK`cuvdoj~iDm!~EvpS&GS3DeGVfQ*^$7 zwf6oCc~k?bjC;a!65OcZsQP1!d}JB5A^}8t zpbwo?vS}A!HAL7cGzi2V8rHXaJKJ#)p8@pd!00hvMTOWr2amTKqG{jrGoS6n)%8A_ zVW($MxZt^PYl1WiiK&p$7U1v(h7ZW}tLHu3EocG)f+N>op6}N#0`GgQmh*Jy>zy&1 z&yyEHwEZ|n0)v%l%-fxSshn5n`BJ?G zkI9KAZ)AK!V)T97WHa@y7p|KYPh3e2yfr>KmDaA>zH$O0Y0o?#@hU5;=>w?jruk~_ zW(DeWXz@KcYl+BdPy-xw%z4Mv?^0n|)d(~`Da-6K9Z`s&n6ki`A&TvK^?KTjFLw%y zd#SqK97`I?DUc@6`F04`K>Mc621;FM`=cg30D{Y$qC~zMDxCZ$8-o3}1kFq()^{F( z2GtNWCahUur-_w+4@w@^7Y6adfB6eD!P3YLW}0Eb3%R$Ys1!n*QURjbEGZQ)&tgT8 zDYMS72xF}a2`g~Y+^L}Lyt|HXdPki9>5tUp*4Y>+?m44F-LM~|tEHMA25F@!a;2+dajUH< z$j|F`q&YQ{F}fP+HWs&Bh0TZI&{vc5iWHO_pwvybr4m-+Pr8#@Ll zH1&)303Hl34-`jl_o(q01gC_1OFT8zmGwrvKm?cK{FQr-vhR2^wu*o9rHBqTJKP0E zLO(D=!-Z>xWB6iLk^GE-CcxJ+cqaI^lw&-oNkgy^p+#~&i^ ztWxsGx;(>?M1Ago@FHe-0#=!ThLC)W2`Q$*O-c^1wI^^8Fx$YN;10&2M0%XN2KK#Z zyEPZFN_SZUQ5{%wCbzZ{-PmHwc7f(QIK}xb03&gD_%9~~hz)^O2}9hizd8UU*%1nK zc?CRRH@b6%gWkS91+O(C0ce0br>}@NgW!l;uRGw$tB4^cBtYflc+4lDjSrQzhKczK zK(i{)V6gaP=jDX-0Jrk-eYPnqgk7)(VxHX929G+c8`GKU{+M9iqW}yjiw5Gk&QF@$ zvtHhf_uWrMZ_JF_$BMeShmZUpgPSkORr626IXO8F8g6$+5ER|+fkS^3?)B!Hwo&^Y zwlJu)TDe|H`7h>b;pqEC9#xjm&=XjcJeNc<17mArrHda~W1xBOoEsHWc~VCfz66t= zaKoMCFU5ENCox$6_jW}~E&Kn4R#csVQV>5^hdq$+jJ+CM*Oz9W6RTM2bV|KctXwgR*&!M&O18!`a~jIf99o1C5f zlljR}bFK*o&pIoeaIIRy?PDAx(&?`ql>6pX)&f88b0fw4G{AmRMrADg;jq13G|;cc zAX|+IreqeY{k0DrltI2CI@0&YJsw!cYJe+MT_ayspOhr z9&ue@hGwYry8G3U)3V?Mj>^em$)voki3q;^h=N917$M2H&RD9!dRV26#P6qqXVCaI zz-{Z*D)VE7nK?RH9Sn@R&g>+?Kf+ZYWe$NFvQ)Oca8dh^qG_u#O;#I*5+vPQ8SH9c z292{Qm)A zqsp61sS>lLJba=y4Y^N*{Hl=x6>pTcb?JzLa!$N;{^x)0?~oUi%lDUr%bg=m%f(L& zsWDpzH8-~KlUpdJoWXY#@T+g)#|~@{?iisK)pamzhawrt&aOk*4Vt^}l{?;vqq6fb z15KiVnF)I5yx{gaXqFAbzfsLqwMz~uj|=a#%CZ(9sLrV@#~Zg?&~sr0Mhyj6_Q3WQ zcFE{Be{xt-ld0t5DFO)10*4fcs4Qj*QZlPC?J^%y_Ns=+Ikxca@pYGST~n9x9ulrv zvLPOj0?nvW5XcfA#T?OD-7CqA2e)wZEJ)Rm0DR@0qoq8s)h4(j$U3tgOW&&BOAGCybTj39BV!K9?w9YTCke>@4-*M`@g@nJ)oX88c6bSu*F@Deqv$c+bdVh6yjk(CVd`nWj( z9PIu5eUcTg_ZyH}^Z;ZRC&v>I5NiYjPrV6aXmYgYjbMp@G(TnNTJ0dz)(|8%{H*=A z3nS3m_G-~j_HeG(f~+lYs%SV334+_^<;Cag=Vwfb9;5g1k7rR0pzLdV^Zj=_5X?xj zlL)fVV@{$S>@&R|u->ZfC{DWr%?X{*3M!yc#bG(dAWD*N4iNG#*H{GNV@HtAweJ(| z)v?$~;3-CyKjCvQfWg|SiHqYhl<*PZLLOS6uu_3%;Jg3dVEB&7NbElGjVgVCk0!X8 zFd7lfS4RI2Mq~Wgx@u7kj2b-YUSW991kAApiUTRw*W)C{Is1X+9X^Gq_Nw4t<-{!Z zhar00JjCaeecJs(`aOhl^?SUzU7kTXot=N*bJ}S-4KLU%BR&?Z0U}d}+78LvZa{3| zd>h@>A_hBR5-F=YpF4{2=y{umh=5g*ws^I1(x#V42_2IWDln_MdiGns z^{fw3_(|FdQ1~SNtT~QR0q%(>ltC1hb&|a zJ#Rij>m(J?w)d9*6?ZDjUzic>4=c9*YpW>t8+ITn3sw2Y!${Yje*Dube7_0G12W3x z-xy_9BISbm?ZY&jBe(X}&h8Kz=6IGorCAQ7YXR|b2+Ljc zU$eDds@o*K(Ci6ADXtpr?kRGdKP_~QWF+P4-haMC?cUPD5VW4t{_o%ynWd|1ZVtE502ZW#8$zKEJ^P-)le751u!rCr z3YZcOr-)*gq>ZJ4oNh=~PY4jc5I0!l0jPud!ae=cD6F`MELqca-R&`eo#P!8voEH< zFF%3JzRoAmTKj2`wI^fuGAw2%nc|I8@g|KdG)zR|cwwuLon;-oj%LJRr z`>SuWYtKf!{Jd}H#w^7X7GJ^=n2@11(DkNbi%lVR@XQ;e^*_cMG%ds*ocTXV{20Z? zBsX3UG0+dOEtct&PydV$f!CI=lH^vl?Z*Hoyp9_99MKi3Y2%rN zX{dC?1}jMH>@h0g=1fS6xaswpKEfYn1T zq*cw>(yi6dh9K9je~?<004dsbCrte~n6-XWGA^SfsnJW0)4VsuBF8`#9lfZc&%bnx zfx&X=_7Hg$LTqrL;#l}go2lYq3TYpjPR%K-Bm*(}{F3&xWL zl@0Z?f&mvw4);c4yr2UE^H9MvsK@v)xCw34he`+3NPDs%`T2$Pd@o2gyHoc=jjP^- zPi#9e6a?xL9nng%p^b+B)r*OFAV-*_6Of>J=&Fb&d0EA5ZJXe*I%ukDq6%S0pf?gD zroYKl-U|>V8U{ke>3BIuSn*K_dz2&(x7?Xt(PU0Us$?MFa^@7rR8F4Z^L;bM!Z;j5XRbuH7Q1HTR_+mFX?k zevz%>fWJ^VjAw>U^*Lz^WNF`1=@{uU=a8E{4$N7ptJNazXPKi!vi`kVXL-XI7F2yh zy%m@V`*IQ$b}nTIt?&6|USi|R41l4QI_clyltk9hD5xN4oiMSpLnw+v1Lcpfqk;i< z!$Mk?HSOVp1LzUnM*urm4@v_1Td0?orAbZqyuhT9?;60{5c{|Bxmub*HP5tO z+n5J;r+xFShBm=@Pg2J9C=Dw-1gyFFyuY`=Bw^JT`@afSEO1r81fKQ|JV;KD0l$ewV5)?-re_e+JVM-aIUXQcc zH#np`#bbdM*ne22A;;>EoAJ@bZee2OcYsFojyy0ZnCo`DK@U%8DN;3^a`{DtFKn{| z3!OE9V09i0$x1csR;vm7?8{5MPxSp}q&b28rFFxt)3KL0Y&4(V^tS)S!XLw25@M0p zQjCABLA&+;cAif15*(;t8S*FvOJQ{6unyr>4>Z_}&1F=|OAuU5=9f(zr}QeLV706z za5FK|i8$K=@Rr9xOW=5QE(*_OeL=y{QmIy3L;cHG4u5_{^!t4Mo~EVsBJoqU=SuM? z-GVo|kfrikQ4g0M480%w8BY*)2H(5TP-f~v#dd5^$B}Fmjlffll}u;~l%O1{h70}$ z4)iy*th?-|CMc_e+FyF=8;|G#>m+7Pr)eT6nrkcnr!d>IrsiWxbfgH^J4R0d-kIdR zF(k7{DeW3<6*rAy(m5Q<2?K(0+%82?{oqGSC?R?R%=hA*M_CX8@4knQEL^wVnP+`n zgr`4+Wxgs~i>T8OUDKY6UoNa^6so0%8eg*vgo|~oI9so-xw4Och~&CQhcq8{E-N zo9RHV4qM2;?vpz741KK$q>RCVay%3e_`eFS>p5i zx@>*fbS)%=MegKmq>b3^kcjb7m%-z1S9$)ttdWZo_|S@LWXhFS#2{Z)TixF_v9l1< zfe3E{qdtzGL3zk8Ec`E9pY5`;z9s>r?q58mXrs|Xw{{GcIU@-HSM>fOReVAMupV{? zR+Me^CMC7MENB)?r_BuoRQ8}sZ}5a(UI9-}e0_aeP{{8V6>O+A^cJDIx2~dm%%nXNiYsev;h!dynz)pmqs7U?>j$*wFB<*-VOsi?n8v%$^4#j z%wH?z7zE4Ihmy93-P?ajVZyH@d*+43)s^mY9+Dw0yDefjD4K2jHT4l+b~kz-j4 zbR_A5BrJHA^afID9fLL4?4KmZL0EQiPp!^GT|4=_TL?FpelexPo2lxFZ!X| z2d5th(RA~5iyWBh@bnCh!8Qv^O5)2h#T~sBA$+cVKrcE|U5=yt9z(rzbXIc`i8Pzp zAlbcq?1U+I?bR=;*&LnHBXZ*L+i_2)$~OuWDa+sg_*tP!EO_Bt8N-FExEz<8A6M*j zcSm?sv0*zxH0E5@;zo>o_rPIvALWAkbkBtLQXF8uyRf*}^@M0cnmBrvdmtXkq{(9` zIc--EC6hPSk7Wj+fq<+A4Q}RRN8t1F@{c4jS<1ubAGhxtJ{hM7&?A6I5)fn98H_n> z?dS-8h#epQv>xC{0&FR@C#*cLUlFo%b4`A-_5o!-u}f08Mg}|c(?WxQYZcJVJ@1@D z0n0NJ@&#d`13s|MR0B8@n4N|=U%TH>eO}suP0Qo$uJYyM6%DTP5H2Fjqwzaq$IE#; z?KSwck-+dUiC?UR#x?+kx!UT509e#QZd~k37T`Div zC6Ln+8E)V|Z&+$)#ByYqI>tR{@+nT2v(zHtvYL5$cAVjx5YwdwcG}owKF8I-;08Qg zylHKEJ>K(wxJaL)0A21&$IbmqDIWMb+)i%@u*&z8=y?6{eB*?8HQZm3O=@W6dvgnX zqSHQ7jEaUM>1z>nDUdAG&K($~1=S@AMxu5Y{90P>3a$43i#q)LUna@juib)t^e97n zlh9N_jhs?$tZeJt7f}7{EqWqlY!@oVQ{aWKh1#)g;WW}DyvSWRdRFgL?R@N=zfL-?^uO&_Q} zs_&Lz?X!`y1jAaO?Y7t`gH!+fU>Q_n(?lE77KNhunb^i|)?rgu6GYYYH(A%-?3z=< zQewQU(f*!{q#zX{CSN&{+&6K6^OJ#vfG$B6ChV9zrd zOw2R)=tIMX?sg0Ac1J;V)M>Y3Mz+=5C5naGQ4DqhqwwgV9|A5al-k05T_ly_E96a0 zgiCI|sU_+%8+NQzLqok4XW0l>!;qLc=sAWkv7p!xEIwD}PtLCVf&hBz#|2XxDy?@% zXd*VuVQS!mu>(3TZdI2^nNsiPjUXQfc+`&W{y`Rh@)_iS5HF7q zZ|}i9w)esyAS)Pl_(qLB!fWl)EpchIQ>mc(nWW7FcvyLLj%?8iwy;IfAn8d z;a;XXo!mwKmFNG!ZBD@TGp|0u=PI>YVsLd2UbQJTq07!q8@&dXEtDj63tR3$ngde} zj=Gkg3ZPyBXZkNv-~T_2Z=o=s2=W0}?fB=Al`~((z7ilJc8@pSD#$8qqGe}+tl$!; z@Hz;4=zYa2V(}f7^*HS=<69qM&P$7Uu+rhQ9^2ev)gcjv# zrDZstL8K{4=g@sq6Sz=^H6F3iz5MtkUAZw7X>%p&dFniUf*SboYomcNmdkS3@t#sw z+NN+)rx-Pmu^-${kXDc7K*9~-cPKi`_*{HCGR&JJ9$mKYR7xRknv7E_(+Swxi`=yI zGKSwi&qEH&&{OD{D#pLy+d{FUEb z$nu1n`w!*RDx^)}K&R?=L;I8PTT?2srXU9dm8b^Nvk0xQh`Rj!?;a!@8Ox=q5@aoQ>YD#H!17d^yQ`G z9E2$I#Ji}Ih)jCkIJ)yWzw|p-VMJ_dx49=t;KlPAAD46%&#qda-^kzdPP$qB1HcT& zFbxFf5-q&yhQ@eq1OWIu0D#$QLpH>XUr1X%LR%jrlHrtN)4)Hejm8T;qFO1^T`EuI z6p39e3?GNz(}9)_-S-6mh4D`v@aHE?GZhu|3#N+(45^|~RAUVm8YXO6Ce7OUwC$p@ zK<>6eMT-;QVpPySmL^etN7gWqw|_!3xCN@cvR#0D?f5?U#&SOO>m*_;gY+&zY#9ba z>P=lragC40GC&U~2Rd?xi>`=EC{(Zm+stsP`qc*;gW>7}J47U-na*v3C(^HstS89a z4aPH|HcfMoVXN3BZq9N zHeu&clf_$w7PBmtIKy#k{(o!AE~lbfnlK1;&MwPEi|PO(?n7fNSMMd?eHXpQXgp#h zLW>b?HVie_Adcz=-R6DEaav!+e5;qreNW~UMznHT!>>9yU@u|WtzW!>`g$Onaq1Aa zzCrTpAH~2-3nkfIh$R`MOdJs1eZ~Dj4IR>pM4LAw2Z^4H1I4kroke(0U+h_)DhMvc zpMvG#0;yYJp!G|H)@qACgE1z;T?u`zUXbFu07q2zbu1lj;MQ{_ZML)>D@bvVTC66> zz_9}w+19Nk1KT8T;k5Fj8CNm1oAg*xcf~`@Me%z7j(1xg3Y%I%)=~&cI$S<#;!GLL zpHl3xCrTh=R=zcIj*m{0LgSI;X zE^<7=TGvn3PPRc9c*))@Jz0s0JIGb{OcpZW6ypuXcXv^-N}sI=zx8gYee2Eb)vee6 zo;%thg&)R={Rvy7=E2ftx#ozEY@3wjbmSR-6*By3`OVb zflc2xpM1Ej#7LGbrGH<3z~q6*Y(!+jrPpJD?3D_3TA$9`lS`FEtdh#>o7@2b$Z6J@ z@H$c>jff@VB3^ZKR!sd3@Pv~otGckp0t40jkuZ>9+JA?9Zhsk6p+tCkxyD|(1`CV> zys{_(W)V{RGkeqKbd$F7`tI(Sj(_n4pxaj8P=Dw372J5}tpB&Rkr71W@WC_R`6-F< z3W2fJSDd0rPEf)6nxkK!7PArHZaKX;2l9_7h(LANR&VDEaM?U5LUY*cg1V0t4TyYu zgYdnbl?FPUR#tGg-``+pZ;;aoI&SWNqkH6T&+=dVtE+VeiY$ecrj@S#9$^7i^{b<8 z@lzr~V;!w>-?$Fi{Py&kA1Vz@rAC1V(#G1KC8aUt&W`yc1vY}o{^$iOS{O_9F~=rC zY)xMBE-fu>z~-~F=L-8=0g#QB_sMDDx6^jzyv~Wt3R{C+^SY{+=uuK+g#xiy$*kYJ zHC7!}P)a4ZxCZuuW53{;4p`G-mIbqRlzQledEvdNi&!vUL@HKr+bCN`E46+j>;w3@ zV3xceh!;Pgnl6VEO>J${S`y{Z0CEp*uKqpCk>0tKIEL~Y7<=M(;6X$$D;s`%+^x{n z+vIC=JKXr!0HvZ~MAE-RC!d|2oo{2i&T-QYu=b)ajp_Ey7HA|cKv-`3mkt_%YA5O1 z^1nBB?BTi*Q%*jO3`AeH$SM}HJ;B>Vx{2{jaZ~wmVHfWCp@KwMrB=croz&8_LcaZV zzAmuzQNmRWY!nm>{Ehjl5*tTJU>EarmTC&YfK++UplQcWR{{5B*QSC zTEJI=hOV`49*=eTE&pptS-g>G7j>hWoylonuyEU2WaSe5P?Pl7veTcHywL?QPz$~B z+@5)OOV@40iuPbppq?3GKx3e)l{zVasIJg870M|}V%W?jlbz zDR;a|Gc^?v+x$j{m{BfyNDhs#UlsYroW4r3jLtcMJhjHDpG|^b1n8CrR3bzOV7~D! zj%rf8NRNCw>qxlCyA0h&kl84@!Dxa0t$KzS8Ff2%6Kc9iSE2QtmvNhf{klV<>}c!y zFS_vSHcGudlPco@(0P=G18fa5#>EPGSpJrZHfkH|FjAdK=$`;$9XAs8IDCj9-Jw#* z8n-dYx>rc>lsqpz%rp`#?A;1ymfL!P$}-k9+wjymHefC@=L6=~{-t|r*jT_FHfv3E zVrM7%V;^>%!y0yFbsaLuk?WU)4kmz+0qCl%S(899>Q!$GVBQeRJ-o~Xidg^&BHm-e zD{}T3c1z{AkDUv~%_?Er_|@5ia8FCuU6=Mc-0m^1SJLimk@V5S3xHQ#S^Yf(^gsal zLBt{cgpFQ3lufX7aj~{z!l{4u$1i}VZMjytuB|=@28B3Z4O4sK&={w%527(F8^quf zO((WkB=#7D%Qb9xu>LoqQY-inw85$QJA#N+-7>M094ztc-20l*%Y!a_d)7~f+CyR? z-=EE0Z9=%n-jKFy)2Jt1zgm-NNo4xKII}-Ris+tETzaTmhZWS@|+ zfrcO4KsM0!6yB>CGHVSv_3O4j@3rGb`Qr&?+@aQ|s6QtXD2ZZ#xJ4p>FrMypNUZ0H zjiwfajTbYXHMWb>h(S;htL(8mP=}&6LW;cGq*b@^kg%(@mXTl_Z>dx}#C(MWR>UrGYkA}L@k>e~D(gQXaeRdi_+KeIKzTM$U1 znh%g4@op4>La~ngpT24iM%oHa{4Kam_$u4G<_4|moZc?5(v?qX$P?VKr}OLHJU@FX zSlhLaT?5S$mSAsS@SFIMy^^(^uPiEYWN_XuzD5-1j^)s`wJ%7OEC5Z=F!~~EsEAhn z7TV9e4dE_nwPgba@>fLWV$>khK7|;n>m-5*76LM05^4X<-`dm?H%#&lC-ijdGEwRR z>e*k!nqp>he7P6$wj;n*_7AQcmkRVd4f(ZQi6AJ8Cp)RB#1IX2M%&S`IsS&MLmcna z_)4yBWvuu)L*|caU_zeglAkF}gw8JNK@WScOSVy?tJq&|>V(fVNXW=e4%+wF4SCRc zr4FkOuR*ZdoK^A1^O*Z)YhH4Eo*T zK=w&2U0j2+V5tp)E$z4vDW9Yu*DKco2*!gVJT6Ef3X<6DKr?i5trNZ6U<+6}BbU>A z^)2lY?GYY{ZG>(HW8v{R}!w696 zF}=XlIR#+7i0@1Gor4-^uLw5Zkjy2K9q<_{sVp0zTH&@KSwD3JDqS63Pk^Ex5Fum# zB2S}VZ;NAlI`iVkb57?3DO>!lGjyv}-CDck%=Znszj$x|u)CRQlO1=72)I^$U!Bf` z{y4;`%{^15Ne&3hxLJU&J(&=wESBG(fx9$MSn^}9f_XA{_>6-^V2%)K-YvIeFefZ{ zN6S0EJ4Um;%@w!vG(OV`_8BGnCly;(XUa~_^UMFyDExK-=L>kG2$4BVSzE5^LLD{F zo4hh*aY+?rZz45;Ss>eDRhfv4QR1(I=H8}U6IC9C^$sinot;9*&Rs{IAJoEdXyHqG zcU`@{TtFk@U`Ry5_3wxWDdY1d#PxsI)_58K$$xYBVS$?JuymV((kEbZoB^xQG!bRH zuJi5GX-8+q*+My-IOvzkJme!Sk9bdx*rGZG30dVkQ7&3f8o0(=EX7vHL>QPPTi_QW z4g}rPid7hnV@>c@4cyo&5$N|j_B+%_F)2ty>X*kED~-A0;?Fatnp(pk{a6%NOcxpu zBk_Ffk(4u90|R1UvX@PA8K+jMuMFc%Lp=DG&)yOnGv}eldn;&jSu!28t{SSZO4ey2 zUOHx!ctdets^s;K5d)V$&Y%OH^Zpj9va6-uTMo(*i)-yv>sha4!T&Z>$*BMb%F1C3N3pN z(k2sH512)fVE}cJ&2QP{VtYkcI&*}+V^~(v3rUL%lmZnHW6>m`#t9OBR+^N3Y)2?JZ&BD&|Q)n0F`fFF?{?+r8Qy ze%wn|o^=d?c{tw&j=z~Rw=Kc#oojflv^3f=#G*Sl^QnRgsv4tC-i7C!s;@^GB`%`g zQx$y^VeDF%WY(csY*GqLNgP+?CUx3Xi-RWzXMosnkvgZR(;X;e8s`CVONt>WJnB>WkK5dVKQnv=iX6hF~O@44Mhfz6aU znQj}GJ`zTM*f3RDk76Q};{?&SY3}PQN}FopgKeF)UVBPGf~i3XQHt5~xXw}bGO*^8 z(ZzMlv$tM3T0lc@1K6B8p`+yok}ki7=4PjTKNku%_c8RFCrk~sq8Dfy?VsV)R)r6A zOV$uNPva7#ybFWcXkE%8S#ZOQ^Y-w4s6p9Ep#m{bxD{EPkm=e+3vyLockdfRf@$6d zOG#m`+Kac8^TLXmXV>vX+pHW%DATpQH9}=qIYoo%dSoBT*0*9|*8;fkn=N4nAUR{{ zVL#)SM?y+Let|=cx2PDf%+>vs%&VC>3`M(>1`0+c?vcd@c^QI_@S5Ob+f?MV3F=5^ z-wJONN$!wg3kKG%)bkiNevv)ov=XDW`M$b1HN**5WhRQj9NM$0Ya$Tbc=9MtJP@RDmIrDmE0*GzQwbzD7^kr;S0^YP4_^ zrGanCrkYx)XP^9b|L5iCtSD8u`p*}|>N(87J72zGb2bDz6bVmvaG@X>|2W||fl{!t z18Gyc2*sLk$}EM@SBWXjTscu+?GsAb?UhH$)tXrGA~8ihs>9Mk6`bdqZ%98 z0d6sh&?5+7<{Jq-fs+6$%~jucpyhby_eFO?$HdjBbl!Gy!awV04?A!`0=;HVFZX1? zE;gRz?MT_t*ELkH1^M!KH^4z${qxWC5}xb+2;7&lDWLG%nQJi#0 zOY(I&b&^Cw-brT^0~FLfYZbM97Gd%wt9))`tu5*^=mUqqlzDot?5jH+wULe@WhdgGOs?<68JwG*c+?C&PYKQu4Qj!aYoXSGdOdyIe@z)J z21xgZ(1n`azR}i&5}1Q4ETjtmX!@%6%8xn^Duowlrv^Q$4=gKS_lAs0TU1;}U*^}S zGy8s#Blc3>CFlWIfe@`j_PX-Ud;^zYbFO$-MrTFm1@XbriOFx_w3OjD8)j|kW>#hp zz_A0=WcFR1sG(Zm-ojj-CLQu-{u-LSvQwZ@yIl@Hx@#vzX4=LBDC@ER6v)OK1XNgl z{@Ea>k%N-l<4gS(5+pdwRrW^f2)2YKU+&})2GaT8CO)x!L5YZDP zomnURI^CarYrNh4=6QZRZ#}%p>v&o`J8k888+9FOSb9qKFo<7r<#`#cnsMSF!y$JC+mC{FW3AMFeWp$z31@8mx~_*?9#N%swVvIZrI9`rF^)qpwD$*v!(Iv zsqdgxaS`La3AZe9kTs$!RY#H?O zSZP=%?46B|Cc!HcGAO7^Z)d`5;bvVhMDlq=rsFbvT1!o4>~;WspiRhQV@HJ8hDO`k z-zbwxW)KB46dT8S-1vc1*=*kO$p^eGu7?~IEf`jNJeouH%{*>w$rdYU{f=r}ay4o7%Gl`>^XLsIcnIY8S ze59X&qm60uw^?`Z&#b~PEVGyAKvDdjGBzJbz&HMP915U+hN=<;wHt(g9B?`~IGQdS zhZG}|_~J#@x3`CFo1mCPe5dQncMS>xE_a|bG?quk#TWIE1MqJH5||^3;My9Q?2l8# zTm)ueXoHC7O}+FheZO>e#n<3W#se{ZjU9ENbFPsHNByzIJwA9WyNcixFBkidxZ1i? z!jBWy@SA1e1y%$LGn&4ZScKPjW*+WwlCiQ2tLq{68jl&Ujr3 zu6_%j{*b`Qm-I3eH2IK}^xn>K~qgspET0OQJz6d#Bi76G5G`3L^`p24IF9mBBV-WZ38Ol(=GArBHl zH<{dvAu7^MV#Bd^p)yewB~d7aTkTVG7ZLWPK8}b2wCo{Oh%>e><+%o1wT05bTyl4q zqVV!jm08A|ZUZO13tBAMk^%=eqPBA+N3R$rIu7Yr2la6di#cNj^|Xpk%dmhfV>}d{ zh3_K2J40rQidaFd2Od*4izJ;f4wjIF&v&44Z|xkm%8*gs7@aE5yCxT(VSPBrt}RkK z0^Kx&V3c@xm%0V$yzFTW8Ts@^tWqE%$!!0Aw6FMiSYusad1T1q>yj+3O(!q-5JQsI z<1b9mUMAi6KPgEP>|8qQ(9btgsLhYebyNzSF=EJZ4XWME1~>wrI!MV#ImacbSVo77 zJ2D!78y=PWaE|6zyhPV7h~2WGrH88ZMEIQ!y4rGZ-{vQFDF`|#h#BfXC&YL_wQp&O zClaGKDkqNVZA-79udj5ypZ}3$xUf{lBuV}uCHR-+Acg>_KZG^bS>F7Mf#hGPlYcmB z5TBtJ-vl&78$I%b*AX!h0HZ0NP-on%O=wUZfXPo-&^m z((`}lZU9jB=0N=>&^7~fa-yD8O4Ob0Jk+fH$iQJ?VXgnw8uRjasrdS9B=46ufUAHH zeG7pCnX+~Rs>MMJ48SJ@x_AK^;R~tE=_x=r1Qe0om!22F%+KXOGwF!Q@(2Jot{Kqh z6BHeyEeMJZY8@23>Ud*7@oCKWURfYP@%L|D z-iLHK@4rA1(dj%$r*q*j_rbef^aKtqn$wNi_AgtL_@;J3Yu5J;m|w=eJ|P)O7=M~R#W+lF}i}!P&Ovs8Pd4!9A>+)vTJBDp#N9oWdDCfPRu%= z>1OZdn51K>ay5;Kp?SSzBQkS9|<-(FOq(1AKQqp z>T@s1)&tv%MR;%Dy;&LmD9s<*fPhaK|JfUuWYj96n=S^ zlKUSXO()%_A24hOcvozvwYptj?l(%&;<3ci5g!r7gkV_XN-8u;zqlcb9huAjh1VJb zv(n~aRg_vD*ZW4kI!D!|)`fk8C6D7tx+p@%`XV-89Z!s-gUIsTRKI2?Hvl(imJRmY za`0+);9J=8mq(#Nl7XGdyrXX(EV&6{>Ku#aPZ8?;>hbE&sH{>Jq9_^?OU-4`=i=H!$-bBtRxql~ly;I1nJU|*!#V3o z41>Q^N=AOOhcJn2mqmQO_h0EJfwT7t?#_VIp4B7K#n9f{= zsiKaU;jqk{r)K_MV#|tU&hg(m1}w9MbRB%lYY~DjWFtRLU}IL0+mW(Xmw0)4mE>fW zk3H(E?b;@{O`OrZQJo+L0SLwI5N4M9f2Zbol@NCU^34ei7$AXFDX6}=IZXfMWz>L< zh&S)I8kV^?za{@WNb`%Eari$6VlRD*Iw^wJY0Z_65;p(+ z-t5(P?g|r{W?NmB%0F!D=#W^U2c(c5l*hlw8=RF-K;{s7qbaqSQeRODnQxorI=yLu z0E6^SGhJzM%24TF#OH2>skcS)w}ZCz)&2c_qD^-m;6b)6!claF~7kHaExI9G5ZQpqM)I`j$ zz5Ee?(AJ)5>iuE39{ln*;5BC2YdB@)h~bw&dz50HJAu`$FEk9V{a1l6pH|A%&9&?LUm+!cAMlTruZ%=NT4urLj zcgZ(IGxo{s`5cP1fABobDhB}(gE0F4Xaa~MwObsc26v7Q@Yj)}^-culG$@&Rlz=Bs;FU zK_@ci6$2e3dJJ`8?QA$naK~VVrg&3b#=YV(@#YhOI}Hy&Kn3Q|_x}BToRdl(drW_{ zOAZa03dqPlFj_h@YbT~r`HNO2Q{FTa(vPjPGvtE6YvO_Ly?+7iTi+N8#6@VQK(RlLAlJAgGkEE? zH~E-ui6H>L5X)@8Xa`JVW4a>f6SQuq*8bLxU-F}^6WUt3?leYGLasBwgi_B=&qyiL)1U`*8;^Nqic*3%HCQDh#w55ul#t3(mg8r*A-!HFNp=GWEx;_$O`{$GQa zvzN=RTZyA@bHvM)YoEpwrSUv2|`yE>L@7Y6PW+7~|0Wk}bH z#ArBm3GydeTRXhESaaU$%4uaIRRY1!WW|>A1#eRr{2lq_+!Hbo5{M43RhqTM1Z>QF z*gPrx00I9f8@wQ%CZEgS)Fx;FYp+cTU1y$4Nx?;{dkD4q=$61H z`JE_o=$G|jCnO8PW(J<(hTE zpl`dg>~^eM&yy=kcYfSfO|Ss%O6mv_@Yd9Kv@qa6#3ukYRY%|#k-_!uL2!7ihJ)ib z9ND!4FTBn>Kn-Hm>FM(7YX6N3L6crcPOH=QLk$|6eHowkg^-cYyDvZo{zmEYI3+B! z8VELW1|#9Im|1$l7#_KtE&^EnMHFIEQWJM~DAt}E#9D)HWEEi{-&g3?%XR6c<~F~5 z%$Am^Z(=_Gw#d7m4q4)|Ac`bZ_#m&tPK`Jd1F(Wj)RHm?kFZ!egd= zJ*sJTO7K1R7Z*WJ*Nx2o9nI+f9nBG&u=;oJa!+Yx4!^@72YRg_l5bJer@qsd zogD}VApF5G83aol>&+=1K&w8p;;AqXAy6g(INsL=N5RiD<_29i0<}g05syxtQD{y9 zO~N9}o0cae=nzHrD%|l6rw1FCTya>^jDs`T zCJ{qk9kvjM48#s6-!m^wsm#ktT==(ayZMw7e2ZZ|r85pxfB2G6W&XG&F^2`oUr(Q) z9CS{HaTEyJlRj40%f-3F&u|Xqe8!Msv6N0t9eRy!nKAEh9zW#iHT4}0gP8WA^WYs~7kfZ2{3ix_g`%J*Qv+!u2ga%D)VFdA5&De-Rpv5KahK}xU`j6BfZI1eh9q#iT z+AahOg_2*~*GEgtOt&B`uf{74h$cRKI3QdjjDm4IYlv~PvV{(Ro~&Jg$Vngc+=3I!=u{nMj8n98N-~(&82XVH&r>b ze>c>g_Z=KlJe1N4#z_9=4h#2{*y7)~rAE8j^NH+hk`o!|b0#%q2q9o)x=Lr>2}9IA z0D%vm#@2{23rH)Ik1cdVcwIyNp~B6PiwpArms38 zDzvq3bARE{*3JN;`QdMWW!tW&1eXI}@$IXs{tceinR{B|sN}B?{9S9EiDF0Z^X;T#$fj;(L{!K5zFbTRtAK-kbhtaBwdm3?Ow3cPZpGl_%TG zHK@y>&(XnkD*1`NJTr)p@=5FEH8)_V@LPbU&Rtn+2LfO&bKm#yOXe z3Xvy}vuEa!2-(Idyhn*k&tg@d88?{h#qRa1A*IcCOk*AwVYv;@E9%$+RK`V(AgHSi z9dGB&mAx59WINS5V@dH!qonRvl+4@MNg7WZ5{1%YDsb0CWZa7uBSCt8xw)!(SoS= zmTT2PsX|^*K+J+*lZk|AK+-ib?7K0662@c8{`nr~eaUow{t5Nu*<)=YY2f;ZFQPTS zkv)^zIXhW)p{?IzGPX{ zOAD!_Pka%lQ~M>S_HL7d;VZ2LFQ|#vSY<_46Vv-UN_TJvLL_5V>J&;WxA62yA6eUE z_8PErcV!2|n%|h9LLh%kg2fPbVAgdry(m8BUZ@k&yd;8frYlwIY-Ny@VcBv><`T{Q z!`jv$V|Q`Fj}nQ2$C^mY1shkvl_ zH$6O2>Ogs5V(|ev@JhEnAt6(20U30d+G9vf8vgJ4O6cq`4DpQ-5PPX7-uVSgjGusD zGWXylB(CEw$0f`mJPxE=e$_W4#(5b#)fsI4r*?Rf?>o8m)&hpD7Q3ptkSS{8QMRTiM3`xRIypZoj=AVXCoGjjUVCT;~Vthf`mAdfKwg3KEek^%n&2ABlwXK zIGb$TJz|>O|IqgAge1i$_khB-oynFn<>JBh&7JhkC~WKqANWhaUGhaJ;0j$fLKXzx zEygf|&aUm-rA@#v?{)DcIqxIS)(f#(1e=czlNl;B9^BGfCg*?GFjF>!vS^;CX3|#| z<|3?0)Nw}&Pei6f*6WesdgMAkNjs&z1EV?5uk7V4u^7HPXZ~6cY~6Snn`zM!NI$=a zkD5s|3BWhwip#D|d5AqGuD_& zWSkRQ2zL`IafpP&X10eGO_+dAbAQ&O0ZT4!&U)Mc1?g$0L`)XPVh?l(zeloM6-@vY zKcb=9yk``2yw44Ql)h90u~Mg?D-oye40ig&I)bHR? z{ypDZM^gDt+Bt7( zt@0R$8M{O&iGrh7?lwZmwk$aEAVD20CaYYTO8TLNrCER+NkGO#)$!--RyWOvVZhtM z9FKrp=HIv}AHLb)tFO>TVCbXMM*qdG;h8~a=nVUX=(2PyhQ7Y_Oc-oLL`47IMc@fq z+Ahi(r|%r5isj_4HMrOfb%P&FncXt*zAfdJ2EnBib1gMI@LguoPDdM>PWW&CW8bq8 z^Z|HM%cPLgf1Y|uV)>3fFJX?!Td>YCk6qE2+}{g=9ouqZlfEv8OT~8#-BO|*Q&_{* z*hX|T?M3!07m`opm&km|RI;hz%sB$CR^>Lige@j}g%H_Tv5SlN3MwjRvA4g;`E^;HaUIgalF^ChRxZA^Nd4!g6b4y2B{ph_m_Dqj^ES@nDG^1}ki6;x;vNg-0>-);hw{8n;fzn-~f9vWPl%euB0 zly#AR(Ef@d@J%Cf`8tE=IIFyd3ksYS@hjdjerE}8Pqqt#Hafc~-S70sN(uLvi0KC%5L>9IPe=?B_p~5cA4fr6!dV`Mc?Sy=9@C}!KA8G`Dl<^-`cH+Nqa8}2T=a#qN=UjqL z$|7WHW@GlslY69lF{7yc)@u2)glU(eyeAsd+d(9VVh$H`8T{n}_%jF94(Rr^Y_uPL za^0rNH1$#W2ogvCxdYw`^YjbT%R)Z|0z3PqY*~%8;9bN~ofR9heO;PKh@70v-dd}f zlgnHjf}^)SOe;BXT6~NhwtW7(2h`EyK26qSoa(y7F-=5Ot$JCLB2 zf6*NB)F$ND#AQS){$-Ic8tZ1TH?dfv*e`1!-D_JySJ|U2j4vzBhBmHT`QMMf{OQI; z&%yqZCt1~}5^Sv zmD%){ab;S{yy+qJQ5@LBDXwzTu^-gGbAJm?2kUjSrkpYf7T9duUT`%+$Zg-#f#KF5 z%XVH77*5G7S^xL zOJne^*WIU!?V%))eU3{rT#o0ceJ=k)BkBo4gsth4}vriR!ZVxj2 zUydA=uhqoGM$4ORWnT?z;To^#u?MQXvPP2UD=rHaG>cpgR4b8LFu{!P`NqD=(MO#3 z?v0F?4AKgT%$WR2zfg5pa^V&N18(DZ|Mgu!=)8MWmrnT-laLfHUH*!OTXE5v$7up((Ww|sX5%{)1u4I;P` zMg*COjlxfTUa0r4=udvvZWA3(^~pK>0pE+vf6&g*byv0{+oB6a1rs3_Rj&%#9AoFG zFDP*61|hlr-c8NG#j#g$Qu%Ta6*FD!%%8AMN}RT@11s&m*jy&AE|YX9L3{2NQu3Ee$MtdKFZAt1yHK7e6)sNv(tS5%T*Px63nrjApXVfVvnQ2x`fT~ zuXhst*QKBN1PIk@>EocR)DH^AC)mvS9xt9XE$L9@n+tto$JmrvsmHu=oGL^URtdT( z%3sde1D~J0)jL3`ZvSoxnclTu5AIg71IWOJU(GCH7I?%cSgo6j&XKJmt^W#=MNdQKI^FiWhNEq~fMo6Aal_`^d|mO>D)?|Qy!Y4FPrX2Vxi8s0I2h6}jV z_?kM?I&&S@On7qo_!Ag2Sa!xs6|-Z`(IL%wa*8gN_}s0qHXOg=+epTD^0fw{9!?j) zVQd+O;X?t{X_b}ztE&Q2PL2?RM-sq87Wjl!*VS%E1RXVvcV38tteWV}Qj@DFvmAI*9cq5I?s|&r`?MmR9qE;N< zxa-ueaU%bW`o>wIEb9I!;nL?bh2A>sE$XMqNIQ(Z)Ou6d{_|iB1xJ(7t%#ZdIR}pm zHWH>b-3C+HyDx7kiAQ;j~Y>-`*$=gE%eg z0N`0y#{LbpjQwfCo6bjyACnjHVW%pjHARsd{pv<(fXp&i7}@?j z(0)?y?E=ne73uX50H*zW=JmE~7VQkUNOp=)<>=Q$NmSNSX!JAwTHRm1!JIeUDyop| zY`_QHN(sqoxNvD?qmMK`J^?81V*w~YP;Q~k&06SSbgm)Uv~6PkRMNC1pD$|-G$xoJ%oLJBlN6;lc`0>r)YI#W~25magZk=Pj2F* zQL((P70`|!M{5et-xi#Emn#&jarV{EP~&+rqNU7oa7^5w@Rel`)@C>82P0Hx%yOiP z(#pNp5um61n|YM8T%O;U3U2ZrWcsZB-hJ5Vh0KL;#Lz3CQ>d`fCzv4zkyqy;M7Vo( zC1Rx%v#`KjT~{}@!90u`wto8Pm&wfx1QSDw2PA=S$M)+K|DSHi$Ss3XQWY@6N_l@$ zKk!`w+@l}xA$=gg*EW2z%Fr=`FaqHlimwUFQMp>=h6)%3M$XZk$cIt!SdG*DE~xU) zDl2EXnE7Ber$Ryq;Ym_+z8f$zAmJnEWxtc%8vl7@v4B}?lYAMp(pI6FXnz};lu-5F z33#e+X?XImT+A-(Q+b=54z88eh;82xqLS|o`cW%p`eI&J?z()7vOT#Wm`aM)vI^Vd1grkV78;Nw|Z%8$5K=;h4k z>g--`sacw~+Z*^#|6q*Re0fB1iEebLC_lN1kuS_|6Z3S&nxmJ>QPlEKc4mIAeS@C% z?P-FwSLY4R#SXR*b3hE<2~$M;MrWn>by~saCKQj1en3NQK(#X*W-la8eq}>N1lO4r zO1WSp)WjQ2flo8Eb^HZe{5e%PP`yl1OB^oI*E3Qh-vt)gttk-3Ry^p|aiT2P{i^tGEH z$EV^jc20B-F-}UNTcOd0(i8j>%gJFXs6tC+R^74}3md8=x>iRUH7y)J&$uy*=xdu$ zS`{yLf`s~p?r$B*S93pL2}YoOs4Vm6;0twKQ%6=iETS4Ynt|I(AnQ94O4&R@{@Hoo z5_k9jwUEz05YQ%#8b4z01KH6sQ0=(Ysc51PjuaAnQ}&%rH5nka17&!E=r}svj}~xN zD<#$@U0i-9T>FHM{7P`~@S!r@08!;EOkcW^NmGqIDcEZK4*MORNXdN0q_*XP=|NRo zNN{GbeQq9tY`53Q-`WH|n`Fc8jneO9gV4A}j$@E76=WWl9s65$#Ps2@oFTy6Zi{GO%k`gB8W@arA<#0afbq%8~}XJGmJ zzmUl;i!P7Y*98)~hYkHEUq5v8vC8L_2x%53pxBzwQ4I=2Zphxw{~8EN#^ znrP;qF(?H`&pfef5P_;OJZg==)}P_LtK8<+R`t_HfY$D9&*MwoS@+%RhgX2mGlW@- z5El2BoTA_4>T)u=NJ23!nni(M33oGZ-C|>a1K>#5Qki}h8C(kumHV|{H4XO zf_J`?sZ$hdG3#h zkfQE67M&OVCsBCgXS4(vlFH-7MS{?)ZSqqst?l=ammgK6`QJ6^#O-1#cO0TWhng4E z96NwlsC_gMSKX?|XQ!jxNM(ppJi0JasEh1PH%kwVQZeZ_OJWlU^ z1z`7{LGX-@Ub%nXAKU&rv3f6@`5w*JTq8ku+qVd0^aU zW?S8KWhK+^(DHAqQ!*06amm!z6Gl-{F)~T*1<|u7z0>w~g8=pCwKS}k)sftEroK}y zsOlU63L+kUAn4O6(Wy`8ub2@P(%rrRIG^+8gzcOCiGQsHA3}@TIxbH)mQtVyS-7Ep zl+xU)*^*QKArNz`8wZAyWzd1Lf34^B7|+(Gifa8L6{K{Q0F91*QgN!9%5?~p6FC*^ zRq<~vs+XhbNuQ9%-aQ7pGepQpREdoG!>ny_{KaL14RQ8f7$Io%TM#0%P|jgOI!z1Da6x}6$M z#RdDWj>D{jJgoGMq+ZXWRk0`7>VlPDj%sv6&oumpDF#YY(ASgY&+e(|g5$p}1?CYf z^6rXXs|Y&I+S}2d0)7hXI4H7d^W|q+u)?Xu-UJEZZ7<{Ipc4oYo z0W6Wr^$u$GfMKp+Pssgk$jO@X=K6AQ=dbZeH1k&%@I}|iY#&DCD}u+fX|a)58+0M( zID>G=t=tls-?gQNbz2+N@0fQp1?btR%axknlEw`6sn}I>e93pvqwB+5cm(+6zsf6k zr6<9`nNW@5iceq)vze8Bc*aT?n~mDA;!4;HoPg2ft<>A8eX$>y@DgT0G^%9`aswq5 zz`}xn4EN6`y8l-ABKjV(Rb%PEcL`4soX-)l$)1Lc=E+lf zT-4FbO&H_-Bsj!`1MR|7sUp~M8gWl^uvSS3?B~;&`5Am8bQH;w@M5v#^xo+kJBXIq z^S6hON%(lg494bv;xWpYDIh!RRJCv-Nmk3m;cM=Orcexh0wj)GJ((|!?8;Kx(8t|} ziBF1)F@{GdnV4BaDiMi@PVwVpmPPq`3yq8ClQnl|K3%qn zWZ~O(lCsQKF3faa9aw)a4``9mZ%yKU%vO$#`3gN{LrKErrm=(ke1pg^)n{h7uX=*K z&!j1QF7B^0-c&&8Z}I2$nYP}QUJ5e8flQ97I1;2qM&TiTGoE7`(xEd!fC07IBDvNA zlKtrz!Eykf%_76)7*m$jmoz`)DRBfTu|yG?crdX9yc=QfE|oYXWBbXBwMfaKxr)+U z9u_G*AVS1Hg#@8>Q+SY!-nyj7YJw6=o|(T1L1J1u z_^27;doy9E2C*h0hKCT=w%8nr6(fGg71!pRJD=p(-=2*SM^I(1>L z=-2H9&rxg6UH1>kPlZKU``x98kTyFli zAboFBdR49Db-fmSvA?OzbW26O4lp2!Z0X3O&lUO`u0)w;Z_vk`!qgV_5vmkCf7u7F zWGH-Qdb8Nb&a3+qA$cnzt*TH!A%P4G+PeB{y%*c&>%SgBA@}ZgA;Bk{7aMPIcL(~; zMN3tp9-usLhBHX~@@er_-4_lAl|U@LAL)VPKlq{4ImjmHQw9Ay8n?|*iK%)6CDzkT zfL;s(`NOX_LYZo&wOpjid-CPp7-{-B-=AEpJ4%zYsEJoHdPj)bpT*6APqKgyF~J^1Cbg7+ zG*9Ar#1p@zr(yPrWV#sos5*Z2ax6xl#G<2vnbC&@nET*w8gKnwRp%#Nh#JX_Mh>q= z)ZEZw0R))%gSRO1d%f_nARZH^SposAXJ;)fK>h;eeD)mW?aoPCc!;8TmjGEip-Hhd zblnO?LKD`{P;8qn8%P`%Nie;@CLVI{s_%R)lH5!ntKT;PknPjbaDX);uy@?PF7msT zmncM#7O6c~g37CgO@`b`W7X$69GWMRkb)N&Zeck{HHY=boPxA zPA5Z=gT(NNMcu2`_)@O+bDE!3f6aI$vFcJ6jGu!SNOcyf(tf+xg#GP1<$hyPm>Vq_ zIdg}6^`1dTT&Je3gMyI+BdyIW%y5-BA$6keJCdZcAFqDhO+KleoC5-I08UTsue9Py z_brj1CAl1DnwvraHVu~@v`CXLY{RLl4ymBv;a1mxOMR&OVGG7jhqc8;T$)zrUBC{* z$jI2{_Jqj53c4LnV}!I4Z*$vc=zMgMYV+8ph<`w9Xl;$yb^)I*74$tn!%D!nxtPM$ zbv>{XlaTJ*q*dwa>q{bI2nq`N++ATf1-lUKk<^O1lK>N@3=x#}lJ@m8t2<^XrVnRR7Q>)R!hH zCZ$q$#A-{fLZ#!-+%!}%LLTDcu>S)IgX)ntC~L(!PsU)&C7%}=}SPPBx%|G!1( zDD%Pui+Pb6L*HmUp3cz|st&(H|9n61PLK>8giY1@*(lET%2MBdvTyA)5&x2JAO zuK3%_&qmw%xgFElBy>U53%zLME5KAuLKIa9 z6H%b#`y{U4X`c(ecF>a)ftWKjq@Z2GiPIh3oqS@cmKIZV79UirHL}r=RZ*ljrs2Cm zWZ;k*`fDR88nWR~2z7q4K-NReq}CuBGBSU%)zD**yO}fVO=t05a0X%$@6hN&Y&gb5 z*F6BMW1_B)#b9AHd=Ay*Q5HT+f{+^Gs(ej%kgEK_&tq=DV>kBjXB6f)lJej`sx^k;;(cl z`I;J=>V;0Q_&Jjjk{Dr+!ACZ-2n#B{Ta+K}P{_eo)fbHsl_UuQXt7gn8XL8o!k@Xh zHZzdNmweQ}nZ6Y=QF#1p-y>x1!IC-84=thQr0#Ft+t1*(VvsE?S?pqAAk6fbj`GjO zdG4`SFF;j91s?s<`+0H-W=&Qon03@&kMGw)6^(2Zm?N)kb*UxBW(RqX7#!b1#2d2`Ul!9k$mNNtJBPn1lGSQQ~J?$7S7k#r0#TTcdmz|F)(c?Re zW}hURVu*8LM`AhLCz~_4i6xZ&V<4I98Q#fuBb4!tZTR(te(hs7_+PNKo_qB0Bydx% ztGo}Y)Z`j|V)>LXObD}uS;)L2fu1xmg27}mj{KSZegav>YcWTY33XaxN>Uc1{fs|`vgf~*=%>~HU3XGn2$b_scc~2M z{D&s7xDR2()xS-KYoLj&+Hu%q;xDLJvA{hjo3sW2o z27gbwG(V?9k?!XWVO;8BE|ujIgf&0;z8?^n6rlFjdF}zfX|fO&=l!A=eF1#3U3f^y z!+1_kK81I_sy>*rK6+D*?P&>u$v3M&>ac`4QQF=Ceu*_Mz(RMtPcqsTVYYjB?=Fc|MWBQo(Si_Q+@a%s6vy4sW1MI z_)SHlQ~ZL0b1|crYB=5*i+US5zTs3?g2kHm8kkOuw zq=D__C84QCC!Gh4MMY#@Vz9?gop5p|Bqst^;A*OztbjrT4BxolzY*8mf7e5@2_nqP zejY;KC-BmZWLN2*`MTV)EVw)}d)*Mros=r>juW8O=TD#H9pFKgM4$y@?0a`Y3j0P1 z8$u2|DMQd#aREV4r_NAXYl#d5tafT0)s}Xoo%PA>P9NcZ1ca420x$7eqn>csNbB60p&qE%E z!-Pa*o`flmC%t!O@6Hfe#3)8e%g~(5K=5nx`F`zbxQBwCrVjT;&y&bT*ENq_k4FdV zalK_sM<`S}q6@u^<4=X6U^CUb5lE@zr>LXQnf>Z3nl}o6`@^&=$eT&|pgexq>I*-L zD-JRTQnVU+2QfP?!fn9zuEYr?_M?(CJw2U`n8nnV53o~42KB%lR^GvSE8AIZSkwExNX5d* z<*H5uO|D>0^z`EeUup@uXY;3cSegm#-ais6G;*1);9F%ki(lYdJl37pFeDe{SP0DD z$tEs@D&I9b;cu((B3(t+S1B0G&Ssh+h=_9jvn3NbcZSI(knX+@y!^W>7Y)0=M?v@f zPeOYO`UK1$G!JMGp1Ee~=@3T{#WeYQ)VuA?70sXn>>C!?pX4U?{z!@wiezp!YbJ1# zruLIB>57Fh4gqv{ipMTZt}X6=r^L`He_&Lg^j{V%HpJmUZ;jA_xd|}t(+oIJ*_M-J zH1;^hzvoh@K@L@*c04ffpLyhoN8Ot>w3y0JC3`~d>(Rxj?&K~hz=g~Fyfh>GbM4mN zS-8M&oqP$y)&^Bbsu08BLWsBt1CK-v*5e%5*boWO+Ri$iHf!sIrjRHtI*fZY^~aSjxhmBO?Xf+7=HMAoBaXpakk1|*LYK`ZV65daF)Vfb_PNL?5Sk|e^}P; ze-u->{2`;gM?OHZG0>xEAdAzQjhN{xiHna?wm(+_&W#*jKH)Vqj&jU#<|*Lc;~bquLbhfAGSnEf}2y> zqK^-2o83bAsKg@{alZu;jV1)}k>ge)SE$4Z$3GPg6SdeYB_!*^>PNJQYiv4#&c*2- zXoF>Yy4UvIgL(PcX+sM+Scn|YpQ0v;`DFihMDPC34hp%JzPCGOTDV227mQ@;uthzA z1z{b^;heyEq}WSzrGRMOFA&yn3Ioe@;Qr@6fyGeMM{e%-ji*?LwV(BGG)^~i_l8BS zxJtsU_cwq1MgPAG)QZKKT>mk-4 zjE}#;kB=@di_A={tbJO|=@g6`X%H#^1-JNO;UsF&6Y#WY3W8% zx;Zq`-5?FpQc8Dsr-yEk?)q)tpYJpC{LL^!oW1Y+TGv{yMc6S~-gJg?5+jGcqmc+( zfTUh9C5t6yy5kJ@!bLg#pWv=oN!HV>>)`tcd$Y>3)B zhA7{9W@jK-I;u8WEQZ=-5N&FVBD&aQy@J2TSAFz5!_0oB0yp1Jc; z`$~JDCdbOGaFHMguXN&0d82!Vhm)ujeR6KoGG5$oKxU z-jI-!Zok|?1`GcHLWI#^MNLPf%f1J&BJo@EJ@X?WAt^v21+Hhc=P7Z1sDE6;fL$&; zr1gOe@Vg1W{#-oYQuwfSa1N|qZ+L)O)8HoCpB}a0Q*QSsRw7Z|GuRyuds+97yd8l} z_7|7TH5;7YAGsnBc^%e(AEEPG^>OX5H{dQq_+p45NWd!l(e0y({3Va+)xnC8GvqQg z6)%s3k;Rw1Tb%{9Y=y{SzbbGkyP9IB+Ozz2^0mM7m6iGFi5K4B$A%+ zE#%qXK7^INESLBe8Qgyk5BFs^5ciV)Px1Nle^+4mt)Wc~RnK_Q2Bc+d4T6z+c(oZ;c`33hgN`x`%ZXzeHLZc>PuOXu?h;pguEGcR%nkyzC|po9jq*bk#FM& zkh90BUVGCzV+HTX3#*l7?xkY^IQ-Pvox;sSub%rO)K!nx&If0MPtvNpPlB#!;+t|@ z(9CI~@#ykBHj$7k=H&H#p;wm|ieBvpf1B5F7l&V3QZ!+eUF-<))PRvE-{#%(y~;C< z|Lwj%+2<@Pr`r?Vw&zQQe_qA64Jcr_H!vX3=EBD(&^5iu-a!8Wh86b&e2l zj^O#$e&^)mglMGgV%sOwn~w&#lXcdYMCWTlbTheWeyUdP*c-qjh^h{jm;#IrKIKsHQd??yx`iP zozatqVP}^WFP%R2%6zM1@6|~`C7U6ytDn4;ZSJ>I>MLl-@JbB^Puw)RT|fG<(MT@0 zMN-1TR^gHHmrQoE93nO$q)@PlvvZ^{%E5nujn9;$By49?cIp5?a>L;QRU7xYVY zrGa&`ize({RO-l0_SNgp%u^eYLot@Y@C=;!tnU*Ups;vm0m=A9JQdP0SUDFTg{#a@ zu2HdZv$zDYi8$l@LVV7Wi_)I^K=SbRF4veNw@VXG`~YwgjAo`!Op&9qXD9{;(t5+67|6ST>=|SrfG(zxQQ8rviHOkT&tgoMve38;S{Wd4EfNjTTx95SkyR+@H zm-e@JKwTU7)WzzbQuODK0q|%WuPA=Kxo2wnMU8%o;p8eL9>532AVt5!0M6X>f&_;@ z&7tk>AAgT*4nuIjffpBqDr6#I9_YdIn*Xv?J_t{Ufz#u9K&Avn$om=*nLwxW$+9K8 z7uBrz#6p@qmAT;Irv{Jp)(2N3P;FD)^IpoR_G{Me{JeVu?~_ZQnT0?I)J-y-rL^^| zkva`Hcbx~ivL%U#&i)z1E`&!qYRW^(F&sf@=2+U%U=FyW|I&XJz_=z86?iv<)0P|amgFr9~>|F`k zQ?iGKTbtByrLvJ7fwrRWPah9SBI*bfOcsz3aBI{|P2W%SM`L~tnablO>_SUBQfTnq zJ84$1-8p!*8TeT)1ms`h1n>TKKXu!56i8Tr#E)syaMXsxah9|O7)Cb$X^H6j)?G-= zWz40F{sE-erjK<6OBm zuSk-p5VLU(Y%^B2^q4Ogb7gE;bM7l2-+D#lLRyl@;QqiR@4pvI&LP`|eFjz|@dUo&85391!J)qIY*S=i130+sRn7 zJHfy#08ATBHW7ct!rSS6A}Edbd(e4!c`>OK%%fb8l2>lGxB6rYbOL>HKe1ZTSFuAq zC)SxTV!Nc;ju`XlA@_f37$4_Uar29gJ|>t90sgh~%atg9Q3B4x)0N-ND_xH%ixRX{ zC!iuS$ZONZ5~O2gVPR*`(-wx>zlTT0Xg-qY*D0Oeo7oT+Df%%^X+IXjm_lG+L8GBAS z5@tlpGaLL}j!2b#l5XcZZkV|0g+0nC(SaCSn$ZOd;>Bk==LT2q?fDkG3S<>FZ{j+I zm)F)Z<#dk2M~eU?OpSki&zXNmZ{AyeS{k+4wE@#mK4qP*6AZ_zI>y>1zl!m05rq!9 z(ya>_^9X#R5dMSI$UEY5g=|p5<$iWueNrIIBa2!~Vd}c+#gbGRGzpeC=D<_SfU7|N z>nl!l=_fAx5UT-mCdyMlf;6ZJANGtsJm4E&b>-@|6Y6d}*1piLd1cDf>WOWKrlAU- zfm4_Q>gG&|EO|4XrFq2=D13&DiLIL?i3|bosJ_MXNQMfA}cdVeyIh zCd$I?Z{L=JEX&%DBEyhmtt7D^7ud5v!}nA}Ueb7oAJ0T5@^8WPc@?CfaGrTKj|c#@ zK9|y4t8L=rf_E$t=VHZ+W!AS`Rqy!_YE?UTmY<=_Rz|Xr`a}WUcExy|HAEDi$M2O6h|LNp6}eH^7?Dcj39foceVDi^)^1h^Y z`rm#}ehsr`l{KiK13%K@8TVxcI@@?z1;iC6PLl<8F!}~M><8mQXB{#P>ykkoUEN+Q z;TwV6fLC2fOFO&D?Uc0K-oJlYfxIb`(I^Kpw%1O!!T@=N{N_-8l@KOTd#*$cT}WTM zNn@rhCc8Hzn51w&^eN~E7y2QQg0#j^hPHf)-@cvEvB%9&BW`ws*EQVuJ)EoohVEGg zs&b!LD%y`Na3x{aZW%=>-~tS>E8W0VJ{cMhlqd+2=$YVAal)Th#ma^u6ZQ<+oZ;}l z*bhJt*wubRZoA?mQvt4-8WK$z1Q~P91@EMp$0NX_OLWYuJsaeQWcSXL7 zvZtirBwx-a)G*FEv0d`7L-2}P55{#7Xy^EJ1gaug|uMd zj(e<%7OkxZvYq&hWzzXRRIKw=KQbrPTTL=mT;4glX>Lyh50>S8510sVENG=?t1Ejp zM~>^>EHk(BZud6ll-<5u)s98&T}CTq0g|x4fK7<9lrzN8jxpJddyosdlwtFUIS+)f7+o{TRJr&$;6>G7uGs zML*kUv|9Yx{>);z&6t^Y%xv8UEv1@_t%}9&mD`yd zdDv{nubXRrzuiKf4RHu2PAaW5 zv5Zl(WM!%c7p0{1D%?dT%(-M4$>zxe=f?IbVYPnu`m=3k2!W9w>6+5{uu5CV+vC}* z0K|X$v#0ADlyvxDx}sG&7upyKNkQ^A8tiv!i*SmiqZA;wQ!$8*Kmr)?8_hxRQ2zQc z<203=Xc)9273D&`^))C=2A0t=qSjN!)4Ao>?y|BNu0%ABZh|&UoRpU&SjdLZU+hG7 z3iF=oY+f{AMWQH-`6WnNaYz93tkev9;j84S4ABkk`!5+PHGS?_;JdES-Ka7jiSup) z-&2e?w6;57TNaT(3!6?zDW8J$7h2!IthOP@uoGj_T^MAH@wX2%q$%_ckK_gftI-kW zL52_>zO=dyFmp8xn5lhYa$NR-cTi|?dq#f7gsLWYwLxd>KVv4pv5gJV#Bl4pTTD)r z;BVhkCQ+>VVbuCV!U-QhT18t0YRz1sn1K|>jZb^G*}RBGEKtxaSk46(mD9llKj{!cUNRyc~?RsbaWRMmo}> zhb^zwz($c}pPEe0T!lCm5WA)?reD^ddTU;kPgiV5{rrEfAM=lMLUoC=RM1;;%-0pK z5N(>yq{ffq;KMr_$<0vaP}>Qz4~K^=&7=1`NTE@s>pwGk^>v2daAldPm-iQ$7ywD*C-0rQ9f_e)f`_Q#rPIg%(L*?Y8MgcE4-cFS zUwj$8>2*Rb_+4IJ>%kXzN3`T`ZKkF@o<&h$a3r5ZeS@t|8Q%|2#z?0k!4a6A4|U}d zA5CKihOln#G%9%=Mek6mK#Tkl-g}BC{1TmKAf6hfH;O#foxOCq>wpd`KHGF44z77R zzX5qT`r(}gJn^h7BW_P8Fa+uGRH9(zC-s@{3jr172cAK#XX`ylgFc`-tdfQge3yXF zV+`wEFxiCRlE!2+!%04c05yeI#SakL3_(${$;fYmf*0Hd;?He8@eS}e-4syYlp+ul z3`U@EvsuZ8`i}GDYoJiH&dn)1YS&zx&m|9%x!x0DjonkAkbYwZL4!@>Z?@WT&cBQA z-uOVeJK)~$)4{{E^CB^9F^E={rxtPPtwI~yu~Z?(W55Tsd8TBDK?=1|tZzHSYxaNE z3G}5f6I_f88V&SE9b0Gl+1aC?UuXl>xt$N(B*Kuv+dUABovBc!@j{ceDZSn5Fd>b_ zj43KuT7yj?x0#R%_MX2KUT~j{@Vd6HC8&PC>1RVr*d}O6|13X;)R+$_eN_1D>FE&^ zwZAxBYW4HYlK>$c0m!fBXDDJ7g1MtS55!d^5}`yWIJwL2r_KS-eHo7c!DpA!ZDG6G@(sapR~i3ZRI1obYByW z9b~C2tg%aX-RRNU3rz@4FD_fp74(5r7*4(NSJFghKJh9~Z>{{44I5J0R zX>6y2yYysDHRed7p?M!j%UIKqk{EQ490>qK{C|csgu|^<%!T|3gpj`BaRwRB0(-8pcudQog=0eU|k5@lH=5O z#x`J+a7|sdgpFZjijK~!!M!iF*1U0L;^1_$a;l$VkvM zQdQ{xInZUH&KD_b!GEf#)RlHgmiT(qJmFHxRktfNs{9i5H!9H=YnYvqJOg4(ZR1lG z5dl-T#w7th)RoKtVLmv{1S_8W{%`#b`KLV!dvks>lLHJR=|8>X;4R4~-bVWoitEyQ zY!ljDF8S2+hK6=NruOO}VgMXaY@M+J%0=!8gN>weDQ z6i$ifsZv8%pQrHqjR{t7w->+gcuLB@zMWX3@Zn41Xeo76D)XnTWQ zK;8KgqKIm2(mN-o(OB>8KGuPG7|OtmAK;d(c>L7ceGA%P4J5R@nVPW}i^PlME4_Mjx0h>((~_-mVHM`Nvx54pvJ(6V?l)iI2y{`fE?SVH_@ zCJR1#HX(7?l3Don;s_o|64E$!{jBcAEgK;rp#dPRG3^>QT-j~6kZ()1!XWPy9Ua?h z+9~^HW*oxccWby;8>2SVJ4Zp3F&zrloi(v(jB6n?<;vai6zZv~VIz&J_3(_CHjku} zbcKbDSZqVV%1LCyjxzf&kVi{Rd2?vb6$Hv548#m+{}Zifz(h{Fkz3&TefI?MkmS&n zY`1dAP-BqzJ$9i6Ij3V|waSv-{Jzw<7==ZfD-GpQ(1)Ef)~fe{BYlKB*@RwHSRe!$ z_|Jrt3^LH>?;8vhcjwakrjnzP&CN<&cE*?Je7M-A`XktKjRkVc*^5GLKem)e?IQh* zvTgzW9{hdRjgU@4-mQs8gQsY&r75@EP;CRk^bSToy+@oyGUI9qD9GFS}+ z0q~{`$O}-^4e-&Y2Im2*_QeeCwKoh28R=HluXX7~x25IfZeXGS^l_?tQT>Z;Y(hauG2Y6x6Gdgk9-=4cv zhCZj;09A^FE{O=@`}BUT(}f^-6TAAO3)-l{sC5>8pzd94&S{E{4VT7Hf_J=T35``1 zlHq4!Ro2L$cfGM{KQ(Q0-8W742v@hK%PvZjYZkJNypC#5x~Br3d-`48vX(+7FDvvST1T*wqNZ!)5u(?Z5XTWbj7HFXfyOr zLP`GeBVo%~q?T}ALF8@vr@`?}S1#$}&Q8V436r}`*!AbV)iOWY%7s$v34WQBcYKLc zYa!lwJ*!7ny|_B0UDp0TOjXC#u{g8Xd%=9nub&EtHB&#aT2hY9UYE@PXkGYFDF!MT z&7y*lztHg&1OnxzXZoSr(^!PjW8kqGGT}{s3mPS>nXSG{@khkX;jU6L44N zq?(T+!xF>l>8XZ~E2D%PFeJ$rHK?%s0iQO%~-mUEx)ufP-9cVQj)rKKy$L$>M2^HY3aDM=n91x(3{&!>*E0;E*v6soxiC$ zC7l`lG_=~Y9vM2jWP^dECJxgj@-wtJ%6&)tXrlr6PT&p#voq!1V~FwoVZKr9OR^wB zxwmnHbqjpH8Kq=Mk$T_M@Dl}92m=_;*}N{vo>*`>4(f6uA#h4c=g*fgC*-ANEb7v1 z|JX|sxz?%rbk`U!=pkAyR~Z`H@#WXy0o2a~rl_C-`aFqP@HZxf>#?7S&ST1xEH|he z)H(=(u#r~-Vv&+2z*fVASJg?JW`HpkmM;$tJ5cq`+euvp(+R!$Hr_fOdBRHruP_p- zFC=&{+}bLq2$%1}KE9Mj2Ru8Hpuo>_BQ7+{ao9WIdmgfnkEp;}DmKpV#O!y#87ulN zI$LfmdzRAXkV(KBXvbl5YytnMCA`(+Y;z#y9bw$yKUp(_^Yb}m`?l({=lwZlwhN$s zdfw%{<7;gXjTu*J3%K(0J*_ZG5;*w$8PIL|R~p^cIs?dg9U+ngdLfwSe`D@|r9*5^ z4xp5fZpU?8)2_ApU;xQ+W68GL727f&Zon;+6HhZhOC>g`jdDSsP;aT;08>M;1qRx&;aLIhgap6YC$fX1VX$KClPMz zTJWjqZt1bbJs%XI)R+yKy2iI+T^eTz+8;~jy=?V%Y8>+?bS z$n|N}Mo_jBN6Q>6mjruw=5Ttj3OH_ukZjN|X0S+bc3Kwy*dOY4-l#N4^Rsm2omFj# zPZ_;|e{#gJ{1?fm@}LTmq0u29ZfDn=g+h054U^ZtawQ4&h$6-1xvC0#Ldegs6DbeP zl!4A$GD%a}yrpl0xY!VVuNrB1sNagB1bX)ihkl41<*M`C*%dp>%55{SV5aa)QU><} zoo}-`pbB=ctSv*q?`l*u*PV+M?E1PvHD6rwL*pama=qs`T-@d*H0R~54`FE*ZyRkk}K4{k#Y%0{-w8)RSfy2j*#0w1kJAKWb7$( z4ms>-JjN~Rw)qkm-^&gY*j869DEN1y%cfG%0du&;m=hl4lzdloDi$Q+b)HacQX437 z6;FMW;VKa!Hm~j{yGR)RLL~~_kwH|ytQg%tk^32us7jV1Bofcmm}}c? z4Dtxy@mjn-sN(xK?Yv&(>B{r&kH>jqjXxYEtVRj~yV)KC7GIN6aA6_!m?h_?y7gyQ z0~AoY@_=Zx(?{L!>`+Dn2i8ChI`xZkI4f-5lnDn}p}n9+W07Ep)+i;1i2(7o@fnCR zB-sa@Ejx{Y7-qi@^c9w$|NHJ-Q_>G$>Z+Bs>>D?kJyb!uUe%4P42}=Jo8VRQx#{i= z|K9GhKS7X>N2)UWS{iU4ckb~zU=-+5de`<;{&;)2GVsPfW~uP!`rrfml$ldvsPZ=) zG1&>|u4|N2X1;gJ-=qfiV=X}AmQ9%a4%4JXbwVY!@dGhSGcDJ1^T`}Z7~(s!w+A#$ zJIt14`&<+5x!>E;lPtzF4M+3;lo_Nirc2-fI*$wdyQoD@$_hfXhC-`$+fgq~4ZUa6dLxHgN3D79jck@yGaQWm}obHJyV3Nld<~NX1T0 z*wCzW;-+dLDxL~={ZtKUP{9n$9J)I8nA47xE#lBwI$INx<#9bps5)IGi|zIrQ%WjA193vNVlP9F+kr0YhZa zAolu<&ob$kdgza@6W8LLVPeUGR+ZN+Z&Vd(1N{BB0(Y!E3E?$De2Ajh##VkVvfY&C zVNIyY6?&Jmv;|T}{=ddi^X+L)!PMCvWk+P?5L9~t(Y0=E=)6`|3h1)z+E(h&k2pgx zn)5I+NVEt^#PHc*{8P-efa1VQFp2*@vk%&s|HGORfiPLTQ^c z{EDja+x+!)cLnAC{`h;3%GXr!M)+dniqZavtE&9C z;`8dh@UOf3;S|Tt3;V^g1gcTdGAz^~#lLlcCef8?m`X}wiOVaY#`GPYJ-P@&FksT! zLp5u+gZ&%coP>Ma3Q{n6*ohis7DdMh_m0wW>5K%yQaSALU*N^(@&6w9!wT8(PSTBJ zvCmCWlizm|OC>{VF>4SB3%I<-p|qiB9@WP91Bbjc66!ZLSekcmZZ6GlJ()oIR0<1s~F1&9(}7?!p>Vd%WVw%R4c}Bt(;yTx{~-B%KSCUD)ia z3Jd+Hb4SA8c(m)bOBS>4_j6Xlp>JEj(Ooi&^g8bdSjxQblzwoMz)*RJ3oN>orG}Lu zd~`j9tzMJ~V3QQ&2W;A9YaAtmgXtus;0&x1&Z=+kNry#_yyZ+nH7W_^DG#>-3+D)^ zTbwiL$K=Z_HKBg%dmx)zkf2B;c*7xqE80q|^kS^7WzAs;a`$7e9zWzT@AL(m?|Kcj zg`gJco$8(OuaGIE8+4XN_l`B)RuS0AJ$V`MciGA|HII=Zar%j_3{ZF$SHw5I3p!C4 z#nHO|@XM(Vy~~vEs;{hFLQ@bR89%;|9f^@Up|it>xQA8S7Oxp-<}aQVikuXl>bcrW zu5xkAr3BZvnWaN@Q96OQ5v?G$5&1=zjmZP**t|yCWk<+2d2z4C6vhH!6y0;L-S@?voxFl27c^6PfeG;gERgqo$l!ua$Z)jCzU63lFwfa?ePM70s4`i0BQP>5}YNb36w~y*w@Itu9;qb}~|( zyV#lDwTIXW8r+c-NXE}`1Iz>r$3Isx-#?}pta9Q22^#a&JUa0Uet_BD)T@w>t094(S$F_^)C%~pP)cmI!0aWpS`5Jsm zSX2ZUzB6{RxUcR{sA0W}>^X{>}MI6k5US^7; z?(g0E#etm=x?-$bQEiOfY0YG@1dlfxz-zdQQ*UHv*@e_~mjJ*c0eq|Il< z_zxr5dIOo1A>Tg) zUvA02vEFY-D=~U%IH~z}7+z7rp1hRizz7@b)%{2ss&-^8JXcXIh%A(Ex~3NT7?qAw zd7s9*vgFG{i)XtgjO*|-GyBp^66-HdWB7jdYl6mAnsyNSEF&)j zq(^1i`MF*rVkHhfgf4tCn><6LMG8pY_BPhS;^M_|z;S0^qm@yYzd zN;ZrYSOWZn!}(?<1Pi6s)Z0$2krIAI78{b%DRPj1B&TGvl{bm4dSXyanK5%$etF&j zjWEprcfQ?j$vCJ~J~{vuY86*i6CF=e&l&C9P-p>gLTlemAK$3X;|(F%x*ZT}_?IPs zpm{3*LrrI#r9fz^6G5I5w*cZYaYAA*R2h@WB0e?d9D^|hq{1ra+An$@l3)IXuZHpf z(yi(2E&zn`VhoMMH&^L`bY_TIkmW{}ylTy8QIq{tl!czy6Y7wjI$c;348+=VmxpMs zEbwS6T@AK8^BTHf`&Ovtueg2C6Qc38n3$!zsQ2gVqyU0kb!amV$JeaT2^d*hT<}h8 zl3$66QVr!ZastSSK2MFhKBQLFaqEh#M%K3f-2ol6;J0(9onorMD~?k3o}bw!_?1%1 z@N+hhPANQE{=OapRSc~SI-Itf`E{Uy`$_wPGvGobMfL6-@A>@&D-X|PUNv(AaA7$F zXR_&IOQdK}d<8^_`ljBz_1=jGw7C~yKKUU(&MasO)U-4(s}PiM{0E5ZHg znkQpZAjETM9$Aty^F@JK0&MXj9V2YQEqV{_G4cSkyiQ-kuq~OkjcDYBNPaEI5bO6; zzRa))^Flc`($mvx@jqP|7#8&Hy!{Zck8+P9azR~sn}>tw6F%rTX8Gss>z&hEr{3xI zV7p5rkv0_4NakRpx8wGK*afffg`D2HEY0^kaRRelzUfdF4ivU((r+PDyTU)M$`aOQ zM)_)N1Rgq}O-Gvu$Ou*ocVSZueWS{ZD6apR3xEC3TsT&)7#4`&+8$38% zY1qC#9$UliLJ7*Sr%3k9-(?|16Ib z?$Oon3V8{k6WEE!3(#Uh^a_t&LGGz(hFiH23bF* zxM1I^43Y7CGOpVfpPwzF#LL7+$(muC%;+dwNY!4?I+8VnT zHqaT^q(=Hrg+(04hA*5mo@wo$iXw34I+?C>)%*1{N{FI_Xsi%RHe|t6^G3b;J!4s- zEW+xinXmhBo+~X_5{4Sm0TzLGu(70=L7vl3esk@N0HlmSkRL}EGR)7I)XxqLDJ(D7 zr;2ar%SuV+GK+R8^RA2S=d9euBV2rLqw-$0%`2>WzGR8T9lsYneFO;}3;58vRB@g_@u1^dm$zObzXD{e`{BFH3I2?mr zU$3XJVsc|_4@+m5iWAA`| zs3VentEV5OU4h^O`rgDNhRvitWWY-J;)sOp#XklyoyUG@iI4MPW1-6Fs@;Rlc7>*5 zZ;$jgiiOFPQ?#!LM(ze}1b#9dzl3bSIki4_QEjoB$Un(UVvuuQdC?-0rc`A}^z+27 zaKlFjP4&LWq83rgat&UJEYk=%aAKO-G?4sJp8an-=d4h>fC%)evNt)-f)yDvsk^2{ z1ZCuYAS~snARBRwRz0Ucp{3o7Q52qXQ)nCn(YY(02QzG|!+ra9uTaC@bb8$y$O0Xm zpE1WQSrRUlr@dHKPW;PpJ+Q{3civW;{)O|np2YpF{j-6l=i4oz(Xzycvrbq2 zM0UpOn;mni7MBdE5i*rR${uM=%_S(cl^ckj6Ljc>rJWg3gR^AAmUfEAf&Y@u+cO~6 zYZ4Q}gcitX-mk~`MKitFm%|6e3RSZbBGwYg&TNqzGvEsR49KR+p6zPy(*lqK zMhg4%!uQHTM0itH0a|H_O)JbqzHtnCCXTqd(JD15Emn>kZCo1hp%3ci z!_^Kr4T$^x7TOsiav!`tc=kMTwsCL(TC6epXX+g&G+XQNL-0`nvItol7k{bSa1DDJ zj~A!i&>&uC2Efp7&Gq8;$d@;QElZ$X8 z2iO6xI(CM#x_bV7$XdUr15#)kOmV^O5`a(p`@miX+BsK`G;Mfv z7CKZ>IgToYyd_0wHPYw!%7Lgc(FwZv8zlTav zgFB;kr;DC|k3^&|G%l4ps6W@f7IB}Rq$rhSUVN^~%^3eU8k_`MWOJU5!y9ty)$E2% zRyRmhVNg`7UR*KS%pkzUtC@Vw*@QCBr%D_%+m6!v^#=~i3SjaJ|KDj2VR$h^Y`IUG zN73Rg=4)2^s=~GcxMHldr(eI}{Be3)3;uz5FKt&0Ex4~oM3X5Y+l&z;Y=XM+Lj)Gj z1B)RUl`l(a{Pr6#?6 zuO509YH5rMhd~$NZw?%<*C@sn60{&@%A|pY(X%ObxlEZz4OQLTJz8c(=Vr_YNy>Zm zNf)Xf$^lQIfsqjo{};#C_ig8wgXcA`haz2z9p^QhOmXF8U0nN9ZWL53jt&K6sBHW~ zqKjNW$7dRI`0%u_I6+^%H6?Ck?$!{}+7bu1i)8FIrl{OQMgMR71X3`j0+u?O<3lB= zlEup_yQ}#b$5f*x0onm%`6^3!HNg6wSUr+K%S{;-wqO5uPw@9>lp!DK)Zq8N)P80r zEOZo287JvV{N^wuO{xr7mi$zbR>ep0ZM~+RQ$wf-YzTZ!z8dOIBFq|n--nKfbt3K`F7Lc3LBN)yD2h6cQZvPqvXd$pt~G0Z zG(s);&{6TRjX01h%A{~H?df3zsW~^%LaQ;{13dwzWhycO3^(nwk9Ys&F#>vML?YvC zo_PXmBVIl_!(^@^pI&;$D}3)Kj?Gc@Yapt%1hocVXnqALeGZ3sxk|?KgciLmx-frx zRh83d$_@7XCfX3L49c?bd>O7*9WMhW!rUj)ZsGlL`k%cmvN@sktNf*dA%CG{KwQt? z(`l1eZ#5$8ISPv}KiB^Kw7*fo!30C$nCpvBQ+cU2S;pZ4&LM21Vh>}sO^-eUAZ5?L z?q_VjcgMZ%79|VXt*b!?hu9zhz!&|c@ivE8}(WX z^^9ln0`Y7ZzWrK&$IYDfVcV0d=f&p^Dpp6=pd0ck{1?(1u5IK6z=GTEUVS|8+C89# znq6O(t$>Fb0RX;w@^n8Azypn>K)(~IezP~+XRFCB{tx*F?&vG>wZWQ`sP5SlqEf5; z;zQ^&u=sB1L=mRS$<6Yz-_@FtJ1&3w?ejo7E^dFcZ-Sg0%p!(eosW*8@(#CpeOjNs z8yOK9?k*qD?hn&bIMlddU%DJ+ljc4a`de;Zu*$%s{My*+Z0ao1*#FjX+>U=#P zeisvX;zmDvX}6xy+{d~{RTt)bu=I~-m{b10NjsH|byq^zRv;Y#*zJ}^P#)9a8zLg+ z@mx^d)w3B?V4zV?2O@v)s~)zGVpHVSpEV#%Wr%~>HEJF|J{RiyYE8{|wax$ewp!D7BKvU8s;*CDwnD!MPzHDq?v* zk`-o5Z2W-s`n~`%rf5{nR!`55-PZq`&qz13zVoDDQk8wFTXly2IHJ!WzL6X?YRvZs zp>hD}vkCuWZ%6T+@%y5^liWRB?fx-`Zs<1i4pNS7u03$mvIq9-l)ksuXgatJYm|S2 z?9SZExC+bA^EAf`9c`|xR3xdF8S|6zp{QO^l==_BgG@9%vhk7HpSgJAIwc7R%Ay84 zAWLZiy*|uMiV(-deI_z5BPdFW`J?J``L-=~a2r@J7D|k0skH>|DdKg8B1NQPPU6f5 zk5H}Wl0OLW3qb`6a*d;&+QFZZ`f3(tD21G(bj_%fQ$~p8Yu`=%=r&$D4kWV15eWuM z81YlOU*Waw72F|6TtE5g2mrwzRz0RrkiH6fd%5&y&4_9ob$&L1TlKqkj6P-5*h<i{YwX+Ukn?3 zR&7kX#1(J^;QPy(4<7M8&eoZ9+w_NI_a1XsF*12p4@HYi-TYO@&|R;h!?i$5BGNNQ zUe#I3$bX7*-4_(ZIX#*1cNP>u!p?_ElEY`mrqzc;i!fKb<6CKsT7Sz~??b8S2>br9 zHo18haCUVcvwly`o)bOqatKOgh@El+vL-ru#ASSq5o|p(GnjzF=G=sk(ZDK+`3n%m zkB&IX4c}{`;R-yq^o%?*0Xy{SQ&%*2Kop{aUeH>o1FQ{Ov-o``9x%<+v&y@$hjNR1>$`eM3JrWC&pbnf`}a<)nDe?6H?Jjcm7 zkxK+=dt77gY;J3~{q}Z)A^i4iE^sp(AMYSBY^-2&QA^06pxa%E;7VD7G?J3fwtD@6 ziE1$-L`A$A)!b&eW%BsQC;#&D6RE!+l$WLDQdhPz%~|wLpR53s+E2*;Z`EDMdld_< zpSWDKrunI4d@IwH>B6{ZQc<1ujJIM#8OqM`7!Rrtdc_5Q;bBcXl)2|9b5JKQa#L z%6>h|mRNPQ&V>Kaeh=+`y7-2keYW{4;EH_XHpbDIO{Ey3`oRb>Ugs5c60TIMrpvOVu}wIRq&R|&{$yU{!k<{Ax%bnPmB0z zP%h=G=5Lf%&^wTJ%)|g)9it<9YGH;4w(cC?MiI+|FA;a*j_!nf%G%;BVg>Y; zY2$Ut6&J*&mqZ4l_fEP?L2#3?o?{w(Sw+#NyQW*$RmDW!nlM&A2?ow3ft;HT~B4HGk!f6MR6JAae1( zyy^|xxN7^rJdj$90lPFDyXXOQW(gF3cyTclAFQGvqX+HoG>twnR)jK9D|cKLZk~2Z zklCLoW7&@`-vaTcNQevwuv)Sz7*%cwE)7s}9VHEK#z0`R1Gd_A5ZjixuNtgbP6@g$A&@PNW(HT(^f&3It8L=<;p=lX2I0i-)q zdpA76G*-&Kh?HGC{bpadvyMAfx+KO4`|pFCi{J4+cp`dU^b^!JG@$MyEmj+ZR**1h z{PsT;kOq1f$^V-9*^>e#i2u+IaV0iD&_?r*!jsarpE{)BS_vQb_yJ23zEp$D5|*uC z4{rbfELvw=eDdR z)jUivl4Ps5X$7&MQ;Kx^is+tCdR-2K%7rFJ7Ii1e0)<-NfD5)0Uti5jRcDO0(Ho8b zzR?T*>%sa9Cnlj=0E6hFY@caYWLOjV=|}Mzk-nKnIy#vr?50WdS+(G58>q{zT~oLZ z_>`16iJF#O#L2EdPFAoZ9yI1i85~uX`ynP1zr%eFQHM^iB%gNla9j?4iiwU?rEXpaDe&Vn6eV+ zZ+!%z8&|}G^2>v&YAznqq8_Y27)wgzj2{)W(Q!c1TO)Q7IwoDMQ8SkO2F7s&S!B(? zEXo(K@()%dCFf8^;pYt^W9{_AHtn3qL%APmbI~{QR$BpAtZTnJbM-kBn@^L*zG;#*!$w zXL-cUQ1RWUPH@7|_!>S>FI{apU&?Ex(Ghd0iyPV%uc#0>jtWnoTG0tq79h4L+yi?= z-77lD%lNjhK(0Unh5}D?47K%6?J1wkBSmktW?e@9D8be-XvF*y?GFZ|;UdGnC){Z| zrsj`(C|%!B927pC#dx^!@l39Dzu?;U&z>RB6&$1BcL;qW({n%meDxLfMHuVm?r3zx z$6(MNJQ`mskwv+Z&m!^1CNj8{s#b z(Ciz&Y+Cv_f7D_l@b2GMud2cv<{XQVAAgYpm`!sa-Uug6bXe?g5?_?|t+_)>_E*|d z;AMPn;Mq>7Wzs`a&+nOYjs0Fr5fR^CdygY5G;mRj@q9RY^N7Gw2^_ z1=Pq{o!g{RbkNC0IrDSK^j6pi7*>QTyG-@w*!eNi(c~ivoslq?E@%7V`wcbWzCol1 zzYc22*<}fjFiiKubP)Aj6Y?)ejV&A>=8!D@oCy5!W9s~{Sgk!pX3RY78ZHc?{P30r z%dB_4bdNZWMDVuD@j%obNQ-Q8M(jF(8BANrz(IgZ>KBr8lxvIkV#G5Hq{;slqR6KL z^}?&qW);21hP-``qw`@BUTV!pNai$n^w|&kSo)k}+ylA2ZaR8i@USlg`^Q#G>eL!> zlu1v0qd(_ZMtB!oiPY=?SHCp1H-w^4=Wm!ZX0Z*Uon{2aDp90N;D0nHls&mkJ)>i% zUo+H_4MlV+E~+}=hFFjmvzUOV$Uqzd+4AHWNCx^>0-91Ggvyi2My6acjP^w4x0((r=f&0m=29;>U}1biP0S!d#aRam_UEwpG%GwZH=! zQ>gEbd2Twv6LjQ7euOfJF?)+is4bRN-O| zk@OI*i6JD$CR6UsZpIo?QYy2Ois9BrUyhUMYHt&MA(0>27(5A&tsqj*cZ{E4ijhMF z=Y&}&)eD-gC8)&O%tM~Eb|-rFjG$T}ipJ1cuSh>@`MS@n``tbB$bo9$VB{erdU)GS zgdPj5t0N*fSqP#^13uZ#V+wsOD6U^W$>Ng**@(A0v*y1!Zg-Byqx~#XBTKzhha_(B zQil7DHqA{n6yhXUx_TPo$lVYq5uFqN!9Z?Q{% zdPiGuip-47ur~{BzXRWMr}M|@LF;``;R~btwwZD74g^w1LXN5Pal<>y#4DpkW&(k& zm~NN;*@U)OZjTmn9s>=VK(;DSwxsP7q4ViK*NsaQWfLd~*<>5Jw?`uagMFX6y*#`blUcIvN+sL`c0x`IL5%~{}#~&|Mz(;@uK*XvauI8Q1PY@r%Y2MZ3JKaAY9e3 zvR4^$xWC@eY#K%Q^hbCG8N4ZqQ0UmhzaMd_o9p)tG&C%*L*$v##0nt*6|}-Mf5iOA zguBtfaAtqqkmv_`EDK9WW~9nfP==JO|M3u)7VBoJgEK_)1Y?rBRc4=XXoe&ZJzq^M zIBb4h3H3_^3`^x-4vhcr&MP+erGFNu6@ip^oOrAph4Ap#3WPdjnd8nT8Or-<{LmAY z7GyHzZ8g?2Y=}9YhdA%6Tc3=xL=1baAl^Eao$p)h3=v(Q27fr`3@kE`8R~mwUb_e{ zPjD?QXuq?ctvUM_r3ZzLv0agxIWHi}LRaK%PsQDEXq%wDpgPfL zY}_3A()K}aG@*3nY+fyWY0F)C+lWi4Np`#lqx{H;XEYHWrYaykwAp#S3yY{nrGHl; z!tx%VxR@N(YCu$9+i!{xMFOU9S%cs2ors*%kWjQIROEny!iayM(If`J2s$u%MYqeuICFj?N zGyU#=Jt9_gyf9sH{6ix8|8B&MU) z_jvRKG12mEb=KQ_u)-w6K$wjc%`Kset~eKo8y89NX+T;Kt}tTSuqjuB&71PwNB)pr znJ-Gnp1(_7)hV{21X_JwQzHihJ-y#`go5|(IEdCf%I%Zkc5y3@dpFM(6UC}yjb-5Z zxf;uT#CR#tDQde+X=odrfF5Lc@F0}*fuZ#Pl1wW!pAx&ZjNQ(EPrSht(H_m$EOa7s z<|txa-%lPR$Rq;bmdK-xnlPFgMGjHr^Jq3bRKG>veEa_KgPD{SSa)@jvxyl*C`b zB0*&^i_lace^LAZ(mXf6xdekCLoiOnLs~YRo|;>f)>;N^`ry4)D`%Y{gE%`O_IAC_ zAa_5T3Z<5xIy}eVzyU$|?oiqH*osq-b4^dSM6b1}v%PgSQgSLgCibUKSM1>!(q@+@ zUe{|<^GpPvzi^Bcb=LyGcxpbx5F5fICk!NoNzEE}Of>kDm2^9NMQMVb*r;o<^S3}2 zkE^w98VcxXHsrw~+_Ma7>#o-BspP)UeQw|NL^FO~+6SV{643z_<0{=eB#~^_Nbw1Y zr%J}47{}IZc;uQZN52D6&%U3E!cq^(Z2pQ#D`h&zF8j7EYiU!Jq}}#8Uwn{(uBWH2 zO?NNKvIj-7+|k@z`nyzxD4(_-idHUP!5aW)91RafzQs!V9sVfU#hjrtpamzHp0FH6 zS@~0Hm_^&Jo-B^mgySM+j=H3ypKrMxYOq`z`@D&9$m5D_dX*RY3buwt;ZLW`MkT~T z1Bw#p+OCAFNx9yUy7j~g!k!Q!zHQLY4yxt%suxiVNe>4ogzJeNlV(vZp!BK|Dkpo@ z9vtjzx$5QDScBR)j*NfPifz&Zxv##{-%yd!6JB-i_qY=Xp(@sT%rF=H-X0xLgFuQJ zgNI2i9uPXXUr%JmHGvLfx{^s!0!SYF#`z{X?;25+*XnDqizU_s=j%Pz;VuZ7iIBj^g>UHPj@RQLSwnG||G&nE z`_=m2s`LU&T-hNLIz~jtlUqza@1{t5kg3O`vo-9Z(flTT+8g(1`fB^J`pE%Q@CUUw zMDTdg-QX~hLW@gn17?vk9sV*!1JT4#blZy;|ouG?*5he_^wg2Yq{$3CF-f)Q@G)A z)i=fEyH}bT_CS?!QdRNmA!|8nq8E|%=vycuSe8VHm>BR}+9h-5*Q|5_r;a^Muph&| zL5)noB!Z$9^@zPP%-b&dU7ch#vwgfNEiv31CE#sW>@fyN(6xf{Tu!c<`>0)9V9!j>+*^1@r(Ii%1y(Z(35Yn@uGWNp9STTI0tdQ0JMKuMgYcR_?Mwk<@cUGEGSy& z6o?>|8IC<-wsG%4uywYX&T?FWIkjO8?PuFy#Q>K0jP{-Ttv75~g22*K=PH$AcD&;| zDmT|EG=kD+U9$uC2)V%Ymchse?UKiTm(}uHq##m?1%Kv+m7Jg$i>Y}&JVLS4l{@-Z z43g?wTC!?rT&qFKtU1b)vW5Gvh^x9PJQ^I&ZBgjze}hv)>Jmm?Z$|rRW39Ygog`Sf zlO+mM4JM$avX6i2i)aub$>JuAfTou@)!$;Rw2ZQJUV_SWMxd((Bv-=iu2DRB3Z&iG zFYd)!7&*urQcP_Tfy1NHgC;h5bHgR*EgC{3aF-s!g6ag5PPq1^k+XpCvsxw53QKs) zar@0c%6rDm+iPp79OGYZB@M;KO8xIK$ocxUZ7*wj+6v&D)W>cU=Gk(QsF>t@dhj!z zURXv+Jvoa?FYd|<@^HqFuj)McK0Ynkag)@tXtgcU36QpIPyjgBY=FVct03SGCQWG3vqQ+wYz`oi@6)cC{&!43U@24An7*O_1Ux%p@0RUgO4FeG9ieQeMN_#jFh zpQZ#t)QM>zNODfLH~L8k;@^dr*n-5+=uwg&h|JC?2#_=kI{ftcCp=Lxv5uhgJ?{!S z<-Hrf+?fcYXQ#B!FD`aoS*Lqn;MUpZa$RCh(k+#KSiM6@MUPvNQuU^R6y|nIvp&}e*NyhT7n6_sq*>m^(x5kabI+Ev0uv9hAZ@& zi=6cl$dqUaXP=wci}Re4j8bHeD&b&dLVnbN>+^3vn1esdc@eow(5x^Pr?h)O(e@4y zjWWxBsW}xWD?04S;37}|I^fc@-tk{h{H^YPLGfXWlR7!txlvJ%DQ7rzq~dLqNy(%< zIty8jk)tfgNMCx^1LI93Lqbtg5+Afd%4l?{A)rYt{V(yqcL`wmIntUN`cC~$>&+k( zsA!klXsp1>MwWm_!`xZ+6y7EA&TU;ij~@D3(7~&;?wC);V*J`sazE_!Xr&_nbnHGns{GO)Jf2PVP88oBl=>`5x z@(EzmLcdw5l!OpWbp+|5x46eBd|@p099}rfn13vn`qyVgpN<5Ds~{fhHb?`aaD=J` zwX~zIX67!w7u= zC=XRbiwK>{a}L(c27#YoPAG~ouKEEc1wszOsIXeT_{H9!jNZc>g}bkSXYGpBfPWv`&|$!jC?d^C~-LTqEc(8 z-)If7PW!Fxq3OHSra0?63WZ62GLkA+?v(BvYnap!7wt(_?MMvgKT)J@?AZ_-Cen}2 z3Mm9DVtPiZBUtp4v@-!kQo%L0baui~3sp3d1l*rC3V7CCRcfizQY;aNXeeVPjPgTq z1?OyR4zf>?V{=0N+X}sgo&;fU9nX(gepu68w>$!O;JJT~d>_qkiWxspH~qf!K;iCf z5M`{)3dFNDvNGfy7~P5V~( zNYKui##SIk#+CN_!AJsyH}w7zv`)5Mi=5`u3+L?xQ7i2J_?EZd8BTZIRM&z~KIHa| zHJKCq_FtR>)Mw1!5*;~{MVcFN|9Wi)*7jDRE4~YIBG4|&etzRogUxA#n6v-)XU%9= zjN!KtO*~T(bAwM#N5*|i5zqfdWGDYOBC{{$v58dq=OPyFG=|TF6)Nt=pTJ_4+ZaIg z&`v>$Dbg+3fL3TYJb7i=AEo4RHlK?*Qs(qUK%!mYpZ|x01w}M$j2D1}?EX|gH12q8 zJ|B=dVf9_(kz_JnR1Wd^q@N*O+!F+6v0FoyVE)B_qqH9|K4lvhi&j#$hZsN^AQWo$rt2HEW}$05RKft zMN^-)DYVp)Mb3qZ$A*XQwc!IJt?O)y#wMc-d)r1yvXSk8^c0l*CIO>JM!fn7!*ny=#g_Ds2n$EtCA6c9@?|P1RN&#C@4esh;?p~1$N~@=J+E0; zp2Rn+#h_rg8g$K$2rBdy!WWFi7O#x**hk3<>SEE$l_;#HXp2%jv4p0^d71Ms)s9#F zXWZ)eEQe9^qgmXWCwz`cJ2jk`kPO}6(nv|67ivQ9`t4_2QMkFA5iPr=f(TKfq6ZMK;S* zz@B|h@}U+>a^bBmV3%a_m!UY37lko1>Dv1jA7J8d`e7Nox_^N!*YJlCeca^sruMvJ zzVG?nE7aB3hel#C!r+i_X9@a&TwkE;(#Z2q)Y)<^2oebb*cw_p!`J%VCc=;yf_7M4 z`qBTY`asN;l6f2uW-@ZjQ@70xa!qFqgmBTsWdMD;y<Bd5HSn_%Q*a;SyLq*`!hQaLI2q&nu#xT(06 z4frt`>TwKGzoRxYn_k6fp1CJ85{NT|A;PKB?wnUT)~A)PZ6+E1n{uE0@A;f7wYS@2 z_BO@(vd>Owfo(<;UlfYD`IIyOsTL}~sY@=%5|{tZjnx8p7=q(a7ABgU(&<*a1e|3v!*90ZgYV|ngK9sXmD3QoPqGytln*Xras`I(8mZP|G=@Nc z-Dl4y*>P>zY#;LqG<WSbSC<&^b?qvQaNYRY%?Mk1Y03&S;Z_nV*AhEGaNMJYn>Iw zx{9?yUWC;cM2SI|CekGBAuJFWhQb%@@^6HF+|yan4y7Ck9Fa4~xK$T)I}fBXJY9v&RR0q$R$IiXi|YM#*ZjCG{S5!e?Bw zQ#QaAVTlV@$}h{IXcN%PH@SnU^`9!x9BktOwrlxw*1_u&;KCv&UG8PC2{L1PfXbs4 zZmQm(xRKc+Mu-@aY*gaB3Vxxe86kh|15|Lu`miTJmgFR6uXMqYnGg4sn%@%84efC2 z>Ooju8Cq(5L^!}%?IjReq&Mb?a06gL_N3JO>6 zoYlyu@LEcwJR4#81R^k$(s5seEvG z56wYOV6Vv?(pmQt&gLYdx5)&koy%`3o16eLiA3nv?vY;nI19)))gj`Py2k`^G^;oV z(==)g?2!hEacC%R)oc^9d@5&RtfL5=5ttc=_r5XOpYzO{Ux!%N2Vd7bpYKP$z@F>K zo^Tyb`<=(GwFV9@(g_~W5!-vg(ib}CSx819n#w@RhsQ>G1r4zhs_GdGd9w3h5kZj< z^W0xZAU{~BGtz)CQ9K1-_ZHrNxK`RLRO4Qk)x2!k-ihlP^`N{GOz}Bq`6;*(^r3zm zQCTPyW(dh-`l_AvEG}--jWPXE2`Pf*hRtIdov=?8Jq5A*?VIP%wVscVuY>o)+cwtm z`+EJ_N4J>qUs*2XN6tCacde#{6A|Xeewxtb3mHN`5vW98ULo;fNedJUq3Ag(?+b!{ z`&gFC-5PNu{0Q_;cmW6%X9bRG%ew)*#%>HikKx$1|4pv%hYl2ibqAUevJc+{7mW)- z+A{(nP2-HzFTVtT`QbKcxn)5cD;#n^Z9eH(T~(a=3?MlSh$vzRMd1ChC$)^g_@P88 z9GI0avLuyc-oI1#F?}0FcJ3f6J25!&7)($IERUDa?Sq7XV9r)^ut82tC9=`HInjg%aq3K#8Ag0tux**R`&f+MYwG7<0LF^)^r1*CvF` zhtmF(7j5ci4%{`j0yp+QzT&hn{@@PY<+6!tTkVIwmv=u~`s2ngU)FaE&)&K=o}qjc z>gOCT{{%7Ocivy_o)-;16dZ@!I&QAMCcp4<-^QPeXP=JWHpMm;02F9>2E<2!c&Uuw zGy&Wq5L~NU(B$7S)5&7&bX8`MH1DT!swP|Mwc$2vLS%fvE|_z}kG<#+ zv-}{n9IjM#$z^2A3Iw>h$4xD5!9d_W|^W+Af9W^Qe~mF{w6z)Y9hUz=QprWKs;ZRO!WH!5exhm+~yB|BkcPZ zp2ENdBUG>;696;WL2we)y(1o&2yGw+a_rgKg&iJ_(qNh)fXrN}whEe6vM?aH;u z%@_Q587M^*@O&vnZ2=k~hQpO|+OL{GB>)NJj*WqXU*H)(L|_c4HF;TPHUkF4U`x#g zqXjQx=n%jNswY>BuTZCRKn~0cGz>`FjM$(68Wvw*%_mZV@3sL<%ZVmzku)UZJ&P(> z1KIi++_v;5{Sl$O#B{Uq+I^YX$a5pp0Qxc@rbqu_5kYQd5TnjuraAHN2t``wf;9gE z0EzL@%8&D{Kfe{ckNG{WlWY4pedqD6ms&q<-&;YNkI2FSaK7hl@Vq>Vt8W8f`9#EG zQY!siaxlz>?A6!rDybk!d~o#zK^BiA*hG{iZhiBLh~Il!v7DLgJj73e?+W}M7`#b_F*U&UXjID0<`u zEbzHPuXo%2>DrgA(ILCKl&w6Bg>O^KL#)c)eEhu{!8%aHlPBZIS@q}xT>4cmq;d|U z$kQ1IpJKCGV!LYFj3~6#l)8Dm)KkWAPxwO_j!td5LUK%}yA|l}BxHgoT#VgX7DZO( zxml3g8F5T)IM->;I`18uW8x8;feTO#a|S12zZ!cQXoK!^I^f%t0!ZgD{p^d#MtAad z&xO+7aQjgGIW%}O4z|NMk8iz5NlM$mw&uU{q$B-cIPHDhh$QS|aA=SI-3-Ha{_&Ge zoYv{V+pt&7#q1DO_@gT}C@2Wr!SMZD@YVA@`|6p&`!zAQ*Wi8UE2@ESaA`D=dOuLQ zn8)n3CM>0h1c7%L2!~xtHlpf}UB9vk#2o62{w_shT~jx4IR@o__-4t8*+Ur{>M7WN z2QleDp2N+FPtDmtvF3paZT;GyY)?>aVFk^;hfu`s(^ZriWcf8w^#O-*j#JS`L+d17 zwBYcQzMP7s@}P#I-->O}9}ZH#@nIxt9k;$bp8t%ua5YiOOuqEKLCVglA2^s{Uookn zAyvzLX&858otR9@dRiNJfdCuzw?ML9H5i3`x2nml=Jem75Dm^etw~mrQC|`FGKI?s zGuh*hy9p}SCT5soYO#yAiuF>Z0XnZ52GZd0EVkUPvtPj|vkwHu;fv+Ki7b|!ETsme zIB;?u0biJKz1T&ohy>1+m(p1x44r;&zO`oK>dNNBUXH?Bu z(|*<;fWFYOD^whnDN1O!24x`jBwwUNqMTY6hM9^BfyPZU0PKXD9y?<{Ix5AJ&YI1Y!G8!j`(cA*BmR-aBPN1LE0D)h^=k~_j(%~c{jP%8}rpD zph=gsxaiD%>x?IpB{=YrrrbH6&Tq?kChYZS~9#I)xSpt1+xsvCtDZG!@+gCdY>k{DMYtv zf)+amHRr#Zw+d&>UHgd5&mX$KhN^J)U-6oz*Z-Zi;M(|ouWO#;m$vnz6L|Xmu^C9) zdUdwaB=`39)&e}veB_)99~3jls8r`%_@};qHSMnh8E9Ku4&QFigTg*^W^X>r$LY4e zwAT!;6C2gens*4Xn!IFkV$T*>(c|1+zkK^skjj#rgUMu;-og0__wi9MJC&@)-roLV z7{!5?9%5*gMbmfrA`^wMN8bc}f&ek?q1unq+F&u3j%JSkMGY228xWjt$zKj{gYB>G zc=_mLorW>oH4Q#+ipXNwe0AUa?f2X$82Rxb+WF?b8F7^R3g+e(8^F~Gxc0EiDvDYW zN9Y({oD-1J&h3oF{>D2pzkq-Ptz!xz|3KC8I+jVq6z0h0cDTU-gi(r*zW+>y+C_BH z*!$}&T5aAun2s%V#L-eLZbwp9Tz=}oC|8Wb;Rj>4!b|N)C3HpxJ#~Js&pBZu(5_Vy zI~zl`M8!rnG%dEKn%_zt?)nu9r0v1QazmgbOcJ*;{aa{25_~#By5tgMljO;A!#+J^ zJFkKwHFMQ&$@ciq+RX@3?4ykJ41bgP!vNgzLXw? zfuwHJ6w~RA&r3#l;E^8PM#`HZb5LZ$!X7XVFq%1qhvTUJY%l*p$HwPLa>}E@I?UPz zxajq&(*2e#u2?w&39EZo-TN#a6f?Y*pThNKTtW(jxS%9xf@Q(tAyArJ@KpI2GGVe0 zo2&;lRA^wB%l61+fTai#5HR3B;(ilG(f}y%9t>(DwPY4hVM1U@+e*Yxz=D%XkYcPC zAtzZ2de=;$^~f7n{3KK@9A3gTcK8EqTD}XHSX?|WM{x%S6yf)OnWQmg}-Fgvbr1Kqii^& zI;xvXh#2Tmjh~LFf?Jg^n&JipN~2{=z@37f?*0ihbqr=g|VP# z8*jXGf1(0^#8J*KBt6A%!}aLH4lWMi@E|Jtfs+{4uXDY%fyA93Spq(|k=68k5BKvP z=k<&<=%?2xRI#}t5#qp)O~TN8kglDi`}x>}%kv%M((f85E6e_rEh;n$+h(e$lrK&y z((>@LJ3jFb_&^cL?;0c09O-TO^!DsCuQSh$#;5M3#}$)Uzvvzm@15D<|7>jv%wrMs zgqGHt3!W+g4FB-SpwB5+;kFo}r;t~?D;RnzpbRF2oJvwlcM>6K)^CDdOS4P=pr1w;2 ztYK1)vXvohxi?U){nD-8;7sFg{I=T`)2D>!2dDA)R zBY5GF^Cmq1rTDLStRl^?qf4%kLYC`BgZ56>lT{@Z1_=$uWrE1lM*ancUP z^kO8CHbafcvTL(_9H`4~T=tNk$BkH#+M~%pixE7@p{KU(d!wfrpx@`zHh3~$dj0+C zS#90*Dd_p*>l*L*`RxnFXN%-92uzjt_kQ4vyXHBehO1RhFGLlReaoIiu_hxja$IRK zE>TSbqWe9zgKJLfhK8A&$MBkcFD*J!H^h8KEz=J)CO^?!q9idmY>`)R>Ks_wPw8)Agcc7{C zscD{CUc8ABW)i&rfi84pjn3Cm6~<$4xM7rduef#IFm`-m3Q-|xc#s68^O!nqv~U1Q z7$FH%p){7m!rcN)4Y!_RRZEB7+8S3h0V=Gi9xI)@=tMp_l!K_Vve;v@$+wgH@C9HwaP8o8Ud z^^Ole$;Mu%6DkwZB^bwzeguEk7faiFShG!K6#QcUC`k(Zb=h_{U;FFf`)4Ja+(%*V z+h8o+u-X+3EMneN;i&49b{gexLYpBO(ktk%XjQzwQH4L(p7kNOwxa6Ij2$pzr+t@g zsGH85bYi5Ny8?NirPS8HXUdc{jJ>y_%r>EBuc`8dH(F-4Shg;50DR^@B{J|%Uw2cG zBU2L^vMj*kyNB7zHihyVOVAKRIkC2&FstTd zbrF-{E=2e+5&qRLKBGnL!Kr|?$mf_`KDyg&c6K*oe`{TI7YknG>cV(xSj{S;uzII& zKY+JeXvSOacBndXU);16teHZzRMOH2d4l=gC!^mNlQ(>Aft@D-?g-MI2?+Hnd@LyJ zUHJ|_ZNuk&;cvdZU5W9m4AiTXB4T_~Ymu)=>2iLjb5qC~y1k}s-zy~s*a`RnF~CEs z^@UGEc>-k0Hy2a^FSiw8IkO}{>&(J)!awiQU5dQ@K3()O6 zR=+l|m4{|7a*GAy_YpduMWODsM=E-h{f(zy7TX};o^8e|-3BN!;`SJnm^S%6>p*d_ za%fY_?>&hUVd1*xmQsmU(nkV z3H+D|(6WxN9m0II6x(_tc1a1dj`?QnPZ>EP8N8BDKDk(IK`|#wz$EvNG*Y`z2P{sd z{EpR4TE^U272_c0>=&~->LIqOBVWYACxUP`zUSPFP{52kKMONjiPj5^T#ymbaKMan zY*rJ(w-C*79iF_W<{$#{w?GpFf8&?}ZNxkb46IVxKx0yWW{-QtySp=NwM7X`7cw?l zekIpB?myMrA+nlvFllfZ37vWSRs2@V+s}kxYA#sEohGiGeRI}q;zGa(`0XDJYW<~{ zup%(7W)CmrhVw$5lM0SI5Xu}OW_POg!t-{DlBw3=W#CFrJrWyF?4e1gu`QSPYrNPR zVIGfnL<5qa?>-)D$RAvvp9&vrIbN?ce77Nzeco{9@>@Wf!0c>Wd_iBZ@j^^#8chUv z{PU|lhm5)v?d^&3`8ZvsLrnQ>z5vT+5g4HRrfchi{ZK?Am4kyz_(vu*49RZIugiYW z5B1tH*rlj?%O|W;-!9x2AKE2n&V^6)Flq&ik&NSb!ZTO7I);mDw8_6|aZ z_IUo?mVW5br~T*px=unzLqUDQTd?n8kMV#;sj3M9;`R2!2WT`!Z*!(Y#-b@=F?&+c0h=0tB8Ztm`=X-b9_GX>mrM%Xj< z7smLh*dP&>I~WR>v7q6~W&nywyC=A%r>WVDh^vcKdaQ{-phx$gKrYP*sL>YohAs|kdn|}Y~KaynneqG7>ph5}8 zg{=lp;QcLvZli=y5nBrkP)!%UtQ!fEd_w(lV&NryjlUH(Rw8#+pNbh^I~{1`;*~s7 zLou85Z8|(&t-5`}IoD}&g-dz8r8(r z^ku8+{zMlpMG{>MVq@FIwNO^a&PEU+oSE1>8X>es6oy~{u*kh@wUN&DH$Ob(Wo>m+ zDX&$V)CK4%Emf&>mdhH%wpr~u;VgVk+8(3m1jbC3A(j2RfyM)|%3q({TC72AA8j(= zClcnIBN`Vm6n#VqaKm2&5}&lBQ-sDi1M$$|d*2dI^ioQ{tIg7m#a=kw>kkggU|b=@ zi9^$REyGn9)4g0V@g0{4dKBekA6ke@ReVM&;J@Z7H7=$dzW9Q8Q{`{LFVImTLe0|P zC)>5lMCl|m$Aa~bT}fc2{gGwZg+Xqp#A%ztG%fOJbtcRY9_DmqWU;8&hu7I^{{G?| zla~2v=MewC!Mi~R2EF588Z2Wr2_U^@D`!m-(>IsG7{jda`@+3(*6gqneWI^_HE8Uz z*Sx2Iys2FoZtu=^c#v1b)Yx zywkqUQ#1^rn|A#Gp4G0l6)$FUS$1J>t>mHGh7;B`}TE_=8ckbnKgT$vs|(vu?D!8d&{(hD4f{+i)D0M zMz|KZ`R&y+*pVJuCojAatfmDBizT%~t4Nx&t=iYY2HxZ4X8o-;Kti(I*{TlQ_YPxO z%H*%2m+xPGfEbw`zQgG=M@x+D=t;+AUqs^*%+90RWB1uC|D*W(;;;a)-N*kj6*xV7 z=K{tu-G)bFhtNU8#2BK?za3Nk^SJx6)D7>inloZv1==e;);_B9TlJBOHBJsiOfFZ1 zd*`0UP4BpVfZ%J_mw(Ue{FW#YSi6xC#TnggCW{Enihvs$g@RNiXkDs4P6mL~;T=W| zrKfwcFFRHj)MQ{}H|bk{kdFIJls^oSHBR4 zqea|L=UfwG;!nj-0`89b7>db`#k&e(;?s5TG6@g?3>TiH_jVXu)g;dXBPmE?A#LS$ z%^azj!^8Fy6H^Es3`zn4H2`d64(c9l#Nr}q!p!Zf!hcipgZJo%wJm%cB{Qy_@Hw{L zmR8S-6$zx{F-iv@J}?Qb-8TRvM0^6*RjsNhP?_5rNmTfzyEj?*s@3|)wL-vZ`s3AX{UKyenW+Ck>>}_7 zOXacPK|=(OxJiR^1WMqzdC_a=SptfeelUt}KlIaRocguh7rqUqYx>8l~sF@PBZ7zXx6Q@jnR$w{{*}?Isd^k$>J#Z-wm*#~QhtV^um1 za@8n0EuBJxZdl$ciTo=0%q;fFk%H%rjws79E-tQKD_s&Oi7n)n&CQ_*bSkEMel7@n zd_piqNj5p2Z$nuwmj?)A+OQN2$2USYU%H)l0+` z(I?aWJzsxun@uQ>_#Cmpsb;wCvqOh4FHsf`;eNgF!$>s4irkdH;dn+`4-YAF1tRX< z`$0#bsJbIry2?nR*hwYZ+E<@Rd&A6f!Kk6ZW`9{LxA0pGEmTd~nWBnSE#(;=Hj`w$ zoPrt7u~G!0*a}xXsnE>PUy?vzVR>SpUu1V2w?aD!>7%goCp`;2^@uWxa7Bx}gex?O zOSY?gpA{x;FQb<81dw>pLfT5pd4t|S@3-;-w?%OC)i0M1|13y+J&Q>vLy91Z<$yht z-$KVC5Pt)Umo39o#qA~|ky2W#Z~^`eVB~Pp@^KShME=}=@81Ige}{@o{D3U}o`JVT z)0G{r*0v=+F_IlGA&wQ@AL=j7%E(c|EfKx)EdV1@KXD;rZ~w_Ih!&+HoD{lPU&ZbO zifP#VSW~Tlo|7n0yI=mOVp5SeELJ#|$TZ$64ZZg}rlQaEBebP=wXt(Dz2Dl+weDH4 z6iQ(O$8X*yE`XNRJ`a^oLk+xQUOBVAam)|dK3sZjg^a0q$YVNl!AcD{ARKjMG17@D z(~SC?Q40g!!v@(5Q=N+Dj|m%jIXQ6}9;k_W#fB0=*8zq(4@3p;(~swoF2-TJt@m&5 zgI}jqj$fk4+lF6&0j34^5+3sK-m3f1tVA$wWuG7$lUIwj|F}X9cZY;_m!QDq13!o% z26W0R2AYWBLm|}9Gh4oikHV4)jge8qm(U0sFC?Lv8?Ef>jnP3)-YZm88*Qo8ZPEf^ zxDyAC%)rYHWI%Ip@9$~duTPzrsOOiLBjCt*z$Kqcy3gT0a&GP2?VrifT0FFL z)^Qq~QHoxbkmvF`O3XVrdSB z>+!h7Ep7-ih4YE&9Dmr@8jAtI87))w_!L*76fL#a)6T3$0PSE9FmEMSShuuoSG|G^ z-=>(cQ5^8(sprfovR*-9qFdI7cHbKR2vV6#z23r@Wy$kibiK%hdhWsi1T2TVJx#impg1BE0)2}1J z^@F4W3zUCoEh2fkM54l#rZs+Rx@ZNMpSNq9;2mP0y@F(5>QhN*U~H|tP&KHAEqvy# zY#7xFIWlU!G0fCy(L626v+N==55W3JVl>EO5^NYdC|ej^Xgub)zvA_L6%)OtvjXFN za+R_4zl7(ji>MltnqQi3sEa? zM)2(p2VtXT#9eWdqAX63(i@k!v0Smj`E}f`VJ~DLHHAP`#PWUAq-c^= zkCe=6MG9EqN&v-c;OQbBJDwsckI|cYlG{v=jFiL5fCH!4L4khXD$eY6MtvI27zSON z7ky1yt}@AjjCM0I7uG6SR3I5~FnDbUcw-8!v99BvKEJiN#qMQpUVCNnx#B7azOYHl z)547mK{I83K<+&h%J?jw1v z8JKxmS^XygbBaAaf?W!0h{=}(;Q&i3cKC7Od0@Kjozp;iXb8t@)Xa|A1Z4`u+Hg@7tj?!Est31J*s6E5T|V<7Yd2lhKEY+wx5)a5 z&v`@i)@^zhWHX3i*>>LY^{39R8T$N9mSG*%12R?T3jSf`BJQq+1TWQi(QZAL_@R3r za(JUjZmo%N>;KQBmRa0}nE;aLfEfrqf2dGlSCXgXZu+h6bhU-OhQ)`vOaCRI^gcKZ zgYvIk@GrDgZu2dWrP}9LNVQGzl!#v(sAzU+a&U|rC1K7 ztAz`JG(-3t$q}lGQnSrB7Nb9TNp7)(iL{HqBHE$?g;3*FxoULoVZ=%R1}KFRr_xh# z=dMfeMKH$U+rqiiO&M0z&ox*6KNROw3+MAy;J6|Zg4E*mo3gTzeukF?1+x9aO(?G@ z>TnLv4kZl~g2*-PmM<3_JET`qTc1wU?~tq{7-F4FV`EHnwfsX>2=S78{9IXZ7vR#y2tM7aVFDVEJr@Qwr?bVJWOYs~s`d<$>H21$Opb`d7jVkkxB z=kL=*#~?FI$?Zn@j?MqOuAP;uT>s+#Xwc7?f&?&UJ%O=p;8m*09p={8%;tfZtRhK= zm}M>^nTQU5Y*X7WgIrj>c_&!Xg}QL?nmEPh21o@ja_(As2EUQEqQ2kU-PC|RBsY=M z2CF2xM28iwB` zVtYdh_x(@U;_P@*6;yzo5#RHX8z`Y?F^|2nlADp9_a6>-r}I3Hdz`Fa#2J7}CMNv+ z0K9NL)c7bzPXI#QZ~lBVBPb+!rSS5zzyJ-LNr6wf}{6_HI zXnpjy5=XF}#c;H)hOk7Xo4Vz;S&N{ZdGsVn-7$kx2P#$xm^nHKlmtzZuP*d6-P*qY zo%M(fMlIGxnLDB_60SeQA6X$o5lHn{MB3OPd1&9jyq5$(Ay|GEZ83bR?w{S!cm7wN>m?7oP1ZxkCgd z0+=xnZn)=Xi^3|kCfV||VGqZCdVdY%TV=!A>0c^D7_+!*;Z&=LLA||M&0i^`>S0>O zcgTVb+|L@egvk3HnQxfOGmw8Jh?@I~@1XH(TgY0FH+LuU&mfx7ls@Kt#Z(JqWcI84 zNmm2!=#BzX_;=r+l6+b;PS{ve)ecm^Lf+~R;(;Y_DX`$J^3T)#n*NrbXF3k2_wc$s zj>J+GMW+P9Y9O>yEVGN)2cPC@MCzH*LUNyXHVoY_dUX%n}=41UC8d|A*t&X zT+#s!a4+`hT?)8z(Es9s*!Joi(5;Vcxdw|zwVF!dinDaFdL9985?h7AVQRi=4d06T zlba0Lt^+vz{-efcalEG(*nVL&z4bODcGZ2ofVq7;S|W72=Ew_6_ztVMoYm}R0s^#I zv+x)%={#X2{*G06XlQ4Nua@W9o}rd#>ISNJw&+!>6|4KC9I_ma%y8B6@f|iNf333; z#58jQLQWIW{qN=bxcJ{v)}Vt|i7HpJ?Exy?CoJ7v1L-*bK&%VxV3kJWN7Z52_mtQ3 zzYU)n^coNUOzc!kJyo!~cy=7f^WFuvMPQm5Q^UOyp&E)D8RRu(hMNdwGkKTx2Nhzg zJc5VpCYS?$2kw!#LPGRd`u0XPBjr>1YxDhipZDFa5=7k5e`p$IuPj8j5*O|BF7sdN z>-qZU1gA!3@*tB?F;pcDpAOtf53WUgbbTIb`NRY0_lX<(^LDzfqa$d=l^Un` z{d_<|1~z<#$?NP5vKRo5FvU+VXKw4@GfZ!(A$#*;NJ*RM&v>*rRg_X5noYR;+PV3X zzhK3E!^eWHuKS+3ybmF0&M&n=7sib8_kGY>Qmc)?i8RPZ;!3`(8OP2DYLK~ge_F1d z6s^|l;QGi^vQy{`ff8gs@pf>Gr{r%KTA-OUS9+z!crsvP5QLRP__-Bwve0947l?K4 zec$uDnmbOR(zAflG*F|Ix4iC5O^N>5c@D@vQjDb_9{!s&qnJt*2oyO>Jj#SX39l3T z69^Au+V4n2AyYrf&Y{UZ_{Iu9dYa{3Abk7=kx)hLPCAPkw21OOmq{y5TDXgkf$tJ4 z^T@VnjlA6mkzBS?L&^bnoRb<2!e^OIJwwTAfD9VDsG+V;LogbO!Xu`H(v<`Y0**l_ z>@X8vFF03f0-sGhiJ76xAR*>#B|w&2>mE9nRv5F+RsQbSIXGsdOp}st!SM`Ap&qgw zO|#)d0xhVlcHM>==C3xj+*`98z64$t#F8=AYI%(ziY&LAR8|kYzY;`e3JHS*eL)y< z>)NSG*_yHQMqEifmpQr}OP*E}V*;MZ(Cs!8O?trvGS%{igW1>PR7LJQE4C@Wh6p`rjN!e8{2t<1l7S6a9V3!)#(Hj7 zmsz?BiZ5L#?MXp&DT%2U!6S3fu8tYzRey6^3z41P9~Hl}FZl&jAQHMc^#=cZPS<(g zTld{9N35GxrJ632#Od@R-+Wfdp=Np-)g*Iy?z$kFbskD&{@ZswvI4$3{&#b`r8VCd z<1aU&KfBCJur=E@PKm6GlVZNHJ#HeZ?$Qr9&U4$%cU%8YCH6jRxX0gWg0KWRXL_ zZ_;pv3TSJ^3^Ko$?^2vbb*;k%u$1E~F{ac&w4HVfBdbrmcHvRg(+^>Qsa?UFn|l9l zSw7kIpW1))!U;b6c7DcwSOh1q-j84d>*-BWjHzmnN&}#H&Vs)0XEH+W4Es-zTQpv( z#UIi*VLD$zJD3ogV{s^7;9lSq+|*UnFoft*xcwC*OpVgwh+rYVjL|+)f>J24zp_62ei+%Y5Yc)BriQhkzl-Rt}SBTpd&X&LJ)8H zjcb2$YFy-msday#TF66@BmY36A}9|+f;b13J@<5TqL{|WnNmY3ch>&#-w^;t)JxO> zG{~&|ht+kE)k?pWFi3A(1bQ@4#iE3Bk=EtA7o`?iV)2j-FLx2MbNE9xbbg~dM5qzO zC6{|=Bzoi!Bv$8!#xSS+N<KRS*<`+|Dg;}J@3>dhC~x)M>4Q} z4WoC5GH$e>Iqbbje^&~*TS}u>w~WtA`bSQSs!#vM2hEiLM9oK<6 zff766>~TSF#D}jc$k5o%4C=Pya@B_v)o*LM*T@eomnW`x1_dzPbW4cyHn)1;3JPkS zI9{_3c*slOYdoHPrQI`0J@?j@_NPgZ-tEE%**NSsRt8iR4f>aiZy1sQhIfSmo)*`AOGbKlYv8XZh2 zzK-3I@;krUeHs6LJ<{_awD&qhcA4UL#(+AhiOsP+3vLQdASASHN0z zBwe2rj(dNotW46s()zIQ{(bei>Lt9eU+3>MKkH}^fhng&0sS(xpOs?uElg^Z0GV(= zfQ0B&@XjSYZusqGvkB%e`hz3LJbz7_?6(tw-T+>EPQH?tF(UZv%s*^^p`mEbBVMOU zP&d$DMR>u=ipxn!7`O>Z=0eL$CNiV^!xLgqh(pxMvM5o9Vskrg7dg_Eq0Ovo>Wa?97+x$r zYVx&zrvgr_Nfq|n!2n<+k;;8``y+VeM^%NJKkhxXWJG@>k<}%k$`+uDn8Ln>tA87< zRww&Y2xJTqg{H!WnJt7gPQ~c8s|X*K%+$Fpm{8iyYWeNzOt(YRHJME5fQFP0=qMJD+R>E z_PH$~`rrJboz$-0*>% zJx*5SrZrD}5*#jm;Lc#JXfwf#4^ULb{66j=S?~Djal9LL6OqydS>rKOaijA&-ZK&= z^p7kY3#@#}aN&>#AW#I^A+y;9v9}0qurM!up=&^;^?g!x}&Wle85Py2ixh5yR-`g<#cmr?=YDyhkmo-&kt z`0l#^Pv&ZnknUXlhHcW-S(aL-N<6fXjm{<}Q{Cv%N}KoW;a>Zpp1z|0)wx%VFrv`6 zxHz;#2HiR$>FaEFg5!U_Di+KC88lehs+d|RVUsdOzSo7R)i4Bbs>s_xJ+bp&q;~gB z7$=G&Pb)`?#w|CCa8$3^yw|53Il}C;$4>~4tZn-e<$hFW;Vyo?Nc#G8saS#Cig*%P=0>Yvmn zMRQ9Fdj26KtZ`&7mF-1#e{EOMJD!t3N%?ng&K@-}T(rL`E=a<3$HueP?ilFsqh;G} zy)p@1MFykdKh!+eqCMH-X}$zx>eFk}!#71{sE!VY5mZr^nuEkBu5pSQeAP@s*#>&9 zaeaB3rHM-y1z5P@4$+;V-@u9qAT#YKa~4nnMh0!dpzOV7BDfH#KGU|^?d zwEwq0&T5d7k`Obd#yk*1)Krq%FqwK3>D+nd=clpqlL|YzM9~XoSvtQJJhyNb#fB7& zktcLWNIi+PO^yvcK*UKI;U^#*t5R`3n3D=BI!YKuF9w7*$3tcj?dF~paaW}Q?}>rr z14w0KrU7D!s~Wmg+O*dy+eZd*!y%>e<^Tta_)wW#S68qJAW8sArh~>_2t$@f0rZh$ zM|sn1z2t9#IZSqv6x(J#dQ~P-9;q1X>Aa^Wc5 zvH`$=z{;WlkNeFdUfb>jGlprK??Gy{F#>Zk4NaxgTwJjD6M49S%EvxqfoKVQ9JG?Q zSN6NFTMf_sBZA@HSKeq(*+P+L%hkJcchldcD!wmz%w}2PU@z)EHMIy2(o$ZeiD-e| z-rhjwL_%(m;38Pk?z4{V|7DK%WDUHK$lSo2UCA+H1*GZ)zn&}hNRqRyEG7ZTq3fio z+!L+|2ws}0ZzLN6Zs)kpGKzBZ_fkH7-mk3Wfrz-w8*YPLU|-}__uJMNzq_;TrQ`## zDAcl(>+e%B|b+3azkm~|2JZI|A}5RwpUkJgEWAcnGn;3kpWXMdDP5L zS4uOcwJ#HRk|5T$8b1^p5DWp6F{sur$M*WXhN7;f1(zm)4|nq$w6=t5xw!=ER3>XmRC>CKa~KcDcP!N&^EEE+MP?i&w8x z(K%bVEOllfy(NzgIzl*(tKRITHdNK94%nLCm}<1UuMzDIwTmKZgmWCVSA%ZHuuY*- zwu;gx5S=e+M;xaH7X$&%VL2-J9m1fj$%etZkie+QMSZ;KyIrtuA)l-orQ+!kD8oqs zCZvvCm^SmmW>~-0+rn6p^?MNhP;hP1YAbW%V-#af@dKNre;Qs zOWQGtpu98|J^lpZMaAfI(r>z==gq&Mb>yQIy|&FRMT?7B@~)^v@cvSp+%TOu=g43o zrl?i!kNyTp?l1z|cp9vpYh#nP{INvHN()AMDbxiRJZ{+N!0`$feCA`hbJKg8oyI|# z!bs`Lxy0m}5NLaE&DRLesCncT_Xx`@vQbe)@c=N_Y2I~fT_Z+Sl0l<5n@Hm64Gfdt z@S?^p`S8j;rgK%+B7U4ma!Z`01IeQ0jsnYoXt1`(nD)BQ{DSW{sQVM{KT*LR1KdaZ zt=`>Tvi2FRdrTW|&VO>oh%_f$+X%hdQ%%$-te)io)$ZV;2?=I+)Sh#rpGWIkq3+#x z+dJTf#n!v(4s>2nNu`2dfG1%&_!VQ4X*HYa+fKHiJ5l;Y{C?J-0;# zAnn19>ekffL*LcA^1{9Be!Ikd{}&>!gfL~$<9H`EoxS39_pxhqj@$KX!7~|6_9*RY zJ#Lk&;Nokoqv~5HGUJ_UFWot(AEoPboOQ{|3J%nR?&6*SQR=cF8mWa{P0eQeFi(~ z1x<2hxcOOX_RaoAUv|CmUi%Q;r|c->=u5|FGJ$mV7a1PE5qPo@bfqYd~LiZzX>DH?u!Zi`)6GDFb|+DQL9n50~L+Jn?G4DMG+QeD{8*g z1=_(msrel%{K745Un;(_gs9}y=)FA#sz7f)K?(WyJnaj`*eu)cZ1%h>==$Cw@_3#@ zA3~ZDoS0_v`H|8B!j`McUz@Q8O9Kt)e;3KDs!La)kwZfSTBURPZKmNVEK7E9O(AGN zQ!5?7zNNF7KEdPZsS2^#E-&Q#0u?RJR~^Ka(-nQ*b~?h%j#YliYgy}1L(VitXHXYk zmUaV`N1WR%!bUYg+>~OJ-wLKCBk;?PgP`_+(Yq?1^u{PCOQnh16)8No;fOHqx&Un) zg*&jt`S^w+WL3$jIFNx&Cuur{G*B{}OO!?(iy2Q*YvRw2^*$M`1525(@hpa6zNqJF zlpHs8KP^mLJHCpTXq3F*koJ@uAn!iQZ!3ZIS0@Ba-;Bbi zLP)pa3zN9+1=RocptQVSbWT(kAcpB?#A(H-w>>a+nj1g2Y9=E(VK zii0~6tEC(*2CJvt;Fdej|u<7)84x8eCgl26GBnw0n7Kw-4C1?Hy9?ixB{3t-v%2p(rX+= z>xl=@eFQO0%0N`c=qVD;ozWK=5=h0c`M$9-el$1|ecqwhHrn&({_)LLYxv?0?uXb&D>e z4?FfpciCt%hORp(f$r-*>#8oQ3@}IS2@;e0(>yCJ6oOBsLFHVIM}BV)Z+=IfK_5Er z^KXT1O#BHpwujbEM@ei76ePZ@94|7 z-7`lV&as$<9wdMWZVK5$r^i4d?A*{5vOy9eK8Ntpd32Pgnu6^$k!2><7%5s+k#OzE zbhgyRa!{ODaAEM`uHf)udCcqsn}xf?2CX+IO)RAT^eDxddelf|PVvH4CR8fjl69fB zqJE*KCr61d1}B28WCsK~8$?-CZIJ4X1qg6yQCF|Qq=KA9*r$i>))lPvCxcsYh5X2s zr0$oK*59BqUhJPLiBe-C8iehjjxhnHf{a&8XSKMcV})$(y=M0S6=V5C;h{H3%JQAm z6kQC6*E}g)ic!mLy4YNF!x)EIkw0MDCL6gtW?ZthVx{uOMHQ1AKUiDJU&@XpWgJP{ z;q-_u3`-!xPt7%(Bd6=~A(Fy70$`ClW&2k`kqrW4L~Npi;)>C&xX8pq1~AXCb*WfN=en^PU*dJ$L&D6)!P&7 zBqtd|%D@-5J!WW*V2{uoW? z3BM8Uy>^3DI7u^hW2z2+vQhKv3Rg32F2(+`ajTsLLJ4zy&PuTc_HC`5@KXYB#Q3W5!e$ka-lLafg{uGdGq< zIEsJ#dAE`dqfU<$=VfWyu1`CECCTA#U3w|blmFgL~X8z zdsWfgsZW{E|m1J z<_z)1v4^7#a}S?UA%t5GdhqHFn$) z-c5RaoRZzY#Pz2`=e=*7w9_5CCs0~93L=GBAl4$smnd=wF`)BDp@Iks*}trzrKK9o zJ3Tsi`fg~b%{$^YNI9>71_(>m4n7uhZmFV*?OXk_VZ))*)Faal2%px@Uqi--JBaenb%#;be_C@h=Z=X0#pRZOQ3zlgr7*KA!MYdE6QEJ+$~>+gpe9{PKnBlek2lQ8a;3wDKf2< z7+i#iOAfU|S0S6cqK2fz9;}|X)EYymmN)7`BsPvRM9H;uv7803{DFGmc%dYEUko#; zDe;vfKnJE%kj}@^=`8E6v%NJ?+QL!oYXSb2v*RiNBc+ktd>f5pzTlOn+we;Io3?vk zU05MJ-PtoP<|GufG9Rl|x2Ft)gW+JQx$qwt%m|1d6XI<^<7A`_vb}wHoNv`@$gBje z%0QN(a%9#DLwo?V|F^R$?-w>mqx43D6&1>elVoUP9|aX940=3QfIhvjnL#Ee4JqFx z=QI(h^bXb+g*%-Ux(@MhMFrd2^{+T!_!~y*6jYu=*%~EzuqEd!BlpwlQTC<6Y^qvO zI3Hd4VQ|slbyNZ>F$I=Oj1}j?Vbm;P5^~-V>!GR zi(9RL-pIj-P{_2;Y4Y<@ODBx`rYkNAN-S$kB44RyR!VlYsOwp+A7+!INVjMk#fbi| z4*rKP%=PKT@L!(n_o_QC`~T*F6f7mDb;2losi`fD6Z`zc%_Q8~WvGXMSM8UBNO^hnxV zyMJW=7=>iZ=y|nsZ7}*GeFPlp9K3`1+1=ja5K`pu2eJD|X<>SuyIE(Z9m?6y8TQ#I zNqf7D|MmMHJ8XlKHnjkv@J)YyrknHqoJl+dMrS&PH2n>Vni6G`__Q12S?8Wu;i#3N zn)TJKm+erz9%lJ(5O+l4>rK^k$8S?tjf$KO`aevWBZ8>~#hPf=Z-{4VB+dh5mUXIs zj~4B~^&EL$Ckovpw$}ND3w>;E_ZG4E5RAkSLn)U|MQ36v`6pUjNk$1&>v=eLq%4N>wWNs!$&4ch5qteZ`mHKMDXx{o){_(DwIWeYY*t?pV7;?^(K#` z&?hY{;NT^{R>Rk7jIZ>P1aPvfB^5;`??lWlRx7K|n~hwYY)<#? zZEgQFu<hduayHvdXEVN<@{-_Z^bb-AP0oHo!qTnZ*0MOu=RB zs|;Qva#;|!yoeX7qw5-006`)ElLC9lgipXH@=G|p4zKjbO= z2K#M%&LPoTs2$8MV0CQBW1pVn;Jxg)+fOCU%*B=aN_?ihyL^`K z-7VR_gt#rG{B&-OffpGd0`6`W-A4Afu<1eBerRsl&AR%RbN$bG`hV;J2o)|TwnxA> z2(#M|pg&(cqS~?YICT0ze|151veJ73TBtWz?EU=H*VhLV@DFF{@6-|@`tFyl7X|+7 zogf+4&xkS`fH3&DHzlzTVap{N}zHR-dyD9v) z+Wuq53|!V;x8tn;b*fJD7A>`AWb2f$c{8J02cg#z`YYdN&t1Ye?ZHi3fYTZ}i)12aw#Tt4y`KQ^G;y0O&)cZ1!m^JL@O8k9z zg=V9z9hY1V&59Ja+MTG}7t!5`MxVKz<;vN#iAnr5@B;h-!31?eUfSDEFZv~e&_Bpe z6p*oyK8Y@CS}hE3=@~9@lywy1CUTc6ut(A-V-%KhIVT7t0}U(G%;wjrKsy4<=a^qR z`C>pZ^nBsLy7NaR?Z z!`(-c?C;9FO_x6R29tCh{*rPf@wjkpE=MC*B^Kf>Ib5k-G0Co9^j@ZItdXKDI(&|h z-^^re;g6%cm#y+UckOka)waem+LtaHPI^c)Um>7B1nj9~=@Nkl01^Or;RdNMqbwN` zgb$e?jIcmRF?<+X#~c9=nO|d=57Uft%~RmNh38YviVaXlCdwB?$u27Sn;(UOIcI`X zSQx2R8$ovVkQ1$fDqD4Z5H))I&>hxqUU;PW)_#ttB%$Y}x4LWwXYTb*h1j{Ex%q-; zxJwX^OeFVL5j2_$=|EH~P+9x5LGe5>A{ga-G_^PN^=f$X?5)+RX(CNi3$mFT-$=Mg zKg(4NVM1vhHfisQfv9b|*HW+@*K*|iYFk_=b6Dr|vSq)lBxjiPWATsZy-Os%I$4vv^=*Vb%|7lJ!QnLv8?X+juBhT1?owH0#Xe z@@8+V3Z=E_fdmx#e@3)}|7S$|1#Anjc=X~3zbB+FG;ygSzusU7IL^1v_$Ahp-mTMh zsr!Tj_uPNh$O&2X0}}ZmgN$ujwnnJjK))dHmv=TB$F;30qn)!U zM2tGHiHY@8e94I>ukp7Qn7TwsZeNb1fv_ZX1oEs1^%`sL;BJ3JdVn4HQBoxDT+>gU<~cC+7`4xRo0iE3T{QO5i)gF!L4BBrFIqOp_45m8oSlV%8^GgS;NPw;>t zNZ^B{-LVlJVEnSHA%oyQdrh>U3iDTjHL_LN%so*;C*nx2Ju$S6VC(MqVI%u?8M^1k z#cVnuO382UR=Jwe3AM_sOEAPyFw<}nUjk(cIT+4Srs{VG=A$Kwn3IT+D}pozT1xr30?u%X3R)V|YxzC{dr;Z0 z5ip z?ghDtkxK`GD<@v+G9t^UYa`HrRka=YgAPiV`Ax_o%F4OC2z*$``r;qZ<-9JjBMsxIpunGorhYM66>tb79V$^*%SVlo`2u`KTo@l3I_9e_hY_J z?Rs}Vz1<8ZD(=nad_ceY_AV`Pt0=U8U`wiRumD)e%(DDc)5{0SxbxTiBxX+6j-v4P zTTlkB&-QurV6Q!YhAce^2!7PXYDG*&enAI=eIFUz!6(A%a?c~z_R9**_I5H|9^Qa# zSm7zBhmhCFs@voo5nFcbWzCVw#ob-H#9Tij_hp>x0H`!bQ%9}baYgq zL3H{c3Ty=_?KT}p zEs$UdQIxBX`}6R@PSjjQ@ruOM5%uEyP7-SAyE99DxB*4^er}iOrkuG@jtIfR=+8ee zY_Ru{FwFWtVZU_W%kjB>ba!FWC=gd#80I~y)8Tu{G%4JtSmlwvlCG_8dckpAD45i@ ztQVuSj;wLZ$xb1Wr4lqr!V3g$R7;kB>1-oVdTV=31YmK7Wz?$}gnW~IUAY=rMBp|1 z`T6t-@clR92N@Pdv32+MiJ1LwL(1W&J0X_Zxs0&(E4|{1fDZ}H)Mm5|ZjQK?d^>`& zGC})dHmpC0L}KBespcg$D1F)r%jApNu8a0~VlcGx8tq>skSb4$era!-j*v$T)yXqF zYja@N$^J@#rz<~z>s2e7iUXt$jhGxmYt9Jk#G#*q;;r??Lp(w`0YGbWGzV;eLM;2f zGwjXPYjp3ZDd1F^5t(MKO;%Qt%S(KUw`|fzF+h{yaY?4i)TKJ+^}+D76I-BQE;pbW zRhwm@fSb&yXXLQ=rQ^xg+LPzd)sFt)s$xM`}r)@!=)!%GARsrkZ+0drYY3M7Pq zjfDKnbnfUrpO#Io7f}j%?j22>YBQ>v*-r`_Mc5h){5KC5(prCD>NBUqn^;ofh!Ly zs|2;~caYuJbv=W6?wgU$?wLc2;Kbz1Ew<7ln;N}kaB5H9rpH$ytMoW~WtC;!I!DlD zE-mtC%`o~G`^(+DFp_@Mf4!)Cw_sEG#VPinvw+%w>Jir}q=r(j;a|FfI1q)&SfXSR z!+KkmZ3@S=+Krub5d!vys3Yyx{u~?a<fl<$z>o0Q4_0=93lI=UNlA1#Oa2=R4Z2U za-ITCi1X1bqn<7eVbk525uRNBOEpHkljvBP%K9&0U$&#jxGc0kumEHIp)RC2VmneR zb}&kK>wBp-vKleX+5CKg2XF&Yh`Z-a8VJ=cP{1Q!K0_tB~GcP6%Ebcq{ zUE16bZf%IxR7b$)T-Y1D!WjQG6hH!5oXLPWV6~@>GCdX>FVXS`+0A|}_T+2cmy*USH1r%B-zS+gDDe@e;qM%7aI!Dayq zr6D2WjwsJIb9O%$BH6g~A}Z6u@_TxlrMWKg(c%4MddE4(3(x)MNX!1m+m)08e#IgW zCf3Bq%mRE7qO8u;&sgkj6Ib;aB9AlFIKNpqv9y%UFGTA12E ztG!Wl^3J<@r9m<=8=~<_tNYTP7s%KgvlQLTKhv654oDXHo9?0MRpah-sn~4SlG#di z`L;b}<>mhM!dlk(xnth@zuUg%f46AA|DT7LvgzUXE6~ zX=}m?pX7@Uu9s+Y0O7?OvNwI{g8bkf%cYz!2RVUjjYRCj-Jz0$VzA~V3809y9syaN z7vxF<`Si9<$=>O}p+dpxrWY+fp##)5NKZ9r=~{VB@mcnpPbxlqPTjTcar3z#w2NG= zxD$?Mg?m_BXKFB5G?9rMTh7SovIY+d5%^!g!8&6b#GY%!9{(@hyBRls6BYM2d+rn% zYlI>bX%vEZN{vJa1ZaQ?nH_Ke_}9N-Vql!0sz` zx{t%s`yD)C<{dM|E5uSv~zu_|h+eQ$x~iIZyU$fjjbxe~vBR@a73M@`8Iw#og{5fNckw=Yq1=9Gfv z@KQfgF_bawL5xGfq6gMVh4)#W@VO`53gm%Vym%soT%9J%6b{0_jkV2W6crMY6} z)^pbi63dE$Q9{N9FpjbBp+#~3FbtXC#ph4yWaBw)mjXyk5B*MO79J`@@P;d5k{BDe z{soM)>tdUgFvDL#FuRj31b7|}<}PhM$QxPaW>w6P@8ss3-u%-pp`9?IDIXWscF^dZIn^1RREcnb|MDW7Q4(bVD`g{fE!E(oHMajKK9 zY?6fd@yRR!qAbDHi8Rnx7^e~cn+2GQ4EV$B=JC86w)k=vs2IR0|6B}i$MgB|@9@j} zby11X=UQa!KQm1dCXsvv=_hx3hv7^SeLG6On8g=f(zWW$d`Jj97dzjue)|4n3$`_OA#pEW0kf?X7D?H2UwS%yb zCnNBUL&X6M4U#jRtD(@v?sYW*8d3Fpd%fNv`w2V8Zu&&nXmUCYz z7~VTDAogzu^^?{2uaqB_3BAWQ={rjI^Dpq1J;gRyU89_p0G%Ldo5d57g=tae_X62I z#N2M*`_b1BJ^=at$SorSU_whH8%!;R_XIOHR*d8rk{me$3Xl?z>PyXl5b;6ZARwqJ zOo9plz(pmT$ke(cDVvhUk6DKh{C%digZ(08+h|AcC#@N+0+PQbDLP4F=VNkBn#hD1 zq2C%;n{rZ8$+3fJR%zaTler$`sx^c9-8u`V{yie;7?+={K~+)g4f0 zFq~iGp}faCSOjeg^?QD6?rWQmL1kT{-BqidItZhSfLvXYbkPDO7ypRBV$y2+HW3E% zmIaWCF4pfDn&pCAC;sXan>#$VjbR{3`uIbfL1yY-$7xIfJ#mxZ`AU2HyTpR#@;3=z_P>NE#Nx{Hx zj8Xs=q!SMGtgeq)9BZKk8Voe`AT#-J-(f=)HZ{QtGSn@nar$pzP;g#Ln?L{vC3x-MHu&pkN&WiY<`s|d%P@mOAAC12yGw6VbM#S9g z$iWbV3w7*&AiKhD?^(s{fxpp*nXCTDp1?z#ef|MM3m*U}x-e%f0j(DfTq;=|4k{DV zV69Yu*Hq@vc_Z54`8q-+z;6*saM1&-WagI(*vgtmDbF3EAqTBeY;~727`EKIV|vWH zW(M)$h*P21ZZ&iD06`&Gt+>&hiH$z~Vv##vO)A186hm{*k;x$45s`KQW>@&SUDsH} zZ>0S<`!o(0W9l2=zB=5XN0I1PW7vQG1iOz-*pmU5n^ss!?J?y+BdXq+>WVcLMH6O)!j;IRwee24n#YbuPPF1}YVR{03$igHvlb<^aWvZVU?-_5n5`Q;6 z;w8oZM-4WvTk(Rh8C~!Bxccn)D)etQw)3L;tDF8f+3v1F2vz?a()1*fx5q{xG#I?!>74&!DZ3M}yu~XZO7U zzn7HfJE4E>$ECSCL_tTo*5kl;e^vLbFn*@Gjh>i`ME9NHqR3PY2A8^lMs0eg6g*WK zG`dmM(0Qp5N0@LB3NfI}GpQPgJUjR8ZUG_s@347Pt0RKb9}z+%ZW6;;%UH_iFXsCz z&NPe9_QMHJ&Ue^pRykR7s{mgZ44Zx*j(;qr%1qx=myhf9gFoeD6|{Ug80jUT>8p+q z*I!mnrFA^%lO(@TJ4IBY&^kfQMtML(QJPQIdDZ8Vi*5a=J>%##$^3`MbefHwM4JF7 zS^_d9pczD)kys))EY?y&KxK0B`DCr!n~1>?aD+WVWrJo^awf5mQ1NXYAtBbG^zn=9p- zi3F7(QCC0;0|NPe%vsOzn;ee)AFAH5z0S64+n$-xjFZN8W7~FPG`5q*wr$&1W7{?x zH+JJTeCB!G@0a&S9Ls);F}7`85#f$qz-h69ad0WuY?OUl>=SuA00)LSTs9gDO`3>d zjJt?Jz2Dq?W(pY>gs!x_z=8-Vn^k4duJ>JL&S*0Wg+CBEmBj<#u}D+t@}0Icjq{of(QcP!T_ZNw!k1>lg6X>;;_gc9Z zs%8-oysDrGT?RriHGvX;vgAdS=g7rq;8+=pWrNw;AZL^CVj4KBq@$!85eg}oJ+*yh zw0QxFPlY+H6%*(UE#-fLX1DK26!HZFjd1?FtyH&Xe(A)qsS~Wk?fj6P2smSlf}3|j)RdP4qrRZ6WKWG@p;Q{5^xN%E#Y4;wG__y_$kOEDKOA>yfrI|c*uwa2Lc|q(_-C)xo+3{gyaH^# zDz;`@`9Dhy6yiw z92FlH8oHDH0YB!!pg1#~yvMC%S~e*5*QU-;3&V}TW^H%8T+(v0nZBg}o=aZKA6!eZ z9d<;m3;i*nc(@5LhFJ<3k-ygSCP;;ql$-`{lgkG-Pli;}iTV8g{gc}qs+q<^BbA3+ zd#)oLZHJki0mbO;zK=i6KK+FLeW0phW)@$I@iWwHO_#>3cOV;0Wkvse$HzJE(F617 zUP@$sW+fA*_f^Nw$`=S-(BJNP4-@7WnExpy6wlRrHsf)*27YCZt8Ty?-D^t8|y^DPMEFCJ>5Dv6{KXjYV~?vKga)L^65h$(*gb z`!M$;s57wwCSU50PD-BjaEVsupy}i+R$w-dDI#B0(&IN5n)RmI)}Gr9$_UyB$f~c` z$^t6M4b~_LvjPnl=26!DnT7^UU9LVD8t1kgBXFo>rJU%~G=|F7a$GcJfkUj;K6U(FlkGZkoMqa1M*7qd|2hGUd@n;!A|M^E!hzIQ>KHCC!*I zik8H|N&uPdEJ`y!T?0tr>n~bOLKvJ6sWS)VD2)tJzp*RhLu)<4R zgu-ZG4Vzpxgc&prTv-6g&|P_}tT=^9>c0wW#>xC7ZT|{@G`4=xSVVz>LVaQMIuZ-; zjhQn{l=`rpDXIY=l+=`TYD0^lmS3@T&KIV{q`)hIM%ouit-Zvvy6rm6?QM{|B(93< z>{T_G2L$6UaVT|6)7}LZ)ZlipD>Sph7zWZl_FqGy3B0!5(p{ObB;uw?uu>LhVU}{D;;lfJaq?SEv)m(ZeI4ct{Kt66NnQ z=wj`%LleP6cig+d3)>gsSodP zdVza;vj4Ez;$9Ee=(LOjpUGZ#_TmhrVwcD$KTWYLns36SycTaIJcKgbH5|0bRN1Nvz20Q88$aJ zKgpcBxk_ynptt1()_z_mw`~#0bnRe!N?T`mT2_3FcdqNVfgsK`F8<{bX^;WSSoTl< zfObE9|6{#-3k3#62>IU-?>Q6u5xccvXIbc^_?^#%$%xGFjFi{&^RmO+!+@lhDtLZD z#Yl>|dJ(GzgqSa-B1ZS4(Gx%?NUmZCXBB=k6;%|3iRB^Dg|6X0zrcg0g$gwn&cw;F z)~IADZeCKsoEGq!#`u;<$YH#%Y(;1X!2n;)lU8PLE4D&?wrt%@C(UL=^d2R^)Ns?> z@m;P**_ruo#mc5~0lsGHT(uI$MGixUroIP0Y}JCq*G0+kmB1Az9kF?5^4F({oBZiIeS7Iv`+-|#xstd0^y@zE42C1lNE2;35v z2g4%&ukA;p6!_fY3oI1lpn+Au0cMkOM`W=8Vr+mIVniAu%sdkoXd56*zCbE2pqL4u zi71p}M2`sY!%0X2KBMAzau};ay=(mZcgtJLUkY!6kBXzW>|S z)Tk)wj54;fhSi2xt@Ex#EcFR}U2a9yp9S&FBtCI;!$oz<;<)g6ngeodkx6Y@MoH`& zjFs^E(kN0?x=pNM@Asr)o0SOjkkOVFVb311yrR% zc=L0p%C(B}@q5=Ez{q4}0}q3+WTtzIw@!bxsAtcg$+ot~@}rXPvTcFF&i2_$DAa>3 zew;RGfpKeg0k*_LvG{9$hAnpEou36`V2S*2EN-}?hla>6clkp|ikV3^aw0wm2)JJa z1tEiYw||f~R>8ff*D0XKs|B|t4L0MYhN^tUz?LI-rAX2KSG2x0FHn>!R3m_R!#T}Z ztulnPWp0W}jX3ltIeO%GX3l-zd8eJ?vyI8R3$%gHLo~QD?;@9+LFo25I`e(o^||M> z>wrqZcXvXy+$Dz91P80k?DwpLH|I!fUMA&XyvBT-BAZnBCPkB9Eq?c|UFL2%E6fS< zzRpaw7kyiv!C|plZ4mSeN z``}~!6u6({{U=h<2hsoKwGU!a4h+*Pu20T(!~#N+8fp_6^RJ8bwIBp2jmG3i&Jfe3rE(({}5c zrcF6H=ummI5Du8BC^uf4J{Km@JSdR|_XYYjie9Y_F4DmI4T%SXfaXbOR)AwH~2V8nllL85%~^a@_;g37AQYlr7v9 zu!@_crLAyQ{51xz7S8z2+%(imOZ!-0DhE2vb#|JDJ1FiPOKq| zer-@^{3}?79G=6bqN1#n(6BO0kiw~`D+DM)#0<0M08P|zy89Ye2oo}dPV7GQFs6o# zJHD z?WZS3wrc9aItz$t+&qdC!%eIr-gLZ+5{bXA+*_Sg9T4P5^m1KP!c{?i&V(alQogKL z%r=B%%T2&i0bMqVAS|vZ}Kjl96@2W7H9EB2wNCE2Re?k|4 z;vk@LY2pJc86HK8YEX=aaT4W3vLp|!)Tp3z8l{9yFyM@`8dtw^oxn-I>NrVGR!ZFY zz8Q`_G*mPOpcV%rP2Hn>{d-bc+Wjif6Nn@nR6AT8Ss0iax)7)x$+OUKDZC6JP9c9H zt@SN`VD%aAsY!~_?5msQMIU6MFiCW?)K}A6)@Vs13lgeIF)E#3fTr>s%gk2W8vHdk zrEA3V&b@oJCRf|-Jx=>>@e0UdPj*b>Gj{&X`w{^Z=}oiLvf6ugalIv1d7U}|*2Kpd{_8@$CK+yam%SbVwJZew!Qnc+Vj$0UqS0 z=e~A(F!p)&F_S%Knz##*@Rq~Jx9Rb)F!m?S{?!dp%-|}XEC@_TH}Ja9>AiAi6nLGs z*?IRi@HuM7!~Qmp0m~YGI1N)J67rk$rZvAqPhvIwqiu{Y%k#)vRv?6jrkm+}woFx` z1co#Vy`n{D#Nx+mZK9)xp?JF>J_?4kD=G#$oy*A}!rcFm6b8NjyUaakU^}KAuYga% z<_{N1SEI?lu8$+3F--r$(5MsxZ1(c_$EpIccctxrIBTaZWn4U;=bfNM;1TOX_Oicr zU7sv-dd1se11d2P-ver|i1Pn!StJnkP@B*?oiCrkkBUXK`@Q4U>2-zqrKK|_m^57Y zo8w>!i9uN(^;Y2RT|hxvF|HwX7`;(lvr|M6^ptcuy!@wrYt}y#=93CFB4Pp zH=zH8-J;OCp5b70X6;cVAdeX27jja5RJXrrLTtaEw7O>xm+wiYm^GDH8B8>TKhQ zHLzqMK3*Dt5LnbGtBo;Au@7kNkc(0juq`^8|%H1TS}?1>$#Hpkb8~0`MyH4fTidx z{g*cs@9B{PsmWsAZ=K*!HETZnZ^Y-e^#ytoB&y^+X ze~Je8oj+gy>+u;N9&iJxBUm!F54`zkdU{TO>%KERsvLWFe1gTBGrwkITj$t05w`Zt zo@*bxxT--L1I|~aUh}J(W4_yp!zV`0lHdCRK!#q-Q47%xLluFq|GyZHeZBa7M*a^} zm;m+tRk9QPboY$<mXzgj=uikrmT0+_7xp7eXHS(rs;oH2T zLcJysdr(1Zb-TkI&K9@elYDgh>-FpH#+)DW&HMJQFi&@6Et>@Z2T8pEXl)L1*FkvD z*(?Ck$0IW{rgK<0HwYAzqymHe3Pl|n#7<$q9l*2l$PL8eG@O_g&-5Fx_$O3pB1~R- zdWxTEI1X~;1wooPkE&I57OlU?WBV|2_=vRR^Cz9mO*K$-02?ZBEFseMW{hja<@z%mNP^XC4BY8rvKaqgXLNs%2y31a0i^y%Ttu%;KKxq zHnjmIYTtj(fWs-u5c-TVCovQ;WvFv%^|Ev;@TXqlKyZOILi^P_OQ{Uav}HMSxge(u z&WgiW6Y-CV7RO+YBr2>+4dqVfx(EdgC)V8URpL@fO#o_Ozw{IwYB7H~Tn9yp+B}kg z@fs-u!-~o2ylW4SoGxjvSRZp%Pizla5aSaGu*@+MhcBc~Y8HJMV@4$pfUE3Og{CWQ zlH!1^>?D%qg;?t2P6D^T1Mp8-)S-*H3lEO-613$-3S&d_O;%Xn? zgG{16|C2;(=^1V7^MA~+#H zw0Y%;YMSiZ)u3`c3FcG#4?(c~5y|=D0TmHe8+IV}oucYfA${VoY8U_Ln;r`uH z{^&uzKXhFFhh0v`0rJ+??ojDUNX|Fz`KM@}!TZf|_Ac1XWNIAEu%(AuyAHV5R9$BI zVxA{WRog}_DC28*r)TnWuazfD0WHkh;4bbMUv`@nG%M_h)f-ir2;b*bhTr~<&AK1F zPzF^mEC9j3AAR7UZp~p9V3V)w?9_7Pr`Jq%7b@@NrCl~#0*T6lUxgL!vO=O4h&^oj zvY)-F!}?Rj)x0Lqy?{qMD$YPal0_^kMr2I|kX2l?aBlMnV5lJ5DZk!H;3b-1f;DS> zE|hqx&KvsQ4zA_@e&w@kcT*{?iT?g8JB#Me6plA3!KVGrWoX-8wW|8$%!4{FpMC-6 zFRfydMY0!2WZ-HD-wSp%6+NIaq-$@Wlll?Ck-dM(5rx=l1P=!4O{Go3A_fu%AS8 zf*)33PdR~jgQORPdX>4ki|^0=VBCZD!Mi`gsaer@LZzlDHL|OQss`qR9v&s0Enj2A zC+U0#*i;R|jtOnlIPg&m;EM!aF6UZ+R&xWK^Eb;AvSg-<5ejH>xb`l}zCp2QWP;bW z{NKYPaRp5m*y_TP<7V(yU>^wVwn2f%a~nBq`m|Lqu)<9Zzbxyr28HqNAUgoQ7o656 zyioCB@Qn+R;vxR z9cU!bW{Zy$lBKp?Zow>7>P9^lGq5+1#-}Tl=why>phk(v8BJKa?Jf*y4a03FtZ^DK zinA9?S2S{%(W4MDXj0Y}ktvzlI7ydiqW6M=Ok?p~CgI^KR7HUZC@t2o_FCVd7@Bwh zrb7e>V*w?I6~gM<`5zDjcpJ|ILxvsAKq7kfATHfe5MhYJTfLvlz@!^o$_4q! z>dJq%)^Kb;z;1O0J_}=0Nkx=2CuXzaX|U-&RzR6#rQz6Y4rDt^0wJ?{XTMCgXl$Z9 zJiwL>Dp{Pw%z&OLr&4kKf$z;}w)p`EkSWg7d+4ygXkv3+KPi7@X(5KJY^rPYw%x&2 z#*zfA=o$sF5ZDUP)~p~$rM?ifx;ZraqbvG55UwMVInj`j&1fttt9-&<0F_ksMGY45GS*7X(W0M@{NYjrW$le>=Dm zs#;j2x{yj_ry#LOAACQDXihB39p8jxX47fTy`1(lEpCx^{~|>w6RPo0cK_4)d^*wp zxcmM_hm4We{&!uG<#zAF;{FbGOZ7O>vd@hx`JDIaf_H0ykwaqmstAkBF`*9mUYFI{ z44Jy4OtM>`XDBaTs3q-FU-42Z%)qLFB#3F3<8KjBlNSN29@1PPculw2y!k&jAX5*= zNgX@dS731}LRI$OG@roS&#bc&VWnoZguX!QU@*#}UOEc0t|dBCN>i`pJ3mwBkB=+7 zVJ6L zM$CcWq9uk2@;G$@RLrZKv{F4-e1}{^!iOeYxEg|W`)dNG!~!N&Fd8OIfNW1x6iHO4 zPgw0+^{-mf1w=Z0)oo#{{jf>~?+MNeY_1o6gC=+_h-2M)P?~a3)6wt5bemuaD|l-t zrUVFh7IpU}1XNCoph_Y(IHh)8tnqoq;H=U9=}fVv=W2xLRQy4x(%EE50y@h47y`U@ zZHI5PoMAN`+l*2_DmzkV1`tV3dlsf|i$21GQc4$3s_&yqjvw5D;fl0+?bpJ+dN3ft z(~8k)q02+SJT!DlN55QBD9*w&1dYWZO|S_pE;#fY!A*~tQL0VOj~q;dvZ|<64ML2D zPyv$*)DdN62Z}aD`ql@VwW|VjnZViESI+jKKs26J5SR24#Ar%FIo$Ts;CcNGc`Q0L zC_~wfS~d`p8j3CEvEyZH+zNVMbLso2@`WTU{CP$Fcw<>Us6WImf^(JijuwKa z_yWl8RfUI-7rJ(Hl7m!(R$+3eru415T0_2G#gQ_4hKV&iAyeDvbYkL%Rm#vaVHZFS_p0t9V_emSeoG!olN@{9b* zs7a&%?D0-&Dp=^|V_`>&(*6CeiR1YlL=Sm~}u0l?|@m)Mkrlk+CFr?KcgR11y4H~wej`f#3 zFFTgKMA*%a`*9f0zq*Q-U!>F7tP6Hl9opnwu$gxPEng5I-i;gnb|l@0Cf$8P_V>;W zbY1s$u}YWaIPCU3@4Wu-KVcARZE1Ob>~p;mmDW;ns-wXh2GA-e-d>vk2y zrF+S#v6XB^?kQ-q(B|?v>D3Fyi^3pY?F}ju`%*Fqd`qNgC zyO(yc{@=&`bM-%0ioREMS7=?o!Wg5P{@kJ*+2sX&D+bWZqj(oE>HJu;sI6%{?P5I0os zM%Cn(qq=kP3f1n#C=yFi7Y-`#s$c_gU}{N$=nF1CJZ~&#xL>KYxRjtn=Gi za_VqSm`ex*s6{G{OYP!Wqv!3BdQd3ZU!*eTAFC{<2m%GckmS8VqaQdj92Lv+3m{@G zyPW9g2AhMVGzfHrNop-&2zI`JM>Jy%WlTBeZ`Pmnv2^hs>6d1IayW!z|Bxu)h8%2J z|Am}!R4OPkXNIIo=oiByqFKOz6G4NSHpBo$1Os7;+j!UW*TQ~c8(MEv1=Zd!t_%iB z@>y6@#&r|KH$k1xc%ihGXfm*gSC}nZtFzG|9hKHZH1BW~G`n6|Xf&`ythQhc)`LKL z&5l)QA2|pW0N=UO7lq=EV{Q&CKj^BMvBR1QC@AZ zp^TAah>&<*+CL&fuVU1(?^Jkx>k)^q7B~NEgr!V*iUukM;t(eY?A3}0l6dxxs0h?g zf`udYxI+ zea3!PE7y4-M}P+3H3x4bE0VN0wzNVWx|^}1di}zy5N($%;QQhi&AgU5RaN!5%z{ed z*(&8DFLz!Ld!K$mQMkSx{cu1ELWtVIz)8|98)O^jt=jwUC@*5OsT!W+QBvgeD&2c7 zZQ15cquNuDaEh6+vog&U_yz)@xA(Qt;(k$%mlZT1TW*F{&u&q`cpoD?X)BWyNcMGS zy{Hy?`EGM#F$#Vjg^&6SuTJn5PS@j7o%`d(el)Ym-S7sCh&Sj8N@<$0aHa>Qrj}k9 zAGOtP!1jJ({&X>V3Q4gA5ZcU)Y%SXf_b|b>cAmUu5@5Hk^|H@qXQ<{Qva?yqLW`_b zrLeyA@-=|JXFAVG1K^(*`lq-}%Z<&y@y~^1(<| zDpJr?5BMmI06=;6r+zQo{7URXX5?I>lR zAUNxjdPZiyNCN)tVP}mD#0Co~oXRTI;(P?{O`f@MYHV=jT)8JJ?kpQ0hfE6n_tpQi z{7+h&AN~_^n#UaR2WQ^f+n9r~1vUnG6a-4_V%Gk2%skCVDvjZ!#1x4cgFVM3WBodw zQq+-VwJoRdTJg6a_P9rV5<8!C_%i(DSv}DwFV2c_jOkEldfR+eLOuq?MB0Qf9_jA< zWx*utZydp(tQ$Kt=mvBfcDVtE+grK-&6Js30MazwsgZGUaaM6)J8v^ytgmEW^92IL zjBxQW^LP**lJf!6`YV*L;B^6<#;0zs;!MU;JigLzyf1~cL}iJxu4zgIUy0OEsPRho zvEGZ~Uqj06pI6 zOl;#6C#L9hX9zLW^_7=opy!tdF<2NAjyP11arr?R1+)2ePiFH6 z1{NUVkdX({kd9MK>$lHjwe0QO}~g111P*16oTvBosE~r;+1o zy8m~s)BisY#Ka62^!I=jt{;KnCgRamU4zyBGpKIrF0Rd|uN9hC*6#ZnTy+wU{A9uv z*|0Me!9Pq^5o%8?sp_B23rzi-XRyJo{9cJcl7)!EB}z-dc9TJM7vLK0&dxtYQ4p1Lqoq}>$LrVglvc@EH$$!q!G7UZe5X`5U%7|voAq3z z6*!i@fy_TS-e;5+TiuT6_I~%fgNmP*Lc_-1_&1+RLL=e3ubZ0U1v<7rdGsG_@k+1S zuurjcs9B9Y>*M*YcFlJF9S}oJF=+g2xuB!#u zT9hK1*{mt5JhnDo3WIEesNTCwhH*iH$lKI5R#47F;U~d!h_sNR^eXWObMxv~)qVlg zfnP{l*-<4zynLL$qE6xIu|wsnsuYK~{=)HKTt(r49`f7lMr6hckO1*eW42okkLM~i zTmV?Ss30(U^gUbIk*fB-LP4r?o^hm#ogq{a&OBuo0QELxZ!DFW)eTV~^nMbB^HW0R z@b-z$=R7cS3uvp?8Ar5?UR%3DWoevxM>C$p=&}#a=m}52x56=71O-V)!lS}Le^V}g zUM1Gw%8Vevg1!#hae;&9e#j^T6YH2SuSuRD@7f31>%O7o(K|6}*z?hNlT%j&qXK~x z*6ai_V;T`Jo>{D&M#86Li|i1l>Nq&s7dZe%xENq!01IVE26%GIg$&>oaAr|=BeYOm zeS2P)DivcR4RCDshoVV7x9wj<&8XL=-HZ8FrAiXSSOv)_4|k9vtlZ4#ZFM0c??6^H zD`e(HeNkZw{qNg6t9^-KXpYrBnp<;&PUEsmLXzB!{PV*Xfi^vnZQ^F&;F|}<%QtEV zOgXxZqCo1bzFF`^#bZZRwm~$U%88ti^23SnLJY?exMI9xC}0))O)HRhRJkp9_{Ybs(h*5-e=} zl{x2GX;oG#2ZI@afA6(roub~>9kZoO?96hN;`GyJ=QFl}@IEMSIKEQKL@r!93AOWY z81#a_U&fsoAYa?|$NmuU8;Rek)F)9`q13MHPeYg1^N4`h7g$&PN5;YEIzF5cqE;Ww4B8VnWEMluexL;-f9&(y4xgjP6`4XV zznStpKV5WrM~+?$NDnYZq!z$Rm^F~Pz|`t^IgNYBZdF-*+aKd9dI?!}1b?tVn(<=3 zzM*OCP?}ebK1e`t$m6(N#0-#b_VS3;ggmDR2-JzMhgJ)Z_`S5+V7G-1QjbfEg-6Pa z$Ko)zScUTpGQ|JI;dQ*m&~#Fq#fO#2JU>_zwV@?DWAM;hr+||c8;+RG*TfEoZ=uEi zQ;po`qsw@1^Ma%4=mW+gPn`2$*+!s^_Yd;C5j{Yt74UUZLRdvZn2XsM+d8kkyx!xZ z<{1(;EMk?*f)2bghFN#|>U!r{$sa4)B!R{zs}bc-i%S6P)R&9LR4GGH4m2gHWgpAp z9W-VEkd(+IlmX2lq+r4$l4PM9z~*plgxE`YxM?)KHUK7ODZ-)_qbtxc1O#>@QdW)| zNjBnLq5(x2;g(VW(d{bpAUl?$=el^1Z+Rs|QM1QP@Y*Sltn!N2b@Nuu`EK9Rh>)m-NJC5*GgI< zkR3P=Eh(#{%-MKni}6iL1lDO5h%9`$p2J>bxJtHyN;0ED7Zj}oqVEKyA5W+q==b6!0BHT~#tm`@=k3Pp_PE^U2m}<8Q z$59Q(O@SIlqvzvZ-yCX+_rW>2@#Z1&8?kY?-qPAy?~BCevZEF&h;HG0`9;RHS>iHQ z?-|d7wEKv;T&dyPT;+OGxzVcerOKo!Z~Eg-AO~?PDR92ifETB{#h?>%lg*Q$#GA+` zkRT)4!Aa&qrsAo0sdWE4>od!V&=}*#I7SoF4|X ze)`QCsz9S>%@STK+hR6h!6uu_L=LI??Xo#D)w~kHC zcI%(2i_{=Yr2Vh5ch~;`aOCWe%{^MtzNBW|>jVc`3XjD?ePJ~j+Cg3BXBOtdK89i6 zQ-)DtY65_aJ*Qow=h6wX@M>3cVTg{zHZv|XexKCAC`Fr|=UFa*Fi;VI-dTkza%1fK z>(_AIPaITJ)-AgF-G3fD9?v;yG^#&|z5T!ZuyM)_58RE5_!Qc{($9~)1W*8i3?boD z#H$KEIs!`R;sevzjC-ES*xIbuQiLe_9UsUO0(T4kws$ArhpEj zSO-CU5oTpG==EW`e{2(&`IH*28`$9^oAqT9VIJ9!)aBakIeC+RXz1Ja!QTm=Qz&ox z6k7{r8a8z_TPd9mktE{_!4E86cv$27^|%tHKP!*BSp#suW(tNOk@?Yu8ZifJm8J4lI_;0#wiX0%B-EGf9F>cPlj#K7lE9S>pypF)@7&IcXiR3;pwB>{g)-B(*@^NFR)o`fP1oCCShK>EY6 zLKIN$A+aLOkTNh)Go9)kLkv$iI7C0fcmyH^V;)iqcecw8NKS)Vkd-hdA_EazzvfNl zIp_?N{C3@iEVDE%kL~S%9KmATBp41^c*B=)gX%0wL~%&!f*zB|f{gF68-4M?4YaE< z^v1yUnn0<$r;-R@6FnU!)Cx5{0mJ3!g4^hbF!o|nI2{Ja$3h$l%&-!Marl5T6md7rDJH`b?=Sv8OJys zV_tAgc+?ko?f(u4zA-;7gVa#m9ohcrkGp2q8!=RD)9&~#KFfE)oINwiH}J@Bm$gBl z*_qC#D$V?agA_R<@Ks!Ll1^^46E=JZ9hXk0FFHAahqokN)%aY~t*LO6W0D22Q z_nbfHyA4wcjUHZzK9*Ct>1d4CF~D_?n&5i->)M>Y2Q~(SzVq2!Wz%^hWP>%?*%AJZdE!ecPW}xx;H*w?%oa|WG;$mX# z%Y1D_O?E9DTUg+rxBRkt5nar8)7$fWxGxdV&OojGGLS#$U0F8$W# z^DV#NBxb{wl+jKBE`@qXSLnS&Z0#A8I|lBqzPP~M@Ik@$yGs)^2nsPADj)Ja6pGD4 zYMjV5=zB%VwRI?&a$jLJi6@S5RG)^}2C-oRsmEwdDh;zR-({^iLVrSK*pzgna8jIILo$&liQuEBZflmFcY77w~_hvp6dDg0?hIw(q zV#kWeMdtPdV1)9$z>%wZ@L{D)+oPKAtmy|fHRh!pw|cabM1r!0HH$j3YmSZ@lWX%s@tAdwr6 z+MH<;ZtQ+fC}lNN`$>Xu)ZwJ~oMDw&z@9K^e;1;p_!h;m5!4vS8PXlFRWby)r)6$4 zkX%FXfMwGK-PvN@z~4YKJ7XE?^#`CoRqBuyo< z!ne-^e|WpK(##mcrHhq>8KScA+q42VCphS3F+6~Axn4IBk9wG9k01yFE+VER-WioH z+=Rp)kP=&KLMt48`{=J|Dfmr)OZddp93_vqyoO(b)yB$Q2_FEH}%?uX*8|H6*!_lIe3Bwc@S zC_MhpjD1feDnHh}=M08Qzm_*J8>l3(+I&NRHaj=#=;s#|jzT=>&7?(6`?1q#Ycr(G zS)S%D*^_bp@5R;%g1*q}Ipx>6sperKK0v5iyc!Vl~Yg4!&)-FO-aEjnR0Uvs^FlwZsVdRK@SZwJ#;oMeq(k2TVqWl zT~{L=vA!F?_q(81L-Gu+AN5{qdxLGG-Cv%Kxk>+m3xxs$T>|w5G}i5Ej;f@k zGfA<~(CV}pjO&!8SN`pKcvJJ_`i==VDD(#eCO?a+p8X}ky0x?_XiQ$$Tx>-bo`BJ& zFHyS4Ib?DlMCd2iP3Yc7enHL+A5IcPW}a$QB~R|A^T1ps7=m?_VUlDI>x{MWr;rr= z!s+s5et<^K-7`}TYYYhlfJcm-iU)Xy$W*ZG)7#BqNO`P9LTjDq8^wQD=@2F|iNX1v zM3+mDFpAcD!<;M65{Gs`60kiK*|Otps_>_`tgcb_5E#dBt>1{HY29zfnh2ML{^AG! zfIC!=m41twFc#z3Bk~8i@FroD!qmmkCD)9?A;RR#;>hffQ^ZjYfN1`a=#u}pc|f+y zX}NRE5PTdcnR$R2aqn`Wkm>reAf|gGfICpy6Z)$vNvY_x`ZL&Yi&y!6Q|o z+(XlSZP7W$HyJ@5&BvF*zsM&)_cae&`Lf-?O9)cBSTiQmH11!4Y+Xs+?&wS22;q+V zpiRQEe-1&a&u`3HW*|>OTMstxry0_OkEGSltH(IgoZNbrPEYyi#s@xOC*G^!l32W}wN;(I3(QWQKMZN`MYr4v*^X-(|bpIXc|h zvl1*!QWZO@{as$(dKwnZ#%bzM!jAdqRFFLAg|CPe3Ab8UDc~1h@89esa>31{6jQ5+ z^YIsDora@T7{zZRzKuk9kHVFwU4p$pO6m%B2b+Mh)WK!n%xXDp7NRzFy9+1*&=pFL z#}pDH0yC+v!D{ekHQjal#@@rN!2G_t%Mx^1(};s#XGhaU4YB;!eX-a@@G+C6+i(G8wrG>nIN}l1vn2Tp4m$h{Y-l!#;u& z%z_O0M$!L@oT&zqPiotQg>cr=OW%MXKyRrQHBdgHnLLsIqW>g5QToX*ln!PSa;+|V>tD@9UD7mt*FeE(p&=Igr+3)+ab8R znyNR;=O|4@^(su8*rk-NTcJL;)}zy-lSJDjJWTqUqdNaXpH&dFuOo}g@-=}fL=X@e zDkrj=*+dJMgI=msJi>WHYqwdqZBBqbx^Dz;!6yWQn(75m>GNxKUzS2&&dWccj-i!5 z@Am5$d?IcAU7z}U`RqsRw|BoAzWWx-w11X7_V<|#`cc<>+V~#W=Jf2A48>;1d(Qa}&$IWw*SgoW+`_bh z-t3`skp~@x`LFc>W98PU+W4NUXw5Nv%pM-$|J?fiO@8MGksu;x!A znderOhaer6@g~b~M?S}{tcpDb7**lMFDT5mk9-&E4G*RLZxysf)d0~#Z13uSTblEp@LXz>Ya54 z&HHK=u175}9azHQwlr;r968B*KR`MLUt}-kH>WhRxKelrq2ePiW@UC5m}nSnY(F>b zG=L!rX+4}5a{)UQCy*wIpG_ra`e|GHU5MUX7a1WBvsRq+{-in!0Ab6mi!Zk*M}1P= zFHRg$ekcdseNkZ7WzADzBiWMZ){AC68o#A7fsPaaOXE#I8gLC;r{tq|gJ0ZKZXU{P zRg*cYpXDeOoAB^LxsNYkzD>2M_qCYcC>a*;8QTLCV~Sf`W9L)cH2~fuXA=-X@o;Ib zp{Hp4Ex*2|l&tIFj$h`+iB$nE%DnKiZa;Lpd;%awXSoeYN*|ltEQ`$QPMGv<@Uo3= zccG0Fq4S_lfTYw$ha_gG@GoGQ#Z!2h9rPL-oLLo8R&BHADU1!NXv7fkBK$d0 z{wu<@4e1^hACK0C;pz_IC+Q&n44p~CQ_=_eA_5uWrP0GXZr8En7P~M6mcL#bLd{}& z`h8d02!~C(iu8U9Lf$6r(8fR^?jo6163kW%>WqsV*`Qr!j0!~}rb<`ch1K+|WJl*6 zzW(bCRisVcSGHS$Yf7?KYv=5T6pEo7x%pg4!GFsKo7o33O;9BTND};nO(_h@ zUY^faH@}liIP%oqS-vu0D?ttlLN5azvD9}k1F7AK^%6+ zyu^#pd+Ip9&?eytS&#G9{JVmv@6R@Q817Zc*w*1!)q{?&R<_ASszRmRGx*=<uu%^;wMl(m|k@3@zN*HynC}bzLkq4dhkfe@1~Zb6f{+we?4TW=v8FA z4(TUe_TL^$d4LfP;76(TApT?gny0*Zpj)&V`Ubr#!3eBeu8KP6nG4!&^Dep@RV}kI z%h6vntA?RvPxG2UxCjL1Is10Ye~%_m%3+StF9gx0V0~oW%elb zx+gv{INvBevq+xfep>Jn43UZJ$*6T$>m_!IPh$!ePY3y%Q5J!EO*{|0arVRdXAF}R zu(fMG=SI=R0JL0Hgc5m90W|U$vZ9&mRukH%9#%dw&#NIz$u$_@~eO`=C>eFQXXCC(wnsT z_GqF>!?Ogx+P|hsKbNZJN<&Wk2uO3Kuahb+$H3(y0-ue~$Ng5oR|k#{x|jD)Z|EO7 zPft#s_mA?Q`fzvpR_Yeb_;M>k7udqY4DnS$oD3qYE3Jz0cty&5oXB~&`E*QJGOZ~P z4qFD@2&+(5imBe?NHqLff~x-EC#)J%T#9ux2o#GwGO{#9zkoeJ|2NF987(4QncUxU z{kF~&*8rGtMa?vAev==_lolJ)c6f_T+#@WeUeO}ai=&6MScc7m(Eral&lz9{^KBT= zMR`xWYEPve4(-iFNn?m*vX#u=2xu5E4BA`UXh;mEWMR=ftL}VpCQ0b|Bq1uA=I<_} zwlEheT(!Mxg3?wkZO@gyG)R&8FydL7qOYxOy-1H7b*$4Za+HPL3x-pW8eir#x8POr zgGt$EZ#!RpoX>KlBcb z8<$+U!+z{2d`!030&c57>djvJ^ErY+3;<>67iLM`w~Kig9eP9ga4x>{Z9|Phyu*ae zW#uy+Z-YMmW*B<02us~Wly)1nEV>yJzB?gevxZv`E`F^$dTy^3pG=kyh|(J!C!2rH zmIL8mVC1B~_MH4@?Dhl<=ot65YSWZ2pSN^{nIp1en-WtV%Y6 zctX*yGaU1&5I(jeudn%P$OR?gc!)jn3$wb*UH4!zH0y=ib%Cl;33=ai0{U1Tq-@?2 zR!kvHGXelni$)C;4+RG|C1-iu@8C9VBQ*K^y2@P}Ada(H2teJdaA0@9aYV9jM$BXM zuRo$Jdp2HJ7)03m!1)?@%FC=sNlrKPBG!kFT8u@&9^yKKhlns|y7-E+Ff7VTdOJqm z?Yr}NNHo(b*PnnoY`^43OeB~d--6aH^p<*8SA)}(1=XfoZ_TE>UsySps5<59362=6@kIwZFSoa?*v9`@^C8xE0RDtpPzHODRp7% z^25wW##<#O03%f5(=_ee^;Yr=pBN}^N5ayl$1lq*u1HcBhOg{F7sA1BUlU*Vg5#&B z35_LM5T_h*4T42isr1xufMXE@4 zZw51=&~+6FCk0aII~H(=8aYfv>V!oqx9k3UFerg@I`8Vz{>cZ|IZ&l#8yV% zmBraJ(V=Ezm~V9^3~6e>y4rydXTE9vpnhsZ>x-_QWZhl0PT;wt0J+sDx>>{_h+L#7 z2}@|+-Jgx)95Pew5=Uh2WC*|KJ5qll?YCYezZX&F=Z8}55I^xAF49%)+6vo-^)p52 zS-x|%f8^(xweJ|swJ|NN68kNe@i$XoP~Y{&qSCO;K0=46x{*9;V^_F5Qi|um&(VNm zIcV?8n2jzciT~ZzQGU_2Uzb~Z4-mWmMCT#o+e21Cor#gts&h&lXn}l(^OtVsxL?Og z{`J-Gj>!(eao{Xa8E@lm8#({ws{H)+b-FXLxY)sG>nIrf>Av(8_u>%o@@W2jV0=A@ z^E5we6g%Lwg+8Et#SWSNIagLiSc+T{Ua-)X7{5bMay z_{eDhs)t=;7UYXfMK_cY#=sN&I+h7(=7E*>;c57xq9hj7oVyartafv(pC_!d z5Hiw~uB?U#D7BKsHkI)5b9llST2ydP#mUH@twQlcT`2KWn|y8qf5eb~wZ%R4cOi)d z67p=b#vny$^xxx%FqfEvu@GUpM5GoNfi9R)R?cxb2rz#aRkA6Hj<*}3k+)Pjlz0r5 zySE#1T|7=awOsOxc&R0u(^}|n%f~F}ykWh`Xu!}EqJXPh$8ioNYf|7jb$zqAT zWsi&Vp%#tuYO;s@UK~u!BUdiY!pIBxii~p(z^#aOhS8et)Haxt!ZFP(Ag18|1AgM0wf=W!%BuL+bGeX$lDSU%Mk%4LaYt zdy%?EdCJX)Tgka=uT)QmuMf_3ADnseCwTj`IfqcPTinD)jjRh5s|r}xA*1A0YaboG zMEG*tSGQwQR%g?u{K|f(pdXQ|zN4_s_0}&+a;~TpJKPbmbs0HZ4QAfE;@8ZRe0E;* zyZo+ndB4iN?6(nta-hh)C;+%|^AV}C_0cBM`kvZB1Re(XR*!$A$I6K*tfG`2Cs&C( zw3t;pu8|~AIR7HCET9Jm-uZLX-_yzB@`(8ynd?l@%|K7cuR8zJ?hXFa?%mh`zw0fq zKC@OdV}{j{U11ho(M^1ITFy4NU1VBiCG+MkBZ z1(*AFSr4(?H?019a7#`G8F_8v;rgS8pI7K*EWc;`^-eAm9CRR|ATf!2R~2PW3;F$6 zlaifH3Z83A=2m-ePBMi^R4v6b1CYs_b=<`~#ohtvUHk^;NWrT<8T5shVXAyl(ZL}hz65TpB#k8`ax)6Gm ztsBb5)k1O6gQsw~i*@qxh~|jHRMQY;#l3pt*cZoD=)D zlU)=heL9B8v`>6>{09T3EobBJeVfAB04{WLQy8LZE7)nS@JKA_)=UF{;)4r%_(4=$ z!>AO+7CM0M%NS=#P)F*KsG4Fa)?bn_9d6!$3b;zGRYQScq%jnI$TFdkMlJ!`i~iQ` ziELM*u~D{@*La)jjN|mTFvp9`kRc0=(fl>+HYHUeUWJ$^Zj4~>SPpk2+fsI!bAcE6lFClsbWoyf93fhb#61MoFM(#_=6!C4li;yX{u`U{!!2k)twH;v) zdk^%G$Vg>En;0I4uDFJRtO@##ik%Zbki=5(M?rtCEswd+qk$z0Fh?d0m4|7S#{E+`^mgPt z*J8?Whl>VWV=4Y`ehP&Bf&zpu>4%5@z?2T&E}oWjT8yv zR0#f~XCXMy2-0Eet5t#zA2sF~&63|zH zZ$O}v{);s_mc;96@3Vix9ii3SZE>eB%eNb+FJqcpZ=C}O6R9P;JVa&o0?*Y7e$M}5 zp(9oZ#h=QipOg-0@ScaQxScpzf32$jA}NQ^eSt2PWRi?DImBl5%Dq=tRqz{`oGqGv z!2E8T<44<*Vdw2*=c&qkMAIrZh;wGNj1oB4Y6<{)A&bmH2p)4P#4%I(8~SW zoQ=@m07A*Xy-;+%01OC{zARgOufd}_Gnvra8Uv0eG^v}dyL0XrWH3g@#ZGY8+H*s2 zbh}-bha|^+;G(t)1`>~KxoedjfY8#tgCtZ~`S{eaUYb(aj2hvFOo#(zle*V0ejJY} zFfsLI2+zT8icB2;*G?-hf=s|6t*qjkV4ko0>|4Jsdjxw2lqrt>ed*w-WO`!_11lT# zHLFRj`7nUQy(5s_aF>={a8@}s(hzNU#k1Ghj=Ftgg~weudFLSnUC3y-Ta_Bw)@35v zalnkWT{Qv%Y0=uv5$@0iZ&T%-8g638kD~Huk>6+3%)W4c#FGGH(_nwLgWZE<5-)pp zz$MRHeG!=uo?l3qPts=SsZG{$Q9}hoo5h;QS5yI{JQ54NtFzTvG{+1$NJ7<27qrVL zBJblo!s9dzEcjW;jlpQ;=r$==4(*_{L0}bAU}&0R36ac@vYaCIuTQLWR|Eq2iqV(X zAxVQ##}W_2@;&^JFkG2NBs3U)G)9618NR#)!dJq?lwl8g=|M3UOyw=bpHgGHv;a27 zxL#D(_Bo#`>e?e2$x-;c!o`$CaD@=wak|k8SQEKhXYy{#SAOwOa*;G!u1T_#70&Ky z1t0SV(D2mGBUU}&^tzSOs=f0^-X`kSPJh=DKBfaRi_avj=B+MLk^bEj1%qKaX>`oEeR4|5nhM1G=Lmu7KW9AR z{x{0Y>%zV0Xc!@QL3SDG5GG{ddR97>@#IZ}+6qS^rp!xhEk#uT)S4M@vKB<+)s*a4 z8>L`E#F%0xa}%28uDy>xDw$kRyZ3>GUUpC5*CIx$^4TS=DTZXvP&Y&z-ogm2sz^;4YFl7C3@aFhIHmk5>W*#B?=O~2g zKdnxT>p!io`BxJ3Is8h?j$Da~@b^^uFJM)GLARh>S34!cZm1%PVd~XclJFcxXGAV%|>@D3=i~X3j~UfrR~n>h_UB< z`?1sLZH)vgnoWFjtv*lF@<8qvT+_#`DqF zOQ{~08$4krV?!oHw!$AqQ9I_TDrlz?ZTS`;T>EwgE7h#yaeQW79;9da%@9JABrNp8 zUQ~|y?JE5-MK*^qSJwk)W>pIo$I-u18Xk=F%5EfvR#tU%zpB9jb zPj%!6gb-0AzA@vTqzx~3C#`!3&iqR%Ih$_V+ZI)`AymWN&4S&!x?EG#uC_%Vad*b` zz7=+PIzwu^zLo+!AwxNoTudJ_lae;0DACL)OFL7y9rqyXCS9xPZ-H%oR3+28i7sSMgGM&GI zmLd`0uYQ#*^JdB3`(aBpTYsQJQ!zAIay5{)NWLq4+|Ls zO8Fw5A~8=#_-NLF_%5?tTp!R^N(MLA+1*r!*t)$5@3?3aiimP1ZV^x|;?N5Rd5qW3 zpS^h#IGQF48R&eh(0kicNV{4ASJ>1MgtW+s=E_5CJ)Sbt|8@x8Z>ktS3LoK%@V0cI zg=_#B%Fy?a#M3;N++s;_&{@>>8S8IEY&~RdyyL2GFr6XebN$&>rXjSnjxliBIEv7rke!J;VR zj*~(L1IL(-e02VflPL8mzf>~S8)6r2 z`601fY6l9wlD$6$$DYaXeCN?zriOUFTXV*>Z&|ZVMtk$u#L5&Rzg>!?H63tN+h!nO zFE04@Gzd2_U(!SBNiLW=|M7T_ai=6ts_I3?Jep$<3M$HO)XgL&@3JD(BkvKs(0Y$) zh$+)9TOnT6kS0}Z7xAF2|kCp{o^mAM;tr+FajpasRZe zIYBlSozv6eH8@dhbwaBzja)=LKJibZJ$Txr^ndifYtDZZ33$1b0#EM{bY5`3usL;} zFE#xXMuR9>C~8Tgp@O!W!jK49`o=$SO0hZoWugObrqzi{D3LM`)!df}I(d0G#K|FR zv$|&Vr^;A1$7@P|W7BT3Ilqv1k%?d@aUjB9cQddMh~+md7{{(htla$+VSrH2{?w3x zW>bF#tiM}?FvxwUXx|u{DvKfT{~hv~9^reL#f534FjO_7k`=d$Q#P?Hmfpv&RGhT# z+>vgTqmgD7Q_7N)kuF<6Z4ugi4zdQ)Ex6HVV^KhD=~><_3@nzn}CZ|GA}|JyoS zN6!YcB>vli33r4Zjp0he=x~t8@VogfRM)fcw!rr<)TVy- zo|Gn?AyBAp4Hs-(4p-Pw8UV+uMZi@Rmjsufpt#sr{;O#b$(QKU{_bvKhzZ18G{;it zkw_8<>^WG}HSWCUJwBnq8|B1798|K?*jx?#b zT+e3V>Js%F#^9Ji>T|arsAlU-wOZ_rlT2e0VFw3X7KGXEiC_Z6$ZGGN@ zR^>@gi8HZX{`WQ3hKV9WyWfB&+;uMhL?9DUAxDD@t!a zRT9ZJi^UAFt?ic@vKej}JXk4rFKOi4Ea>Kai_bqcPJ~T+XWt5+hXp@OY&yTpXl{%P zzv9`J+ctT9pAYQYKR@AgmK!0`<5ykU(Yy?;Rx0*QGy42t@dtN){*D^4caT9u@i5T^ z7b0squ6pykn#UXLH@2*pUTF_}{1z4v?s?GnIZ*99nPpE8`y^{gKeTwR9@N}e<;WMC zXIQZ53Hm-yFRVAwQ>M3~#9;c%G<;kzv!zNrT0TQ(kVphK4k-&^1SjoXTew>4)R0pg zv$D&7+G6j21IVA)FI@?hO=EnFHu{(0IsNz*WdSFRE@Z zsZYMc{ARFZypm(@lneAb6z1x2{I=`XRs5%8ln%MUhiB$Fx#}qB48eA9&*$-bBYdCr ze@$FK`Fgj{xqt7R|D?^oEZBJM>6o}LHd4E+B8@dQHFc3GW$~4OFXmDTTnmhcAY|xW zJlLRGgS$=5C*+sn*L@be2aKT8(N~JjdyZGaT?zA+Mrk2{VoLJ@*+St7dB)rE;rHlt z6@ni(C4{T-Mc#m>t9F}beVp)mBLSyO%oAdxIW;|KAmd3YyMQJ<0uh_~V_@hhqfLsX zUiP3vV+`KLtf*ei5T|t8?)$0xWWfOG2uCu6yo9jkMMDI&ngDr0{*WxSBDNwekUtmaREsDV+3@T^}Q;}h7{aA~->28FsBGdLTZO^XN} z@vA+MllVtw(HM8%A7EV64IK2|o^6LUy1079xRSZ}c%VR^89Yo9rw4KCMa2|^kJbab znm$-Giw|1y_1gqSnL}j@5QZ4?B->)mp*{Rf1UQh{+}aVo;yb$J`dcL?C{ zpr2iJZC(C}t7utu!5+kB1JjYW@Udkmhlx3r4F*dL{l^A4irUA@~%Qd`l+Ty^r zF@4Q&bBP`(;G{riIhrsE3d+g_OweKODbp&RBCoR`B4PkB@!mgX5wxst%&H!@A1AX7 zSbRy##`VDAn>PaDNAUwOdoB{f<>Lu}dU&MhQ52W&wjDJtBW*$dj`|psvp00pygYJ| zP(*Co+|T;Rh`LA}+6Pu*J@sISA~`b(R5dk+UI3A#9e=F|5X?dvrrN~3SIIkxB*J{& zVGdC4=fE}{yI^V{uFeUJLGSKHW3ZWV?@Gulsl7C{*KOhll3G_r$XJsoSf1%PYgbjE zg@jmLV~>c~4TYoKlMjsZQnx>gH9hyRoCgLUqMhqXU8mlSoIa5R9b~?c!{dG=u@M)P z`;z_4q-1b4HKaM@=*elKSBSfb4IkTTexHl$Q5YJIK2C~tHIlDmr+(1 zF+(7b_1Vl%-4n0nuYg8VAM(bv*4R(?{jb6Xn*TQcHXN~jPFG$mk>H#MN-GbCt5qQq z=4i1X7J4H#LaTk7a+wi?yn<|K@r5^V;d@v;Pr zBdg$|Hw`Z$2XeWS)S@*5EGfOd-9%GLcgH$#?i3NpkRS@s%O)U(_l z+sIv?_9<=>Yt1{dqTjZ|Dz8U2w(=jLpko>fzK^tnQD`*F-Tn8d(JTcofae$d0AZ9z z>R$HE?gz;zhE1EWS$6s>UF=?>=>@dvAdoH(X^e!dATx0-cX zRO^T1^R8Y`c&9;I9H2ZYg)EIaagqKL=ODuTyJOO`L)#7-5niEQ3K8%9M{-ysLQc22 zsF?Hs;x;qr*reZ4sMoK(=l+5+nV}3Svd+gGi<5eQI6aJQvbOQ(*}n-W)&2fQAmWxy zSh=Q@G`fUNRMz;d%gLN=#9Iq!PjBljfZFvrLeorCEG5fclZ?KOBI9g@j^r}1kJo&N zq3juXo0&}5b^#kTPpf80P&vY(WgFHKh=e(MD0Z^)j_~T&|`(}4HNALVVAcBkm zv!MxoR*eku_KF}Rvmp&JP|{OIUrhXdkhWM1xA~lkP1Z%03aT&(XTYEs{vfP7&`)Ol z*ciCR>o#UhqhdGnKoEK<+p=4Djgr-#vR~iyi;&I+1aMu%QW++6x00uxeXr#8eh)CK z08SP(F8G&5i>9<`&7(+#bxnJjCy&r0EziZ6RZ@SCik14!ovAlJwL#-&r>bKs*(ygg zk)kw$J$|8P&CxVe_Dn?sn^na2mmBE)U;F-_S6M05rnSB&%_7eFFZ`N9td*PI+ZzAb zE2aMnLp?oaZX#Oq`j!O>zQ1Am?x5`_{MWTBE=PR?uRQ~M!STQs>)haZNLmyV#9eRt z>pON`>~U_9r-5P50Hz5ty%nfdhn{Jau9>SW{918p=zoU|P+S}tx}9&WE;eJ|F2me3 z>m&4appE#w?Goo#%gCT9hVr=E(_nCFswMKp&SDWbGi=t*p4lL_!9;o+ej|tU2ZZE5 zqP+s7&LX(iuPma2FS%cA1CDMx!`tsE^;W-#yS^FBzRj$(Njad2y4U0Hst<;7=1WM zCk&Ahef39H@3WKSaQFN{$EE6#DY6)RbG1w`Xr7yptwIGKsdxRHa*ms;VM)qQb@XjD z*OECm5*`?W{i30Gzdqp7<*X)dy2c#`SzafQWaGT}O^4^L(9~Vz`lRLQI^Ja%65KDT z1A7G>rb0Ry?$?QPR%;J!TkX=aN!%8IvBM@G2M=Ie6senw>4_3fKS3a4xc(j z#hg;9M1cN^5P6=VAAyvVg-pnSPG@@gQV}oR9kneqREBJU4V`SSZ^$T0lpg}B*zjnt zDAqAR<#(_4jG0nik15@7|Hj4ZHj_k4WN=gCJJ@fs674Ub!U^5~d90Rv#8hh{Qv>_6 z45%ka%tgBsw-EKrQe(6+%^D#T6-6z_;_;;w!;W@%xuZi+&bmQR3#Y@0%Ek-Ol8j+= zy;#Mv3<86Or@;_{6#agTN*cQPD-Xv-!~z2wqr_+?!Ayp7X=518B1JB{M5-00R+%sJ z)U(9Vi?#1s|Iq;3dC7NmZD3S`fE_B@aFq7S{V=SMvcHH%Jd_Y+2dIb*k%2KJ={o0g z7AkJzzaLUBwnD~h!GMD=w!DLJPdm;joQxl}pN2j?aKK;u0pzbI!Ix|Bhy{_7lA*QK zHF3enRqdX&_A<$iC@E7-8s`3qcxQP1dkmPl1dh+^>LYMLs_Q*>JMtctMVx{a-n@I2 zaCJffwZ=nhh~@LDvQYc&5ZlJfGa67=GsGOEG7#5OUu-)<^2>?cG_3)3Bxk^dVQ`^2 zk=;FA&ov%>gLA#t3O1^%Fc>v6y~Z^WPbQ zK?LPr@^YNY3i(vf^VJVe?z9P8k)JGqkMhwX&^l1v^+4A1l+e(L$)Gu)Af(#cxmv3c z$zWpZH}&%8lN}NfRrLwS9(kSjc&_T_0{Pe(nPeK_w2uy%a08~#KjjPDMJyx$;M7Yg2brMU)h~qmeBF(QB&3(aVmQr6|&sc&8 z=+w@|IEbWu?un!X(F%!hJj8h&7?2w0#$ zc{osnNna?Me7OdtMqU?E-1Own4HZ%1vHMHk&zc|(T)ML^k?*%37;+H_8MfT1-HiJ| zXO5UzQInoV$fH+_w54e=zNBGe#Qy!uJPxrF>v^0<#J$nsMCmCywpCRg`ytGpnvy=& z=Glb0tK|4p)$m&c=Y%1cHh-r^L4 z2k;^vDrd@UWXX}LWsPdP96BI!_4(LD|5JAph+B@y@VFGIAw5RZ_U?XO4!4Q6P-L~c zdus*P$&##tt_vd0XB#(CFHJG1UWMlfD0A~e~|JjCy8860WrHRM) z70VKtU|Xr%k}Df^H6Lfrz$6N4J_uA-cIIBLo7~SagvOlYW-;dGtwB z;aq?au{9}rgkw?><8HV4m}Cjv==ADv&R z0(Lk)bvp;$k7j9PWQ~#8&Ah+SV2&Fpqi%?^2|DE^xn@!~OPXt&g zk!I^??M~EYnhggRhZj5S_zz5QLZ6)Z7Hw%$5~uDfOLU>r0hrMtiL z9SQJg#+JLE!|ynv7KKN6d5_jNv(%6662DDGt^YZPd59f(;t#h8B}%mZMc1W@Zj5<; z6R9?_f#PR69C3~ZX01&kjQgfl#ptji=z1XEH({N<_P=ug_uc<|onVVnNcl&K;~QN2 z&d*LYnb}LfEM;n!Th0pyth1L|(QW-cFIc8`sjoWqxn-syG5!8tNl(-VE%4Qe)vE7- z8aWjHbz!1&Pcgi|yCXYof8=7GW~(*H8SS26y%jqA_t)w-*Vc!8MI!(JMkqVKad)8G z_I$Gh`W}%~yG=fu6*xWSuFk@lUs-x}e1*;3d4U=9kLF3-X}K+0?DpS!X7KrIEIjto z{bwWZ!()zUHt}cx*(eVt1@XF-Y{ykIPiE{Ao1Dq^MwjVj?2#C@g{mJ5?H>BP?^Uf_ z8KYCS0D@frw1i0xK_M+dL`aTPHnmpiYfGo?FfU}bbmrEStRh_vlZXh+XUsC!BM{?8 ztJbH(Xcirk25@#drIJ1EMvlwDSCip9pzRV-8Bb5?`&%A2MBZ^a>6zjb8!5PszW0wJ z4?9vhoA*HYTNseETZi+32_wzJKp>=D1N*W)Nz;UXb;-R2!z+nnXbvY0Z*?GENi>BIOOS}mp5&%QZmBiS)zjhMl#>n63dh%p^tK6|a8i35V=iBkh zwzXZ3$B0pN*!lBO%!P>Utj_B zOX6XN1t!(!c6CoS|4`Oo&Wv<^GrOT6Cem7}J$(1yX3c*>laqFI)gTI>ZvETC=D`=U)wn2|Vk#^wzHnDf`5<29n6ed8z=6adffdqnldd1m~M z02CF)baOhyFJoRBMamYiGk>gOs*WgEkOfGxA82YuIhQq7yS{#irQAyn%L@VzZ;IMH z3fGA@Cter(D~qU9HT?YN`JE9JiWcVja`w?@&!IE=sL^S|zw`9+E=THG_&gpivu{BO zmmwPKW_wwA^ettMd-kOfhmJgNPfcqIh)V4Z}clxn8}6Y7mEOSOCOB6mf8T;)6A*E70o>wUa4uv7?~1e-v7lk z*#EEfD{wD@^6wX>4GCMmnXJB|I!(&xMziPSP&`2RqsZ*m1XxrMZJq>=civ+Y5hS0L z5qx6iFv>4#f;7X^rG-$+hC_*QKyG&^I6Rv>c`K1nYb-PGExTUUk8JN)s!5lgKmL}s z_-@qhl{b3SZ5{=?m*RBUmsB&K8f)w45Bl#^(IvEn9-5c6vu@ErqTLfuS8M%yov&yv zuJt`XUXOx9)}E)hE&qsJ1#;6)i8NfKl+7Tt&~Bv_wREJmlvbDKLaWrsqTq6e!L2sa zl)I5G6%!#v6Z#cfJgo(#i9ZJ1kG!}F49Da7Xx!hQY8h88i1Wz@!_Ii?xLb}f!_~Df z>-3~}EvLs9~6cQLRNHvop@m;7X(M1$X zC=u4WZ~e(4i3c{=2Ch-yyED0;x*bp1EfPR^k|Z3rRw3iNlt;7V=+w_1G;ndCFy8_i z5Ci1GZ^21jq}*~zAQPr#Y+C;_e#4Xd4sSXtYtFtoKUxWw@kJs`CImhueAT{VOiBd- zF_eq_Aa=@XQw`Dy@DQi1CQacfi3^>XuWQWgA*G2F(j_>x{M6F;2XAdg)B*3qA_8+P zL-_O{C^r}E8`^QXsYp|LTIuo|nKSWp>sdI6s!{3&zB*Fa3FZzukG(rtdwBPh`nr+- zzi2la8d?-@MqpXljU$+j&6p);I^I#HtYb~`R@tQL+*4q&GU|<^Noi{i`{PK9-~_4cu=OfC9oO}zcXJE7 zHEiDiUs~rX@%lqX7k^OWpVg?N~Edx7lVlM~t(RQF%@5>8< z({fAnxJ}sYzt!FVq5h3-nR<`CsRzYo1YP7w_oF}85?SP@?cSuf|5lK~6wuAMRvfrO z2K-Eozj;Pk!~s9%ZE(M)cZTLay_LcMpWn1Lp2Hf0aQ*2DaoYj5Bg(}hSvKnA3Q^IF ziaFSyXCUng-v9cF3wZA2mgT5K7zvoI%Jhb&AT5NuW6G{w9?m$2h%n9k&8KrVc(`Yl z&pgm8VK{*9nhebaaFGO1-M7WkLMO|3i`^^oun1mUrK>pNHHBF6<#&rD?i^5%?vX0n zNiTSVexO2V@)^F*lg+a%)EKN&%GCDSr`H+9uZz<=DRNHCtwVTn6G49{G-;#;`p44!}&_?1?%xcSlsSzrM!peo;rl zwOjjUxF++YrC5b2t@@C4edz!3Gg zG_=t#A5Q5rR01SzxvV}Kt(aHhE58@}^Q+a)JehF3N;{5gndTedwE<<5+A>}56t8S+i;u$GX zd_P>sbs=`>lV$4y+$?*dtJdC*F< z*QR~o{+^e5r4znnWYC8Flf6q0ofh@0d0194xRX;g!Of|@?n^2mVh6S?1%pAGyc))I zKf+hukcHw?oAqN?zXzf%c+&}vtAv^RDV2x$S65|eRkCS<-miMY`~CjxsU=d&*jXCo zS?cgd`7DZY4o@%XQy2l{tYMFv6kOT zir3%@8!KpfrzEwi)&bBz9U;9h8#&Iie)G|J!>qn5{;hD5PR6gm-#_s5{?z!tm62!~ ztEhX&9rrCZ$eDL=V*|g|w4Iq+Ql#)SEPQ~mpid4#zXKpRs+)G%0v-v{i_#o-Yi~F6 ze693MA$$2*cX+|Er@T@_cKx`U{PF!9=WE0m%wnn8RCjeY3hX(!^dALE^IKR0OO3f}>XAG$v_R&H*7|K?1X8^X@;GdI@AJZ#dl@vEQS z#$33T`<4z}9VN_-EIBnFSF$M)I&FDObKJ{IR~k+P?c;=QPZGy>QeEi5lzSOxk5V^` z!QRxkG?HDdjcfgNrp360==v4@8NXw;rgh_|5hU4 z1h?aB<|khisk6$?5dYKF0kOtYi*^{gDZp?ZO^sPMy8LD;cvZv`pCt(mh>>(_N^VY0 zOEO?aA3YlO0SK|bprSQ}ZtI_!13z?$M0(svekQE%6rKmoBRoFxU$rZVH=~_W-r(32 za5j7A9^pm0)3T^ZghcXh&!YOf_gJ_wHZL+Thz(e^fZZQm7HIR=28$R9@MEy%L@#bSE`y>gL-X(h$lfi0l|8u+OR4aY@qWgGp#CzfsJ1Vn*>`CkY&=$7u5J16H;w>q`7hMdMX;s?@B4_!6pieuId zRe9uXZ?q`D#(B1VmZ%hC7e?%5bV!&Q^4ezpz>US~FHd?Qvb#(!&Cfz;WVDLt2ry4L z-w}@Jx@g6%OL$wyVBG8%m31qFKE!63s(6*hn}5PEfKA&YCL8R7e7-DIWrHUuZQ zySoQ>Ydk=3cWW%Tgy8P(1ef4$f#B}J3GTW3obx~2_h$6iKdBy12XRv5Z=tkC9+A z0cm_+;(Z%xnYN&zb`>E@$u^dOP$XSvx&jJ<;@AJ_4_dc;KisUqG!22Ti_)yuVCF>P z&nI~;i)x{0Mkg5nqTkv1(Ahz&K!(4=CbMkn!1TJyH-KaduFr? ziXp`AP1fet7#rJc{g3-3sQQ1Z5XF>=Dzvf??8xo$okEWIPwSTAOJNK5n~a~V*6>%qp`_iL>#{;p`3BH8m&xwymJfVO$; zbD_^s`|qV{0|r^R%fHWMqH#=1PP-Qyer-YjVC{Jo_umnQhp-R%WUn?NKqH##9nA^4 z#y!EnQ5-_Tppdk~{8WN9B2gVWtxcJz1PSRF&D<70DLlg;WT4C_K6Du;69E)VSb{0T zQ*nfnqXO%ePrp}iZ1OSSd_^mi{pF2y&Qgt%;&MJ*bZ_RfTN(th4zsczy@6##m}q5)vP z0pTe91oxY{eq6`27w(Iw?Ynm5B;4b32^=i_XlTxAb~D_`AZpMD4=AH1$`%w`cEBnh|DEBU+>m*;nh z&O~EM^m}Ra+jsQdokq0zT4Dl`p)rrkQv$B>^7Y*`vwhzAmgZ`eerdW*cB zKy|R3qYaHUOzOG0F|J>29%X8`hc$D2QUeC=TX4wWQ~l4?RB5z_8!kj-IN*f#pb|ru z-lyyb3aFSqZ@dzwcS@F_qb0d8ah?qxATkg{rTTv-QL#wYTcfl$qOtANu=b$Vn(>y ze)2c|ljYwPj0G1RNiD)6_M#ai`PO~_B*(moNbzJcALXd?;lf-nZ@07OwCPU=M%I+x zA-ATsyiS!T?7Pu9t|~^ZFmDyKYOZjfRa2j9_n8oE8!pxvbLF> z97>jV%@`Tw7r`9;wKp~|=l!4}end(TL-aK{`MfhDhPh|oKETrc4TVIaBE+-BAF(~- z2wi3Vg$>p}CfJco>$#*rD$&O_4QxyzgH*IT>=4bSNcfTAQtd;-9U3@kx259hlU+GV z{km2uO(1iagJ9F=W^GGQW+400<6=!-mRBPq9P0Y7_r9brm}U@vuA`g;1i0!1=}q4&t~uf`+NxdZeubr{IeibBw=bXbE% z9g}*Ma3=9u4|<+rjM{7gdSAsyO@l zhOokc!PQrF?`dqo*BYZAn`h{m8gehR?emu_a+<~tz>)+=<{Y%;s4dlAW{r!bASk+I z>xmvVKd{2UuUv>$PD{o)c(kJnEMT31KX|A$t?`v!NI=tvcJ^$`lKS_P z-{ALc95&_8-%x!ChTx7!?i1qKbEdAgFG#y??qRF1anJspzUWO_KR(*k?TrMzj{F@{ z?LjDwy}5CNAl3EU6Pw3+{~aRy<s7YUi^e4$Y;i1f*F^L z4cd#`+q3v@mpMPLx!(CA8o1B)CiA$BwHJw}-p8`ggMeBGD^!aBZD(ynGIc*GQ%lc@ z=C%>h>Nw}4e=;R_B+M-5vw@sRvp^uQxRX6*ZOd|0o%&KK>cK9PIBlctcs^cxHcnpm zKjdovoe6L7CkzhU&E=kr4vA5z{mgyKrYFOSHapxU! z^*~Tj4=R1?t73zbolG~L!g)#qX{hvX|a~o6}EIBJ-DV9TFWJcP+#mz2~dq7 zW_xSBXop%FIUF{ku2VtwPpK9%C|vZ2kkRQK7l}}7mB0&h%wCyj1szw{g`#!W7_Gy4Zipc zdWg;B=C18He8lPlg8CGcjX^9{-hNQ;i^ZSjOA{?JDNDW{EJE*ATH?Z5zN+K{! zTw=X1rvcRni}S%BBuY4ie>zsx_pMXz8)*t61|O~-8eH=6bEeh+DfT3`JXs?d^jd{TiGy1++vh3HTG zIE}hF8bp@14)~1!j?cdAB7$u7t^Xp8nSK-^9e;lnZh8gkv(~@!f9^|E^&2)R{ggW_ zQ*4#!*AMOWImB?S+|uXYW>MY^VP;FbKD4W!UTm5N4?C*C+eqlhGbo@@sDT^1-A=|M zs6a#*@Z46(2R_pRSX??)G^IC0@3(}3ScrZvkJnEB2vk&O>h+jEBCKQp3i*)+C@pmV zEu7za!JTd1e!?Q6!#NKZrXb#Q@)L5^6iSsDtT@P;@P-KZru#D7$x=;{GxF{2KS+o#e!GI0E-5hz3VV2Qt&PF@ zy~^I^R{WS+gz8+YqcYRbXu23qFjd;i%u<d(pr~J7t|i-;ujxnEpA8z4^hbXb;7_cjeW{aDZ*dTr z;m6IcVZf&{jH$U>I6!GVe4GnjtLpIW{o_~NiV9jos4{#IEmIs1oc)1{lG?Y%_2m>H z-LSL!dtLyolAbO+itXA#!1<;nMd|rEW<=5bqyypmIYD&D;oS7tLDrFddNcG)hSkg@ ze*VSf%mRrxPP(yCcF`=In~WyB4yTAAJ|^ruJ0u4#YehtwArH_m zejf(a??#7{q-wfh8cu%ido@8Zg89~vZbzSdn&Wp7gZ~D zJX^{H;z)I&q>Uww$Cal<7a^53{ZM%Pbg*j*QiGrLoLKj!r)1T2#%V0k`H0}`&vGuj zRu(uo7hM-U62C*PC)KZO%D{)E8#Dq9T+d^0^J8#EiT<~Mb_vY6Es22eVVWP)tIn+_EAVXZTY>d()?m(x(mq zq=%EKlM7_Zs`vBip1Dtf)FLx)t!8`JYB2uDJV7vN?>5O!*AkxBy2=|TT}5oCbFW_X zc;gY_Oq`$?tM2Kw`;YP9FATZ|5N`~&~;zDYWuT7 zMGwKnA=Xu&?mn{2)hRpOz_eIGR(rd(;$q8_^tlJcB(qJ9{iQ0HjD zsW0$rTlZ;uTdnh9pPPUwCioi1ueKio-A6@& zwa}!m^v78xjCM(QV3%dem-Sz?UneyTcR~|d`&6vdl==Z(DDn246F>v9OEja z9qokH-K4C_pGKE{5@a!?zK$?1T*`7Sgy;3xbqFvSROB`FIQEqqo||Ra22Opm8Cm!o z1e{7C9;U=1LD75T-%lOz#1qeaOYR3u%Z1K+C~7rA)haCM^StSD;;8bLIa!L{ek`U0 zjjK*9z4peBX5lSsnqt+duQhV&0lsTQlWPwJ=R$TtZZ4rina{i_%ba~{{*3}!58o;w zcF^}FPq&j>%KwCK9u9*3rH3Pj*Ic)6EiG|K*X?IZsp+`*IS>kBVQ+T3AxZ%$3M_PY z>zq}sqS5mBtrBkeLQh%Dccu4frS&)YC&zop``M+7*Uv>L^4f5niw0;$y7+Ypf}&GK zxhd3A=8cw3itUWb=Ut2yZ)z-8rR;@mUYI55LFS(olro1PL4 zJ$O#lbFxW4tbAfYW5Ajn;CgQKpRZj~ltwCuNg$E(bCQYpM|Qu#)7Ax${6`pMbR?-x z!R?nHPO!4M_q$OfzQ~&hvJ)Ww2L}A(>q_7}w?;U|qR2uA*Fl&I=+_-|gq$vL{Pj)p z3keMzuONTrpmxt$w=m?W9OyW=6j;DQLZ^~D2>r6ad>*L%RjbFLu>JE3M?y*X5YbB4`W&e)7GFG zY8G6qeQN(xS51OKIv%Jjxd`2>=hM2q=Qz8oc!*M)9_!!fbFZsSze_U^!fim%SV~G? zs++*6Q17m7dbk$dqYB(cdLLtP`nCn4H#9E-T=b#I=7I+)C)b6TeAQ%O|)>6Id=>C{_N^ zOrT8PvV&QjnYuw?^*7EGASRr}$w0755!plwG z8t|5V|N3UN-z5JA6>~id0h!)Eai!+DnO*-vsO%cRM@XClpSTdLYl37D*M9*adQN;D1o-9C~vG?{M29zfzpVN8>riAbX zTB3o;al0k!F@g>*4hZrfaY%)YQA=Xp(AvB5#K7sM{kvE4L}^WJ01ryN7XT^v`T2RD zHz(`?dj;RR!NV<|2Moup_E485*{uh96ts;a6!NYjSAq$(W5JH%bY_c$nhTwWfE{;w zeL_9_d0tFc_~+^s!+jQl#fG=||CUtI#Q%`m{>NL_W&YdCQHC5v9b{Z-dtlz@6G_|j z{z0~~>cfMVYteT4P;9+f+9thExW8Ii zvEJFfx<79PsIJeoZ09(^s)65Tb-z;g+w+b9j{U#~uOPw%GBH4VY_^EM)9V`W;e}zg zexA5J`u$u8(-mVxm2B@F@sipRA*^Ss@eoS8U+{U!QL z*{Y+&3Axlj`XU+BCbouWNjKHHgP*RN&`zsf2zv7JPy8bLU;+Ce-6NE=BklIcHL4=AAn;-S5|24R6d2n@wBzFhhsk_AJ_0;=~^&n8#IBkv35YWuU`h zev@WjSz`4eViL+%Z-0UAm`1$OawSeJ@dFk3j`1HXI|D}ewOmHG$0^23*c_&W>Ol&qh=HJkAC*U}tCX;Mm=RPKKMK37EKw-iAM8LXM##V$Q zr7#Yn)wByPt#!YY)d5#S zM!`!yj%vLxDHgUQ5{Nex?i{hgW67&cFL&=EM<`wSke`1YQDXhYAq0D+V~!X*I6Lv= z=?vQ+@~tG^V(`0Mg0qV+N(f^9j*iX&BU&Fxn>gTQH{&uD%-8{FcBE`wk5t1`5HqZv zuw(bH2|?E$gW3N%2iSr2Y%P;t!xXh&gsE%gQSA38Ml#}*dB}-|ZS;5KbhnJObMVJY z8n>t^nh%&MDU*Blc4GhAKsNqYHm#8C@X<7@siP${znHS6;#9(vH3MZX138{ClD)p! z<1n8-@W6ncK}jLVf;GT*SxEj2{E1&scyMQja+u$=+hB|m#N}#W(UZP2l+YbHqDsE^ zxX%#skV%CKm8~~45lq*x3mDwJpKlogkMrJeteTKZn~<&Eq)(YmIh!CRsyz*ZI<7)g z2wm(y*w|9rye^Nf05)WS8aEFTYR?g`rmlgXaN8ZOFe9zL@V2k%(lyR}YFb(8%OCltNHHT>C8kl|s(RPA95H3Yp+{BND%T{Da4|8H52sKbd zF;U~|Dq$NFn-&V#v|5={-|CGx*TTdgd+_MwP53iJqdPb;x$BX)GIxHdrGdW~I#&(u zC=nme_-1ZjPmP3zI*h&+8Y>4jczhlFXE2;bR5xym%&1k-lfB(YHP z>a*0krClg!|FaWHwz+8j;MC`3!~VP)hSy0%v9>`#t=f|J0dG6e$Sz>@ca>-HTMcGW z2VF(NAps+|M*%~jL0!7eFTGxwx8m1T(VrQMi@l1bHQmUDmrM>$Tlt|5Z|h1ejRtw$ zfiI+nOMIWmY`hHRWDN})y@JYJE6ywdK2_ z+4z!|kpdc`mY1CT$oGQ9wafoWtP|x{LW>_^GOOToP5Jkt&s~Xc%`Kr#j3KeJ3C!r( zQ}8y{W0W@M(?nOsyB+NV^LrNSe*ajX$3{3ZlxXOLmGsxbT*u1fiLO3gJQSc_QTA3( zR~-NKNqM|FE&Tk8>%aWhQsD$?&;K&twHTekOdO#QxP*~M$7Q)R;MNI1&cEn!k(^WDlSzJO#>=L< zwVhQijn5-|O2R=PHEItT^N;3;A7uzlHsW)`@!VR$dwF?rz6w{*(z}t@Y*36@FyT37 zpaFxyrrn#6W&EltI?TF;h#}<8A5*4Rtl+a$3CZ0q!Yv3;vOM? zJnrhAn>^sru2MY>G4y)eOOP|CIF4)RdVo&&F$#D9Cgrk5u%2= zY8hcA3s%~pL&LZRCE;D~b6)m08K20%FU0v&p|`x?mo0Ge)%1J#+me(m_RvTCncGq} zN!KWUbucm%5V5EJZ2NO7cSh&*B#!#Uu*S)#yEM|yu>Y=KknVV{+f(7xz^}b_23+^T z+;VDO{Q^Fzonb7MOTJTQvPh{~Lir%Lq!@S6W!Yubz&h?V?3JY6-#BhQ-{Y*MQJ2D9 zq?J~qTvGVE^S9R!m(tHN4a?fJO-gqK{r*L4fh02;At>43YR; z1K%Y%Df-4k%SEftIcUFtQg|vcQ7=(IX3z}J($0-6Ib~~7S^wwaWe1A;jJ&-Ky$4OX zIkjCX0afj1OXY%Uw_LrExbZe`y5r5wpnqhdkK3XEgRKv|827mDdS+9e?hEnBN)i}& zq0raS7#tdsaY?bR@hX_L3AD#^oBs2H@$!Pof5aYd;m~?Pn86i-neN^_O4dH@0yV_d zci5%hggPRuyb=o{W6UKO>xC0j`eP zf#SSqnh)SP*A%8ZiYDLG76<+Ia)B;AP#|=6PHqU&@|sYuZF4`+L{87la2%H|3oVDb zVK6{TE5PGVeVd5g7UaMDd;5#p-}#^DSN_5qqh@<7V!QCWCjKMtafmwvx-3QN^lcdOL6K4T>1~#>R(ljt@Im}2;3R@6PeOA53Ig1<^(wQ zvs5$=5SRUpsy0Tgy}s+$x8)K#Rh$Ofe;dSSN*XJp<*3@Swn9kqkuI-yYDl$OVLu4d zX+jxkhd@(va@nQ2cb96;b)BvVcq64jS({m;-YO%oFhMEdBkxQ+Zl> zUa1&hz4+rWL@;mFXV%n!lZCG6?AMTD8?xW>wSD3Jv2Wd!lx^67i_~Fh-e6yhyXp#Jz{-1&0D7yS_RdYttu9puBLXRFknp= z7l0JIT34JlN-%GHB$Z=IlucurG0G$65q*Tm5sNKg?Hz`Yy(prbj90v+ZJ7bx|C!;4 zg5U+mH=kupz(&YjSjq$1x|rBkM|fQCL0xjoV;Swkdbb~8%n(Vd;|AQUS!@zE1n3b7 zG#$+>jtCX)bA^ZMH@COPgA)gbV`FaI&dAAZy+gx9@krxpcq02LnzEmUO)<-H^7TgG zpFR;Rgh?lDqE%kWLGLc079UcTacVPvtnns2mTc+Xigsocj;TZCgKi9S{8P+&6ye&P zUP&?|YW`o2hw}e~T_qfUTm&4-1A9oRjW9z`-s61b$7pODJlPk2^OjcXX+_u19L#b^ z{AlJ{0M6h~z$_7%sMVqxkR#5({1_9+&duF^+y|kJS)$nQMB|JcWVh9_r4gpj5I*(; zBkgHyGGSkOn>l(@5;^8Hre5s(2h3S7Xa)vYe$-c23GkXKu)n$76v;NpR>Zgs>Ddp$ zh}{+e^y6*!%zxjQi6HEUAK^YThH);qf00Rw;Aq$RfCSQ3m#7Tp>nBveG2W9kG%GCp z?jSy|_bm&$W+c#0oRG2_1?hL7_}xqYh*qV>2x*O)$zetxPX#q!Q$Mik0fX0N%IiV* zjFos^FI10?sH|2&x;{FZy%i}#Hr2k#<9?TrY<5S4;*aC_M>Rf_Hj2W8Lpp_owVPsU6PK)ok;l$y$EN<7sfW-6m&8lk(=;Xu| z8&=QW-O6y(!M+!aO+UCg2gHI)y2vQSS9h}o>o_`0(&;p7@5>7#fF5*qd5L;8)z0jH zDctn{#l@Pcn4Ozb@IdxmApyu9i2aW}i!X3n^^KwHY0*%xZfS09hJ!wfDh!JM=-XW6 zf)zT#*!mPKQdlzXw(ux6>oi-v0jtc;1(?W9{g!g{#c4D8|i6D5jD-@E_b+y5^Li?wFgxVpW6KepO*#8R9~y8$Mn#@%vx7`xb| z32o(%B1vI8@@dp|_LKkoqQ0aKU1jy5ibX$f7PM-f@bKOMEI|7OX2o?J&i%Qf_PpMY z+mxwk2C> zV$x$x1AT?wYwLrO2Mc}cXvL-tNB|%!K-~!YJZph>yGa^7uRc_eB-?)pa>DeBf$w?% zP0uut@qr?crWG{*eiolk;ozbTh#33W+g{pmS4=Y@>Zqh2zjJ(boJb+Vv$Z%~~t}#w>bTBaYoe%2ZW3j%CfJRLxiDpdwePEbN_p z8-DzNY+Hv51Df+m(M}x-KQivdg%M?^Rj0JNH?=R#ccgql^Cg$F;098qAR-qLRJJvO zLgDUSDj5;vuT&s~I?aOS_9oG$N?#NM2fCApmWQI$nvL3?5vZ(By)+moR5MnV2?h%D#SA>quBGpzMPTwv$8Su_>G=9HR?X3(4Quxx&5v#-&*?omWYTa*fp>3sOi`Jc#u zt-DCd0e;(9oFDdtzPS~2f{nhx%4N7vy;yPphZQi)rAAMQ2RV~ber)3~7d+-LVXprf z1gTnDOgCm;m@`fw+i}89Jj?jI|I1<>kX8W0+M-jxVwYsR?2qHuQ@*fAB&FYx@5Ndo zy5C^CoNs8!#C$@^%IF?X#s12?o&{Y$Tm`+=y)y|1zJhLs$SU~;?o|*7o=Q)J7f-P< zFT{Fx-l1#3?SiJCYJ@8yY&ZT>gfMy?jh3aWhA8Uj-2YF``vCs>lEjInV2VqT_y+Xf+nsfL0@ zSYzJB^o{GqS=>4Z6yZV|s^MVB|GVEhI9iR!1zK28hA*u}{m;7N-0O0C{1-m>XCOKz znQ%YQuer7l4n$!7?R&XIRZ!YW@gkV$vRz`x!qUNq67_~qnEHdhxydRKQM#wA0GT#_ zC^rLN9DrBS-h!@)4Bs)2QS`uo9OmEcKGs)74;@)1vc}k5H$B0CmCaO9>(XBP^d*6ia*iO`t9w+JxcVIRbZ-mUP-&V)D?zI{# zwOM7j40ZqbGK;F7K(-_(Dl^^umDhUoijoS$};N* zJwYIXFfNV{d(z-fzFcA}nbsquJjoau+mp(qnFDF=%SwdO87AzXDZ2xIv%C9+2EGe)DvuzmNh>#!vrAyX z7=Pdze))W64djR2*Z}X^)MB&`2vfubbWwNcL}HLvRaYn6@rY+*#}ms8rt~n591x^# zdqOz4B~w4s$xYR0ya~nW@9>fwc1~RL0Vkc`m-%pbjK;)~1#6<@am(y+ZX2>b zLFiFS=f*3#tXS~9`7xUz9i)EG5B{t$QXz^%c8u1wzBS^>Jb1+)`cMmh_gT1X<{N~3 z)fTgXerqq?+4rBQii+wl0Yq|`UJMSI>Qttv`COGmRveYyw!k;RT9cpgAl!@U)KLa% zxVl_V*NZ5>Hu`bCES`&v&Ika^2jKoJ!)jpxOQZA4hL_9hKC`&l@#Wrl8SGoi2X`Z?p?;gU|cSg)kC}$xA};ynDHbmv4|8J4cX|h zlft}<#=DggfXVUtBiTC!oOU;cTZ2Q_H1>FAvhg8=nPNsonTJdN_{Q*jacua`r5h1|o#6fA24CZx^Hr4~HR0h^v9q z$PAWfusgfvQOUAh_p5eo9;dWG_X)uy6M^CcSY$PrNX`H^&VAZ~H*aVE5pK^4>ij%d zLLQ};6?F<{NEiM`c1*f%^Iuw)x%)?gzKZ-lLGzjo*EK;$)^i7$OtJE(Y}SAp7^(Kd zB<7$e>K^|nl$l{vOPFvZIe;!+>;P(TIHHEtir;Q*BRV`A9Mb-Gv!CcD9Zgi%{Y-pM z;OBkWE%X>#_eLq~qx2gEt}`_AfxTA+E-;-$>p4Tck8ONwN(`R)M}S&K{qYHlcq#cR z7ZchBS^Q;ja?cAdpHnc5Fjw~SqQ(zPyK8^?S|$^|`N#HyxxL({bSC=uF9%Y_&K0lU z?p`gr;ynU?P@);u{+*HZ7hd}|^>tl|WG+hQRN=r$uJA`9zrSxO3y@J`dbaDC6E@%+ zpxt@Ibj8hCf6mz8P0EeCqAq?IyZ7Cq>-Bo#G57L`S@dONE4*o*iEa~eXcZmIw@_unC^(;E9 zt;rZ^Hoh(iWuII^JxKE1gs#@Py-qBpWOp~-bcBN|J)3pEhKf1$iY%!^L*=8KnI2}@2?dDnI)URcMi9`qv;QO{EXs~Z80PwC3E{H3u?H(Wq?V?Uya z>+n&w%grHr*W=s>mVjB)3KYAB&fIa4jsy2z^@ktD#x%kKzQD)bZoeZNw|SsW#v)>p zZRdDx_4zgp1H3c0Ox~QG#e1?y`A-ccfQer}%7x}E9c;JeMMKi_7QQ-(Bx>io&kEORLBJ{S z(vby6rra$r(0Hern_FHYNs4U`?=O$rp)cXfGzYOgr`VG8z#lxEnmJV~re|e7JoX)vdls;FM=R`51S)^+&&CX z#bUQlvi2o^mF&mF~+^P+NjA+Ed^iWAG zDZ{u5`BBHHBPL_-tl~K00gg+*U0onCaGeI`lj*l22Ako$U8YP{s~wfl^d*-d3YrHd z$*lwat9zowT!Q@{^PB#x==IxkJX^KPexr^yoTy+))V27-8fVPjIi)^f?nb?;p=8a# z)_2b8&pHw}OFQS-VaoD<31(-rTk2Y#<@?4;-W{`S-P*6Le&l1%#M@=~9%#Ti9^RSm z*@-V4LVU67l8WW4wsMnc#{lG~eC7#N)_ex}NRLvwXZVba|SLt@snY;1ho~jJ=QI#+)MiNA#6X z8Sr)t2a^jw;co;b4=!P58OLOvyiS>E^4XucQe0}y#M5||t}_{^-!v7>>U)8J z0dXSnOPHU1x?LseXd0an&U7l6FcxtZJc*;Qjos0dR80GBws-yy|xi@=eG?E@(**+!;8PUJT$ zBmy@F|xv#Qqof?Z#WnB>}A_5^E<+Y2ptP@wEAA2Dkx zYQ#K9tt+8&)(O5as?z@iOJ>}A39)<{vBg{l({sFOw^R#q)MzTMBTQ)5t)Q0IZk-?g z$xpH7af{1*QWMYY&cbK1twB?=WQ|=jzip_7U4vwxs1feC+gb7->y|-=cU=wH$ZJwJ zHBae;Neq0lVg^r=9Bh$mEvBXd!mh6z4x~`y?Se9zSBHm1I|uQgVJI`oH_`eJR@6l8 zpgWA6Ou3FwW}}$jo8yCJVw{G$Gy}30;xmcCn?@&f;3a*{Uz{U%Q64N%a1rS^z@*p3 z(-k;m9(IH&E!AH=r50d8cgvDlvkM)|(BSp@^nc9CvAH{a;euSwt`bqmV zAd!#uC{96Fd#b*&G_=ZGv8ke}!k(ja1(0(v7-+pO+0i}-``&^Q$i-N9F!$w0O{97O zm0#NyuEea#2NB>+Vc&!xr3BFsM`ih{m{l?U>J~H}B8%FM%OJGWrt@(YyYTMPl^X z-zSwxd)KvlOr+1RSp_rwh3GjDL#20Uh$xqg9JrpLWfK)VELSh`2VUa=d%0=9+wUsX zXqy9;5s{Hk#Um+Ix-I~}2M;|@Ac#+$fYiXJs7aAiT$M-DqUUO2SC@7U{C29+cUdc0Y zqHq}yMIts84At-NNN>{ukNZ1dS=s{Ti41Iuet*G%(>!nV@3X-~e|)3-tl7hgx0tWN z;$B7sR;pC#+6Em7+x&!h(xuB^pd8Qf&Iim7s@=M)jSMmEQ|yzC=9vk(H}Ub;}rWn1EkJT<;m06cp7R(P$mr&18a1RPH9{k zrq5HI>b$M8OgHB|Pq`}75RGhqo{_5rH#PE4_}gEHWfj77+*d9M@%){6jtSkbZ3+Bw zY&cA87{I{MNEXGFJ&```+vR*pjFEs*Qk(hGF_>v6$Vdle6x&PuIIwGLBo~Uh-SFPn zK$%)=soSX{5|YK`;upUH0)6kSAr9F!Ri;;-%nYYaTi9A1EBR32zxo`fXYUp>LZs$e zZxyY6?&{XeJA>X3wi;;QL}7<~tRMltSCoSTDP(URWDl@AUR~`-t#`W-X5Aqy)tQX= zi$-`E>yMxN*LhIo*D@S!=g`0Irl(YF3_OU$I`;`9yQcc@OvWAzH5MaGF!c4=5D-d| zfSdu+^+vxv#|Yx(&x8e6t12&&Q{%~OHTh4-sRhloOokzX51dEm?1))w8e>*CJV#ZdUj>CK(dz%Z zK<@dk@FFU?a6k2DeRC+R3>8N~NHj&Sw`0YNe?aW}c_wT%KA3F}Qz$B$J<7KEn_!cH zbOjkF`X4T6o~0X2(22se&k>%4G{2x=e+rWvzlg}t#>3^#**+Rw8J&E#^W7gt$BnM= zmCs-CxUz5lbmku$oCIgMN*;;Sl92BF*~Vh9tX{N(Fy?i)o0eva6Ulo*eMjD_oU-~l zuh*7t?!v0Vpb*U#DKl80&7W?n4G$J_Ui)P~qCrD@US5SrPP6x(e_z{M8*L+<3DdJ{ zq$a}G!MJI-7OMswYCaCq84uL2P?SV2>uJb`kE6_=To&HWHZbN_GzeExoJHry&t;_s z)(T5qPBAxxnrd1=!GHW>TcN|Ci7*M3?E%xAvw>ELl7sJ|jn!_+<5Zex>0X|v&J`KU z>)0e3-%=Hd;vIdp?EQJPChgEc^Uf2Isav}=y{DiLYxc4w)9QhpSi;|~wQ|q?Q=K_7 zos1vEg%yt@yWJnbkea#5fXvB)5x<=2r15b*pL6-;XAWrNemJ7;0<&{ZsNHeRc!RO} ztmwR~AsBm^xEyNwyWAh+{?EKa_ME}{;;L~&I@XX2hG~Y_w$D7(PQ`)`YOURsf!v^7 z_wiL<%3kEzt<|Z_xP@f=_G~9`ZbLJon^cM!8Sd=q_^bV*qQ09}8{fEyGQZvnOxA$w zq0LK6by>@-LAi0BR3@YLdO-#K@2H_&Aq?taGwOh<=l~%V1E&NHa5Idd*XoK5k)k>A zH>#zBX`IXRA1r8pR+BvW<$!!|8#pS6(x^cH9rVo;%u*eAC^VhD6z)=(K4ykrApg=Y zDu^7|D=7ji*`3!MFZOs?+V99f5W?3d|9C^T^?oL{?vTGj^tIQ<)-55Hy45hgsfJ}$ z*VWTL$uB3D^e=ViUY5M{MA^kiANf5c(X4eYCLu}p3>@M_cFTIJe(t6u?Kl(D832du zDt(fr2j>i*_sL2uP$zNuKWqf2|Km|t;4sH*GdccJNzl;IW_E$~yj9~sSSMi5svnDj zy4(SaOp2?0^=>as|D{|D7ai`eXxro7wjdST`ZEY&$7xG5yv8?Cg%)=Z^cPTIdGE#X z0X?%0_$Y(O&(G~P0P%>l@goDC^KhCd*`l7Q}{zpb%A3l zzQF3i$Sg<~Vl&4r9G}_dhP!zVv z-5#x)abf5n!-c^J3YJ+5a^BM9#l?WvtX1{STh44WbY68AwYXt;+59v+z3J(<)0i4l z7OaGK`~g3`MC@&`{5MK!JoGYCWOC5KCle+$V<3L-dz^Z5-kt z)bm6exTp9t7;tbEp<;ZmjhOE`u0hPxf0>dRNtQ$tiD4zT`uw8W8LS6e^%QbvO!dX2 zlcfZ0&3{qAo>R-OWtn%DB&o5RpC*S!oqNC96>-dqSix&Wq$9=EQpyXFbhFyz^Tf|UcK|Vo<^xesb3tZ8cxvV zFpB3Bx>8O$VodLgbRpK)T|3FfLL((7-+O)S(lg=&P5Z!Y6^MKrCz|k$tVoIA8bC}K zGKW42fPPviEFJmirXG;2Qx4I<)OKTnA7p9FrFBu@-lC z*FbT1cMY1{ywA7p@2vbt*4g{anLV?I0G=;THzI9P>AUbiUCkyiQ@M%QJ=h9|q4}@T z*2r^qf@)mj1ErKDE9T@Qby@tM1G+}?1D~Je1vM|Z=lcyaosW>p z4m(sVx-Nb=vG5tMMe)vi^yq`Fb%+1BuvYKK*ggbc%l)WCFXetw~(3T(N6w=HJL6&w{ReCaJJ4ikQs>kDRy&9T<6{K?qOg3 z!^B0L1?Gn{@ZZX?n(5z;sRK6-L$U{64jEviG@lKfmD7L%VZNqst_8dGSL39_uqd46 zA!ggeJ*K1FW?(u3B8~xkj)=3`%pupVjX0jwMN>t?r1C~hefuCz(J0-)O$yG0@IXxH z&?X!a5!CaeRgm=W&%6O7FXj%G8X?ggAFVvL!__a7h(=po}*&Cqj9yxw%?#E>+u@jk-7X83OBCYQA%`DR-tw zW?i@XKk7=czV>upIts zf^cfEE0hM@U6lrtQ{!KpC4us?a~V_^Vv$;jy@VRB7V#*bjF*ZER8zjB`PMTrDx+7S zd}PoL=ig#cR_g>EKtb8cJ_p`gf~MS>H`^jgL#u!XPe(vrTWf-%s$c1c3*qu`$G!<* zAIfBLVOuITReyc_A@G}u<#Xp70V{Hq1-o{i=0>HQO^y4w4zhg_mBg0~8eM`~8%t)- zlq~AhZRan4^b$f@e6_E&5Owi(OVEZqRIc6B!@QIwEv#y&^6&mRJ9s6lLTH z>^SLj%3k^QePQ8?oj7wR3okHknW!f#r^edG1#|hjE12g)t$m}fG`(N>I@0qeO>!+} z_~d4LTCzbo&k%tTbbBweNO@TQiZ8!=-@7+Q4C$1=z;S8NBCAGxijSP zcNG-*6?IWoq(S_m{+!s{C&jHuM<3oYWwGXT&%SZRB8ZWo>k+7condUzO~t&)2#}$V zjmHhvuVXxqqH0^|CoYhm31mY$YHt$ffRE88qW0qM0vKFOh#gnP$eQLz*?nB^)TjhC zX%|@ci^-G8eXij~8usWVjxSQxK741q!DLyWU>+RTYc!7B8?N!dZ^%YY4KME2i!}ytRg8B#k1; z?eWk@YEOR;3d6gfI0!#`IK9jENd5A6G0te#lup0$U3n& zT;5aQK!li8pSiG^p>9YGK7i}n_a;~`yHNBi-JzXrvRn%2(jsZ;ptUd^cmTudsse%a zTvGd?iR0eW7hTc^fxpR}U*^65wQ|)8%S(ux7J`pmDsOCgaHCP2|G2gqyY6Sr|K#B| zw@8bQ4Q$H{eC`_0E8LopD8gUa4ba^QQB3)nE#77q*ZxnyV9>EhI}c}-LNXgImYV&h zt$O?dZjGp7!;-8n+V&^bwq$o!?R+u2`VH6$8yurIkSw=0z%|jsxc)$Ec3Xfzih}9D zJ>6xyVU}vfhPx9Llbrn{VeouyT#+XYCw$d;?a>>I&cyC2zu|bI<#3$D-XwpEjTS5# zbT!0I6Dn9x7ow7HSCYL`_3uT$ZP_sr2{Di|GhM?gTu$n#EgHF zIQR@9oQJ^sJ1TQN%rJr#aw#bnfu;I!7B)ZEOcCSfz=)`4;k6#T$M)l@)M5j#*NuyY zzzTZD&!%X-ct7CMqjC}I#+l-CC6H^<=roJbb%{IXm))xOvqr==tQ#G_EVP3Zw*)C5 zk?vHAl4+dI1zG_RS`-nz1F_i>29-Z3zqCHa{e0m=9=4@hj|=Kkup2iY8rL-iIsOss z80b*^yEF}YzY45f+Ay8NV0A`s`0%TThca~IEB(tqW!v-4>!1o9Xa->xmAb)J)BE!! ztncY$;%r2jDMFnGRLf$^W|;k3f4wAWs@vt$Ks48>LU6!H1Oo!CXnBjsVlO$%LP3}5 z%Q{`y?$%_EC`k_pKrk5B9h@C2)zd7Ogewm9Cg$ScXcsj zNn!C9tARw5gbkj6?KWz<^my}7n`P{-CJmix&KcgE z=vtq+V(|?Ja7uLHw{v5yWZbVmAga>rq^fO&7!rp3k)u&|vrP;eBpBRn+xI9sLS*^2 zkhm!TM-VPjGqN58Ykhb(5v7pvB+f$+Cx?0P!{XDcvNCJq1<295g}Bg(*J9{Y)d2t3 zPC;&Wyoi6ZgO`y5ER|m)j+ABi&S4+iYd#FmOZR*3K zS%NCo-vF;ymq-jaw6lM>Rs3m)GpTgA%!UCLHyQF&+;)jfpDmtW6HQ-@rYGn)HUu!e?#?q# z$XkL$bQK=tI(ci`qix$y6lOPWTNV9dh(B?+lnasqb{iSCoPY-AB$N}h)?RpbGP@lOvD9c1YL*;x<4Au(vPc1!n6+>+il5&78 z?JrBt+eA?++yTl&2GZLk$StG)KtS0&`u%g~$n>4u6!PX61lsU@TI+c??CkEAmb<=x zOFTOA)m$J9zdHWRu4@XTNE^}Tkz)g_+K&q#SH9@RYMC)iArFhOlzu;E@8Dt9^Z$+V zbA#62ERCx_Gt#FH8~#UbR01cJ{rxC5h&iQb84GF6@uC1VNDe})sPQW_A1C1PBkXLU zW)3>4fKPn^Jmr=FGVH)96`_e2++WmiS3tQjD-R4PBSoEtGJO4o^k#o>5Cu$IoT_#; zh=QmMlEcGh4rNAwz$CMK(nxd`*wVonz~mhy71^3_h2$1`BFP3v5@F2Z4_%Zxp5b?wR7_4Q~e#W@JA;$?Y& zO1O(!to6sGlof5S!pkTkap)M~)pO#W>y-U-f??|%^S^>U8ih9P3cI~`^5-)pH>bNc z2n;-qD8wa6b1a`eB?S`#6F(W5${8b2mz6jL@BcZ!+vFic&O%PUv%0beD&paekw=T& zOyEqiv%YEX9QhF2_)YWb8>*6{45{fC2>U;qaIodtEnG!EidgQ7#VHD^Svi2pVb*pwYGw(D=9Edq8Yq%3G4+TG^Jd1pDU`!nHFO`9!+! z>CE!pN5^cvNPF5u;Ta*$;DHCyz;XNZo%YQ>a3cC2Q__i0Dcbp};nxALa(VI=H6*xtCl)bd@daXp#d4s7eIy zg=)o8O0w9tiwxR#T_UJJRz-{%fEx^-64!y(RtOj%ekr>K3DvX&6=cPDVp2VtvuH=# z;+fip2|s=bb=A=Ovd2^hsTacOQ-djq)?r295=~S zIenbBV-+t?WuF{m7-u+40K}^Cj&d3%_+)WpUN7joyZBT`Yr*_#Qjx9KKBh_*VP&=w z{jHQt<-GV$SBNe0O0Wi8l+Or2W=Oq%&|qGHHac1{GbN2wkl+4b-?`pE`A_$iLMP&D zg~7eK1Lgj2hdXDo;;!_-t#9ouVzx_1TvXK+?1asZffZ6@_UB1zUCM8m=n*|9xQZ!q ztnX6Zxtpip=Hn-MsxKjWQ>T0#&DG0fFU#J1NRdi%D$mz+*rqDsv5~OUYhw?VkiVO} z;O=*HEWxH+$gbCeP@Db)C{_^^d@nrs1Po*v{2c@y#rCs6gxj$M#;=NG{7Z9qd6_M3!E$rlg!PaOtCynH8YS@_j80$k zGln-yQSsZ?!OU}0m6gZ^AME*aNn+s!qOveyDlWwF(GtCh!hA!U<6iGB3u9eTQPD!{ zwG}0$cn?D#KBThyn&>cBh7|(Y=GRymSaJEHmoIc{+>vilS^x%VTE&prt1)8L(N>pShvhCIjq^ou%fuG+@CBCtI zk89Ml>wG>D=vrsj-d@S=7151l>3(@(6_t?Kd%fzpL*S1}HM40onr=11^a~2|;u0jm zda|m6a-NhNWG>-dTFY5|!Y5lp1!uV%z;h*L`M7ll*4vFj^Voe%s#L zfOyS<-T+@6@H;)o&e@pjqH%^&xmStQ$h_;myXAE@XZi6T!7ZG9cxX@_GeEy=)fJO@ z9Qq@a5|CbQF3@@}iZ-@DH+f3hsqu z6z_kB*uACl6w)2r*gn$Y;B3#IcF8fL(@-E!TKdPQOj(fcpwOsYY4da#rxc1>GrXE@ zG1S=4n3)u5r)L=fx`{XWZ zmbjf3vE)O-al4RRz*%BPo^Sqk5JKxgr0FM=Dq-AYv@SXl;X;f2V|LLL()w9ys7#er z`PV|*(f85M^_fj5B)1Clyyj`^EtdpOZPN#UA3nv_HLL6j+jR*uRJ+=1f>*~aKK>Qp z3LMbUi|93gaCyF#ajTZPdqNqS*(22D6EbtJJI@~xVPJ)~P50+4dNaDag6hG^5%K-6 zI?%X=1>Ml0gOpX50LR%JRg!jW#n}p@)`g7Y4AGNRo2VR96~6k6K*kbFfKRmZMs=JM zrTw!ZVco_9^AR3D7VW@OAUT#0M)!0~5yc^I_pd{Qwe}s4E;IcMuH4T+{pn2cLmh^{ zobMyTf|FH=U%NTvJ;wDEWJ9ShyCBy)@En;5Ejq^EO_x}^-!EI9PS0wt6HMRWl9M(3 zf`xaUnY~K+tkU(DWRPV15=V?seNtgc*ehmQ540G*RS3+4Q7LWC!8GAj2E2- z)3VTi{0NE(%tCABSJvj5@<&*e9B3p21nfM5f19v@#NkJ0#-+CZNw04OxSZL_z@wPe zmk5n~9qf~(#4sOyL=Xs{DrX&&BIVibK2cv|;(4rJxWO9XYeiJXwc@|`bVxeR~|E)nP+lf;;Y%B!KjBTtE^k15;RoKJd!PX$lQS0CA;TvK>j{B*~oRwa}KtuMm z_5$Rfym`F4iWEn0mh}D)ajk(9fD>Dyb1Mn-uXG>fzI~B6dPnX$)to8D=@7YN9v7^4aPmnaZB6dY8iDCRrir$>p4Ih-0 zc2%0^1YxTHGSTfQRIu;E$>(*N_6G;?8@liimY37=vC)@UGf|Jd@!hJiEFK} zeyxqO@PK~m^4KNeQwqv6#QTRf!GmaXOM>Uc{Bf)bkq{OEUPj^D4?ZNpqx%O}L-#JD zn~fLt?$^sTi&k^DQn2)WZMhr^T*wvnRDp5M^!ccg@Hesj4wK{%0Zm)y?vl~di6S%x z^q2wI%!lx~XZ$mJE0JXJ%i*?7N4(zcc{~l4PrBM1_$UM2vNpc*T@^7YrW$2*M@B7d zLDy?GttPsnVxl`IH#i02fcxJ&@=j9rBGYH}Q7(>1C+QV}XnMT6hjPxO|HiP1%W77x z+jyr!NjmU?el1_NcKt_;%z7{$gKpcPZ?WEDD6qJ-)!{HML_!I!OD@eNw zc3gu$e5d{S)~5muJLapJ9_uicn=#P)MfKOsY(Td|STNIU2Q!Qn@j+#myFx*o4 z3(>=#E-4E4@__*A>!82$Kqvo4mr>7vx)b8J#9D9UoI#YNxAmZw*N^WYnDrzDYgVg} z;AFoPy98J}_dge}#5?PEWWXQq5p5%UOl~f=D~@Q4BNmH^VUx%S<=l#Pw!@ z@}}nB`|?iXdID*z6w?q*G%QT_#we^wn~uxYd2{*Uu)&uMTi`|>{7X3}*EEmc>aT2K zvkUVZJzaYStk0z!TEZsV8JX{%^do7(RZzKX(Vzx1~o^m%imRNDR zUz<~p|8?=orxrKIofQr3MDfYzL)XvV#wAMDr~F}-8vVuc$zsDxtLD}AYwy>GmVNRf z1LMq#g5J_m^!nB6JHRx_eh*OKu)nF@>+`9GrLhaY!kOi%=S^hrU(}Ddfis4fM0Yn` z`J8_K{(Tb@tl~j$$PH7p|89lNi$~RghyzPZu}3et7c=#rE3fsnKro~}tUW&Zn8d&I z%4%X*aHwgb?a8W_2m~-f-WWr|O~GTFH@+bt-zV?@D60WyG05vSB z4cxd5HpW42Lf#;|b7fn*Tu7xnq6LNXc(cxH88E8omnBv?Q5RQY4k+@X`gxKz*4Mvu zMPHe~)^5%hE9m9;o1fwORc!_U_B|sGCORjka}x^zU7>oBoVTF$fTM>DB(VQ|GF7ZF z!rG#!MzOkmaqYDc%5OaQeY{$^p^{Nzsb_#=T~z0*CrNQznc2C$FMAS}eUOQ`Wy{l{4vYvcNZmtvEd|xYO7o@%I zxO^`Hf8Y3GNH4Kf4Myo2y?t&8x&#B8o_INH3Ub_d0<5nvdQJ)qSMY*L7bG;%#39WL z9XA!WtI$(#!mqHB`Ff;>qteV6JD?b$=!~QBF_S-&58=hKYBj&d(Kyp#S~Og#xc}_= z?z#$fqxJyQc~N#dsvKbI`C&nJ|G4#{L+@3Z`}w60Bxg(K@14infcbMcbDd$%MC-;B z924L!eJjD#LMJOxVNnjzYM*+=Z}!(M+Bzx%eMF7pG|+;u8d{5vo#aE%y;&Ln^N=(E8aS3y7Pv(q*nRZ;BBQH zV*aezP?le)V{w81dyh(dy+n970eGAgPlk+6+9@X3H`FtzkBVu08if2t*!3**_w|N% zyYPr*S)7Q^)F^Q43c8>&H#A=Z)M*lsCo3G!=)ow>kZW_nu4%gJ4*Cfrqgm|)wp)(m z!=|}A%GptMCp%{Cymx?}PAh8GZ!xx?Pe>S|t@YhR$#2|(dh5xl;54c|#Vn`e_I6<5 z!`=02r%sf72&2$JW_r0w<6Mxl2h;^v9iIhp)paUj8g;uL5jfkdVa732X&|4^&1GNn z^6x*bcIhJq-c?=Ch8c7)mcHh9aL!izM&Ws8mVuXp&0hN!i3hx4`na%>didZKw<8ed zRsK_{&nCi?nCoW zB%93~WSki!4iGdD%(HzrSpSyLvtFMxi>D@kYDZ@u5~J>5*-LU$iW2nq{t5&v{!A!e z4)ZDd?#~E-J=qk(xMptxA^pzq$v-$sZfzQu3gz_6L7|-bzLEOZI4^qJf`ekruG#9S zNG*@yFJn&ure1kp#Zu&3Q^@QyYisBnSic7Fj5$6IjRLBIpPUt!J^!smE>fl%ca06m z=75ye?R&R9-#jPyubpNdcp6c7C%b+0zW|T7f^! z62q+7gea2hy5-U6hgHSu{+94?wrM{Ah$luP|E?YaL{PsD%K~zj^FG&1@&1#TiZ?pWZ*1*XeN|}Z&F}kHJ137Cj(5}@(Tw4#2 zDME;{vR*}`FEP>XkK3=8Y#$pRGnF;+x2s?hG_xgk{6Fr+_y4#Tdb}(|9x9=;?B2Q8 ztk7aY`Xx{ccGj^1s$HGeHiH}j0=hPMjnVO(YtM#S|od?(hIYyRN(6R8rX*+-Q8`T-d7ZEq*` z?m3Y=+VBDEL!x!-Qiyu4I;Y+efuY`l4*prE1$=F+xr^at!bJ5c60CF}$0UZfBEvs8 zY~W&Zmal7rB+r1D$E-pM$~?^mN=J&95-uX{N*<{Dy#;=}W&1hl=$_Y#Tg&<^Ikvp^ zF}G4TR7K)BK063a=89>G!~CZ;17vYmtTl!zS;;a4Ns_~j^Vx_`XbsP#DMOZq7dP>+ zCxZsb+q*-!%dy~&OV^UssxviFUcGYT_d6gUg(Ub zPXPFD%mZa-l6-PFRgdGND>JZ-QEchjKNfe^UcV<;FMy{_L_VH(IcIZPgs>MZJQxa2 zXiw>Ve=jSbMyTp}EclLNhY2}4HMG_0sLe#zzEXL!#y-c@xZETKE(ZtvzH>#x!?+!d z2e@|OZ!h5sxA~ixu+FYGD;Hx*Z{`Agp>omgwN2)*vxK83ElzD2 zW?zZ1{rPNZHJM&Rc}n5Jc>F3XsAf)<>m(2V80l`)VdYyW&u-9-#M%lgLAgcXey_sd zJp{Nod}*y_b$S2}6VDXsWrXeB;KU5zc&f7%5Q>V6?dbNrdP=s<>4sQ` z;V7eBr)QVTbgq@clFBYs28&N(jQ|{9}3Ibre!y^3LiCTCIciJ)W)6*?V5BSw|j}vmsdEEo4=!xvTrUbk@PPXmb?BGDRBVZ#p zJF{v!gxcpBPYr!fVC|~5k?X(ZYV~1nXm&j#@HD=8x{fskpA_ucO1zTDBE;;4D+Ig2 z^;8M< zq>qlVN1EwAFr>LLK3n_f+}gwxc2TAZ|7p{i-|Ac@DB9v-?d)UyD+jBer>S^_!26}2 zRF28((T#7wTOhs5DI(SPLVBEP)K7kbKz-A#g$;5OTB5V)ti=>Q8%6(F*PN|DxfhM} zp5xRU!NO$ODABEPdJLnn%}&0FTC1 zHXVkW<3)v7U@Xx+5Lk4Rh^MgzqL#cNy6cHxy!~N8AI}EX8)M|Bh>})7EyYh3REiRW z^z{VvM4M%N3SNOz{ZH_l>OFjW$|+)}7Ucy(R6MTj0+(D-;rnX^1TjK~?vAMN8s^01 z&-wqDU;U3p;{0s})##I2O&BLoayFmrlFLhQ^u5AP;PAp|I_K9=dwFPu5zOh5j{1K{ zegw(Gr|iF!?t)y@XdEt*5)y;QwVGPaEE6oQJ!crJJqMmW`c57qxiO!-^se7QTYJy% zpF|~~r#|F`RaLb!C}2pymUNl{odNu6dsJU*j6^1RNL)k|(BkrnwU#Ty_95tf0q7<~ zZZ>xfy$^6h9&|(ExRJmUkW)xl$h#{T17`c?1eSppMdDS~P-2<=q!e9lSJsI?{SPb~ z#h^Fsb$>2l@%lf@d?b~-i;$eQo!G+3tn^!x%L5arOZflZqB{+dpLo-S@#?teUmM2T zEXNJy!}~e%9TR2s;M|_z17htrzNBOkp2&%Qxpf8a2*MzQJeEPwd)^K>xsL`X&MFFc zF(>G_3e451U=(Er_Gws$&?kBHzXZ@=)VXdzFNIx=kOx+1K2AtvO*a_TCi*O3Xk8#z z-PUO>(vJKA*Cab$nrrJQ8uO&WC4YMqgP^K?r3%{d*91hx#Sb&(%si~8huVZZ;Y%A^ z8L^uxVIdxl9S08&l{DNf+e1FRg!Xkn8-!8(1nlv0FgBKJNodR@ z9aMKO`aW=7uN>BYk?LVQzsCe$e3GiXssJIT7;3mLlsJ%k7rj|U_JTWtD}FjzZ#7=6 zeL7Pz9=ku<$^hPPzt$vKUzopt3xEkFF#MrI$X>+za0`@8d!8VpEcI&PhRBX1gWx zl={{aA9Uv#9d?F!Ohe=u5otasCI={sA2gB2kU^Ac8WwNP0r91XAWP%G$g=%lXBu{^z3I>MXn@bp`XkC&EI}puxZ|9YrIyMnVO?&Ub zW>>g!Ky%`kqpY;R6pFt<9vodKK=n<29fM0hMRp3g{w*G{D&PMqyxCCD+8MU!r#!yX zc|)=@f`8?gMtyARRv1FG?>}KkA}2&_;R%x;VV(=gz!~Qe#0vATX|a*(Wnr;~WZ^I@ zY;9)hdzAZWf+7h-&1W5P*N^%wsR+0aRH@l-qNW751jRp#M&Y)`|4lLTQ>ZXxgu{@k z1c3HP&ZC(W7jn#psj}@}YJM0S?rxmGfXPwDl7BjFdf~i=0~H;p-`is!ck~pjAE)Ac zt&luU&yckRx3F@MsH=!l-rCx25mGYFnZ=sHKS?%C2qH=|#To&AL~{6+OkRniAB<&u zi_WAt>{gOdV=dxgJtOu*0Fi6M0waDJzh^&h18z?C$5N>0CEw8ZyRBsbJgO>pn6J#Q z8u+D$&m!BxpX9ytC@lKeol_;}2UdfzKm!A?$;nuL0RjC3d+^_4prb?BvO5CEM$e1m z+gZr_QfuzC9|SCxR`&U=)u(UUc5VyVjJY2PZu!gP$@CFF@0Z%(Q*)o55}4s2JQx8k zq}LU*wZV}qiS2_20u8KWKgdufR}K^kFP#ku`>a`K{O!=m4jBF3^X;pKeZkTO?irX5 z^6Vi3t)HBb1ju90vuoWHMzRLn+Enu*8D{>i_e^Os%xqSqnN z%Fz|->fY^nk^mQ6A3@%LHxEmudpA2MSR=F)6yJoz$)O|WNRS554*;TQXT!c}SggrJ zJ8TwSxlL37&>7Q(%szDnE;BM{D=^^F2#>wTxg#~!oZtfE#7R)O`)IBm8*%Qb@Wyg} ziuz=SlQg%Puk}At{%Xy3b-TwFgZT4reXyH@$+?sf9CVl99bPb{NZE)Bj1cs6aYo=n zm+;QllEPnmXAe6R0=yd%_0g2^Q;vJC*K9!m1C2h{O(M=3zfsv$kb@b6^5`y^wJ2lX zA7Ck0Rx4HfXARlV(he(7^0Y;4!>(OB_RyHhb+RC*=SqA%>_Qki?sQL z<)k>|kLhaauIP0(^hxs-)@IH)_+O2`)PMfHt5NPb1+x0JRFt3c%!zGsao&=HcQ8P; zYh_@W(;DMoNGI~WT%yM_!d=U5$&_HadKV$st>A_DvVfowTwdp+bAYy*xK8WBcdxqg z?u%A$X|b|^WM!kWx4s?EwPLHrX#qz@6St?T&=B8SYwn^BYH73RaMD}CIBS;o@mz{S z-eBBiOhP9i{tIQDgP>_YPp7t~d(RtqvIu2Mx^GjEx0a_&$ZbzQ%(iie>3K8@J z0EVF%L6v>NPT;#vtuyAYRs}dT1$Q}TRaRu4YW6QY{7NaNq~7bqly?G+sc~cz#y*7T zH?_4$((fCEQ2K;5xzsxnMo{O$2^zthi5uEy$B`dwqB-r<$24d;Pd~ zULc=eDKkHC(Y70f+8Zoz9zV3#QJaq*hSbG$xfzjE@6`qLl$l5oFyJ8Z zR}<^`UB>g4TX7V0=&K?W8T?`j;RnA%&bIb4d*0~5(122O3CIxTUPVE0TtUb?fA`xh zYbRt^3_6vL85vPvi=hW~n@-z8(U+hAGK`i+e)Li`DmZ-`wv7?kg^uT$lZBVn+<%y%a4;nttYIFS z*`}uI&UN1Eiv}}tZ>D~D(pCtvaXIKyk{-MG7>>Y8@8LXyGP&Ai751sj#+K38?FH1@ zb_jaz($fpt5?%Bc8);T!z}3>L@P&6S@W04mSO?6~xVv0Aa!xbu`w9{pDdR5sHEy`#AqcKXTn7y2wMzDvSA?_ffY5Wgasf)xpsQoq;V6UuU&~wPO zB`;7%C!R_51g95CD9F>4AkQ`7?=;)owSM^_ivMnM|Mdca4&8O6I}ljH(M^EK!Eha$ znemM6-AThzuK=^$uW9BOPH$cD_65SFuck{qQ=WN0Fq%uW>xw z+%0wv#4Kebix=_U)yvha&E6BS&DKm_Y+TvcI&3_-wSRYO$*Hh&)oY$cT){XYcM|Uy z;MX3o<68)L3qny-ru)At@&jFVQIZhCT}6L0xEqWmdHNVHi^ekUprhfDxmJ}Gn`|YN zpTkY*jN3A{wiV2}p6_n#sX{PVTkYtdb|cK+x%9P7RL!pdMKf?V=L^*#R!Al>XPB8V z+e0PYVeFpl#Hi*~qrlY)A%d{0NI-MG{R?dXj%E85iov?LTJ z{-^%c;2fg%P^!H?FBRk?go}1n3YEWP-WpK*TrjM=J9eL^=s|*Ix=8>hv)enVX+pR? zoQ|t^`&52w_Uw&t@(&&JM@F!GEQ=U_@g8o`OTA&`xPyr?Bb-yBa0T(>N3EK(67d9v z>&hD%Ja={}yGF|fj06rq@g(v8I8-;0uHBI5wVt7^x2Y|lZ=E==eJkyz)qETK*F z`=YnK+Alb`uiZsT1QE(C^P=lO83>%SLo-&8f%M)}OBgp{BDa~q$HA4s6R#*7r#QpY zBD(V(_9FnmJvmJB3sSr#f7%|$)h)}ge!ZnoYpaoNWhQHL8=@ZuP-VUFR~x+)K5S!5 za)p}HS@hXM{6oML+n{=`B9F9>(^c{^ialfC;&5ZNof`wXdXmhBN9tN2pxo>HSwFYY zwt7^!H*u! z=QYgqz-0QL(*ocba@E>ob-PQd-M`n9Ul8exzql9ckM>}02nkS&ZeR!g%SNoj?IY;BIi znT?MAD-00p|0$34-gC@-Gx{`}ggkcI^o!wIKIi;S!6bs;b3l|3`9ob~64R+xduQ-) zMB9Dl*B)jDSAtH@z?|uVe_av+50nK(^G0-B{mi?DZXNJX92v~qlOU7|?+&F7#4_cm zuRBJPV%arJcsr6F{+DB4XNGot{e+FMLiN`#0MI|ThgW?Te|NG!(&|iRaue^`1HlY6 z9}VR?aD@SqC_Ffwq2}O0o^pCV$PRqzk~mdE6#5^`68Fmr9F33|x!&;I0*ils+=~iD zat+J-yXz(-Ez5N@=xy9}*;1|PekBg-sX(gJ9ou(}*@G?1)a~rf2iO`DtKC9?C3{>I zY&uEHO^&{TUNB0Zk*OYE7cU4bE%`r=Gsz269XPVZoBxq5$Gx=-U&l+H(Y{9ob?xQt z(HuHxEjt*VqW=k)CkOHDMPTl)Z4{vyKok@9$G~>l%^R12QC0alc?+jZg7wNjtdWx5 zTT$M$Smw7Dk~o$hbi~wGHHr@bvR~mKC|g%fq{IKrMEuVp$->@jB`|TesY5K9(Poi$ zTV-R9VpB?wlzP>8UP|QmLpp>z7#W(Xh3#)1Ibxu|KFpfDmgM^71!}r@>Cw;A(?*!s zfkAdN)&=tKHr?5U%2~KR!zN>4^_urJS3QB}6qeULHjQgop?~9VAbqQ5B#j>W==8;6h!%29+Y$Rl3!7& zdgq5*6~jYIc?~rInhZz9sB$z zzwG!A&``&hcx#6mdhAYzqdK?PpTteGTB?2K<_fCq74H2G2%IdoVIp(jZ>NT#>oYQQ zoRzatZ9+2o*n2}>Sv)axLy+B=81wf&<~T$WWEeTt}V}=i_5x%8p#q@#00t#L!k}s^}Q6d#cy8!R$oE z+o9jkDbw^4Pt9?3>qy4fyiU?}?vph;TXa<}AO1w~PJHDb0*?A{wngaV%Y}5A+}z&A z&rL8MYX&_JWeO$2FM3D(-GzEAVS>*3W8H$vV~#X(07j;?uEM3qdz+CJ2*TE0f>JIh zvXEGEp@3;?bzVGuxypTR80Z>UB5nyh;RXhHf|pag21SObcO*qZ6niVe2hM|Rz!o4~ zpX3-V|#!ibW~6BKT_APgGueeRp2WFMgzCI0#? z;@NgnJH%5YPlmEIXrF7Oby}#dmjo-|iEjp3#Cp>1eA_J3BnqZ}=+Ye4Px(V>iMwQZ zj&DG_imsDN+KKr|^mVa8)RBV3?IzE!F?ADO5hRy&Ls^>fv5>MDTo~wFw%IxAINX{< zZ@9c`w}3kU**g;%8rh(aFril%GXzNzJD=d8`jvHdsHOD1O_gmCBjNps_bwQk7EC^( zWcg=7WS8+rEh`%>QR_p@Dy_Hn@y39V8M*xF(SSJ=gn;jEBlm7Xv9>~bUAx~goO1j? z(02n=1yJWgmY+|N%BzpC#+Mwl_aevrOZGg`O>3!H{4jt6Fu$Y;mECU#h`nSVQYj@p z4pKO5I?8w9RpFz^bnty#i52{Pn&{|GjCahRjDWR)Hto@Yfjk!!90|;h6mUk<8Y0LD z0@2k`+z{NA0wY>8JwN54-sm!v^11M zHrDZD+^=7~lBxV~4|xfr5Zw8G1i14!k0*#GK`Rjjg{p8)RNi)q`4d9i0qpl65WCrG z%fCSRHew!}1bkwW7fN-zHEVLWZyNG}_tZ<|W`3+kfF2j`+}q>&|Jw z^KRd6`EUL&)UN8*Qvw=H(Ica z#(9yZEf{O<<~giRo`pGkB!l0r&;;sSqWLeMaeF<4pqlWVy%8)ZPXXmDHchzt@}2;n zEdyam2I4LSJS$P2Tn+@dOhSKeQLo%a^mM)}hWj-NX8303t(Mx|3q#3!*T{GL26g7? zG#G=ISB!1w+GRR*#Z~^*G*6Vqdiy(nTn5o^XhmWn8RKs1?63?sxL9J-iUb7ZY}+fd zEV)#t3YStr9Ff? z!EQ@@nC5d`{8mBbP;*QZS1vLVt?$vwb9DWiijK~W>wzit5irXe%ikeLsUJWU0yO0H zk;gz$Y1UUPd%=ZcK}UHY9mxvgrkT8y+KH{7Atp-U^~I5sXN9bIj3xVnequ726P=EF zD*08+z)q+&iTW@5eVE!RT~+uD>ta>LKRM9^)qyn?lJ}@$AGB=27z{>+qO|Rdr|Hd5 z8)z~YN4xlA%c}@|_rV~W^y=Q=^;E6gXU?s;Zu1;<>9TCw^=Q`)TqdOC=iF#Smwf_a z*|52T#JiJ3&{cOYk!k0MV9z^yHv|m7DIswrd@x@{7zZ-KdrjY2WII1XvQ=A&(WF0ae9Rv3pIi!Rv1Ua3MNI zR!zcqgYH)n8Yq&D1d4}OM}vmmd;bmH?EV|N$>1yLDHh_IVSg@gr)I#$6#B8{zJrvT zs8o-(0&Ci%5)2`9@dk)BrFkl0JDSo(J6zgRe2^$T_UQII=A{fX82y)p?OeCgulg!n zvHd{zO7~dzM2d6j9DKHdsHzzIqHi{(k1i`Zc_v$6g%BV^PCGvo#iTlkM2b@8jx4Kb|nM{4g&hDyDX~7 zFek!e$`~~+i{V8WFq1#9#e`jSmZ+wkFC#c1F#kk<{x0-2?#>(wrV4&0zwa~&Kcw61 zc9hJaJH4(1uZ<#A`ik=k!^mh57g5raf~v^*%|w>*H$vJB|5&^deTOOSB>oid#-^6; zuo1Ap$~Uix%%(s>`WaIncHooi8RCrCM=k;Dat_*+*i5xGkc@VDrzd~QF$u#m64TbX zXR^H>8GBi{A#+E(r+D7 z1X}lv`*Sz{yzH~NwyJEe>C7_XjqBcymsK;7qA#LK>rjkv7ooDHGE zc39X&=csb%fQ-Zv-N`e_r8*bU$oJnIOWo#&Ke>Xhllq{S73IzTSpKq@x@2oJ^4wxi zEFUlZy%isrs%Y30RU%=q~cfJ%< zgqR2g@2NHmV@7o9Pg6p4wWF2CpT%UpihzJhmd!bto;;_$K8|>hxx~P~cut*o%{-X* zM;gf@<4lsWh5c7X3(#TQWl82Ish&&;y|KGkDcsGOZqpq|&{u^eIHa)eX3RXMWU|lX zX#D{dw}u{69JF_>dY<|LdqWb}aQuk%^o=<@RU+M+! ziHD?Jzbb_;iy%5Rw4mFK#2fgo&-@S*`@2;fmU60g)nTpA;*=c-g44^AB@Q@eC;G}P z3gPNK9EA3BeJJ6)VEVhaa~k=I9OeH}^^Wazc5T~sjK(vK?KHM+yRn_dPGj3iW23Qc ztHF$I+g6`>_PRg3@3Q14%p7AMV_Ua%=Q!5eQa5OH#Yrnrm>t6UJZl%R8N!aF?-ItS z79h(I7EfwjX@<7^4m)n1Ag#YgP0qEgN#;#(NrGEW*v`<~u3xBsNw2~Dgh~%N?r5km z&}^$o_}-}xj{Z@Xn~q(M&ehk5RNgJP#s9#Xv__FYoYzKz6_Qao4CL~xT8{*m%B4e+ z#CV?Jqnr z{l*p*!Cbt#w4&52*@deuoGRfJ7m)=6JCsCr%8bZ&(zfJs#c7Bth*ZSM<{D`o!jg)M z3=tqqnJ;a(u8FztJzXI|a0bj7HnsEhIqeD;x>c@R{$1JXu_4dbIocBN#s%mfnHE20 z_9`0Y7H41XoW~diD>>f#a#U4{R%>s+U|wU6t*}KWN_vUbgIwwSU<-dbVReWJeua+V zI-uK_ATeV`oe~CH`UAi0ryHp``naZp2T$*W1E|Z9O^Xa0C!?*w8T#5x7IF;GVHPQ| zOO@(9)$#NcVJDbvCLn$QM%(fg#lt|oRX5{pD@z!;V1kWn63dmh={s^8ylc@s-|md_ zy?I3kjD(S4;|OJMEHT9;lblFWsPDZd?$!S-yKR`hKD0*b-_{u$eeWPa7`_g6Ng+Jf z_U`x+Ls3nNX4ftHX=C4GiFMxm-r2`f+J@22j#LVxRXU8mbQ{B zuA4ax`8Qg5CI9=k5vzkhtdk-)6F=u>w6;kk)UIsfOX31tUow3n#>FjWSfLvulznM6 zUDR*Z2IGHO>TR~=%2ojVEiWQ5GS+|qrmO4wdnhd!x=mI~!{wUM2m5+E10VKBTtx_@ z5`1LL*&sr-D*BvI7O`jO@9v;R06N9A6q9VY(srJgCh|CmzwX7z9pul})Y*Zb+;+H* zx9N;RLnFfA5z)hZ>XtZ=VeVHT_S$ys9j>i(5PKjAxzC|XpP6&p!G*X*pK-=p@K8Yw zg!?hOY`0gnRxjPUL|(xznK{;aw2Ad(dRY>KuI|J2_zqoJ8+#zD+}e7_H4~f2ENmXK zFOjR^+Ix6bQ2V>?!|75PQ4|}+?S0sI*cMu?RD2gV*}Yo!zG5bP9swdaj+@-HxD$gs zrlG&-wi~T!y;pr86Jeu)tWbzr@sQNLwHB;eI2EHz`CMli;>-tlZ1bs`Lo!jbMdu_Z%X2yjR7oQ`;cQ-T6(H?M+GuQ*8y8 zf$CgS8>Wl`w5vJ|mPEwG$GN_qYg2aTR$3(1n!2QqD^udj!60+unq#AJlQg9G}Hx3%``hHY%`pDL` zIB3Ddj*uaSKJ0GIIapDG5-UedOvNu2peT_;0*pEbS>aP5^Nd0-?TpN2C){~+55@mJ zQZ;8TEfj8L3d4BuJuFERI3pB<=Een4dwB4)))I{zK6hZ)eHlIUmZ>eNZ>nFP&OFrp?4Ik(V5cw`VH1x3|*~ATKvyMmc9R3 z5=#NxI;FBi>c6b;=3iErB>Mt12Bojdk>m~=Jm(17wX0zAl)vOG{3!Zb&M_Gc@adC2 zgH`FLiQJ_1!3?CnL$}kl>Q;NaeDdnnAV;Ru31K}s>D6dt0kP=9pg{xy7Xz%I^C_8~lZZj-wN+D#vo1x|P(1WZ zd5+JaZ?BFzO?d}My>Y=rP9Uc~+S3k-%>J;2<{Fp#{@x=<738Pb#h9N#TL|8M+AF{8gWi0yy>I@^XrcDPu?T_iKqk!Wosq5nv;^! zbVk(d=RJ}Pn_*RRMHlv}f!!LC@Dq1>ge5*KX??{yZ&HiX1R*9pEDXGwZLe8h*7_|p?g#V;30g0;F|an({xlE9M6 zI)bOOmu)PmJwO~ps$G01^IPSqI3OIfmciz2*FAsirN33*4UpmY#!Jf)DT_FkXk^Td z7=05w_p%G+CZUGNhtQ;54Oc~6q|GBUDiM{20 zN56Q%S(_9#V4sS?0(G_30}BTFt$+d%Uqte(w6XgnX1Rci_FWeq(XgXY&3>t~2ySpg zG7wkJj!Qg0?3;jHPjm@<8zo?D(AJWz#I@zU&~6)Vj+nu-brAeTl=m8VbVT*O8|NFq zJt>GDw>~CSQ*UgxWv-(sm{bX=m}0o4NiAT|!h$*QpoA?mv7mxOqOF#K2loQ|zr!x& zzr!w97q`#q+NOsPKt*AQ1%KNim>3n@uQGP`>JcteU4-O?F*C|mYk`k+=Wm+{ia#8M7Qtv5ejO53@R;gI5u^5|YMqT``9l%BkwrM^ z?G3TrULip(U}WbCZEs?KcfI1~qG4x%0lLV2rQgMwSXvku4vA{N$Vm3ttd+A9O+(5; z_E3K|Q(H99Ti^5H6WF#e_yqN=dY^~{45#RG1*xv@uaA#v@MtDD_~b}I8%at==aHi) zg^T*Yw|82FNw^G6oVbii_k)LUjse>PT*$(mD^kE+J)ClSq4cg_4$JF? zhhE~@olwjthRL^U!+Zg#KMb7LWOA^`eUol4&u_7~5n$pz$4e2AwF8C6yzI!t$OE+Q zgnnaDR$GbGkv$SXY5#nxsF_`eyw8zt+F2Ax(20C7cM=~tmviK7_um_m3BGH8)psMv zs=riq8?Ks_GEew11?*#U#Wh-!wgK-IonQuIFKOqq>Sf~{_7Y#GJ&2V+GA1IVPuC=+ zeL>_lU6l)XQAcO)r4;KDaK<%^WPT^iImqS{e?O5!9lM;JH>+FH14HX!7+P4xKImzx zvN{Udf5sUb+jRaGu}Ke|L(;&XpK}4ne@4gMy?LcjTEA7V;O!d^+KI!i$hG=@{t6Rl zhQBUlTyZt?y~1-^b@|8%U0eZn3H%EyifGPSw8Oq;p~xa~SYgr=7m0}$U%kbKdZ(Xn zT<*uYg0U{yzF=TrJc$79kprN@Y&$k z1%ay)<(<>{w%@M5w0^ekQAC@jpB;`Y&zKO19HcK}j0@N5QwexK`;Q!1yzd?fjuxWJnnE8DFyag@!5TSalxLlD@^Upy1=3BD|!wSGvY9CCJW ziB9uppQAgRGwmfO0|SGjqK^|ca9~Znhg?qJDX>;@LSY(vi;GmfjI&uDC7|D zgV0|p-;wJK01(RCwfF$y5-iHmtWyUk3@?hdBLd4AXefeEs8j+%|NYEfh{V4SXuZKi zSHClK5Ys?bxR@FxeC{9#C14`#b%;-^{muTqLq~i z@AkS&FY*@GGFwMcqlk8d>U&RFCANo7YTG7+29irOxrX>_kPU|1`dRl@tbQkedQgee z4CjxVjfU=|5_&)mgV9zb{g!~wz{B^gTI%u_6it8dTOAIC(GB8G&ar9zd1}V7G&8x+ z7uV-v}7HXCBhDWY6*??Fb!rK|55HB_`?(G` zPJ=-tEelL_&@6(93LAQD#dqMNW>`Yn^1X}m@b&EPIHJ=1uN{HYK9acYtXIjcW1GIx z;+?Pn?Cka3nwa>QiahMf z4^nwqc|9hU1K5#f3^D#dDC7EIqx_4%emaqZY=qlD#a(ujp5jNsF{3O3S9ZAruy(#o z%pP=0cwjY508>CRO1(yzX9u5ci;r}{Nq$7yD8C;i`r40pc#ydP?Aqrte)%ej-;m6Z z?u7v!>uYbBPvhb(l9-M^lpQ(g5F;HgRY1zTPWF=of{G2nR{=M zaQc(M-Zvrco|N8D&y_q$ap}%O&)r!h^p8TN#Ma%$K=PH{=WYq#4j?DsMi=m}_ELtl^)xKgs|( zKO3%3t-H3q4tHH*&Pb66;qED)wkHsEB9X!NxmKv2{P@Ftgjv&}%)rX`sE4e39R;UE z#6gl@qOC;ocyf|SqCvj}dz6`<;A3rj;4DgI@hfJ*Jk!&;1l{~W7klX;^0pq&=I(Wp zn;EUdbW}> z8Ny`H`(}a6#|oEos|qCQiP$; zlXQP)P%m11QfaD?aXc$fGB2NXUMhd4#YatCdi!8qbNH8AD*j(}iT}86s*S{>WuFTN zb)FQ=f4W~O>YjlzaV2vN;j~zaLNU)@6Y9(KkbbLGYjwrd$T=QmF=K9JqVQywW$HMN z5(1+qv2{k61=X5vD{gWATW&Q!gC^!qG&sYArF;tuO|8ZZxB-iG}9Gd`Fm zvTw>|5tRm;sKg07kar-cc1YyY!+S6|40fu`NRM+A6@ON~4e#SMI-Egq&vt_rrU{Ka zXv3f}Vla7QG4}#3oKQqCEtzJRh94(_pg&O%dRwawlQZy54+KW731yHA5KTu{sH zsKx7C-_5Tcp}r-85jSTKK1_&hj;0luqEG)& z#KqV@OuwOmlXAdaSEDcAt-k`M*NzHR?|?s5;V0PU2GdC8d1cND63lHrDVfKc<=dSRyoE4o*LU(DyPZVxg z4I&7~lS4K=x$jA7ZsZQH9Cu9lP;@z6i2v+jf2pe7oOfV0IB9ES3f=F(BN@-D)Ecak z6r9M45;8F$)(Qqo#DpS3J=^@wdaQ&$GBe`+`nm0@r&A4B%ufJxheGmGgcUK`j}cp7 zdj}z!)vE#6BD(j4*b|efC(lgR*s9&H{5rOQgZ8LW2$r&6U;N)s!>AaZHs9ywPjB& z1gvW-W{rSZGAp^HuG0N|>yMO}9i@p3SU%2;3}nS1v~vE>&E+3LZ8(8Qcnn7f)l1eP zO_II@nnhv(y`(6z;*s#xOSH|lvO%smmF0d;<08im*>p38lCt2L%gm6Lre7wl*LT(L z6r6lVav|W372E&2hi~cqub^7D<`;tL2I1$4BBRBce2S^`_qao9G|dOQ8#PV>-}$Q1 zLnZ6%AoA`2s<-bMHG~j`SjEBvRE^aHL!YpP1odn=I&<`IK+U}{69O_5%AYEhffUuf zU4%jb0nLf5T3LRIEV8%k=-v<0mN4Uh(t^b)C})6_51sJTz+KfJM~{JOe=chXhSI_p<0=F zYWpXjOJ92?|AkS>2F}5*L>fqlZBMN_35f&SHNY`g4h7+LSMr(X!$&41MI0L{1`JIi zI5HW0AX}P>z#3GVuo(H3b<7V&DY$1XQPukkJbcp^_nC}Sy48`_1?CI^LT>d+>MP7? z!^EBJAESF71)FWo89UvM)^TI;dV(@V+2L0MI=b*%9yMMw8(vyk>poszghb=b?Pbqm zJiaT;l)4w_{0+<_V!jmMwXPJDW0VQ$7tRnqOL z$Kjl}v6VdoZfund;c>4Xt9F9&$NqjWI9XrXNgId)%P;0}3pwT#DJrc%BNQ{dbq=ps zpsE*^4A|Uq0k`xP7x@tAsrsIWE-!{xgi=4_fWb0xoS7}qNWg8P4+}>4g<*8!0P@$+ zyHlIt2FLd4o?~0}&tRPGTi#tY_{L9jC^f(xflf>_3nKy&UEu00E!z*Z8i#k4-73D9 zm4_J3U-i*`X>9_F_KKaydkxjB{Pn5h@Fvv%fui}4#(@u>A;^lQ8eW^LX`M6j-_IyB z>^$-|r3tVj%h8;z{>(00>`JS+&I}TEypu|^mHFXmVRScG>+GjRB-7P9*tn@P`e%GI zi?V}X2K)X^tQWu9-##5gXgP(8rN9mWW~|oQ`?jZo%$_+K$JxSL9rruzdxA>sdzPEi z+v&tb`=3|tPkjk2&(LZI?99~{Ynzeh6SAt0J^p5e(zmC;EM~iZ{)2BV{(bXLii6-P zd;;tPu$C4H4wh-H6T9GyoUf|qNf+VZ>(K2m0Rm|V&FBoU=q6}_n3PlR%|cx)yK*`a zuQ;`OCi&@A%-$A(qKhGFeOL;!2?W%Ue@T}c9(Rst3^p@1uy(#ki!7cNkUD-g4~v{j z=5lK$>-r&he0?VWl$DdXHY9}M9)=*ee8_Pga9v|sI>EWA1B;iVwt%VR`wW2zxSnwE zYfCpW4l)kti=jC{OX}AX;tAI@1EB1r?urcolUly)5hddR*!)8AzCop7j$DO%?G-L9 zokgBC|5Se+^?rN3jT~^gCJRP}^bbQ!&3Zr`>XNhw<7fYrId1`~X3f$i&IW8?gyjCA zl{Y4D(Kw8IC<1!h>7zunNr)K!bp2VAG@aj>jdMIp+;oWLZE;os^U9_P!#{jEZ~G^( zSJ^=|Y?u%(kF0!Ps2~AMAU4|q%ov3#hL=qj{E%D>C*85|*Rl_J&kHol7uo!4I5afH zKbW_M%2bn@KI#pxdTNH~Y4_b)LeCx+c6Urv7wKag5GX+~b?Nd2shfGI=}iRWr(eKL zS)9lvx^Qsy*oV2GgzxO~^hJ&-SOfsIk>mk4qhs+JE7B&+-@2*B;{0Sp<0Vt(t+|=z zE4=NnkR)PjiQLATs9}@wP6>CezIkg2T5p`S_uiJ)Q5J*f9EQ8Vvu5McP-H&Cu4>Jr z$VtknGmO+bj3urPZAp(>c0h`Z9paN`D1#2Mrn9e<4OL|A6O$A>Ufq*x3vRhuZm>6w zu}#v*3k)j;r*Vz*q^crV?{A~b&;y6wy*qR@D8^iUCe8szZo^KmRCq&>OI{)@8qAoH zC6eN_zYlVRXPERse}k^_FP%?@6W}$MTMmRTHM<&T;z{5aN&&PItm~%S(#34+WC_-X za<5!V6L&7zYPCP@FhU@NN`hZm(&U6-(i#SqhS6ZM`q^;n_orgm6EEeT(GnrYcXM-r z7T%0o9d)L3%gs^ak?CQBszkHB314D97)FaqXW;&%gz!Z|C{6i1xJ&iyLJ8&gT|cEs26{avj5Lux}d;FlDBGe)N$-!)Z?=ruYF&U^x@W+ z1$O9-(HIh4xtr_?}6D%OAHMo`Rxk7>Z>zT%<<^ent7o+3+fo^!V=`}3^eTJI=eTd^bFvsQ6=ft;7Eg24;X}e4rL!WF`h^n%h z1P4x$c_OuaMX=wONPRvcFwD`Xko#3CU)J6>DS{J>){h)-RWQnDylWM{Ug^`DSPBCj zyUvFM1<+H%w^a{;J@}Q6F?F4rjA-?tLrJB%!Tu!PlL#Fqu~FKKVoZ-zw3p15ZC7!^ z5E28NaOqhAmq;h-rz%WBtHMjDzU#O*0&6sZ*cE9#Cr|H>=)EIy#%px?)6ZyLDFI8k zKt;g7jl~EwFMHBxwQm1PS1-AVoOtfamNXYcu*Rv-IQQv*J+I@RYds~-P*|SMw{T$n zh<1=u>k1Zg`N2WXx3g+IB>pxXeD|E90Mj5-2PzcXbfeKuxTRuZ^K<3fuMI2`30b%0 z$4g%_846g3dkY1A%SAI2D`h$Sr%5@$_}lscS-r$=pZlvU=|tvUR3gqkqjYy0FBA+u zGAur(M9C2Av+fk|u|X{R$3nEb!&`7~i>TCC@EGD0?YAvoi@%H^s8Y>DK1pZkc)lQh z7ery6j;Vwhb?G|FhlL1!c z2e3t*zZ-?u_5PSIKajFoCaV(XJX`z!3Tr5EWIP00zp{6A>g0s$B-P65Ee9|^qg7pU zBH%Jk;EiQ}!RLCxH4@(9<4%9Qk(`4Pl?)9xgWJkNTSWvlD;oN4=?Ql+uIAKp6++=7 z8~SE&Y#o!AJF-w0Hy28+uJKd z5e3t$JArS}7A&>AjFEsmj$iTDdV)mtP%pJ{_zgAiH6+`{y_SX?Nt#piN0BKkG@RFoH5wuc5@w2Y-aZuFdtwow;Ou>X;x1s z;voE!A!%J!eUJ>?gU}h=y?;RDZt8eeHVWr1byI5#V$Yf3bneK+zVsSSNZW*b1)4p? z0pCP!!$A`Vr6CsZs=TaYdnRV1T8DNu>PY?b76G&r947Bv@TpoMF(qyKn-(iT;+sFW za)Al8bRifUzj`2nlZsObO*&H7SySWRi`0O5q80lW`w%~`Y>KA__hUuHE^)jHv{}=R z)&K*dSH?HK5?NFs3B36y%eX5Tw$N&wGfH43q2!*tkSPdn7IHPTqgAM(I%c_ke@6`3 zx%cen;PigKMyp}0;mQS~en&JRl^@`t66neS-CUtlK~IGDg`_^89d=#1@80*eu0TFg zPx$NUx4RR3NrhL{qh_OOYmVS`VG z;*hXwAa`9f=)Mj9WysvRT6{vhAGg{i3 zyamYe1QKb}{fD#rg#+Fv`@M_}*PYBz#2FA@?kpm`GIw>?G`s#JRYGS`-G;OI=>|v{ zcxA(bWH_Kk#N7b|8p;46Dt-!hgh@lIyQ`jt%^Wb+$HN28o~eub8oCTJ4(xtoE<4mX zK@T1J@+G~hIylUWbU(*O@Nm3md7?IFiYr^+QGl1ZN7p#l#e;s<=>Y<5+kwxJkI!%ou?9=<^m3piE-%c6P9d^+ zG6_BguGnC*k1EME8+gR`IN40Bu>;?x&r#WKF7+|6R~RM9+B}^(e+%24&M4OH4V-cw zBEnge6=C>P78KewCr8WWxS+9x@cDAEtZ&6^ZwdQ#g8*3%xzhTf*+ z+d6$VUkK#sniAC!Vle-51w0cyN*HqaF_uK zC!@~p&Rx*HyWjRh+|dDTFE{p}5CR4m$IL0n>J<$QGw|REoi+*xFXY@wFkSniiwGjR zb8?7`4%gDNvPx#d+i6oqm+Hi473_QLnE+9njhOjLU!o!PSias$XQ#tp26MJqAEFW$ zc5k<)u8w;?)_USzncEWsYZ=xa6KsAa-Gn2e6r(d(p? zzOjikzT&QLT6FM6F00}+HXmhB`IsH={d<=BpFQf6Da6R7RV!Rv$X+$H`ET_|V=lUR zlQ`wTQ7x=}W2i-|Cf#y*VAu$(&76ZCV|T9X*R|$84u<$pTTjb7kjrdt4t*F~`ug_8 z7HAwO?ObyfYI~#?ak|(Pk659wZQNuUA$FSww~#vrH0{Y!JfZK=Ww0yLFd%e&&JhoQ zl%n#S z7DmXY>e*?bqoF8f5o(5iofmb5o)bEm_I;CIdE{W)<8ZJU`UWQw&5PsXkFce>~@1 zdH7C_)C+!@q}s+8X;*g_eHtGI4u{2@B$9=TcK)hJMY!v9W~HofbA#cAAu5f9uw-h# z*lx3}1B?_QZKah|DZ-6BHLQ@pMGZs=%{|?$zUB#+p#}b~fD$)#eh)Yw!9Ugs z!jKV|)1iJB2g}sw6}kH@A`3g5mLTqykbfk2M2N(Y<>Zwemi?|NUKIb8EL_Xu*_#iy zMM}@MitxMpR8Phch5Kh=59?W?GJ-dl%CN%w)A=FSd@vOAK z4-WrkWRJOGm*kKeVH~7@Q^8Znsc+2dkBk4Nt;>JVNEr1Z>#Ng_2{mto6`;7YfQ3kaA>ZiZu1qw(@2G4a6aOPLDxC3GL2YuZOmUe!|@PqN9>6=GnvZ|SS5>wBQ7lg zQ*L~w6lgvTfxZM{zCD!5!c+mXaBAeRfK_XYi`F7QB@l-~Y`5|lx6GSk1XwhxDJ>n1 zVg4XqABPQVvh~Y?T+rk}+mh|9W5ge-eY7+b@eYF+SUdTmY#w&2hjl&qwp-rKUg(8K z5Ud*8KcbdB+bJuRr?XGykC!W>RJmE(P1VfL%&#q!LmG<+v~lL&Hs#72@Tz9`+dKph z4!MvT&)2eYHHTpd33cb4Z7p@7>r`f^~2|yPXG^2+(*6I?@O}c>v+9%=Tf$KEV zBfUme5A?1Ny;!;uNo*R6$)j5-j*rB>IWul~mb|{wbj<85O=R`EQuV;r`~Jt5zMsrZ z2^GJA{iCdtEZWpZYCjB!u6zec`QKW*JS9`KiAF3CE!?gi0A4Hf&4R6HLOaTGCN~o& z>6&!)6GX@Z{Gccxo(@ZsFzz>ZP1dw{HlmirqU6MpD8Yu+ca7&o7!>ogj+gikDtQ<# z`PGb-JI#9><1RlZ{=JX~Rf(LgJv&3G^`P9~LGl zgt(Rhp=T{zz194eY+=ioKEl}b`(#kGOFIsZzO{<;D%Yluo`094;s0+&B9%6uGdVGs zE?AWwXDFh>(j_l*8WIHeECxKwBn)+fq3v(bf$?c*PCgY13i5YY80nBjL<(wuucd