From 5d2537af35e754950329f2e12c3c940435c8e4f0 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Wed, 24 Apr 2019 11:01:59 +0200 Subject: [PATCH 01/94] WIP: Transformations of an instance in world coordinate system from the side panel. --- src/slic3r/GUI/Field.cpp | 14 +- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 263 ++++++++-------------- src/slic3r/GUI/GUI_ObjectManipulation.hpp | 15 +- src/slic3r/GUI/Gizmos/GLGizmosManager.cpp | 5 +- src/slic3r/GUI/KBShortcutsDialog.cpp | 4 +- src/slic3r/GUI/OptionsGroup.cpp | 23 +- src/slic3r/GUI/OptionsGroup.hpp | 2 +- src/slic3r/GUI/Selection.cpp | 13 +- src/slic3r/GUI/Selection.hpp | 2 +- 9 files changed, 134 insertions(+), 207 deletions(-) diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 6da0800d9e..d8ed9f27ac 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -15,19 +15,7 @@ namespace Slic3r { namespace GUI { wxString double_to_string(double const value, const int max_precision /*= 4*/) { - if (value - int(value) == 0) - return wxString::Format(_T("%i"), int(value)); - - int precision = max_precision; - for (size_t p = 1; p < max_precision; p++) - { - double cur_val = pow(10, p)*value; - if (cur_val - int(cur_val) == 0) { - precision = p; - break; - } - } - return wxNumberFormatter::ToString(value, precision, wxNumberFormatter::Style_None); + return wxNumberFormatter::ToString(value, max_precision, wxNumberFormatter::Style_NoTrailingZeroes); } void Field::PostInitialize() diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index f9284a19b2..663ff8ad9b 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -57,16 +57,14 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : def.type = coString; def.width = field_width/*50*/; - std::vector axes{ "x", "y", "z" }; - for (const auto axis : axes) { - const auto label = boost::algorithm::to_upper_copy(axis); + for (const std::string axis : { "x", "y", "z" }) { + const std::string label = boost::algorithm::to_upper_copy(axis); def.default_value = new ConfigOptionString{ " " + label }; Option option = Option(def, axis + "_axis_legend"); line.append_option(option); } m_og->append_line(line); - auto add_og_to_object_settings = [this, field_width](const std::string& option_name, const std::string& sidetext) { Line line = { _(option_name), "" }; @@ -98,11 +96,10 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : const std::string lower_name = boost::algorithm::to_lower_copy(option_name); - std::vector axes{ "x", "y", "z" }; - for (auto axis : axes) { - if (axis == "z") + for (const char *axis : { "_x", "_y", "_z" }) { + if (axis[1] == 'z') def.sidetext = sidetext; - Option option = Option(def, lower_name + "_" + axis); + Option option = Option(def, lower_name + axis); option.opt.full_width = true; line.append_option(option); } @@ -162,7 +159,7 @@ void ObjectManipulation::update_settings_value(const Selection& selection) m_new_scale_label_string = L("Scale factors"); ObjectList* obj_list = wxGetApp().obj_list(); - if (selection.is_single_full_instance()) + if (selection.is_single_full_instance() && ! m_world_coordinates) { // all volumes in the selection belongs to the same instance, any of them contains the needed instance data, so we take the first one const GLVolume* volume = selection.get_volume(*selection.get_volume_idxs().begin()); @@ -174,21 +171,26 @@ void ObjectManipulation::update_settings_value(const Selection& selection) if ((0 <= obj_idx) && (obj_idx < (int)wxGetApp().model_objects()->size())) { bool changed_box = false; + //FIXME matching an object idx may not be enough if (!m_cache.instance.matches_object(obj_idx)) { m_cache.instance.set(obj_idx, instance_idx, (*wxGetApp().model_objects())[obj_idx]->raw_mesh_bounding_box().size()); changed_box = true; } + //FIXME matching an instance idx may not be enough. Check for ModelObject id an all ModelVolume ids. if (changed_box || !m_cache.instance.matches_instance(instance_idx) || !m_cache.scale.isApprox(100.0 * m_new_scale)) - m_new_size = (volume->get_instance_transformation().get_matrix(true, true) * m_cache.instance.box_size).cwiseAbs(); + m_new_size = volume->get_instance_transformation().get_scaling_factor().cwiseProduct(m_cache.instance.box_size); } - else + else { // this should never happen + assert(false); m_new_size = Vec3d::Zero(); + } m_new_enabled = true; } - else if (selection.is_single_full_object() && obj_list->is_selected(itObject)) + else if ((selection.is_single_full_instance() && m_world_coordinates) || + (selection.is_single_full_object() && obj_list->is_selected(itObject))) { m_cache.instance.reset(); @@ -210,7 +212,7 @@ void ObjectManipulation::update_settings_value(const Selection& selection) m_new_position = volume->get_volume_offset(); m_new_rotation = volume->get_volume_rotation(); m_new_scale = volume->get_volume_scaling_factor(); - m_new_size = (volume->get_volume_transformation().get_matrix(true, true) * volume->bounding_box.size()).cwiseAbs(); + m_new_size = volume->get_volume_transformation().get_scaling_factor().cwiseProduct(volume->bounding_box.size()); m_new_enabled = true; } else if (obj_list->multiple_selection() || obj_list->is_selected(itInstanceRoot)) @@ -222,8 +224,11 @@ void ObjectManipulation::update_settings_value(const Selection& selection) m_new_size = selection.get_bounding_box().size(); m_new_enabled = true; } - else - reset_settings_value(); + else { + // No selection, reset the cache. + assert(selection.is_empty()); + reset_settings_value(); + } m_dirty = true; } @@ -233,73 +238,35 @@ void ObjectManipulation::update_if_dirty() if (!m_dirty) return; - if (m_cache.move_label_string != _(m_new_move_label_string)+ ":") - { - m_cache.move_label_string = _(m_new_move_label_string)+ ":"; - m_move_Label->SetLabel(m_cache.move_label_string); + auto update_label = [](std::string &label_cache, const std::string &new_label, wxStaticText *widget) { + std::string new_label_localized = _(new_label) + ":"; + if (label_cache != new_label_localized) { + label_cache = new_label_localized; + widget->SetLabel(new_label_localized); + } + }; + update_label(m_cache.move_label_string, m_new_move_label_string, m_move_Label); + update_label(m_cache.rotate_label_string, m_new_rotate_label_string, m_rotate_Label); + update_label(m_cache.scale_label_string, m_new_scale_label_string, m_scale_Label); + + Vec3d scale = m_new_scale * 100.0; + Vec3d deg_rotation = (180.0 / M_PI) * m_new_rotation; + + char axis[2] = "x"; + for (int i = 0; i < 3; ++ i, ++ axis[0]) { + if (m_cache.position(i) != m_new_position(i)) + m_og->set_value(std::string("position_") + axis, double_to_string(m_new_position(i), 2)); + if (m_cache.scale(i) != scale(i)) + m_og->set_value(std::string("scale_") + axis, double_to_string(scale(i), 2)); + if (m_cache.size(i) != m_new_size(i)) + m_og->set_value(std::string("size_") + axis, double_to_string(m_new_size(i), 2)); + if (m_cache.rotation(i) != m_new_rotation(i) || m_new_rotation(i) == 0.0) + m_og->set_value(std::string("rotation_") + axis, double_to_string(deg_rotation(i), 2)); } - if (m_cache.rotate_label_string != _(m_new_rotate_label_string)+ ":") - { - m_cache.rotate_label_string = _(m_new_rotate_label_string)+ ":"; - m_rotate_Label->SetLabel(m_cache.rotate_label_string); - } - - if (m_cache.scale_label_string != _(m_new_scale_label_string)+ ":") - { - m_cache.scale_label_string = _(m_new_scale_label_string)+ ":"; - m_scale_Label->SetLabel(m_cache.scale_label_string); - } - - if (m_cache.position(0) != m_new_position(0)) - m_og->set_value("position_x", double_to_string(m_new_position(0), 2)); - - if (m_cache.position(1) != m_new_position(1)) - m_og->set_value("position_y", double_to_string(m_new_position(1), 2)); - - if (m_cache.position(2) != m_new_position(2)) - m_og->set_value("position_z", double_to_string(m_new_position(2), 2)); - m_cache.position = m_new_position; - - auto scale = m_new_scale * 100.0; - if (m_cache.scale(0) != scale(0)) - m_og->set_value("scale_x", double_to_string(scale(0), 2)); - - if (m_cache.scale(1) != scale(1)) - m_og->set_value("scale_y", double_to_string(scale(1), 2)); - - if (m_cache.scale(2) != scale(2)) - m_og->set_value("scale_z", double_to_string(scale(2), 2)); - m_cache.scale = scale; - - if (m_cache.size(0) != m_new_size(0)) - m_og->set_value("size_x", double_to_string(m_new_size(0), 2)); - - if (m_cache.size(1) != m_new_size(1)) - m_og->set_value("size_y", double_to_string(m_new_size(1), 2)); - - if (m_cache.size(2) != m_new_size(2)) - m_og->set_value("size_z", double_to_string(m_new_size(2), 2)); - m_cache.size = m_new_size; - - Vec3d deg_rotation; - for (size_t i = 0; i < 3; ++i) - { - deg_rotation(i) = Geometry::rad2deg(m_new_rotation(i)); - } - - if ((m_cache.rotation(0) != m_new_rotation(0)) || (m_new_rotation(0) == 0.0)) - m_og->set_value("rotation_x", double_to_string(deg_rotation(0), 2)); - - if ((m_cache.rotation(1) != m_new_rotation(1)) || (m_new_rotation(1) == 0.0)) - m_og->set_value("rotation_y", double_to_string(deg_rotation(1), 2)); - - if ((m_cache.rotation(2) != m_new_rotation(2)) || (m_new_rotation(2) == 0.0)) - m_og->set_value("rotation_z", double_to_string(deg_rotation(2), 2)); - m_cache.rotation = deg_rotation; if (wxGetApp().plater()->canvas3D()->get_selection().requires_uniform_scale()) { @@ -361,23 +328,21 @@ void ObjectManipulation::change_position_value(const Vec3d& position) void ObjectManipulation::change_rotation_value(const Vec3d& rotation) { GLCanvas3D* canvas = wxGetApp().plater()->canvas3D(); - const Selection& selection = canvas->get_selection(); + Selection& selection = canvas->get_selection(); TransformationType transformation_type(TransformationType::World_Relative_Joint); if (selection.is_single_full_instance() || selection.requires_local_axes()) transformation_type.set_independent(); - if (selection.is_single_full_instance()) { + if (selection.is_single_full_instance() && ! m_world_coordinates) { //FIXME Selection::rotate() does not process absoulte rotations correctly: It does not recognize the axis index, which was changed. // transformation_type.set_absolute(); transformation_type.set_local(); } - Vec3d rad_rotation; - for (size_t i = 0; i < 3; ++i) - rad_rotation(i) = Geometry::deg2rad((transformation_type.absolute()) ? rotation(i) : rotation(i) - m_cache.rotation(i)); - - canvas->get_selection().start_dragging(); - canvas->get_selection().rotate(rad_rotation, transformation_type); + selection.start_dragging(); + selection.rotate( + (M_PI / 180.0) * (transformation_type.absolute() ? rotation : rotation - m_cache.rotation), + transformation_type); canvas->do_rotate(); m_cache.rotation = rotation; @@ -385,32 +350,7 @@ void ObjectManipulation::change_rotation_value(const Vec3d& rotation) void ObjectManipulation::change_scale_value(const Vec3d& scale) { - Vec3d scaling_factor = scale; - const Selection& selection = wxGetApp().plater()->canvas3D()->get_selection(); - if (m_uniform_scale || selection.requires_uniform_scale()) - { - Vec3d abs_scale_diff = (scale - m_cache.scale).cwiseAbs(); - double max_diff = abs_scale_diff(X); - Axis max_diff_axis = X; - if (max_diff < abs_scale_diff(Y)) - { - max_diff = abs_scale_diff(Y); - max_diff_axis = Y; - } - if (max_diff < abs_scale_diff(Z)) - { - max_diff = abs_scale_diff(Z); - max_diff_axis = Z; - } - scaling_factor = scale(max_diff_axis) * Vec3d::Ones(); - } - - scaling_factor *= 0.01; - - auto canvas = wxGetApp().plater()->canvas3D(); - canvas->get_selection().start_dragging(); - canvas->get_selection().scale(scaling_factor, false); - canvas->do_scale(); + this->do_scale(scale); if (!m_cache.scale.isApprox(scale)) m_cache.instance.instance_idx = -1; @@ -428,41 +368,35 @@ void ObjectManipulation::change_size_value(const Vec3d& size) const GLVolume* volume = selection.get_volume(*selection.get_volume_idxs().begin()); ref_size = volume->bounding_box.size(); } - else if (selection.is_single_full_instance()) + else if (selection.is_single_full_instance() && ! m_world_coordinates) ref_size = m_cache.instance.box_size; - Vec3d scale = 100.0 * Vec3d(size(0) / ref_size(0), size(1) / ref_size(1), size(2) / ref_size(2)); - Vec3d scaling_factor = scale; - - if (m_uniform_scale || selection.requires_uniform_scale()) - { - Vec3d abs_scale_diff = (scale - m_cache.scale).cwiseAbs(); - double max_diff = abs_scale_diff(X); - Axis max_diff_axis = X; - if (max_diff < abs_scale_diff(Y)) - { - max_diff = abs_scale_diff(Y); - max_diff_axis = Y; - } - if (max_diff < abs_scale_diff(Z)) - { - max_diff = abs_scale_diff(Z); - max_diff_axis = Z; - } - scaling_factor = scale(max_diff_axis) * Vec3d::Ones(); - } - - scaling_factor *= 0.01; - - auto canvas = wxGetApp().plater()->canvas3D(); - canvas->get_selection().start_dragging(); - canvas->get_selection().scale(scaling_factor, false); - canvas->do_scale(); + this->do_scale(100.0 * Vec3d(size(0) / ref_size(0), size(1) / ref_size(1), size(2) / ref_size(2))); m_cache.size = size; } -void ObjectManipulation::on_change(const t_config_option_key& opt_key, const boost::any& value) +void ObjectManipulation::do_scale(const Vec3d &scale) const +{ + Selection& selection = wxGetApp().plater()->canvas3D()->get_selection(); + Vec3d scaling_factor = scale; + + if (m_uniform_scale || selection.requires_uniform_scale()) + { + int max_diff_axis; + (scale - m_cache.scale).cwiseAbs().maxCoeff(&max_diff_axis); + scaling_factor = scale(max_diff_axis) * Vec3d::Ones(); + } + + TransformationType transformation_type(TransformationType::World_Relative_Joint); + if (selection.is_single_full_instance() && ! m_world_coordinates) + transformation_type.set_local(); + selection.start_dragging(); + selection.scale(scaling_factor * 0.01, transformation_type); + wxGetApp().plater()->canvas3D()->do_scale(); +} + +void ObjectManipulation::on_change(t_config_option_key opt_key, const boost::any& value) { // needed to hide the visual hints in 3D scene wxGetApp().plater()->canvas3D()->handle_sidebar_focus_event(opt_key, false); @@ -473,23 +407,19 @@ void ObjectManipulation::on_change(const t_config_option_key& opt_key, const boo if (!m_cache.is_valid()) return; - std::vector axes{ "_x", "_y", "_z" }; - - std::string param; - std::copy(opt_key.begin(), opt_key.end() - 2, std::back_inserter(param)); - - size_t i = 0; + // Value of all three axes of the position / rotation / scale / size is extracted. Vec3d new_value; - for (auto axis : axes) - new_value(i++) = boost::any_cast(m_og->get_value(param + axis)); + opt_key.back() = 'x'; + for (int i = 0; i < 3; ++ i, ++ opt_key.back()) + new_value(i) = boost::any_cast(m_og->get_value(opt_key)); - if (param == "position") + if (boost::starts_with(opt_key, "position_")) change_position_value(new_value); - else if (param == "rotation") + else if (boost::starts_with(opt_key, "rotation_")) change_rotation_value(new_value); - else if (param == "scale") + else if (boost::starts_with(opt_key, "scale_")) change_scale_value(new_value); - else if (param == "size") + else if (boost::starts_with(opt_key, "size_")) change_size_value(new_value); } @@ -504,22 +434,21 @@ void ObjectManipulation::on_fill_empty_value(const std::string& opt_key) if (!m_cache.is_valid()) return; - std::string param; - std::copy(opt_key.begin(), opt_key.end() - 2, std::back_inserter(param)); + const Vec3d *vec = nullptr; + if (boost::starts_with(opt_key, "position_")) + vec = &m_cache.position; + else if (boost::starts_with(opt_key, "rotation_")) + vec = &m_cache.rotation; + else if (boost::starts_with(opt_key, "scale_")) + vec = &m_cache.scale; + else if (boost::starts_with(opt_key, "size_")) + vec = &m_cache.size; + else + assert(false); - double value = 0.0; - auto opt_key_to_axis = [&opt_key]() { return opt_key.back() == 'x' ? 0 : opt_key.back() == 'y' ? 1 : 2; }; - if (param == "position") - value = m_cache.position(opt_key_to_axis()); - else if (param == "rotation") - value = m_cache.rotation(opt_key_to_axis()); - else if (param == "scale") - value = m_cache.scale(opt_key_to_axis()); - else if (param == "size") - value = m_cache.size(opt_key_to_axis()); - - m_og->set_value(opt_key, double_to_string(value)); + if (vec != nullptr) + m_og->set_value(opt_key, double_to_string((*vec)(opt_key.back() - 'x'))); } } //namespace GUI -} //namespace Slic3r \ No newline at end of file +} //namespace Slic3r diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp index a5a180a56b..ecd306c0aa 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp @@ -76,6 +76,8 @@ class ObjectManipulation : public OG_Settings Vec3d m_new_size; bool m_new_enabled; bool m_uniform_scale {true}; + // Does the object manipulation panel work in World or Local coordinates? + bool m_world_coordinates = true; PrusaLockButton* m_lock_bnt{ nullptr }; #ifndef __APPLE__ @@ -98,6 +100,8 @@ public: void set_uniform_scaling(const bool uniform_scale) { m_uniform_scale = uniform_scale;} bool get_uniform_scaling() const { return m_uniform_scale; } + // Does the object manipulation panel work in World or Local coordinates? + bool get_world_coordinates() const { return m_world_coordinates; } void reset_cache() { m_cache.reset(); } #ifndef __APPLE__ @@ -116,12 +120,13 @@ private: void update_rotation_value(const Vec3d& rotation); // change values - void change_position_value(const Vec3d& position); - void change_rotation_value(const Vec3d& rotation); - void change_scale_value(const Vec3d& scale); - void change_size_value(const Vec3d& size); + void change_position_value(const Vec3d& position); + void change_rotation_value(const Vec3d& rotation); + void change_scale_value(const Vec3d& scale); + void change_size_value(const Vec3d& size); + void do_scale(const Vec3d &scale) const; - void on_change(const t_config_option_key& opt_key, const boost::any& value); + void on_change(t_config_option_key opt_key, const boost::any& value); void on_fill_empty_value(const std::string& opt_key); }; diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index 5e37e42ad6..f553918654 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -629,7 +629,10 @@ bool GLGizmosManager::on_mouse(wxMouseEvent& evt, GLCanvas3D& canvas) case Scale: { // Apply new temporary scale factors - selection.scale(get_scale(), evt.AltDown()); + TransformationType transformation_type(TransformationType::World_Relative_Joint); + if (evt.AltDown()) + transformation_type.set_independent(); + selection.scale(get_scale(), transformation_type); wxGetApp().obj_manipul()->update_settings_value(selection); break; } diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index 65abba3190..3c2f4182b9 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -104,8 +104,8 @@ void KBShortcutsDialog::fill_shortcuts() main_shortcuts.push_back(Shortcut(ctrl+"S" ,L("Save project (3MF)"))); main_shortcuts.push_back(Shortcut(ctrl+alt+"L" ,L("Load Config from .ini/amf/3mf/gcode and merge"))); main_shortcuts.push_back(Shortcut(ctrl+"R" ,L("(Re)slice"))); - main_shortcuts.push_back(Shortcut(ctrl+"U" ,L("Quick slice"))); - main_shortcuts.push_back(Shortcut(ctrl+"Shift+U" ,L("Repeat last quick slice"))); +// main_shortcuts.push_back(Shortcut(ctrl+"U" ,L("Quick slice"))); +// main_shortcuts.push_back(Shortcut(ctrl+"Shift+U" ,L("Repeat last quick slice"))); main_shortcuts.push_back(Shortcut(ctrl+"1" ,L("Select Plater Tab"))); main_shortcuts.push_back(Shortcut(ctrl+alt+"U" ,L("Quick slice and Save as"))); main_shortcuts.push_back(Shortcut(ctrl+"2" ,L("Select Print Settings Tab"))); diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index df2f7b5824..4abbbd45a4 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -417,22 +417,21 @@ void ConfigOptionsGroup::back_to_config_value(const DynamicPrintConfig& config, void ConfigOptionsGroup::on_kill_focus(const std::string& opt_key) { - if (m_fill_empty_value) { + if (m_fill_empty_value) m_fill_empty_value(opt_key); - return; - } - reload_config(); + else + reload_config(); } -void ConfigOptionsGroup::reload_config() { - for (t_opt_map::iterator it = m_opt_map.begin(); it != m_opt_map.end(); ++it) { - auto opt_id = it->first; - std::string opt_key = m_opt_map.at(opt_id).first; - int opt_index = m_opt_map.at(opt_id).second; - auto option = m_options.at(opt_id).opt; - set_value(opt_id, config_value(opt_key, opt_index, option.gui_flags.compare("serialized") == 0 )); +void ConfigOptionsGroup::reload_config() +{ + for (auto &kvp : m_opt_map) { + const std::string &opt_id = kvp.first; + const std::string &opt_key = kvp.second.first; + int opt_index = kvp.second.second; + const ConfigOptionDef &option = m_options.at(opt_id).opt; + this->set_value(opt_key, config_value(opt_key, opt_index, option.gui_flags == "serialized")); } - } void ConfigOptionsGroup::Hide() diff --git a/src/slic3r/GUI/OptionsGroup.hpp b/src/slic3r/GUI/OptionsGroup.hpp index e4ada3692e..4eec68a379 100644 --- a/src/slic3r/GUI/OptionsGroup.hpp +++ b/src/slic3r/GUI/OptionsGroup.hpp @@ -255,7 +255,7 @@ public: void back_to_initial_value(const std::string& opt_key) override; void back_to_sys_value(const std::string& opt_key) override; void back_to_config_value(const DynamicPrintConfig& config, const std::string& opt_key); - void on_kill_focus(const std::string& opt_key) override;// { reload_config(); } + void on_kill_focus(const std::string& opt_key) override; void reload_config(); // return value shows visibility : false => all options are hidden void Hide(); diff --git a/src/slic3r/GUI/Selection.cpp b/src/slic3r/GUI/Selection.cpp index e014851ab4..7a203fe74a 100644 --- a/src/slic3r/GUI/Selection.cpp +++ b/src/slic3r/GUI/Selection.cpp @@ -631,14 +631,17 @@ void Selection::flattening_rotate(const Vec3d& normal) m_bounding_box_dirty = true; } -void Selection::scale(const Vec3d& scale, bool local) +void Selection::scale(const Vec3d& scale, TransformationType transformation_type) { if (!m_valid) return; + // Only relative scaling values are allowed in the world coordinate system. + assert(! transformation_type.world() || transformation_type.relative()); + for (unsigned int i : m_list) { - if (is_single_full_instance()) + if (is_single_full_instance() && ! transformation_type.world()) (*m_volumes)[i]->set_instance_scaling_factor(scale); else if (is_single_volume() || is_single_modifier()) (*m_volumes)[i]->set_volume_scaling_factor(scale); @@ -650,7 +653,7 @@ void Selection::scale(const Vec3d& scale, bool local) Eigen::Matrix new_matrix = (m * m_cache.volumes_data[i].get_instance_scale_matrix()).matrix().block(0, 0, 3, 3); // extracts scaling factors from the composed transformation Vec3d new_scale(new_matrix.col(0).norm(), new_matrix.col(1).norm(), new_matrix.col(2).norm()); - if (!local) + if (transformation_type.joint()) (*m_volumes)[i]->set_instance_offset(m_cache.dragging_center + m * (m_cache.volumes_data[i].get_instance_position() - m_cache.dragging_center)); (*m_volumes)[i]->set_instance_scaling_factor(new_scale); @@ -660,7 +663,7 @@ void Selection::scale(const Vec3d& scale, bool local) Eigen::Matrix new_matrix = (m * m_cache.volumes_data[i].get_volume_scale_matrix()).matrix().block(0, 0, 3, 3); // extracts scaling factors from the composed transformation Vec3d new_scale(new_matrix.col(0).norm(), new_matrix.col(1).norm(), new_matrix.col(2).norm()); - if (!local) + if (transformation_type.joint()) { Vec3d offset = m * (m_cache.volumes_data[i].get_volume_position() + m_cache.volumes_data[i].get_instance_position() - m_cache.dragging_center); (*m_volumes)[i]->set_volume_offset(m_cache.dragging_center - m_cache.volumes_data[i].get_instance_position() + offset); @@ -959,7 +962,7 @@ void Selection::render_sidebar_hints(const std::string& sidebar_field) const const Vec3d& center = get_bounding_box().center(); - if (is_single_full_instance()) + if (is_single_full_instance() && ! wxGetApp().obj_manipul()->get_world_coordinates()) { glsafe(::glTranslated(center(0), center(1), center(2))); if (!boost::starts_with(sidebar_field, "position")) diff --git a/src/slic3r/GUI/Selection.hpp b/src/slic3r/GUI/Selection.hpp index 87c9196804..2a54e9a188 100644 --- a/src/slic3r/GUI/Selection.hpp +++ b/src/slic3r/GUI/Selection.hpp @@ -269,7 +269,7 @@ public: void translate(const Vec3d& displacement, bool local = false); void rotate(const Vec3d& rotation, TransformationType transformation_type); void flattening_rotate(const Vec3d& normal); - void scale(const Vec3d& scale, bool local); + void scale(const Vec3d& scale, TransformationType transformation_type); void mirror(Axis axis); void translate(unsigned int object_idx, const Vec3d& displacement); From ae692635dabb82bbb3710b14dd63d7a41951a888 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Thu, 18 Apr 2019 09:59:17 +0200 Subject: [PATCH 02/94] Selection rectangle moved into a separate class --- src/slic3r/CMakeLists.txt | 2 + src/slic3r/GUI/GLSelectionRectangle.cpp | 116 +++++++++++++++++++ src/slic3r/GUI/GLSelectionRectangle.hpp | 49 ++++++++ src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp | 108 +++++------------ src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp | 14 +-- 5 files changed, 198 insertions(+), 91 deletions(-) create mode 100644 src/slic3r/GUI/GLSelectionRectangle.cpp create mode 100644 src/slic3r/GUI/GLSelectionRectangle.hpp diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index 1d8a1e26e3..f541897621 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -47,6 +47,8 @@ set(SLIC3R_GUI_SOURCES GUI/Gizmos/GLGizmoFlatten.hpp GUI/Gizmos/GLGizmoCut.cpp GUI/Gizmos/GLGizmoCut.hpp + GUI/GLSelectionRectangle.cpp + GUI/GLSelectionRectangle.hpp GUI/GLTexture.hpp GUI/GLTexture.cpp GUI/GLToolbar.hpp diff --git a/src/slic3r/GUI/GLSelectionRectangle.cpp b/src/slic3r/GUI/GLSelectionRectangle.cpp new file mode 100644 index 0000000000..a908d13ec9 --- /dev/null +++ b/src/slic3r/GUI/GLSelectionRectangle.cpp @@ -0,0 +1,116 @@ +#include "GLSelectionRectangle.hpp" +#include "Camera.hpp" +#include "3DScene.hpp" + +#include + +namespace Slic3r { +namespace GUI { + +void GLSelectionRectangle::start_dragging(const Vec2d& mouse_position, float width, float height, EState status) +{ + if (is_active() || status==Off) + return; + + m_width = width; + m_height = height; + m_status = status; + m_start_corner = mouse_position; + m_end_corner = mouse_position; +} + + + +void GLSelectionRectangle::dragging(const Vec2d& mouse_position) +{ + if (is_active()) + m_end_corner = mouse_position; +} + + + +std::vector GLSelectionRectangle::end_dragging(const Camera& camera, const std::vector& points) +{ + if (!is_active()) + return std::vector(); + + m_status = Off; + std::vector out; + + const std::array& viewport = camera.get_viewport(); + const Transform3d& modelview_matrix = camera.get_view_matrix(); + const Transform3d& projection_matrix = camera.get_projection_matrix(); + + // bounding box created from the rectangle corners - will take care of order of the corners + BoundingBox rectangle(Points{Point(m_start_corner.cast()), Point(m_end_corner.cast())}); + + // Iterate over all points and determine whether they're in the rectangle. + for (unsigned int i=0; i end_dragging(const Camera& camera, const std::vector& points); + + void render() const; + + bool is_active() const { return m_status != Off; } + EState get_status() const { return m_status; } + + + +private: + EState m_status = Off; + Vec2d m_start_corner; + Vec2d m_end_corner; + float m_width; + float m_height; +}; + + +} // namespace GUI +} // namespace Slic3r + + +#endif // slic3r_GLGizmoSlaSupports_hpp_ diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp index e8fe32688b..b31eb272b9 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp @@ -100,7 +100,7 @@ void GLGizmoSlaSupports::on_render(const Selection& selection) const if (m_quadric != nullptr && selection.is_from_single_instance()) render_points(selection, false); - render_selection_rectangle(); + m_selection_rectangle.render(); render_clipping_plane(selection); glsafe(::glDisable(GL_BLEND)); @@ -240,52 +240,6 @@ void GLGizmoSlaSupports::render_clipping_plane(const Selection& selection) const } - -void GLGizmoSlaSupports::render_selection_rectangle() const -{ - if (m_selection_rectangle_status == srOff) - return; - - glsafe(::glLineWidth(1.5f)); - float render_color[3] = {0.f, 1.f, 0.f}; - if (m_selection_rectangle_status == srDeselect) { - render_color[0] = 1.f; - render_color[1] = 0.3f; - render_color[2] = 0.3f; - } - glsafe(::glColor3fv(render_color)); - - glsafe(::glPushAttrib(GL_TRANSFORM_BIT)); // remember current MatrixMode - - glsafe(::glMatrixMode(GL_MODELVIEW)); // cache modelview matrix and set to identity - glsafe(::glPushMatrix()); - glsafe(::glLoadIdentity()); - - glsafe(::glMatrixMode(GL_PROJECTION)); // cache projection matrix and set to identity - glsafe(::glPushMatrix()); - glsafe(::glLoadIdentity()); - - glsafe(::glOrtho(0.f, m_canvas_width, m_canvas_height, 0.f, -1.f, 1.f)); // set projection matrix so that world coords = window coords - - // render the selection rectangle (window coordinates): - glsafe(::glPushAttrib(GL_ENABLE_BIT)); - glsafe(::glLineStipple(4, 0xAAAA)); - glsafe(::glEnable(GL_LINE_STIPPLE)); - - ::glBegin(GL_LINE_LOOP); - ::glVertex3f((GLfloat)m_selection_rectangle_start_corner(0), (GLfloat)m_selection_rectangle_start_corner(1), (GLfloat)0.5f); - ::glVertex3f((GLfloat)m_selection_rectangle_end_corner(0), (GLfloat)m_selection_rectangle_start_corner(1), (GLfloat)0.5f); - ::glVertex3f((GLfloat)m_selection_rectangle_end_corner(0), (GLfloat)m_selection_rectangle_end_corner(1), (GLfloat)0.5f); - ::glVertex3f((GLfloat)m_selection_rectangle_start_corner(0), (GLfloat)m_selection_rectangle_end_corner(1), (GLfloat)0.5f); - glsafe(::glEnd()); - glsafe(::glPopAttrib()); - - glsafe(::glPopMatrix()); // restore former projection matrix - glsafe(::glMatrixMode(GL_MODELVIEW)); - glsafe(::glPopMatrix()); // restore former modelview matrix - glsafe(::glPopAttrib()); // restore former MatrixMode -} - void GLGizmoSlaSupports::on_render_for_picking(const Selection& selection) const { glsafe(::glEnable(GL_DEPTH_TEST)); @@ -513,11 +467,9 @@ bool GLGizmoSlaSupports::gizmo_event(SLAGizmoEventType action, const Vec2d& mous if (action == SLAGizmoEventType::LeftDown && (shift_down || alt_down || control_down)) { if (m_hover_id == -1) { if (shift_down || alt_down) { - m_selection_rectangle_status = shift_down ? srSelect : srDeselect; - m_selection_rectangle_start_corner = mouse_position; - m_selection_rectangle_end_corner = mouse_position; - m_canvas_width = m_parent.get_canvas_size().get_width(); - m_canvas_height = m_parent.get_canvas_size().get_height(); + Size size = m_parent.get_canvas_size(); + m_selection_rectangle.start_dragging(mouse_position, size.get_width(), size.get_height(), + shift_down ? GLSelectionRectangle::SlaSelect : GLSelectionRectangle::SlaDeselect); } } else { @@ -533,7 +485,7 @@ bool GLGizmoSlaSupports::gizmo_event(SLAGizmoEventType action, const Vec2d& mous } // left down without selection rectangle - place point on the mesh: - if (action == SLAGizmoEventType::LeftDown && m_selection_rectangle_status == srOff && !shift_down) { + if (action == SLAGizmoEventType::LeftDown && !m_selection_rectangle.is_active() && !shift_down) { // If any point is in hover state, this should initiate its move - return control back to GLCanvas: if (m_hover_id != -1) return false; @@ -558,38 +510,36 @@ bool GLGizmoSlaSupports::gizmo_event(SLAGizmoEventType action, const Vec2d& mous } // left up with selection rectangle - select points inside the rectangle: - if ((action == SLAGizmoEventType::LeftUp || action == SLAGizmoEventType::ShiftUp || action == SLAGizmoEventType::AltUp) && m_selection_rectangle_status != srOff) { - const Transform3d& instance_matrix = m_model_object->instances[m_active_instance]->get_transformation().get_matrix(); - const Camera& camera = m_parent.get_camera(); - const std::array& viewport = camera.get_viewport(); - const Transform3d& modelview_matrix = camera.get_view_matrix(); - const Transform3d& projection_matrix = camera.get_projection_matrix(); + if ((action == SLAGizmoEventType::LeftUp || action == SLAGizmoEventType::ShiftUp || action == SLAGizmoEventType::AltUp) && m_selection_rectangle.is_active()) { + // Is this a selection or deselection rectangle? + GLSelectionRectangle::EState rectangle_status = m_selection_rectangle.get_status(); + // First collect positions of all the points in world coordinates. + const Transform3d& instance_matrix = m_model_object->instances[m_active_instance]->get_transformation().get_matrix(); + std::vector points; + for (unsigned int i=0; i()); + points.back()(2) += m_z_shift; + } + // Now ask the rectangle which of the points are inside. + const Camera& camera = m_parent.get_camera(); + std::vector selected_idxs = m_selection_rectangle.end_dragging(camera, points); + + // we'll recover current look direction (in world coords) and transform it to model coords. const Selection& selection = m_parent.get_selection(); const GLVolume* volume = selection.get_volume(*selection.get_volume_idxs().begin()); - - // bounding box created from the rectangle corners - will take care of order of the corners - BoundingBox rectangle(Points{Point(m_selection_rectangle_start_corner.cast()), Point(m_selection_rectangle_end_corner.cast())}); - const Transform3d& instance_matrix_no_translation_no_scaling = volume->get_instance_transformation().get_matrix(true,false,true); - - // we'll recover current look direction from the modelview matrix (in world coords)... Vec3f direction_to_camera = camera.get_dir_forward().cast(); - // ...and transform it to model coords. Vec3f direction_to_camera_mesh = (instance_matrix_no_translation_no_scaling.inverse().cast() * direction_to_camera).normalized().eval(); Vec3f scaling = volume->get_instance_scaling_factor().cast(); direction_to_camera_mesh = Vec3f(direction_to_camera_mesh(0)*scaling(0), direction_to_camera_mesh(1)*scaling(1), direction_to_camera_mesh(2)*scaling(2)); - // Iterate over all points, check if they're in the rectangle and if so, check that they are not obscured by the mesh: - for (unsigned int i=0; i() * support_point.pos; - pos(2) += m_z_shift; - GLdouble out_x, out_y, out_z; - ::gluProject((GLdouble)pos(0), (GLdouble)pos(1), (GLdouble)pos(2), (GLdouble*)modelview_matrix.data(), (GLdouble*)projection_matrix.data(), (GLint*)viewport.data(), &out_x, &out_y, &out_z); - out_y = m_canvas_height - out_y; - - if (rectangle.contains(Point(out_x, out_y)) && !is_point_clipped(support_point.pos.cast())) { + if (!is_point_clipped(support_point.pos.cast())) { bool is_obscured = false; // Cast a ray in the direction of the camera and look for intersection with the mesh: std::vector hits; @@ -627,14 +577,13 @@ bool GLGizmoSlaSupports::gizmo_event(SLAGizmoEventType action, const Vec2d& mous } if (!is_obscured) { - if (m_selection_rectangle_status == srDeselect) + if (rectangle_status == GLSelectionRectangle::SlaDeselect) unselect_point(i); else select_point(i); } } } - m_selection_rectangle_status = srOff; return true; } @@ -652,9 +601,8 @@ bool GLGizmoSlaSupports::gizmo_event(SLAGizmoEventType action, const Vec2d& mous return true; // point has been placed and the button not released yet // this prevents GLCanvas from starting scene rotation - if (m_selection_rectangle_status != srOff) { - m_selection_rectangle_end_corner = mouse_position; - m_selection_rectangle_status = shift_down ? srSelect : srDeselect; + if (m_selection_rectangle.is_active()) { + m_selection_rectangle.dragging(mouse_position); return true; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp index eaf0932c4e..92d80b6eba 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp @@ -3,6 +3,7 @@ #include "GLGizmoBase.hpp" #include "GLGizmos.hpp" +#include "slic3r/GUI/GLSelectionRectangle.hpp" // There is an L function in igl that would be overridden by our localization macro - let's undefine it... #undef L @@ -73,7 +74,7 @@ private: virtual void on_render(const Selection& selection) const; virtual void on_render_for_picking(const Selection& selection) const; - void render_selection_rectangle() const; + //void render_selection_rectangle() const; void render_points(const Selection& selection, bool picking = false) const; void render_clipping_plane(const Selection& selection) const; bool is_mesh_update_necessary() const; @@ -91,20 +92,11 @@ private: mutable Vec3d m_old_clipping_plane_normal; mutable Vec3d m_clipping_plane_normal = Vec3d::Zero(); - enum SelectionRectangleStatus { - srOff = 0, - srSelect = 1, - srDeselect = 2 - }m_selection_rectangle_status = srOff; - - Vec2d m_selection_rectangle_start_corner; - Vec2d m_selection_rectangle_end_corner; + GLSelectionRectangle m_selection_rectangle; bool m_wait_for_up_event = false; bool m_unsaved_changes = false; // Are there unsaved changes in manual mode? bool m_selection_empty = true; EState m_old_state = Off; // to be able to see that the gizmo has just been closed (see on_set_state) - int m_canvas_width; - int m_canvas_height; mutable std::unique_ptr m_tms; mutable std::unique_ptr m_supports_tms; From 203e9e848c1c11770efe642e660f5c3791685e38 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 24 Apr 2019 13:33:05 +0200 Subject: [PATCH 03/94] Changed Manipulation panel. (Simple mode)There is exclamation mark icon next for the object name, if it has errors. + some code refactoring --- src/slic3r/GUI/GUI_ObjectList.cpp | 185 +++++++++++++++------- src/slic3r/GUI/GUI_ObjectList.hpp | 12 +- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 46 +++++- src/slic3r/GUI/GUI_ObjectManipulation.hpp | 5 + 4 files changed, 183 insertions(+), 65 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index f8ad8b7bb3..b16198d190 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -193,6 +193,106 @@ void ObjectList::create_popup_menus() create_instance_popupmenu(&m_menu_instance); } +void ObjectList::get_selected_item_indexes(int& obj_idx, int& vol_idx, const wxDataViewItem& input_item/* = wxDataViewItem(0)*/) +{ + const wxDataViewItem item = input_item == wxDataViewItem(0) ? GetSelection() : input_item; + + if (!item) + { + obj_idx = vol_idx = -1; + return; + } + + const ItemType type = m_objects_model->GetItemType(item); + + obj_idx = type & itObject ? m_objects_model->GetIdByItem(item) : + type & itVolume ? m_objects_model->GetIdByItem(m_objects_model->GetTopParent(item)) : -1; + + vol_idx = type & itVolume ? m_objects_model->GetVolumeIdByItem(item) : -1; +} + +int ObjectList::get_mesh_errors_count(const int obj_idx, const int vol_idx /*= -1*/) const +{ + if (obj_idx < 0) + return 0; + + int errors = 0; + + std::vector volumes; + if (vol_idx == -1) + volumes = (*m_objects)[obj_idx]->volumes; + else + volumes.emplace_back((*m_objects)[obj_idx]->volumes[vol_idx]); + + for (ModelVolume* volume : volumes) + { + const stl_stats& stats = volume->mesh.stl.stats; + + errors += stats.degenerate_facets + stats.edges_fixed + stats.facets_removed + + stats.facets_added + stats.facets_reversed + stats.backwards_edges; + } + + return errors; +} + +wxString ObjectList::get_mesh_errors_list(const int obj_idx, const int vol_idx /*= -1*/) const +{ + const int errors = get_mesh_errors_count(obj_idx, vol_idx); + + if (errors == 0) + return ""; // hide tooltip + + // Create tooltip string, if there are errors + wxString tooltip = wxString::Format(_(L("Auto-repaired (%d errors):\n")), errors); + + std::vector volumes; + if (vol_idx == -1) + volumes = (*m_objects)[obj_idx]->volumes; + else + volumes.emplace_back((*m_objects)[obj_idx]->volumes[vol_idx]); + + std::map error_msg = { + {L("degenerate facets") , 0}, + {L("edges fixed") , 0}, + {L("facets removed") , 0}, + {L("facets added") , 0}, + {L("facets reversed") , 0}, + {L("backwards edges") , 0} + }; + + for (ModelVolume* volume : volumes) + { + const stl_stats& stats = volume->mesh.stl.stats; + + error_msg[L("degenerate facets")] += stats.degenerate_facets; + error_msg[L("edges fixed")] += stats.edges_fixed; + error_msg[L("facets removed")] += stats.facets_removed; + error_msg[L("facets added")] += stats.facets_added; + error_msg[L("facets reversed")] += stats.facets_reversed; + error_msg[L("backwards edges")] += stats.backwards_edges; + } + + for (const auto& error : error_msg) + if (error.second > 0) + tooltip += wxString::Format(_("\t%d %s\n"), error.second, error.first); + + if (is_windows10()) + tooltip += _(L("Right button click the icon to fix STL through Netfabb")); + + return tooltip; +} + +wxString ObjectList::get_mesh_errors_list() +{ + if (!GetSelection()) + return ""; + + int obj_idx, vol_idx; + get_selected_item_indexes(obj_idx, vol_idx); + + return get_mesh_errors_list(obj_idx, vol_idx); +} + void ObjectList::set_tooltip_for_item(const wxPoint& pt) { wxDataViewItem item; @@ -202,38 +302,11 @@ void ObjectList::set_tooltip_for_item(const wxPoint& pt) if (col->GetTitle() == " " && GetSelectedItemsCount()<2) GetMainWindow()->SetToolTip(_(L("Right button click the icon to change the object settings"))); - else if (col->GetTitle() == _("Name") && - m_objects_model->GetBitmap(item).GetRefData() == m_bmp_manifold_warning.GetRefData()) { - int obj_idx = m_objects_model->GetIdByItem(item); - auto& stats = (*m_objects)[obj_idx]->volumes[0]->mesh.stl.stats; - int errors = stats.degenerate_facets + stats.edges_fixed + stats.facets_removed + - stats.facets_added + stats.facets_reversed + stats.backwards_edges; - - wxString tooltip = wxString::Format(_(L("Auto-repaired (%d errors):\n")), errors); - - std::map error_msg; - error_msg[L("degenerate facets")] = stats.degenerate_facets; - error_msg[L("edges fixed")] = stats.edges_fixed; - error_msg[L("facets removed")] = stats.facets_removed; - error_msg[L("facets added")] = stats.facets_added; - error_msg[L("facets reversed")] = stats.facets_reversed; - error_msg[L("backwards edges")] = stats.backwards_edges; - - for (auto error : error_msg) - { - if (error.second > 0) - tooltip += wxString::Format(_("\t%d %s\n"), error.second, error.first); - } -// OR -// tooltip += wxString::Format(_(L("%d degenerate facets, %d edges fixed, %d facets removed, " -// "%d facets added, %d facets reversed, %d backwards edges")), -// stats.degenerate_facets, stats.edges_fixed, stats.facets_removed, -// stats.facets_added, stats.facets_reversed, stats.backwards_edges); - - if (is_windows10()) - tooltip += _(L("Right button click the icon to fix STL through Netfabb")); - - GetMainWindow()->SetToolTip(tooltip); + else if (col->GetTitle() == _("Name") ) + { + int obj_idx, vol_idx; + get_selected_item_indexes(obj_idx, vol_idx, item); + GetMainWindow()->SetToolTip(get_mesh_errors_list(obj_idx, vol_idx)); } else GetMainWindow()->SetToolTip(""); // hide tooltip @@ -533,10 +606,12 @@ void ObjectList::OnContextMenu(wxDataViewEvent&) if (title == " ") show_context_menu(); - else if (title == _("Name") && pt.x >15 && - m_objects_model->GetBitmap(item).GetRefData() == m_bmp_manifold_warning.GetRefData()) + else if (title == _("Name") && pt.x > 1.6f*wxGetApp().em_unit() && pt.x < 3.2f*wxGetApp().em_unit()) { - if (is_windows10()) + int obj_idx, vol_idx; + get_selected_item_indexes(obj_idx, vol_idx, item); + + if (is_windows10() && get_mesh_errors_count(obj_idx, vol_idx) > 0) fix_through_netfabb(); } @@ -1729,6 +1804,7 @@ void ObjectList::parts_changed(int obj_idx) void ObjectList::part_selection_changed() { int obj_idx = -1; + int volume_id = -1; m_config = nullptr; wxString og_name = wxEmptyString; @@ -1775,7 +1851,7 @@ void ObjectList::part_selection_changed() } else if (m_objects_model->GetItemType(item) == itVolume) { og_name = _(L("Part manipulation")); - const auto volume_id = m_objects_model->GetVolumeIdByItem(item); + volume_id = m_objects_model->GetVolumeIdByItem(item); m_config = &(*m_objects)[obj_idx]->volumes[volume_id]->config; update_and_show_manipulations = true; } @@ -1795,7 +1871,11 @@ void ObjectList::part_selection_changed() if (update_and_show_manipulations) { wxGetApp().obj_manipul()->get_og()->set_name(" " + og_name + " "); - wxGetApp().obj_manipul()->get_og()->set_value("object_name", m_objects_model->GetName(GetSelection())); + + if (item) { + wxGetApp().obj_manipul()->get_og()->set_value("object_name", m_objects_model->GetName(item)); + wxGetApp().obj_manipul()->update_manifold_warning_icon_state(get_mesh_errors_list(obj_idx, volume_id)); + } } if (update_and_show_settings) @@ -1815,16 +1895,13 @@ void ObjectList::part_selection_changed() void ObjectList::add_object_to_list(size_t obj_idx) { auto model_object = (*m_objects)[obj_idx]; - wxString item_name = from_u8(model_object->name); + const wxString& item_name = from_u8(model_object->name); const auto item = m_objects_model->Add(item_name, !model_object->config.has("extruder") ? 0 : model_object->config.option("extruder")->value); // Add error icon if detected auto-repaire - auto stats = model_object->volumes[0]->mesh.stl.stats; - int errors = stats.degenerate_facets + stats.edges_fixed + stats.facets_removed + - stats.facets_added + stats.facets_reversed + stats.backwards_edges; - if (errors > 0) { + if (get_mesh_errors_count(obj_idx) > 0) { wxVariant variant; variant << PrusaDataViewBitmapText(item_name, m_bmp_manifold_warning); m_objects_model->SetValue(variant, item, 0); @@ -2641,18 +2718,10 @@ void ObjectList::rename_item() update_name_in_model(item); } -void ObjectList::fix_through_netfabb() const +void ObjectList::fix_through_netfabb() { - const wxDataViewItem item = GetSelection(); - if (!item) - return; - - const ItemType type = m_objects_model->GetItemType(item); - - const int obj_idx = type & itObject ? m_objects_model->GetIdByItem(item) : - type & itVolume ? m_objects_model->GetIdByItem(m_objects_model->GetTopParent(item)) : -1; - - const int vol_idx = type & itVolume ? m_objects_model->GetVolumeIdByItem(item) : -1; + int obj_idx, vol_idx; + get_selected_item_indexes(obj_idx, vol_idx); wxGetApp().plater()->fix_through_netfabb(obj_idx, vol_idx); @@ -2666,16 +2735,10 @@ void ObjectList::update_item_error_icon(const int obj_idx, const int vol_idx) co if (!item) return; - auto model_object = (*m_objects)[obj_idx]; - - const stl_stats& stats = model_object->volumes[vol_idx<0 ? 0 : vol_idx]->mesh.stl.stats; - const int errors = stats.degenerate_facets + stats.edges_fixed + stats.facets_removed + - stats.facets_added + stats.facets_reversed + stats.backwards_edges; - - if (errors == 0) { + if (get_mesh_errors_count(obj_idx, vol_idx) == 0) { // delete Error_icon if all errors are fixed wxVariant variant; - variant << PrusaDataViewBitmapText(from_u8(model_object->name), wxNullBitmap); + variant << PrusaDataViewBitmapText(from_u8((*m_objects)[obj_idx]->name), wxNullBitmap); m_objects_model->SetValue(variant, item, 0); } } diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index a0343100ab..617b6da8a0 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -177,6 +177,16 @@ public: void init_icons(); + // Get obj_idx and vol_idx values for the selected (by default) or an adjusted item + void get_selected_item_indexes(int& obj_idx, int& vol_idx, const wxDataViewItem& item = wxDataViewItem(0)); + // Get count of errors in the mesh + int get_mesh_errors_count(const int obj_idx, const int vol_idx = -1) const; + /* Get list of errors in the mesh. Return value is a string, used for the tooltip + * Function without parameters is for a call from Manipulation panel, + * when we don't know parameters of selected item + */ + wxString get_mesh_errors_list(const int obj_idx, const int vol_idx = -1) const; + wxString get_mesh_errors_list(); void set_tooltip_for_item(const wxPoint& pt); void selection_changed(); @@ -285,7 +295,7 @@ public: void instances_to_separated_objects(const int obj_idx); void split_instances(); void rename_item(); - void fix_through_netfabb() const; + void fix_through_netfabb(); void update_item_error_icon(const int obj_idx, int vol_idx) const ; void paste_volumes_into_list(int obj_idx, const ModelVolumePtrs& volumes); diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index f9284a19b2..e623114e9d 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -10,6 +10,7 @@ #include "Selection.hpp" #include +#include "slic3r/Utils/FixModelByWin10.hpp" namespace Slic3r { @@ -20,6 +21,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : OG_Settings(parent, true) #ifndef __APPLE__ , m_focused_option("") + , m_manifold_warning_bmp(create_scaled_bitmap(parent, "exclamation")) #endif // __APPLE__ { m_og->set_name(_(L("Object Manipulation"))); @@ -42,17 +44,47 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : ConfigOptionDef def; // Objects(sub-objects) name - def.label = L("Name"); +// def.label = L("Name"); +// def.gui_type = "legend"; +// def.tooltip = L("Object name"); +// def.width = 21 * wxGetApp().em_unit(); +// def.default_value = new ConfigOptionString{ " " }; +// m_og->append_single_option_line(Option(def, "object_name")); + + Line line = Line{ "Name", "Object name" }; + + auto manifold_warning_icon = [this](wxWindow* parent) { + m_fix_throught_netfab_bitmap = new wxStaticBitmap(parent, wxID_ANY, wxNullBitmap); + auto sizer = new wxBoxSizer(wxHORIZONTAL); + sizer->Add(m_fix_throught_netfab_bitmap); + + if (is_windows10()) + m_fix_throught_netfab_bitmap->Bind(wxEVT_CONTEXT_MENU, [this](wxCommandEvent &e) + { + // if object/sub-object has no errors + if (m_fix_throught_netfab_bitmap->GetBitmap().GetRefData() == wxNullBitmap.GetRefData()) + return; + + wxGetApp().obj_list()->fix_through_netfabb(); + update_manifold_warning_icon_state(wxGetApp().obj_list()->get_mesh_errors_list()); + }); + + return sizer; + }; + + line.append_widget(manifold_warning_icon); + def.label = ""; def.gui_type = "legend"; def.tooltip = L("Object name"); def.width = 21 * wxGetApp().em_unit(); def.default_value = new ConfigOptionString{ " " }; - m_og->append_single_option_line(Option(def, "object_name")); + line.append_option(Option(def, "object_name")); + m_og->append_line(line); const int field_width = 5 * wxGetApp().em_unit()/*50*/; // Legend for object modification - auto line = Line{ "", "" }; + line = Line{ "", "" }; def.label = ""; def.type = coString; def.width = field_width/*50*/; @@ -334,6 +366,14 @@ void ObjectManipulation::emulate_kill_focus() else on_change(option, 0); } + +void ObjectManipulation::update_manifold_warning_icon_state(const wxString& tooltip) +{ + m_fix_throught_netfab_bitmap->SetBitmap(tooltip.IsEmpty() ? wxNullBitmap : m_manifold_warning_bmp); + + m_fix_throught_netfab_bitmap->SetToolTip(tooltip); +} + #endif // __APPLE__ void ObjectManipulation::reset_settings_value() diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp index a5a180a56b..071edbed8c 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp @@ -78,6 +78,9 @@ class ObjectManipulation : public OG_Settings bool m_uniform_scale {true}; PrusaLockButton* m_lock_bnt{ nullptr }; + wxBitmap m_manifold_warning_bmp; + wxStaticBitmap* m_fix_throught_netfab_bitmap; + #ifndef __APPLE__ // Currently focused option name (empty if none) std::string m_focused_option; @@ -107,6 +110,8 @@ public: void emulate_kill_focus(); #endif // __APPLE__ + void update_manifold_warning_icon_state(const wxString& tooltip); + private: void reset_settings_value(); From fc67f44bea9a235621d1d1e454125506c5049f48 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Wed, 24 Apr 2019 13:43:39 +0200 Subject: [PATCH 04/94] Fixed typo --- src/slic3r/GUI/GLSelectionRectangle.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GLSelectionRectangle.hpp b/src/slic3r/GUI/GLSelectionRectangle.hpp index ef1f831ccc..2422066e07 100644 --- a/src/slic3r/GUI/GLSelectionRectangle.hpp +++ b/src/slic3r/GUI/GLSelectionRectangle.hpp @@ -6,7 +6,7 @@ namespace Slic3r { namespace GUI { -class Camera; +struct Camera; class GLSelectionRectangle { public: From 97101409487c77b06d66fece7063158d2dcf3e90 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Wed, 24 Apr 2019 15:07:28 +0200 Subject: [PATCH 05/94] int GLCanvas3D::m_hover_volume_id replaced with std::vector GLCanvas3D::m_hover_volume_idxs --- src/slic3r/GUI/GLCanvas3D.cpp | 50 +++++++++++------------ src/slic3r/GUI/GLCanvas3D.hpp | 4 +- src/slic3r/GUI/Gizmos/GLGizmosManager.cpp | 2 +- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 8aa3205a7d..09b4b2e14b 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1205,7 +1205,6 @@ GLCanvas3D::GLCanvas3D(wxGLCanvas* canvas, Bed3D& bed, Camera& camera, GLToolbar , m_initialized(false) , m_use_VBOs(false) , m_apply_zoom_to_volumes_filter(false) - , m_hover_volume_id(-1) , m_legend_texture_enabled(false) , m_picking_enabled(false) , m_moving_enabled(false) @@ -2543,7 +2542,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) if (top_level_wnd && top_level_wnd->IsActive()) m_canvas->SetFocus(); m_mouse.position = pos.cast(); - // 1) forces a frame render to ensure that m_hover_volume_id is updated even when the user right clicks while + // 1) forces a frame render to ensure that m_hover_volume_idxs is updated even when the user right clicks while // the context menu is shown, ensuring it to disappear if the mouse is outside any volume and to // change the volume hover state if any is under the mouse // 2) when switching between 3d view and preview the size of the canvas changes if the side panels are visible, @@ -2589,20 +2588,21 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) // Don't deselect a volume if layer editing is enabled. We want the object to stay selected // during the scene manipulation. - if (m_picking_enabled && ((m_hover_volume_id != -1) || !is_layers_editing_enabled())) + if (m_picking_enabled && (!m_hover_volume_idxs.empty() || !is_layers_editing_enabled())) { - if (evt.LeftDown() && (m_hover_volume_id != -1)) + if (evt.LeftDown() && !m_hover_volume_idxs.empty()) { - bool already_selected = m_selection.contains_volume(m_hover_volume_id); + int volume_idx = get_first_hover_volume_idx(); + bool already_selected = m_selection.contains_volume(volume_idx); bool ctrl_down = evt.CmdDown(); Selection::IndicesList curr_idxs = m_selection.get_volume_idxs(); if (already_selected && ctrl_down) - m_selection.remove(m_hover_volume_id); + m_selection.remove(volume_idx); else { - m_selection.add(m_hover_volume_id, !ctrl_down, true); + m_selection.add(volume_idx, !ctrl_down, true); m_mouse.drag.move_requires_threshold = !already_selected; if (already_selected) m_mouse.set_move_start_threshold_position_2D_as_invalid(); @@ -2610,6 +2610,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) m_mouse.drag.move_start_threshold_position_2D = pos; } + // propagate event through callback if (curr_idxs != m_selection.get_volume_idxs()) { m_gizmos.refresh_on_off_state(m_selection); @@ -2620,18 +2621,18 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) } } - // propagate event through callback - if (m_hover_volume_id != -1) + if (!m_hover_volume_idxs.empty()) { if (evt.LeftDown() && m_moving_enabled && (m_mouse.drag.move_volume_idx == -1)) { // Only accept the initial position, if it is inside the volume bounding box. - BoundingBoxf3 volume_bbox = m_volumes.volumes[m_hover_volume_id]->transformed_bounding_box(); + int volume_idx = get_first_hover_volume_idx(); + BoundingBoxf3 volume_bbox = m_volumes.volumes[volume_idx]->transformed_bounding_box(); volume_bbox.offset(1.0); if (volume_bbox.contains(m_mouse.scene_position)) { // The dragging operation is initiated. - m_mouse.drag.move_volume_idx = m_hover_volume_id; + m_mouse.drag.move_volume_idx = volume_idx; m_selection.start_dragging(); m_mouse.drag.start_position_3D = m_mouse.scene_position; m_moving = true; @@ -2648,7 +2649,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) Vec3d cur_pos = m_mouse.drag.start_position_3D; // we do not want to translate objects if the user just clicked on an object while pressing shift to remove it from the selection and then drag - if (m_selection.contains_volume(m_hover_volume_id)) + if (m_selection.contains_volume(get_first_hover_volume_idx())) { if (m_camera.get_theta() == 90.0f) { @@ -2703,7 +2704,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) else if (evt.LeftIsDown()) { // if dragging over blank area with left button, rotate - if ((m_hover_volume_id == -1) && m_mouse.is_start_position_3D_defined()) + if (m_hover_volume_idxs.empty() && m_mouse.is_start_position_3D_defined()) { const Vec3d& orig = m_mouse.drag.start_position_3D; m_camera.phi += (((float)pos(0) - (float)orig(0)) * TRACKBALLSIZE); @@ -2745,7 +2746,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) // of the scene with the background processing data should be performed. post_event(SimpleEvent(EVT_GLCANVAS_MOUSE_DRAGGING_FINISHED)); } - else if (evt.LeftUp() && !m_mouse.dragging && (m_hover_volume_id == -1) && !is_layers_editing_enabled()) + else if (evt.LeftUp() && !m_mouse.dragging && m_hover_volume_idxs.empty() && !is_layers_editing_enabled()) { // deselect and propagate event through callback if (!evt.ShiftDown() && m_picking_enabled) @@ -2761,18 +2762,18 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) else if (evt.RightUp()) { m_mouse.position = pos.cast(); - // forces a frame render to ensure that m_hover_volume_id is updated even when the user right clicks while + // forces a frame render to ensure that m_hover_volume_idxs is updated even when the user right clicks while // the context menu is already shown render(); - if (m_hover_volume_id != -1) + if (!m_hover_volume_idxs.empty()) { // if right clicking on volume, propagate event through callback (shows context menu) - if (m_volumes.volumes[m_hover_volume_id]->hover - && !m_volumes.volumes[m_hover_volume_id]->is_wipe_tower // no context menu for the wipe tower + int volume_idx = get_first_hover_volume_idx(); + if (!m_volumes.volumes[volume_idx]->is_wipe_tower // no context menu for the wipe tower && m_gizmos.get_current_type() != GLGizmosManager::SlaSupports) // disable context menu when the gizmo is open { // forces the selection of the volume - m_selection.add(m_hover_volume_id); + m_selection.add(volume_idx); m_gizmos.refresh_on_off_state(m_selection); post_event(SimpleEvent(EVT_GLCANVAS_OBJECT_SELECT)); m_gizmos.update_data(*this); @@ -3541,6 +3542,8 @@ void GLCanvas3D::_picking_pass() const if (m_picking_enabled && !m_mouse.dragging && (pos != Vec2d(DBL_MAX, DBL_MAX))) { + m_hover_volume_idxs.clear(); + // Render the object for picking. // FIXME This cannot possibly work in a multi - sampled context as the color gets mangled by the anti - aliasing. // Better to use software ray - casting on a bounding - box hierarchy. @@ -3579,14 +3582,11 @@ void GLCanvas3D::_picking_pass() const } if ((0 <= volume_id) && (volume_id < (int)m_volumes.volumes.size())) { - m_hover_volume_id = volume_id; + m_hover_volume_idxs.push_back(volume_id); m_gizmos.set_hover_id(-1); } else - { - m_hover_volume_id = -1; m_gizmos.set_hover_id(inside && volume_id <= GLGizmoBase::BASE_ID ? (GLGizmoBase::BASE_ID - volume_id) : -1); - } _update_volumes_hover_state(); } @@ -4077,10 +4077,10 @@ void GLCanvas3D::_update_volumes_hover_state() const v->hover = false; } - if (m_hover_volume_id == -1) + if (m_hover_volume_idxs.empty()) return; - GLVolume* volume = m_volumes.volumes[m_hover_volume_id]; + GLVolume* volume = m_volumes.volumes[get_first_hover_volume_idx()]; if (volume->is_modifier) volume->hover = true; else diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index e81d46f117..8a5c34a2c9 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -426,7 +426,7 @@ private: bool m_initialized; bool m_use_VBOs; bool m_apply_zoom_to_volumes_filter; - mutable int m_hover_volume_id; + mutable std::vector m_hover_volume_idxs; bool m_warning_texture_enabled; bool m_legend_texture_enabled; bool m_picking_enabled; @@ -575,7 +575,7 @@ public: float get_view_toolbar_height() const { return m_view_toolbar.get_height(); } int get_move_volume_id() const { return m_mouse.drag.move_volume_idx; } - int get_hover_volume_id() const { return m_hover_volume_id; } + int get_first_hover_volume_idx() const { return m_hover_volume_idxs.empty() ? -1 : m_hover_volume_idxs.front(); } // Returns the view ray line, in world coordinate, at the given mouse position. Linef3 mouse_ray(const Point& mouse_pos); diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index 5e37e42ad6..88e374792e 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -693,7 +693,7 @@ bool GLGizmosManager::on_mouse(wxMouseEvent& evt, GLCanvas3D& canvas) gizmo_event(SLAGizmoEventType::LeftUp, mouse_pos, evt.ShiftDown(), evt.AltDown(), evt.ControlDown()); processed = true; } - else if (evt.LeftUp() && (m_current == Flatten) && ((canvas.get_hover_volume_id() != -1) || grabber_contains_mouse())) + else if (evt.LeftUp() && (m_current == Flatten) && ((canvas.get_first_hover_volume_idx() != -1) || grabber_contains_mouse())) { // to avoid to loose the selection when user clicks an object while the Flatten gizmo is active processed = true; From d79a2b8d2d0ffd6019330c41e7bb8b1ee59a2f53 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Wed, 24 Apr 2019 15:43:52 +0200 Subject: [PATCH 06/94] GLCanvas3D -> added support for cursor change and change cursor when using SLA support gizmo rectangle selection --- src/slic3r/GUI/GLCanvas3D.cpp | 31 ++++++++++++++++++++ src/slic3r/GUI/GLCanvas3D.hpp | 11 +++++++ src/slic3r/GUI/GLSelectionRectangle.cpp | 6 ++-- src/slic3r/GUI/GLSelectionRectangle.hpp | 4 +-- src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp | 6 ++-- src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp | 3 ++ src/slic3r/GUI/Gizmos/GLGizmosManager.cpp | 31 ++++++++++++++++---- 7 files changed, 79 insertions(+), 13 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 09b4b2e14b..af0aa9a699 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1213,6 +1213,7 @@ GLCanvas3D::GLCanvas3D(wxGLCanvas* canvas, Bed3D& bed, Camera& camera, GLToolbar , m_regenerate_volumes(true) , m_moving(false) , m_tab_down(false) + , m_cursor_type(Standard) , m_color_by("volume") , m_reload_delayed(false) , m_render_sla_auxiliaries(true) @@ -2323,9 +2324,25 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) // m_canvas->HandleAsNavigationKey(evt); // XXX: Doesn't work in some cases / on Linux post_event(SimpleEvent(EVT_GLCANVAS_TAB)); } + else if (keyCode == WXK_SHIFT) + { + set_cursor(Standard); + } + else if (keyCode == WXK_ALT) + { + set_cursor(Standard); + } } else if (evt.GetEventType() == wxEVT_KEY_DOWN) { m_tab_down = keyCode == WXK_TAB && !evt.HasAnyModifiers(); + if (keyCode == WXK_SHIFT) + { + set_cursor(Cross); + } + else if (keyCode == WXK_ALT) + { + set_cursor(Cross); + } } } } @@ -3173,6 +3190,20 @@ double GLCanvas3D::get_size_proportional_to_max_bed_size(double factor) const return factor * m_bed.get_bounding_box().max_size(); } +void GLCanvas3D::set_cursor(ECursorType type) +{ + if ((m_canvas != nullptr) && (m_cursor_type != type)) + { + switch (type) + { + case Standard: { m_canvas->SetCursor(*wxSTANDARD_CURSOR); break; } + case Cross: { m_canvas->SetCursor(*wxCROSS_CURSOR); break; } + } + + m_cursor_type = type; + } +} + bool GLCanvas3D::_is_shown_on_screen() const { return (m_canvas != nullptr) ? m_canvas->IsShownOnScreen() : false; diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 8a5c34a2c9..fa55dc6836 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -392,6 +392,14 @@ private: void render(const GLCanvas3D& canvas) const; }; +public: + enum ECursorType : unsigned char + { + Standard, + Cross + }; + +private: wxGLCanvas* m_canvas; wxGLContext* m_context; #if ENABLE_RETINA_GL @@ -436,6 +444,7 @@ private: bool m_regenerate_volumes; bool m_moving; bool m_tab_down; + ECursorType m_cursor_type; // Following variable is obsolete and it should be safe to remove it. // I just don't want to do it now before a release (Lukas Matena 24.3.2019) @@ -587,6 +596,8 @@ public: double get_size_proportional_to_max_bed_size(double factor) const; + void set_cursor(ECursorType type); + private: bool _is_shown_on_screen() const; diff --git a/src/slic3r/GUI/GLSelectionRectangle.cpp b/src/slic3r/GUI/GLSelectionRectangle.cpp index a908d13ec9..39b92ff8fc 100644 --- a/src/slic3r/GUI/GLSelectionRectangle.cpp +++ b/src/slic3r/GUI/GLSelectionRectangle.cpp @@ -9,7 +9,7 @@ namespace GUI { void GLSelectionRectangle::start_dragging(const Vec2d& mouse_position, float width, float height, EState status) { - if (is_active() || status==Off) + if (is_dragging() || status == Off) return; m_width = width; @@ -23,7 +23,7 @@ void GLSelectionRectangle::start_dragging(const Vec2d& mouse_position, float wid void GLSelectionRectangle::dragging(const Vec2d& mouse_position) { - if (is_active()) + if (is_dragging()) m_end_corner = mouse_position; } @@ -31,7 +31,7 @@ void GLSelectionRectangle::dragging(const Vec2d& mouse_position) std::vector GLSelectionRectangle::end_dragging(const Camera& camera, const std::vector& points) { - if (!is_active()) + if (!is_dragging()) return std::vector(); m_status = Off; diff --git a/src/slic3r/GUI/GLSelectionRectangle.hpp b/src/slic3r/GUI/GLSelectionRectangle.hpp index 2422066e07..f7d5bbdc70 100644 --- a/src/slic3r/GUI/GLSelectionRectangle.hpp +++ b/src/slic3r/GUI/GLSelectionRectangle.hpp @@ -27,8 +27,8 @@ public: std::vector end_dragging(const Camera& camera, const std::vector& points); void render() const; - - bool is_active() const { return m_status != Off; } + + bool is_dragging() const { return m_status != Off; } EState get_status() const { return m_status; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp index b31eb272b9..ebb7df1389 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp @@ -485,7 +485,7 @@ bool GLGizmoSlaSupports::gizmo_event(SLAGizmoEventType action, const Vec2d& mous } // left down without selection rectangle - place point on the mesh: - if (action == SLAGizmoEventType::LeftDown && !m_selection_rectangle.is_active() && !shift_down) { + if (action == SLAGizmoEventType::LeftDown && !m_selection_rectangle.is_dragging() && !shift_down) { // If any point is in hover state, this should initiate its move - return control back to GLCanvas: if (m_hover_id != -1) return false; @@ -510,7 +510,7 @@ bool GLGizmoSlaSupports::gizmo_event(SLAGizmoEventType action, const Vec2d& mous } // left up with selection rectangle - select points inside the rectangle: - if ((action == SLAGizmoEventType::LeftUp || action == SLAGizmoEventType::ShiftUp || action == SLAGizmoEventType::AltUp) && m_selection_rectangle.is_active()) { + if ((action == SLAGizmoEventType::LeftUp || action == SLAGizmoEventType::ShiftUp || action == SLAGizmoEventType::AltUp) && m_selection_rectangle.is_dragging()) { // Is this a selection or deselection rectangle? GLSelectionRectangle::EState rectangle_status = m_selection_rectangle.get_status(); @@ -601,7 +601,7 @@ bool GLGizmoSlaSupports::gizmo_event(SLAGizmoEventType action, const Vec2d& mous return true; // point has been placed and the button not released yet // this prevents GLCanvas from starting scene rotation - if (m_selection_rectangle.is_active()) { + if (m_selection_rectangle.is_dragging()) { m_selection_rectangle.dragging(mouse_position); return true; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp index 92d80b6eba..ab5dc8d67c 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp @@ -68,6 +68,9 @@ public: void delete_selected_points(bool force = false); ClippingPlane get_sla_clipping_plane() const; + bool is_in_editing_mode() const { return m_editing_mode; } + bool is_selection_rectangle_dragging() const { return m_selection_rectangle.is_dragging(); } + private: bool on_init(); void on_update(const UpdateData& data, const Selection& selection); diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index 88e374792e..b7e1b3f07a 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -843,13 +843,34 @@ bool GLGizmosManager::on_key(wxKeyEvent& evt, GLCanvas3D& canvas) if (evt.GetEventType() == wxEVT_KEY_UP) { - if ((m_current == SlaSupports) && (keyCode == WXK_SHIFT) && gizmo_event(SLAGizmoEventType::ShiftUp)) - // shift has been just released - SLA gizmo might want to close rectangular selection. - processed = true; + if (m_current == SlaSupports) + { + GLGizmoSlaSupports* gizmo = reinterpret_cast(get_current()); - if ((m_current == SlaSupports) && (keyCode == WXK_ALT) && gizmo_event(SLAGizmoEventType::AltUp)) - // alt has been just released - SLA gizmo might want to close rectangular selection. + if (keyCode == WXK_SHIFT) + { + // shift has been just released - SLA gizmo might want to close rectangular selection. + if (gizmo_event(SLAGizmoEventType::ShiftUp) || (gizmo->is_in_editing_mode() && gizmo->is_selection_rectangle_dragging())) + processed = true; + } + else if (keyCode == WXK_ALT) + { + // alt has been just released - SLA gizmo might want to close rectangular selection. + if (gizmo_event(SLAGizmoEventType::AltUp) || (gizmo->is_in_editing_mode() && gizmo->is_selection_rectangle_dragging())) + processed = true; + } + } + + if (processed) + canvas.set_cursor(GLCanvas3D::Standard); + } + else if (evt.GetEventType() == wxEVT_KEY_DOWN) + { + if ((m_current == SlaSupports) && ((keyCode == WXK_SHIFT) || (keyCode == WXK_ALT)) && reinterpret_cast(get_current())->is_in_editing_mode()) + { + canvas.set_cursor(GLCanvas3D::Cross); processed = true; + } } if (processed) From 9d070410c233cff14c84820e8b3b513824b92a6f Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Wed, 24 Apr 2019 16:01:27 +0200 Subject: [PATCH 07/94] Refactoring of GLSelectionRectangle --- src/slic3r/GUI/GLSelectionRectangle.cpp | 181 ++++++++++--------- src/slic3r/GUI/GLSelectionRectangle.hpp | 28 +-- src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp | 12 +- 3 files changed, 111 insertions(+), 110 deletions(-) diff --git a/src/slic3r/GUI/GLSelectionRectangle.cpp b/src/slic3r/GUI/GLSelectionRectangle.cpp index 39b92ff8fc..03ee7e1f6f 100644 --- a/src/slic3r/GUI/GLSelectionRectangle.cpp +++ b/src/slic3r/GUI/GLSelectionRectangle.cpp @@ -1,116 +1,119 @@ #include "GLSelectionRectangle.hpp" #include "Camera.hpp" #include "3DScene.hpp" +#include "GLCanvas3D.hpp" #include namespace Slic3r { namespace GUI { -void GLSelectionRectangle::start_dragging(const Vec2d& mouse_position, float width, float height, EState status) -{ - if (is_dragging() || status == Off) - return; + void GLSelectionRectangle::start_dragging(const Vec2d& mouse_position, EState state) + { + if (is_dragging() || (state == Off)) + return; - m_width = width; - m_height = height; - m_status = status; - m_start_corner = mouse_position; - m_end_corner = mouse_position; -} - - - -void GLSelectionRectangle::dragging(const Vec2d& mouse_position) -{ - if (is_dragging()) + m_state = state; + m_start_corner = mouse_position; m_end_corner = mouse_position; -} - - - -std::vector GLSelectionRectangle::end_dragging(const Camera& camera, const std::vector& points) -{ - if (!is_dragging()) - return std::vector(); - - m_status = Off; - std::vector out; - - const std::array& viewport = camera.get_viewport(); - const Transform3d& modelview_matrix = camera.get_view_matrix(); - const Transform3d& projection_matrix = camera.get_projection_matrix(); - - // bounding box created from the rectangle corners - will take care of order of the corners - BoundingBox rectangle(Points{Point(m_start_corner.cast()), Point(m_end_corner.cast())}); - - // Iterate over all points and determine whether they're in the rectangle. - for (unsigned int i=0; i GLSelectionRectangle::stop_dragging(const GLCanvas3D& canvas, const std::vector& points) + { + std::vector out; - glsafe(::glPushAttrib(GL_TRANSFORM_BIT)); // remember current MatrixMode + if (!is_dragging()) + return out; - glsafe(::glMatrixMode(GL_MODELVIEW)); // cache modelview matrix and set to identity - glsafe(::glPushMatrix()); - glsafe(::glLoadIdentity()); + m_state = Off; - glsafe(::glMatrixMode(GL_PROJECTION)); // cache projection matrix and set to identity - glsafe(::glPushMatrix()); - glsafe(::glLoadIdentity()); + const Camera& camera = canvas.get_camera(); + const std::array& viewport = camera.get_viewport(); + const Transform3d& modelview_matrix = camera.get_view_matrix(); + const Transform3d& projection_matrix = camera.get_projection_matrix(); - glsafe(::glOrtho(0.f, m_width, m_height, 0.f, -1.f, 1.f)); // set projection matrix so that world coords = window coords + // bounding box created from the rectangle corners - will take care of order of the corners + BoundingBox rectangle(Points{ Point(m_start_corner.cast()), Point(m_end_corner.cast()) }); - // render the selection rectangle (window coordinates): - glsafe(::glPushAttrib(GL_ENABLE_BIT)); - glsafe(::glLineStipple(4, 0xAAAA)); - glsafe(::glEnable(GL_LINE_STIPPLE)); + // Iterate over all points and determine whether they're in the rectangle. + for (unsigned int i = 0; i end_dragging(const Camera& camera, const std::vector& points); + std::vector stop_dragging(const GLCanvas3D& canvas, const std::vector& points); - void render() const; + // Disables the rectangle. + void stop_dragging(); - bool is_dragging() const { return m_status != Off; } - EState get_status() const { return m_status; } + void render(const GLCanvas3D& canvas) const; + + bool is_dragging() const { return m_state != Off; } + EState get_state() const { return m_state; } - - private: - EState m_status = Off; + EState m_state = Off; Vec2d m_start_corner; Vec2d m_end_corner; - float m_width; - float m_height; }; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp index ebb7df1389..5be5e9a89c 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp @@ -100,7 +100,7 @@ void GLGizmoSlaSupports::on_render(const Selection& selection) const if (m_quadric != nullptr && selection.is_from_single_instance()) render_points(selection, false); - m_selection_rectangle.render(); + m_selection_rectangle.render(m_parent); render_clipping_plane(selection); glsafe(::glDisable(GL_BLEND)); @@ -467,9 +467,7 @@ bool GLGizmoSlaSupports::gizmo_event(SLAGizmoEventType action, const Vec2d& mous if (action == SLAGizmoEventType::LeftDown && (shift_down || alt_down || control_down)) { if (m_hover_id == -1) { if (shift_down || alt_down) { - Size size = m_parent.get_canvas_size(); - m_selection_rectangle.start_dragging(mouse_position, size.get_width(), size.get_height(), - shift_down ? GLSelectionRectangle::SlaSelect : GLSelectionRectangle::SlaDeselect); + m_selection_rectangle.start_dragging(mouse_position, shift_down ? GLSelectionRectangle::Select : GLSelectionRectangle::Deselect); } } else { @@ -512,7 +510,7 @@ bool GLGizmoSlaSupports::gizmo_event(SLAGizmoEventType action, const Vec2d& mous // left up with selection rectangle - select points inside the rectangle: if ((action == SLAGizmoEventType::LeftUp || action == SLAGizmoEventType::ShiftUp || action == SLAGizmoEventType::AltUp) && m_selection_rectangle.is_dragging()) { // Is this a selection or deselection rectangle? - GLSelectionRectangle::EState rectangle_status = m_selection_rectangle.get_status(); + GLSelectionRectangle::EState rectangle_status = m_selection_rectangle.get_state(); // First collect positions of all the points in world coordinates. const Transform3d& instance_matrix = m_model_object->instances[m_active_instance]->get_transformation().get_matrix(); @@ -524,7 +522,7 @@ bool GLGizmoSlaSupports::gizmo_event(SLAGizmoEventType action, const Vec2d& mous } // Now ask the rectangle which of the points are inside. const Camera& camera = m_parent.get_camera(); - std::vector selected_idxs = m_selection_rectangle.end_dragging(camera, points); + std::vector selected_idxs = m_selection_rectangle.stop_dragging(m_parent, points); // we'll recover current look direction (in world coords) and transform it to model coords. const Selection& selection = m_parent.get_selection(); @@ -577,7 +575,7 @@ bool GLGizmoSlaSupports::gizmo_event(SLAGizmoEventType action, const Vec2d& mous } if (!is_obscured) { - if (rectangle_status == GLSelectionRectangle::SlaDeselect) + if (rectangle_status == GLSelectionRectangle::Deselect) unselect_point(i); else select_point(i); From b4d5287d0c9826bcd3c95b595443efd437cd3f85 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 24 Apr 2019 16:04:47 +0200 Subject: [PATCH 08/94] Refactoring: get_mesh_errors_count() moved to ModelObject + added get_object_stl_stats() to ModelObject --- src/libslic3r/Model.cpp | 42 ++++++++++++++++ src/libslic3r/Model.hpp | 5 ++ src/slic3r/GUI/GUI_ObjectList.cpp | 60 ++++++----------------- src/slic3r/GUI/GUI_ObjectList.hpp | 2 +- src/slic3r/GUI/GUI_ObjectManipulation.hpp | 1 + src/slic3r/GUI/Plater.cpp | 15 +++++- 6 files changed, 78 insertions(+), 47 deletions(-) diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 37e1f4a1bc..d1f426c5b8 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -1451,6 +1451,48 @@ std::string ModelObject::get_export_filename() const return ret; } +stl_stats ModelObject::get_object_stl_stats() const +{ + if (this->volumes.size() == 1) + return this->volumes[0]->mesh.stl.stats; + + stl_stats full_stats; + + // initialise full_stats + full_stats.degenerate_facets= 0; + full_stats.edges_fixed = 0; + full_stats.facets_removed = 0; + full_stats.facets_added = 0; + full_stats.facets_reversed = 0; + full_stats.backwards_edges = 0; + full_stats.normals_fixed = 0; + + // fill full_stats from all objet's meshes + for (ModelVolume* volume : this->volumes) + { + const stl_stats& stats = volume->mesh.stl.stats; + + full_stats.degenerate_facets+= stats.degenerate_facets; + full_stats.edges_fixed += stats.edges_fixed; + full_stats.facets_removed += stats.facets_removed; + full_stats.facets_added += stats.facets_added; + full_stats.facets_reversed += stats.facets_reversed; + full_stats.backwards_edges += stats.backwards_edges; + } + + return full_stats; +} + +int ModelObject::get_mesh_errors_count(const int vol_idx /*= -1*/) const +{ + const stl_stats& stats = vol_idx == -1 ? + get_object_stl_stats() : + this->volumes[vol_idx]->mesh.stl.stats; + + return stats.degenerate_facets + stats.edges_fixed + stats.facets_removed + + stats.facets_added + stats.facets_reversed + stats.backwards_edges; +} + void ModelVolume::set_material_id(t_model_material_id material_id) { m_material_id = material_id; diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index 80187d259f..0fc3fc1687 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -277,6 +277,11 @@ public: std::string get_export_filename() const; + // Get full stl statistics for all object's meshes + stl_stats get_object_stl_stats() const; + // Get count of errors in the mesh( or all object's meshes, if volume index isn't defined) + int get_mesh_errors_count(const int vol_idx = -1) const; + protected: friend class Print; friend class SLAPrint; diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index b16198d190..d65ad2acc9 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -216,23 +216,7 @@ int ObjectList::get_mesh_errors_count(const int obj_idx, const int vol_idx /*= - if (obj_idx < 0) return 0; - int errors = 0; - - std::vector volumes; - if (vol_idx == -1) - volumes = (*m_objects)[obj_idx]->volumes; - else - volumes.emplace_back((*m_objects)[obj_idx]->volumes[vol_idx]); - - for (ModelVolume* volume : volumes) - { - const stl_stats& stats = volume->mesh.stl.stats; - - errors += stats.degenerate_facets + stats.edges_fixed + stats.facets_removed + - stats.facets_added + stats.facets_reversed + stats.backwards_edges; - } - - return errors; + return (*m_objects)[obj_idx]->get_mesh_errors_count(vol_idx); } wxString ObjectList::get_mesh_errors_list(const int obj_idx, const int vol_idx /*= -1*/) const @@ -245,33 +229,19 @@ wxString ObjectList::get_mesh_errors_list(const int obj_idx, const int vol_idx / // Create tooltip string, if there are errors wxString tooltip = wxString::Format(_(L("Auto-repaired (%d errors):\n")), errors); - std::vector volumes; - if (vol_idx == -1) - volumes = (*m_objects)[obj_idx]->volumes; - else - volumes.emplace_back((*m_objects)[obj_idx]->volumes[vol_idx]); + const stl_stats& stats = vol_idx == -1 ? + (*m_objects)[obj_idx]->get_object_stl_stats() : + (*m_objects)[obj_idx]->volumes[vol_idx]->mesh.stl.stats; std::map error_msg = { - {L("degenerate facets") , 0}, - {L("edges fixed") , 0}, - {L("facets removed") , 0}, - {L("facets added") , 0}, - {L("facets reversed") , 0}, - {L("backwards edges") , 0} + { L("degenerate facets"), stats.degenerate_facets }, + { L("edges fixed"), stats.edges_fixed }, + { L("facets removed"), stats.facets_removed }, + { L("facets added"), stats.facets_added }, + { L("facets reversed"), stats.facets_reversed }, + { L("backwards edges"), stats.backwards_edges } }; - for (ModelVolume* volume : volumes) - { - const stl_stats& stats = volume->mesh.stl.stats; - - error_msg[L("degenerate facets")] += stats.degenerate_facets; - error_msg[L("edges fixed")] += stats.edges_fixed; - error_msg[L("facets removed")] += stats.facets_removed; - error_msg[L("facets added")] += stats.facets_added; - error_msg[L("facets reversed")] += stats.facets_reversed; - error_msg[L("backwards edges")] += stats.backwards_edges; - } - for (const auto& error : error_msg) if (error.second > 0) tooltip += wxString::Format(_("\t%d %s\n"), error.second, error.first); @@ -1170,13 +1140,15 @@ void ObjectList::append_menu_items_osx(wxMenu* menu) menu->AppendSeparator(); } -void ObjectList::append_menu_item_fix_through_netfabb(wxMenu* menu) +wxMenuItem* ObjectList::append_menu_item_fix_through_netfabb(wxMenu* menu) { - if (!is_windows10()) - return; - append_menu_item(menu, wxID_ANY, _(L("Fix through the Netfabb")), "", +// if (!is_windows10()) +// return; + wxMenuItem* menu_item = append_menu_item(menu, wxID_ANY, _(L("Fix through the Netfabb")), "", [this](wxCommandEvent&) { fix_through_netfabb(); }, "", menu); menu->AppendSeparator(); + + return menu_item; } void ObjectList::append_menu_item_export_stl(wxMenu* menu) const diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index 617b6da8a0..0dfa1f41cf 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -204,7 +204,7 @@ public: wxMenuItem* append_menu_item_change_type(wxMenu* menu); wxMenuItem* append_menu_item_instance_to_object(wxMenu* menu); void append_menu_items_osx(wxMenu* menu); - void append_menu_item_fix_through_netfabb(wxMenu* menu); + wxMenuItem* append_menu_item_fix_through_netfabb(wxMenu* menu); void append_menu_item_export_stl(wxMenu* menu) const ; void append_menu_item_change_extruder(wxMenu* menu) const; void append_menu_item_delete(wxMenu* menu); diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp index 071edbed8c..d3d5f84444 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp @@ -8,6 +8,7 @@ class wxStaticText; class PrusaLockButton; +class wxStaticBitmap; namespace Slic3r { namespace GUI { diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 8eb68fc393..dfb8fb98a4 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -926,7 +926,7 @@ void Sidebar::show_info_sizer() p->object_info->info_size->SetLabel(wxString::Format("%.2f x %.2f x %.2f",size(0), size(1), size(2))); p->object_info->info_materials->SetLabel(wxString::Format("%d", static_cast(model_object->materials_count()))); - auto& stats = model_object->volumes.front()->mesh.stl.stats; + const auto& stats = model_object->get_object_stl_stats();//model_object->volumes.front()->mesh.stl.stats; p->object_info->info_volume->SetLabel(wxString::Format("%.2f", stats.volume)); p->object_info->info_facets->SetLabel(wxString::Format(_(L("%d (%d shells)")), static_cast(model_object->facets_count()), stats.number_of_parts)); @@ -1284,6 +1284,7 @@ struct Plater::priv bool can_split_to_volumes() const; bool can_arrange() const; bool can_layers_editing() const; + bool can_fix_through_netfabb() const; private: bool init_object_menu(); @@ -2886,7 +2887,7 @@ bool Plater::priv::init_common_menu(wxMenu* menu, const bool is_part/* = false*/ menu->AppendSeparator(); } - sidebar->obj_list()->append_menu_item_fix_through_netfabb(menu); + wxMenuItem* item_fix_through_netfabb = sidebar->obj_list()->append_menu_item_fix_through_netfabb(menu); wxMenu* mirror_menu = new wxMenu(); if (mirror_menu == nullptr) @@ -2906,6 +2907,7 @@ bool Plater::priv::init_common_menu(wxMenu* menu, const bool is_part/* = false*/ { q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_mirror()); }, item_mirror->GetId()); q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_delete()); }, item_delete->GetId()); + q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_fix_through_netfabb()); }, item_fix_through_netfabb->GetId()); } return true; @@ -3075,6 +3077,15 @@ bool Plater::priv::can_delete_all() const return !model.objects.empty(); } +bool Plater::priv::can_fix_through_netfabb() const +{ + int obj_idx = get_selected_object_idx(); + if (obj_idx < 0) + return false; + + return model.objects[obj_idx]->get_mesh_errors_count() > 0; +} + bool Plater::priv::can_increase_instances() const { if (arranging || rotoptimizing) { From 2cc7b00a7d1d8e5f5f534a93da792d3297b9002c Mon Sep 17 00:00:00 2001 From: bubnikv Date: Wed, 24 Apr 2019 19:03:05 +0200 Subject: [PATCH 09/94] WIP: World / local transformations of an object instance from the side panel. --- src/slic3r/GUI/3DScene.hpp | 2 + src/slic3r/GUI/GLCanvas3D.cpp | 13 +- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 183 ++++++++++++++++------ src/slic3r/GUI/GUI_ObjectManipulation.hpp | 22 ++- src/slic3r/GUI/OptionsGroup.cpp | 30 ++-- src/slic3r/GUI/Plater.cpp | 25 +-- src/slic3r/GUI/Plater.hpp | 6 +- 7 files changed, 196 insertions(+), 85 deletions(-) diff --git a/src/slic3r/GUI/3DScene.hpp b/src/slic3r/GUI/3DScene.hpp index 88547359ea..faf5a745d9 100644 --- a/src/slic3r/GUI/3DScene.hpp +++ b/src/slic3r/GUI/3DScene.hpp @@ -275,6 +275,8 @@ public: int volume_id; // Instance ID, which is equal to the index of the respective ModelInstance in ModelObject.instances array. int instance_id; + bool operator==(const CompositeID &rhs) const { return object_id == rhs.object_id && volume_id == rhs.volume_id && instance_id == rhs.instance_id; } + bool operator!=(const CompositeID &rhs) const { return ! (*this == rhs); } }; CompositeID composite_id; // Fingerprint of the source geometry. For ModelVolumes, it is the ModelVolume::ID and ModelInstanceID, diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 8aa3205a7d..6690e33e3a 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1870,8 +1870,12 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re if (m_reload_delayed) return; + bool update_object_list = false; + if (m_regenerate_volumes) { + if (m_volumes.volumes != glvolumes_new) + update_object_list = true; m_volumes.volumes = std::move(glvolumes_new); for (unsigned int obj_idx = 0; obj_idx < (unsigned int)m_model->objects.size(); ++ obj_idx) { const ModelObject &model_object = *m_model->objects[obj_idx]; @@ -1886,12 +1890,16 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re // New volume. m_volumes.load_object_volume(&model_object, obj_idx, volume_idx, instance_idx, m_color_by, m_use_VBOs && m_initialized); m_volumes.volumes.back()->geometry_id = key.geometry_id; + update_object_list = true; } else { // Recycling an old GLVolume. GLVolume &existing_volume = *m_volumes.volumes[it->volume_idx]; assert(existing_volume.geometry_id == key.geometry_id); // Update the Object/Volume/Instance indices into the current Model. - existing_volume.composite_id = it->composite_id; + if (existing_volume.composite_id != it->composite_id) { + existing_volume.composite_id = it->composite_id; + update_object_list = true; + } } } } @@ -1999,7 +2007,8 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re m_gizmos.update_data(*this); // Update the toolbar - post_event(SimpleEvent(EVT_GLCANVAS_OBJECT_SELECT)); + if (update_object_list) + post_event(SimpleEvent(EVT_GLCANVAS_OBJECT_SELECT)); // checks for geometry outside the print volume to render it accordingly if (!m_volumes.empty()) diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index 663ff8ad9b..3c569b5911 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -16,6 +16,50 @@ namespace Slic3r namespace GUI { +static wxBitmapComboBox* create_word_local_combo(wxWindow *parent) +{ + wxSize size(15 * wxGetApp().em_unit(), -1); + + wxBitmapComboBox *temp = nullptr; +#ifdef __WXOSX__ + /* wxBitmapComboBox with wxCB_READONLY style return NULL for GetTextCtrl(), + * so ToolTip doesn't shown. + * Next workaround helps to solve this problem + */ + temp = new wxBitmapComboBox(); + temp->SetTextCtrlStyle(wxTE_READONLY); + temp->Create(parent, wxID_ANY, wxString(""), wxDefaultPosition, size, 0, nullptr); +#else + temp = new wxBitmapComboBox(parent, wxID_ANY, wxString(""), wxDefaultPosition, size, 0, nullptr, wxCB_READONLY); +#endif //__WXOSX__ + + temp->SetFont(Slic3r::GUI::wxGetApp().normal_font()); + temp->SetBackgroundStyle(wxBG_STYLE_PAINT); + + temp->Append(_(L("World"))); + temp->Append(_(L("Local"))); + temp->SetSelection(0); + temp->SetValue(temp->GetString(0)); + +#ifndef __WXGTK__ + /* Workaround for a correct rendering of the control without Bitmap (under MSW and OSX): + * + * 1. We should create small Bitmap to fill Bitmaps RefData, + * ! in this case wxBitmap.IsOK() return true. + * 2. But then set width to 0 value for no using of bitmap left and right spacing + * 3. Set this empty bitmap to the at list one item and BitmapCombobox will be recreated correct + * + * Note: Set bitmap height to the Font size because of OSX rendering. + */ + wxBitmap empty_bmp(1, temp->GetFont().GetPixelSize().y + 2); + empty_bmp.SetWidth(0); + temp->SetItemBitmap(0, empty_bmp); +#endif + + temp->SetToolTip(_(L("Select coordinate space, in which the transformation will be performed."))); + return temp; +} + ObjectManipulation::ObjectManipulation(wxWindow* parent) : OG_Settings(parent, true) #ifndef __APPLE__ @@ -63,6 +107,12 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : Option option = Option(def, axis + "_axis_legend"); line.append_option(option); } + line.near_label_widget = [this](wxWindow* parent) { + wxBitmapComboBox *combo = create_word_local_combo(parent); + combo->Bind(wxEVT_COMBOBOX, ([this](wxCommandEvent &evt) { this->set_world_coordinates(evt.GetSelection() != 1); }), combo->GetId()); + m_word_local_combo = combo; + return combo; + }; m_og->append_line(line); auto add_og_to_object_settings = [this, field_width](const std::string& option_name, const std::string& sidetext) @@ -145,9 +195,8 @@ bool ObjectManipulation::IsShown() void ObjectManipulation::UpdateAndShow(const bool show) { - if (show) { + if (show) update_settings_value(wxGetApp().plater()->canvas3D()->get_selection()); - } OG_Settings::UpdateAndShow(show); } @@ -164,8 +213,8 @@ void ObjectManipulation::update_settings_value(const Selection& selection) // all volumes in the selection belongs to the same instance, any of them contains the needed instance data, so we take the first one const GLVolume* volume = selection.get_volume(*selection.get_volume_idxs().begin()); m_new_position = volume->get_instance_offset(); - m_new_rotation = volume->get_instance_rotation(); - m_new_scale = volume->get_instance_scaling_factor(); + m_new_rotation = volume->get_instance_rotation() * (180. / M_PI); + m_new_scale = volume->get_instance_scaling_factor() * 100.; int obj_idx = volume->object_idx(); int instance_idx = volume->instance_idx(); if ((0 <= obj_idx) && (obj_idx < (int)wxGetApp().model_objects()->size())) @@ -178,7 +227,7 @@ void ObjectManipulation::update_settings_value(const Selection& selection) changed_box = true; } //FIXME matching an instance idx may not be enough. Check for ModelObject id an all ModelVolume ids. - if (changed_box || !m_cache.instance.matches_instance(instance_idx) || !m_cache.scale.isApprox(100.0 * m_new_scale)) + if (changed_box || !m_cache.instance.matches_instance(instance_idx) || !m_cache.scale.isApprox(m_new_scale)) m_new_size = volume->get_instance_transformation().get_scaling_factor().cwiseProduct(m_cache.instance.box_size); } else { @@ -197,7 +246,7 @@ void ObjectManipulation::update_settings_value(const Selection& selection) const BoundingBoxf3& box = selection.get_bounding_box(); m_new_position = box.center(); m_new_rotation = Vec3d::Zero(); - m_new_scale = Vec3d(1.0, 1.0, 1.0); + m_new_scale = Vec3d(100., 100., 100.); m_new_size = box.size(); m_new_rotate_label_string = L("Rotate"); m_new_scale_label_string = L("Scale"); @@ -210,8 +259,8 @@ void ObjectManipulation::update_settings_value(const Selection& selection) // the selection contains a single volume const GLVolume* volume = selection.get_volume(*selection.get_volume_idxs().begin()); m_new_position = volume->get_volume_offset(); - m_new_rotation = volume->get_volume_rotation(); - m_new_scale = volume->get_volume_scaling_factor(); + m_new_rotation = volume->get_volume_rotation() * (180. / M_PI); + m_new_scale = volume->get_volume_scaling_factor() * 100.; m_new_size = volume->get_volume_transformation().get_scaling_factor().cwiseProduct(volume->bounding_box.size()); m_new_enabled = true; } @@ -226,7 +275,7 @@ void ObjectManipulation::update_settings_value(const Selection& selection) } else { // No selection, reset the cache. - assert(selection.is_empty()); +// assert(selection.is_empty()); reset_settings_value(); } @@ -249,26 +298,24 @@ void ObjectManipulation::update_if_dirty() update_label(m_cache.rotate_label_string, m_new_rotate_label_string, m_rotate_Label); update_label(m_cache.scale_label_string, m_new_scale_label_string, m_scale_Label); - Vec3d scale = m_new_scale * 100.0; - Vec3d deg_rotation = (180.0 / M_PI) * m_new_rotation; - char axis[2] = "x"; for (int i = 0; i < 3; ++ i, ++ axis[0]) { - if (m_cache.position(i) != m_new_position(i)) - m_og->set_value(std::string("position_") + axis, double_to_string(m_new_position(i), 2)); - if (m_cache.scale(i) != scale(i)) - m_og->set_value(std::string("scale_") + axis, double_to_string(scale(i), 2)); - if (m_cache.size(i) != m_new_size(i)) - m_og->set_value(std::string("size_") + axis, double_to_string(m_new_size(i), 2)); - if (m_cache.rotation(i) != m_new_rotation(i) || m_new_rotation(i) == 0.0) - m_og->set_value(std::string("rotation_") + axis, double_to_string(deg_rotation(i), 2)); + auto update = [this, i, &axis](Vec3d &cached, Vec3d &cached_rounded, const char *key, const Vec3d &new_value) { + wxString new_text = double_to_string(new_value(i), 2); + double new_rounded; + new_text.ToDouble(&new_rounded); + if (std::abs(cached_rounded(i) - new_rounded) > EPSILON) { + cached_rounded(i) = new_rounded; + m_og->set_value(std::string(key) + axis, new_text); + } + cached(i) = new_value(i); + }; + update(m_cache.position, m_cache.position_rounded, "position_", m_new_position); + update(m_cache.scale, m_cache.scale_rounded, "scale_", m_new_scale); + update(m_cache.size, m_cache.size_rounded, "size_", m_new_size); + update(m_cache.rotation, m_cache.rotation_rounded, "rotation_", m_new_rotation); } - m_cache.position = m_new_position; - m_cache.scale = scale; - m_cache.size = m_new_size; - m_cache.rotation = deg_rotation; - if (wxGetApp().plater()->canvas3D()->get_selection().requires_uniform_scale()) { m_lock_bnt->SetLock(true); m_lock_bnt->Disable(); @@ -278,6 +325,12 @@ void ObjectManipulation::update_if_dirty() m_lock_bnt->Enable(); } + { + int new_selection = m_world_coordinates ? 0 : 1; + if (m_word_local_combo->GetSelection() != new_selection) + m_word_local_combo->SetSelection(new_selection); + } + if (m_new_enabled) m_og->enable(); else @@ -314,8 +367,14 @@ void ObjectManipulation::reset_settings_value() m_dirty = true; } -void ObjectManipulation::change_position_value(const Vec3d& position) +void ObjectManipulation::change_position_value(int axis, double value) { + if (std::abs(m_cache.position_rounded(axis) - value) < EPSILON) + return; + + Vec3d position = m_cache.position; + position(axis) = value; + auto canvas = wxGetApp().plater()->canvas3D(); Selection& selection = canvas->get_selection(); selection.start_dragging(); @@ -323,10 +382,18 @@ void ObjectManipulation::change_position_value(const Vec3d& position) canvas->do_move(); m_cache.position = position; + m_cache.position_rounded(axis) = DBL_MAX; + this->UpdateAndShow(true); } -void ObjectManipulation::change_rotation_value(const Vec3d& rotation) +void ObjectManipulation::change_rotation_value(int axis, double value) { + if (std::abs(m_cache.rotation_rounded(axis) - value) < EPSILON) + return; + + Vec3d rotation = m_cache.rotation; + rotation(axis) = value; + GLCanvas3D* canvas = wxGetApp().plater()->canvas3D(); Selection& selection = canvas->get_selection(); @@ -346,20 +413,36 @@ void ObjectManipulation::change_rotation_value(const Vec3d& rotation) canvas->do_rotate(); m_cache.rotation = rotation; + m_cache.rotation_rounded(axis) = DBL_MAX; + this->UpdateAndShow(true); } -void ObjectManipulation::change_scale_value(const Vec3d& scale) +void ObjectManipulation::change_scale_value(int axis, double value) { + if (std::abs(m_cache.scale_rounded(axis) - value) < EPSILON) + return; + + Vec3d scale = m_cache.scale; + scale(axis) = value; + this->do_scale(scale); if (!m_cache.scale.isApprox(scale)) m_cache.instance.instance_idx = -1; m_cache.scale = scale; + m_cache.scale_rounded(axis) = DBL_MAX; + this->UpdateAndShow(true); } -void ObjectManipulation::change_size_value(const Vec3d& size) +void ObjectManipulation::change_size_value(int axis, double value) { + if (std::abs(m_cache.size_rounded(axis) - value) < EPSILON) + return; + + Vec3d size = m_cache.size; + size(axis) = value; + const Selection& selection = wxGetApp().plater()->canvas3D()->get_selection(); Vec3d ref_size = m_cache.size; @@ -371,9 +454,11 @@ void ObjectManipulation::change_size_value(const Vec3d& size) else if (selection.is_single_full_instance() && ! m_world_coordinates) ref_size = m_cache.instance.box_size; - this->do_scale(100.0 * Vec3d(size(0) / ref_size(0), size(1) / ref_size(1), size(2) / ref_size(2))); + this->do_scale(100. * Vec3d(size(0) / ref_size(0), size(1) / ref_size(1), size(2) / ref_size(2))); m_cache.size = size; + m_cache.size_rounded(axis) = DBL_MAX; + this->UpdateAndShow(true); } void ObjectManipulation::do_scale(const Vec3d &scale) const @@ -407,20 +492,17 @@ void ObjectManipulation::on_change(t_config_option_key opt_key, const boost::any if (!m_cache.is_valid()) return; - // Value of all three axes of the position / rotation / scale / size is extracted. - Vec3d new_value; - opt_key.back() = 'x'; - for (int i = 0; i < 3; ++ i, ++ opt_key.back()) - new_value(i) = boost::any_cast(m_og->get_value(opt_key)); + int axis = opt_key.back() - 'x'; + double new_value = boost::any_cast(m_og->get_value(opt_key)); if (boost::starts_with(opt_key, "position_")) - change_position_value(new_value); + change_position_value(axis, new_value); else if (boost::starts_with(opt_key, "rotation_")) - change_rotation_value(new_value); + change_rotation_value(axis, new_value); else if (boost::starts_with(opt_key, "scale_")) - change_scale_value(new_value); + change_scale_value(axis, new_value); else if (boost::starts_with(opt_key, "size_")) - change_size_value(new_value); + change_size_value(axis, new_value); } void ObjectManipulation::on_fill_empty_value(const std::string& opt_key) @@ -435,19 +517,28 @@ void ObjectManipulation::on_fill_empty_value(const std::string& opt_key) return; const Vec3d *vec = nullptr; - if (boost::starts_with(opt_key, "position_")) + Vec3d *rounded = nullptr; + if (boost::starts_with(opt_key, "position_")) { vec = &m_cache.position; - else if (boost::starts_with(opt_key, "rotation_")) + rounded = &m_cache.position_rounded; + } else if (boost::starts_with(opt_key, "rotation_")) { vec = &m_cache.rotation; - else if (boost::starts_with(opt_key, "scale_")) + rounded = &m_cache.rotation_rounded; + } else if (boost::starts_with(opt_key, "scale_")) { vec = &m_cache.scale; - else if (boost::starts_with(opt_key, "size_")) + rounded = &m_cache.scale_rounded; + } else if (boost::starts_with(opt_key, "size_")) { vec = &m_cache.size; - else + rounded = &m_cache.size_rounded; + } else assert(false); - if (vec != nullptr) - m_og->set_value(opt_key, double_to_string((*vec)(opt_key.back() - 'x'))); + if (vec != nullptr) { + int axis = opt_key.back() - 'x'; + wxString new_text = double_to_string((*vec)(axis)); + m_og->set_value(opt_key, new_text); + new_text.ToDouble(&(*rounded)(axis)); + } } } //namespace GUI diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp index ecd306c0aa..09b1b4fe6e 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp @@ -19,9 +19,13 @@ class ObjectManipulation : public OG_Settings struct Cache { Vec3d position; + Vec3d position_rounded; Vec3d rotation; + Vec3d rotation_rounded; Vec3d scale; + Vec3d scale_rounded; Vec3d size; + Vec3d size_rounded; std::string move_label_string; std::string rotate_label_string; @@ -46,10 +50,10 @@ class ObjectManipulation : public OG_Settings Cache() { reset(); } void reset() { - position = Vec3d(DBL_MAX, DBL_MAX, DBL_MAX); - rotation = Vec3d(DBL_MAX, DBL_MAX, DBL_MAX); - scale = Vec3d(DBL_MAX, DBL_MAX, DBL_MAX); - size = Vec3d(DBL_MAX, DBL_MAX, DBL_MAX); + position = position_rounded = Vec3d(DBL_MAX, DBL_MAX, DBL_MAX); + rotation = rotation_rounded = Vec3d(DBL_MAX, DBL_MAX, DBL_MAX); + scale = scale_rounded = Vec3d(DBL_MAX, DBL_MAX, DBL_MAX); + size = size_rounded = Vec3d(DBL_MAX, DBL_MAX, DBL_MAX); move_label_string = ""; rotate_label_string = ""; scale_label_string = ""; @@ -79,6 +83,7 @@ class ObjectManipulation : public OG_Settings // Does the object manipulation panel work in World or Local coordinates? bool m_world_coordinates = true; PrusaLockButton* m_lock_bnt{ nullptr }; + wxBitmapComboBox* m_word_local_combo = nullptr; #ifndef __APPLE__ // Currently focused option name (empty if none) @@ -101,6 +106,7 @@ public: void set_uniform_scaling(const bool uniform_scale) { m_uniform_scale = uniform_scale;} bool get_uniform_scaling() const { return m_uniform_scale; } // Does the object manipulation panel work in World or Local coordinates? + void set_world_coordinates(const bool world_coordinates) { m_world_coordinates = world_coordinates; this->UpdateAndShow(true); } bool get_world_coordinates() const { return m_world_coordinates; } void reset_cache() { m_cache.reset(); } @@ -120,10 +126,10 @@ private: void update_rotation_value(const Vec3d& rotation); // change values - void change_position_value(const Vec3d& position); - void change_rotation_value(const Vec3d& rotation); - void change_scale_value(const Vec3d& scale); - void change_size_value(const Vec3d& size); + void change_position_value(int axis, double value); + void change_rotation_value(int axis, double value); + void change_scale_value(int axis, double value); + void change_size_value(int axis, double value); void do_scale(const Vec3d &scale) const; void on_change(t_config_option_key opt_key, const boost::any& value); diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index 4abbbd45a4..a4686d4d23 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -172,19 +172,21 @@ void OptionsGroup::append_line(const Line& line, wxStaticText** full_Label/* = n // Build a label if we have it wxStaticText* label=nullptr; if (label_width != 0) { - long label_style = staticbox ? 0 : wxALIGN_RIGHT; -#ifdef __WXGTK__ - // workaround for correct text align of the StaticBox on Linux - // flags wxALIGN_RIGHT and wxALIGN_CENTRE don't work when Ellipsize flags are _not_ given. - // Text is properly aligned only when Ellipsize is checked. - label_style |= staticbox ? 0 : wxST_ELLIPSIZE_END; -#endif /* __WXGTK__ */ - label = new wxStaticText(this->ctrl_parent(), wxID_ANY, line.label + (line.label.IsEmpty() ? "" : ": "), - wxDefaultPosition, wxSize(label_width, -1), label_style); - label->SetBackgroundStyle(wxBG_STYLE_PAINT); - label->SetFont(label_font); - label->Wrap(label_width); // avoid a Linux/GTK bug - if (!line.near_label_widget) + if (! line.near_label_widget || ! line.label.IsEmpty()) { + long label_style = staticbox ? 0 : wxALIGN_RIGHT; + #ifdef __WXGTK__ + // workaround for correct text align of the StaticBox on Linux + // flags wxALIGN_RIGHT and wxALIGN_CENTRE don't work when Ellipsize flags are _not_ given. + // Text is properly aligned only when Ellipsize is checked. + label_style |= staticbox ? 0 : wxST_ELLIPSIZE_END; + #endif /* __WXGTK__ */ + label = new wxStaticText(this->ctrl_parent(), wxID_ANY, line.label + (line.label.IsEmpty() ? "" : ": "), + wxDefaultPosition, wxSize(label_width, -1), label_style); + label->SetBackgroundStyle(wxBG_STYLE_PAINT); + label->SetFont(label_font); + label->Wrap(label_width); // avoid a Linux/GTK bug + } + if (! line.near_label_widget) grid_sizer->Add(label, 0, (staticbox ? 0 : wxALIGN_RIGHT | wxRIGHT) | wxALIGN_CENTER_VERTICAL, line.label.IsEmpty() ? 0 : 5); else if (line.near_label_widget && line.label.IsEmpty()) grid_sizer->Add(line.near_label_widget(this->ctrl_parent()), 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, 7); @@ -196,7 +198,7 @@ void OptionsGroup::append_line(const Line& line, wxStaticText** full_Label/* = n sizer->Add(line.near_label_widget(this->ctrl_parent()), 0, wxRIGHT, 7); sizer->Add(label, 0, (staticbox ? 0 : wxALIGN_RIGHT | wxRIGHT) | wxALIGN_CENTER_VERTICAL, 5); } - if (line.label_tooltip.compare("") != 0) + if (label != nullptr && line.label_tooltip != "") label->SetToolTip(line.label_tooltip); } diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 8eb68fc393..b41b27af8e 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1056,9 +1056,9 @@ void Sidebar::enable_buttons(bool enable) p->btn_send_gcode->Enable(enable); } -void Sidebar::show_reslice(bool show) const { p->btn_reslice->Show(show); } -void Sidebar::show_export(bool show) const { p->btn_export_gcode->Show(show); } -void Sidebar::show_send(bool show) const { p->btn_send_gcode->Show(show); } +bool Sidebar::show_reslice(bool show) const { return p->btn_reslice->Show(show); } +bool Sidebar::show_export(bool show) const { return p->btn_export_gcode->Show(show); } +bool Sidebar::show_send(bool show) const { return p->btn_send_gcode->Show(show); } bool Sidebar::is_multifilament() { @@ -3129,17 +3129,18 @@ void Plater::priv::show_action_buttons(const bool is_ready_to_slice) const // when a background processing is ON, export_btn and/or send_btn are showing if (wxGetApp().app_config->get("background_processing") == "1") { - sidebar->show_reslice(false); - sidebar->show_export(true); - sidebar->show_send(send_gcode_shown); - } + if (sidebar->show_reslice(false) | + sidebar->show_export(true) | + sidebar->show_send(send_gcode_shown)) + sidebar->Layout(); + } else { - sidebar->show_reslice(is_ready_to_slice); - sidebar->show_export(!is_ready_to_slice); - sidebar->show_send(send_gcode_shown && !is_ready_to_slice); - } - sidebar->Layout(); + if (sidebar->show_reslice(is_ready_to_slice) | + sidebar->show_export(!is_ready_to_slice) | + sidebar->show_send(send_gcode_shown && !is_ready_to_slice)) + sidebar->Layout(); + } } void Sidebar::set_btn_label(const ActionButtonType btn_type, const wxString& label) const diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 5319e3b43a..f9c5a4d7f4 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -96,9 +96,9 @@ public: void show_sliced_info_sizer(const bool show); void enable_buttons(bool enable); void set_btn_label(const ActionButtonType btn_type, const wxString& label) const; - void show_reslice(bool show) const; - void show_export(bool show) const; - void show_send(bool show) const; + bool show_reslice(bool show) const; + bool show_export(bool show) const; + bool show_send(bool show) const; bool is_multifilament(); void update_mode(); From ec2f319a3d7cce7958a750e142d06c3921e7bf84 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Thu, 25 Apr 2019 09:10:03 +0200 Subject: [PATCH 10/94] Rectangle selection in 3D scene -> rendering --- src/slic3r/GUI/GLCanvas3D.cpp | 36 ++++++++++++++++++-- src/slic3r/GUI/GLCanvas3D.hpp | 1 + src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp | 1 + 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 5cae80ba8b..084a4f3b4d 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1647,6 +1647,9 @@ void GLCanvas3D::render() _render_camera_target(); #endif // ENABLE_SHOW_CAMERA_TARGET + if (m_picking_enabled && m_rectangle_selection.is_dragging()) + m_rectangle_selection.render(*this); + // draw overlays _render_gizmos_overlay(); _render_warning_texture(); @@ -2342,10 +2345,20 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) } else if (keyCode == WXK_SHIFT) { + if (m_picking_enabled && m_rectangle_selection.is_dragging()) + { + m_rectangle_selection.stop_dragging(); + m_dirty = true; + } set_cursor(Standard); } else if (keyCode == WXK_ALT) { + if (m_picking_enabled && m_rectangle_selection.is_dragging()) + { + m_rectangle_selection.stop_dragging(); + m_dirty = true; + } set_cursor(Standard); } } @@ -2353,11 +2366,13 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) m_tab_down = keyCode == WXK_TAB && !evt.HasAnyModifiers(); if (keyCode == WXK_SHIFT) { - set_cursor(Cross); + if (m_picking_enabled && (m_gizmos.get_current_type() != GLGizmosManager::SlaSupports)) + set_cursor(Cross); } else if (keyCode == WXK_ALT) { - set_cursor(Cross); + if (m_picking_enabled && (m_gizmos.get_current_type() != GLGizmosManager::SlaSupports)) + set_cursor(Cross); } } } @@ -2615,6 +2630,14 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) m_dirty = true; } } + else if (evt.LeftDown() && (evt.ShiftDown() || evt.AltDown()) && m_picking_enabled) + { + if (m_gizmos.get_current_type() != GLGizmosManager::SlaSupports) + { + m_rectangle_selection.start_dragging(m_mouse.position, evt.ShiftDown() ? GLSelectionRectangle::Select : GLSelectionRectangle::Deselect); + m_dirty = true; + } + } else { // Select volume in this 3D canvas. @@ -2724,6 +2747,11 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) m_dirty = true; } } + else if (evt.Dragging() && evt.LeftIsDown() && m_picking_enabled && m_rectangle_selection.is_dragging()) + { + m_rectangle_selection.dragging(pos.cast()); + m_dirty = true; + } else if (evt.Dragging()) { m_mouse.dragging = true; @@ -2779,6 +2807,10 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) // of the scene with the background processing data should be performed. post_event(SimpleEvent(EVT_GLCANVAS_MOUSE_DRAGGING_FINISHED)); } + else if (evt.LeftUp() && m_picking_enabled && m_rectangle_selection.is_dragging()) + { + m_rectangle_selection.stop_dragging(); + } else if (evt.LeftUp() && !m_mouse.dragging && m_hover_volume_idxs.empty() && !is_layers_editing_enabled()) { // deselect and propagate event through callback diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index cd96b5c701..e8c301967b 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -452,6 +452,7 @@ private: bool m_moving; bool m_tab_down; ECursorType m_cursor_type; + GLSelectionRectangle m_rectangle_selection; // Following variable is obsolete and it should be safe to remove it. // I just don't want to do it now before a release (Lukas Matena 24.3.2019) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp index ab5dc8d67c..7e09b04ace 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp @@ -96,6 +96,7 @@ private: mutable Vec3d m_clipping_plane_normal = Vec3d::Zero(); GLSelectionRectangle m_selection_rectangle; + bool m_wait_for_up_event = false; bool m_unsaved_changes = false; // Are there unsaved changes in manual mode? bool m_selection_empty = true; From f78c3a0f1b02d462c7e7d3d5069d08f1f3aee6b2 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Thu, 25 Apr 2019 09:24:33 +0200 Subject: [PATCH 11/94] WIP, non-uniform scaling in the world coordinate system: Disable non-uniform scaling when switching to the World coordinate system and the rotation is not multiples of ninety degrees. Ask user whether to bake in the transformations into the meshes if enabling the non-uniform scaling in that case. --- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 50 +++++++++++++++++++++++ src/slic3r/GUI/GUI_ObjectManipulation.hpp | 2 +- 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index 3c569b5911..df28d8e07b 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -201,6 +201,18 @@ void ObjectManipulation::UpdateAndShow(const bool show) OG_Settings::UpdateAndShow(show); } +static bool is_rotation_ninety_degrees(const Vec3d &rotation) +{ + // Is the angle close to a multiple of 90 degrees? + auto ninety_degrees = [](double a) { + a = fmod(std::abs(a), 0.5 * PI); + if (a > 0.25 * PI) + a = 0.5 * PI - a; + return a < 0.001; + }; + return ninety_degrees(rotation.x()) && ninety_degrees(rotation.y()) && ninety_degrees(rotation.z()); +} + void ObjectManipulation::update_settings_value(const Selection& selection) { m_new_move_label_string = L("Position"); @@ -251,6 +263,18 @@ void ObjectManipulation::update_settings_value(const Selection& selection) m_new_rotate_label_string = L("Rotate"); m_new_scale_label_string = L("Scale"); m_new_enabled = true; + + if (selection.is_single_full_instance() && m_world_coordinates && ! m_uniform_scale) { + // Verify whether the instance rotation is multiples of 90 degrees, so that the scaling in world coordinates is possible. + // all volumes in the selection belongs to the same instance, any of them contains the needed instance data, so we take the first one + const GLVolume* volume = selection.get_volume(*selection.get_volume_idxs().begin()); + // Is the angle close to a multiple of 90 degrees? + if (! is_rotation_ninety_degrees(volume->get_instance_rotation())) { + // Manipulating an instance in the world coordinate system, rotation is not multiples of ninety degrees, therefore enforce uniform scaling. + m_uniform_scale = true; + m_lock_bnt->SetLock(true); + } + } } else if (selection.is_single_modifier() || selection.is_single_volume()) { @@ -541,5 +565,31 @@ void ObjectManipulation::on_fill_empty_value(const std::string& opt_key) } } +void ObjectManipulation::set_uniform_scaling(const bool new_value) +{ + const Selection &selection = wxGetApp().plater()->canvas3D()->get_selection(); + if (selection.is_single_full_instance() && m_world_coordinates && !new_value) { + // Verify whether the instance rotation is multiples of 90 degrees, so that the scaling in world coordinates is possible. + // all volumes in the selection belongs to the same instance, any of them contains the needed instance data, so we take the first one + const GLVolume* volume = selection.get_volume(*selection.get_volume_idxs().begin()); + // Is the angle close to a multiple of 90 degrees? + if (! is_rotation_ninety_degrees(volume->get_instance_rotation())) { + // Cannot apply scaling in the world coordinate system. + wxMessageDialog dlg(GUI::wxGetApp().mainframe, + _(L("Non-uniform scaling of tilted objects is not supported in the World coordinate system.\n" + "Do you want to rotate the mesh?")), + SLIC3R_APP_NAME, + wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION); + if (dlg.ShowModal() != wxID_YES) { + // Enforce uniform scaling. + m_lock_bnt->SetLock(true); + return; + } + // Bake the rotation into the meshes of the object. + } + } + m_uniform_scale = new_value; +} + } //namespace GUI } //namespace Slic3r diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp index 09b1b4fe6e..5db9622ce7 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp @@ -103,7 +103,7 @@ public: // Called from the App to update the UI if dirty. void update_if_dirty(); - void set_uniform_scaling(const bool uniform_scale) { m_uniform_scale = uniform_scale;} + void set_uniform_scaling(const bool uniform_scale); bool get_uniform_scaling() const { return m_uniform_scale; } // Does the object manipulation panel work in World or Local coordinates? void set_world_coordinates(const bool world_coordinates) { m_world_coordinates = world_coordinates; this->UpdateAndShow(true); } From 11490dfb066e56829a6a11d63d29cde7d0956846 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Thu, 25 Apr 2019 09:46:26 +0200 Subject: [PATCH 12/94] Rectangle selection in 3D scene -> hovering detection --- src/slic3r/GUI/3DScene.cpp | 14 ++- src/slic3r/GUI/3DScene.hpp | 9 +- src/slic3r/GUI/GLCanvas3D.cpp | 137 +++++++++++++++++++++--- src/slic3r/GUI/GLCanvas3D.hpp | 1 + src/slic3r/GUI/GLSelectionRectangle.cpp | 6 +- src/slic3r/GUI/GLSelectionRectangle.hpp | 7 ++ 6 files changed, 148 insertions(+), 26 deletions(-) diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index 9038e388c8..9d1407b004 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -223,7 +223,8 @@ void GLIndexedVertexArray::render( } const float GLVolume::SELECTED_COLOR[4] = { 0.0f, 1.0f, 0.0f, 1.0f }; -const float GLVolume::HOVER_COLOR[4] = { 0.4f, 0.9f, 0.1f, 1.0f }; +const float GLVolume::HOVER_SELECT_COLOR[4] = { 0.4f, 0.9f, 0.1f, 1.0f }; +const float GLVolume::HOVER_DESELECT_COLOR[4] = { 0.9f, 0.4f, 0.1f, 1.0f }; const float GLVolume::OUTSIDE_COLOR[4] = { 0.0f, 0.38f, 0.8f, 1.0f }; const float GLVolume::SELECTED_OUTSIDE_COLOR[4] = { 0.19f, 0.58f, 1.0f, 1.0f }; const float GLVolume::DISABLED_COLOR[4] = { 0.25f, 0.25f, 0.25f, 1.0f }; @@ -251,7 +252,8 @@ GLVolume::GLVolume(float r, float g, float b, float a) , zoom_to_volumes(true) , shader_outside_printer_detection_enabled(false) , is_outside(false) - , hover(false) + , hover_select(false) + , hover_deselect(false) , is_modifier(false) , is_wipe_tower(false) , is_extrusion_path(false) @@ -291,10 +293,12 @@ void GLVolume::set_render_color() if (force_native_color) set_render_color(color, 4); else { - if (selected) + if (hover_select) + set_render_color(HOVER_SELECT_COLOR, 4); + else if (hover_deselect) + set_render_color(HOVER_DESELECT_COLOR, 4); + else if (selected) set_render_color(is_outside ? SELECTED_OUTSIDE_COLOR : SELECTED_COLOR, 4); - else if (hover) - set_render_color(HOVER_COLOR, 4); else if (disabled) set_render_color(DISABLED_COLOR, 4); else if (is_outside && shader_outside_printer_detection_enabled) diff --git a/src/slic3r/GUI/3DScene.hpp b/src/slic3r/GUI/3DScene.hpp index 88547359ea..fa7d6f7d1f 100644 --- a/src/slic3r/GUI/3DScene.hpp +++ b/src/slic3r/GUI/3DScene.hpp @@ -225,7 +225,8 @@ private: class GLVolume { public: static const float SELECTED_COLOR[4]; - static const float HOVER_COLOR[4]; + static const float HOVER_SELECT_COLOR[4]; + static const float HOVER_DESELECT_COLOR[4]; static const float OUTSIDE_COLOR[4]; static const float SELECTED_OUTSIDE_COLOR[4]; static const float DISABLED_COLOR[4]; @@ -296,8 +297,10 @@ public: bool shader_outside_printer_detection_enabled; // Wheter or not this volume is outside print volume. bool is_outside; - // Boolean: Is mouse over this object? - bool hover; + // Boolean: Is mouse over this object to select it ? + bool hover_select; + // Boolean: Is mouse over this object to deselect it ? + bool hover_deselect; // Wheter or not this volume has been generated from a modifier bool is_modifier; // Wheter or not this volume has been generated from the wipe tower diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 084a4f3b4d..621a726b9f 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1610,8 +1610,12 @@ void GLCanvas3D::render() wxGetApp().imgui()->new_frame(); - // picking pass - _picking_pass(); + if (m_rectangle_selection.is_dragging()) + // picking pass using rectangle selection + _rectangular_selection_picking_pass(); + else + // regular picking pass + _picking_pass(); // draw scene glsafe(::glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); @@ -2361,6 +2365,8 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) } set_cursor(Standard); } + else if (keyCode == WXK_CONTROL) + m_dirty = true; } else if (evt.GetEventType() == wxEVT_KEY_DOWN) { m_tab_down = keyCode == WXK_TAB && !evt.HasAnyModifiers(); @@ -2374,6 +2380,8 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) if (m_picking_enabled && (m_gizmos.get_current_type() != GLGizmosManager::SlaSupports)) set_cursor(Cross); } + else if (keyCode == WXK_CONTROL) + m_dirty = true; } } } @@ -3662,7 +3670,7 @@ void GLCanvas3D::_picking_pass() const if (inside) { glsafe(::glReadPixels(pos(0), cnv_size.get_height() - pos(1) - 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, (void*)color)); - volume_id = color[0] + color[1] * 256 + color[2] * 256 * 256; + volume_id = color[0] + (color[1] << 8) + (color[2] << 16); } if ((0 <= volume_id) && (volume_id < (int)m_volumes.volumes.size())) { @@ -3676,6 +3684,83 @@ void GLCanvas3D::_picking_pass() const } } +void GLCanvas3D::_rectangular_selection_picking_pass() const +{ + m_gizmos.set_hover_id(-1); + + std::set idxs; + + if (m_picking_enabled) + { + if (m_multisample_allowed) + glsafe(::glDisable(GL_MULTISAMPLE)); + + glsafe(::glDisable(GL_BLEND)); + glsafe(::glEnable(GL_DEPTH_TEST)); + + glsafe(::glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); + + _render_volumes_for_picking(); + + if (m_multisample_allowed) + glsafe(::glEnable(GL_MULTISAMPLE)); + + int width = (int)m_rectangle_selection.get_width(); + int height = (int)m_rectangle_selection.get_height(); + int px_count = width * height; + + if (px_count > 0) + { + int left = (int)m_rectangle_selection.get_left(); + int top = get_canvas_size().get_height() - (int)m_rectangle_selection.get_top(); + if ((left >= 0) && (top >= 0)) + { +#define USE_PARALLEL 1 +#if USE_PARALLEL + struct Pixel + { + std::array data; + int id() const { return data[0] + (data[1] << 8) + (data[2] << 16); } + }; + + std::vector frame(px_count); + glsafe(::glReadPixels(left, top, width, height, GL_RGBA, GL_UNSIGNED_BYTE, (void*)frame.data())); + + tbb::spin_mutex mutex; + tbb::parallel_for(tbb::blocked_range(0, frame.size(), (size_t)width), + [this, &frame, &idxs, &mutex](const tbb::blocked_range& range) { + for (size_t i = range.begin(); i < range.end(); ++i) + { + int volume_id = frame[i].id(); + if ((0 <= volume_id) && (volume_id < (int)m_volumes.volumes.size())) + { + mutex.lock(); + idxs.insert(volume_id); + mutex.unlock(); + } + } + } + ); +#else + std::vector frame(4 * px_count); + glsafe(::glReadPixels(left, top, width, height, GL_RGBA, GL_UNSIGNED_BYTE, (void*)frame.data())); + + for (int i = 0; i < px_count; ++i) + { + int px_id = 4 * i; + int volume_id = frame[px_id] + (frame[px_id + 1] << 8) + (frame[px_id + 2] << 16); + if ((0 <= volume_id) && (volume_id < (int)m_volumes.volumes.size())) + idxs.insert(volume_id); + } +#endif // USE_PARALLEL + } + } + } + + m_hover_volume_idxs.assign(idxs.begin(), idxs.end()); + _update_volumes_hover_state(); +} + void GLCanvas3D::_render_background() const { glsafe(::glPushMatrix()); @@ -4161,24 +4246,48 @@ void GLCanvas3D::_update_volumes_hover_state() const { for (GLVolume* v : m_volumes.volumes) { - v->hover = false; + v->hover_select = false; + v->hover_deselect = false; } if (m_hover_volume_idxs.empty()) return; - GLVolume* volume = m_volumes.volumes[get_first_hover_volume_idx()]; - if (volume->is_modifier) - volume->hover = true; - else - { - int object_idx = volume->object_idx(); - int instance_idx = volume->instance_idx(); + bool is_ctrl_pressed = wxGetKeyState(WXK_CONTROL); + bool is_shift_pressed = wxGetKeyState(WXK_SHIFT); + bool is_alt_pressed = wxGetKeyState(WXK_ALT); - for (GLVolume* v : m_volumes.volumes) + for (int i : m_hover_volume_idxs) + { + GLVolume* volume = m_volumes.volumes[i]; + bool deselect = volume->selected && ((is_ctrl_pressed && !is_shift_pressed) || (!is_ctrl_pressed && (m_rectangle_selection.get_state() == GLSelectionRectangle::Deselect))); + bool select = !volume->selected || (volume->is_modifier && ((is_ctrl_pressed && !is_alt_pressed) || (!is_ctrl_pressed && (!m_rectangle_selection.is_dragging() || (m_rectangle_selection.get_state() == GLSelectionRectangle::Select))))); + + if (select || deselect) { - if ((v->object_idx() == object_idx) && (v->instance_idx() == instance_idx)) - v->hover = true; + if (volume->is_modifier && (!deselect || ((volume->object_idx() == m_selection.get_object_idx()) && (volume->instance_idx() == m_selection.get_instance_idx())))) + { + if (deselect) + volume->hover_deselect = true; + else + volume->hover_select = true; + } + else + { + int object_idx = volume->object_idx(); + int instance_idx = volume->instance_idx(); + + for (GLVolume* v : m_volumes.volumes) + { + if ((v->object_idx() == object_idx) && (v->instance_idx() == instance_idx)) + { + if (deselect) + v->hover_deselect = true; + else + v->hover_select = true; + } + } + } } } } diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index e8c301967b..bae9f0b5ea 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -623,6 +623,7 @@ private: void _refresh_if_shown_on_screen(); void _picking_pass() const; + void _rectangular_selection_picking_pass() const; void _render_background() const; void _render_bed(float theta) const; void _render_axes() const; diff --git a/src/slic3r/GUI/GLSelectionRectangle.cpp b/src/slic3r/GUI/GLSelectionRectangle.cpp index 03ee7e1f6f..9684bb5ec9 100644 --- a/src/slic3r/GUI/GLSelectionRectangle.cpp +++ b/src/slic3r/GUI/GLSelectionRectangle.cpp @@ -59,10 +59,8 @@ namespace GUI { void GLSelectionRectangle::stop_dragging() { - if (!is_dragging()) - return; - - m_state = Off; + if (is_dragging()) + m_state = Off; } void GLSelectionRectangle::render(const GLCanvas3D& canvas) const diff --git a/src/slic3r/GUI/GLSelectionRectangle.hpp b/src/slic3r/GUI/GLSelectionRectangle.hpp index f26d3eb4b5..db72d9415e 100644 --- a/src/slic3r/GUI/GLSelectionRectangle.hpp +++ b/src/slic3r/GUI/GLSelectionRectangle.hpp @@ -35,6 +35,13 @@ public: bool is_dragging() const { return m_state != Off; } EState get_state() const { return m_state; } + float get_width() const { return std::abs(m_start_corner(0) - m_end_corner(0)); } + float get_height() const { return std::abs(m_start_corner(1) - m_end_corner(1)); } + float get_left() const { return std::min(m_start_corner(0), m_end_corner(0)); } + float get_right() const { return std::max(m_start_corner(0), m_end_corner(0)); } + float get_top() const { return std::max(m_start_corner(1), m_end_corner(1)); } + float get_bottom() const { return std::min(m_start_corner(1), m_end_corner(1)); } + private: EState m_state = Off; Vec2d m_start_corner; From d2d06c9f73b7885acf43ba59d4c508cc498faf4e Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Thu, 25 Apr 2019 10:21:24 +0200 Subject: [PATCH 13/94] Rectangle selection in 3D scene -> refactored GLVolume member varialbe for hovering --- src/slic3r/GUI/3DScene.cpp | 7 +++---- src/slic3r/GUI/3DScene.hpp | 13 +++++++++---- src/slic3r/GUI/GLCanvas3D.cpp | 11 +++++------ src/slic3r/GUI/GLSelectionRectangle.hpp | 2 +- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index 9d1407b004..873c8b9e6d 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -252,8 +252,7 @@ GLVolume::GLVolume(float r, float g, float b, float a) , zoom_to_volumes(true) , shader_outside_printer_detection_enabled(false) , is_outside(false) - , hover_select(false) - , hover_deselect(false) + , hover(None) , is_modifier(false) , is_wipe_tower(false) , is_extrusion_path(false) @@ -293,9 +292,9 @@ void GLVolume::set_render_color() if (force_native_color) set_render_color(color, 4); else { - if (hover_select) + if (hover == Select) set_render_color(HOVER_SELECT_COLOR, 4); - else if (hover_deselect) + else if (hover == Deselect) set_render_color(HOVER_DESELECT_COLOR, 4); else if (selected) set_render_color(is_outside ? SELECTED_OUTSIDE_COLOR : SELECTED_COLOR, 4); diff --git a/src/slic3r/GUI/3DScene.hpp b/src/slic3r/GUI/3DScene.hpp index fa7d6f7d1f..8ed8da43f8 100644 --- a/src/slic3r/GUI/3DScene.hpp +++ b/src/slic3r/GUI/3DScene.hpp @@ -234,6 +234,13 @@ public: static const float SLA_SUPPORT_COLOR[4]; static const float SLA_PAD_COLOR[4]; + enum EHoverState : unsigned char + { + None, + Select, + Deselect + }; + GLVolume(float r = 1.f, float g = 1.f, float b = 1.f, float a = 1.f); GLVolume(const float *rgba) : GLVolume(rgba[0], rgba[1], rgba[2], rgba[3]) {} ~GLVolume(); @@ -297,10 +304,8 @@ public: bool shader_outside_printer_detection_enabled; // Wheter or not this volume is outside print volume. bool is_outside; - // Boolean: Is mouse over this object to select it ? - bool hover_select; - // Boolean: Is mouse over this object to deselect it ? - bool hover_deselect; + // Is mouse or rectangle selection over this object to select/deselect it ? + EHoverState hover; // Wheter or not this volume has been generated from a modifier bool is_modifier; // Wheter or not this volume has been generated from the wipe tower diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 621a726b9f..9798efecb6 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -4246,8 +4246,7 @@ void GLCanvas3D::_update_volumes_hover_state() const { for (GLVolume* v : m_volumes.volumes) { - v->hover_select = false; - v->hover_deselect = false; + v->hover = GLVolume::None; } if (m_hover_volume_idxs.empty()) @@ -4268,9 +4267,9 @@ void GLCanvas3D::_update_volumes_hover_state() const if (volume->is_modifier && (!deselect || ((volume->object_idx() == m_selection.get_object_idx()) && (volume->instance_idx() == m_selection.get_instance_idx())))) { if (deselect) - volume->hover_deselect = true; + volume->hover = GLVolume::Deselect; else - volume->hover_select = true; + volume->hover = GLVolume::Select; } else { @@ -4282,9 +4281,9 @@ void GLCanvas3D::_update_volumes_hover_state() const if ((v->object_idx() == object_idx) && (v->instance_idx() == instance_idx)) { if (deselect) - v->hover_deselect = true; + v->hover = GLVolume::Deselect; else - v->hover_select = true; + v->hover = GLVolume::Select; } } } diff --git a/src/slic3r/GUI/GLSelectionRectangle.hpp b/src/slic3r/GUI/GLSelectionRectangle.hpp index db72d9415e..d9869771ef 100644 --- a/src/slic3r/GUI/GLSelectionRectangle.hpp +++ b/src/slic3r/GUI/GLSelectionRectangle.hpp @@ -34,7 +34,7 @@ public: bool is_dragging() const { return m_state != Off; } EState get_state() const { return m_state; } - + float get_width() const { return std::abs(m_start_corner(0) - m_end_corner(0)); } float get_height() const { return std::abs(m_start_corner(1) - m_end_corner(1)); } float get_left() const { return std::min(m_start_corner(0), m_end_corner(0)); } From d2597482e0233e33c1e09dae927049b53dc528f4 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Thu, 25 Apr 2019 11:10:01 +0200 Subject: [PATCH 14/94] Added imgui debug dialog for render statistics --- src/libslic3r/Technologies.hpp | 2 ++ src/slic3r/GUI/GLCanvas3D.cpp | 25 ++++++++++++++++++++++++- src/slic3r/GUI/GLCanvas3D.hpp | 14 +++++++++++++- 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index ea3d878888..afd8ee0263 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -11,6 +11,8 @@ #define ENABLE_SELECTION_DEBUG_OUTPUT 0 // Renders a small sphere in the center of the bounding box of the current selection when no gizmo is active #define ENABLE_RENDER_SELECTION_CENTER 0 +// Shows an imgui dialog with render related data +#define ENABLE_RENDER_STATISTICS 1 //==================== diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 9798efecb6..d58b40fdf2 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -52,6 +52,9 @@ #include #include #include +#if ENABLE_RENDER_STATISTICS +#include +#endif // ENABLE_RENDER_STATISTICS static const float TRACKBALLSIZE = 0.8f; static const float GROUND_Z = -0.02f; @@ -1581,6 +1584,10 @@ void GLCanvas3D::render() if (!_set_current() || !_3DScene::init(m_canvas)) return; +#if ENABLE_RENDER_STATISTICS + auto start_time = std::chrono::high_resolution_clock::now(); +#endif // ENABLE_RENDER_STATISTICS + if (m_bed.get_shape().empty()) { // this happens at startup when no data is still saved under <>\AppData\Roaming\Slic3rPE @@ -1666,9 +1673,26 @@ void GLCanvas3D::render() if ((m_layers_editing.last_object_id >= 0) && (m_layers_editing.object_max_z() > 0.0f)) m_layers_editing.render_overlay(*this); +#if ENABLE_RENDER_STATISTICS + ImGuiWrapper& imgui = *wxGetApp().imgui(); + imgui.set_next_window_bg_alpha(0.5f); + imgui.begin(std::string("Render statistics"), ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse); + imgui.text("Last frame: "); + ImGui::SameLine(); + imgui.text(std::to_string(m_render_stats.last_frame)); + ImGui::SameLine(); + imgui.text(" ms"); + imgui.end(); +#endif // ENABLE_RENDER_STATISTICS + wxGetApp().imgui()->render(); m_canvas->SwapBuffers(); + +#if ENABLE_RENDER_STATISTICS + auto end_time = std::chrono::high_resolution_clock::now(); + m_render_stats.last_frame = std::chrono::duration_cast(end_time - start_time).count(); +#endif // ENABLE_RENDER_STATISTICS } void GLCanvas3D::select_all() @@ -2751,7 +2775,6 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) m_regenerate_volumes = false; m_selection.translate(cur_pos - m_mouse.drag.start_position_3D); wxGetApp().obj_manipul()->update_settings_value(m_selection); - m_dirty = true; } } diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index bae9f0b5ea..9e2d87bdb4 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -319,7 +319,6 @@ class GLCanvas3D } }; -private: struct SlaCap { struct Triangles @@ -399,6 +398,15 @@ private: void render(const GLCanvas3D& canvas) const; }; +#if ENABLE_RENDER_STATISTICS + struct RenderStats + { + long long last_frame; + + RenderStats() : last_frame(0) {} + }; +#endif // ENABLE_RENDER_STATISTICS + public: enum ECursorType : unsigned char { @@ -464,6 +472,10 @@ private: GCodePreviewVolumeIndex m_gcode_preview_volume_index; +#if ENABLE_RENDER_STATISTICS + RenderStats m_render_stats; +#endif // ENABLE_RENDER_STATISTICS + public: GLCanvas3D(wxGLCanvas* canvas, Bed3D& bed, Camera& camera, GLToolbar& view_toolbar); ~GLCanvas3D(); From 3fba85079359e3f33f770a29202fdb0c95a3a506 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Thu, 25 Apr 2019 11:50:30 +0200 Subject: [PATCH 15/94] Rectangle selection in 3D scene -> tweaks to the hovering detection logic --- src/slic3r/GUI/GLCanvas3D.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index d58b40fdf2..d1354f2f5f 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1676,7 +1676,7 @@ void GLCanvas3D::render() #if ENABLE_RENDER_STATISTICS ImGuiWrapper& imgui = *wxGetApp().imgui(); imgui.set_next_window_bg_alpha(0.5f); - imgui.begin(std::string("Render statistics"), ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse); + imgui.begin(std::string("Render statistics"), ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse); imgui.text("Last frame: "); ImGui::SameLine(); imgui.text(std::to_string(m_render_stats.last_frame)); @@ -4283,11 +4283,11 @@ void GLCanvas3D::_update_volumes_hover_state() const { GLVolume* volume = m_volumes.volumes[i]; bool deselect = volume->selected && ((is_ctrl_pressed && !is_shift_pressed) || (!is_ctrl_pressed && (m_rectangle_selection.get_state() == GLSelectionRectangle::Deselect))); - bool select = !volume->selected || (volume->is_modifier && ((is_ctrl_pressed && !is_alt_pressed) || (!is_ctrl_pressed && (!m_rectangle_selection.is_dragging() || (m_rectangle_selection.get_state() == GLSelectionRectangle::Select))))); + bool select = (!volume->selected && !is_alt_pressed) || (volume->is_modifier && ((is_ctrl_pressed && !is_alt_pressed) || (!is_ctrl_pressed && (!m_rectangle_selection.is_dragging() || (m_rectangle_selection.get_state() == GLSelectionRectangle::Select))))); if (select || deselect) { - if (volume->is_modifier && (!deselect || ((volume->object_idx() == m_selection.get_object_idx()) && (volume->instance_idx() == m_selection.get_instance_idx())))) + if (volume->is_modifier && ((!deselect && !is_ctrl_pressed) || (deselect && (volume->object_idx() == m_selection.get_object_idx()) && (volume->instance_idx() == m_selection.get_instance_idx())))) { if (deselect) volume->hover = GLVolume::Deselect; From a0640d2d24eeed796f5946e9345083288ac62718 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Thu, 25 Apr 2019 12:31:55 +0200 Subject: [PATCH 16/94] Rectangle selection in 3D scene -> selection update --- src/slic3r/GUI/GLCanvas3D.cpp | 32 ++++++++++++++++++++++++++++++++ src/slic3r/GUI/GLCanvas3D.hpp | 3 +++ 2 files changed, 35 insertions(+) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index d1354f2f5f..20babc470d 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2375,6 +2375,7 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) { if (m_picking_enabled && m_rectangle_selection.is_dragging()) { + _update_selection_from_hover(); m_rectangle_selection.stop_dragging(); m_dirty = true; } @@ -2384,6 +2385,7 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) { if (m_picking_enabled && m_rectangle_selection.is_dragging()) { + _update_selection_from_hover(); m_rectangle_selection.stop_dragging(); m_dirty = true; } @@ -2840,6 +2842,9 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) } else if (evt.LeftUp() && m_picking_enabled && m_rectangle_selection.is_dragging()) { + if (evt.ShiftDown() || evt.AltDown()) + _update_selection_from_hover(); + m_rectangle_selection.stop_dragging(); } else if (evt.LeftUp() && !m_mouse.dragging && m_hover_volume_idxs.empty() && !is_layers_editing_enabled()) @@ -5584,6 +5589,33 @@ void GLCanvas3D::_resize_toolbars() const } #endif // !ENABLE_SVG_ICONS +void GLCanvas3D::_update_selection_from_hover() +{ + if (m_hover_volume_idxs.empty()) + return; + + GLSelectionRectangle::EState state = m_rectangle_selection.get_state(); + bool is_ctrl_pressed = wxGetKeyState(WXK_CONTROL); + + bool is_single_modifier = (m_hover_volume_idxs.size() == 1) && m_volumes.volumes[m_hover_volume_idxs.front()]->is_modifier; + + if ((state == GLSelectionRectangle::Select) && !is_ctrl_pressed) + m_selection.clear(); + + for (int idx : m_hover_volume_idxs) + { + if (state == GLSelectionRectangle::Select) + m_selection.add(idx, is_single_modifier && !is_ctrl_pressed); + else + m_selection.remove(idx); + } + + m_gizmos.refresh_on_off_state(m_selection); + m_gizmos.update_data(*this); + post_event(SimpleEvent(EVT_GLCANVAS_OBJECT_SELECT)); + m_dirty = true; +} + const Print* GLCanvas3D::fff_print() const { return (m_process == nullptr) ? nullptr : m_process->fff_print(); diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 9e2d87bdb4..57083cfa03 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -714,6 +714,9 @@ private: void _resize_toolbars() const; #endif // !ENABLE_SVG_ICONS + // updates the selection from the content of m_hover_volume_idxs + void _update_selection_from_hover(); + static std::vector _parse_colors(const std::vector& colors); public: From f52f0f36349fa0acb501bd9d8433ce8aa265fbf1 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Thu, 25 Apr 2019 12:33:27 +0200 Subject: [PATCH 17/94] Disabled debug imgui dialog for render statistics --- src/libslic3r/Technologies.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index afd8ee0263..45f04b1df6 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -12,7 +12,7 @@ // Renders a small sphere in the center of the bounding box of the current selection when no gizmo is active #define ENABLE_RENDER_SELECTION_CENTER 0 // Shows an imgui dialog with render related data -#define ENABLE_RENDER_STATISTICS 1 +#define ENABLE_RENDER_STATISTICS 0 //==================== From 748a4438ba15d94fd34332028b5361b9450aac1b Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Thu, 25 Apr 2019 13:35:24 +0200 Subject: [PATCH 18/94] Attempt to fix build on Linux --- src/slic3r/GUI/3DScene.cpp | 6 +++--- src/slic3r/GUI/3DScene.hpp | 6 +++--- src/slic3r/GUI/GLCanvas3D.cpp | 10 +++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index 873c8b9e6d..c96798c6fd 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -252,7 +252,7 @@ GLVolume::GLVolume(float r, float g, float b, float a) , zoom_to_volumes(true) , shader_outside_printer_detection_enabled(false) , is_outside(false) - , hover(None) + , hover(HS_None) , is_modifier(false) , is_wipe_tower(false) , is_extrusion_path(false) @@ -292,9 +292,9 @@ void GLVolume::set_render_color() if (force_native_color) set_render_color(color, 4); else { - if (hover == Select) + if (hover == HS_Select) set_render_color(HOVER_SELECT_COLOR, 4); - else if (hover == Deselect) + else if (hover == HS_Deselect) set_render_color(HOVER_DESELECT_COLOR, 4); else if (selected) set_render_color(is_outside ? SELECTED_OUTSIDE_COLOR : SELECTED_COLOR, 4); diff --git a/src/slic3r/GUI/3DScene.hpp b/src/slic3r/GUI/3DScene.hpp index 8ed8da43f8..377d89fe75 100644 --- a/src/slic3r/GUI/3DScene.hpp +++ b/src/slic3r/GUI/3DScene.hpp @@ -236,9 +236,9 @@ public: enum EHoverState : unsigned char { - None, - Select, - Deselect + HS_None, + HS_Select, + HS_Deselect }; GLVolume(float r = 1.f, float g = 1.f, float b = 1.f, float a = 1.f); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 20babc470d..c86ca594ca 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -4274,7 +4274,7 @@ void GLCanvas3D::_update_volumes_hover_state() const { for (GLVolume* v : m_volumes.volumes) { - v->hover = GLVolume::None; + v->hover = GLVolume::HS_None; } if (m_hover_volume_idxs.empty()) @@ -4295,9 +4295,9 @@ void GLCanvas3D::_update_volumes_hover_state() const if (volume->is_modifier && ((!deselect && !is_ctrl_pressed) || (deselect && (volume->object_idx() == m_selection.get_object_idx()) && (volume->instance_idx() == m_selection.get_instance_idx())))) { if (deselect) - volume->hover = GLVolume::Deselect; + volume->hover = GLVolume::HS_Deselect; else - volume->hover = GLVolume::Select; + volume->hover = GLVolume::HS_Select; } else { @@ -4309,9 +4309,9 @@ void GLCanvas3D::_update_volumes_hover_state() const if ((v->object_idx() == object_idx) && (v->instance_idx() == instance_idx)) { if (deselect) - v->hover = GLVolume::Deselect; + v->hover = GLVolume::HS_Deselect; else - v->hover = GLVolume::Select; + v->hover = GLVolume::HS_Select; } } } From 905673f344191e53f2e2c08a62a84e4d0480243e Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Thu, 25 Apr 2019 13:41:00 +0200 Subject: [PATCH 19/94] Small refactoring --- src/slic3r/GUI/GLCanvas3D.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index c86ca594ca..9a43ca1185 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -3658,9 +3658,7 @@ void GLCanvas3D::_refresh_if_shown_on_screen() void GLCanvas3D::_picking_pass() const { - const Vec2d& pos = m_mouse.position; - - if (m_picking_enabled && !m_mouse.dragging && (pos != Vec2d(DBL_MAX, DBL_MAX))) + if (m_picking_enabled && !m_mouse.dragging && (m_mouse.position != Vec2d(DBL_MAX, DBL_MAX))) { m_hover_volume_idxs.clear(); @@ -3694,10 +3692,10 @@ void GLCanvas3D::_picking_pass() const GLubyte color[4] = { 0, 0, 0, 0 }; const Size& cnv_size = get_canvas_size(); - bool inside = (0 <= pos(0)) && (pos(0) < cnv_size.get_width()) && (0 <= pos(1)) && (pos(1) < cnv_size.get_height()); + bool inside = (0 <= m_mouse.position(0)) && (m_mouse.position(0) < cnv_size.get_width()) && (0 <= m_mouse.position(1)) && (m_mouse.position(1) < cnv_size.get_height()); if (inside) { - glsafe(::glReadPixels(pos(0), cnv_size.get_height() - pos(1) - 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, (void*)color)); + glsafe(::glReadPixels(m_mouse.position(0), cnv_size.get_height() - m_mouse.position(1) - 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, (void*)color)); volume_id = color[0] + (color[1] << 8) + (color[2] << 16); } if ((0 <= volume_id) && (volume_id < (int)m_volumes.volumes.size())) From 36252a42daad35d6334e1601e95b85e5bb1cb483 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Thu, 25 Apr 2019 15:08:14 +0200 Subject: [PATCH 20/94] Small optimization --- src/slic3r/GUI/GLCanvas3D.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 9a43ca1185..e0884e6b05 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1617,12 +1617,15 @@ void GLCanvas3D::render() wxGetApp().imgui()->new_frame(); - if (m_rectangle_selection.is_dragging()) - // picking pass using rectangle selection - _rectangular_selection_picking_pass(); - else - // regular picking pass - _picking_pass(); + if (m_picking_enabled) + { + if (m_rectangle_selection.is_dragging()) + // picking pass using rectangle selection + _rectangular_selection_picking_pass(); + else + // regular picking pass + _picking_pass(); + } // draw scene glsafe(::glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); From 3d48190616e756e9c754b70de9ba8304066288ef Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 25 Apr 2019 16:19:50 +0200 Subject: [PATCH 21/94] After merge fixing --- src/slic3r/GUI/GUI_ObjectList.cpp | 15 ++++++++------- src/slic3r/GUI/Plater.cpp | 3 ++- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index ff9bd763e2..054f74d70d 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -1182,8 +1182,8 @@ void ObjectList::append_menu_items_osx(wxMenu* menu) wxMenuItem* ObjectList::append_menu_item_fix_through_netfabb(wxMenu* menu) { -// if (!is_windows10()) -// return; + if (!is_windows10()) + return nullptr; wxMenuItem* menu_item = append_menu_item(menu, wxID_ANY, _(L("Fix through the Netfabb")), "", [this](wxCommandEvent&) { fix_through_netfabb(); }, "", menu); menu->AppendSeparator(); @@ -2735,19 +2735,20 @@ void ObjectList::update_item_error_icon(const int obj_idx, const int vol_idx) co if (get_mesh_errors_count(obj_idx, vol_idx) == 0) { // delete Error_icon if all errors are fixed wxVariant variant; - variant << PrusaDataViewBitmapText(from_u8((*m_objects)[obj_idx]->name), wxNullBitmap); + variant << DataViewBitmapText(from_u8((*m_objects)[obj_idx]->name), wxNullBitmap); m_objects_model->SetValue(variant, item, 0); } } void ObjectList::msw_rescale() { + const int em = wxGetApp().em_unit(); // update min size !!! A width of control shouldn't be a wxDefaultCoord - SetMinSize(wxSize(1, 15 * wxGetApp().em_unit())); + SetMinSize(wxSize(1, 15 * em)); - GetColumn(0)->SetWidth(19 * wxGetApp().em_unit()); - GetColumn(1)->SetWidth(8 * wxGetApp().em_unit()); - GetColumn(2)->SetWidth(int(2 * wxGetApp().em_unit())); + GetColumn(0)->SetWidth(19 * em); + GetColumn(1)->SetWidth( 8 * em); + GetColumn(2)->SetWidth( 2 * em); // rescale all icons, used by ObjectList rescale_icons(); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 91ae153dd5..c221b50664 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2951,7 +2951,8 @@ bool Plater::priv::init_common_menu(wxMenu* menu, const bool is_part/* = false*/ { q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_mirror()); }, item_mirror->GetId()); q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_delete()); }, item_delete->GetId()); - q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_fix_through_netfabb()); }, item_fix_through_netfabb->GetId()); + if (item_fix_through_netfabb) + q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_fix_through_netfabb()); }, item_fix_through_netfabb->GetId()); } return true; From 8857d556f65808182bf1069bde4e7121b776445d Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Fri, 26 Apr 2019 13:37:34 +0200 Subject: [PATCH 22/94] Rectangle selection in 3D scene -> tweaks to hovering detection and selection update logic --- src/slic3r/GUI/GLCanvas3D.cpp | 102 ++++++++++++++++++++++++++++------ 1 file changed, 85 insertions(+), 17 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index e0884e6b05..9a7c8834ef 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -4281,29 +4281,75 @@ void GLCanvas3D::_update_volumes_hover_state() const if (m_hover_volume_idxs.empty()) return; - bool is_ctrl_pressed = wxGetKeyState(WXK_CONTROL); - bool is_shift_pressed = wxGetKeyState(WXK_SHIFT); - bool is_alt_pressed = wxGetKeyState(WXK_ALT); + bool ctrl_pressed = wxGetKeyState(WXK_CONTROL); // additive select/deselect + bool shift_pressed = wxGetKeyState(WXK_SHIFT); // select by rectangle + bool alt_pressed = wxGetKeyState(WXK_ALT); // deselect by rectangle + + if (alt_pressed && (shift_pressed || ctrl_pressed)) + { + // illegal combinations of keys + m_hover_volume_idxs.clear(); + return; + } + + bool selection_modifiers_only = m_selection.is_empty() || m_selection.is_any_modifier(); + + bool hover_modifiers_only = true; + for (int i : m_hover_volume_idxs) + { + if (!m_volumes.volumes[i]->is_modifier) + { + hover_modifiers_only = false; + break; + } + } + + std::set> hover_instances; + for (int i : m_hover_volume_idxs) + { + const GLVolume& v = *m_volumes.volumes[i]; + hover_instances.insert(std::make_pair(v.object_idx(), v.instance_idx())); + } + + bool hover_from_single_instance = hover_instances.size() == 1; + + if (hover_modifiers_only && !hover_from_single_instance) + { + // do not allow to select volumes from different instances + m_hover_volume_idxs.clear(); + return; + } for (int i : m_hover_volume_idxs) { - GLVolume* volume = m_volumes.volumes[i]; - bool deselect = volume->selected && ((is_ctrl_pressed && !is_shift_pressed) || (!is_ctrl_pressed && (m_rectangle_selection.get_state() == GLSelectionRectangle::Deselect))); - bool select = (!volume->selected && !is_alt_pressed) || (volume->is_modifier && ((is_ctrl_pressed && !is_alt_pressed) || (!is_ctrl_pressed && (!m_rectangle_selection.is_dragging() || (m_rectangle_selection.get_state() == GLSelectionRectangle::Select))))); + GLVolume& volume = *m_volumes.volumes[i]; + if (volume.hover != GLVolume::HS_None) + continue; + + bool deselect = volume.selected && ((ctrl_pressed && !shift_pressed) || alt_pressed); + // (volume->is_modifier && !selection_modifiers_only && !is_ctrl_pressed) -> allows hovering on selected modifiers belonging to selection of type Instance + bool select = (!volume.selected || (volume.is_modifier && !selection_modifiers_only && !ctrl_pressed)) && !alt_pressed; if (select || deselect) { - if (volume->is_modifier && ((!deselect && !is_ctrl_pressed) || (deselect && (volume->object_idx() == m_selection.get_object_idx()) && (volume->instance_idx() == m_selection.get_instance_idx())))) + bool as_volume = + volume.is_modifier && hover_from_single_instance && !ctrl_pressed && + ( + (!deselect) || + (deselect && !m_selection.is_single_full_instance() && (volume.object_idx() == m_selection.get_object_idx()) && (volume.instance_idx() == m_selection.get_instance_idx())) + ); + + if (as_volume) { if (deselect) - volume->hover = GLVolume::HS_Deselect; + volume.hover = GLVolume::HS_Deselect; else - volume->hover = GLVolume::HS_Select; + volume.hover = GLVolume::HS_Select; } else { - int object_idx = volume->object_idx(); - int instance_idx = volume->instance_idx(); + int object_idx = volume.object_idx(); + int instance_idx = volume.instance_idx(); for (GLVolume* v : m_volumes.volumes) { @@ -5592,23 +5638,45 @@ void GLCanvas3D::_resize_toolbars() const void GLCanvas3D::_update_selection_from_hover() { + bool ctrl_pressed = wxGetKeyState(WXK_CONTROL); + if (m_hover_volume_idxs.empty()) + { + if (!ctrl_pressed && (m_rectangle_selection.get_state() == GLSelectionRectangle::Select)) + m_selection.clear(); + return; + } GLSelectionRectangle::EState state = m_rectangle_selection.get_state(); - bool is_ctrl_pressed = wxGetKeyState(WXK_CONTROL); - bool is_single_modifier = (m_hover_volume_idxs.size() == 1) && m_volumes.volumes[m_hover_volume_idxs.front()]->is_modifier; + bool hover_modifiers_only = true; + for (int i : m_hover_volume_idxs) + { + if (!m_volumes.volumes[i]->is_modifier) + { + hover_modifiers_only = false; + break; + } + } - if ((state == GLSelectionRectangle::Select) && !is_ctrl_pressed) + if ((state == GLSelectionRectangle::Select) && !ctrl_pressed) m_selection.clear(); - for (int idx : m_hover_volume_idxs) + for (int i : m_hover_volume_idxs) { if (state == GLSelectionRectangle::Select) - m_selection.add(idx, is_single_modifier && !is_ctrl_pressed); + { + if (hover_modifiers_only) + { + const GLVolume& v = *m_volumes.volumes[i]; + m_selection.add_volume(v.object_idx(), v.volume_idx(), v.instance_idx(), false); + } + else + m_selection.add(i, false); + } else - m_selection.remove(idx); + m_selection.remove(i); } m_gizmos.refresh_on_off_state(m_selection); From 818f7ad647d0a5ed261820ddce8638e6a18ede72 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Fri, 26 Apr 2019 14:07:46 +0200 Subject: [PATCH 23/94] Rectangle selection in 3D scene -> Fixed selection cleared when mouse left-up follows shift-up --- src/slic3r/GUI/GLCanvas3D.cpp | 12 +++++++++++- src/slic3r/GUI/GLCanvas3D.hpp | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index f4b6a2b999..985f7ded2f 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -675,6 +675,7 @@ GLCanvas3D::Mouse::Mouse() : dragging(false) , position(DBL_MAX, DBL_MAX) , scene_position(DBL_MAX, DBL_MAX, DBL_MAX) + , ignore_left_up(false) { } @@ -2387,6 +2388,7 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) { _update_selection_from_hover(); m_rectangle_selection.stop_dragging(); + m_mouse.ignore_left_up = true; m_dirty = true; } set_cursor(Standard); @@ -2397,6 +2399,7 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) { _update_selection_from_hover(); m_rectangle_selection.stop_dragging(); + m_mouse.ignore_left_up = true; m_dirty = true; } set_cursor(Standard); @@ -2409,12 +2412,18 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) if (keyCode == WXK_SHIFT) { if (m_picking_enabled && (m_gizmos.get_current_type() != GLGizmosManager::SlaSupports)) + { + m_mouse.ignore_left_up = false; set_cursor(Cross); + } } else if (keyCode == WXK_ALT) { if (m_picking_enabled && (m_gizmos.get_current_type() != GLGizmosManager::SlaSupports)) + { + m_mouse.ignore_left_up = false; set_cursor(Cross); + } } else if (keyCode == WXK_CONTROL) m_dirty = true; @@ -2536,6 +2545,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) m_mouse.set_start_position_3D_as_invalid(); m_mouse.set_start_position_2D_as_invalid(); m_mouse.dragging = false; + m_mouse.ignore_left_up = false; m_dirty = true; if (m_canvas->HasCapture()) @@ -2857,7 +2867,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) m_rectangle_selection.stop_dragging(); } - else if (evt.LeftUp() && !m_mouse.dragging && m_hover_volume_idxs.empty() && !is_layers_editing_enabled()) + else if (evt.LeftUp() && !m_mouse.ignore_left_up && !m_mouse.dragging && m_hover_volume_idxs.empty() && !is_layers_editing_enabled()) { // deselect and propagate event through callback if (!evt.ShiftDown() && m_picking_enabled) diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 4d2c0c2b2c..4670b72215 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -303,6 +303,7 @@ class GLCanvas3D Vec2d position; Vec3d scene_position; Drag drag; + bool ignore_left_up; Mouse(); From 6526a8fcafaf2453e5b69ef65409a1bf728b63de Mon Sep 17 00:00:00 2001 From: bubnikv Date: Fri, 26 Apr 2019 17:28:31 +0200 Subject: [PATCH 24/94] WIP: Transformation of instances in world coordinate space: Ulocking the "anisotropic" scaling checkbox will bake the transformation into meshes to allow for scaling in world axes. Optimized and templated the stl_transform functions, now also available for 3x3 matrices. The Canvas3D::reload_scene() now maintains selection even if all volumes of an instance changed their IDs. --- src/admesh/stl.h | 61 ++++++++++++++++- src/admesh/util.cpp | 59 ----------------- src/libslic3r/Geometry.hpp | 15 +++++ src/libslic3r/Model.cpp | 81 +++++++++++++++++++++++ src/libslic3r/Model.hpp | 14 ++++ src/libslic3r/Point.hpp | 5 ++ src/libslic3r/TriangleMesh.cpp | 11 +++ src/libslic3r/TriangleMesh.hpp | 1 + src/slic3r/GUI/3DScene.cpp | 2 + src/slic3r/GUI/GLCanvas3D.cpp | 11 ++- src/slic3r/GUI/GUI_ObjectList.cpp | 9 +-- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 37 +++++------ src/slic3r/GUI/Selection.cpp | 45 ++++++------- src/slic3r/GUI/Selection.hpp | 4 +- 14 files changed, 237 insertions(+), 118 deletions(-) diff --git a/src/admesh/stl.h b/src/admesh/stl.h index d682b24347..63b15986a1 100644 --- a/src/admesh/stl.h +++ b/src/admesh/stl.h @@ -180,8 +180,65 @@ extern void stl_rotate_z(stl_file *stl, float angle); extern void stl_mirror_xy(stl_file *stl); extern void stl_mirror_yz(stl_file *stl); extern void stl_mirror_xz(stl_file *stl); -extern void stl_transform(stl_file *stl, float *trafo3x4); -extern void stl_transform(stl_file *stl, const Eigen::Transform& t); + +template +extern void stl_transform(stl_file *stl, T *trafo3x4) +{ + if (stl->error) + return; + + for (uint32_t i_face = 0; i_face < stl->stats.number_of_facets; ++ i_face) { + stl_facet &face = stl->facet_start[i_face]; + for (int i_vertex = 0; i_vertex < 3; ++ i_vertex) { + stl_vertex &v_dst = face.vertex[i_vertex]; + stl_vertex v_src = v_dst; + v_dst(0) = T(trafo3x4[0] * v_src(0) + trafo3x4[1] * v_src(1) + trafo3x4[2] * v_src(2) + trafo3x4[3]); + v_dst(1) = T(trafo3x4[4] * v_src(0) + trafo3x4[5] * v_src(1) + trafo3x4[6] * v_src(2) + trafo3x4[7]); + v_dst(2) = T(trafo3x4[8] * v_src(0) + trafo3x4[9] * v_src(1) + trafo3x4[10] * v_src(2) + trafo3x4[11]); + } + stl_vertex &v_dst = face.normal; + stl_vertex v_src = v_dst; + v_dst(0) = T(trafo3x4[0] * v_src(0) + trafo3x4[1] * v_src(1) + trafo3x4[2] * v_src(2)); + v_dst(1) = T(trafo3x4[4] * v_src(0) + trafo3x4[5] * v_src(1) + trafo3x4[6] * v_src(2)); + v_dst(2) = T(trafo3x4[8] * v_src(0) + trafo3x4[9] * v_src(1) + trafo3x4[10] * v_src(2)); + } + + stl_get_size(stl); +} + +template +inline void stl_transform(stl_file *stl, const Eigen::Transform& t) +{ + if (stl->error) + return; + + const Eigen::Matrix r = t.matrix().block<3, 3>(0, 0); + for (size_t i = 0; i < stl->stats.number_of_facets; ++i) { + stl_facet &f = stl->facet_start[i]; + for (size_t j = 0; j < 3; ++j) + f.vertex[j] = (t * f.vertex[j].cast()).cast().eval(); + f.normal = (r * f.normal.cast()).cast().eval(); + } + + stl_get_size(stl); +} + +template +inline void stl_transform(stl_file *stl, const Eigen::Matrix& m) +{ + if (stl->error) + return; + + for (size_t i = 0; i < stl->stats.number_of_facets; ++i) { + stl_facet &f = stl->facet_start[i]; + for (size_t j = 0; j < 3; ++j) + f.vertex[j] = (m * f.vertex[j].cast()).cast().eval(); + f.normal = (m * f.normal.cast()).cast().eval(); + } + + stl_get_size(stl); +} + extern void stl_open_merge(stl_file *stl, char *file); extern void stl_invalidate_shared_vertices(stl_file *stl); extern void stl_generate_shared_vertices(stl_file *stl); diff --git a/src/admesh/util.cpp b/src/admesh/util.cpp index 7cb69bccdd..305a58e22b 100644 --- a/src/admesh/util.cpp +++ b/src/admesh/util.cpp @@ -137,65 +137,6 @@ static void calculate_normals(stl_file *stl) } } -void stl_transform(stl_file *stl, float *trafo3x4) { - int i_face, i_vertex; - if (stl->error) - return; - for (i_face = 0; i_face < stl->stats.number_of_facets; ++ i_face) { - stl_vertex *vertices = stl->facet_start[i_face].vertex; - for (i_vertex = 0; i_vertex < 3; ++ i_vertex) { - stl_vertex &v_dst = vertices[i_vertex]; - stl_vertex v_src = v_dst; - v_dst(0) = trafo3x4[0] * v_src(0) + trafo3x4[1] * v_src(1) + trafo3x4[2] * v_src(2) + trafo3x4[3]; - v_dst(1) = trafo3x4[4] * v_src(0) + trafo3x4[5] * v_src(1) + trafo3x4[6] * v_src(2) + trafo3x4[7]; - v_dst(2) = trafo3x4[8] * v_src(0) + trafo3x4[9] * v_src(1) + trafo3x4[10] * v_src(2) + trafo3x4[11]; - } - } - stl_get_size(stl); - calculate_normals(stl); -} - -void stl_transform(stl_file *stl, const Eigen::Transform& t) -{ - if (stl->error) - return; - - unsigned int vertices_count = 3 * (unsigned int)stl->stats.number_of_facets; - if (vertices_count == 0) - return; - - Eigen::MatrixXf src_vertices(3, vertices_count); - stl_facet* facet_ptr = stl->facet_start; - unsigned int v_id = 0; - while (facet_ptr < stl->facet_start + stl->stats.number_of_facets) - { - for (int i = 0; i < 3; ++i) - { - ::memcpy((void*)src_vertices.col(v_id).data(), (const void*)&facet_ptr->vertex[i], 3 * sizeof(float)); - ++v_id; - } - facet_ptr += 1; - } - - Eigen::MatrixXf dst_vertices(3, vertices_count); - dst_vertices = t.cast() * src_vertices.colwise().homogeneous(); - - facet_ptr = stl->facet_start; - v_id = 0; - while (facet_ptr < stl->facet_start + stl->stats.number_of_facets) - { - for (int i = 0; i < 3; ++i) - { - ::memcpy((void*)&facet_ptr->vertex[i], (const void*)dst_vertices.col(v_id).data(), 3 * sizeof(float)); - ++v_id; - } - facet_ptr += 1; - } - - stl_get_size(stl); - calculate_normals(stl); -} - void stl_rotate_x(stl_file *stl, float angle) { int i; diff --git a/src/libslic3r/Geometry.hpp b/src/libslic3r/Geometry.hpp index 25b849d8ce..7b5abd2e58 100644 --- a/src/libslic3r/Geometry.hpp +++ b/src/libslic3r/Geometry.hpp @@ -269,6 +269,21 @@ extern Eigen::Quaterniond rotation_xyz_diff(const Vec3d &rot_xyz_from, const Vec // This should only be called if it is known, that the two rotations only differ in rotation around the Z axis. extern double rotation_diff_z(const Vec3d &rot_xyz_from, const Vec3d &rot_xyz_to); +// Is the angle close to a multiple of 90 degrees? +inline bool is_rotation_ninety_degrees(double a) +{ + a = fmod(std::abs(a), 0.5 * M_PI); + if (a > 0.25 * PI) + a = 0.5 * PI - a; + return a < 0.001; +} + +// Is the angle close to a multiple of 90 degrees? +inline bool is_rotation_ninety_degrees(const Vec3d &rotation) +{ + return is_rotation_ninety_degrees(rotation.x()) && is_rotation_ninety_degrees(rotation.y()) && is_rotation_ninety_degrees(rotation.z()); +} + } } #endif diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 37e1f4a1bc..3800571f07 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -24,6 +24,19 @@ unsigned int Model::s_auto_extruder_id = 1; size_t ModelBase::s_last_id = 0; +// Unique object / instance ID for the wipe tower. +ModelID wipe_tower_object_id() +{ + static ModelBase mine; + return mine.id(); +} + +ModelID wipe_tower_instance_id() +{ + static ModelBase mine; + return mine.id(); +} + Model& Model::assign_copy(const Model &rhs) { this->copy_id(rhs); @@ -1320,6 +1333,58 @@ void ModelObject::repair() v->mesh.repair(); } +// Support for non-uniform scaling of instances. If an instance is rotated by angles, which are not multiples of ninety degrees, +// then the scaling in world coordinate system is not representable by the Geometry::Transformation structure. +// This situation is solved by baking in the instance transformation into the mesh vertices. +// Rotation and mirroring is being baked in. In case the instance scaling was non-uniform, it is baked in as well. +void ModelObject::bake_xy_rotation_into_meshes(size_t instance_idx) +{ + assert(instance_idx < this->instances.size()); + + const Geometry::Transformation reference_trafo = this->instances[instance_idx]->get_transformation(); + if (Geometry::is_rotation_ninety_degrees(reference_trafo.get_rotation())) + // nothing to do, scaling in the world coordinate space is possible in the representation of Geometry::Transformation. + return; + + bool left_handed = reference_trafo.is_left_handed(); + bool has_mirrorring = ! reference_trafo.get_mirror().isApprox(Vec3d(1., 1., 1.)); + bool uniform_scaling = std::abs(reference_trafo.get_scaling_factor().x() - reference_trafo.get_scaling_factor().y()) < EPSILON && + std::abs(reference_trafo.get_scaling_factor().x() - reference_trafo.get_scaling_factor().z()) < EPSILON; + double new_scaling_factor = uniform_scaling ? reference_trafo.get_scaling_factor().x() : 1.; + + // Adjust the instances. + for (size_t i = 0; i < this->instances.size(); ++ i) { + ModelInstance &model_instance = *this->instances[i]; + model_instance.set_rotation(Vec3d(0., 0., Geometry::rotation_diff_z(reference_trafo.get_rotation(), model_instance.get_rotation()))); + model_instance.set_scaling_factor(Vec3d(new_scaling_factor, new_scaling_factor, new_scaling_factor)); + model_instance.set_mirror(Vec3d(1., 1., 1.)); + } + + // Adjust the meshes. + // Transformation to be applied to the meshes. + Eigen::Matrix3d mesh_trafo_3x3 = reference_trafo.get_matrix(true, false, uniform_scaling, ! has_mirrorring).matrix().block<3, 3>(0, 0); + Transform3d volume_offset_correction = this->instances[instance_idx]->get_transformation().get_matrix().inverse() * reference_trafo.get_matrix(); + for (ModelVolume *model_volume : this->volumes) { + const Geometry::Transformation volume_trafo = model_volume->get_transformation(); + bool volume_left_handed = volume_trafo.is_left_handed(); + bool volume_has_mirrorring = ! volume_trafo.get_mirror().isApprox(Vec3d(1., 1., 1.)); + bool volume_uniform_scaling = std::abs(volume_trafo.get_scaling_factor().x() - volume_trafo.get_scaling_factor().y()) < EPSILON && + std::abs(volume_trafo.get_scaling_factor().x() - volume_trafo.get_scaling_factor().z()) < EPSILON; + double volume_new_scaling_factor = volume_uniform_scaling ? volume_trafo.get_scaling_factor().x() : 1.; + // Transform the mesh. + Matrix3d volume_trafo_3x3 = volume_trafo.get_matrix(true, false, volume_uniform_scaling, !volume_has_mirrorring).matrix().block<3, 3>(0, 0); + model_volume->transform_mesh(mesh_trafo_3x3 * volume_trafo_3x3, left_handed != volume_left_handed); + // Reset the rotation, scaling and mirroring. + model_volume->set_rotation(Vec3d(0., 0., 0.)); + model_volume->set_scaling_factor(Vec3d(volume_new_scaling_factor, volume_new_scaling_factor, volume_new_scaling_factor)); + model_volume->set_mirror(Vec3d(1., 1., 1.)); + // Move the reference point of the volume to compensate for the change of the instance trafo. + model_volume->set_offset(volume_offset_correction * volume_trafo.get_offset()); + } + + this->invalidate_bounding_box(); +} + double ModelObject::get_min_z() const { if (instances.empty()) @@ -1656,6 +1721,22 @@ void ModelVolume::scale_geometry(const Vec3d& versor) m_convex_hull.scale(versor); } +void ModelVolume::transform_mesh(const Transform3d &mesh_trafo, bool fix_left_handed) +{ + this->mesh.transform(mesh_trafo, fix_left_handed); + this->m_convex_hull.transform(mesh_trafo, fix_left_handed); + // Let the rest of the application know that the geometry changed, so the meshes have to be reloaded. + this->set_new_unique_id(); +} + +void ModelVolume::transform_mesh(const Matrix3d &matrix, bool fix_left_handed) +{ + this->mesh.transform(matrix, fix_left_handed); + this->m_convex_hull.transform(matrix, fix_left_handed); + // Let the rest of the application know that the geometry changed, so the meshes have to be reloaded. + this->set_new_unique_id(); +} + void ModelInstance::transform_mesh(TriangleMesh* mesh, bool dont_translate) const { mesh->transform(get_matrix(dont_translate)); diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index 80187d259f..c48979e97e 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -54,6 +54,10 @@ struct ModelID size_t id; }; +// Unique object / instance ID for the wipe tower. +extern ModelID wipe_tower_object_id(); +extern ModelID wipe_tower_instance_id(); + // Base for Model, ModelObject, ModelVolume, ModelInstance or ModelMaterial to provide a unique ID // to synchronize the front end (UI) with the back end (BackgroundSlicingProcess / Print / PrintObject). // Achtung! The s_last_id counter is not thread safe, so it is expected, that the ModelBase derived instances @@ -85,6 +89,9 @@ private: static inline ModelID generate_new_id() { return ModelID(++ s_last_id); } static size_t s_last_id; + + friend ModelID wipe_tower_object_id(); + friend ModelID wipe_tower_instance_id(); }; #define MODELBASE_DERIVED_COPY_MOVE_CLONE(TYPE) \ @@ -265,6 +272,11 @@ public: ModelObjectPtrs cut(size_t instance, coordf_t z, bool keep_upper = true, bool keep_lower = true, bool rotate_lower = false); // Note: z is in world coordinates void split(ModelObjectPtrs* new_objects); void repair(); + // Support for non-uniform scaling of instances. If an instance is rotated by angles, which are not multiples of ninety degrees, + // then the scaling in world coordinate system is not representable by the Geometry::Transformation structure. + // This situation is solved by baking in the instance transformation into the mesh vertices. + // Rotation and mirroring is being baked in. In case the instance scaling was non-uniform, it is baked in as well. + void bake_xy_rotation_into_meshes(size_t instance_idx); double get_min_z() const; double get_instance_min_z(size_t instance_idx) const; @@ -414,6 +426,8 @@ protected: explicit ModelVolume(const ModelVolume &rhs) = default; void set_model_object(ModelObject *model_object) { object = model_object; } + void transform_mesh(const Transform3d& t, bool fix_left_handed); + void transform_mesh(const Matrix3d& m, bool fix_left_handed); private: // Parent object owning this ModelVolume. diff --git a/src/libslic3r/Point.hpp b/src/libslic3r/Point.hpp index 6b35600cbd..b02ead2994 100644 --- a/src/libslic3r/Point.hpp +++ b/src/libslic3r/Point.hpp @@ -40,6 +40,11 @@ typedef std::vector Points3; typedef std::vector Pointfs; typedef std::vector Pointf3s; +typedef Eigen::Matrix Matrix2f; +typedef Eigen::Matrix Matrix2d; +typedef Eigen::Matrix Matrix3f; +typedef Eigen::Matrix Matrix3d; + typedef Eigen::Transform Transform2f; typedef Eigen::Transform Transform2d; typedef Eigen::Transform Transform3f; diff --git a/src/libslic3r/TriangleMesh.cpp b/src/libslic3r/TriangleMesh.cpp index f449ac2b41..04194a0f66 100644 --- a/src/libslic3r/TriangleMesh.cpp +++ b/src/libslic3r/TriangleMesh.cpp @@ -330,6 +330,17 @@ void TriangleMesh::transform(const Transform3d& t, bool fix_left_handed) } } +void TriangleMesh::transform(const Matrix3d& m, bool fix_left_handed) +{ + stl_transform(&stl, m); + stl_invalidate_shared_vertices(&stl); + if (fix_left_handed && m.determinant() < 0.) { + // Left handed transformation is being applied. It is a good idea to flip the faces and their normals. + this->repair(); + stl_reverse_all_facets(&stl); + } +} + void TriangleMesh::align_to_origin() { this->translate( diff --git a/src/libslic3r/TriangleMesh.hpp b/src/libslic3r/TriangleMesh.hpp index 60ddcca088..c284f6482b 100644 --- a/src/libslic3r/TriangleMesh.hpp +++ b/src/libslic3r/TriangleMesh.hpp @@ -52,6 +52,7 @@ public: void mirror_y() { this->mirror(Y); } void mirror_z() { this->mirror(Z); } void transform(const Transform3d& t, bool fix_left_handed = false); + void transform(const Matrix3d& t, bool fix_left_handed = false); void align_to_origin(); void rotate(double angle, Point* center); TriangleMeshPtrs split() const; diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index 9038e388c8..bbedc08027 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -716,6 +716,8 @@ int GLVolumeCollection::load_wipe_tower_preview( v.bounding_box = v.indexed_vertex_array.bounding_box(); v.indexed_vertex_array.finalize_geometry(use_VBOs); v.composite_id = GLVolume::CompositeID(obj_idx, 0, 0); + v.geometry_id.first = 0; + v.geometry_id.second = wipe_tower_instance_id().id; v.is_wipe_tower = true; v.shader_outside_printer_detection_enabled = ! size_unknown; return int(this->volumes.size() - 1); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 6690e33e3a..f8859807f8 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1770,6 +1770,7 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re // State of the sla_steps for all SLAPrintObjects. std::vector sla_support_state; + std::vector instance_ids_selected; std::vector map_glvolume_old_to_new(m_volumes.volumes.size(), size_t(-1)); std::vector glvolumes_new; glvolumes_new.reserve(m_volumes.volumes.size()); @@ -1834,6 +1835,10 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re if (it != model_volume_state.end() && it->geometry_id == key.geometry_id) mvs = &(*it); } + // Emplace instance ID of the volume. Both the aux volumes and model volumes share the same instance ID. + // The wipe tower has its own wipe_tower_instance_id(). + if (m_selection.contains_volume(volume_id)) + instance_ids_selected.emplace_back(volume->geometry_id.second); if (mvs == nullptr || force_full_scene_refresh) { // This GLVolume will be released. if (volume->is_wipe_tower) { @@ -1865,6 +1870,7 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re } } } + sort_remove_duplicates(instance_ids_selected); } if (m_reload_delayed) @@ -2001,7 +2007,10 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re update_volumes_colors_by_extruder(); // Update selection indices based on the old/new GLVolumeCollection. - m_selection.volumes_changed(map_glvolume_old_to_new); + if (m_selection.get_mode() == Selection::Instance) + m_selection.instances_changed(instance_ids_selected); + else + m_selection.volumes_changed(map_glvolume_old_to_new); } m_gizmos.update_data(*this); diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index f8ad8b7bb3..f65c83abb0 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -1357,19 +1357,12 @@ Geometry::Transformation volume_to_bed_transformation(const Geometry::Transforma { Geometry::Transformation out; - // Is the angle close to a multiple of 90 degrees? - auto ninety_degrees = [](double a) { - a = fmod(std::abs(a), 0.5 * PI); - if (a > 0.25 * PI) - a = 0.5 * PI - a; - return a < 0.001; - }; if (instance_transformation.is_scaling_uniform()) { // No need to run the non-linear least squares fitting for uniform scaling. // Just set the inverse. out.set_from_transform(instance_transformation.get_matrix(true).inverse()); } - else if (ninety_degrees(instance_transformation.get_rotation().x()) && ninety_degrees(instance_transformation.get_rotation().y()) && ninety_degrees(instance_transformation.get_rotation().z())) + else if (Geometry::is_rotation_ninety_degrees(instance_transformation.get_rotation())) { // Anisotropic scaling, rotation by multiples of ninety degrees. Eigen::Matrix3d instance_rotation_trafo = diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index df28d8e07b..761f29e98d 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -177,15 +177,19 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : void ObjectManipulation::Show(const bool show) { - if (show == IsShown()) - return; + if (show != IsShown()) { + m_og->Show(show); - m_og->Show(show); + if (show && wxGetApp().get_mode() != comSimple) { + m_og->get_grid_sizer()->Show(size_t(0), false); + m_og->get_grid_sizer()->Show(size_t(1), false); + } + } - if (show && wxGetApp().get_mode() != comSimple) { - m_og->get_grid_sizer()->Show(size_t(0), false); - m_og->get_grid_sizer()->Show(size_t(1), false); - } + if (show) { + bool show_world_local_combo = wxGetApp().plater()->canvas3D()->get_selection().is_single_full_instance(); + m_word_local_combo->Show(show_world_local_combo); + } } bool ObjectManipulation::IsShown() @@ -201,18 +205,6 @@ void ObjectManipulation::UpdateAndShow(const bool show) OG_Settings::UpdateAndShow(show); } -static bool is_rotation_ninety_degrees(const Vec3d &rotation) -{ - // Is the angle close to a multiple of 90 degrees? - auto ninety_degrees = [](double a) { - a = fmod(std::abs(a), 0.5 * PI); - if (a > 0.25 * PI) - a = 0.5 * PI - a; - return a < 0.001; - }; - return ninety_degrees(rotation.x()) && ninety_degrees(rotation.y()) && ninety_degrees(rotation.z()); -} - void ObjectManipulation::update_settings_value(const Selection& selection) { m_new_move_label_string = L("Position"); @@ -269,7 +261,7 @@ void ObjectManipulation::update_settings_value(const Selection& selection) // all volumes in the selection belongs to the same instance, any of them contains the needed instance data, so we take the first one const GLVolume* volume = selection.get_volume(*selection.get_volume_idxs().begin()); // Is the angle close to a multiple of 90 degrees? - if (! is_rotation_ninety_degrees(volume->get_instance_rotation())) { + if (! Geometry::is_rotation_ninety_degrees(volume->get_instance_rotation())) { // Manipulating an instance in the world coordinate system, rotation is not multiples of ninety degrees, therefore enforce uniform scaling. m_uniform_scale = true; m_lock_bnt->SetLock(true); @@ -573,7 +565,7 @@ void ObjectManipulation::set_uniform_scaling(const bool new_value) // all volumes in the selection belongs to the same instance, any of them contains the needed instance data, so we take the first one const GLVolume* volume = selection.get_volume(*selection.get_volume_idxs().begin()); // Is the angle close to a multiple of 90 degrees? - if (! is_rotation_ninety_degrees(volume->get_instance_rotation())) { + if (! Geometry::is_rotation_ninety_degrees(volume->get_instance_rotation())) { // Cannot apply scaling in the world coordinate system. wxMessageDialog dlg(GUI::wxGetApp().mainframe, _(L("Non-uniform scaling of tilted objects is not supported in the World coordinate system.\n" @@ -586,6 +578,9 @@ void ObjectManipulation::set_uniform_scaling(const bool new_value) return; } // Bake the rotation into the meshes of the object. + (*wxGetApp().model_objects())[volume->composite_id.object_id]->bake_xy_rotation_into_meshes(volume->composite_id.instance_id); + // Update the 3D scene, selections etc. + wxGetApp().plater()->update(); } } m_uniform_scale = new_value; diff --git a/src/slic3r/GUI/Selection.cpp b/src/slic3r/GUI/Selection.cpp index 7a203fe74a..e4912918d4 100644 --- a/src/slic3r/GUI/Selection.cpp +++ b/src/slic3r/GUI/Selection.cpp @@ -310,43 +310,36 @@ void Selection::clear() wxGetApp().obj_manipul()->reset_cache(); } +// Update the selection based on the new instance IDs. +void Selection::instances_changed(const std::vector &instance_ids_selected) +{ + assert(m_valid); + assert(m_mode == Instance); + m_list.clear(); + for (unsigned int volume_idx = 0; volume_idx < (unsigned int)m_volumes->size(); ++ volume_idx) { + const GLVolume *volume = (*m_volumes)[volume_idx]; + auto it = std::lower_bound(instance_ids_selected.begin(), instance_ids_selected.end(), volume->geometry_id.second); + if (it != instance_ids_selected.end() && *it == volume->geometry_id.second) + this->do_add_volume(volume_idx); + } + update_type(); + m_bounding_box_dirty = true; +} + // Update the selection based on the map from old indices to new indices after m_volumes changed. // If the current selection is by instance, this call may select newly added volumes, if they belong to already selected instances. void Selection::volumes_changed(const std::vector &map_volume_old_to_new) { assert(m_valid); - - // 1) Update the selection set. + assert(m_mode == Volume); IndicesList list_new; - std::vector> model_instances; - for (unsigned int idx : m_list) { + for (unsigned int idx : m_list) if (map_volume_old_to_new[idx] != size_t(-1)) { unsigned int new_idx = (unsigned int)map_volume_old_to_new[idx]; + assert((*m_volumes)[new_idx]->selected); list_new.insert(new_idx); - if (m_mode == Instance) { - // Save the object_idx / instance_idx pair of selected old volumes, - // so we may add the newly added volumes of the same object_idx / instance_idx pair - // to the selection. - const GLVolume *volume = (*m_volumes)[new_idx]; - model_instances.emplace_back(volume->object_idx(), volume->instance_idx()); - } } - } m_list = std::move(list_new); - - if (!model_instances.empty()) { - // Instance selection mode. Add the newly added volumes of the same object_idx / instance_idx pair - // to the selection. - assert(m_mode == Instance); - sort_remove_duplicates(model_instances); - for (unsigned int i = 0; i < (unsigned int)m_volumes->size(); ++i) { - const GLVolume* volume = (*m_volumes)[i]; - for (const std::pair &model_instance : model_instances) - if (volume->object_idx() == model_instance.first && volume->instance_idx() == model_instance.second) - do_add_volume(i); - } - } - update_type(); m_bounding_box_dirty = true; } diff --git a/src/slic3r/GUI/Selection.hpp b/src/slic3r/GUI/Selection.hpp index 2a54e9a188..9f9c1c3256 100644 --- a/src/slic3r/GUI/Selection.hpp +++ b/src/slic3r/GUI/Selection.hpp @@ -224,6 +224,8 @@ public: void add_all(); + // Update the selection based on the new instance IDs. + void instances_changed(const std::vector &instance_ids_selected); // Update the selection based on the map from old indices to new indices after m_volumes changed. // If the current selection is by instance, this call may select newly added volumes, if they belong to already selected instances. void volumes_changed(const std::vector &map_volume_old_to_new); @@ -245,7 +247,7 @@ public: bool is_from_single_instance() const { return get_instance_idx() != -1; } bool is_from_single_object() const; - bool contains_volume(unsigned int volume_idx) const { return std::find(m_list.begin(), m_list.end(), volume_idx) != m_list.end(); } + bool contains_volume(unsigned int volume_idx) const { return m_list.find(volume_idx) != m_list.end(); } bool requires_uniform_scale() const; // Returns the the object id if the selection is from a single object, otherwise is -1 From fdf1b8af81a7d7d52f720b0f639c11ee6113560a Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Mon, 29 Apr 2019 08:26:08 +0200 Subject: [PATCH 25/94] Rectangle selection -> Removed cursor change --- src/slic3r/GUI/GLCanvas3D.cpp | 8 ++++---- src/slic3r/GUI/Gizmos/GLGizmosManager.cpp | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 985f7ded2f..e57eead306 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2391,7 +2391,7 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) m_mouse.ignore_left_up = true; m_dirty = true; } - set_cursor(Standard); +// set_cursor(Standard); } else if (keyCode == WXK_ALT) { @@ -2402,7 +2402,7 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) m_mouse.ignore_left_up = true; m_dirty = true; } - set_cursor(Standard); +// set_cursor(Standard); } else if (keyCode == WXK_CONTROL) m_dirty = true; @@ -2414,7 +2414,7 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) if (m_picking_enabled && (m_gizmos.get_current_type() != GLGizmosManager::SlaSupports)) { m_mouse.ignore_left_up = false; - set_cursor(Cross); +// set_cursor(Cross); } } else if (keyCode == WXK_ALT) @@ -2422,7 +2422,7 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) if (m_picking_enabled && (m_gizmos.get_current_type() != GLGizmosManager::SlaSupports)) { m_mouse.ignore_left_up = false; - set_cursor(Cross); +// set_cursor(Cross); } } else if (keyCode == WXK_CONTROL) diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index b7e1b3f07a..a003036345 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -861,14 +861,14 @@ bool GLGizmosManager::on_key(wxKeyEvent& evt, GLCanvas3D& canvas) } } - if (processed) - canvas.set_cursor(GLCanvas3D::Standard); +// if (processed) +// canvas.set_cursor(GLCanvas3D::Standard); } else if (evt.GetEventType() == wxEVT_KEY_DOWN) { if ((m_current == SlaSupports) && ((keyCode == WXK_SHIFT) || (keyCode == WXK_ALT)) && reinterpret_cast(get_current())->is_in_editing_mode()) { - canvas.set_cursor(GLCanvas3D::Cross); +// canvas.set_cursor(GLCanvas3D::Cross); processed = true; } } From dfe271965679c20cc300ff2f0b386ea10187343a Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Mon, 29 Apr 2019 08:31:32 +0200 Subject: [PATCH 26/94] Rectangle selection -> Min size of rectangle selection set to 1 pixel --- src/slic3r/GUI/GLCanvas3D.cpp | 75 +++++++++++++++++------------------ 1 file changed, 36 insertions(+), 39 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index e57eead306..74ced68bc3 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -3751,55 +3751,52 @@ void GLCanvas3D::_rectangular_selection_picking_pass() const if (m_multisample_allowed) glsafe(::glEnable(GL_MULTISAMPLE)); - int width = (int)m_rectangle_selection.get_width(); - int height = (int)m_rectangle_selection.get_height(); + int width = std::max((int)m_rectangle_selection.get_width(), 1); + int height = std::max((int)m_rectangle_selection.get_height(), 1); int px_count = width * height; - if (px_count > 0) + int left = (int)m_rectangle_selection.get_left(); + int top = get_canvas_size().get_height() - (int)m_rectangle_selection.get_top(); + if ((left >= 0) && (top >= 0)) { - int left = (int)m_rectangle_selection.get_left(); - int top = get_canvas_size().get_height() - (int)m_rectangle_selection.get_top(); - if ((left >= 0) && (top >= 0)) - { #define USE_PARALLEL 1 #if USE_PARALLEL - struct Pixel + struct Pixel + { + std::array data; + int id() const { return data[0] + (data[1] << 8) + (data[2] << 16); } + }; + + std::vector frame(px_count); + glsafe(::glReadPixels(left, top, width, height, GL_RGBA, GL_UNSIGNED_BYTE, (void*)frame.data())); + + tbb::spin_mutex mutex; + tbb::parallel_for(tbb::blocked_range(0, frame.size(), (size_t)width), + [this, &frame, &idxs, &mutex](const tbb::blocked_range& range) { + for (size_t i = range.begin(); i < range.end(); ++i) { - std::array data; - int id() const { return data[0] + (data[1] << 8) + (data[2] << 16); } - }; - - std::vector frame(px_count); - glsafe(::glReadPixels(left, top, width, height, GL_RGBA, GL_UNSIGNED_BYTE, (void*)frame.data())); - - tbb::spin_mutex mutex; - tbb::parallel_for(tbb::blocked_range(0, frame.size(), (size_t)width), - [this, &frame, &idxs, &mutex](const tbb::blocked_range& range) { - for (size_t i = range.begin(); i < range.end(); ++i) + int volume_id = frame[i].id(); + if ((0 <= volume_id) && (volume_id < (int)m_volumes.volumes.size())) { - int volume_id = frame[i].id(); - if ((0 <= volume_id) && (volume_id < (int)m_volumes.volumes.size())) - { - mutex.lock(); - idxs.insert(volume_id); - mutex.unlock(); - } + mutex.lock(); + idxs.insert(volume_id); + mutex.unlock(); } } - ); -#else - std::vector frame(4 * px_count); - glsafe(::glReadPixels(left, top, width, height, GL_RGBA, GL_UNSIGNED_BYTE, (void*)frame.data())); - - for (int i = 0; i < px_count; ++i) - { - int px_id = 4 * i; - int volume_id = frame[px_id] + (frame[px_id + 1] << 8) + (frame[px_id + 2] << 16); - if ((0 <= volume_id) && (volume_id < (int)m_volumes.volumes.size())) - idxs.insert(volume_id); - } -#endif // USE_PARALLEL } + ); +#else + std::vector frame(4 * px_count); + glsafe(::glReadPixels(left, top, width, height, GL_RGBA, GL_UNSIGNED_BYTE, (void*)frame.data())); + + for (int i = 0; i < px_count; ++i) + { + int px_id = 4 * i; + int volume_id = frame[px_id] + (frame[px_id + 1] << 8) + (frame[px_id + 2] << 16); + if ((0 <= volume_id) && (volume_id < (int)m_volumes.volumes.size())) + idxs.insert(volume_id); + } +#endif // USE_PARALLEL } } From 2a741bf8f88510114539f63eabc470370a45f6a6 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Mon, 29 Apr 2019 10:01:28 +0200 Subject: [PATCH 27/94] Rectangle selection -> Lighter color for deselect hover --- src/slic3r/GUI/3DScene.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index c96798c6fd..037f70962b 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -224,7 +224,7 @@ void GLIndexedVertexArray::render( const float GLVolume::SELECTED_COLOR[4] = { 0.0f, 1.0f, 0.0f, 1.0f }; const float GLVolume::HOVER_SELECT_COLOR[4] = { 0.4f, 0.9f, 0.1f, 1.0f }; -const float GLVolume::HOVER_DESELECT_COLOR[4] = { 0.9f, 0.4f, 0.1f, 1.0f }; +const float GLVolume::HOVER_DESELECT_COLOR[4] = { 1.0f, 0.75f, 0.75f, 1.0f }; const float GLVolume::OUTSIDE_COLOR[4] = { 0.0f, 0.38f, 0.8f, 1.0f }; const float GLVolume::SELECTED_OUTSIDE_COLOR[4] = { 0.19f, 0.58f, 1.0f, 1.0f }; const float GLVolume::DISABLED_COLOR[4] = { 0.25f, 0.25f, 0.25f, 1.0f }; From 2a47f0dc9249470815b4f4fe76dc39fc46fd29ba Mon Sep 17 00:00:00 2001 From: YuSanka Date: Mon, 29 Apr 2019 15:27:59 +0200 Subject: [PATCH 28/94] ObjectList improvements: Added warning icon for Parts with a repaired errors --- src/libslic3r/Model.cpp | 15 ++- src/libslic3r/Model.hpp | 2 + src/slic3r/GUI/GUI_ObjectList.cpp | 111 ++++++++++++---------- src/slic3r/GUI/GUI_ObjectList.hpp | 2 +- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 13 ++- src/slic3r/GUI/GUI_ObjectManipulation.hpp | 3 +- src/slic3r/GUI/Plater.cpp | 3 +- src/slic3r/GUI/wxExtensions.cpp | 85 ++++++++++++++--- src/slic3r/GUI/wxExtensions.hpp | 35 +++---- 9 files changed, 180 insertions(+), 89 deletions(-) diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index d1f426c5b8..17769a8e74 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -1485,9 +1485,10 @@ stl_stats ModelObject::get_object_stl_stats() const int ModelObject::get_mesh_errors_count(const int vol_idx /*= -1*/) const { - const stl_stats& stats = vol_idx == -1 ? - get_object_stl_stats() : - this->volumes[vol_idx]->mesh.stl.stats; + if (vol_idx >= 0) + return this->volumes[vol_idx]->get_mesh_errors_count(); + + const stl_stats& stats = get_object_stl_stats(); return stats.degenerate_facets + stats.edges_fixed + stats.facets_removed + stats.facets_added + stats.facets_reversed + stats.backwards_edges; @@ -1558,6 +1559,14 @@ void ModelVolume::calculate_convex_hull() m_convex_hull = mesh.convex_hull_3d(); } +int ModelVolume::get_mesh_errors_count() const +{ + const stl_stats& stats = this->mesh.stl.stats; + + return stats.degenerate_facets + stats.edges_fixed + stats.facets_removed + + stats.facets_added + stats.facets_reversed + stats.backwards_edges; +} + const TriangleMesh& ModelVolume::get_convex_hull() const { return m_convex_hull; diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index 0fc3fc1687..4efc19f584 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -375,6 +375,8 @@ public: void calculate_convex_hull(); const TriangleMesh& get_convex_hull() const; + // Get count of errors in the mesh + int get_mesh_errors_count() const; // Helpers for loading / storing into AMF / 3MF files. static ModelVolumeType type_from_string(const std::string &s); diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 054f74d70d..1a42459659 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -438,8 +438,8 @@ void ObjectList::update_name_in_model(const wxDataViewItem& item) const void ObjectList::init_icons() { - m_bmp_modifiermesh = ScalableBitmap(nullptr, "add_modifier"); // Add part - m_bmp_solidmesh = ScalableBitmap(nullptr, "add_part"); // Add modifier + m_bmp_solidmesh = ScalableBitmap(nullptr, "add_part"); // Add part + m_bmp_modifiermesh = ScalableBitmap(nullptr, "add_modifier"); // Add modifier m_bmp_support_enforcer = ScalableBitmap(nullptr, "support_enforcer");// Add support enforcer m_bmp_support_blocker = ScalableBitmap(nullptr, "support_blocker"); // Add support blocker @@ -455,6 +455,8 @@ void ObjectList::init_icons() // init icon for manifold warning m_bmp_manifold_warning = ScalableBitmap(nullptr, "exclamation"); + // Set warning bitmap for the model + m_objects_model->SetWarningBitmap(&m_bmp_manifold_warning.bmp()); // init bitmap for "Split to sub-objects" context menu m_bmp_split = ScalableBitmap(nullptr, "split_parts_SMALL"); @@ -468,8 +470,8 @@ void ObjectList::rescale_icons() m_bmp_vector.clear(); m_bmp_vector.reserve(4); // bitmaps for different types of parts for (ScalableBitmap* bitmap : std::vector { - &m_bmp_modifiermesh, // Add part - &m_bmp_solidmesh, // Add modifier + &m_bmp_solidmesh, // Add part + &m_bmp_modifiermesh, // Add modifier &m_bmp_support_enforcer, // Add support enforcer &m_bmp_support_blocker }) // Add support blocker { @@ -480,6 +482,9 @@ void ObjectList::rescale_icons() m_objects_model->SetVolumeBitmaps(m_bmp_vector); m_bmp_manifold_warning.msw_rescale(); + // Set warning bitmap for the model + m_objects_model->SetWarningBitmap(&m_bmp_manifold_warning.bmp()); + m_bmp_split.msw_rescale(); m_bmp_cog.msw_rescale(); @@ -541,7 +546,8 @@ void ObjectList::paste_volumes_into_list(int obj_idx, const ModelVolumePtrs& vol for (const ModelVolume* volume : volumes) { - auto vol_item = m_objects_model->AddVolumeChild(object_item, volume->name, volume->type(), + const wxDataViewItem& vol_item = m_objects_model->AddVolumeChild(object_item, volume->name, volume->type(), + volume->get_mesh_errors_count()>0 , volume->config.has("extruder") ? volume->config.option("extruder")->value : 0); auto opt_keys = volume->config.keys(); if (!opt_keys.empty() && !((opt_keys.size() == 1) && (opt_keys[0] == "extruder"))) @@ -617,12 +623,13 @@ void ObjectList::OnContextMenu(wxDataViewEvent&) if (title == " ") show_context_menu(); - else if (title == _("Name") && pt.x > 1.6f*wxGetApp().em_unit() && pt.x < 3.2f*wxGetApp().em_unit()) + else if (title == _("Name")) { int obj_idx, vol_idx; get_selected_item_indexes(obj_idx, vol_idx, item); - - if (is_windows10() && get_mesh_errors_count(obj_idx, vol_idx) > 0) + + if (is_windows10() && get_mesh_errors_count(obj_idx, vol_idx) > 0 && + pt.x > 2*wxGetApp().em_unit() && pt.x < 4*wxGetApp().em_unit() ) fix_through_netfabb(); } @@ -1374,21 +1381,23 @@ void ObjectList::load_subobject(ModelVolumeType type) int obj_idx = m_objects_model->GetIdByItem(item); if (obj_idx < 0) return; - wxArrayString part_names; - load_part((*m_objects)[obj_idx], part_names, type); + + std::vector> volumes_info; + load_part((*m_objects)[obj_idx], volumes_info, type); + changed_object(obj_idx); - for (int i = 0; i < part_names.size(); ++i) { - const wxDataViewItem sel_item = m_objects_model->AddVolumeChild(item, part_names.Item(i), type); - - if (i == part_names.size() - 1) - select_item(sel_item); - } + wxDataViewItem sel_item; + for (const auto& volume : volumes_info ) + sel_item = m_objects_model->AddVolumeChild(item, volume.first, type, volume.second); + + if (sel_item) + select_item(sel_item); } void ObjectList::load_part( ModelObject* model_object, - wxArrayString& part_names, + std::vector> &volumes_info, ModelVolumeType type) { wxWindow* parent = wxGetApp().tab_panel()->GetPage(0); @@ -1424,7 +1433,7 @@ void ObjectList::load_part( ModelObject* model_object, new_volume->set_type(type); new_volume->name = boost::filesystem::path(input_file).filename().string(); - part_names.Add(from_u8(new_volume->name)); + volumes_info.push_back(std::make_pair(from_u8(new_volume->name), new_volume->get_mesh_errors_count()>0)); // set a default extruder value, since user can't add it manually new_volume->config.set_key_value("extruder", new ConfigOptionInt(0)); @@ -1580,7 +1589,8 @@ void ObjectList::load_generic_subobject(const std::string& type_name, const Mode changed_object(obj_idx); const auto object_item = m_objects_model->GetTopParent(GetSelection()); - select_item(m_objects_model->AddVolumeChild(object_item, name, type)); + select_item(m_objects_model->AddVolumeChild(object_item, name, type, + new_volume->get_mesh_errors_count()>0)); #ifndef __WXOSX__ //#ifdef __WXMSW__ // #ys_FIXME selection_changed(); #endif //no __WXOSX__ //__WXMSW__ @@ -1612,6 +1622,10 @@ void ObjectList::del_subobject_item(wxDataViewItem& item) else if (!del_subobject_from_object(obj_idx, idx, type)) return; + // If last volume item with warning was deleted, unmark object item + if (type == itVolume && (*m_objects)[obj_idx]->get_mesh_errors_count() == 0) + m_objects_model->DeleteWarningIcon(m_objects_model->GetParent(item)); + m_objects_model->Delete(item); } @@ -1718,18 +1732,18 @@ void ObjectList::split() else parent = item; - for (auto id = 0; id < model_object->volumes.size(); id++) { - const auto vol_item = m_objects_model->AddVolumeChild(parent, from_u8(model_object->volumes[id]->name), - model_object->volumes[id]->is_modifier() ? - ModelVolumeType::PARAMETER_MODIFIER : ModelVolumeType::MODEL_PART, - model_object->volumes[id]->config.has("extruder") ? - model_object->volumes[id]->config.option("extruder")->value : 0, + for (const ModelVolume* volume : model_object->volumes) { + const wxDataViewItem& vol_item = m_objects_model->AddVolumeChild(parent, from_u8(volume->name), + volume->is_modifier() ? ModelVolumeType::PARAMETER_MODIFIER : ModelVolumeType::MODEL_PART, + volume->get_mesh_errors_count()>0, + volume->config.has("extruder") ? + volume->config.option("extruder")->value : 0, false); // add settings to the part, if it has those - auto opt_keys = model_object->volumes[id]->config.keys(); + auto opt_keys = volume->config.keys(); if ( !(opt_keys.size() == 1 && opt_keys[0] == "extruder") ) { select_item(m_objects_model->AddSettingsChild(vol_item)); - /*Collapse*/Expand(vol_item); + Expand(vol_item); } } @@ -1896,28 +1910,23 @@ void ObjectList::add_object_to_list(size_t obj_idx) const wxString& item_name = from_u8(model_object->name); const auto item = m_objects_model->Add(item_name, !model_object->config.has("extruder") ? 0 : - model_object->config.option("extruder")->value); - - // Add error icon if detected auto-repaire - if (get_mesh_errors_count(obj_idx) > 0) { - wxVariant variant; - variant << DataViewBitmapText(item_name, m_bmp_manifold_warning.bmp()); - m_objects_model->SetValue(variant, item, 0); - } + model_object->config.option("extruder")->value, + get_mesh_errors_count(obj_idx) > 0); // add volumes to the object if (model_object->volumes.size() > 1) { - for (auto id = 0; id < model_object->volumes.size(); id++) { - auto vol_item = m_objects_model->AddVolumeChild(item, - from_u8(model_object->volumes[id]->name), - model_object->volumes[id]->type(), - !model_object->volumes[id]->config.has("extruder") ? 0 : - model_object->volumes[id]->config.option("extruder")->value, + for (const ModelVolume* volume : model_object->volumes) { + const wxDataViewItem& vol_item = m_objects_model->AddVolumeChild(item, + from_u8(volume->name), + volume->type(), + volume->get_mesh_errors_count()>0, + !volume->config.has("extruder") ? 0 : + volume->config.option("extruder")->value, false); - auto opt_keys = model_object->volumes[id]->config.keys(); + auto opt_keys = volume->config.keys(); if (!opt_keys.empty() && !(opt_keys.size() == 1 && opt_keys[0] == "extruder")) { select_item(m_objects_model->AddSettingsChild(vol_item)); - /*Collapse*/Expand(vol_item); + Expand(vol_item); } } Expand(item); @@ -1931,7 +1940,7 @@ void ObjectList::add_object_to_list(size_t obj_idx) auto opt_keys = model_object->config.keys(); if (!opt_keys.empty() && !(opt_keys.size() == 1 && opt_keys[0] == "extruder")) { select_item(m_objects_model->AddSettingsChild(item)); - /*Collapse*/Expand(item); + Expand(item); } #ifndef __WXOSX__ @@ -2732,11 +2741,15 @@ void ObjectList::update_item_error_icon(const int obj_idx, const int vol_idx) co if (!item) return; - if (get_mesh_errors_count(obj_idx, vol_idx) == 0) { - // delete Error_icon if all errors are fixed - wxVariant variant; - variant << DataViewBitmapText(from_u8((*m_objects)[obj_idx]->name), wxNullBitmap); - m_objects_model->SetValue(variant, item, 0); + if (get_mesh_errors_count(obj_idx, vol_idx) == 0) + { + // if whole object has no errors more, + if (get_mesh_errors_count(obj_idx) == 0) + // unmark all items in the object + m_objects_model->DeleteWarningIcon(vol_idx >= 0 ? m_objects_model->GetParent(item) : item, true); + else + // unmark fixed item only + m_objects_model->DeleteWarningIcon(item); } } diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index 53acaaf3ca..1ca358cd90 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -216,7 +216,7 @@ public: void update_opt_keys(t_config_option_keys& t_optopt_keys); void load_subobject(ModelVolumeType type); - void load_part(ModelObject* model_object, wxArrayString& part_names, ModelVolumeType type); + void load_part(ModelObject* model_object, std::vector> &volumes_info, ModelVolumeType type); void load_generic_subobject(const std::string& type_name, const ModelVolumeType type); void del_object(const int obj_idx); void del_subobject_item(wxDataViewItem& item); diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index 29e8c25587..eea53e828e 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -21,7 +21,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : OG_Settings(parent, true) #ifndef __APPLE__ , m_focused_option("") - , m_manifold_warning_bmp(create_scaled_bitmap(parent, "exclamation")) + , m_manifold_warning_bmp(ScalableBitmap(parent, "exclamation")) #endif // __APPLE__ { m_og->set_name(_(L("Object Manipulation"))); @@ -367,8 +367,7 @@ void ObjectManipulation::emulate_kill_focus() void ObjectManipulation::update_manifold_warning_icon_state(const wxString& tooltip) { - m_fix_throught_netfab_bitmap->SetBitmap(tooltip.IsEmpty() ? wxNullBitmap : m_manifold_warning_bmp); - + m_fix_throught_netfab_bitmap->SetBitmap(tooltip.IsEmpty() ? wxNullBitmap : m_manifold_warning_bmp.bmp()); m_fix_throught_netfab_bitmap->SetToolTip(tooltip); } @@ -559,5 +558,13 @@ void ObjectManipulation::on_fill_empty_value(const std::string& opt_key) m_og->set_value(opt_key, double_to_string(value)); } +void ObjectManipulation::msw_rescale() +{ + m_manifold_warning_bmp.msw_rescale(); + m_fix_throught_netfab_bitmap->SetBitmap(m_manifold_warning_bmp.bmp()); + + get_og()->msw_rescale(); +} + } //namespace GUI } //namespace Slic3r \ No newline at end of file diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp index 9ced31a1fd..f691dcc839 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp @@ -79,7 +79,7 @@ class ObjectManipulation : public OG_Settings bool m_uniform_scale {true}; LockButton* m_lock_bnt{ nullptr }; - wxBitmap m_manifold_warning_bmp; + ScalableBitmap m_manifold_warning_bmp; wxStaticBitmap* m_fix_throught_netfab_bitmap; #ifndef __APPLE__ @@ -112,6 +112,7 @@ public: #endif // __APPLE__ void update_manifold_warning_icon_state(const wxString& tooltip); + void msw_rescale(); private: void reset_settings_value(); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index c221b50664..d45abd4793 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -896,8 +896,7 @@ void Sidebar::msw_rescale() p->frequently_changed_parameters->get_og(false)->msw_rescale(); p->object_list->msw_rescale(); - - p->object_manipulation->get_og()->msw_rescale(); + p->object_manipulation->msw_rescale(); p->object_settings->msw_rescale(); p->object_info->msw_rescale(); diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index d76e0da931..08069d02bf 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -420,14 +420,21 @@ ObjectDataViewModel::~ObjectDataViewModel() m_bitmap_cache = nullptr; } -wxDataViewItem ObjectDataViewModel::Add(const wxString &name, const int extruder) +wxDataViewItem ObjectDataViewModel::Add(const wxString &name, + const int extruder, + const bool has_errors/* = false*/) { const wxString extruder_str = extruder == 0 ? "default" : wxString::Format("%d", extruder); auto root = new ObjectDataViewModelNode(name, extruder_str); + // Add error icon if detected auto-repaire + if (has_errors) + root->m_bmp = *m_warning_bmp; + m_objects.push_back(root); // notify control wxDataViewItem child((void*)root); wxDataViewItem parent((void*)NULL); + ItemAdded(parent, child); return child; } @@ -435,6 +442,7 @@ wxDataViewItem ObjectDataViewModel::Add(const wxString &name, const int extruder wxDataViewItem ObjectDataViewModel::AddVolumeChild( const wxDataViewItem &parent_item, const wxString &name, const Slic3r::ModelVolumeType volume_type, + const bool has_errors/* = false*/, const int extruder/* = 0*/, const bool create_frst_child/* = true*/) { @@ -448,9 +456,14 @@ wxDataViewItem ObjectDataViewModel::AddVolumeChild( const wxDataViewItem &parent if (insert_position < 0 || root->GetNthChild(insert_position)->m_type != itInstanceRoot) insert_position = -1; + const bool obj_errors = root->m_bmp.IsOk(); + if (create_frst_child && root->m_volumes_cnt == 0) { - const auto node = new ObjectDataViewModelNode(root, root->m_name, *m_volume_bmps[0], extruder_str, 0); + const Slic3r::ModelVolumeType type = Slic3r::ModelVolumeType::MODEL_PART; + const auto node = new ObjectDataViewModelNode(root, root->m_name, GetVolumeIcon(type, obj_errors), extruder_str, 0); + node->m_volume_type = type; + insert_position < 0 ? root->Append(node) : root->Insert(node, insert_position); // notify control const wxDataViewItem child((void*)node); @@ -458,12 +471,15 @@ wxDataViewItem ObjectDataViewModel::AddVolumeChild( const wxDataViewItem &parent root->m_volumes_cnt++; if (insert_position > 0) insert_position++; - - node->m_volume_type = volume_type; } - const auto node = new ObjectDataViewModelNode(root, name, *m_volume_bmps[int(volume_type)], extruder_str, root->m_volumes_cnt); + const auto node = new ObjectDataViewModelNode(root, name, GetVolumeIcon(volume_type, has_errors), extruder_str, root->m_volumes_cnt); insert_position < 0 ? root->Append(node) : root->Insert(node, insert_position); + + // if part with errors is added, but object wasn't marked, then mark it + if (!obj_errors && has_errors) + root->SetBitmap(*m_warning_bmp); + // notify control const wxDataViewItem child((void*)node); ItemAdded(parent_item, child); @@ -1228,15 +1244,61 @@ void ObjectDataViewModel::Rescale() node->msw_rescale(); if (node->m_type & itVolume) - node->m_bmp = *m_volume_bmps[node->volume_type()]; + node->m_bmp = GetVolumeIcon(node->m_volume_type, node->m_bmp.GetWidth() != node->m_bmp.GetHeight()); if (node->m_type & itObject && node->m_bmp.IsOk()) - node->m_bmp = create_scaled_bitmap(nullptr, "exclamation"); + node->m_bmp = *m_warning_bmp; ItemChanged(item); } } +wxBitmap ObjectDataViewModel::GetVolumeIcon(const Slic3r::ModelVolumeType vol_type, const bool is_marked/* = false*/) +{ + if (!is_marked) + return *m_volume_bmps[static_cast(vol_type)]; + + std::string scaled_bitmap_name = "warning" + std::to_string(static_cast(vol_type)); + scaled_bitmap_name += "-em" + std::to_string(Slic3r::GUI::wxGetApp().em_unit()); + + wxBitmap *bmp = m_bitmap_cache->find(scaled_bitmap_name); + if (bmp == nullptr) { + std::vector bmps; + + bmps.emplace_back(*m_warning_bmp); + bmps.emplace_back(*m_volume_bmps[static_cast(vol_type)]); + + bmp = m_bitmap_cache->insert(scaled_bitmap_name, bmps); + } + + return *bmp; +} + +void ObjectDataViewModel::DeleteWarningIcon(const wxDataViewItem& item, const bool unmark_object/* = false*/) +{ + if (!item.IsOk()) + return; + + ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + + if (!node->GetBitmap().IsOk() || !(node->GetType() & (itVolume | itObject))) + return; + + if (node->GetType() & itVolume) { + node->SetBitmap(*m_volume_bmps[static_cast(node->volume_type())]); + return; + } + + node->SetBitmap(wxNullBitmap); + if (unmark_object) + { + wxDataViewItemArray children; + GetChildren(item, children); + for (const wxDataViewItem& child : children) + DeleteWarningIcon(child); + } +} + //----------------------------------------------------------------------------- // PrusaDataViewBitmapText //----------------------------------------------------------------------------- @@ -2351,8 +2413,7 @@ void ModeButton::SetState(const bool state) void ModeButton::focus_button(const bool focus) { - wxFont font = GetFont(); - const wxFont& new_font = focus ? font.Bold() : font.GetBaseFont(); + const wxFont& new_font = focus ? Slic3r::GUI::wxGetApp().bold_font() : Slic3r::GUI::wxGetApp().normal_font(); SetFont(new_font); @@ -2378,11 +2439,7 @@ ModeSizer::ModeSizer(wxWindow *parent, int hgap/* = 10*/) : m_mode_btns.reserve(3); for (const auto& button : buttons) { -// int x, y; -// parent->GetTextExtent(button.first, &x, &y, nullptr, nullptr, &Slic3r::GUI::wxGetApp().bold_font()); -// const wxSize size = wxSize(x + button.second.GetWidth() + Slic3r::GUI::wxGetApp().em_unit(), -// y + Slic3r::GUI::wxGetApp().em_unit()); - m_mode_btns.push_back(new ModeButton(parent, wxID_ANY, button.second, button.first/*, size*/)); + m_mode_btns.push_back(new ModeButton(parent, wxID_ANY, button.second, button.first)); } for (auto btn : m_mode_btns) diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp index 589317f2b0..8527e54259 100644 --- a/src/slic3r/GUI/wxExtensions.hpp +++ b/src/slic3r/GUI/wxExtensions.hpp @@ -323,14 +323,10 @@ public: return false; } - void SetBitmap(const wxBitmap &icon) - { - m_bmp = icon; - } - - ItemType GetType() const { - return m_type; - } + void SetBitmap(const wxBitmap &icon) { m_bmp = icon; } + const wxBitmap& GetBitmap() const { return m_bmp; } + const wxString& GetName() const { return m_name; } + ItemType GetType() const { return m_type; } void SetIdx(const int& idx) { m_idx = idx; @@ -339,9 +335,7 @@ public: m_name = wxString::Format("Instance_%d", m_idx + 1); } - int GetIdx() const { - return m_idx; - } + int GetIdx() const { return m_idx; } // use this function only for childrens void AssignAllVal(ObjectDataViewModelNode& from_node) @@ -374,10 +368,10 @@ public: // Set action icons for node void set_action_icon(); - void update_settings_digest_bitmaps(); - bool update_settings_digest(const std::vector& categories); - int volume_type() const { return int(m_volume_type); } - void msw_rescale(); + void update_settings_digest_bitmaps(); + bool update_settings_digest(const std::vector& categories); + int volume_type() const { return int(m_volume_type); } + void msw_rescale(); private: friend class ObjectDataViewModel; }; @@ -393,6 +387,7 @@ class ObjectDataViewModel :public wxDataViewModel { std::vector m_objects; std::vector m_volume_bmps; + wxBitmap* m_warning_bmp; wxDataViewCtrl* m_ctrl{ nullptr }; @@ -400,10 +395,13 @@ public: ObjectDataViewModel(); ~ObjectDataViewModel(); - wxDataViewItem Add(const wxString &name, const int extruder); + wxDataViewItem Add( const wxString &name, + const int extruder, + const bool has_errors = false); wxDataViewItem AddVolumeChild( const wxDataViewItem &parent_item, const wxString &name, const Slic3r::ModelVolumeType volume_type, + const bool has_errors = false, const int extruder = 0, const bool create_frst_child = true); wxDataViewItem AddSettingsChild(const wxDataViewItem &parent_item); @@ -475,11 +473,16 @@ public: const std::vector& categories); void SetVolumeBitmaps(const std::vector& volume_bmps) { m_volume_bmps = volume_bmps; } + void SetWarningBitmap(wxBitmap* bitmap) { m_warning_bmp = bitmap; } void SetVolumeType(const wxDataViewItem &item, const Slic3r::ModelVolumeType type); void SetAssociatedControl(wxDataViewCtrl* ctrl) { m_ctrl = ctrl; } // Rescale bitmaps for existing Items void Rescale(); + + wxBitmap GetVolumeIcon(const Slic3r::ModelVolumeType vol_type, + const bool is_marked = false); + void DeleteWarningIcon(const wxDataViewItem& item, const bool unmark_object = false); }; // ---------------------------------------------------------------------------- From e5c97364a4440ad362c2557f05ad6d89fcedc261 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Mon, 29 Apr 2019 16:01:52 +0200 Subject: [PATCH 29/94] Fix of anisotropic scaling from the 3D scene. --- src/slic3r/GUI/Gizmos/GLGizmosManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index f553918654..90d6e6c6d8 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -629,7 +629,7 @@ bool GLGizmosManager::on_mouse(wxMouseEvent& evt, GLCanvas3D& canvas) case Scale: { // Apply new temporary scale factors - TransformationType transformation_type(TransformationType::World_Relative_Joint); + TransformationType transformation_type(TransformationType::Local_Relative_Joint); if (evt.AltDown()) transformation_type.set_independent(); selection.scale(get_scale(), transformation_type); From 6921a04077ae72cb420db8b91dcf5b7dd366433f Mon Sep 17 00:00:00 2001 From: bubnikv Date: Mon, 29 Apr 2019 16:02:39 +0200 Subject: [PATCH 30/94] Trying to bind the common accelerators on the object list. --- src/slic3r/GUI/GUI_ObjectList.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index dbe8145f38..4625f572f3 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -120,7 +120,7 @@ ObjectList::ObjectList(wxWindow* parent) : #endif //__WXMSW__ }); - Bind(wxEVT_CHAR, [this](wxKeyEvent& event) { key_event(event); }); // doesn't work on OSX +// Bind(wxEVT_CHAR, [this](wxKeyEvent& event) { key_event(event); }); // doesn't work on OSX #ifdef __WXMSW__ GetMainWindow()->Bind(wxEVT_MOTION, [this](wxMouseEvent& event) { @@ -142,9 +142,27 @@ ObjectList::ObjectList(wxWindow* parent) : Bind(wxCUSTOMEVT_LAST_VOLUME_IS_DELETED, [this](wxCommandEvent& e) { last_volume_is_deleted(e.GetInt()); }); #ifdef __WXOSX__ - Bind(wxEVT_KEY_DOWN, &ObjectList::OnChar, this); +// Bind(wxEVT_KEY_DOWN, &ObjectList::OnChar, this); #endif //__WXOSX__ + { + // Accelerators + wxAcceleratorEntry entries[6]; + entries[0].Set(wxACCEL_CTRL, (int) 'C', wxID_COPY); + entries[1].Set(wxACCEL_CTRL, (int) 'X', wxID_CUT); + entries[2].Set(wxACCEL_CTRL, (int) 'V', wxID_PASTE); + entries[3].Set(wxACCEL_CTRL, (int) 'A', wxID_SELECTALL); + entries[4].Set(wxACCEL_NORMAL, WXK_DELETE, wxID_DELETE); + entries[5].Set(wxACCEL_NORMAL, WXK_BACK, wxID_DELETE); + wxAcceleratorTable accel(6, entries); + SetAcceleratorTable(accel); + + this->Bind(wxEVT_MENU, [this](wxCommandEvent &evt) { wxPostEvent((wxEvtHandler*)wxGetApp().plater()->canvas3D()->get_wxglcanvas(), SimpleEvent(EVT_GLTOOLBAR_COPY)); }, wxID_COPY); + this->Bind(wxEVT_MENU, [this](wxCommandEvent &evt) { wxPostEvent((wxEvtHandler*)wxGetApp().plater()->canvas3D()->get_wxglcanvas(), SimpleEvent(EVT_GLTOOLBAR_PASTE)); }, wxID_PASTE); + this->Bind(wxEVT_MENU, [this](wxCommandEvent &evt) { this->select_item_all_children(); }, wxID_SELECTALL); + this->Bind(wxEVT_MENU, [this](wxCommandEvent &evt) { this->remove(); }, wxID_DELETE); + } + Bind(wxEVT_SIZE, ([this](wxSizeEvent &e) { this->EnsureVisible(this->GetCurrentItem()); e.Skip(); })); } From 8c8f8fd940cdaf2dd12df52949d7ad67c17b5658 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Mon, 29 Apr 2019 16:11:39 +0200 Subject: [PATCH 31/94] Fixed compilation on osx --- src/admesh/stl.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/admesh/stl.h b/src/admesh/stl.h index 63b15986a1..07e8b6c3dc 100644 --- a/src/admesh/stl.h +++ b/src/admesh/stl.h @@ -181,6 +181,8 @@ extern void stl_mirror_xy(stl_file *stl); extern void stl_mirror_yz(stl_file *stl); extern void stl_mirror_xz(stl_file *stl); +extern void stl_get_size(stl_file *stl); + template extern void stl_transform(stl_file *stl, T *trafo3x4) { @@ -271,7 +273,6 @@ extern void stl_read(stl_file *stl, int first_facet, bool first); extern void stl_facet_stats(stl_file *stl, stl_facet facet, bool &first); extern void stl_reallocate(stl_file *stl); extern void stl_add_facet(stl_file *stl, stl_facet *new_facet); -extern void stl_get_size(stl_file *stl); extern void stl_clear_error(stl_file *stl); extern int stl_get_error(stl_file *stl); From 558bd5d95a448679b8e44c6c2af56962d48d1cc3 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Mon, 29 Apr 2019 16:42:50 +0200 Subject: [PATCH 32/94] Fixed usage of template method, worked only on non-standard MS compiler. --- src/admesh/stl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/admesh/stl.h b/src/admesh/stl.h index 07e8b6c3dc..1fe7ab05a4 100644 --- a/src/admesh/stl.h +++ b/src/admesh/stl.h @@ -214,7 +214,7 @@ inline void stl_transform(stl_file *stl, const Eigen::Transformerror) return; - const Eigen::Matrix r = t.matrix().block<3, 3>(0, 0); + const Eigen::Matrix r = t.matrix().template block<3, 3>(0, 0); for (size_t i = 0; i < stl->stats.number_of_facets; ++i) { stl_facet &f = stl->facet_start[i]; for (size_t j = 0; j < 3; ++j) From bfb9288df6480ec5b0303b86fefbafd847c3a54b Mon Sep 17 00:00:00 2001 From: bubnikv Date: Mon, 29 Apr 2019 16:59:31 +0200 Subject: [PATCH 33/94] Yet another template gymnastics --- src/admesh/stl.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/admesh/stl.h b/src/admesh/stl.h index 1fe7ab05a4..f867e197bd 100644 --- a/src/admesh/stl.h +++ b/src/admesh/stl.h @@ -218,8 +218,8 @@ inline void stl_transform(stl_file *stl, const Eigen::Transformstats.number_of_facets; ++i) { stl_facet &f = stl->facet_start[i]; for (size_t j = 0; j < 3; ++j) - f.vertex[j] = (t * f.vertex[j].cast()).cast().eval(); - f.normal = (r * f.normal.cast()).cast().eval(); + f.vertex[j] = (t * f.vertex[j].template cast()).template cast().eval(); + f.normal = (r * f.normal.template cast()).template cast().eval(); } stl_get_size(stl); @@ -234,8 +234,8 @@ inline void stl_transform(stl_file *stl, const Eigen::Matrixstats.number_of_facets; ++i) { stl_facet &f = stl->facet_start[i]; for (size_t j = 0; j < 3; ++j) - f.vertex[j] = (m * f.vertex[j].cast()).cast().eval(); - f.normal = (m * f.normal.cast()).cast().eval(); + f.vertex[j] = (m * f.vertex[j].template cast()).template cast().eval(); + f.normal = (m * f.normal.template cast()).template cast().eval(); } stl_get_size(stl); From a591bb0f15bc0e1c45517bf0fe791c1ff8927df7 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Mon, 29 Apr 2019 17:24:05 +0200 Subject: [PATCH 34/94] Missing forward declaration --- src/slic3r/GUI/GUI_ObjectManipulation.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp index b926547421..a665764980 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp @@ -6,6 +6,7 @@ #include "GUI_ObjectSettings.hpp" #include "GLCanvas3D.hpp" +class wxBitmapComboBox; class wxStaticText; class LockButton; From 5084d544a246063d315ae9ba000596726b2a7a67 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Mon, 29 Apr 2019 18:10:08 +0200 Subject: [PATCH 35/94] Fixed a bug, where std::string and wxString were mixed up. --- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 7 +++++-- src/slic3r/GUI/GUI_ObjectManipulation.hpp | 12 ++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index d15779308b..0102911561 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -301,8 +301,8 @@ void ObjectManipulation::update_if_dirty() if (!m_dirty) return; - auto update_label = [](std::string &label_cache, const std::string &new_label, wxStaticText *widget) { - std::string new_label_localized = _(new_label) + ":"; + auto update_label = [](wxString &label_cache, const std::string &new_label, wxStaticText *widget) { + wxString new_label_localized = _(new_label) + ":"; if (label_cache != new_label_localized) { label_cache = new_label_localized; widget->SetLabel(new_label_localized); @@ -420,6 +420,8 @@ void ObjectManipulation::change_rotation_value(int axis, double value) transformation_type.set_local(); } + //FIXME if anisotropic scaling is required, and is_single_full_instance && m_world_coordinates, apply 90 degrees rotation of the rotation vector. + selection.start_dragging(); selection.rotate( (M_PI / 180.0) * (transformation_type.absolute() ? rotation : rotation - m_cache.rotation), @@ -490,6 +492,7 @@ void ObjectManipulation::do_scale(const Vec3d &scale) const TransformationType transformation_type(TransformationType::World_Relative_Joint); if (selection.is_single_full_instance() && ! m_world_coordinates) transformation_type.set_local(); + //FIXME if anisotropic scaling is required, and is_single_full_instance && m_world_coordinates, apply 90 degrees rotation of the scaling vector. selection.start_dragging(); selection.scale(scaling_factor * 0.01, transformation_type); wxGetApp().plater()->canvas3D()->do_scale(); diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp index a665764980..e93ce1ffbc 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp @@ -28,9 +28,9 @@ class ObjectManipulation : public OG_Settings Vec3d size; Vec3d size_rounded; - std::string move_label_string; - std::string rotate_label_string; - std::string scale_label_string; + wxString move_label_string; + wxString rotate_label_string; + wxString scale_label_string; struct Instance { @@ -55,9 +55,9 @@ class ObjectManipulation : public OG_Settings rotation = rotation_rounded = Vec3d(DBL_MAX, DBL_MAX, DBL_MAX); scale = scale_rounded = Vec3d(DBL_MAX, DBL_MAX, DBL_MAX); size = size_rounded = Vec3d(DBL_MAX, DBL_MAX, DBL_MAX); - move_label_string = ""; - rotate_label_string = ""; - scale_label_string = ""; + move_label_string = wxString(); + rotate_label_string = wxString(); + scale_label_string = wxString(); instance.reset(); } bool is_valid() const { return position != Vec3d(DBL_MAX, DBL_MAX, DBL_MAX); } From 6ddefc6a650345dc99831fd4e280856b494de8e2 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 30 Apr 2019 09:11:57 +0200 Subject: [PATCH 36/94] Some refactoring to fix OSX build --- src/slic3r/GUI/GUI_ObjectList.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 1a42459659..2fbf4baa15 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -1886,7 +1886,8 @@ void ObjectList::part_selection_changed() if (item) { wxGetApp().obj_manipul()->get_og()->set_value("object_name", m_objects_model->GetName(item)); - wxGetApp().obj_manipul()->update_manifold_warning_icon_state(get_mesh_errors_list(obj_idx, volume_id)); + const wxString& tooltip = get_mesh_errors_list(obj_idx, volume_id); + wxGetApp().obj_manipul()->update_manifold_warning_icon_state(tooltip); } } From 3eacb0a216ded94ec535334f9c0611f7e54ed9ad Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 30 Apr 2019 09:38:23 +0200 Subject: [PATCH 37/94] Next try --- src/slic3r/GUI/GUI_ObjectList.cpp | 4 ++-- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 4 ++-- src/slic3r/GUI/GUI_ObjectManipulation.hpp | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 2fbf4baa15..69c3e3f1b8 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -1886,8 +1886,8 @@ void ObjectList::part_selection_changed() if (item) { wxGetApp().obj_manipul()->get_og()->set_value("object_name", m_objects_model->GetName(item)); - const wxString& tooltip = get_mesh_errors_list(obj_idx, volume_id); - wxGetApp().obj_manipul()->update_manifold_warning_icon_state(tooltip); + const wxString tooltip = get_mesh_errors_list(obj_idx, volume_id); + wxGetApp().obj_manipul()->update_warning_icon_state(tooltip); } } diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index eea53e828e..86d8e9a969 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -66,7 +66,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : return; wxGetApp().obj_list()->fix_through_netfabb(); - update_manifold_warning_icon_state(wxGetApp().obj_list()->get_mesh_errors_list()); + update_warning_icon_state(wxGetApp().obj_list()->get_mesh_errors_list()); }); return sizer; @@ -365,7 +365,7 @@ void ObjectManipulation::emulate_kill_focus() on_change(option, 0); } -void ObjectManipulation::update_manifold_warning_icon_state(const wxString& tooltip) +void ObjectManipulation::update_warning_icon_state(const wxString& tooltip) { m_fix_throught_netfab_bitmap->SetBitmap(tooltip.IsEmpty() ? wxNullBitmap : m_manifold_warning_bmp.bmp()); m_fix_throught_netfab_bitmap->SetToolTip(tooltip); diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp index f691dcc839..da9e67d4e2 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp @@ -9,6 +9,7 @@ class wxStaticText; class LockButton; class wxStaticBitmap; +class wxString; namespace Slic3r { namespace GUI { @@ -111,7 +112,7 @@ public: void emulate_kill_focus(); #endif // __APPLE__ - void update_manifold_warning_icon_state(const wxString& tooltip); + void update_warning_icon_state(const wxString& tooltip); void msw_rescale(); private: From 3bc6c29b7a388fd1ef41d0c4ac16a1cd21f3bf41 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 30 Apr 2019 11:27:41 +0200 Subject: [PATCH 38/94] Added missed include --- src/slic3r/GUI/GUI_ObjectList.cpp | 3 +-- src/slic3r/GUI/GUI_ObjectManipulation.hpp | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 69c3e3f1b8..8c9f4cc4a9 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -1886,8 +1886,7 @@ void ObjectList::part_selection_changed() if (item) { wxGetApp().obj_manipul()->get_og()->set_value("object_name", m_objects_model->GetName(item)); - const wxString tooltip = get_mesh_errors_list(obj_idx, volume_id); - wxGetApp().obj_manipul()->update_warning_icon_state(tooltip); + wxGetApp().obj_manipul()->update_warning_icon_state(get_mesh_errors_list(obj_idx, volume_id)); } } diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp index da9e67d4e2..5aa69cd156 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp @@ -2,6 +2,7 @@ #define slic3r_GUI_ObjectManipulation_hpp_ #include +#include #include "GUI_ObjectSettings.hpp" #include "GLCanvas3D.hpp" @@ -9,7 +10,6 @@ class wxStaticText; class LockButton; class wxStaticBitmap; -class wxString; namespace Slic3r { namespace GUI { From f18ebec8e94dcb1a507a69ddf698220b36e363c9 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 30 Apr 2019 15:13:38 +0200 Subject: [PATCH 39/94] Added menu icons for a dark mode --- resources/icons/layers.svg | 8 +- resources/icons/white/add_copies.svg | 19 ++++ resources/icons/white/add_modifier.svg | 13 +++ resources/icons/white/add_part.svg | 20 ++++ resources/icons/white/advanced+wrench.svg | 43 +++++++++ resources/icons/white/advanced_plus.svg | 24 +++++ resources/icons/white/cog.svg | 17 ++++ resources/icons/white/cooling.svg | 25 +++++ resources/icons/white/copy_menu.svg | 37 ++++++++ resources/icons/white/delete.svg | 22 +++++ resources/icons/white/delete_all_menu.svg | 31 ++++++ resources/icons/white/editor_menu.svg | 20 ++++ resources/icons/white/export_config.svg | 20 ++++ .../icons/white/export_config_bundle.svg | 50 ++++++++++ resources/icons/white/export_gcode.svg | 14 +++ resources/icons/white/export_plate.svg | 15 +++ resources/icons/white/export_plater.svg | 12 +++ resources/icons/white/extruder+funnel.svg | 15 +++ resources/icons/white/flag_green.svg | 10 ++ resources/icons/white/flag_red.svg | 10 ++ resources/icons/white/import_config.svg | 25 +++++ .../icons/white/import_config_bundle.svg | 61 ++++++++++++ resources/icons/white/import_plate.svg | 38 ++++++++ resources/icons/white/import_plater.svg | 17 ++++ resources/icons/white/infill.svg | 35 +++++++ resources/icons/white/layers.svg | 27 ++++++ resources/icons/white/lock2_closed.svg | 10 ++ resources/icons/white/lock_closed.svg | 10 ++ resources/icons/white/machine+cog.svg | 30 ++++++ resources/icons/white/notes.svg | 25 +++++ resources/icons/white/number_of_copies.svg | 29 ++++++ resources/icons/white/open.svg | 11 +++ resources/icons/white/output+page_white.svg | 20 ++++ resources/icons/white/pad.svg | 83 ++++++++++++++++ resources/icons/white/paste_menu.svg | 27 ++++++ resources/icons/white/plater.svg | 12 +++ resources/icons/white/preview_menu.svg | 48 ++++++++++ resources/icons/white/printer.svg | 14 +++ resources/icons/white/re_slice.svg | 19 ++++ resources/icons/white/remove_copies.svg | 15 +++ resources/icons/white/remove_menu.svg | 44 +++++++++ resources/icons/white/resin.svg | 10 ++ resources/icons/white/save.svg | 25 +++++ resources/icons/white/set_separate_obj.svg | 29 ++++++ resources/icons/white/skirt+brim.svg | 15 +++ resources/icons/white/split_object_SMALL.svg | 19 ++++ resources/icons/white/split_parts_SMALL.svg | 18 ++++ resources/icons/white/spool.svg | 21 +++++ resources/icons/white/support.svg | 94 +++++++++++++++++++ resources/icons/white/support_blocker.svg | 48 ++++++++++ resources/icons/white/support_enforcer.svg | 19 ++++ resources/icons/white/test.svg | 37 ++++++++ resources/icons/white/time.svg | 16 ++++ resources/icons/white/upload_queue.svg | 29 ++++++ resources/icons/white/wrench.svg | 20 ++++ resources/icons/wrench_white.svg | 20 ++++ src/slic3r/GUI/MainFrame.cpp | 62 +++++++----- 57 files changed, 1477 insertions(+), 30 deletions(-) create mode 100644 resources/icons/white/add_copies.svg create mode 100644 resources/icons/white/add_modifier.svg create mode 100644 resources/icons/white/add_part.svg create mode 100644 resources/icons/white/advanced+wrench.svg create mode 100644 resources/icons/white/advanced_plus.svg create mode 100644 resources/icons/white/cog.svg create mode 100644 resources/icons/white/cooling.svg create mode 100644 resources/icons/white/copy_menu.svg create mode 100644 resources/icons/white/delete.svg create mode 100644 resources/icons/white/delete_all_menu.svg create mode 100644 resources/icons/white/editor_menu.svg create mode 100644 resources/icons/white/export_config.svg create mode 100644 resources/icons/white/export_config_bundle.svg create mode 100644 resources/icons/white/export_gcode.svg create mode 100644 resources/icons/white/export_plate.svg create mode 100644 resources/icons/white/export_plater.svg create mode 100644 resources/icons/white/extruder+funnel.svg create mode 100644 resources/icons/white/flag_green.svg create mode 100644 resources/icons/white/flag_red.svg create mode 100644 resources/icons/white/import_config.svg create mode 100644 resources/icons/white/import_config_bundle.svg create mode 100644 resources/icons/white/import_plate.svg create mode 100644 resources/icons/white/import_plater.svg create mode 100644 resources/icons/white/infill.svg create mode 100644 resources/icons/white/layers.svg create mode 100644 resources/icons/white/lock2_closed.svg create mode 100644 resources/icons/white/lock_closed.svg create mode 100644 resources/icons/white/machine+cog.svg create mode 100644 resources/icons/white/notes.svg create mode 100644 resources/icons/white/number_of_copies.svg create mode 100644 resources/icons/white/open.svg create mode 100644 resources/icons/white/output+page_white.svg create mode 100644 resources/icons/white/pad.svg create mode 100644 resources/icons/white/paste_menu.svg create mode 100644 resources/icons/white/plater.svg create mode 100644 resources/icons/white/preview_menu.svg create mode 100644 resources/icons/white/printer.svg create mode 100644 resources/icons/white/re_slice.svg create mode 100644 resources/icons/white/remove_copies.svg create mode 100644 resources/icons/white/remove_menu.svg create mode 100644 resources/icons/white/resin.svg create mode 100644 resources/icons/white/save.svg create mode 100644 resources/icons/white/set_separate_obj.svg create mode 100644 resources/icons/white/skirt+brim.svg create mode 100644 resources/icons/white/split_object_SMALL.svg create mode 100644 resources/icons/white/split_parts_SMALL.svg create mode 100644 resources/icons/white/spool.svg create mode 100644 resources/icons/white/support.svg create mode 100644 resources/icons/white/support_blocker.svg create mode 100644 resources/icons/white/support_enforcer.svg create mode 100644 resources/icons/white/test.svg create mode 100644 resources/icons/white/time.svg create mode 100644 resources/icons/white/upload_queue.svg create mode 100644 resources/icons/white/wrench.svg create mode 100644 resources/icons/wrench_white.svg diff --git a/resources/icons/layers.svg b/resources/icons/layers.svg index cd71fab3a3..da5dec21d5 100644 --- a/resources/icons/layers.svg +++ b/resources/icons/layers.svg @@ -5,13 +5,13 @@ - + - + - + @@ -20,7 +20,7 @@ - + diff --git a/resources/icons/white/add_copies.svg b/resources/icons/white/add_copies.svg new file mode 100644 index 0000000000..17eff0179e --- /dev/null +++ b/resources/icons/white/add_copies.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/resources/icons/white/add_modifier.svg b/resources/icons/white/add_modifier.svg new file mode 100644 index 0000000000..09c3ce27dc --- /dev/null +++ b/resources/icons/white/add_modifier.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/resources/icons/white/add_part.svg b/resources/icons/white/add_part.svg new file mode 100644 index 0000000000..b7c800bbb2 --- /dev/null +++ b/resources/icons/white/add_part.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/resources/icons/white/advanced+wrench.svg b/resources/icons/white/advanced+wrench.svg new file mode 100644 index 0000000000..5e878cb3cc --- /dev/null +++ b/resources/icons/white/advanced+wrench.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + diff --git a/resources/icons/white/advanced_plus.svg b/resources/icons/white/advanced_plus.svg new file mode 100644 index 0000000000..db532ec4b1 --- /dev/null +++ b/resources/icons/white/advanced_plus.svg @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/resources/icons/white/cog.svg b/resources/icons/white/cog.svg new file mode 100644 index 0000000000..773e4d65dd --- /dev/null +++ b/resources/icons/white/cog.svg @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/resources/icons/white/cooling.svg b/resources/icons/white/cooling.svg new file mode 100644 index 0000000000..29bd04c368 --- /dev/null +++ b/resources/icons/white/cooling.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/copy_menu.svg b/resources/icons/white/copy_menu.svg new file mode 100644 index 0000000000..d660aab6a2 --- /dev/null +++ b/resources/icons/white/copy_menu.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/delete.svg b/resources/icons/white/delete.svg new file mode 100644 index 0000000000..91d5ce74c5 --- /dev/null +++ b/resources/icons/white/delete.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/delete_all_menu.svg b/resources/icons/white/delete_all_menu.svg new file mode 100644 index 0000000000..5d825c424c --- /dev/null +++ b/resources/icons/white/delete_all_menu.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/editor_menu.svg b/resources/icons/white/editor_menu.svg new file mode 100644 index 0000000000..649d2c40fa --- /dev/null +++ b/resources/icons/white/editor_menu.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/export_config.svg b/resources/icons/white/export_config.svg new file mode 100644 index 0000000000..22f8ebe1a6 --- /dev/null +++ b/resources/icons/white/export_config.svg @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/resources/icons/white/export_config_bundle.svg b/resources/icons/white/export_config_bundle.svg new file mode 100644 index 0000000000..99bd62b6c3 --- /dev/null +++ b/resources/icons/white/export_config_bundle.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/export_gcode.svg b/resources/icons/white/export_gcode.svg new file mode 100644 index 0000000000..39f5225cbe --- /dev/null +++ b/resources/icons/white/export_gcode.svg @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/resources/icons/white/export_plate.svg b/resources/icons/white/export_plate.svg new file mode 100644 index 0000000000..18159d2a87 --- /dev/null +++ b/resources/icons/white/export_plate.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/resources/icons/white/export_plater.svg b/resources/icons/white/export_plater.svg new file mode 100644 index 0000000000..e71b38a0aa --- /dev/null +++ b/resources/icons/white/export_plater.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/resources/icons/white/extruder+funnel.svg b/resources/icons/white/extruder+funnel.svg new file mode 100644 index 0000000000..de6b227da2 --- /dev/null +++ b/resources/icons/white/extruder+funnel.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/resources/icons/white/flag_green.svg b/resources/icons/white/flag_green.svg new file mode 100644 index 0000000000..8479d0e9a9 --- /dev/null +++ b/resources/icons/white/flag_green.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/resources/icons/white/flag_red.svg b/resources/icons/white/flag_red.svg new file mode 100644 index 0000000000..a9b1cf8fed --- /dev/null +++ b/resources/icons/white/flag_red.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/resources/icons/white/import_config.svg b/resources/icons/white/import_config.svg new file mode 100644 index 0000000000..001277f738 --- /dev/null +++ b/resources/icons/white/import_config.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + diff --git a/resources/icons/white/import_config_bundle.svg b/resources/icons/white/import_config_bundle.svg new file mode 100644 index 0000000000..c16cd7b3c6 --- /dev/null +++ b/resources/icons/white/import_config_bundle.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/import_plate.svg b/resources/icons/white/import_plate.svg new file mode 100644 index 0000000000..7f888e3d78 --- /dev/null +++ b/resources/icons/white/import_plate.svg @@ -0,0 +1,38 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/import_plater.svg b/resources/icons/white/import_plater.svg new file mode 100644 index 0000000000..1dc5aae6eb --- /dev/null +++ b/resources/icons/white/import_plater.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + diff --git a/resources/icons/white/infill.svg b/resources/icons/white/infill.svg new file mode 100644 index 0000000000..0860430998 --- /dev/null +++ b/resources/icons/white/infill.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/layers.svg b/resources/icons/white/layers.svg new file mode 100644 index 0000000000..cd71fab3a3 --- /dev/null +++ b/resources/icons/white/layers.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/lock2_closed.svg b/resources/icons/white/lock2_closed.svg new file mode 100644 index 0000000000..726c850a11 --- /dev/null +++ b/resources/icons/white/lock2_closed.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/resources/icons/white/lock_closed.svg b/resources/icons/white/lock_closed.svg new file mode 100644 index 0000000000..1665dc9a08 --- /dev/null +++ b/resources/icons/white/lock_closed.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/resources/icons/white/machine+cog.svg b/resources/icons/white/machine+cog.svg new file mode 100644 index 0000000000..ec49265b81 --- /dev/null +++ b/resources/icons/white/machine+cog.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + diff --git a/resources/icons/white/notes.svg b/resources/icons/white/notes.svg new file mode 100644 index 0000000000..25de4191e8 --- /dev/null +++ b/resources/icons/white/notes.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/number_of_copies.svg b/resources/icons/white/number_of_copies.svg new file mode 100644 index 0000000000..7c9d78a801 --- /dev/null +++ b/resources/icons/white/number_of_copies.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/open.svg b/resources/icons/white/open.svg new file mode 100644 index 0000000000..0ea9ecdb2c --- /dev/null +++ b/resources/icons/white/open.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/resources/icons/white/output+page_white.svg b/resources/icons/white/output+page_white.svg new file mode 100644 index 0000000000..0838740032 --- /dev/null +++ b/resources/icons/white/output+page_white.svg @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/resources/icons/white/pad.svg b/resources/icons/white/pad.svg new file mode 100644 index 0000000000..cddb2da022 --- /dev/null +++ b/resources/icons/white/pad.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/paste_menu.svg b/resources/icons/white/paste_menu.svg new file mode 100644 index 0000000000..465c2faf08 --- /dev/null +++ b/resources/icons/white/paste_menu.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + diff --git a/resources/icons/white/plater.svg b/resources/icons/white/plater.svg new file mode 100644 index 0000000000..d637a5e7e7 --- /dev/null +++ b/resources/icons/white/plater.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/resources/icons/white/preview_menu.svg b/resources/icons/white/preview_menu.svg new file mode 100644 index 0000000000..98095359c9 --- /dev/null +++ b/resources/icons/white/preview_menu.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/printer.svg b/resources/icons/white/printer.svg new file mode 100644 index 0000000000..d94f6fd5c4 --- /dev/null +++ b/resources/icons/white/printer.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + diff --git a/resources/icons/white/re_slice.svg b/resources/icons/white/re_slice.svg new file mode 100644 index 0000000000..b8d7dc7271 --- /dev/null +++ b/resources/icons/white/re_slice.svg @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/resources/icons/white/remove_copies.svg b/resources/icons/white/remove_copies.svg new file mode 100644 index 0000000000..5b277e45e9 --- /dev/null +++ b/resources/icons/white/remove_copies.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/resources/icons/white/remove_menu.svg b/resources/icons/white/remove_menu.svg new file mode 100644 index 0000000000..59360a33f4 --- /dev/null +++ b/resources/icons/white/remove_menu.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + diff --git a/resources/icons/white/resin.svg b/resources/icons/white/resin.svg new file mode 100644 index 0000000000..81abfae0ce --- /dev/null +++ b/resources/icons/white/resin.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/resources/icons/white/save.svg b/resources/icons/white/save.svg new file mode 100644 index 0000000000..3349a42dd5 --- /dev/null +++ b/resources/icons/white/save.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/set_separate_obj.svg b/resources/icons/white/set_separate_obj.svg new file mode 100644 index 0000000000..de083c1c99 --- /dev/null +++ b/resources/icons/white/set_separate_obj.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/skirt+brim.svg b/resources/icons/white/skirt+brim.svg new file mode 100644 index 0000000000..684e177d25 --- /dev/null +++ b/resources/icons/white/skirt+brim.svg @@ -0,0 +1,15 @@ + + + + + + diff --git a/resources/icons/white/split_object_SMALL.svg b/resources/icons/white/split_object_SMALL.svg new file mode 100644 index 0000000000..4795cab512 --- /dev/null +++ b/resources/icons/white/split_object_SMALL.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + diff --git a/resources/icons/white/split_parts_SMALL.svg b/resources/icons/white/split_parts_SMALL.svg new file mode 100644 index 0000000000..eba846c17f --- /dev/null +++ b/resources/icons/white/split_parts_SMALL.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/resources/icons/white/spool.svg b/resources/icons/white/spool.svg new file mode 100644 index 0000000000..7c9fbab977 --- /dev/null +++ b/resources/icons/white/spool.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/support.svg b/resources/icons/white/support.svg new file mode 100644 index 0000000000..52b7c6b40e --- /dev/null +++ b/resources/icons/white/support.svg @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/support_blocker.svg b/resources/icons/white/support_blocker.svg new file mode 100644 index 0000000000..17401e2ab2 --- /dev/null +++ b/resources/icons/white/support_blocker.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/support_enforcer.svg b/resources/icons/white/support_enforcer.svg new file mode 100644 index 0000000000..0de2dc6a79 --- /dev/null +++ b/resources/icons/white/support_enforcer.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/resources/icons/white/test.svg b/resources/icons/white/test.svg new file mode 100644 index 0000000000..639bbbde8e --- /dev/null +++ b/resources/icons/white/test.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/time.svg b/resources/icons/white/time.svg new file mode 100644 index 0000000000..d014286b5a --- /dev/null +++ b/resources/icons/white/time.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + diff --git a/resources/icons/white/upload_queue.svg b/resources/icons/white/upload_queue.svg new file mode 100644 index 0000000000..710e2be89d --- /dev/null +++ b/resources/icons/white/upload_queue.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/wrench.svg b/resources/icons/white/wrench.svg new file mode 100644 index 0000000000..714c5a82af --- /dev/null +++ b/resources/icons/white/wrench.svg @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/resources/icons/wrench_white.svg b/resources/icons/wrench_white.svg new file mode 100644 index 0000000000..714c5a82af --- /dev/null +++ b/resources/icons/wrench_white.svg @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index cbc85ef238..78d17a4f1a 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -298,6 +298,16 @@ void MainFrame::on_dpi_changed(const wxRect &suggested_rect) this->Maximize(is_maximized); } +static std::string menu_icon(const std::string& icon_name) +{ +#ifdef __WXMSW__ + const std::string folder = "white\\"; +#else + const std::string folder = "white/"; +#endif + return wxGetApp().dark_mode_menus() ? folder+icon_name : icon_name; +} + void MainFrame::init_menubar() { #ifdef __APPLE__ @@ -308,41 +318,41 @@ void MainFrame::init_menubar() wxMenu* fileMenu = new wxMenu; { wxMenuItem* item_open = append_menu_item(fileMenu, wxID_ANY, _(L("&Open Project")) + dots + "\tCtrl+O", _(L("Open a project file")), - [this](wxCommandEvent&) { if (m_plater) m_plater->load_project(); }, "open"); + [this](wxCommandEvent&) { if (m_plater) m_plater->load_project(); }, menu_icon("open")); wxMenuItem* item_save = append_menu_item(fileMenu, wxID_ANY, _(L("&Save Project")) + "\tCtrl+S", _(L("Save current project file")), - [this](wxCommandEvent&) { if (m_plater) m_plater->export_3mf(into_path(m_plater->get_project_filename())); }, "save"); + [this](wxCommandEvent&) { if (m_plater) m_plater->export_3mf(into_path(m_plater->get_project_filename())); }, menu_icon("save")); wxMenuItem* item_save_as = append_menu_item(fileMenu, wxID_ANY, _(L("Save Project &as")) + dots + "\tCtrl+Alt+S", _(L("Save current project file as")), - [this](wxCommandEvent&) { if (m_plater) m_plater->export_3mf(); }, "save"); + [this](wxCommandEvent&) { if (m_plater) m_plater->export_3mf(); }, menu_icon("save")); fileMenu->AppendSeparator(); wxMenu* import_menu = new wxMenu(); wxMenuItem* item_import_model = append_menu_item(import_menu, wxID_ANY, _(L("Import STL/OBJ/AM&F/3MF")) + dots + "\tCtrl+I", _(L("Load a model")), - [this](wxCommandEvent&) { if (m_plater) m_plater->add_model(); }, "import_plater"); + [this](wxCommandEvent&) { if (m_plater) m_plater->add_model(); }, menu_icon("import_plater")); import_menu->AppendSeparator(); append_menu_item(import_menu, wxID_ANY, _(L("Import &Config")) + dots + "\tCtrl+L", _(L("Load exported configuration file")), - [this](wxCommandEvent&) { load_config_file(); }, "import_config"); + [this](wxCommandEvent&) { load_config_file(); }, menu_icon("import_config")); append_menu_item(import_menu, wxID_ANY, _(L("Import Config from &project")) + dots +"\tCtrl+Alt+L", _(L("Load configuration from project file")), - [this](wxCommandEvent&) { if (m_plater) m_plater->extract_config_from_project(); }, "import_config"); + [this](wxCommandEvent&) { if (m_plater) m_plater->extract_config_from_project(); }, menu_icon("import_config")); import_menu->AppendSeparator(); append_menu_item(import_menu, wxID_ANY, _(L("Import Config &Bundle")) + dots, _(L("Load presets from a bundle")), - [this](wxCommandEvent&) { load_configbundle(); }, "import_config_bundle"); + [this](wxCommandEvent&) { load_configbundle(); }, menu_icon("import_config_bundle")); append_submenu(fileMenu, import_menu, wxID_ANY, _(L("&Import")), ""); wxMenu* export_menu = new wxMenu(); wxMenuItem* item_export_gcode = append_menu_item(export_menu, wxID_ANY, _(L("Export &G-code")) + dots +"\tCtrl+G", _(L("Export current plate as G-code")), - [this](wxCommandEvent&) { if (m_plater) m_plater->export_gcode(); }, "export_gcode"); + [this](wxCommandEvent&) { if (m_plater) m_plater->export_gcode(); }, menu_icon("export_gcode")); m_changeable_menu_items.push_back(item_export_gcode); export_menu->AppendSeparator(); wxMenuItem* item_export_stl = append_menu_item(export_menu, wxID_ANY, _(L("Export plate as &STL")) + dots, _(L("Export current plate as STL")), - [this](wxCommandEvent&) { if (m_plater) m_plater->export_stl(); }, "export_plater"); + [this](wxCommandEvent&) { if (m_plater) m_plater->export_stl(); }, menu_icon("export_plater")); wxMenuItem* item_export_amf = append_menu_item(export_menu, wxID_ANY, _(L("Export plate as &AMF")) + dots, _(L("Export current plate as AMF")), - [this](wxCommandEvent&) { if (m_plater) m_plater->export_amf(); }, "export_plater"); + [this](wxCommandEvent&) { if (m_plater) m_plater->export_amf(); }, menu_icon("export_plater")); export_menu->AppendSeparator(); append_menu_item(export_menu, wxID_ANY, _(L("Export &Config")) +dots +"\tCtrl+E", _(L("Export current configuration to file")), - [this](wxCommandEvent&) { export_config(); }, "export_config"); + [this](wxCommandEvent&) { export_config(); }, menu_icon("export_config")); append_menu_item(export_menu, wxID_ANY, _(L("Export Config &Bundle")) + dots, _(L("Export all presets to file")), - [this](wxCommandEvent&) { export_configbundle(); }, "export_config_bundle"); + [this](wxCommandEvent&) { export_configbundle(); }, menu_icon("export_config_bundle")); append_submenu(fileMenu, export_menu, wxID_ANY, _(L("&Export")), ""); fileMenu->AppendSeparator(); @@ -370,10 +380,10 @@ void MainFrame::init_menubar() fileMenu->AppendSeparator(); #endif m_menu_item_reslice_now = append_menu_item(fileMenu, wxID_ANY, _(L("(Re)Slice &Now")) + "\tCtrl+R", _(L("Start new slicing process")), - [this](wxCommandEvent&) { reslice_now(); }, "re_slice"); + [this](wxCommandEvent&) { reslice_now(); }, menu_icon("re_slice")); fileMenu->AppendSeparator(); append_menu_item(fileMenu, wxID_ANY, _(L("&Repair STL file")) + dots, _(L("Automatically repair an STL file")), - [this](wxCommandEvent&) { repair_stl(); }, "wrench"); + [this](wxCommandEvent&) { repair_stl(); }, menu_icon("wrench")); fileMenu->AppendSeparator(); append_menu_item(fileMenu, wxID_EXIT, _(L("&Quit")), wxString::Format(_(L("Quit %s")), SLIC3R_APP_NAME), [this](wxCommandEvent&) { Close(false); }); @@ -413,16 +423,16 @@ void MainFrame::init_menubar() [this](wxCommandEvent&) { m_plater->select_all(); }, ""); editMenu->AppendSeparator(); wxMenuItem* item_delete_sel = append_menu_item(editMenu, wxID_ANY, _(L("&Delete selected")) + sep + hotkey_delete, _(L("Deletes the current selection")), - [this](wxCommandEvent&) { m_plater->remove_selected(); }, "remove_menu"); + [this](wxCommandEvent&) { m_plater->remove_selected(); }, menu_icon("remove_menu")); wxMenuItem* item_delete_all = append_menu_item(editMenu, wxID_ANY, _(L("Delete &all")) + sep + GUI::shortkey_ctrl_prefix() + sep_space + hotkey_delete, _(L("Deletes all objects")), - [this](wxCommandEvent&) { m_plater->reset(); }, "delete_all_menu"); + [this](wxCommandEvent&) { m_plater->reset(); }, menu_icon("delete_all_menu")); editMenu->AppendSeparator(); wxMenuItem* item_copy = append_menu_item(editMenu, wxID_ANY, _(L("&Copy")) + sep + GUI::shortkey_ctrl_prefix() + sep_space + "C", _(L("Copy selection to clipboard")), - [this](wxCommandEvent&) { m_plater->copy_selection_to_clipboard(); }, "copy_menu"); + [this](wxCommandEvent&) { m_plater->copy_selection_to_clipboard(); }, menu_icon("copy_menu")); wxMenuItem* item_paste = append_menu_item(editMenu, wxID_ANY, _(L("&Paste")) + sep + GUI::shortkey_ctrl_prefix() + sep_space + "V", _(L("Paste clipboard")), - [this](wxCommandEvent&) { m_plater->paste_from_clipboard(); }, "paste_menu"); + [this](wxCommandEvent&) { m_plater->paste_from_clipboard(); }, menu_icon("paste_menu")); Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_select()); }, item_select_all->GetId()); Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_delete()); }, item_delete_sel->GetId()); @@ -437,25 +447,25 @@ void MainFrame::init_menubar() size_t tab_offset = 0; if (m_plater) { append_menu_item(windowMenu, wxID_HIGHEST + 1, _(L("&Plater Tab")) + "\tCtrl+1", _(L("Show the plater")), - [this](wxCommandEvent&) { select_tab(0); }, "plater"); + [this](wxCommandEvent&) { select_tab(0); }, menu_icon("plater")); tab_offset += 1; } if (tab_offset > 0) { windowMenu->AppendSeparator(); } append_menu_item(windowMenu, wxID_HIGHEST + 2, _(L("P&rint Settings Tab")) + "\tCtrl+2", _(L("Show the print settings")), - [this, tab_offset](wxCommandEvent&) { select_tab(tab_offset + 0); }, "cog"); + [this, tab_offset](wxCommandEvent&) { select_tab(tab_offset + 0); }, menu_icon("cog")); wxMenuItem* item_material_tab = append_menu_item(windowMenu, wxID_HIGHEST + 3, _(L("&Filament Settings Tab")) + "\tCtrl+3", _(L("Show the filament settings")), - [this, tab_offset](wxCommandEvent&) { select_tab(tab_offset + 1); }, "spool"); + [this, tab_offset](wxCommandEvent&) { select_tab(tab_offset + 1); }, menu_icon("spool")); m_changeable_menu_items.push_back(item_material_tab); append_menu_item(windowMenu, wxID_HIGHEST + 4, _(L("Print&er Settings Tab")) + "\tCtrl+4", _(L("Show the printer settings")), - [this, tab_offset](wxCommandEvent&) { select_tab(tab_offset + 2); }, "printer"); + [this, tab_offset](wxCommandEvent&) { select_tab(tab_offset + 2); }, menu_icon("printer")); if (m_plater) { windowMenu->AppendSeparator(); wxMenuItem* item_3d = append_menu_item(windowMenu, wxID_HIGHEST + 5, _(L("3&D")) + "\tCtrl+5", _(L("Show the 3D editing view")), - [this](wxCommandEvent&) { m_plater->select_view_3D("3D"); }, "editor_menu"); + [this](wxCommandEvent&) { m_plater->select_view_3D("3D"); }, menu_icon("editor_menu")); wxMenuItem* item_preview = append_menu_item(windowMenu, wxID_HIGHEST + 6, _(L("Pre&view")) + "\tCtrl+6", _(L("Show the 3D slices preview")), - [this](wxCommandEvent&) { m_plater->select_view_3D("Preview"); }, "preview_menu"); + [this](wxCommandEvent&) { m_plater->select_view_3D("Preview"); }, menu_icon("preview_menu")); Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_change_view()); }, item_3d->GetId()); Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_change_view()); }, item_preview->GetId()); @@ -476,7 +486,7 @@ void MainFrame::init_menubar() windowMenu->AppendSeparator(); append_menu_item(windowMenu, wxID_ANY, _(L("Print &Host Upload Queue")) + "\tCtrl+J", _(L("Display the Print Host Upload Queue window")), - [this](wxCommandEvent&) { m_printhost_queue_dlg->Show(); }, "upload_queue"); + [this](wxCommandEvent&) { m_printhost_queue_dlg->Show(); }, menu_icon("upload_queue")); } // View menu @@ -568,7 +578,7 @@ void MainFrame::update_menubar() m_changeable_menu_items[miExport] ->SetItemLabel((is_fff ? _(L("Export &G-code")) : _(L("Export")) ) + dots + "\tCtrl+G"); m_changeable_menu_items[miMaterialTab] ->SetItemLabel((is_fff ? _(L("&Filament Settings Tab")) : _(L("Mate&rial Settings Tab"))) + "\tCtrl+3"); - m_changeable_menu_items[miMaterialTab] ->SetBitmap(create_scaled_bitmap(this, is_fff ? "spool": "resin")); + m_changeable_menu_items[miMaterialTab] ->SetBitmap(create_scaled_bitmap(this, menu_icon(is_fff ? "spool": "resin"))); } // To perform the "Quck Slice", "Quick Slice and Save As", "Repeat last Quick Slice" and "Slice to SVG". From 4a5992ba6eca8e1ddb1e576a009660c80b910d1a Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Tue, 30 Apr 2019 15:43:19 +0200 Subject: [PATCH 40/94] Top toolbar use layers_white.svg icon for layers editing --- src/slic3r/GUI/GLCanvas3D.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index d02878a1ad..3c7365d15c 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -3377,7 +3377,7 @@ bool GLCanvas3D::_init_toolbar() item.name = "layersediting"; #if ENABLE_SVG_ICONS - item.icon_filename = "layers.svg"; + item.icon_filename = "layers_white.svg"; #endif // ENABLE_SVG_ICONS item.tooltip = GUI::L_str("Layers editing"); item.sprite_id = 10; From 11a04f918bf8b05f0d56da45bb8b3e05737ec509 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 30 Apr 2019 15:46:25 +0200 Subject: [PATCH 41/94] ObjectList: Show tooltip for warning icon only instead of whole "Name" cell --- src/slic3r/GUI/GUI_ObjectList.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 8c9f4cc4a9..cb0a03547b 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -244,7 +244,7 @@ wxString ObjectList::get_mesh_errors_list(const int obj_idx, const int vol_idx / for (const auto& error : error_msg) if (error.second > 0) - tooltip += wxString::Format(_("\t%d %s\n"), error.second, error.first); + tooltip += wxString::Format("\t%d %s\n", error.second, _(error.first)); if (is_windows10()) tooltip += _(L("Right button click the icon to fix STL through Netfabb")); @@ -272,8 +272,14 @@ void ObjectList::set_tooltip_for_item(const wxPoint& pt) if (col->GetTitle() == " " && GetSelectedItemsCount()<2) GetMainWindow()->SetToolTip(_(L("Right button click the icon to change the object settings"))); - else if (col->GetTitle() == _("Name") ) + else if (col->GetTitle() == _("Name")) { +#ifdef __WXMSW__ + if (pt.x < 2 * wxGetApp().em_unit() || pt.x > 4 * wxGetApp().em_unit()) { + GetMainWindow()->SetToolTip(""); // hide tooltip + return; + } +#endif //__WXMSW__ int obj_idx, vol_idx; get_selected_item_indexes(obj_idx, vol_idx, item); GetMainWindow()->SetToolTip(get_mesh_errors_list(obj_idx, vol_idx)); From 7f37f82ad4696543af0cab8f5b7453644aef639f Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 30 Apr 2019 16:59:40 +0200 Subject: [PATCH 42/94] Added comments --- src/slic3r/GUI/GUI_ObjectList.cpp | 5 +++++ src/slic3r/GUI/GUI_ObjectManipulation.hpp | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index cb0a03547b..bb3bd28442 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -270,6 +270,11 @@ void ObjectList::set_tooltip_for_item(const wxPoint& pt) HitTest(pt, item, col); if (!item) return; + /* GetMainWindow() return window, associated with wxDataViewCtrl. + * And for this window we should to set tooltips. + * Just this->SetToolTip(tooltip) => has no effect. + */ + if (col->GetTitle() == " " && GetSelectedItemsCount()<2) GetMainWindow()->SetToolTip(_(L("Right button click the icon to change the object settings"))); else if (col->GetTitle() == _("Name")) diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp index 5aa69cd156..78941135c2 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp @@ -2,7 +2,7 @@ #define slic3r_GUI_ObjectManipulation_hpp_ #include -#include +#include #include "GUI_ObjectSettings.hpp" #include "GLCanvas3D.hpp" From f2bb070ab94b01bd2a0c6b63bd37a8ff800ad4b4 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Wed, 1 May 2019 11:33:41 +0200 Subject: [PATCH 43/94] Implemented scaling of instances through the object manipulation box for rotated, but still axis aligned coordinate systems. --- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 24 +++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index 0102911561..174879adc7 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -420,8 +420,6 @@ void ObjectManipulation::change_rotation_value(int axis, double value) transformation_type.set_local(); } - //FIXME if anisotropic scaling is required, and is_single_full_instance && m_world_coordinates, apply 90 degrees rotation of the rotation vector. - selection.start_dragging(); selection.rotate( (M_PI / 180.0) * (transformation_type.absolute() ? rotation : rotation - m_cache.rotation), @@ -482,17 +480,27 @@ void ObjectManipulation::do_scale(const Vec3d &scale) const Selection& selection = wxGetApp().plater()->canvas3D()->get_selection(); Vec3d scaling_factor = scale; - if (m_uniform_scale || selection.requires_uniform_scale()) - { + TransformationType transformation_type(TransformationType::World_Relative_Joint); + if (selection.is_single_full_instance()) { + if (m_world_coordinates) { + // Only a 90 degree rotation is allowed, therefore an axis aligned scaling will + // be still axis aligned after the instance rotation is applied. + const GLVolume* volume = selection.get_volume(*selection.get_volume_idxs().begin()); + scaling_factor = (volume->get_instance_transformation().get_matrix(true, false, true, true) * scale).cwiseAbs(); + // Absolute scaling shall not change. + assert(std::abs(scale.maxCoeff() - scaling_factor.maxCoeff()) < EPSILON); + assert(std::abs(scale.minCoeff() - scaling_factor.minCoeff()) < EPSILON); + assert(std::abs(scale.squaredNorm() - scaling_factor.squaredNorm()) < EPSILON); + } else + transformation_type.set_local(); + } + + if (m_uniform_scale || selection.requires_uniform_scale()) { int max_diff_axis; (scale - m_cache.scale).cwiseAbs().maxCoeff(&max_diff_axis); scaling_factor = scale(max_diff_axis) * Vec3d::Ones(); } - TransformationType transformation_type(TransformationType::World_Relative_Joint); - if (selection.is_single_full_instance() && ! m_world_coordinates) - transformation_type.set_local(); - //FIXME if anisotropic scaling is required, and is_single_full_instance && m_world_coordinates, apply 90 degrees rotation of the scaling vector. selection.start_dragging(); selection.scale(scaling_factor * 0.01, transformation_type); wxGetApp().plater()->canvas3D()->do_scale(); From b048669a3bf533ae0158ea9dd16bf6c6090165ea Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 2 May 2019 08:33:38 +0200 Subject: [PATCH 44/94] Changed update_warning_icon_state() signature (next try to fix OSX compilation) --- src/slic3r/GUI/GUI_ObjectList.cpp | 2 +- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 6 ++++-- src/slic3r/GUI/GUI_ObjectManipulation.hpp | 3 +-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index bb3bd28442..61ee7e1b8e 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -1897,7 +1897,7 @@ void ObjectList::part_selection_changed() if (item) { wxGetApp().obj_manipul()->get_og()->set_value("object_name", m_objects_model->GetName(item)); - wxGetApp().obj_manipul()->update_warning_icon_state(get_mesh_errors_list(obj_idx, volume_id)); + wxGetApp().obj_manipul()->update_warning_icon_state(/*get_mesh_errors_list(obj_idx, volume_id)*/); } } diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index 86d8e9a969..bb6eec9636 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -66,7 +66,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : return; wxGetApp().obj_list()->fix_through_netfabb(); - update_warning_icon_state(wxGetApp().obj_list()->get_mesh_errors_list()); + update_warning_icon_state(/*wxGetApp().obj_list()->get_mesh_errors_list()*/); }); return sizer; @@ -365,8 +365,10 @@ void ObjectManipulation::emulate_kill_focus() on_change(option, 0); } -void ObjectManipulation::update_warning_icon_state(const wxString& tooltip) +void ObjectManipulation::update_warning_icon_state(/*const wxString& tooltip*/) { + const wxString& tooltip = wxGetApp().obj_list()->get_mesh_errors_list(); + m_fix_throught_netfab_bitmap->SetBitmap(tooltip.IsEmpty() ? wxNullBitmap : m_manifold_warning_bmp.bmp()); m_fix_throught_netfab_bitmap->SetToolTip(tooltip); } diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp index 78941135c2..1bff4e22fc 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp @@ -2,7 +2,6 @@ #define slic3r_GUI_ObjectManipulation_hpp_ #include -#include #include "GUI_ObjectSettings.hpp" #include "GLCanvas3D.hpp" @@ -112,7 +111,7 @@ public: void emulate_kill_focus(); #endif // __APPLE__ - void update_warning_icon_state(const wxString& tooltip); + void update_warning_icon_state(/*const wxString& tooltip*/); void msw_rescale(); private: From 88c9948c85a01474be7af47061931c9017e9a946 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 2 May 2019 09:54:18 +0200 Subject: [PATCH 45/94] Fixed typo --- src/slic3r/GUI/GUI_ObjectList.cpp | 2 +- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 9 +++------ src/slic3r/GUI/GUI_ObjectManipulation.hpp | 2 +- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 61ee7e1b8e..bb3bd28442 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -1897,7 +1897,7 @@ void ObjectList::part_selection_changed() if (item) { wxGetApp().obj_manipul()->get_og()->set_value("object_name", m_objects_model->GetName(item)); - wxGetApp().obj_manipul()->update_warning_icon_state(/*get_mesh_errors_list(obj_idx, volume_id)*/); + wxGetApp().obj_manipul()->update_warning_icon_state(get_mesh_errors_list(obj_idx, volume_id)); } } diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index bb6eec9636..b8c37dcd04 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -66,7 +66,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : return; wxGetApp().obj_list()->fix_through_netfabb(); - update_warning_icon_state(/*wxGetApp().obj_list()->get_mesh_errors_list()*/); + update_warning_icon_state(wxGetApp().obj_list()->get_mesh_errors_list()); }); return sizer; @@ -364,17 +364,14 @@ void ObjectManipulation::emulate_kill_focus() else on_change(option, 0); } +#endif // __APPLE__ -void ObjectManipulation::update_warning_icon_state(/*const wxString& tooltip*/) +void ObjectManipulation::update_warning_icon_state(const wxString& tooltip) { - const wxString& tooltip = wxGetApp().obj_list()->get_mesh_errors_list(); - m_fix_throught_netfab_bitmap->SetBitmap(tooltip.IsEmpty() ? wxNullBitmap : m_manifold_warning_bmp.bmp()); m_fix_throught_netfab_bitmap->SetToolTip(tooltip); } -#endif // __APPLE__ - void ObjectManipulation::reset_settings_value() { m_new_position = Vec3d::Zero(); diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp index 1bff4e22fc..f86cd6e563 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp @@ -111,7 +111,7 @@ public: void emulate_kill_focus(); #endif // __APPLE__ - void update_warning_icon_state(/*const wxString& tooltip*/); + void update_warning_icon_state(const wxString& tooltip); void msw_rescale(); private: From a3385278e5e892e644a02a288c1cf9c8bd296d00 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Thu, 2 May 2019 13:46:39 +0200 Subject: [PATCH 46/94] Export to STL of SLA supports and pad --- src/slic3r/GUI/GUI_ObjectList.cpp | 2 +- src/slic3r/GUI/MainFrame.cpp | 44 ++++++++++++++++------ src/slic3r/GUI/MainFrame.hpp | 1 + src/slic3r/GUI/Plater.cpp | 61 ++++++++++++++++++++++++++++++- src/slic3r/GUI/Plater.hpp | 2 +- 5 files changed, 95 insertions(+), 15 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index f9df2649ca..833cd712e6 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -1147,7 +1147,7 @@ void ObjectList::append_menu_item_fix_through_netfabb(wxMenu* menu) void ObjectList::append_menu_item_export_stl(wxMenu* menu) const { append_menu_item(menu, wxID_ANY, _(L("Export as STL")) + dots, "", - [](wxCommandEvent&) { wxGetApp().plater()->export_stl(true); }, "", menu); + [](wxCommandEvent&) { wxGetApp().plater()->export_stl(false, true); }, "", menu); menu->AppendSeparator(); } diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 78d17a4f1a..72843f815d 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -14,6 +14,7 @@ #include "libslic3r/Print.hpp" #include "libslic3r/Polygon.hpp" +#include "libslic3r/SLAPrint.hpp" #include "Tab.hpp" #include "PresetBundle.hpp" @@ -205,12 +206,30 @@ void MainFrame::add_created_tab(Tab* panel) bool MainFrame::can_save() const { - return (m_plater != nullptr) ? !m_plater->model().objects.empty() : false; + return (m_plater != nullptr) && !m_plater->model().objects.empty(); } bool MainFrame::can_export_model() const { - return (m_plater != nullptr) ? !m_plater->model().objects.empty() : false; + return (m_plater != nullptr) && !m_plater->model().objects.empty(); +} + +bool MainFrame::can_export_supports() const +{ + if ((m_plater == nullptr) || (m_plater->printer_technology() != ptSLA) || m_plater->model().objects.empty()) + return false; + + bool can_export = false; + const PrintObjects& objects = m_plater->sla_print().objects(); + for (const SLAPrintObject* object : objects) + { + if (object->has_mesh(slaposBasePool) || object->has_mesh(slaposSupportTree)) + { + can_export = true; + break; + } + } + return can_export; } bool MainFrame::can_export_gcode() const @@ -243,17 +262,17 @@ bool MainFrame::can_change_view() const bool MainFrame::can_select() const { - return (m_plater != nullptr) ? !m_plater->model().objects.empty() : false; + return (m_plater != nullptr) && !m_plater->model().objects.empty(); } bool MainFrame::can_delete() const { - return (m_plater != nullptr) ? !m_plater->is_selection_empty() : false; + return (m_plater != nullptr) && !m_plater->is_selection_empty(); } bool MainFrame::can_delete_all() const { - return (m_plater != nullptr) ? !m_plater->model().objects.empty() : false; + return (m_plater != nullptr) && !m_plater->model().objects.empty(); } void MainFrame::on_dpi_changed(const wxRect &suggested_rect) @@ -346,6 +365,8 @@ void MainFrame::init_menubar() export_menu->AppendSeparator(); wxMenuItem* item_export_stl = append_menu_item(export_menu, wxID_ANY, _(L("Export plate as &STL")) + dots, _(L("Export current plate as STL")), [this](wxCommandEvent&) { if (m_plater) m_plater->export_stl(); }, menu_icon("export_plater")); + wxMenuItem* item_export_stl_sla = append_menu_item(export_menu, wxID_ANY, _(L("Export plate as STL including supports")) + dots, _(L("Export current plate as STL including supports")), + [this](wxCommandEvent&) { if (m_plater) m_plater->export_stl(true); }, menu_icon("export_plater")); wxMenuItem* item_export_amf = append_menu_item(export_menu, wxID_ANY, _(L("Export plate as &AMF")) + dots, _(L("Export current plate as AMF")), [this](wxCommandEvent&) { if (m_plater) m_plater->export_amf(); }, menu_icon("export_plater")); export_menu->AppendSeparator(); @@ -389,13 +410,14 @@ void MainFrame::init_menubar() [this](wxCommandEvent&) { Close(false); }); Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(m_plater != nullptr); }, item_open->GetId()); - Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable((m_plater != nullptr) && can_save()); }, item_save->GetId()); - Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable((m_plater != nullptr) && can_save()); }, item_save_as->GetId()); + Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_save()); }, item_save->GetId()); + Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_save()); }, item_save_as->GetId()); Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(m_plater != nullptr); }, item_import_model->GetId()); - Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable((m_plater != nullptr) && can_export_gcode()); }, item_export_gcode->GetId()); - Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable((m_plater != nullptr) && can_export_model()); }, item_export_stl->GetId()); - Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable((m_plater != nullptr) && can_export_model()); }, item_export_amf->GetId()); - Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable((m_plater != nullptr) && can_slice()); }, m_menu_item_reslice_now->GetId()); + Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_export_gcode()); }, item_export_gcode->GetId()); + Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_export_model()); }, item_export_stl->GetId()); + Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_export_supports()); }, item_export_stl_sla->GetId()); + Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_export_model()); }, item_export_amf->GetId()); + Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_slice()); }, m_menu_item_reslice_now->GetId()); } #ifdef _MSC_VER diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp index 13bf07922f..f3d5826814 100644 --- a/src/slic3r/GUI/MainFrame.hpp +++ b/src/slic3r/GUI/MainFrame.hpp @@ -63,6 +63,7 @@ class MainFrame : public DPIFrame bool can_save() const; bool can_export_model() const; + bool can_export_supports() const; bool can_export_gcode() const; bool can_slice() const; bool can_change_view() const; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 2195471daa..4ec560274f 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2925,7 +2925,7 @@ bool Plater::priv::init_common_menu(wxMenu* menu, const bool is_part/* = false*/ [this](wxCommandEvent&) { reload_from_disk(); }); append_menu_item(menu, wxID_ANY, _(L("Export as STL")) + dots, _(L("Export the selected object as STL file")), - [this](wxCommandEvent&) { q->export_stl(true); }); + [this](wxCommandEvent&) { q->export_stl(false, true); }); menu->AppendSeparator(); } @@ -3431,7 +3431,7 @@ void Plater::export_gcode() p->export_gcode(std::move(output_path), PrintHostJob()); } -void Plater::export_stl(bool selection_only) +void Plater::export_stl(bool extended, bool selection_only) { if (p->model.objects.empty()) { return; } @@ -3466,8 +3466,65 @@ void Plater::export_stl(bool selection_only) } } else + { mesh = p->model.mesh(); + if (extended && (p->printer_technology == ptSLA)) + { + const PrintObjects& objects = p->sla_print.objects(); + for (const SLAPrintObject* object : objects) + { + const ModelObject* model_object = object->model_object(); + Transform3d mesh_trafo_inv = object->trafo().inverse(); + bool is_left_handed = object->is_left_handed(); + + TriangleMesh pad_mesh; + bool has_pad_mesh = object->has_mesh(slaposBasePool); + if (has_pad_mesh) + { + pad_mesh = object->get_mesh(slaposBasePool); + pad_mesh.transform(mesh_trafo_inv); + } + + TriangleMesh supports_mesh; + bool has_supports_mesh = object->has_mesh(slaposSupportTree); + if (has_supports_mesh) + { + supports_mesh = object->get_mesh(slaposSupportTree); + supports_mesh.transform(mesh_trafo_inv); + } + + const std::vector& obj_instances = object->instances(); + for (const SLAPrintObject::Instance& obj_instance : obj_instances) + { + auto it = std::find_if(model_object->instances.begin(), model_object->instances.end(), + [&obj_instance](const ModelInstance *mi) { return mi->id() == obj_instance.instance_id; }); + assert(it != model_object->instances.end()); + + if (it != model_object->instances.end()) + { + int instance_idx = it - model_object->instances.begin(); + const Transform3d& inst_transform = object->model_object()->instances[instance_idx]->get_transformation().get_matrix(); + + if (has_pad_mesh) + { + TriangleMesh inst_pad_mesh = pad_mesh; + inst_pad_mesh.transform(inst_transform, is_left_handed); + mesh.merge(inst_pad_mesh); + } + + if (has_supports_mesh) + { + TriangleMesh inst_supports_mesh = supports_mesh; + inst_supports_mesh.transform(inst_transform, is_left_handed); + mesh.merge(inst_supports_mesh); + } + } + } + } + } + } + Slic3r::store_stl(path_u8.c_str(), &mesh, true); p->statusbar()->set_status_text(wxString::Format(_(L("STL file exported to %s")), path)); } diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index bedc31b352..326a4507e4 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -163,7 +163,7 @@ public: void cut(size_t obj_idx, size_t instance_idx, coordf_t z, bool keep_upper = true, bool keep_lower = true, bool rotate_lower = false); void export_gcode(); - void export_stl(bool selection_only = false); + void export_stl(bool extended = false, bool selection_only = false); void export_amf(); void export_3mf(const boost::filesystem::path& output_path = boost::filesystem::path()); void reslice(); From 47f27d20f196df979c0891fbae2fed83d0ab4f8b Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Thu, 2 May 2019 13:52:13 +0200 Subject: [PATCH 47/94] Added confirmation dialog for Delete All command --- src/slic3r/GUI/MainFrame.cpp | 4 ++-- src/slic3r/GUI/Plater.cpp | 7 ++++++- src/slic3r/GUI/Plater.hpp | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 72843f815d..12e59c6f56 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -442,12 +442,12 @@ void MainFrame::init_menubar() wxString hotkey_delete = "Del"; #endif wxMenuItem* item_select_all = append_menu_item(editMenu, wxID_ANY, _(L("&Select all")) + sep + GUI::shortkey_ctrl_prefix() + sep_space + "A", _(L("Selects all objects")), - [this](wxCommandEvent&) { m_plater->select_all(); }, ""); + [this](wxCommandEvent&) { if (m_plater != nullptr) m_plater->select_all(); }, ""); editMenu->AppendSeparator(); wxMenuItem* item_delete_sel = append_menu_item(editMenu, wxID_ANY, _(L("&Delete selected")) + sep + hotkey_delete, _(L("Deletes the current selection")), [this](wxCommandEvent&) { m_plater->remove_selected(); }, menu_icon("remove_menu")); wxMenuItem* item_delete_all = append_menu_item(editMenu, wxID_ANY, _(L("Delete &all")) + sep + GUI::shortkey_ctrl_prefix() + sep_space + hotkey_delete, _(L("Deletes all objects")), - [this](wxCommandEvent&) { m_plater->reset(); }, menu_icon("delete_all_menu")); + [this](wxCommandEvent&) { m_plater->reset_with_confirm(); }, menu_icon("delete_all_menu")); editMenu->AppendSeparator(); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 4ec560274f..48ffaedc96 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1447,7 +1447,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) // 3DScene/Toolbar: view3D_canvas->Bind(EVT_GLTOOLBAR_ADD, &priv::on_action_add, this); view3D_canvas->Bind(EVT_GLTOOLBAR_DELETE, [q](SimpleEvent&) { q->remove_selected(); }); - view3D_canvas->Bind(EVT_GLTOOLBAR_DELETE_ALL, [this](SimpleEvent&) { reset(); }); + view3D_canvas->Bind(EVT_GLTOOLBAR_DELETE_ALL, [q](SimpleEvent&) { q->reset_with_confirm(); }); view3D_canvas->Bind(EVT_GLTOOLBAR_ARRANGE, [this](SimpleEvent&) { arrange(); }); view3D_canvas->Bind(EVT_GLTOOLBAR_COPY, [q](SimpleEvent&) { q->copy_selection_to_clipboard(); }); view3D_canvas->Bind(EVT_GLTOOLBAR_PASTE, [q](SimpleEvent&) { q->paste_from_clipboard(); }); @@ -3282,6 +3282,11 @@ void Plater::select_all() { p->select_all(); } void Plater::remove(size_t obj_idx) { p->remove(obj_idx); } void Plater::reset() { p->reset(); } +void Plater::reset_with_confirm() +{ + if (wxMessageDialog((wxWindow*)this, _(L("All objects will be removed, continue ?")), _(L("Delete all")), wxYES_NO | wxYES_DEFAULT | wxCENTRE).ShowModal() == wxID_YES) + reset(); +} void Plater::delete_object_from_model(size_t obj_idx) { p->delete_object_from_model(obj_idx); } diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 326a4507e4..5118fdd6c1 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -153,6 +153,7 @@ public: void select_all(); void remove(size_t obj_idx); void reset(); + void reset_with_confirm(); void delete_object_from_model(size_t obj_idx); void remove_selected(); void increase_instances(size_t num = 1); From d2107fad2fb2bbd38538666fb8ab9557c9d98e31 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 2 May 2019 16:20:50 +0200 Subject: [PATCH 48/94] Fixed get_object_stl_stats() --- src/libslic3r/Model.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 17769a8e74..271b728b53 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -1456,28 +1456,28 @@ stl_stats ModelObject::get_object_stl_stats() const if (this->volumes.size() == 1) return this->volumes[0]->mesh.stl.stats; - stl_stats full_stats; - - // initialise full_stats - full_stats.degenerate_facets= 0; - full_stats.edges_fixed = 0; - full_stats.facets_removed = 0; - full_stats.facets_added = 0; - full_stats.facets_reversed = 0; - full_stats.backwards_edges = 0; - full_stats.normals_fixed = 0; + stl_stats full_stats = this->volumes[0]->mesh.stl.stats; // fill full_stats from all objet's meshes for (ModelVolume* volume : this->volumes) { + if (volume->id() == this->volumes[0]->id()) + continue; + const stl_stats& stats = volume->mesh.stl.stats; + // initialize full_stats (for repaired errors) full_stats.degenerate_facets+= stats.degenerate_facets; full_stats.edges_fixed += stats.edges_fixed; full_stats.facets_removed += stats.facets_removed; full_stats.facets_added += stats.facets_added; full_stats.facets_reversed += stats.facets_reversed; full_stats.backwards_edges += stats.backwards_edges; + + // another used satistics value + if (volume->is_model_part()) + full_stats.volume += stats.volume; + full_stats.number_of_parts += stats.number_of_parts; } return full_stats; From 2affa4817831326e500b1cf07fa59ee9cb280595 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Fri, 3 May 2019 09:44:19 +0200 Subject: [PATCH 49/94] Menu icons drawing under OSX (if wxMenu::SetOwnerDrawn() is implemented in wxWidgets) --- src/slic3r/GUI/MainFrame.cpp | 32 ++++++++++++++++ src/slic3r/GUI/Plater.cpp | 10 +++++ src/slic3r/GUI/wxExtensions.cpp | 65 ++++++++++++++++++++++++++++++++- src/slic3r/GUI/wxExtensions.hpp | 6 ++- 4 files changed, 111 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 78d17a4f1a..029f084176 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -276,6 +276,10 @@ void MainFrame::on_dpi_changed(const wxRect &suggested_rect) for (auto tab : wxGetApp().tabs_list) tab->msw_rescale(); + wxMenuBar* menu_bar = this->GetMenuBar(); + for (size_t id = 0; id < menu_bar->GetMenuCount(); id++) + msw_rescale_menu(menu_bar->GetMenu(id)); + // Workarounds for correct Window rendering after rescale /* Even if Window is maximized during moving, @@ -316,6 +320,7 @@ void MainFrame::init_menubar() // File menu wxMenu* fileMenu = new wxMenu; + fileMenu->SetOwnerDrawn(true); { wxMenuItem* item_open = append_menu_item(fileMenu, wxID_ANY, _(L("&Open Project")) + dots + "\tCtrl+O", _(L("Open a project file")), [this](wxCommandEvent&) { if (m_plater) m_plater->load_project(); }, menu_icon("open")); @@ -327,6 +332,7 @@ void MainFrame::init_menubar() fileMenu->AppendSeparator(); wxMenu* import_menu = new wxMenu(); + import_menu->SetOwnerDrawn(true); wxMenuItem* item_import_model = append_menu_item(import_menu, wxID_ANY, _(L("Import STL/OBJ/AM&F/3MF")) + dots + "\tCtrl+I", _(L("Load a model")), [this](wxCommandEvent&) { if (m_plater) m_plater->add_model(); }, menu_icon("import_plater")); import_menu->AppendSeparator(); @@ -340,6 +346,7 @@ void MainFrame::init_menubar() append_submenu(fileMenu, import_menu, wxID_ANY, _(L("&Import")), ""); wxMenu* export_menu = new wxMenu(); + export_menu->SetOwnerDrawn(true); wxMenuItem* item_export_gcode = append_menu_item(export_menu, wxID_ANY, _(L("Export &G-code")) + dots +"\tCtrl+G", _(L("Export current plate as G-code")), [this](wxCommandEvent&) { if (m_plater) m_plater->export_gcode(); }, menu_icon("export_gcode")); m_changeable_menu_items.push_back(item_export_gcode); @@ -389,6 +396,29 @@ void MainFrame::init_menubar() [this](wxCommandEvent&) { Close(false); }); Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(m_plater != nullptr); }, item_open->GetId()); +// Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) +// { +// wxMenuItem* item = dynamic_cast(evt.GetEventObject())->FindItem(evt.GetId()); +// +// // static const wxBitmap enabled_bmp = item->GetBitmap(); +// // static const wxBitmap disabled_bmp = enabled_bmp.IsOk() ? enabled_bmp.ConvertToImage().ConvertToGreyscale(0.5, 0.5, 0.5) : enabled_bmp; +// +// // bool enable = (m_plater != nullptr) && can_save(); +// // evt.Enable(enable); +// // item->SetBitmap(enable ? enabled_bmp : disabled_bmp); +// +// bool enable = (m_plater != nullptr) && can_save(); +// evt.Enable(enable); +// +// const std::string& icon_name = get_menuitem_icon_name(item->GetId()); +// if (!icon_name.empty()) +// { +// const wxBitmap enabled_bmp = create_scaled_bitmap(nullptr, icon_name); +// const wxBitmap disabled_bmp = enabled_bmp.IsOk() ? enabled_bmp.ConvertToImage().ConvertToGreyscale(0.5, 0.5, 0.5) : enabled_bmp; +// +// item->SetBitmap(enable ? enabled_bmp : disabled_bmp); +// } +// }, item_save->GetId()); Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable((m_plater != nullptr) && can_save()); }, item_save->GetId()); Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable((m_plater != nullptr) && can_save()); }, item_save_as->GetId()); Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(m_plater != nullptr); }, item_import_model->GetId()); @@ -410,6 +440,7 @@ void MainFrame::init_menubar() // Edit menu wxMenu* editMenu = nullptr; + editMenu->SetOwnerDrawn(true); if (m_plater != nullptr) { editMenu = new wxMenu(); @@ -443,6 +474,7 @@ void MainFrame::init_menubar() // Window menu auto windowMenu = new wxMenu(); + windowMenu->SetOwnerDrawn(true); { size_t tab_offset = 0; if (m_plater) { diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 2195471daa..d8fe618454 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1329,6 +1329,8 @@ struct Plater::priv bool can_arrange() const; bool can_layers_editing() const; + void msw_rescale_object_menu(); + private: bool init_object_menu(); bool init_common_menu(wxMenu* menu, const bool is_part = false); @@ -2884,6 +2886,12 @@ bool Plater::priv::init_object_menu() return true; } +void Plater::priv::msw_rescale_object_menu() +{ + for (MenuWithSeparators* menu : { &object_menu, &sla_object_menu, &part_menu }) + msw_rescale_menu(dynamic_cast(menu)); +} + bool Plater::priv::init_common_menu(wxMenu* menu, const bool is_part/* = false*/) { wxMenuItem* item_delete = nullptr; @@ -3839,6 +3847,8 @@ void Plater::msw_rescale() p->sidebar->msw_rescale(); + p->msw_rescale_object_menu(); + Layout(); GetParent()->Layout(); } diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 00d37d664a..6b3e457d6a 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -25,6 +25,55 @@ using Slic3r::GUI::from_u8; wxDEFINE_EVENT(wxCUSTOMEVT_TICKSCHANGED, wxEvent); wxDEFINE_EVENT(wxCUSTOMEVT_LAST_VOLUME_IS_DELETED, wxCommandEvent); +std::map menuitem_bitmaps; +static std::string empty_str = ""; + +const std::string& get_menuitem_icon_name(const int item_id) +{ + const auto item = menuitem_bitmaps.find(item_id); + if (item == menuitem_bitmaps.end()) + return empty_str; + + return menuitem_bitmaps.at(item_id); +} + +void update_menu_item_icons(wxMenuItem* item) +{ + const std::string& icon_name = get_menuitem_icon_name(item->GetId()); + if (!icon_name.empty()) + { + const wxBitmap& item_icon = create_scaled_bitmap(nullptr, icon_name); + if (item_icon.IsOk()) + { + item->SetBitmap(item_icon); + + wxImage imgGrey = item_icon.ConvertToImage().ConvertToGreyscale(); + if (imgGrey.IsOk()) + item->SetDisabledBitmap(wxBitmap(imgGrey)); + } + } +} + +void msw_rescale_menu(wxMenu* menu) +{ + wxMenuItemList& items = menu->GetMenuItems(); + for (auto item : items) + { + update_menu_item_icons(item); + item->SetFont(Slic3r::GUI::wxGetApp().normal_font()); + + if (item->IsSubMenu()) + { + wxMenuItemList& sub_items = item->GetSubMenu()->GetMenuItems(); + for (auto sub_item : sub_items) + { + update_menu_item_icons(sub_item); + sub_item->SetFont(Slic3r::GUI::wxGetApp().normal_font()); + } + } + } +} + wxMenuItem* append_menu_item(wxMenu* menu, int id, const wxString& string, const wxString& description, std::function cb, const wxBitmap& icon, wxEvtHandler* event_handler) { @@ -32,7 +81,15 @@ wxMenuItem* append_menu_item(wxMenu* menu, int id, const wxString& string, const id = wxNewId(); wxMenuItem* item = menu->Append(id, string, description); - item->SetBitmap(icon); +// item->SetBitmap(icon); + + if (icon.IsOk()) + { + item->SetBitmap(icon); + wxImage imgGrey = icon.ConvertToImage().ConvertToGreyscale(); + if (imgGrey.IsOk()) + item->SetDisabledBitmap(wxBitmap(imgGrey)); + } #ifdef __WXMSW__ if (event_handler != nullptr && event_handler != menu) @@ -47,7 +104,13 @@ wxMenuItem* append_menu_item(wxMenu* menu, int id, const wxString& string, const wxMenuItem* append_menu_item(wxMenu* menu, int id, const wxString& string, const wxString& description, std::function cb, const std::string& icon, wxEvtHandler* event_handler) { + if (id == wxID_ANY) + id = wxNewId(); + const wxBitmap& bmp = !icon.empty() ? create_scaled_bitmap(nullptr, icon) : wxNullBitmap; // FIXME: pass window ptr + if (bmp.IsOk()) + menuitem_bitmaps[id] = icon; + return append_menu_item(menu, id, string, description, cb, bmp, event_handler); } diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp index 589317f2b0..d408f6c032 100644 --- a/src/slic3r/GUI/wxExtensions.hpp +++ b/src/slic3r/GUI/wxExtensions.hpp @@ -20,7 +20,11 @@ namespace Slic3r { enum class ModelVolumeType : int; }; -wxMenuItem* append_menu_item(wxMenu* menu, int id, const wxString& string, const wxString& description, +const std::string& get_menuitem_icon_name(const int item_id); +void update_menu_item_icons(wxMenuItem* item); +void msw_rescale_menu(wxMenu* menu); + +wxMenuItem* append_menu_item(wxMenu* menu, int id, const wxString& string, const wxString& description, std::function cb, const wxBitmap& icon, wxEvtHandler* event_handler = nullptr); wxMenuItem* append_menu_item(wxMenu* menu, int id, const wxString& string, const wxString& description, std::function cb, const std::string& icon = "", wxEvtHandler* event_handler = nullptr); From bf30ec439f0a92366923e777f8d2d58a12fb2a6d Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Fri, 3 May 2019 11:43:48 +0200 Subject: [PATCH 50/94] Fixed file extension when using option --export-amf in command line --- src/slic3r.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r.cpp b/src/slic3r.cpp index c3e69a1898..e8f92e66d6 100644 --- a/src/slic3r.cpp +++ b/src/slic3r.cpp @@ -628,7 +628,7 @@ std::string CLI::output_filepath(const Model &model, IO::ExportFormat format) co { std::string ext; switch (format) { - case IO::AMF: ext = ".amf"; break; + case IO::AMF: ext = ".zip.amf"; break; case IO::OBJ: ext = ".obj"; break; case IO::STL: ext = ".stl"; break; case IO::TMF: ext = ".3mf"; break; From 0ab96ed6b5786eda18b7cceb4f7c695cd61065ee Mon Sep 17 00:00:00 2001 From: bubnikv Date: Fri, 3 May 2019 12:36:26 +0200 Subject: [PATCH 51/94] Changed the "non-uniform scaling is not possible" message. --- src/slic3r/GUI/3DScene.cpp | 19 ++-- src/slic3r/GUI/3DScene.hpp | 3 + src/slic3r/GUI/GLCanvas3D.cpp | 12 +- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 133 +++++++++------------- src/slic3r/GUI/GUI_ObjectManipulation.hpp | 23 +--- src/slic3r/GUI/Gizmos/GLGizmosManager.cpp | 12 +- src/slic3r/GUI/Selection.cpp | 92 ++++++++++----- src/slic3r/GUI/Selection.hpp | 9 ++ 8 files changed, 150 insertions(+), 153 deletions(-) diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index bbedc08027..c5ede97926 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -362,19 +362,18 @@ const BoundingBoxf3& GLVolume::transformed_bounding_box() const const BoundingBoxf3& GLVolume::transformed_convex_hull_bounding_box() const { - if (m_transformed_convex_hull_bounding_box_dirty) - { - if ((m_convex_hull != nullptr) && (m_convex_hull->stl.stats.number_of_facets > 0)) - m_transformed_convex_hull_bounding_box = m_convex_hull->transformed_bounding_box(world_matrix()); - else - m_transformed_convex_hull_bounding_box = bounding_box.transformed(world_matrix()); - - m_transformed_convex_hull_bounding_box_dirty = false; - } - + if (m_transformed_convex_hull_bounding_box_dirty) + m_transformed_convex_hull_bounding_box = this->transformed_convex_hull_bounding_box(world_matrix()); return m_transformed_convex_hull_bounding_box; } +BoundingBoxf3 GLVolume::transformed_convex_hull_bounding_box(const Transform3d &trafo) const +{ + return (m_convex_hull != nullptr && m_convex_hull->stl.stats.number_of_facets > 0) ? + m_convex_hull->transformed_bounding_box(trafo) : + bounding_box.transformed(trafo); +} + void GLVolume::set_range(double min_z, double max_z) { this->qverts_range.first = 0; diff --git a/src/slic3r/GUI/3DScene.hpp b/src/slic3r/GUI/3DScene.hpp index faf5a745d9..191b6a016c 100644 --- a/src/slic3r/GUI/3DScene.hpp +++ b/src/slic3r/GUI/3DScene.hpp @@ -397,6 +397,9 @@ public: bool is_left_handed() const; const BoundingBoxf3& transformed_bounding_box() const; + // non-caching variant + BoundingBoxf3 transformed_convex_hull_bounding_box(const Transform3d &trafo) const; + // caching variant const BoundingBoxf3& transformed_convex_hull_bounding_box() const; bool empty() const { return this->indexed_vertex_array.empty(); } diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 79d6b7d2e8..09ef2b2ac1 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1748,7 +1748,7 @@ void GLCanvas3D::mirror_selection(Axis axis) { m_selection.mirror(axis); do_mirror(); - wxGetApp().obj_manipul()->update_settings_value(m_selection); + wxGetApp().obj_manipul()->set_dirty(); } // Reload the 3D scene of @@ -2091,7 +2091,7 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re // to force a reset of its cache auto manip = wxGetApp().obj_manipul(); if (manip != nullptr) - manip->update_settings_value(m_selection); + manip->set_dirty(); } // and force this canvas to be redrawn. @@ -2726,7 +2726,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) m_regenerate_volumes = false; m_selection.translate(cur_pos - m_mouse.drag.start_position_3D); - wxGetApp().obj_manipul()->update_settings_value(m_selection); + wxGetApp().obj_manipul()->set_dirty(); m_dirty = true; } @@ -2781,7 +2781,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) { m_regenerate_volumes = false; do_move(); - wxGetApp().obj_manipul()->update_settings_value(m_selection); + wxGetApp().obj_manipul()->set_dirty(); // Let the platter know that the dragging finished, so a delayed refresh // of the scene with the background processing data should be performed. post_event(SimpleEvent(EVT_GLCANVAS_MOUSE_DRAGGING_FINISHED)); @@ -2793,7 +2793,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) { m_selection.clear(); m_selection.set_mode(Selection::Instance); - wxGetApp().obj_manipul()->update_settings_value(m_selection); + wxGetApp().obj_manipul()->set_dirty(); m_gizmos.reset_all_states(); m_gizmos.update_data(*this); post_event(SimpleEvent(EVT_GLCANVAS_OBJECT_SELECT)); @@ -2817,7 +2817,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) m_gizmos.refresh_on_off_state(m_selection); post_event(SimpleEvent(EVT_GLCANVAS_OBJECT_SELECT)); m_gizmos.update_data(*this); - wxGetApp().obj_manipul()->update_settings_value(m_selection); + wxGetApp().obj_manipul()->set_dirty(); // forces a frame render to update the view before the context menu is shown render(); diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index 174879adc7..1da17f676d 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -197,8 +197,10 @@ bool ObjectManipulation::IsShown() void ObjectManipulation::UpdateAndShow(const bool show) { - if (show) - update_settings_value(wxGetApp().plater()->canvas3D()->get_selection()); + if (show) { + this->set_dirty(); + this->update_if_dirty(); + } OG_Settings::UpdateAndShow(show); } @@ -210,41 +212,35 @@ void ObjectManipulation::update_settings_value(const Selection& selection) m_new_scale_label_string = L("Scale factors"); ObjectList* obj_list = wxGetApp().obj_list(); - if (selection.is_single_full_instance() && ! m_world_coordinates) + if (selection.is_single_full_instance()) { // all volumes in the selection belongs to the same instance, any of them contains the needed instance data, so we take the first one const GLVolume* volume = selection.get_volume(*selection.get_volume_idxs().begin()); m_new_position = volume->get_instance_offset(); - m_new_rotation = volume->get_instance_rotation() * (180. / M_PI); - m_new_scale = volume->get_instance_scaling_factor() * 100.; - int obj_idx = volume->object_idx(); - int instance_idx = volume->instance_idx(); - if ((0 <= obj_idx) && (obj_idx < (int)wxGetApp().model_objects()->size())) - { - bool changed_box = false; - //FIXME matching an object idx may not be enough - if (!m_cache.instance.matches_object(obj_idx)) - { - m_cache.instance.set(obj_idx, instance_idx, (*wxGetApp().model_objects())[obj_idx]->raw_mesh_bounding_box().size()); - changed_box = true; - } - //FIXME matching an instance idx may not be enough. Check for ModelObject id an all ModelVolume ids. - if (changed_box || !m_cache.instance.matches_instance(instance_idx) || !m_cache.scale.isApprox(m_new_scale)) - m_new_size = volume->get_instance_transformation().get_scaling_factor().cwiseProduct(m_cache.instance.box_size); - } - else { - // this should never happen - assert(false); - m_new_size = Vec3d::Zero(); - } + + // Verify whether the instance rotation is multiples of 90 degrees, so that the scaling in world coordinates is possible. + if (m_world_coordinates && ! m_uniform_scale && + ! Geometry::is_rotation_ninety_degrees(volume->get_instance_rotation())) { + // Manipulating an instance in the world coordinate system, rotation is not multiples of ninety degrees, therefore enforce uniform scaling. + m_uniform_scale = true; + m_lock_bnt->SetLock(true); + } + + if (m_world_coordinates) { + m_new_rotate_label_string = L("Rotate"); + m_new_rotation = Vec3d::Zero(); + m_new_size = selection.get_bounding_box().size(); + m_new_scale = m_new_size.cwiseProduct(selection.get_unscaled_instance_bounding_box().size().cwiseInverse()) * 100.; + } else { + m_new_rotation = volume->get_instance_rotation() * (180. / M_PI); + m_new_size = volume->get_instance_transformation().get_scaling_factor().cwiseProduct((*wxGetApp().model_objects())[volume->object_idx()]->raw_mesh_bounding_box().size()); + m_new_scale = volume->get_instance_scaling_factor() * 100.; + } m_new_enabled = true; } - else if ((selection.is_single_full_instance() && m_world_coordinates) || - (selection.is_single_full_object() && obj_list->is_selected(itObject))) + else if (selection.is_single_full_object() && obj_list->is_selected(itObject)) { - m_cache.instance.reset(); - const BoundingBoxf3& box = selection.get_bounding_box(); m_new_position = box.center(); m_new_rotation = Vec3d::Zero(); @@ -253,23 +249,9 @@ void ObjectManipulation::update_settings_value(const Selection& selection) m_new_rotate_label_string = L("Rotate"); m_new_scale_label_string = L("Scale"); m_new_enabled = true; - - if (selection.is_single_full_instance() && m_world_coordinates && ! m_uniform_scale) { - // Verify whether the instance rotation is multiples of 90 degrees, so that the scaling in world coordinates is possible. - // all volumes in the selection belongs to the same instance, any of them contains the needed instance data, so we take the first one - const GLVolume* volume = selection.get_volume(*selection.get_volume_idxs().begin()); - // Is the angle close to a multiple of 90 degrees? - if (! Geometry::is_rotation_ninety_degrees(volume->get_instance_rotation())) { - // Manipulating an instance in the world coordinate system, rotation is not multiples of ninety degrees, therefore enforce uniform scaling. - m_uniform_scale = true; - m_lock_bnt->SetLock(true); - } - } } else if (selection.is_single_modifier() || selection.is_single_volume()) { - m_cache.instance.reset(); - // the selection contains a single volume const GLVolume* volume = selection.get_volume(*selection.get_volume_idxs().begin()); m_new_position = volume->get_volume_offset(); @@ -292,15 +274,16 @@ void ObjectManipulation::update_settings_value(const Selection& selection) // assert(selection.is_empty()); reset_settings_value(); } - - m_dirty = true; } void ObjectManipulation::update_if_dirty() { - if (!m_dirty) + if (! m_dirty) return; + const Selection &selection = wxGetApp().plater()->canvas3D()->get_selection(); + this->update_settings_value(selection); + auto update_label = [](wxString &label_cache, const std::string &new_label, wxStaticText *widget) { wxString new_label_localized = _(new_label) + ":"; if (label_cache != new_label_localized) { @@ -330,7 +313,7 @@ void ObjectManipulation::update_if_dirty() update(m_cache.rotation, m_cache.rotation_rounded, "rotation_", m_new_rotation); } - if (wxGetApp().plater()->canvas3D()->get_selection().requires_uniform_scale()) { + if (selection.requires_uniform_scale()) { m_lock_bnt->SetLock(true); m_lock_bnt->Disable(); } @@ -377,8 +360,9 @@ void ObjectManipulation::reset_settings_value() m_new_scale = Vec3d::Ones(); m_new_size = Vec3d::Zero(); m_new_enabled = false; - m_cache.instance.reset(); - m_dirty = true; + // no need to set the dirty flag here as this method is called from update_settings_value(), + // which is called from update_if_dirty(), which resets the dirty flag anyways. +// m_dirty = true; } void ObjectManipulation::change_position_value(int axis, double value) @@ -437,12 +421,9 @@ void ObjectManipulation::change_scale_value(int axis, double value) return; Vec3d scale = m_cache.scale; - scale(axis) = value; + scale(axis) = value; - this->do_scale(scale); - - if (!m_cache.scale.isApprox(scale)) - m_cache.instance.instance_idx = -1; + this->do_scale(axis, scale); m_cache.scale = scale; m_cache.scale_rounded(axis) = DBL_MAX; @@ -460,46 +441,34 @@ void ObjectManipulation::change_size_value(int axis, double value) const Selection& selection = wxGetApp().plater()->canvas3D()->get_selection(); Vec3d ref_size = m_cache.size; - if (selection.is_single_volume() || selection.is_single_modifier()) - { - const GLVolume* volume = selection.get_volume(*selection.get_volume_idxs().begin()); - ref_size = volume->bounding_box.size(); - } - else if (selection.is_single_full_instance() && ! m_world_coordinates) - ref_size = m_cache.instance.box_size; + if (selection.is_single_volume() || selection.is_single_modifier()) + ref_size = selection.get_volume(*selection.get_volume_idxs().begin())->bounding_box.size(); + else if (selection.is_single_full_instance()) + ref_size = m_world_coordinates ? + selection.get_unscaled_instance_bounding_box().size() : + (*wxGetApp().model_objects())[selection.get_volume(*selection.get_volume_idxs().begin())->object_idx()]->raw_mesh_bounding_box().size(); - this->do_scale(100. * Vec3d(size(0) / ref_size(0), size(1) / ref_size(1), size(2) / ref_size(2))); + this->do_scale(axis, 100. * Vec3d(size(0) / ref_size(0), size(1) / ref_size(1), size(2) / ref_size(2))); m_cache.size = size; m_cache.size_rounded(axis) = DBL_MAX; this->UpdateAndShow(true); } -void ObjectManipulation::do_scale(const Vec3d &scale) const +void ObjectManipulation::do_scale(int axis, const Vec3d &scale) const { Selection& selection = wxGetApp().plater()->canvas3D()->get_selection(); Vec3d scaling_factor = scale; TransformationType transformation_type(TransformationType::World_Relative_Joint); if (selection.is_single_full_instance()) { - if (m_world_coordinates) { - // Only a 90 degree rotation is allowed, therefore an axis aligned scaling will - // be still axis aligned after the instance rotation is applied. - const GLVolume* volume = selection.get_volume(*selection.get_volume_idxs().begin()); - scaling_factor = (volume->get_instance_transformation().get_matrix(true, false, true, true) * scale).cwiseAbs(); - // Absolute scaling shall not change. - assert(std::abs(scale.maxCoeff() - scaling_factor.maxCoeff()) < EPSILON); - assert(std::abs(scale.minCoeff() - scaling_factor.minCoeff()) < EPSILON); - assert(std::abs(scale.squaredNorm() - scaling_factor.squaredNorm()) < EPSILON); - } else + transformation_type.set_absolute(); + if (! m_world_coordinates) transformation_type.set_local(); } - if (m_uniform_scale || selection.requires_uniform_scale()) { - int max_diff_axis; - (scale - m_cache.scale).cwiseAbs().maxCoeff(&max_diff_axis); - scaling_factor = scale(max_diff_axis) * Vec3d::Ones(); - } + if (m_uniform_scale || selection.requires_uniform_scale()) + scaling_factor = scale(axis) * Vec3d::Ones(); selection.start_dragging(); selection.scale(scaling_factor * 0.01, transformation_type); @@ -577,8 +546,10 @@ void ObjectManipulation::set_uniform_scaling(const bool new_value) if (! Geometry::is_rotation_ninety_degrees(volume->get_instance_rotation())) { // Cannot apply scaling in the world coordinate system. wxMessageDialog dlg(GUI::wxGetApp().mainframe, - _(L("Non-uniform scaling of tilted objects is not supported in the World coordinate system.\n" - "Do you want to rotate the mesh?")), + _(L("The currently manipulated object is tilted (rotation angles are not multiples of 90°).\n" + "Non-uniform scaling of tilted objects is only possible in the World coordinate system,\n" + "once the rotation is embedded into the object coordinates.\n" + "Do you want to proceed?")), SLIC3R_APP_NAME, wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION); if (dlg.ShowModal() != wxID_YES) { @@ -590,6 +561,8 @@ void ObjectManipulation::set_uniform_scaling(const bool new_value) (*wxGetApp().model_objects())[volume->composite_id.object_id]->bake_xy_rotation_into_meshes(volume->composite_id.instance_id); // Update the 3D scene, selections etc. wxGetApp().plater()->update(); + // Recalculate cached values at this panel, refresh the screen. + this->UpdateAndShow(true); } } m_uniform_scale = new_value; diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp index e93ce1ffbc..833070e03a 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp @@ -32,22 +32,6 @@ class ObjectManipulation : public OG_Settings wxString rotate_label_string; wxString scale_label_string; - struct Instance - { - int object_idx; - int instance_idx; - Vec3d box_size; - - Instance() { reset(); } - void reset() { this->object_idx = -1; this->instance_idx = -1; this->box_size = Vec3d::Zero(); } - void set(int object_idx, int instance_idx, const Vec3d& box_size) { this->object_idx = object_idx; this->instance_idx = instance_idx; this->box_size = box_size; } - bool matches(int object_idx, int instance_idx) const { return (this->object_idx == object_idx) && (this->instance_idx == instance_idx); } - bool matches_object(int object_idx) const { return (this->object_idx == object_idx); } - bool matches_instance(int instance_idx) const { return (this->instance_idx == instance_idx); } - }; - - Instance instance; - Cache() { reset(); } void reset() { @@ -58,7 +42,6 @@ class ObjectManipulation : public OG_Settings move_label_string = wxString(); rotate_label_string = wxString(); scale_label_string = wxString(); - instance.reset(); } bool is_valid() const { return position != Vec3d(DBL_MAX, DBL_MAX, DBL_MAX); } }; @@ -99,8 +82,7 @@ public: bool IsShown() override; void UpdateAndShow(const bool show) override; - void update_settings_value(const Selection& selection); - + void set_dirty() { m_dirty = true; } // Called from the App to update the UI if dirty. void update_if_dirty(); @@ -120,6 +102,7 @@ public: private: void reset_settings_value(); + void update_settings_value(const Selection& selection); // update size values after scale unit changing or "gizmos" void update_size_value(const Vec3d& size); @@ -131,7 +114,7 @@ private: void change_rotation_value(int axis, double value); void change_scale_value(int axis, double value); void change_size_value(int axis, double value); - void do_scale(const Vec3d &scale) const; + void do_scale(int axis, const Vec3d &scale) const; void on_change(t_config_option_key opt_key, const boost::any& value); void on_fill_empty_value(const std::string& opt_key); diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index 90d6e6c6d8..8e01806f1e 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -590,7 +590,7 @@ bool GLGizmosManager::on_mouse(wxMouseEvent& evt, GLCanvas3D& canvas) // Rotate the object so the normal points downward: selection.flattening_rotate(get_flattening_normal()); canvas.do_flatten(); - wxGetApp().obj_manipul()->update_settings_value(selection); + wxGetApp().obj_manipul()->set_dirty(); } canvas.set_as_dirty(); @@ -623,17 +623,17 @@ bool GLGizmosManager::on_mouse(wxMouseEvent& evt, GLCanvas3D& canvas) { // Apply new temporary offset selection.translate(get_displacement()); - wxGetApp().obj_manipul()->update_settings_value(selection); + wxGetApp().obj_manipul()->set_dirty(); break; } case Scale: { // Apply new temporary scale factors - TransformationType transformation_type(TransformationType::Local_Relative_Joint); + TransformationType transformation_type(TransformationType::Local_Absolute_Joint); if (evt.AltDown()) transformation_type.set_independent(); selection.scale(get_scale(), transformation_type); - wxGetApp().obj_manipul()->update_settings_value(selection); + wxGetApp().obj_manipul()->set_dirty(); break; } case Rotate: @@ -643,7 +643,7 @@ bool GLGizmosManager::on_mouse(wxMouseEvent& evt, GLCanvas3D& canvas) if (evt.AltDown()) transformation_type.set_independent(); selection.rotate(get_rotation(), transformation_type); - wxGetApp().obj_manipul()->update_settings_value(selection); + wxGetApp().obj_manipul()->set_dirty(); break; } default: @@ -680,7 +680,7 @@ bool GLGizmosManager::on_mouse(wxMouseEvent& evt, GLCanvas3D& canvas) stop_dragging(); update_data(canvas); - wxGetApp().obj_manipul()->update_settings_value(selection); + wxGetApp().obj_manipul()->set_dirty(); // Let the platter know that the dragging finished, so a delayed refresh // of the scene with the background processing data should be performed. canvas.post_event(SimpleEvent(EVT_GLCANVAS_MOUSE_DRAGGING_FINISHED)); diff --git a/src/slic3r/GUI/Selection.cpp b/src/slic3r/GUI/Selection.cpp index e4912918d4..28cab3eba2 100644 --- a/src/slic3r/GUI/Selection.cpp +++ b/src/slic3r/GUI/Selection.cpp @@ -54,10 +54,10 @@ Selection::Selection() , m_mode(Instance) , m_type(Empty) , m_valid(false) - , m_bounding_box_dirty(true) , m_curved_arrow(16) , m_scale_factor(1.0f) { + this->set_bounding_boxes_dirty(); #if ENABLE_RENDER_SELECTION_CENTER m_quadric = ::gluNewQuadric(); if (m_quadric != nullptr) @@ -148,7 +148,7 @@ void Selection::add(unsigned int volume_idx, bool as_single_selection, bool chec } update_type(); - m_bounding_box_dirty = true; + this->set_bounding_boxes_dirty(); } void Selection::remove(unsigned int volume_idx) @@ -173,7 +173,7 @@ void Selection::remove(unsigned int volume_idx) } update_type(); - m_bounding_box_dirty = true; + this->set_bounding_boxes_dirty(); } void Selection::add_object(unsigned int object_idx, bool as_single_selection) @@ -190,7 +190,7 @@ void Selection::add_object(unsigned int object_idx, bool as_single_selection) do_add_object(object_idx); update_type(); - m_bounding_box_dirty = true; + this->set_bounding_boxes_dirty(); } void Selection::remove_object(unsigned int object_idx) @@ -201,7 +201,7 @@ void Selection::remove_object(unsigned int object_idx) do_remove_object(object_idx); update_type(); - m_bounding_box_dirty = true; + this->set_bounding_boxes_dirty(); } void Selection::add_instance(unsigned int object_idx, unsigned int instance_idx, bool as_single_selection) @@ -218,7 +218,7 @@ void Selection::add_instance(unsigned int object_idx, unsigned int instance_idx, do_add_instance(object_idx, instance_idx); update_type(); - m_bounding_box_dirty = true; + this->set_bounding_boxes_dirty(); } void Selection::remove_instance(unsigned int object_idx, unsigned int instance_idx) @@ -229,7 +229,7 @@ void Selection::remove_instance(unsigned int object_idx, unsigned int instance_i do_remove_instance(object_idx, instance_idx); update_type(); - m_bounding_box_dirty = true; + this->set_bounding_boxes_dirty(); } void Selection::add_volume(unsigned int object_idx, unsigned int volume_idx, int instance_idx, bool as_single_selection) @@ -254,7 +254,7 @@ void Selection::add_volume(unsigned int object_idx, unsigned int volume_idx, int } update_type(); - m_bounding_box_dirty = true; + this->set_bounding_boxes_dirty(); } void Selection::remove_volume(unsigned int object_idx, unsigned int volume_idx) @@ -270,7 +270,7 @@ void Selection::remove_volume(unsigned int object_idx, unsigned int volume_idx) } update_type(); - m_bounding_box_dirty = true; + this->set_bounding_boxes_dirty(); } void Selection::add_all() @@ -288,7 +288,7 @@ void Selection::add_all() } update_type(); - m_bounding_box_dirty = true; + this->set_bounding_boxes_dirty(); } void Selection::clear() @@ -304,7 +304,7 @@ void Selection::clear() m_list.clear(); update_type(); - m_bounding_box_dirty = true; + this->set_bounding_boxes_dirty(); // resets the cache in the sidebar wxGetApp().obj_manipul()->reset_cache(); @@ -323,7 +323,7 @@ void Selection::instances_changed(const std::vector &instance_ids_select this->do_add_volume(volume_idx); } update_type(); - m_bounding_box_dirty = true; + this->set_bounding_boxes_dirty(); } // Update the selection based on the map from old indices to new indices after m_volumes changed. @@ -341,7 +341,7 @@ void Selection::volumes_changed(const std::vector &map_volume_old_to_new } m_list = std::move(list_new); update_type(); - m_bounding_box_dirty = true; + this->set_bounding_boxes_dirty(); } bool Selection::is_single_full_instance() const @@ -426,6 +426,14 @@ const BoundingBoxf3& Selection::get_bounding_box() const return m_bounding_box; } +const BoundingBoxf3& Selection::get_unscaled_instance_bounding_box() const +{ + if (m_unscaled_instance_bounding_box_dirty) + calc_unscaled_instance_bounding_box(); + + return m_unscaled_instance_bounding_box; +} + void Selection::start_dragging() { if (!m_valid) @@ -473,7 +481,7 @@ void Selection::translate(const Vec3d& displacement, bool local) synchronize_unselected_volumes(); #endif // !DISABLE_INSTANCES_SYNCH - m_bounding_box_dirty = true; + this->set_bounding_boxes_dirty(); } // Rotate an object around one of the axes. Only one rotation component is expected to be changing. @@ -580,7 +588,7 @@ void Selection::rotate(const Vec3d& rotation, TransformationType transformation_ synchronize_unselected_volumes(); #endif // !DISABLE_INSTANCES_SYNCH - m_bounding_box_dirty = true; + this->set_bounding_boxes_dirty(); } void Selection::flattening_rotate(const Vec3d& normal) @@ -621,7 +629,7 @@ void Selection::flattening_rotate(const Vec3d& normal) synchronize_unselected_instances(SYNC_ROTATION_FULL); #endif // !DISABLE_INSTANCES_SYNCH - m_bounding_box_dirty = true; + this->set_bounding_boxes_dirty(); } void Selection::scale(const Vec3d& scale, TransformationType transformation_type) @@ -629,15 +637,21 @@ void Selection::scale(const Vec3d& scale, TransformationType transformation_type if (!m_valid) return; - // Only relative scaling values are allowed in the world coordinate system. - assert(! transformation_type.world() || transformation_type.relative()); - for (unsigned int i : m_list) { - if (is_single_full_instance() && ! transformation_type.world()) - (*m_volumes)[i]->set_instance_scaling_factor(scale); + GLVolume &volume = *(*m_volumes)[i]; + if (is_single_full_instance()) { + assert(transformation_type.absolute()); + if (transformation_type.world() && (std::abs(scale.x() - scale.y()) > EPSILON || std::abs(scale.x() - scale.z()) > EPSILON)) { + // Non-uniform scaling. Transform the scaling factors into the local coordinate system. + // This is only possible, if the instance rotation is mulitples of ninety degrees. + assert(Geometry::is_rotation_ninety_degrees(volume.get_instance_rotation())); + volume.set_instance_scaling_factor((volume.get_instance_transformation().get_matrix(true, false, true, true).matrix().block<3, 3>(0, 0).transpose() * scale).cwiseAbs()); + } else + volume.set_instance_scaling_factor(scale); + } else if (is_single_volume() || is_single_modifier()) - (*m_volumes)[i]->set_volume_scaling_factor(scale); + volume.set_volume_scaling_factor(scale); else { Transform3d m = Geometry::assemble_transform(Vec3d::Zero(), Vec3d::Zero(), scale); @@ -647,9 +661,9 @@ void Selection::scale(const Vec3d& scale, TransformationType transformation_type // extracts scaling factors from the composed transformation Vec3d new_scale(new_matrix.col(0).norm(), new_matrix.col(1).norm(), new_matrix.col(2).norm()); if (transformation_type.joint()) - (*m_volumes)[i]->set_instance_offset(m_cache.dragging_center + m * (m_cache.volumes_data[i].get_instance_position() - m_cache.dragging_center)); + volume.set_instance_offset(m_cache.dragging_center + m * (m_cache.volumes_data[i].get_instance_position() - m_cache.dragging_center)); - (*m_volumes)[i]->set_instance_scaling_factor(new_scale); + volume.set_instance_scaling_factor(new_scale); } else if (m_mode == Volume) { @@ -659,9 +673,9 @@ void Selection::scale(const Vec3d& scale, TransformationType transformation_type if (transformation_type.joint()) { Vec3d offset = m * (m_cache.volumes_data[i].get_volume_position() + m_cache.volumes_data[i].get_instance_position() - m_cache.dragging_center); - (*m_volumes)[i]->set_volume_offset(m_cache.dragging_center - m_cache.volumes_data[i].get_instance_position() + offset); + volume.set_volume_offset(m_cache.dragging_center - m_cache.volumes_data[i].get_instance_position() + offset); } - (*m_volumes)[i]->set_volume_scaling_factor(new_scale); + volume.set_volume_scaling_factor(new_scale); } } } @@ -675,7 +689,7 @@ void Selection::scale(const Vec3d& scale, TransformationType transformation_type ensure_on_bed(); - m_bounding_box_dirty = true; + this->set_bounding_boxes_dirty(); } void Selection::mirror(Axis axis) @@ -700,7 +714,7 @@ void Selection::mirror(Axis axis) synchronize_unselected_volumes(); #endif // !DISABLE_INSTANCES_SYNCH - m_bounding_box_dirty = true; + this->set_bounding_boxes_dirty(); } void Selection::translate(unsigned int object_idx, const Vec3d& displacement) @@ -745,7 +759,7 @@ void Selection::translate(unsigned int object_idx, const Vec3d& displacement) } } - m_bounding_box_dirty = true; + this->set_bounding_boxes_dirty(); } void Selection::translate(unsigned int object_idx, unsigned int instance_idx, const Vec3d& displacement) @@ -790,7 +804,7 @@ void Selection::translate(unsigned int object_idx, unsigned int instance_idx, co } } - m_bounding_box_dirty = true; + this->set_bounding_boxes_dirty(); } void Selection::erase() @@ -1396,7 +1410,23 @@ void Selection::calc_bounding_box() const m_bounding_box.merge((*m_volumes)[i]->transformed_convex_hull_bounding_box()); } } - m_bounding_box_dirty = false; + m_bounding_box_dirty = false; +} + +void Selection::calc_unscaled_instance_bounding_box() const +{ + m_unscaled_instance_bounding_box = BoundingBoxf3(); + if (m_valid) + { + for (unsigned int i : m_list) + { + const GLVolume &volume = *(*m_volumes)[i]; + Transform3d trafo = volume.get_instance_transformation().get_matrix(false, false, true, false) * volume.get_volume_transformation().get_matrix(); + trafo.translation()(2) += volume.get_sla_shift_z(); + m_unscaled_instance_bounding_box.merge(volume.transformed_convex_hull_bounding_box(trafo)); + } + } + m_unscaled_instance_bounding_box_dirty = false; } void Selection::render_selected_volumes() const diff --git a/src/slic3r/GUI/Selection.hpp b/src/slic3r/GUI/Selection.hpp index 9f9c1c3256..d808bee073 100644 --- a/src/slic3r/GUI/Selection.hpp +++ b/src/slic3r/GUI/Selection.hpp @@ -183,6 +183,10 @@ private: Clipboard m_clipboard; mutable BoundingBoxf3 m_bounding_box; mutable bool m_bounding_box_dirty; + // Bounding box of a selection, with no instance scaling applied. This bounding box + // is useful for absolute scaling of tilted objects in world coordinate space. + mutable BoundingBoxf3 m_unscaled_instance_bounding_box; + mutable bool m_unscaled_instance_bounding_box_dirty; #if ENABLE_RENDER_SELECTION_CENTER GLUquadricObj* m_quadric; @@ -265,6 +269,9 @@ public: unsigned int volumes_count() const { return (unsigned int)m_list.size(); } const BoundingBoxf3& get_bounding_box() const; + // Bounding box of a selection, with no instance scaling applied. This bounding box + // is useful for absolute scaling of tilted objects in world coordinate space. + const BoundingBoxf3& get_unscaled_instance_bounding_box() const; void start_dragging(); @@ -303,6 +310,8 @@ private: void do_remove_instance(unsigned int object_idx, unsigned int instance_idx); void do_remove_object(unsigned int object_idx); void calc_bounding_box() const; + void calc_unscaled_instance_bounding_box() const; + void set_bounding_boxes_dirty() { m_bounding_box_dirty = true; m_unscaled_instance_bounding_box_dirty = true; } void render_selected_volumes() const; void render_synchronized_volumes() const; void render_bounding_box(const BoundingBoxf3& box, float* color) const; From 4be4dc623c097b529b417692c543eae5ec6e4c5c Mon Sep 17 00:00:00 2001 From: YuSanka Date: Fri, 3 May 2019 13:09:42 +0200 Subject: [PATCH 52/94] Fixed full statistics calculation (calculate sum of volume and part_count only for solid parts) --- src/libslic3r/Model.cpp | 19 ++++++++++--------- src/slic3r/GUI/GUI_App.cpp | 8 ++++---- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 5 ++++- src/slic3r/GUI/Plater.cpp | 2 +- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 271b728b53..ec95eb5782 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -1467,17 +1467,18 @@ stl_stats ModelObject::get_object_stl_stats() const const stl_stats& stats = volume->mesh.stl.stats; // initialize full_stats (for repaired errors) - full_stats.degenerate_facets+= stats.degenerate_facets; - full_stats.edges_fixed += stats.edges_fixed; - full_stats.facets_removed += stats.facets_removed; - full_stats.facets_added += stats.facets_added; - full_stats.facets_reversed += stats.facets_reversed; - full_stats.backwards_edges += stats.backwards_edges; + full_stats.degenerate_facets += stats.degenerate_facets; + full_stats.edges_fixed += stats.edges_fixed; + full_stats.facets_removed += stats.facets_removed; + full_stats.facets_added += stats.facets_added; + full_stats.facets_reversed += stats.facets_reversed; + full_stats.backwards_edges += stats.backwards_edges; // another used satistics value - if (volume->is_model_part()) - full_stats.volume += stats.volume; - full_stats.number_of_parts += stats.number_of_parts; + if (volume->is_model_part()) { + full_stats.volume += stats.volume; + full_stats.number_of_parts += stats.number_of_parts; + } } return full_stats; diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 595a968bd2..47141a6644 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -303,13 +303,13 @@ bool GUI_App::dark_mode_menus() void GUI_App::init_label_colours() { if (dark_mode()) { - m_color_label_modified = wxColour(252, 77, 1); - m_color_label_sys = wxColour(26, 132, 57); - } - else { m_color_label_modified = wxColour(253, 111, 40); m_color_label_sys = wxColour(115, 220, 103); } + else { + m_color_label_modified = wxColour(252, 77, 1); + m_color_label_sys = wxColour(26, 132, 57); + } m_color_label_default = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); } diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index b8c37dcd04..d50f030502 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -21,9 +21,9 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : OG_Settings(parent, true) #ifndef __APPLE__ , m_focused_option("") - , m_manifold_warning_bmp(ScalableBitmap(parent, "exclamation")) #endif // __APPLE__ { + m_manifold_warning_bmp = ScalableBitmap(parent, "exclamation"); m_og->set_name(_(L("Object Manipulation"))); m_og->label_width = 12;//125; m_og->set_grid_vgap(5); @@ -77,6 +77,9 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : def.gui_type = "legend"; def.tooltip = L("Object name"); def.width = 21; +#ifdef __APPLE__ + def.width = 19; +#endif def.default_value = new ConfigOptionString{ " " }; line.append_option(Option(def, "object_name")); m_og->append_line(line); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 07e1e2bae1..97845f8be6 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -724,7 +724,7 @@ Sidebar::Sidebar(Plater *parent) auto init_btn = [this](wxButton **btn, wxString label) { *btn = new wxButton(this, wxID_ANY, label, wxDefaultPosition, - wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER); + wxDefaultSize, wxBU_EXACTFIT); (*btn)->SetFont(wxGetApp().bold_font()); }; From 80d3cbac73f9798db3d739e9deb5f2ca25176203 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Fri, 3 May 2019 14:29:28 +0200 Subject: [PATCH 53/94] Temporary fix for crash, if try to add second settings grope for instance --- src/slic3r/GUI/GUI_ObjectList.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 833cd712e6..0734028d16 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -937,6 +937,13 @@ void ObjectList::get_freq_settings_choice(const wxString& bundle_name) { const std::vector& options = get_options_for_bundle(bundle_name); + /* #ys_FIXME_delete_after_testing ! Temporary workaround to avoid a crash: + * After a right click on an instance all items in the ObjectList are unselected, + * and as a result m_config == nullptr. + */ + if (!m_config) + return; + auto opt_keys = m_config->keys(); const DynamicPrintConfig& from_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; @@ -966,6 +973,10 @@ void ObjectList::update_settings_item() const auto settings_item = m_objects_model->IsSettingsItem(item) ? item : m_objects_model->GetSettingsItem(item); select_item(settings_item ? settings_item : m_objects_model->AddSettingsChild(item)); + + // update object selection on Plater + if (!m_prevent_canvas_selection_update) + update_selections_on_canvas(); } else { auto panel = wxGetApp().sidebar().scrolled_panel(); From c62006048fb01dbcc3652fb4e5a03b9a5905abda Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Fri, 3 May 2019 15:50:05 +0200 Subject: [PATCH 54/94] Associate 3mf files on Windows --- src/slic3r/GUI/GUI_App.cpp | 67 ++++++++++++++++++++++++++++++++++++++ src/slic3r/GUI/GUI_App.hpp | 3 ++ 2 files changed, 70 insertions(+) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 595a968bd2..e4ee60389e 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -44,6 +44,10 @@ #include "SysInfoDialog.hpp" #include "KBShortcutsDialog.hpp" +#ifdef __WXMSW__ +#include +#endif // __WXMSW__ + namespace Slic3r { namespace GUI { @@ -182,6 +186,10 @@ bool GUI_App::on_init_inner() app_config->set("version", SLIC3R_VERSION); app_config->save(); +#ifdef __WXMSW__ + associate_3mf_files(); +#endif // __WXMSW__ + preset_updater = new PresetUpdater(); Bind(EVT_SLIC3R_VERSION_ONLINE, [this](const wxCommandEvent &evt) { app_config->set("version_online", into_u8(evt.GetString())); @@ -947,5 +955,64 @@ void GUI_App::window_pos_sanitize(wxTopLevelWindow* window) // } +#ifdef __WXMSW__ +void GUI_App::associate_3mf_files() +{ + // see as reference: https://stackoverflow.com/questions/20245262/c-program-needs-an-file-association + + auto reg_set = [](HKEY hkeyHive, const wchar_t* pszVar, const wchar_t* pszValue) + { + wchar_t szValueCurrent[1000]; + DWORD dwType; + DWORD dwSize = sizeof(szValueCurrent); + + int iRC = ::RegGetValueW(hkeyHive, pszVar, nullptr, RRF_RT_ANY, &dwType, szValueCurrent, &dwSize); + + bool bDidntExist = iRC == ERROR_FILE_NOT_FOUND; + + if ((iRC != ERROR_SUCCESS) && !bDidntExist) + // an error occurred + return; + + if (!bDidntExist) + { + if (dwType != REG_SZ) + // invalid type + return; + + if (::wcscmp(szValueCurrent, pszValue) == 0) + // value already set + return; + } + + DWORD dwDisposition; + HKEY hkey; + iRC = ::RegCreateKeyExW(hkeyHive, pszVar, 0, 0, 0, KEY_ALL_ACCESS, nullptr, &hkey, &dwDisposition); + if (iRC == ERROR_SUCCESS) + iRC = ::RegSetValueExW(hkey, L"", 0, REG_SZ, (BYTE*)pszValue, (::wcslen(pszValue) + 1) * sizeof(wchar_t)); + + RegCloseKey(hkey); + }; + + wchar_t app_path[MAX_PATH]; + ::GetModuleFileNameW(nullptr, app_path, sizeof(app_path)); + + std::wstring prog_path = L"\"" + std::wstring(app_path) + L"\""; + std::wstring prog_id = L"Prusa.Slicer.1"; + std::wstring prog_desc = L"PrusaSlicer"; + std::wstring prog_command = prog_path + L" \"%1\""; + std::wstring reg_base = L"Software\\Classes"; + std::wstring reg_extension = reg_base + L"\\.3mf"; + std::wstring reg_prog_id = reg_base + L"\\" + prog_id; + std::wstring reg_prog_id_command = reg_prog_id + L"\\Shell\\Open\\Command"; + + reg_set(HKEY_CURRENT_USER, reg_extension.c_str(), prog_id.c_str()); + reg_set(HKEY_CURRENT_USER, reg_prog_id.c_str(), prog_desc.c_str()); + reg_set(HKEY_CURRENT_USER, reg_prog_id_command.c_str(), prog_command.c_str()); + + ::SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nullptr, nullptr); +} +#endif // __WXMSW__ + } // GUI } //Slic3r diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 3a6a443f06..60dc7c2faf 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -178,6 +178,9 @@ private: void window_pos_save(wxTopLevelWindow* window, const std::string &name); void window_pos_restore(wxTopLevelWindow* window, const std::string &name, bool default_maximized = false); void window_pos_sanitize(wxTopLevelWindow* window); +#ifdef __WXMSW__ + void associate_3mf_files(); +#endif // __WXMSW__ }; DECLARE_APP(GUI_App) From 8be585893a8207dc6628330e31121189c6726c89 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Fri, 3 May 2019 16:05:49 +0200 Subject: [PATCH 55/94] Fixed a crash, if try to add second settings grope for instance --- src/slic3r/GUI/GUI_ObjectList.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 64a7ce8a64..09a6e94a88 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -1000,13 +1000,7 @@ void ObjectList::get_freq_settings_choice(const wxString& bundle_name) { const std::vector& options = get_options_for_bundle(bundle_name); - /* #ys_FIXME_delete_after_testing ! Temporary workaround to avoid a crash: - * After a right click on an instance all items in the ObjectList are unselected, - * and as a result m_config == nullptr. - */ - if (!m_config) - return; - + assert(m_config); auto opt_keys = m_config->keys(); const DynamicPrintConfig& from_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; @@ -2156,6 +2150,11 @@ void ObjectList::update_selections() if (m_objects_model->GetVolumeIdByItem(m_objects_model->GetParent(item)) == gl_vol->volume_idx()) return; } + + // but if there is selected only one of several instances by context menu, + // then select this instance in ObjectList + if (selection.is_single_full_instance()) + sels.Add(m_objects_model->GetItemByInstanceId(selection.get_object_idx(), selection.get_instance_idx())); } else if (selection.is_single_full_object() || selection.is_multiple_full_object()) { From 30dc689d357a5db249da70982c7f76fb53353071 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Fri, 3 May 2019 16:14:26 +0200 Subject: [PATCH 56/94] Added set_as_owner_drawn() for the code universality --- src/slic3r/GUI/MainFrame.cpp | 10 +++++----- src/slic3r/GUI/wxExtensions.cpp | 8 ++++++++ src/slic3r/GUI/wxExtensions.hpp | 11 +++++++++-- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 029f084176..f3adf102e3 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -320,7 +320,7 @@ void MainFrame::init_menubar() // File menu wxMenu* fileMenu = new wxMenu; - fileMenu->SetOwnerDrawn(true); + set_as_owner_drawn(fileMenu); { wxMenuItem* item_open = append_menu_item(fileMenu, wxID_ANY, _(L("&Open Project")) + dots + "\tCtrl+O", _(L("Open a project file")), [this](wxCommandEvent&) { if (m_plater) m_plater->load_project(); }, menu_icon("open")); @@ -332,7 +332,7 @@ void MainFrame::init_menubar() fileMenu->AppendSeparator(); wxMenu* import_menu = new wxMenu(); - import_menu->SetOwnerDrawn(true); + set_as_owner_drawn(import_menu); wxMenuItem* item_import_model = append_menu_item(import_menu, wxID_ANY, _(L("Import STL/OBJ/AM&F/3MF")) + dots + "\tCtrl+I", _(L("Load a model")), [this](wxCommandEvent&) { if (m_plater) m_plater->add_model(); }, menu_icon("import_plater")); import_menu->AppendSeparator(); @@ -346,7 +346,7 @@ void MainFrame::init_menubar() append_submenu(fileMenu, import_menu, wxID_ANY, _(L("&Import")), ""); wxMenu* export_menu = new wxMenu(); - export_menu->SetOwnerDrawn(true); + set_as_owner_drawn(export_menu); wxMenuItem* item_export_gcode = append_menu_item(export_menu, wxID_ANY, _(L("Export &G-code")) + dots +"\tCtrl+G", _(L("Export current plate as G-code")), [this](wxCommandEvent&) { if (m_plater) m_plater->export_gcode(); }, menu_icon("export_gcode")); m_changeable_menu_items.push_back(item_export_gcode); @@ -440,10 +440,10 @@ void MainFrame::init_menubar() // Edit menu wxMenu* editMenu = nullptr; - editMenu->SetOwnerDrawn(true); if (m_plater != nullptr) { editMenu = new wxMenu(); + set_as_owner_drawn(editMenu); #ifdef __APPLE__ // Backspace sign wxString hotkey_delete = "\u232b"; @@ -474,7 +474,7 @@ void MainFrame::init_menubar() // Window menu auto windowMenu = new wxMenu(); - windowMenu->SetOwnerDrawn(true); + set_as_owner_drawn(windowMenu); { size_t tab_offset = 0; if (m_plater) { diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 6b3e457d6a..621dc4963e 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -25,6 +25,14 @@ using Slic3r::GUI::from_u8; wxDEFINE_EVENT(wxCUSTOMEVT_TICKSCHANGED, wxEvent); wxDEFINE_EVENT(wxCUSTOMEVT_LAST_VOLUME_IS_DELETED, wxCommandEvent); +void set_as_owner_drawn(wxMenu* menu) +{ +#ifdef __WXMSW__ + // this function is implemented only for MSW (in Prusa/wxWidgets fork) + menu->SetOwnerDrawn(true); +#endif +} + std::map menuitem_bitmaps; static std::string empty_str = ""; diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp index d408f6c032..c96ab46c72 100644 --- a/src/slic3r/GUI/wxExtensions.hpp +++ b/src/slic3r/GUI/wxExtensions.hpp @@ -20,6 +20,7 @@ namespace Slic3r { enum class ModelVolumeType : int; }; +void set_as_owner_drawn(wxMenu* menu); const std::string& get_menuitem_icon_name(const int item_id); void update_menu_item_icons(wxMenuItem* item); void msw_rescale_menu(wxMenu* menu); @@ -972,10 +973,16 @@ class MenuWithSeparators : public wxMenu { public: MenuWithSeparators(const wxString& title, long style = 0) - : wxMenu(title, style) {} + : wxMenu(title, style) + { + set_as_owner_drawn(this); + } MenuWithSeparators(long style = 0) - : wxMenu(style) {} + : wxMenu(style) + { + set_as_owner_drawn(this); + } ~MenuWithSeparators() {} From a61e8335365d711be4f1cbe08e02832426cef294 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Fri, 3 May 2019 18:01:39 +0200 Subject: [PATCH 57/94] Implemented the "Support for support enforcers only" quick selection. Reduced some memory leaks due to the ConfigDef::default_value pointer. --- src/libslic3r/Config.cpp | 8 +- src/libslic3r/Config.hpp | 10 +- src/libslic3r/PrintConfig.cpp | 590 +++++++++++----------- src/libslic3r/PrintConfig.hpp | 4 +- src/libslic3r/clonable_ptr.hpp | 168 ++++++ src/slic3r/GUI/BedShapeDialog.cpp | 6 +- src/slic3r/GUI/ConfigWizard.cpp | 10 +- src/slic3r/GUI/Field.cpp | 26 +- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 6 +- src/slic3r/GUI/LambdaObjectDialog.cpp | 8 +- src/slic3r/GUI/Plater.cpp | 41 +- src/slic3r/GUI/Preferences.cpp | 18 +- src/slic3r/GUI/Tab.cpp | 48 +- xs/xsp/Config.xsp | 4 +- 14 files changed, 559 insertions(+), 388 deletions(-) create mode 100644 src/libslic3r/clonable_ptr.hpp diff --git a/src/libslic3r/Config.cpp b/src/libslic3r/Config.cpp index a7db29b8e6..7273fda019 100644 --- a/src/libslic3r/Config.cpp +++ b/src/libslic3r/Config.cpp @@ -280,7 +280,7 @@ std::ostream& ConfigDef::print_cli_help(std::ostream& out, bool show_defaults, s // right: option description std::string descr = def.tooltip; - if (show_defaults && def.default_value != nullptr && def.type != coBool + if (show_defaults && def.default_value && def.type != coBool && (def.type != coString || !def.default_value->serialize().empty())) { descr += " ("; if (!def.sidetext.empty()) { @@ -627,7 +627,7 @@ ConfigOption* DynamicConfig::optptr(const t_config_option_key &opt_key, bool cre // Let the parent decide what to do if the opt_key is not defined by this->def(). return nullptr; ConfigOption *opt = nullptr; - if (optdef->default_value != nullptr) { + if (optdef->default_value) { opt = (optdef->default_value->type() == coEnum) ? // Special case: For a DynamicConfig, convert a templated enum to a generic enum. new ConfigOptionEnumGeneric(optdef->enum_keys_map, optdef->default_value->getInt()) : @@ -783,8 +783,8 @@ void StaticConfig::set_defaults() for (const std::string &key : this->keys()) { const ConfigOptionDef *def = defs->get(key); ConfigOption *opt = this->option(key); - if (def != nullptr && opt != nullptr && def->default_value != nullptr) - opt->set(def->default_value); + if (def != nullptr && opt != nullptr && def->default_value) + opt->set(def->default_value.get()); } } } diff --git a/src/libslic3r/Config.hpp b/src/libslic3r/Config.hpp index 1e59727014..625335de62 100644 --- a/src/libslic3r/Config.hpp +++ b/src/libslic3r/Config.hpp @@ -12,6 +12,7 @@ #include #include #include "libslic3r.h" +#include "clonable_ptr.hpp" #include "Point.hpp" #include @@ -1010,7 +1011,8 @@ public: // What type? bool, int, string etc. ConfigOptionType type = coNone; // Default value of this option. The default value object is owned by ConfigDef, it is released in its destructor. - const ConfigOption *default_value = nullptr; + Slic3r::clonable_ptr default_value = nullptr; + void set_default_value(const ConfigOption* ptr) { this->default_value = Slic3r::clonable_ptr(ptr); } // Usually empty. // Special values - "i_enum_open", "f_enum_open" to provide combo box for int or float selection, @@ -1099,12 +1101,6 @@ typedef std::map t_optiondef_map; class ConfigDef { public: - ~ConfigDef() { - for (std::pair &def : this->options) - delete def.second.default_value; - this->options.clear(); - } - t_optiondef_map options; bool has(const t_config_option_key &opt_key) const { return this->options.count(opt_key) > 0; } diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 3e1fc5c3d9..f9936530e3 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -44,12 +44,12 @@ void PrintConfigDef::init_common_params() def->enum_keys_map = &ConfigOptionEnum::get_enum_values(); def->enum_values.push_back("FFF"); def->enum_values.push_back("SLA"); - def->default_value = new ConfigOptionEnum(ptFFF); + def->set_default_value(new ConfigOptionEnum(ptFFF)); def = this->add("bed_shape", coPoints); def->label = L("Bed shape"); def->mode = comAdvanced; - def->default_value = new ConfigOptionPoints{ Vec2d(0, 0), Vec2d(200, 0), Vec2d(200, 200), Vec2d(0, 200) }; + def->set_default_value(new ConfigOptionPoints{ Vec2d(0, 0), Vec2d(200, 0), Vec2d(200, 200), Vec2d(0, 200) }); def = this->add("layer_height", coFloat); def->label = L("Layer height"); @@ -58,14 +58,14 @@ void PrintConfigDef::init_common_params() "Thinner layers give better accuracy but take more time to print."); def->sidetext = L("mm"); def->min = 0; - def->default_value = new ConfigOptionFloat(0.3); + def->set_default_value(new ConfigOptionFloat(0.3)); def = this->add("max_print_height", coFloat); def->label = L("Max print height"); def->tooltip = L("Set this to the maximum height that can be reached by your extruder while printing."); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(200.0); + def->set_default_value(new ConfigOptionFloat(200.0)); def = this->add("slice_closing_radius", coFloat); def->label = L("Slice gap closing radius"); @@ -75,28 +75,28 @@ void PrintConfigDef::init_common_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(0.049); + def->set_default_value(new ConfigOptionFloat(0.049)); def = this->add("print_host", coString); def->label = L("Hostname, IP or URL"); def->tooltip = L("Slic3r can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance."); def->mode = comAdvanced; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("printhost_apikey", coString); def->label = L("API Key / Password"); def->tooltip = L("Slic3r can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication."); def->mode = comAdvanced; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("printhost_cafile", coString); def->label = "HTTPS CA File"; def->tooltip = "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."; def->mode = comAdvanced; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); } void PrintConfigDef::init_fff_params() @@ -113,7 +113,7 @@ void PrintConfigDef::init_fff_params() "This is mostly useful with Bowden extruders which suffer from oozing. " "This feature slows down both the print and the G-code generation."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("bed_temperature", coInts); def->label = L("Other layers"); @@ -122,7 +122,7 @@ void PrintConfigDef::init_fff_params() def->full_label = L("Bed temperature"); def->min = 0; def->max = 300; - def->default_value = new ConfigOptionInts { 0 }; + def->set_default_value(new ConfigOptionInts { 0 }); def = this->add("before_layer_gcode", coString); def->label = L("Before layer change G-code"); @@ -133,7 +133,7 @@ void PrintConfigDef::init_fff_params() def->full_width = true; def->height = 5; def->mode = comExpert; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("between_objects_gcode", coString); def->label = L("Between objects G-code"); @@ -142,7 +142,7 @@ void PrintConfigDef::init_fff_params() def->full_width = true; def->height = 12; def->mode = comExpert; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("bottom_solid_layers", coInt); def->label = L("Bottom"); @@ -150,7 +150,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Number of solid layers to generate on bottom surfaces."); def->full_label = L("Bottom solid layers"); def->min = 0; - def->default_value = new ConfigOptionInt(3); + def->set_default_value(new ConfigOptionInt(3)); def = this->add("bridge_acceleration", coFloat); def->label = L("Bridge"); @@ -159,7 +159,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s²"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("bridge_angle", coFloat); def->label = L("Bridging angle"); @@ -170,7 +170,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("°"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(0.); + def->set_default_value(new ConfigOptionFloat(0.)); def = this->add("bridge_fan_speed", coInts); def->label = L("Bridges fan speed"); @@ -179,7 +179,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 100; def->mode = comExpert; - def->default_value = new ConfigOptionInts { 100 }; + def->set_default_value(new ConfigOptionInts { 100 }); def = this->add("bridge_flow_ratio", coFloat); def->label = L("Bridge flow ratio"); @@ -191,7 +191,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 2; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(1); + def->set_default_value(new ConfigOptionFloat(1)); def = this->add("bridge_speed", coFloat); def->label = L("Bridges"); @@ -201,7 +201,7 @@ void PrintConfigDef::init_fff_params() def->aliases = { "bridge_feed_rate" }; def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(60); + def->set_default_value(new ConfigOptionFloat(60)); def = this->add("brim_width", coFloat); def->label = L("Brim width"); @@ -209,7 +209,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comSimple; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("clip_multipart_objects", coBool); def->label = L("Clip multi-part objects"); @@ -217,17 +217,17 @@ void PrintConfigDef::init_fff_params() "to clip the overlapping object parts one by the other " "(2nd part will be clipped by the 1st, 3rd part will be clipped by the 1st and 2nd etc)."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("colorprint_heights", coFloats); def->label = L("Colorprint height"); def->tooltip = L("Heights at which a filament change is to occur. "); - def->default_value = new ConfigOptionFloats { }; + def->set_default_value(new ConfigOptionFloats { }); def = this->add("compatible_printers", coStrings); def->label = L("Compatible printers"); def->mode = comAdvanced; - def->default_value = new ConfigOptionStrings(); + def->set_default_value(new ConfigOptionStrings()); def->cli = ConfigOptionDef::nocli; def = this->add("compatible_printers_condition", coString); @@ -236,13 +236,13 @@ void PrintConfigDef::init_fff_params() "If this expression evaluates to true, this profile is considered compatible " "with the active printer profile."); def->mode = comExpert; - def->default_value = new ConfigOptionString(); + def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; def = this->add("compatible_prints", coStrings); def->label = L("Compatible print profiles"); def->mode = comAdvanced; - def->default_value = new ConfigOptionStrings(); + def->set_default_value(new ConfigOptionStrings()); def->cli = ConfigOptionDef::nocli; def = this->add("compatible_prints_condition", coString); @@ -251,16 +251,16 @@ void PrintConfigDef::init_fff_params() "If this expression evaluates to true, this profile is considered compatible " "with the active print profile."); def->mode = comExpert; - def->default_value = new ConfigOptionString(); + def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; // The following value is to be stored into the project file (AMF, 3MF, Config ...) // and it contains a sum of "compatible_printers_condition" values over the print and filament profiles. def = this->add("compatible_printers_condition_cummulative", coStrings); - def->default_value = new ConfigOptionStrings(); + def->set_default_value(new ConfigOptionStrings()); def->cli = ConfigOptionDef::nocli; def = this->add("compatible_prints_condition_cummulative", coStrings); - def->default_value = new ConfigOptionStrings(); + def->set_default_value(new ConfigOptionStrings()); def->cli = ConfigOptionDef::nocli; def = this->add("complete_objects", coBool); @@ -270,13 +270,13 @@ void PrintConfigDef::init_fff_params() "This feature is useful to avoid the risk of ruined prints. " "Slic3r should warn and prevent you from extruder collisions, but beware."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("cooling", coBools); def->label = L("Enable auto cooling"); def->tooltip = L("This flag enables the automatic cooling logic that adjusts print speed " "and fan speed according to layer printing time."); - def->default_value = new ConfigOptionBools { true }; + def->set_default_value(new ConfigOptionBools { true }); def = this->add("cooling_tube_retraction", coFloat); def->label = L("Cooling tube position"); @@ -284,7 +284,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(91.5f); + def->set_default_value(new ConfigOptionFloat(91.5f)); def = this->add("cooling_tube_length", coFloat); def->label = L("Cooling tube length"); @@ -292,7 +292,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(5.f); + def->set_default_value(new ConfigOptionFloat(5.f)); def = this->add("default_acceleration", coFloat); def->label = L("Default"); @@ -302,20 +302,20 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s²"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("default_filament_profile", coStrings); def->label = L("Default filament profile"); def->tooltip = L("Default filament profile associated with the current printer profile. " "On selection of the current printer profile, this filament profile will be activated."); - def->default_value = new ConfigOptionStrings(); + def->set_default_value(new ConfigOptionStrings()); def->cli = ConfigOptionDef::nocli; def = this->add("default_print_profile", coString); def->label = L("Default print profile"); def->tooltip = L("Default print profile associated with the current printer profile. " "On selection of the current printer profile, this print profile will be activated."); - def->default_value = new ConfigOptionString(); + def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; def = this->add("disable_fan_first_layers", coInts); @@ -326,7 +326,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 1000; def->mode = comExpert; - def->default_value = new ConfigOptionInts { 3 }; + def->set_default_value(new ConfigOptionInts { 3 }); def = this->add("dont_support_bridges", coBool); def->label = L("Don't support bridges"); @@ -334,7 +334,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Experimental option for preventing support material from being generated " "under bridged areas."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("duplicate_distance", coFloat); def->label = L("Distance between copies"); @@ -342,7 +342,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->aliases = { "multiply_distance" }; def->min = 0; - def->default_value = new ConfigOptionFloat(6); + def->set_default_value(new ConfigOptionFloat(6)); def = this->add("elefant_foot_compensation", coFloat); def->label = L("Elephant foot compensation"); @@ -352,7 +352,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("end_gcode", coString); def->label = L("End G-code"); @@ -362,7 +362,7 @@ void PrintConfigDef::init_fff_params() def->full_width = true; def->height = 12; def->mode = comExpert; - def->default_value = new ConfigOptionString("M104 S0 ; turn off temperature\nG28 X0 ; home X axis\nM84 ; disable motors\n"); + def->set_default_value(new ConfigOptionString("M104 S0 ; turn off temperature\nG28 X0 ; home X axis\nM84 ; disable motors\n")); def = this->add("end_filament_gcode", coStrings); def->label = L("End G-code"); @@ -373,7 +373,7 @@ void PrintConfigDef::init_fff_params() def->full_width = true; def->height = 120; def->mode = comExpert; - def->default_value = new ConfigOptionStrings { "; Filament-specific end gcode \n;END gcode for filament\n" }; + def->set_default_value(new ConfigOptionStrings { "; Filament-specific end gcode \n;END gcode for filament\n" }); def = this->add("ensure_vertical_shell_thickness", coBool); def->label = L("Ensure vertical shell thickness"); @@ -381,7 +381,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Add solid infill near sloping surfaces to guarantee the vertical shell thickness " "(top+bottom solid layers)."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); auto def_top_fill_pattern = def = this->add("top_fill_pattern", coEnum); def->label = L("Top fill pattern"); @@ -401,14 +401,14 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Octagram Spiral")); // solid_fill_pattern is an obsolete equivalent to top_fill_pattern/bottom_fill_pattern. def->aliases = { "solid_fill_pattern", "external_fill_pattern" }; - def->default_value = new ConfigOptionEnum(ipRectilinear); + def->set_default_value(new ConfigOptionEnum(ipRectilinear)); def = this->add("bottom_fill_pattern", coEnum); *def = *def_top_fill_pattern; def->label = L("Bottom fill pattern"); def->tooltip = L("Fill pattern for bottom infill. This only affects the bottom external visible layer, and not its adjacent solid shells."); def->cli = "bottom-fill-pattern|external-fill-pattern|solid-fill-pattern"; - def->default_value = new ConfigOptionEnum(ipRectilinear); + def->set_default_value(new ConfigOptionEnum(ipRectilinear)); def = this->add("external_perimeter_extrusion_width", coFloatOrPercent); def->label = L("External perimeters"); @@ -418,7 +418,7 @@ void PrintConfigDef::init_fff_params() "If expressed as percentage (for example 200%), it will be computed over layer height."); def->sidetext = L("mm or % (leave 0 for default)"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(0, false); + def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); def = this->add("external_perimeter_speed", coFloatOrPercent); def->label = L("External perimeters"); @@ -430,7 +430,7 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "perimeter_speed"; def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(50, true); + def->set_default_value(new ConfigOptionFloatOrPercent(50, true)); def = this->add("external_perimeters_first", coBool); def->label = L("External perimeters first"); @@ -438,7 +438,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Print contour perimeters from the outermost one to the innermost one " "instead of the default inverse order."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("extra_perimeters", coBool); def->label = L("Extra perimeters if needed"); @@ -447,7 +447,7 @@ void PrintConfigDef::init_fff_params() "Slic3r keeps adding perimeters, until more than 70% of the loop immediately above " "is supported."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("extruder", coInt); def->gui_type = "i_enum_open"; @@ -472,7 +472,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(20); + def->set_default_value(new ConfigOptionFloat(20)); def = this->add("extruder_clearance_radius", coFloat); def->label = L("Radius"); @@ -483,14 +483,14 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(20); + def->set_default_value(new ConfigOptionFloat(20)); def = this->add("extruder_colour", coStrings); def->label = L("Extruder Color"); def->tooltip = L("This is only used in the Slic3r interface as a visual help."); def->gui_type = "color"; // Empty string means no color assigned yet. - def->default_value = new ConfigOptionStrings { "" }; + def->set_default_value(new ConfigOptionStrings { "" }); def = this->add("extruder_offset", coPoints); def->label = L("Extruder offset"); @@ -500,13 +500,13 @@ void PrintConfigDef::init_fff_params() "from the XY coordinate)."); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionPoints { Vec2d(0,0) }; + def->set_default_value(new ConfigOptionPoints { Vec2d(0,0) }); def = this->add("extrusion_axis", coString); def->label = L("Extrusion axis"); def->tooltip = L("Use this option to set the axis letter associated to your printer's extruder " "(usually E but some printers use A)."); - def->default_value = new ConfigOptionString("E"); + def->set_default_value(new ConfigOptionString("E")); def = this->add("extrusion_multiplier", coFloats); def->label = L("Extrusion multiplier"); @@ -515,7 +515,7 @@ void PrintConfigDef::init_fff_params() "Usual values are between 0.9 and 1.1. If you think you need to change this more, " "check filament diameter and your firmware E steps."); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats { 1. }; + def->set_default_value(new ConfigOptionFloats { 1. }); def = this->add("extrusion_width", coFloatOrPercent); def->label = L("Default extrusion width"); @@ -526,13 +526,13 @@ void PrintConfigDef::init_fff_params() "If expressed as percentage (for example: 230%), it will be computed over layer height."); def->sidetext = L("mm or % (leave 0 for auto)"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(0, false); + def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); def = this->add("fan_always_on", coBools); def->label = L("Keep fan always on"); def->tooltip = L("If this is enabled, fan will never be disabled and will be kept running at least " "at its minimum speed. Useful for PLA, harmful for ABS."); - def->default_value = new ConfigOptionBools { false }; + def->set_default_value(new ConfigOptionBools { false }); def = this->add("fan_below_layer_time", coInts); def->label = L("Enable fan if layer print time is below"); @@ -543,13 +543,13 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 1000; def->mode = comExpert; - def->default_value = new ConfigOptionInts { 60 }; + def->set_default_value(new ConfigOptionInts { 60 }); def = this->add("filament_colour", coStrings); def->label = L("Color"); def->tooltip = L("This is only used in the Slic3r interface as a visual help."); def->gui_type = "color"; - def->default_value = new ConfigOptionStrings { "#29B2B2" }; + def->set_default_value(new ConfigOptionStrings { "#29B2B2" }); def = this->add("filament_notes", coStrings); def->label = L("Filament notes"); @@ -558,7 +558,7 @@ void PrintConfigDef::init_fff_params() def->full_width = true; def->height = 13; def->mode = comAdvanced; - def->default_value = new ConfigOptionStrings { "" }; + def->set_default_value(new ConfigOptionStrings { "" }); def = this->add("filament_max_volumetric_speed", coFloats); def->label = L("Max volumetric speed"); @@ -568,7 +568,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm³/s"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("filament_loading_speed", coFloats); def->label = L("Loading speed"); @@ -576,7 +576,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 28. }; + def->set_default_value(new ConfigOptionFloats { 28. }); def = this->add("filament_loading_speed_start", coFloats); def->label = L("Loading speed at the start"); @@ -584,7 +584,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 3. }; + def->set_default_value(new ConfigOptionFloats { 3. }); def = this->add("filament_unloading_speed", coFloats); def->label = L("Unloading speed"); @@ -593,7 +593,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 90. }; + def->set_default_value(new ConfigOptionFloats { 90. }); def = this->add("filament_unloading_speed_start", coFloats); def->label = L("Unloading speed at the start"); @@ -601,7 +601,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 100. }; + def->set_default_value(new ConfigOptionFloats { 100. }); def = this->add("filament_toolchange_delay", coFloats); def->label = L("Delay after unloading"); @@ -611,7 +611,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("filament_cooling_moves", coInts); def->label = L("Number of cooling moves"); @@ -620,7 +620,7 @@ void PrintConfigDef::init_fff_params() def->max = 0; def->max = 20; def->mode = comExpert; - def->default_value = new ConfigOptionInts { 4 }; + def->set_default_value(new ConfigOptionInts { 4 }); def = this->add("filament_cooling_initial_speed", coFloats); def->label = L("Speed of the first cooling move"); @@ -628,7 +628,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 2.2f }; + def->set_default_value(new ConfigOptionFloats { 2.2f }); def = this->add("filament_minimal_purge_on_wipe_tower", coFloats); def->label = L("Minimal purge on wipe tower"); @@ -639,7 +639,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm³"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 15.f }; + def->set_default_value(new ConfigOptionFloats { 15.f }); def = this->add("filament_cooling_final_speed", coFloats); def->label = L("Speed of the last cooling move"); @@ -647,7 +647,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 3.4f }; + def->set_default_value(new ConfigOptionFloats { 3.4f }); def = this->add("filament_load_time", coFloats); def->label = L("Filament load time"); @@ -655,14 +655,14 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 0.0f }; + def->set_default_value(new ConfigOptionFloats { 0.0f }); def = this->add("filament_ramming_parameters", coStrings); def->label = L("Ramming parameters"); def->tooltip = L("This string is edited by RammingDialog and contains ramming specific parameters "); def->mode = comExpert; - def->default_value = new ConfigOptionStrings { "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" }; + def->set_default_value(new ConfigOptionStrings { "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" }); def = this->add("filament_unload_time", coFloats); def->label = L("Filament unload time"); @@ -670,7 +670,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 0.0f }; + def->set_default_value(new ConfigOptionFloats { 0.0f }); def = this->add("filament_diameter", coFloats); def->label = L("Diameter"); @@ -678,7 +678,7 @@ void PrintConfigDef::init_fff_params() "and do multiple measurements along the filament, then compute the average."); def->sidetext = L("mm"); def->min = 0; - def->default_value = new ConfigOptionFloats { 3. }; + def->set_default_value(new ConfigOptionFloats { 3. }); def = this->add("filament_density", coFloats); def->label = L("Density"); @@ -687,7 +687,7 @@ void PrintConfigDef::init_fff_params() "of the length to volume. Better is to calculate the volume directly through displacement."); def->sidetext = L("g/cm³"); def->min = 0; - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("filament_type", coStrings); def->label = L("Filament type"); @@ -704,23 +704,23 @@ void PrintConfigDef::init_fff_params() def->enum_values.push_back("NGEN"); def->enum_values.push_back("PVA"); def->mode = comAdvanced; - def->default_value = new ConfigOptionStrings { "PLA" }; + def->set_default_value(new ConfigOptionStrings { "PLA" }); def = this->add("filament_soluble", coBools); def->label = L("Soluble material"); def->tooltip = L("Soluble material is most likely used for a soluble support."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBools { false }; + def->set_default_value(new ConfigOptionBools { false }); def = this->add("filament_cost", coFloats); def->label = L("Cost"); def->tooltip = L("Enter your filament cost per kg here. This is only for statistical information."); def->sidetext = L("money/kg"); def->min = 0; - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("filament_settings_id", coStrings); - def->default_value = new ConfigOptionStrings { "" }; + def->set_default_value(new ConfigOptionStrings { "" }); def->cli = ConfigOptionDef::nocli; def = this->add("fill_angle", coFloat); @@ -733,7 +733,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 360; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(45); + def->set_default_value(new ConfigOptionFloat(45)); def = this->add("fill_density", coPercent); def->gui_type = "f_enum_open"; @@ -772,7 +772,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back("80%"); def->enum_labels.push_back("90%"); def->enum_labels.push_back("100%"); - def->default_value = new ConfigOptionPercent(20); + def->set_default_value(new ConfigOptionPercent(20)); def = this->add("fill_pattern", coEnum); def->label = L("Fill pattern"); @@ -805,7 +805,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Hilbert Curve")); def->enum_labels.push_back(L("Archimedean Chords")); def->enum_labels.push_back(L("Octagram Spiral")); - def->default_value = new ConfigOptionEnum(ipStars); + def->set_default_value(new ConfigOptionEnum(ipStars)); def = this->add("first_layer_acceleration", coFloat); def->label = L("First layer"); @@ -814,7 +814,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s²"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("first_layer_bed_temperature", coInts); def->label = L("First layer"); @@ -822,7 +822,7 @@ void PrintConfigDef::init_fff_params() "bed temperature control commands in the output."); def->max = 0; def->max = 300; - def->default_value = new ConfigOptionInts { 0 }; + def->set_default_value(new ConfigOptionInts { 0 }); def = this->add("first_layer_extrusion_width", coFloatOrPercent); def->label = L("First layer"); @@ -834,7 +834,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm or % (leave 0 for default)"); def->ratio_over = "first_layer_height"; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(200, true); + def->set_default_value(new ConfigOptionFloatOrPercent(200, true)); def = this->add("first_layer_height", coFloatOrPercent); def->label = L("First layer height"); @@ -845,7 +845,7 @@ void PrintConfigDef::init_fff_params() "over the default layer height."); def->sidetext = L("mm or %"); def->ratio_over = "layer_height"; - def->default_value = new ConfigOptionFloatOrPercent(0.35, false); + def->set_default_value(new ConfigOptionFloatOrPercent(0.35, false)); def = this->add("first_layer_speed", coFloatOrPercent); def->label = L("First layer speed"); @@ -855,7 +855,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s or %"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(30, false); + def->set_default_value(new ConfigOptionFloatOrPercent(30, false)); def = this->add("first_layer_temperature", coInts); def->label = L("First layer"); @@ -863,7 +863,7 @@ void PrintConfigDef::init_fff_params() "during print, set this to zero to disable temperature control commands in the output file."); def->min = 0; def->max = max_temp; - def->default_value = new ConfigOptionInts { 200 }; + def->set_default_value(new ConfigOptionInts { 200 }); def = this->add("gap_fill_speed", coFloat); def->label = L("Gap fill"); @@ -873,7 +873,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(20); + def->set_default_value(new ConfigOptionFloat(20)); def = this->add("gcode_comments", coBool); def->label = L("Verbose G-code"); @@ -881,7 +881,7 @@ void PrintConfigDef::init_fff_params() "If you print from SD card, the additional weight of the file could make your firmware " "slow down."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(0); + def->set_default_value(new ConfigOptionBool(0)); def = this->add("gcode_flavor", coEnum); def->label = L("G-code flavor"); @@ -910,7 +910,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back("Smoothie"); def->enum_labels.push_back(L("No extrusion")); def->mode = comExpert; - def->default_value = new ConfigOptionEnum(gcfRepRap); + def->set_default_value(new ConfigOptionEnum(gcfRepRap)); def = this->add("gcode_label_objects", coBool); def->label = "Label objects"; @@ -918,7 +918,7 @@ void PrintConfigDef::init_fff_params() " 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."; def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(0); + def->set_default_value(new ConfigOptionBool(0)); def = this->add("high_current_on_filament_swap", coBool); def->label = L("High extruder current on filament swap"); @@ -926,7 +926,7 @@ void PrintConfigDef::init_fff_params() " sequence to allow for rapid ramming feed rates and to overcome resistance when loading" " a filament with an ugly shaped tip."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(0); + def->set_default_value(new ConfigOptionBool(0)); def = this->add("infill_acceleration", coFloat); def->label = L("Infill"); @@ -935,7 +935,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s²"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("infill_every_layers", coInt); def->label = L("Combine infill every"); @@ -946,7 +946,7 @@ void PrintConfigDef::init_fff_params() def->full_label = L("Combine infill every n layers"); def->min = 1; def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(1); + def->set_default_value(new ConfigOptionInt(1)); def = this->add("infill_extruder", coInt); def->label = L("Infill extruder"); @@ -954,7 +954,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("The extruder to use when printing infill."); def->min = 1; def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(1); + def->set_default_value(new ConfigOptionInt(1)); def = this->add("infill_extrusion_width", coFloatOrPercent); def->label = L("Infill"); @@ -965,13 +965,13 @@ void PrintConfigDef::init_fff_params() "If expressed as percentage (for example 90%) it will be computed over layer height."); def->sidetext = L("mm or % (leave 0 for default)"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(0, false); + def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); def = this->add("infill_first", coBool); def->label = L("Infill before perimeters"); def->tooltip = L("This option will switch the print order of perimeters and infill, making the latter first."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("infill_only_where_needed", coBool); def->label = L("Only infill where needed"); @@ -980,7 +980,7 @@ void PrintConfigDef::init_fff_params() "(it will act as internal support material). If enabled, slows down the G-code generation " "due to the multiple checks involved."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("infill_overlap", coFloatOrPercent); def->label = L("Infill/perimeters overlap"); @@ -991,7 +991,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm or %"); def->ratio_over = "perimeter_extrusion_width"; def->mode = comExpert; - def->default_value = new ConfigOptionFloatOrPercent(25, true); + def->set_default_value(new ConfigOptionFloatOrPercent(25, true)); def = this->add("infill_speed", coFloat); def->label = L("Infill"); @@ -1001,20 +1001,20 @@ void PrintConfigDef::init_fff_params() def->aliases = { "print_feed_rate", "infill_feed_rate" }; def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(80); + def->set_default_value(new ConfigOptionFloat(80)); def = this->add("inherits", coString); def->label = L("Inherits profile"); def->tooltip = L("Name of the profile, from which this profile inherits."); def->full_width = true; def->height = 5; - def->default_value = new ConfigOptionString(); + def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; // The following value is to be stored into the project file (AMF, 3MF, Config ...) // and it contains a sum of "inherits" values over the print and filament profiles. def = this->add("inherits_cummulative", coStrings); - def->default_value = new ConfigOptionStrings(); + def->set_default_value(new ConfigOptionStrings()); def->cli = ConfigOptionDef::nocli; def = this->add("interface_shells", coBool); @@ -1024,7 +1024,7 @@ void PrintConfigDef::init_fff_params() "support material."); def->category = L("Layers and Perimeters"); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("layer_gcode", coString); def->label = L("After layer change G-code"); @@ -1036,7 +1036,7 @@ void PrintConfigDef::init_fff_params() def->full_width = true; def->height = 5; def->mode = comExpert; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("remaining_times", coBool); def->label = L("Supports remaining times"); @@ -1045,13 +1045,13 @@ void PrintConfigDef::init_fff_params() " As of now only the Prusa i3 MK3 firmware recognizes M73." " Also the i3 MK3 firmware supports M73 Qxx Sxx for the silent mode."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("silent_mode", coBool); def->label = L("Supports silent mode"); def->tooltip = L("Set silent mode for the G-code flavor"); def->mode = comExpert; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); const int machine_limits_opt_width = 7; { @@ -1079,7 +1079,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->width = machine_limits_opt_width; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats(axis.max_feedrate); + def->set_default_value(new ConfigOptionFloats(axis.max_feedrate)); // Add the machine acceleration limits for XYZE axes (M201) def = this->add("machine_max_acceleration_" + axis.name, coFloats); def->full_label = (boost::format(L("Maximum acceleration %1%")) % axis_upper).str(); @@ -1089,7 +1089,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->width = machine_limits_opt_width; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats(axis.max_acceleration); + def->set_default_value(new ConfigOptionFloats(axis.max_acceleration)); // Add the machine jerk limits for XYZE axes (M205) def = this->add("machine_max_jerk_" + axis.name, coFloats); def->full_label = (boost::format(L("Maximum jerk %1%")) % axis_upper).str(); @@ -1099,7 +1099,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->width = machine_limits_opt_width; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats(axis.max_jerk); + def->set_default_value(new ConfigOptionFloats(axis.max_jerk)); } } @@ -1112,7 +1112,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->width = machine_limits_opt_width; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats{ 0., 0. }; + def->set_default_value(new ConfigOptionFloats{ 0., 0. }); // M205 T... [mm/sec] def = this->add("machine_min_travel_rate", coFloats); @@ -1123,7 +1123,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->width = machine_limits_opt_width; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats{ 0., 0. }; + def->set_default_value(new ConfigOptionFloats{ 0., 0. }); // M204 S... [mm/sec^2] def = this->add("machine_max_acceleration_extruding", coFloats); @@ -1134,7 +1134,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->width = machine_limits_opt_width; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats{ 1500., 1250. }; + def->set_default_value(new ConfigOptionFloats{ 1500., 1250. }); // M204 T... [mm/sec^2] def = this->add("machine_max_acceleration_retracting", coFloats); @@ -1145,7 +1145,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->width = machine_limits_opt_width; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats{ 1500., 1250. }; + def->set_default_value(new ConfigOptionFloats{ 1500., 1250. }); def = this->add("max_fan_speed", coInts); def->label = L("Max"); @@ -1154,7 +1154,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 100; def->mode = comExpert; - def->default_value = new ConfigOptionInts { 100 }; + def->set_default_value(new ConfigOptionInts { 100 }); def = this->add("max_layer_height", coFloats); def->label = L("Max"); @@ -1165,7 +1165,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("max_print_speed", coFloat); def->label = L("Max print speed"); @@ -1175,7 +1175,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s"); def->min = 1; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(80); + def->set_default_value(new ConfigOptionFloat(80)); def = this->add("max_volumetric_speed", coFloat); def->label = L("Max volumetric speed"); @@ -1184,7 +1184,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm³/s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); #ifdef HAS_PRESSURE_EQUALIZER def = this->add("max_volumetric_extrusion_rate_slope_positive", coFloat); @@ -1196,7 +1196,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm³/s²"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("max_volumetric_extrusion_rate_slope_negative", coFloat); def->label = L("Max volumetric slope negative"); @@ -1207,7 +1207,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm³/s²"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); #endif /* HAS_PRESSURE_EQUALIZER */ def = this->add("min_fan_speed", coInts); @@ -1217,7 +1217,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 100; def->mode = comExpert; - def->default_value = new ConfigOptionInts { 35 }; + def->set_default_value(new ConfigOptionInts { 35 }); def = this->add("min_layer_height", coFloats); def->label = L("Min"); @@ -1226,7 +1226,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats { 0.07 }; + def->set_default_value(new ConfigOptionFloats { 0.07 }); def = this->add("min_print_speed", coFloats); def->label = L("Min print speed"); @@ -1234,7 +1234,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 10. }; + def->set_default_value(new ConfigOptionFloats { 10. }); def = this->add("min_skirt_length", coFloat); def->label = L("Minimal filament extrusion length"); @@ -1244,7 +1244,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("notes", coString); def->label = L("Configuration notes"); @@ -1254,13 +1254,13 @@ void PrintConfigDef::init_fff_params() def->full_width = true; def->height = 13; def->mode = comAdvanced; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("nozzle_diameter", coFloats); def->label = L("Nozzle diameter"); def->tooltip = L("This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)"); def->sidetext = L("mm"); - def->default_value = new ConfigOptionFloats { 0.5 }; + def->set_default_value(new ConfigOptionFloats { 0.5 }); def = this->add("host_type", coEnum); def->label = L("Host Type"); @@ -1272,14 +1272,14 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back("OctoPrint"); def->enum_labels.push_back("Duet"); def->mode = comAdvanced; - def->default_value = new ConfigOptionEnum(htOctoPrint); + def->set_default_value(new ConfigOptionEnum(htOctoPrint)); def = this->add("only_retract_when_crossing_perimeters", coBool); def->label = L("Only retract when crossing perimeters"); def->tooltip = L("Disables retraction when the travel path does not exceed the upper layer's perimeters " "(and thus any ooze will be probably invisible)."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("ooze_prevention", coBool); def->label = L("Enable"); @@ -1287,7 +1287,7 @@ void PrintConfigDef::init_fff_params() "It will enable a tall skirt automatically and move extruders outside such " "skirt when changing temperatures."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("output_filename_format", coString); def->label = L("Output filename format"); @@ -1297,7 +1297,7 @@ void PrintConfigDef::init_fff_params() "[input_filename_base]."); def->full_width = true; def->mode = comExpert; - def->default_value = new ConfigOptionString("[input_filename_base]"); + def->set_default_value(new ConfigOptionString("[input_filename_base]")); def = this->add("overhangs", coBool); def->label = L("Detect bridging perimeters"); @@ -1305,7 +1305,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Experimental option to adjust flow for overhangs (bridge flow will be used), " "to apply bridge speed to them and enable fan."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("parking_pos_retraction", coFloat); def->label = L("Filament parking position"); @@ -1314,7 +1314,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(92.f); + def->set_default_value(new ConfigOptionFloat(92.f)); def = this->add("extra_loading_move", coFloat); def->label = L("Extra loading distance"); @@ -1323,7 +1323,7 @@ void PrintConfigDef::init_fff_params() " if negative, the loading move is shorter than unloading. "); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(-2.f); + def->set_default_value(new ConfigOptionFloat(-2.f)); def = this->add("perimeter_acceleration", coFloat); def->label = L("Perimeters"); @@ -1332,7 +1332,7 @@ void PrintConfigDef::init_fff_params() "Set zero to disable acceleration control for perimeters."); def->sidetext = L("mm/s²"); def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("perimeter_extruder", coInt); def->label = L("Perimeter extruder"); @@ -1341,7 +1341,7 @@ void PrintConfigDef::init_fff_params() def->aliases = { "perimeters_extruder" }; def->min = 1; def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(1); + def->set_default_value(new ConfigOptionInt(1)); def = this->add("perimeter_extrusion_width", coFloatOrPercent); def->label = L("Perimeters"); @@ -1353,7 +1353,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm or % (leave 0 for default)"); def->aliases = { "perimeters_extrusion_width" }; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(0, false); + def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); def = this->add("perimeter_speed", coFloat); def->label = L("Perimeters"); @@ -1363,7 +1363,7 @@ void PrintConfigDef::init_fff_params() def->aliases = { "perimeter_feed_rate" }; def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(60); + def->set_default_value(new ConfigOptionFloat(60)); def = this->add("perimeters", coInt); def->label = L("Perimeters"); @@ -1376,7 +1376,7 @@ void PrintConfigDef::init_fff_params() def->aliases = { "perimeter_offsets" }; def->min = 0; def->max = 10000; - def->default_value = new ConfigOptionInt(3); + def->set_default_value(new ConfigOptionInt(3)); def = this->add("post_process", coStrings); def->label = L("Post-processing scripts"); @@ -1389,12 +1389,12 @@ void PrintConfigDef::init_fff_params() def->full_width = true; def->height = 6; def->mode = comExpert; - def->default_value = new ConfigOptionStrings(); + 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->default_value = new ConfigOptionString(); + def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; def = this->add("printer_notes", coString); @@ -1404,26 +1404,26 @@ void PrintConfigDef::init_fff_params() def->full_width = true; def->height = 13; def->mode = comAdvanced; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("printer_vendor", coString); def->label = L("Printer vendor"); def->tooltip = L("Name of the printer vendor."); - def->default_value = new ConfigOptionString(); + def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; def = this->add("printer_variant", coString); 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->default_value = new ConfigOptionString(); + def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; def = this->add("print_settings_id", coString); - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def->cli = ConfigOptionDef::nocli; def = this->add("printer_settings_id", coString); - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def->cli = ConfigOptionDef::nocli; def = this->add("raft_layers", coInt); @@ -1434,7 +1434,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("layers"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(0); + def->set_default_value(new ConfigOptionInt(0)); def = this->add("resolution", coFloat); def->label = L("Resolution"); @@ -1445,14 +1445,14 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("retract_before_travel", coFloats); def->label = L("Minimum travel after retraction"); def->tooltip = L("Retraction is not triggered when travel moves are shorter than this length."); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats { 2. }; + def->set_default_value(new ConfigOptionFloats { 2. }); def = this->add("retract_before_wipe", coPercents); def->label = L("Retract amount before wipe"); @@ -1460,13 +1460,13 @@ void PrintConfigDef::init_fff_params() "before doing the wipe movement."); def->sidetext = L("%"); def->mode = comAdvanced; - def->default_value = new ConfigOptionPercents { 0. }; + def->set_default_value(new ConfigOptionPercents { 0. }); def = this->add("retract_layer_change", coBools); def->label = L("Retract on layer change"); def->tooltip = L("This flag enforces a retraction whenever a Z move is done."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBools { false }; + def->set_default_value(new ConfigOptionBools { false }); def = this->add("retract_length", coFloats); def->label = L("Length"); @@ -1474,7 +1474,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("When retraction is triggered, filament is pulled back by the specified amount " "(the length is measured on raw filament, before it enters the extruder)."); def->sidetext = L("mm (zero to disable)"); - def->default_value = new ConfigOptionFloats { 2. }; + def->set_default_value(new ConfigOptionFloats { 2. }); def = this->add("retract_length_toolchange", coFloats); def->label = L("Length"); @@ -1484,7 +1484,7 @@ void PrintConfigDef::init_fff_params() "the extruder)."); def->sidetext = L("mm (zero to disable)"); def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 10. }; + def->set_default_value(new ConfigOptionFloats { 10. }); def = this->add("retract_lift", coFloats); def->label = L("Lift Z"); @@ -1492,7 +1492,7 @@ void PrintConfigDef::init_fff_params() "is triggered. When using multiple extruders, only the setting for the first extruder " "will be considered."); def->sidetext = L("mm"); - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("retract_lift_above", coFloats); def->label = L("Above Z"); @@ -1501,7 +1501,7 @@ void PrintConfigDef::init_fff_params() "absolute Z. You can tune this setting for skipping lift on the first layers."); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("retract_lift_below", coFloats); def->label = L("Below Z"); @@ -1511,7 +1511,7 @@ void PrintConfigDef::init_fff_params() "to the first layers."); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("retract_restart_extra", coFloats); def->label = L("Extra length on restart"); @@ -1519,7 +1519,7 @@ void PrintConfigDef::init_fff_params() "this additional amount of filament. This setting is rarely needed."); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("retract_restart_extra_toolchange", coFloats); def->label = L("Extra length on restart"); @@ -1527,7 +1527,7 @@ void PrintConfigDef::init_fff_params() "this additional amount of filament."); def->sidetext = L("mm"); def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("retract_speed", coFloats); def->label = L("Retraction Speed"); @@ -1535,7 +1535,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("The speed for retractions (it only applies to the extruder motor)."); def->sidetext = L("mm/s"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats { 40. }; + def->set_default_value(new ConfigOptionFloats { 40. }); def = this->add("deretract_speed", coFloats); def->label = L("Deretraction Speed"); @@ -1544,7 +1544,7 @@ void PrintConfigDef::init_fff_params() "(it only applies to the extruder motor). If left to zero, the retraction speed is used."); def->sidetext = L("mm/s"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("seam_position", coEnum); def->label = L("Seam position"); @@ -1560,7 +1560,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Aligned")); def->enum_labels.push_back(L("Rear")); def->mode = comSimple; - def->default_value = new ConfigOptionEnum(spAligned); + def->set_default_value(new ConfigOptionEnum(spAligned)); #if 0 def = this->add("seam_preferred_direction", coFloat); @@ -1571,7 +1571,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Seam preferred direction"); def->min = 0; def->max = 360; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("seam_preferred_direction_jitter", coFloat); // def->gui_type = "slider"; @@ -1581,7 +1581,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Preferred direction of the seam - jitter"); def->min = 0; def->max = 360; - def->default_value = new ConfigOptionFloat(30); + def->set_default_value(new ConfigOptionFloat(30)); #endif def = this->add("serial_port", coString); @@ -1590,7 +1590,7 @@ void PrintConfigDef::init_fff_params() def->full_label = L("Serial port"); def->tooltip = L("USB/serial port for printer connection."); def->width = 20; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("serial_speed", coInt); def->gui_type = "i_enum_open"; @@ -1602,7 +1602,7 @@ void PrintConfigDef::init_fff_params() def->enum_values.push_back("115200"); def->enum_values.push_back("250000"); def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(250000); + def->set_default_value(new ConfigOptionInt(250000)); def = this->add("skirt_distance", coFloat); def->label = L("Distance from object"); @@ -1610,7 +1610,7 @@ void PrintConfigDef::init_fff_params() "to the object(s) and get a brim for better adhesion."); def->sidetext = L("mm"); def->min = 0; - def->default_value = new ConfigOptionFloat(6); + def->set_default_value(new ConfigOptionFloat(6)); def = this->add("skirt_height", coInt); def->label = L("Skirt height"); @@ -1618,7 +1618,7 @@ void PrintConfigDef::init_fff_params() "as a shield against drafts."); def->sidetext = L("layers"); def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(1); + def->set_default_value(new ConfigOptionInt(1)); def = this->add("skirts", coInt); def->label = L("Loops (minimum)"); @@ -1628,7 +1628,7 @@ void PrintConfigDef::init_fff_params() "to disable skirt completely."); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(1); + def->set_default_value(new ConfigOptionInt(1)); def = this->add("slowdown_below_layer_time", coInts); def->label = L("Slow down if layer print time is below"); @@ -1639,7 +1639,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 1000; def->mode = comExpert; - def->default_value = new ConfigOptionInts { 5 }; + def->set_default_value(new ConfigOptionInts { 5 }); def = this->add("small_perimeter_speed", coFloatOrPercent); def->label = L("Small perimeters"); @@ -1651,7 +1651,7 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "perimeter_speed"; def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(15, false); + def->set_default_value(new ConfigOptionFloatOrPercent(15, false)); def = this->add("solid_infill_below_area", coFloat); def->label = L("Solid infill threshold area"); @@ -1660,7 +1660,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm²"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(70); + def->set_default_value(new ConfigOptionFloat(70)); def = this->add("solid_infill_extruder", coInt); def->label = L("Solid infill extruder"); @@ -1668,7 +1668,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("The extruder to use when printing solid infill."); def->min = 1; def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(1); + def->set_default_value(new ConfigOptionInt(1)); def = this->add("solid_infill_every_layers", coInt); def->label = L("Solid infill every"); @@ -1680,7 +1680,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("layers"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionInt(0); + def->set_default_value(new ConfigOptionInt(0)); def = this->add("solid_infill_extrusion_width", coFloatOrPercent); def->label = L("Solid infill"); @@ -1690,7 +1690,7 @@ void PrintConfigDef::init_fff_params() "If expressed as percentage (for example 90%) it will be computed over layer height."); def->sidetext = L("mm or % (leave 0 for default)"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(0, false); + def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); def = this->add("solid_infill_speed", coFloatOrPercent); def->label = L("Solid infill"); @@ -1703,7 +1703,7 @@ void PrintConfigDef::init_fff_params() def->aliases = { "solid_infill_feed_rate" }; def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(20, false); + def->set_default_value(new ConfigOptionFloatOrPercent(20, false)); def = this->add("solid_layers", coInt); def->label = L("Solid layers"); @@ -1719,7 +1719,7 @@ void PrintConfigDef::init_fff_params() "no infill, no top solid layers and no support material. You can still set " "any number of bottom solid layers as well as skirt/brim loops. " "It won't work when printing more than an object."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("standby_temperature_delta", coInt); def->label = L("Temperature variation"); @@ -1729,7 +1729,7 @@ void PrintConfigDef::init_fff_params() def->min = -max_temp; def->max = max_temp; def->mode = comExpert; - def->default_value = new ConfigOptionInt(-5); + def->set_default_value(new ConfigOptionInt(-5)); def = this->add("start_gcode", coString); def->label = L("Start G-code"); @@ -1744,7 +1744,7 @@ void PrintConfigDef::init_fff_params() def->full_width = true; def->height = 12; def->mode = comExpert; - def->default_value = new ConfigOptionString("G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle\n"); + def->set_default_value(new ConfigOptionString("G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle\n")); def = this->add("start_filament_gcode", coStrings); def->label = L("Start G-code"); @@ -1760,25 +1760,25 @@ void PrintConfigDef::init_fff_params() def->full_width = true; def->height = 12; def->mode = comExpert; - def->default_value = new ConfigOptionStrings { "; Filament gcode\n" }; + def->set_default_value(new ConfigOptionStrings { "; Filament gcode\n" }); def = this->add("single_extruder_multi_material", coBool); def->label = L("Single Extruder Multi Material"); def->tooltip = L("The printer multiplexes filaments into a single hot end."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("single_extruder_multi_material_priming", coBool); def->label = L("Prime all printing extruders"); def->tooltip = L("If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("support_material", coBool); def->label = L("Generate support material"); def->category = L("Support material"); def->tooltip = L("Enable support material generation."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("support_material_auto", coBool); def->label = L("Auto generated supports"); @@ -1786,7 +1786,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("If checked, supports will be generated automatically based on the overhang threshold value."\ " If unchecked, supports will be generated inside the \"Support Enforcer\" volumes only."); def->mode = comSimple; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("support_material_xy_spacing", coFloatOrPercent); def->label = L("XY separation between an object and its support"); @@ -1798,7 +1798,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->mode = comAdvanced; // Default is half the external perimeter width. - def->default_value = new ConfigOptionFloatOrPercent(50, true); + def->set_default_value(new ConfigOptionFloatOrPercent(50, true)); def = this->add("support_material_angle", coFloat); def->label = L("Pattern angle"); @@ -1808,14 +1808,14 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 359; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("support_material_buildplate_only", coBool); def->label = L("Support on build plate only"); def->category = L("Support material"); def->tooltip = L("Only create support if it lies on a build plate. Don't create support on a print."); def->mode = comSimple; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("support_material_contact_distance", coFloat); def->gui_type = "f_enum_open"; @@ -1831,7 +1831,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back((boost::format("0 (%1%)") % L("soluble")).str()); def->enum_labels.push_back((boost::format("0.2 (%1%)") % L("detachable")).str()); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(0.2); + def->set_default_value(new ConfigOptionFloat(0.2)); def = this->add("support_material_enforce_layers", coInt); def->label = L("Enforce support for the first"); @@ -1844,7 +1844,7 @@ void PrintConfigDef::init_fff_params() def->full_label = L("Enforce support for the first n layers"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionInt(0); + def->set_default_value(new ConfigOptionInt(0)); def = this->add("support_material_extruder", coInt); def->label = L("Support material/raft/skirt extruder"); @@ -1853,7 +1853,7 @@ void PrintConfigDef::init_fff_params() "(1+, 0 to use the current extruder to minimize tool changes)."); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(1); + def->set_default_value(new ConfigOptionInt(1)); def = this->add("support_material_extrusion_width", coFloatOrPercent); def->label = L("Support material"); @@ -1863,14 +1863,14 @@ void PrintConfigDef::init_fff_params() "If expressed as percentage (for example 90%) it will be computed over layer height."); def->sidetext = L("mm or % (leave 0 for default)"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(0, false); + def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); def = this->add("support_material_interface_contact_loops", coBool); def->label = L("Interface loops"); def->category = L("Support material"); def->tooltip = L("Cover the top contact layer of the supports with loops. Disabled by default."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("support_material_interface_extruder", coInt); def->label = L("Support material/raft interface extruder"); @@ -1879,7 +1879,7 @@ void PrintConfigDef::init_fff_params() "(1+, 0 to use the current extruder to minimize tool changes). This affects raft too."); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(1); + def->set_default_value(new ConfigOptionInt(1)); def = this->add("support_material_interface_layers", coInt); def->label = L("Interface layers"); @@ -1888,7 +1888,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("layers"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(3); + def->set_default_value(new ConfigOptionInt(3)); def = this->add("support_material_interface_spacing", coFloat); def->label = L("Interface pattern spacing"); @@ -1897,7 +1897,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("support_material_interface_speed", coFloatOrPercent); def->label = L("Support material interface"); @@ -1908,7 +1908,7 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "support_material_speed"; def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(100, true); + def->set_default_value(new ConfigOptionFloatOrPercent(100, true)); def = this->add("support_material_pattern", coEnum); def->label = L("Pattern"); @@ -1922,7 +1922,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Rectilinear grid")); def->enum_labels.push_back(L("Honeycomb")); def->mode = comAdvanced; - def->default_value = new ConfigOptionEnum(smpRectilinear); + def->set_default_value(new ConfigOptionEnum(smpRectilinear)); def = this->add("support_material_spacing", coFloat); def->label = L("Pattern spacing"); @@ -1931,7 +1931,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(2.5); + def->set_default_value(new ConfigOptionFloat(2.5)); def = this->add("support_material_speed", coFloat); def->label = L("Support material"); @@ -1940,7 +1940,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(60); + def->set_default_value(new ConfigOptionFloat(60)); def = this->add("support_material_synchronize_layers", coBool); def->label = L("Synchronize with object layers"); @@ -1948,7 +1948,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Synchronize support layers with the object print layers. This is useful " "with multi-material printers, where the extruder switch is expensive."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("support_material_threshold", coInt); def->label = L("Overhang threshold"); @@ -1962,7 +1962,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 90; def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(0); + def->set_default_value(new ConfigOptionInt(0)); def = this->add("support_material_with_sheath", coBool); def->label = L("With sheath around the support"); @@ -1970,7 +1970,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Add a sheath (a single perimeter line) around the base support. This makes " "the support more reliable, but also more difficult to remove."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("temperature", coInts); def->label = L("Other layers"); @@ -1979,7 +1979,7 @@ void PrintConfigDef::init_fff_params() def->full_label = L("Temperature"); def->min = 0; def->max = max_temp; - def->default_value = new ConfigOptionInts { 200 }; + def->set_default_value(new ConfigOptionInts { 200 }); def = this->add("thin_walls", coBool); def->label = L("Detect thin walls"); @@ -1987,7 +1987,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Detect single-width walls (parts where two extrusions don't fit and we need " "to collapse them into a single trace)."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("threads", coInt); def->label = L("Threads"); @@ -1997,7 +1997,7 @@ void PrintConfigDef::init_fff_params() def->min = 1; { int threads = (unsigned int)boost::thread::hardware_concurrency(); - def->default_value = new ConfigOptionInt(threads > 0 ? threads : 2); + def->set_default_value(new ConfigOptionInt(threads > 0 ? threads : 2)); def->cli == ConfigOptionDef::nocli; } @@ -2010,7 +2010,7 @@ void PrintConfigDef::init_fff_params() def->full_width = true; def->height = 5; def->mode = comExpert; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("top_infill_extrusion_width", coFloatOrPercent); def->label = L("Top solid infill"); @@ -2021,7 +2021,7 @@ void PrintConfigDef::init_fff_params() "If expressed as percentage (for example 90%) it will be computed over layer height."); def->sidetext = L("mm or % (leave 0 for default)"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(0, false); + def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); def = this->add("top_solid_infill_speed", coFloatOrPercent); def->label = L("Top solid infill"); @@ -2035,7 +2035,7 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "solid_infill_speed"; def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(15, false); + def->set_default_value(new ConfigOptionFloatOrPercent(15, false)); def = this->add("top_solid_layers", coInt); def->label = L("Top"); @@ -2043,7 +2043,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Number of solid layers to generate on top surfaces."); def->full_label = L("Top solid layers"); def->min = 0; - def->default_value = new ConfigOptionInt(3); + def->set_default_value(new ConfigOptionInt(3)); def = this->add("travel_speed", coFloat); def->label = L("Travel"); @@ -2052,21 +2052,21 @@ void PrintConfigDef::init_fff_params() def->aliases = { "travel_feed_rate" }; def->min = 1; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(130); + def->set_default_value(new ConfigOptionFloat(130)); def = this->add("use_firmware_retraction", coBool); def->label = L("Use firmware retraction"); def->tooltip = L("This experimental setting uses G10 and G11 commands to have the firmware " "handle the retraction. This is only supported in recent Marlin."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("use_relative_e_distances", coBool); def->label = L("Use relative E distances"); def->tooltip = L("If your firmware requires relative E values, check this, " "otherwise leave it unchecked. Most firmwares use absolute values."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("use_volumetric_e", coBool); def->label = L("Use volumetric E"); @@ -2077,73 +2077,73 @@ void PrintConfigDef::init_fff_params() "diameter associated to the filament selected in Slic3r. This is only supported " "in recent Marlin."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("variable_layer_height", coBool); def->label = L("Enable variable layer height feature"); def->tooltip = L("Some printers or printer setups may have difficulties printing " "with a variable layer height. Enabled by default."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("wipe", coBools); def->label = L("Wipe while retracting"); def->tooltip = L("This flag will move the nozzle while retracting to minimize the possible blob " "on leaky extruders."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBools { false }; + def->set_default_value(new ConfigOptionBools { false }); def = this->add("wipe_tower", coBool); def->label = L("Enable"); def->tooltip = L("Multi material printers may need to prime or purge extruders on tool changes. " "Extrude the excess material into the wipe tower."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("wiping_volumes_extruders", coFloats); def->label = L("Purging volumes - load/unload volumes"); def->tooltip = L("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. "); - def->default_value = new ConfigOptionFloats { 70.f, 70.f, 70.f, 70.f, 70.f, 70.f, 70.f, 70.f, 70.f, 70.f }; + def->set_default_value(new ConfigOptionFloats { 70.f, 70.f, 70.f, 70.f, 70.f, 70.f, 70.f, 70.f, 70.f, 70.f }); def = this->add("wiping_volumes_matrix", coFloats); def->label = L("Purging volumes - matrix"); def->tooltip = L("This matrix describes volumes (in cubic milimetres) required to purge the" " new filament on the wipe tower for any given pair of tools. "); - def->default_value = new ConfigOptionFloats { 0.f, 140.f, 140.f, 140.f, 140.f, - 140.f, 0.f, 140.f, 140.f, 140.f, - 140.f, 140.f, 0.f, 140.f, 140.f, - 140.f, 140.f, 140.f, 0.f, 140.f, - 140.f, 140.f, 140.f, 140.f, 0.f }; + def->set_default_value(new ConfigOptionFloats { 0.f, 140.f, 140.f, 140.f, 140.f, + 140.f, 0.f, 140.f, 140.f, 140.f, + 140.f, 140.f, 0.f, 140.f, 140.f, + 140.f, 140.f, 140.f, 0.f, 140.f, + 140.f, 140.f, 140.f, 140.f, 0.f }); def = this->add("wipe_tower_x", coFloat); def->label = L("Position X"); def->tooltip = L("X coordinate of the left front corner of a wipe tower"); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(180.); + def->set_default_value(new ConfigOptionFloat(180.)); def = this->add("wipe_tower_y", coFloat); def->label = L("Position Y"); def->tooltip = L("Y coordinate of the left front corner of a wipe tower"); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(140.); + def->set_default_value(new ConfigOptionFloat(140.)); def = this->add("wipe_tower_width", coFloat); def->label = L("Width"); def->tooltip = L("Width of a wipe tower"); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(60.); + def->set_default_value(new ConfigOptionFloat(60.)); def = this->add("wipe_tower_rotation_angle", coFloat); def->label = L("Wipe tower rotation angle"); def->tooltip = L("Wipe tower rotation angle with respect to x-axis "); def->sidetext = L("degrees"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(0.); + def->set_default_value(new ConfigOptionFloat(0.)); def = this->add("wipe_into_infill", coBool); def->category = L("Extruders"); @@ -2151,7 +2151,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Purging after toolchange will done inside this object's infills. " "This lowers the amount of waste but may result in longer print time " " due to additional travel moves."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("wipe_into_objects", coBool); def->category = L("Extruders"); @@ -2159,14 +2159,14 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Object will be used to purge the nozzle after a toolchange to save material " "that would otherwise end up in the wipe tower and decrease print time. " "Colours of the objects will be mixed as a result."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("wipe_tower_bridging", coFloat); def->label = L("Maximal bridging distance"); def->tooltip = L("Maximal distance between supports on sparse infill sections. "); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(10.); + def->set_default_value(new ConfigOptionFloat(10.)); def = this->add("xy_size_compensation", coFloat); def->label = L("XY Size Compensation"); @@ -2176,7 +2176,7 @@ void PrintConfigDef::init_fff_params() "for fine-tuning hole sizes."); def->sidetext = L("mm"); def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("z_offset", coFloat); def->label = L("Z offset"); @@ -2186,7 +2186,7 @@ void PrintConfigDef::init_fff_params() "from the print bed, set this to -0.3 (or fix your endstop)."); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); } void PrintConfigDef::init_sla_params() @@ -2200,26 +2200,26 @@ void PrintConfigDef::init_sla_params() def->label = L("Display width"); def->tooltip = L("Width of the display"); def->min = 1; - def->default_value = new ConfigOptionFloat(120.); + def->set_default_value(new ConfigOptionFloat(120.)); def = this->add("display_height", coFloat); def->label = L("Display height"); def->tooltip = L("Height of the display"); def->min = 1; - def->default_value = new ConfigOptionFloat(68.); + def->set_default_value(new ConfigOptionFloat(68.)); def = this->add("display_pixels_x", coInt); def->full_label = L("Number of pixels in"); def->label = ("X"); def->tooltip = L("Number of pixels in X"); def->min = 100; - def->default_value = new ConfigOptionInt(2560); + def->set_default_value(new ConfigOptionInt(2560)); def = this->add("display_pixels_y", coInt); def->label = ("Y"); def->tooltip = L("Number of pixels in Y"); def->min = 100; - def->default_value = new ConfigOptionInt(1440); + def->set_default_value(new ConfigOptionInt(1440)); def = this->add("display_orientation", coEnum); def->label = L("Display orientation"); @@ -2232,7 +2232,7 @@ void PrintConfigDef::init_sla_params() def->enum_labels.push_back(L("Landscape")); def->enum_labels.push_back(L("Portrait")); def->mode = comExpert; - def->default_value = new ConfigOptionEnum(sladoPortrait); + def->set_default_value(new ConfigOptionEnum(sladoPortrait)); def = this->add("fast_tilt_time", coFloat); def->label = L("Fast"); @@ -2241,7 +2241,7 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(5.); + def->set_default_value(new ConfigOptionFloat(5.)); def = this->add("slow_tilt_time", coFloat); def->label = L("Slow"); @@ -2250,7 +2250,7 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(8.); + def->set_default_value(new ConfigOptionFloat(8.)); def = this->add("area_fill", coFloat); def->label = L("Area fill"); @@ -2258,7 +2258,7 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("%"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(50.); + def->set_default_value(new ConfigOptionFloat(50.)); def = this->add("relative_correction", coFloats); def->label = L("Printer scaling correction"); @@ -2266,7 +2266,7 @@ void PrintConfigDef::init_sla_params() def->tooltip = L("Printer scaling correction"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats( { 1., 1. } ); + def->set_default_value(new ConfigOptionFloats( { 1., 1. } )); def = this->add("absolute_correction", coFloat); def->label = L("Printer absolute correction"); @@ -2274,7 +2274,7 @@ void PrintConfigDef::init_sla_params() def->tooltip = L("Will inflate or deflate the sliced 2D polygons according " "to the sign of the correction."); def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0.0); + def->set_default_value(new ConfigOptionFloat(0.0)); def = this->add("gamma_correction", coFloat); def->label = L("Printer gamma correction"); @@ -2285,7 +2285,7 @@ void PrintConfigDef::init_sla_params() "antialiasing without losing holes in polygons."); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(1.0); + def->set_default_value(new ConfigOptionFloat(1.0)); // SLA Material settings. @@ -2294,7 +2294,7 @@ void PrintConfigDef::init_sla_params() def->tooltip = L("Initial layer height"); def->sidetext = L("mm"); def->min = 0; - def->default_value = new ConfigOptionFloat(0.3); + def->set_default_value(new ConfigOptionFloat(0.3)); def = this->add("faded_layers", coInt); def->label = L("Faded layers"); @@ -2302,28 +2302,28 @@ void PrintConfigDef::init_sla_params() def->min = 3; def->max = 20; def->mode = comExpert; - def->default_value = new ConfigOptionInt(10); + def->set_default_value(new ConfigOptionInt(10)); def = this->add("exposure_time", coFloat); def->label = L("Exposure time"); def->tooltip = L("Exposure time"); def->sidetext = L("s"); def->min = 0; - def->default_value = new ConfigOptionFloat(10); + def->set_default_value(new ConfigOptionFloat(10)); def = this->add("initial_exposure_time", coFloat); def->label = L("Initial exposure time"); def->tooltip = L("Initial exposure time"); def->sidetext = L("s"); def->min = 0; - def->default_value = new ConfigOptionFloat(15); + def->set_default_value(new ConfigOptionFloat(15)); def = this->add("material_correction", coFloats); def->full_label = L("Correction for expansion"); def->tooltip = L("Correction for expansion"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats( { 1. , 1. } ); + def->set_default_value(new ConfigOptionFloats( { 1. , 1. } )); def = this->add("material_notes", coString); def->label = L("SLA print material notes"); @@ -2332,28 +2332,28 @@ void PrintConfigDef::init_sla_params() def->full_width = true; def->height = 13; def->mode = comAdvanced; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("default_sla_material_profile", coString); def->label = L("Default SLA material profile"); def->tooltip = L("Default print profile associated with the current printer profile. " "On selection of the current printer profile, this print profile will be activated."); - def->default_value = new ConfigOptionString(); + def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; def = this->add("sla_material_settings_id", coString); - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def->cli = ConfigOptionDef::nocli; def = this->add("default_sla_print_profile", coString); def->label = L("Default SLA material profile"); def->tooltip = L("Default print profile associated with the current printer profile. " "On selection of the current printer profile, this print profile will be activated."); - def->default_value = new ConfigOptionString(); + def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; def = this->add("sla_print_settings_id", coString); - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def->cli = ConfigOptionDef::nocli; def = this->add("supports_enable", coBool); @@ -2361,7 +2361,7 @@ void PrintConfigDef::init_sla_params() def->category = L("Supports"); def->tooltip = L("Generate supports for the models"); def->mode = comSimple; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("support_head_front_diameter", coFloat); def->label = L("Support head front diameter"); @@ -2370,7 +2370,7 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(0.4); + def->set_default_value(new ConfigOptionFloat(0.4)); def = this->add("support_head_penetration", coFloat); def->label = L("Support head penetration"); @@ -2379,7 +2379,7 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("mm"); def->mode = comAdvanced; def->min = 0; - def->default_value = new ConfigOptionFloat(0.2); + def->set_default_value(new ConfigOptionFloat(0.2)); def = this->add("support_head_width", coFloat); def->label = L("Support head width"); @@ -2389,7 +2389,7 @@ void PrintConfigDef::init_sla_params() def->min = 0; def->max = 20; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(1.0); + def->set_default_value(new ConfigOptionFloat(1.0)); def = this->add("support_pillar_diameter", coFloat); def->label = L("Support pillar diameter"); @@ -2399,7 +2399,7 @@ void PrintConfigDef::init_sla_params() def->min = 0; def->max = 15; def->mode = comSimple; - def->default_value = new ConfigOptionFloat(1.0); + def->set_default_value(new ConfigOptionFloat(1.0)); def = this->add("support_pillar_connection_mode", coEnum); def->label = L("Support pillar connection mode"); @@ -2415,14 +2415,14 @@ void PrintConfigDef::init_sla_params() def->enum_labels.push_back(L("Cross")); def->enum_labels.push_back(L("Dynamic")); def->mode = comAdvanced; - def->default_value = new ConfigOptionEnum(slapcmDynamic); + def->set_default_value(new ConfigOptionEnum(slapcmDynamic)); def = this->add("support_buildplate_only", coBool); def->label = L("Support on build plate only"); def->category = L("Supports"); def->tooltip = L("Only create support if it lies on a build plate. Don't create support on a print."); def->mode = comSimple; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("support_pillar_widening_factor", coFloat); def->label = L("Pillar widening factor"); @@ -2433,7 +2433,7 @@ void PrintConfigDef::init_sla_params() def->min = 0; def->max = 1; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0.0); + def->set_default_value(new ConfigOptionFloat(0.0)); def = this->add("support_base_diameter", coFloat); def->label = L("Support base diameter"); @@ -2443,7 +2443,7 @@ void PrintConfigDef::init_sla_params() def->min = 0; def->max = 30; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(4.0); + def->set_default_value(new ConfigOptionFloat(4.0)); def = this->add("support_base_height", coFloat); def->label = L("Support base height"); @@ -2452,7 +2452,7 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(1.0); + def->set_default_value(new ConfigOptionFloat(1.0)); def = this->add("support_critical_angle", coFloat); def->label = L("Critical angle"); @@ -2462,7 +2462,7 @@ void PrintConfigDef::init_sla_params() def->min = 0; def->max = 90; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(45); + def->set_default_value(new ConfigOptionFloat(45)); def = this->add("support_max_bridge_length", coFloat); def->label = L("Max bridge length"); @@ -2471,7 +2471,7 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(15.0); + def->set_default_value(new ConfigOptionFloat(15.0)); def = this->add("support_max_pillar_link_distance", coFloat); def->label = L("Max pillar linking distance"); @@ -2481,7 +2481,7 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("mm"); def->min = 0; // 0 means no linking def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(10.0); + def->set_default_value(new ConfigOptionFloat(10.0)); def = this->add("support_object_elevation", coFloat); def->label = L("Object elevation"); @@ -2491,7 +2491,7 @@ void PrintConfigDef::init_sla_params() def->min = 0; def->max = 150; // This is the max height of print on SL1 def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(5.0); + def->set_default_value(new ConfigOptionFloat(5.0)); def = this->add("support_points_density_relative", coInt); def->label = L("Support points density"); @@ -2499,7 +2499,7 @@ void PrintConfigDef::init_sla_params() def->tooltip = L("This is a relative measure of support points density."); def->sidetext = L("%"); def->min = 0; - def->default_value = new ConfigOptionInt(100); + def->set_default_value(new ConfigOptionInt(100)); def = this->add("support_points_minimal_distance", coFloat); def->label = L("Minimal distance of the support points"); @@ -2507,14 +2507,14 @@ void PrintConfigDef::init_sla_params() def->tooltip = L("No support points will be placed closer than this threshold."); def->sidetext = L("mm"); def->min = 0; - def->default_value = new ConfigOptionFloat(1.f); + def->set_default_value(new ConfigOptionFloat(1.f)); def = this->add("pad_enable", coBool); def->label = L("Use pad"); def->category = L("Pad"); def->tooltip = L("Add a pad underneath the supported model"); def->mode = comSimple; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("pad_wall_thickness", coFloat); def->label = L("Pad wall thickness"); @@ -2524,7 +2524,7 @@ void PrintConfigDef::init_sla_params() def->min = 0; def->max = 30; def->mode = comSimple; - def->default_value = new ConfigOptionFloat(2.0); + def->set_default_value(new ConfigOptionFloat(2.0)); def = this->add("pad_wall_height", coFloat); def->label = L("Pad wall height"); @@ -2538,7 +2538,7 @@ void PrintConfigDef::init_sla_params() def->min = 0; def->max = 30; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0.); + def->set_default_value(new ConfigOptionFloat(0.)); def = this->add("pad_max_merge_distance", coFloat); def->label = L("Max merge distance"); @@ -2550,7 +2550,7 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("mm"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(50.0); + def->set_default_value(new ConfigOptionFloat(50.0)); // This is disabled on the UI. I hope it will never be enabled. def = this->add("pad_edge_radius", coFloat); @@ -2560,7 +2560,7 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(1.0); + def->set_default_value(new ConfigOptionFloat(1.0)); def = this->add("pad_wall_slope", coFloat); def->label = L("Pad wall slope"); @@ -2571,7 +2571,7 @@ void PrintConfigDef::init_sla_params() def->min = 45; def->max = 90; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(45.0); + def->set_default_value(new ConfigOptionFloat(45.0)); } void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &value) @@ -2928,73 +2928,73 @@ CLIActionsConfigDef::CLIActionsConfigDef() def = this->add("export_obj", coBool); def->label = L("Export OBJ"); def->tooltip = L("Export the model(s) as OBJ."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); /* def = this->add("export_svg", coBool); def->label = L("Export SVG"); def->tooltip = L("Slice the model and export solid slices as SVG."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); */ def = this->add("export_sla", coBool); def->label = L("Export SLA"); def->tooltip = L("Slice the model and export SLA printing layers as PNG."); def->cli = "export-sla|sla"; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("export_3mf", coBool); def->label = L("Export 3MF"); def->tooltip = L("Export the model(s) as 3MF."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("export_amf", coBool); def->label = L("Export AMF"); def->tooltip = L("Export the model(s) as AMF."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("export_stl", coBool); def->label = L("Export STL"); def->tooltip = L("Export the model(s) as STL."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("export_gcode", coBool); def->label = L("Export G-code"); def->tooltip = L("Slice the model and export toolpaths as G-code."); def->cli = "export-gcode|gcode|g"; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("slice", coBool); def->label = L("Slice"); def->tooltip = L("Slice the model as FFF or SLA based on the printer_technology configuration value."); def->cli = "slice|s"; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("help", coBool); def->label = L("Help"); def->tooltip = L("Show this help."); def->cli = "help|h"; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("help_fff", coBool); def->label = L("Help (FFF options)"); def->tooltip = L("Show the full list of print/G-code configuration options."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("help_sla", coBool); def->label = L("Help (SLA options)"); def->tooltip = L("Show the full list of SLA print configuration options."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("info", coBool); def->label = L("Output Model Info"); def->tooltip = L("Write information about the model to the console."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("save", coString); def->label = L("Save config file"); def->tooltip = L("Save configuration to the specified file."); - def->default_value = new ConfigOptionString(); + def->set_default_value(new ConfigOptionString()); } CLITransformConfigDef::CLITransformConfigDef() @@ -3005,34 +3005,34 @@ CLITransformConfigDef::CLITransformConfigDef() def = this->add("align_xy", coPoint); def->label = L("Align XY"); def->tooltip = L("Align the model to the given point."); - def->default_value = new ConfigOptionPoint(Vec2d(100,100)); + def->set_default_value(new ConfigOptionPoint(Vec2d(100,100))); def = this->add("cut", coFloat); def->label = L("Cut"); def->tooltip = L("Cut model at the given Z."); - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); /* def = this->add("cut_grid", coFloat); def->label = L("Cut"); def->tooltip = L("Cut model in the XY plane into tiles of the specified max size."); - def->default_value = new ConfigOptionPoint(); + def->set_default_value(new ConfigOptionPoint()); def = this->add("cut_x", coFloat); def->label = L("Cut"); def->tooltip = L("Cut model at the given X."); - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("cut_y", coFloat); def->label = L("Cut"); def->tooltip = L("Cut model at the given Y."); - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); */ def = this->add("center", coPoint); def->label = L("Center"); def->tooltip = L("Center the print around the given center."); - def->default_value = new ConfigOptionPoint(Vec2d(100,100)); + def->set_default_value(new ConfigOptionPoint(Vec2d(100,100))); def = this->add("dont_arrange", coBool); def->label = L("Don't arrange"); @@ -3059,22 +3059,22 @@ CLITransformConfigDef::CLITransformConfigDef() def = this->add("rotate", coFloat); def->label = L("Rotate"); def->tooltip = L("Rotation angle around the Z axis in degrees."); - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("rotate_x", coFloat); def->label = L("Rotate around X"); def->tooltip = L("Rotation angle around the X axis in degrees."); - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("rotate_y", coFloat); def->label = L("Rotate around Y"); def->tooltip = L("Rotation angle around the Y axis in degrees."); - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("scale", coFloatOrPercent); def->label = L("Scale"); def->tooltip = L("Scaling factor or percentage."); - def->default_value = new ConfigOptionFloatOrPercent(1, false); + def->set_default_value(new ConfigOptionFloatOrPercent(1, false)); def = this->add("split", coBool); def->label = L("Split"); @@ -3083,7 +3083,7 @@ CLITransformConfigDef::CLITransformConfigDef() def = this->add("scale_to_fit", coPoint3); def->label = L("Scale to Fit"); def->tooltip = L("Scale to fit the given volume."); - def->default_value = new ConfigOptionPoint3(Vec3d(0,0,0)); + def->set_default_value(new ConfigOptionPoint3(Vec3d(0,0,0))); } CLIMiscConfigDef::CLIMiscConfigDef() diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index db3e63fe7e..d4ad1db8cc 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -307,8 +307,8 @@ protected: m_keys.emplace_back(kvp.first); const ConfigOptionDef *def = defs->get(kvp.first); assert(def != nullptr); - if (def->default_value != nullptr) - opt->set(def->default_value); + if (def->default_value) + opt->set(def->default_value.get()); } } diff --git a/src/libslic3r/clonable_ptr.hpp b/src/libslic3r/clonable_ptr.hpp new file mode 100644 index 0000000000..a3b7ee2446 --- /dev/null +++ b/src/libslic3r/clonable_ptr.hpp @@ -0,0 +1,168 @@ +// clonable_ptr: a smart pointer with a usage similar to unique_ptr, with the exception, that +// the copy constructor / copy assignment operator work by calling the ->clone() method. + +// derived from https://github.com/SRombauts/shared_ptr/blob/master/include/unique_ptr.hpp +/** + * @file clonable_ptr.hpp + * @brief clonable_ptr is a fake implementation to use in place of a C++11 std::clonable_ptr when compiling on an older compiler. + * + * @see http://www.cplusplus.com/reference/memory/clonable_ptr/ + * + * Copyright (c) 2014-2019 Sebastien Rombauts (sebastien.rombauts@gmail.com) + * + * Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt + * or copy at http://opensource.org/licenses/MIT) + */ + +#include "assert.h" + +namespace Slic3r { + +// Detect whether the compiler supports C++11 noexcept exception specifications. +#if defined(_MSC_VER) && _MSC_VER < 1900 && ! defined(noexcept) + #define noexcept throw() +#endif + +template +class clonable_ptr +{ +public: + /// The type of the managed object, aliased as member type + typedef T element_type; + + /// @brief Default constructor + clonable_ptr() noexcept : + px(nullptr) + { + } + /// @brief Constructor with the provided pointer to manage + explicit clonable_ptr(T* p) noexcept : + px(p) + { + } + /// @brief Copy constructor, clones by calling the rhs.clone() method + clonable_ptr(const clonable_ptr& rhs) : + px(rhs ? rhs.px->clone() : nullptr) + { + } + /// @brief Move constructor, never throws + clonable_ptr(clonable_ptr&& rhs) noexcept : + px(rhs.px) + { + rhs.px = nullptr; + } + /// @brief Assignment operator + clonable_ptr& operator=(const clonable_ptr& rhs) + { + delete px; + px = rhs ? rhs.px->clone() : nullptr; + return *this; + } + /// @brief Move operator, never throws + clonable_ptr& operator=(clonable_ptr&& rhs) + { + delete px; + px = rhs.px; + rhs.px = nullptr; + return *this; + } + /// @brief the destructor releases its ownership and destroy the object + inline ~clonable_ptr() noexcept + { + destroy(); + } + /// @brief this reset releases its ownership and destroy the object + inline void reset() noexcept + { + destroy(); + } + /// @brief this reset release its ownership and re-acquire another one + void reset(T* p) noexcept + { + assert((nullptr == p) || (px != p)); // auto-reset not allowed + destroy(); + px = p; + } + + /// @brief Swap method for the copy-and-swap idiom (copy constructor and swap method) + void swap(clonable_ptr& rhs) noexcept + { + T *tmp = px; + px = rhs.px; + rhs.px = tmp; + } + + /// @brief release the ownership of the px pointer without destroying the object! + inline void release() noexcept + { + px = nullptr; + } + + // reference counter operations : + inline operator bool() const noexcept + { + return (nullptr != px); // TODO nullptrptr + } + + // underlying pointer operations : + inline T& operator*() const noexcept + { + assert(nullptr != px); + return *px; + } + inline T* operator->() const noexcept + { + assert(nullptr != px); + return px; + } + inline T* get() const noexcept + { + // no assert, can return nullptr + return px; + } + +private: + /// @brief release the ownership of the px pointer and destroy the object + inline void destroy() noexcept + { + delete px; + px = nullptr; + } + + /// @brief hack: const-cast release the ownership of the px pointer without destroying the object! + inline void release() const noexcept + { + px = nullptr; + } + +private: + T* px; //!< Native pointer +}; + +// comparison operators +template inline bool operator==(const clonable_ptr& l, const clonable_ptr& r) noexcept +{ + return (l.get() == r.get()); +} +template inline bool operator!=(const clonable_ptr& l, const clonable_ptr& r) noexcept +{ + return (l.get() != r.get()); +} +template inline bool operator<=(const clonable_ptr& l, const clonable_ptr& r) noexcept +{ + return (l.get() <= r.get()); +} +template inline bool operator<(const clonable_ptr& l, const clonable_ptr& r) noexcept +{ + return (l.get() < r.get()); +} +template inline bool operator>=(const clonable_ptr& l, const clonable_ptr& r) noexcept +{ + return (l.get() >= r.get()); +} +template inline bool operator>(const clonable_ptr& l, const clonable_ptr& r) noexcept +{ + return (l.get() > r.get()); +} + +} // namespace Slic3r diff --git a/src/slic3r/GUI/BedShapeDialog.cpp b/src/slic3r/GUI/BedShapeDialog.cpp index 00ebf117c5..fbbca7c706 100644 --- a/src/slic3r/GUI/BedShapeDialog.cpp +++ b/src/slic3r/GUI/BedShapeDialog.cpp @@ -68,14 +68,14 @@ void BedShapePanel::build_panel(ConfigOptionPoints* default_pt) auto optgroup = init_shape_options_page(_(L("Rectangular"))); ConfigOptionDef def; def.type = coPoints; - def.default_value = new ConfigOptionPoints{ Vec2d(200, 200) }; + def.set_default_value(new ConfigOptionPoints{ Vec2d(200, 200) }); def.label = L("Size"); def.tooltip = L("Size in X and Y of the rectangular plate."); Option option(def, "rect_size"); optgroup->append_single_option_line(option); def.type = coPoints; - def.default_value = new ConfigOptionPoints{ Vec2d(0, 0) }; + def.set_default_value(new ConfigOptionPoints{ Vec2d(0, 0) }); def.label = L("Origin"); def.tooltip = L("Distance of the 0,0 G-code coordinate from the front left corner of the rectangle."); option = Option(def, "rect_origin"); @@ -83,7 +83,7 @@ void BedShapePanel::build_panel(ConfigOptionPoints* default_pt) optgroup = init_shape_options_page(_(L("Circular"))); def.type = coFloat; - def.default_value = new ConfigOptionFloat(200); + def.set_default_value(new ConfigOptionFloat(200)); def.sidetext = L("mm"); def.label = L("Diameter"); def.tooltip = L("Diameter of the print bed. It is assumed that origin (0,0) is located in the center."); diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index 93c7809099..bd45104c4c 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -499,7 +499,7 @@ PageFirmware::PageFirmware(ConfigWizard *parent) gcode_picker = new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, choices); const auto &enum_values = gcode_opt.enum_values; auto needle = enum_values.cend(); - if (gcode_opt.default_value != nullptr) { + if (gcode_opt.default_value) { needle = std::find(enum_values.cbegin(), enum_values.cend(), gcode_opt.default_value->serialize()); } if (needle != enum_values.cend()) { @@ -545,13 +545,13 @@ PageDiameters::PageDiameters(ConfigWizard *parent) spin_nozzle->SetDigits(2); spin_nozzle->SetIncrement(0.1); const auto &def_nozzle = *print_config_def.get("nozzle_diameter"); - auto *default_nozzle = dynamic_cast(def_nozzle.default_value); + auto *default_nozzle = dynamic_cast(def_nozzle.default_value.get()); spin_nozzle->SetValue(default_nozzle != nullptr && default_nozzle->size() > 0 ? default_nozzle->get_at(0) : 0.5); spin_filam->SetDigits(2); spin_filam->SetIncrement(0.25); const auto &def_filam = *print_config_def.get("filament_diameter"); - auto *default_filam = dynamic_cast(def_filam.default_value); + auto *default_filam = dynamic_cast(def_filam.default_value.get()); spin_filam->SetValue(default_filam != nullptr && default_filam->size() > 0 ? default_filam->get_at(0) : 3.0); append_text(_(L("Enter the diameter of your printer's hot end nozzle."))); @@ -596,13 +596,13 @@ PageTemperatures::PageTemperatures(ConfigWizard *parent) spin_extr->SetIncrement(5.0); const auto &def_extr = *print_config_def.get("temperature"); spin_extr->SetRange(def_extr.min, def_extr.max); - auto *default_extr = dynamic_cast(def_extr.default_value); + auto *default_extr = dynamic_cast(def_extr.default_value.get()); spin_extr->SetValue(default_extr != nullptr && default_extr->size() > 0 ? default_extr->get_at(0) : 200); spin_bed->SetIncrement(5.0); const auto &def_bed = *print_config_def.get("bed_temperature"); spin_bed->SetRange(def_bed.min, def_bed.max); - auto *default_bed = dynamic_cast(def_bed.default_value); + auto *default_bed = dynamic_cast(def_bed.default_value.get()); spin_bed->SetValue(default_bed != nullptr && default_bed->size() > 0 ? default_bed->get_at(0) : 0); append_text(_(L("Enter the temperature needed for extruding your filament."))); diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index cb414fa79c..02f58667c3 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -203,7 +203,7 @@ void TextCtrl::BUILD() { case coFloatOrPercent: { text_value = double_to_string(m_opt.default_value->getFloat()); - if (static_cast(m_opt.default_value)->percent) + if (static_cast(m_opt.default_value.get())->percent) text_value += "%"; break; } @@ -218,19 +218,19 @@ void TextCtrl::BUILD() { case coFloat: { double val = m_opt.type == coFloats ? - static_cast(m_opt.default_value)->get_at(m_opt_idx) : + static_cast(m_opt.default_value.get())->get_at(m_opt_idx) : m_opt.type == coFloat ? m_opt.default_value->getFloat() : - static_cast(m_opt.default_value)->get_at(m_opt_idx); + static_cast(m_opt.default_value.get())->get_at(m_opt_idx); text_value = double_to_string(val); break; } case coString: - text_value = static_cast(m_opt.default_value)->value; + text_value = static_cast(m_opt.default_value.get())->value; break; case coStrings: { - const ConfigOptionStrings *vec = static_cast(m_opt.default_value); + const ConfigOptionStrings *vec = static_cast(m_opt.default_value.get()); if (vec == nullptr || vec->empty()) break; //for the case of empty default value text_value = vec->get_at(m_opt_idx); break; @@ -373,7 +373,7 @@ void CheckBox::BUILD() { bool check_value = m_opt.type == coBool ? m_opt.default_value->getBool() : m_opt.type == coBools ? - static_cast(m_opt.default_value)->get_at(m_opt_idx) : + static_cast(m_opt.default_value.get())->get_at(m_opt_idx) : false; // Set Label as a string of at least one space simbol to correct system scaling of a CheckBox @@ -427,7 +427,7 @@ void SpinCtrl::BUILD() { break; case coInts: { - const ConfigOptionInts *vec = static_cast(m_opt.default_value); + const ConfigOptionInts *vec = static_cast(m_opt.default_value.get()); if (vec == nullptr || vec->empty()) break; for (size_t id = 0; id < vec->size(); ++id) { @@ -629,7 +629,7 @@ void Choice::set_selection() break; } case coEnum:{ - int id_value = static_cast*>(m_opt.default_value)->value; //!! + int id_value = static_cast*>(m_opt.default_value.get())->value; //!! field->SetSelection(id_value); break; } @@ -649,7 +649,7 @@ void Choice::set_selection() break; } case coStrings:{ - text_value = static_cast(m_opt.default_value)->get_at(m_opt_idx); + text_value = static_cast(m_opt.default_value.get())->get_at(m_opt_idx); size_t idx = 0; for (auto el : m_opt.enum_values) @@ -886,7 +886,7 @@ void ColourPicker::BUILD() if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit); // Validate the color - wxString clr_str(static_cast(m_opt.default_value)->get_at(m_opt_idx)); + wxString clr_str(static_cast(m_opt.default_value.get())->get_at(m_opt_idx)); wxColour clr(clr_str); if (! clr.IsOk()) { clr = wxTransparentColour; @@ -920,7 +920,7 @@ void PointCtrl::BUILD() const wxSize field_size(4 * m_em_unit, -1); - auto default_pt = static_cast(m_opt.default_value)->values.at(0); + auto default_pt = static_cast(m_opt.default_value.get())->values.at(0); double val = default_pt(0); wxString X = val - int(val) == 0 ? wxString::Format(_T("%i"), int(val)) : wxNumberFormatter::ToString(val, 2, wxNumberFormatter::Style_None); val = default_pt(1); @@ -1019,7 +1019,7 @@ void StaticText::BUILD() if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit); if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit); - const wxString legend(static_cast(m_opt.default_value)->value); + const wxString legend(static_cast(m_opt.default_value.get())->value); auto temp = new wxStaticText(m_parent, wxID_ANY, legend, wxDefaultPosition, size, wxST_ELLIPSIZE_MIDDLE); temp->SetFont(Slic3r::GUI::wxGetApp().normal_font()); temp->SetBackgroundStyle(wxBG_STYLE_PAINT); @@ -1054,7 +1054,7 @@ void SliderCtrl::BUILD() auto temp = new wxBoxSizer(wxHORIZONTAL); - auto def_val = static_cast(m_opt.default_value)->value; + auto def_val = static_cast(m_opt.default_value.get())->value; auto min = m_opt.min == INT_MIN ? 0 : m_opt.min; auto max = m_opt.max == INT_MAX ? 100 : m_opt.max; diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index 1da17f676d..36b356c5de 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -90,7 +90,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : def.gui_type = "legend"; def.tooltip = L("Object name"); def.width = 21; - def.default_value = new ConfigOptionString{ " " }; + def.set_default_value(new ConfigOptionString{ " " }); m_og->append_single_option_line(Option(def, "object_name")); const int field_width = 5; @@ -103,7 +103,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : for (const std::string axis : { "x", "y", "z" }) { const std::string label = boost::algorithm::to_upper_copy(axis); - def.default_value = new ConfigOptionString{ " " + label }; + def.set_default_value(new ConfigOptionString{ " " + label }); Option option = Option(def, axis + "_axis_legend"); line.append_option(option); } @@ -120,7 +120,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : Line line = { _(option_name), "" }; ConfigOptionDef def; def.type = coFloat; - def.default_value = new ConfigOptionFloat(0.0); + def.set_default_value(new ConfigOptionFloat(0.0)); def.width = field_width/*50*/; // Add "uniform scaling" button in front of "Scale" option diff --git a/src/slic3r/GUI/LambdaObjectDialog.cpp b/src/slic3r/GUI/LambdaObjectDialog.cpp index 0146db5f64..4d1cb06584 100644 --- a/src/slic3r/GUI/LambdaObjectDialog.cpp +++ b/src/slic3r/GUI/LambdaObjectDialog.cpp @@ -49,7 +49,7 @@ LambdaObjectDialog::LambdaObjectDialog(wxWindow* parent, }; def.type = coFloat; - def.default_value = new ConfigOptionFloat{ 1.0 }; + def.set_default_value(new ConfigOptionFloat{ 1.0 }); def.label = L("Length"); Option option(def, "l"); optgroup->append_single_option_line(option); @@ -75,7 +75,7 @@ LambdaObjectDialog::LambdaObjectDialog(wxWindow* parent, }; def.type = coInt; - def.default_value = new ConfigOptionInt{ 1 }; + def.set_default_value(new ConfigOptionInt{ 1 }); def.label = L("Radius"); auto option = Option(def, "cyl_r"); optgroup->append_single_option_line(option); @@ -94,7 +94,7 @@ LambdaObjectDialog::LambdaObjectDialog(wxWindow* parent, }; def.type = coFloat; - def.default_value = new ConfigOptionFloat{ 1.0 }; + def.set_default_value(new ConfigOptionFloat{ 1.0 }); def.label = L("Rho"); auto option = Option(def, "sph_rho"); optgroup->append_single_option_line(option); @@ -112,7 +112,7 @@ LambdaObjectDialog::LambdaObjectDialog(wxWindow* parent, }; def.type = coFloat; - def.default_value = new ConfigOptionFloat{ 1.0 }; + def.set_default_value(new ConfigOptionFloat{ 1.0 }); def.label = L("Height"); auto option = Option(def, "slab_h"); optgroup->append_single_option_line(option); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index b3757dc8b1..292d47d91a 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -394,16 +394,27 @@ FreqChangedParams::FreqChangedParams(wxWindow* parent, const int label_width) : } new_conf.set_key_value("brim_width", new ConfigOptionFloat(new_val)); } - else { //(opt_key == "support") + else { + assert(opt_key == "support"); const wxString& selection = boost::any_cast(value); + PrinterTechnology printer_technology = wxGetApp().preset_bundle->printers.get_edited_preset().printer_technology(); auto support_material = selection == _("None") ? false : true; new_conf.set_key_value("support_material", new ConfigOptionBool(support_material)); - if (selection == _("Everywhere")) + if (selection == _("Everywhere")) { new_conf.set_key_value("support_material_buildplate_only", new ConfigOptionBool(false)); - else if (selection == _("Support on build plate only")) + if (printer_technology == ptFFF) + new_conf.set_key_value("support_material_auto", new ConfigOptionBool(true)); + } else if (selection == _("Support on build plate only")) { new_conf.set_key_value("support_material_buildplate_only", new ConfigOptionBool(true)); + if (printer_technology == ptFFF) + new_conf.set_key_value("support_material_auto", new ConfigOptionBool(true)); + } else if (selection == _("For support enforcers only")) { + assert(printer_technology == ptFFF); + new_conf.set_key_value("support_material_buildplate_only", new ConfigOptionBool(false)); + new_conf.set_key_value("support_material_auto", new ConfigOptionBool(false)); + } } tab_print->load_config(new_conf); } @@ -421,12 +432,9 @@ FreqChangedParams::FreqChangedParams(wxWindow* parent, const int label_width) : support_def.tooltip = L("Select what kind of support do you need"); support_def.enum_labels.push_back(L("None")); support_def.enum_labels.push_back(L("Support on build plate only")); + support_def.enum_labels.push_back(L("For support enforcers only")); support_def.enum_labels.push_back(L("Everywhere")); - std::string selection = !config->opt_bool("support_material") ? - "None" : config->opt_bool("support_material_buildplate_only") ? - "Support on build plate only" : - "Everywhere"; - support_def.default_value = new ConfigOptionStrings{ selection }; + support_def.set_default_value(new ConfigOptionStrings{ "None" }); Option option = Option(support_def, "support"); option.opt.full_width = true; line.append_option(option); @@ -447,7 +455,7 @@ FreqChangedParams::FreqChangedParams(wxWindow* parent, const int label_width) : def.type = coBool; def.tooltip = L("This flag enables the brim that will be printed around each object on the first layer."); def.gui_type = ""; - def.default_value = new ConfigOptionBool{ m_brim_width > 0.0 ? true : false }; + def.set_default_value(new ConfigOptionBool{ m_brim_width > 0.0 ? true : false }); option = Option(def, "brim"); option.opt.sidetext = " "; line.append_option(option); @@ -493,8 +501,9 @@ FreqChangedParams::FreqChangedParams(wxWindow* parent, const int label_width) : tab->set_value(opt_key, value); tab->update(); } - else //(opt_key == "support") + else { + assert(opt_key == "support"); DynamicPrintConfig new_conf = *config_sla; const wxString& selection = boost::any_cast(value); @@ -514,17 +523,15 @@ FreqChangedParams::FreqChangedParams(wxWindow* parent, const int label_width) : line = Line{ "", "" }; - selection = !config_sla->opt_bool("supports_enable") ? - "None" : config_sla->opt_bool("support_buildplate_only") ? - "Support on build plate only" : - "Everywhere"; - support_def.default_value = new ConfigOptionStrings{ selection }; - option = Option(support_def, "support"); + ConfigOptionDef support_def_sla = support_def; + support_def_sla.set_default_value(new ConfigOptionStrings{ "None" }); + assert(support_def_sla.enum_labels[2] == L("For support enforcers only")); + support_def_sla.enum_labels.erase(support_def_sla.enum_labels.begin() + 2); + option = Option(support_def_sla, "support"); option.opt.full_width = true; line.append_option(option); m_og_sla->append_line(line); - line = Line{ "", "" }; option = m_og_sla->get_option("pad_enable"); diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index b6a340d081..2bf9b6332d 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -37,7 +37,7 @@ void PreferencesDialog::build() def.type = coBool; def.tooltip = L("If this is enabled, Slic3r will prompt the last output directory " "instead of the one containing the input files."); - def.default_value = new ConfigOptionBool{ app_config->has("remember_output_path") ? app_config->get("remember_output_path") == "1" : true }; + def.set_default_value(new ConfigOptionBool{ app_config->has("remember_output_path") ? app_config->get("remember_output_path") == "1" : true }); Option option(def, "remember_output_path"); m_optgroup->append_single_option_line(option); @@ -45,7 +45,7 @@ void PreferencesDialog::build() def.type = coBool; def.tooltip = L("If this is enabled, Slic3r will auto-center objects " "around the print bed center."); - def.default_value = new ConfigOptionBool{ app_config->get("autocenter") == "1" }; + def.set_default_value(new ConfigOptionBool{ app_config->get("autocenter") == "1" }); option = Option (def,"autocenter"); m_optgroup->append_single_option_line(option); @@ -53,7 +53,7 @@ void PreferencesDialog::build() def.type = coBool; def.tooltip = L("If this is enabled, Slic3r will pre-process objects as soon " "as they\'re loaded in order to save time when exporting G-code."); - def.default_value = new ConfigOptionBool{ app_config->get("background_processing") == "1" }; + def.set_default_value(new ConfigOptionBool{ app_config->get("background_processing") == "1" }); option = Option (def,"background_processing"); m_optgroup->append_single_option_line(option); @@ -61,7 +61,7 @@ void PreferencesDialog::build() def.label = L("Check for application updates"); def.type = coBool; def.tooltip = L("If enabled, Slic3r checks for new versions of " SLIC3R_APP_NAME " online. When a new version becomes available a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done."); - def.default_value = new ConfigOptionBool(app_config->get("version_check") == "1"); + def.set_default_value(new ConfigOptionBool(app_config->get("version_check") == "1")); option = Option (def, "version_check"); m_optgroup->append_single_option_line(option); @@ -69,7 +69,7 @@ void PreferencesDialog::build() def.label = L("Update built-in Presets automatically"); def.type = coBool; def.tooltip = L("If enabled, Slic3r downloads updates of built-in system presets in the background. These updates are downloaded into a separate temporary location. When a new preset version becomes available it is offered at application startup."); - def.default_value = new ConfigOptionBool(app_config->get("preset_update") == "1"); + def.set_default_value(new ConfigOptionBool(app_config->get("preset_update") == "1")); option = Option (def, "preset_update"); m_optgroup->append_single_option_line(option); @@ -77,7 +77,7 @@ void PreferencesDialog::build() def.type = coBool; def.tooltip = L("Suppress \" - default - \" presets in the Print / Filament / Printer " "selections once there are any other valid presets available."); - def.default_value = new ConfigOptionBool{ app_config->get("no_defaults") == "1" }; + def.set_default_value(new ConfigOptionBool{ app_config->get("no_defaults") == "1" }); option = Option (def,"no_defaults"); m_optgroup->append_single_option_line(option); @@ -85,7 +85,7 @@ void PreferencesDialog::build() def.type = coBool; def.tooltip = L("When checked, the print and filament presets are shown in the preset editor " "even if they are marked as incompatible with the active printer"); - def.default_value = new ConfigOptionBool{ app_config->get("show_incompatible_presets") == "1" }; + def.set_default_value(new ConfigOptionBool{ app_config->get("show_incompatible_presets") == "1" }); option = Option (def,"show_incompatible_presets"); m_optgroup->append_single_option_line(option); @@ -95,7 +95,7 @@ void PreferencesDialog::build() def.tooltip = L("If you have rendering issues caused by a buggy OpenGL 2.0 driver, " "you may try to check this checkbox. This will disable the layer height " "editing and anti aliasing, so it is likely better to upgrade your graphics driver."); - def.default_value = new ConfigOptionBool{ app_config->get("use_legacy_opengl") == "1" }; + def.set_default_value(new ConfigOptionBool{ app_config->get("use_legacy_opengl") == "1" }); option = Option (def,"use_legacy_opengl"); m_optgroup->append_single_option_line(option); @@ -104,7 +104,7 @@ void PreferencesDialog::build() def.type = coBool; def.tooltip = L("If enabled, the 3D scene will be rendered in Retina resolution. " "If you are experiencing 3D performance problems, disabling this option may help."); - def.default_value = new ConfigOptionBool{ app_config->get("use_retina_opengl") == "1" }; + def.set_default_value(new ConfigOptionBool{ app_config->get("use_retina_opengl") == "1" }); option = Option (def, "use_retina_opengl"); m_optgroup->append_single_option_line(option); #endif diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index fb8147ad27..129643d18c 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -815,6 +815,19 @@ void Tab::load_key_value(const std::string& opt_key, const boost::any& value, bo update(); } +static wxString support_combo_value_for_config(const DynamicPrintConfig &config, bool is_fff) +{ + const std::string support = is_fff ? "support_material" : "supports_enable"; + const std::string buildplate_only = is_fff ? "support_material_buildplate_only" : "support_buildplate_only"; + return + ! config.opt_bool(support) ? + _("None") : + (is_fff && !config.opt_bool("support_material_auto")) ? + _("For support enforcers only") : + (config.opt_bool(buildplate_only) ? _("Support on build plate only") : + _("Everywhere")); +} + void Tab::on_value_change(const std::string& opt_key, const boost::any& value) { if (wxGetApp().plater() == nullptr) { @@ -822,23 +835,17 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) } const bool is_fff = supports_printer_technology(ptFFF); - ConfigOptionsGroup* og_freq_chng_params = wxGetApp().sidebar().og_freq_chng_params(is_fff); + ConfigOptionsGroup* og_freq_chng_params = wxGetApp().sidebar().og_freq_chng_params(is_fff); if (opt_key == "fill_density" || opt_key == "pad_enable") { boost::any val = og_freq_chng_params->get_config_value(*m_config, opt_key); og_freq_chng_params->set_value(opt_key, val); } - if ( is_fff && (opt_key == "support_material" || opt_key == "support_material_buildplate_only") || - !is_fff && (opt_key == "supports_enable" || opt_key == "support_buildplate_only")) - { - const std::string support = is_fff ? "support_material" : "supports_enable"; - const std::string buildplate_only = is_fff ? "support_material_buildplate_only" : "support_buildplate_only"; - wxString new_selection = !m_config->opt_bool(support) ? _("None") : - m_config->opt_bool(buildplate_only) ? _("Support on build plate only") : - _("Everywhere"); - og_freq_chng_params->set_value("support", new_selection); - } + if (is_fff ? + (opt_key == "support_material" || opt_key == "support_material_auto" || opt_key == "support_material_buildplate_only") : + (opt_key == "supports_enable" || opt_key == "support_buildplate_only")) + og_freq_chng_params->set_value("support", support_combo_value_for_config(*m_config, is_fff)); if (opt_key == "brim_width") { @@ -964,18 +971,11 @@ void Tab::update_preset_description_line() void Tab::update_frequently_changed_parameters() { - auto og_freq_chng_params = wxGetApp().sidebar().og_freq_chng_params(supports_printer_technology(ptFFF)); + const bool is_fff = supports_printer_technology(ptFFF); + auto og_freq_chng_params = wxGetApp().sidebar().og_freq_chng_params(is_fff); if (!og_freq_chng_params) return; - const bool is_fff = supports_printer_technology(ptFFF); - - const std::string support = is_fff ? "support_material" : "supports_enable"; - const std::string buildplate_only = is_fff ? "support_material_buildplate_only" : "support_buildplate_only"; - - wxString new_selection = !m_config->opt_bool(support) ? _("None") : - m_config->opt_bool(buildplate_only) ? _("Support on build plate only") : - _("Everywhere"); - og_freq_chng_params->set_value("support", new_selection); + og_freq_chng_params->set_value("support", support_combo_value_for_config(*m_config, is_fff)); const std::string updated_value_key = is_fff ? "fill_density" : "pad_enable"; @@ -1840,7 +1840,7 @@ void TabPrinter::build_fff() optgroup = page->new_optgroup(_(L("Capabilities"))); ConfigOptionDef def; def.type = coInt, - def.default_value = new ConfigOptionInt(1); + def.set_default_value(new ConfigOptionInt(1)); def.label = L("Extruders"); def.tooltip = L("Number of extruders of the printer."); def.min = 1; @@ -2148,13 +2148,13 @@ PageShp TabPrinter::build_kinematics_page() def.gui_type = "legend"; def.mode = comAdvanced; def.tooltip = L("Values in this column are for Full Power mode"); - def.default_value = new ConfigOptionString{ L("Full Power") }; + def.set_default_value(new ConfigOptionString{ L("Full Power") }); auto option = Option(def, "full_power_legend"); line.append_option(option); def.tooltip = L("Values in this column are for Silent mode"); - def.default_value = new ConfigOptionString{ L("Silent") }; + def.set_default_value(new ConfigOptionString{ L("Silent") }); option = Option(def, "silent_legend"); line.append_option(option); diff --git a/xs/xsp/Config.xsp b/xs/xsp/Config.xsp index f9482bd3bf..4d48a2c6f1 100644 --- a/xs/xsp/Config.xsp +++ b/xs/xsp/Config.xsp @@ -223,8 +223,8 @@ print_config_def() (void)hv_stores( hv, "labels", newRV_noinc((SV*)av) ); } - if (optdef->default_value != NULL) - (void)hv_stores( hv, "default", ConfigOption_to_SV(*optdef->default_value, *optdef) ); + if (optdef->default_value) + (void)hv_stores( hv, "default", ConfigOption_to_SV(*optdef->default_value.get(), *optdef) ); (void)hv_store( options_hv, opt_key.c_str(), opt_key.length(), newRV_noinc((SV*)hv), 0 ); } From 09d80b1b2ad2a591b32822ec2cb3cc6fe99f70a3 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Fri, 3 May 2019 18:30:58 +0200 Subject: [PATCH 58/94] Added ConfigDef::get_default_value<>() template, refactored calling code to use it. --- src/libslic3r/Config.hpp | 4 +++- src/slic3r/GUI/ConfigWizard.cpp | 10 ++++------ src/slic3r/GUI/Field.cpp | 28 ++++++++++++++-------------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/libslic3r/Config.hpp b/src/libslic3r/Config.hpp index 625335de62..ee4bc4e463 100644 --- a/src/libslic3r/Config.hpp +++ b/src/libslic3r/Config.hpp @@ -1011,8 +1011,10 @@ public: // What type? bool, int, string etc. ConfigOptionType type = coNone; // Default value of this option. The default value object is owned by ConfigDef, it is released in its destructor. - Slic3r::clonable_ptr default_value = nullptr; + Slic3r::clonable_ptr default_value; void set_default_value(const ConfigOption* ptr) { this->default_value = Slic3r::clonable_ptr(ptr); } + template + const T* get_default_value() const { return static_cast(this->default_value.get()); } // Usually empty. // Special values - "i_enum_open", "f_enum_open" to provide combo box for int or float selection, diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index bd45104c4c..4fbaa45637 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -544,14 +544,12 @@ PageDiameters::PageDiameters(ConfigWizard *parent) { spin_nozzle->SetDigits(2); spin_nozzle->SetIncrement(0.1); - const auto &def_nozzle = *print_config_def.get("nozzle_diameter"); - auto *default_nozzle = dynamic_cast(def_nozzle.default_value.get()); + auto *default_nozzle = print_config_def.get("nozzle_diameter")->get_default_value(); spin_nozzle->SetValue(default_nozzle != nullptr && default_nozzle->size() > 0 ? default_nozzle->get_at(0) : 0.5); spin_filam->SetDigits(2); spin_filam->SetIncrement(0.25); - const auto &def_filam = *print_config_def.get("filament_diameter"); - auto *default_filam = dynamic_cast(def_filam.default_value.get()); + auto *default_filam = print_config_def.get("filament_diameter")->get_default_value(); spin_filam->SetValue(default_filam != nullptr && default_filam->size() > 0 ? default_filam->get_at(0) : 3.0); append_text(_(L("Enter the diameter of your printer's hot end nozzle."))); @@ -596,13 +594,13 @@ PageTemperatures::PageTemperatures(ConfigWizard *parent) spin_extr->SetIncrement(5.0); const auto &def_extr = *print_config_def.get("temperature"); spin_extr->SetRange(def_extr.min, def_extr.max); - auto *default_extr = dynamic_cast(def_extr.default_value.get()); + auto *default_extr = def_extr.get_default_value(); spin_extr->SetValue(default_extr != nullptr && default_extr->size() > 0 ? default_extr->get_at(0) : 200); spin_bed->SetIncrement(5.0); const auto &def_bed = *print_config_def.get("bed_temperature"); spin_bed->SetRange(def_bed.min, def_bed.max); - auto *default_bed = dynamic_cast(def_bed.default_value.get()); + auto *default_bed = def_bed.get_default_value(); spin_bed->SetValue(default_bed != nullptr && default_bed->size() > 0 ? default_bed->get_at(0) : 0); append_text(_(L("Enter the temperature needed for extruding your filament."))); diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 02f58667c3..5e06efa29e 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -203,7 +203,7 @@ void TextCtrl::BUILD() { case coFloatOrPercent: { text_value = double_to_string(m_opt.default_value->getFloat()); - if (static_cast(m_opt.default_value.get())->percent) + if (m_opt.get_default_value()->percent) text_value += "%"; break; } @@ -218,19 +218,19 @@ void TextCtrl::BUILD() { case coFloat: { double val = m_opt.type == coFloats ? - static_cast(m_opt.default_value.get())->get_at(m_opt_idx) : + m_opt.get_default_value()->get_at(m_opt_idx) : m_opt.type == coFloat ? m_opt.default_value->getFloat() : - static_cast(m_opt.default_value.get())->get_at(m_opt_idx); + m_opt.get_default_value()->get_at(m_opt_idx); text_value = double_to_string(val); break; } case coString: - text_value = static_cast(m_opt.default_value.get())->value; + text_value = m_opt.get_default_value()->value; break; case coStrings: { - const ConfigOptionStrings *vec = static_cast(m_opt.default_value.get()); + const ConfigOptionStrings *vec = m_opt.get_default_value(); if (vec == nullptr || vec->empty()) break; //for the case of empty default value text_value = vec->get_at(m_opt_idx); break; @@ -373,8 +373,8 @@ void CheckBox::BUILD() { bool check_value = m_opt.type == coBool ? m_opt.default_value->getBool() : m_opt.type == coBools ? - static_cast(m_opt.default_value.get())->get_at(m_opt_idx) : - false; + m_opt.get_default_value()->get_at(m_opt_idx) : + false; // Set Label as a string of at least one space simbol to correct system scaling of a CheckBox auto temp = new wxCheckBox(m_parent, wxID_ANY, wxString(" "), wxDefaultPosition, size); @@ -427,7 +427,7 @@ void SpinCtrl::BUILD() { break; case coInts: { - const ConfigOptionInts *vec = static_cast(m_opt.default_value.get()); + const ConfigOptionInts *vec = m_opt.get_default_value(); if (vec == nullptr || vec->empty()) break; for (size_t id = 0; id < vec->size(); ++id) { @@ -629,7 +629,7 @@ void Choice::set_selection() break; } case coEnum:{ - int id_value = static_cast*>(m_opt.default_value.get())->value; //!! + int id_value = m_opt.get_default_value>()->value; //!! field->SetSelection(id_value); break; } @@ -649,7 +649,7 @@ void Choice::set_selection() break; } case coStrings:{ - text_value = static_cast(m_opt.default_value.get())->get_at(m_opt_idx); + text_value = m_opt.get_default_value()->get_at(m_opt_idx); size_t idx = 0; for (auto el : m_opt.enum_values) @@ -886,7 +886,7 @@ void ColourPicker::BUILD() if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit); // Validate the color - wxString clr_str(static_cast(m_opt.default_value.get())->get_at(m_opt_idx)); + wxString clr_str(m_opt.get_default_value()->get_at(m_opt_idx)); wxColour clr(clr_str); if (! clr.IsOk()) { clr = wxTransparentColour; @@ -920,7 +920,7 @@ void PointCtrl::BUILD() const wxSize field_size(4 * m_em_unit, -1); - auto default_pt = static_cast(m_opt.default_value.get())->values.at(0); + auto default_pt = m_opt.get_default_value()->values.at(0); double val = default_pt(0); wxString X = val - int(val) == 0 ? wxString::Format(_T("%i"), int(val)) : wxNumberFormatter::ToString(val, 2, wxNumberFormatter::Style_None); val = default_pt(1); @@ -1019,7 +1019,7 @@ void StaticText::BUILD() if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit); if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit); - const wxString legend(static_cast(m_opt.default_value.get())->value); + const wxString legend(m_opt.get_default_value()->value); auto temp = new wxStaticText(m_parent, wxID_ANY, legend, wxDefaultPosition, size, wxST_ELLIPSIZE_MIDDLE); temp->SetFont(Slic3r::GUI::wxGetApp().normal_font()); temp->SetBackgroundStyle(wxBG_STYLE_PAINT); @@ -1054,7 +1054,7 @@ void SliderCtrl::BUILD() auto temp = new wxBoxSizer(wxHORIZONTAL); - auto def_val = static_cast(m_opt.default_value.get())->value; + auto def_val = m_opt.get_default_value()->value; auto min = m_opt.min == INT_MIN ? 0 : m_opt.min; auto max = m_opt.max == INT_MAX ? 100 : m_opt.max; From 8e007c5b6ac5142df4eb83a62a014f8d8f884b4a Mon Sep 17 00:00:00 2001 From: YuSanka Date: Sat, 4 May 2019 02:07:07 +0200 Subject: [PATCH 59/94] Localization improvements --- resources/localization/Slic3rPE.pot | 2199 +++++++++--------- src/libslic3r/Print.cpp | 11 +- src/libslic3r/PrintConfig.cpp | 16 +- src/libslic3r/PrintObject.cpp | 13 +- src/slic3r/GUI/BackgroundSlicingProcess.cpp | 18 +- src/slic3r/GUI/GLCanvas3D.cpp | 2 +- src/slic3r/GUI/GUI_ObjectSettings.cpp | 2 +- src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp | 2 +- src/slic3r/GUI/KBShortcutsDialog.cpp | 10 +- src/slic3r/GUI/MainFrame.cpp | 2 + src/slic3r/GUI/Plater.cpp | 10 +- src/slic3r/GUI/Tab.cpp | 6 +- src/slic3r/GUI/wxExtensions.cpp | 24 +- src/slic3r/GUI/wxExtensions.hpp | 23 +- 14 files changed, 1217 insertions(+), 1121 deletions(-) diff --git a/resources/localization/Slic3rPE.pot b/resources/localization/Slic3rPE.pot index 098fc7d07c..be2a344c9c 100644 --- a/resources/localization/Slic3rPE.pot +++ b/resources/localization/Slic3rPE.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-26 11:00+0200\n" +"POT-Creation-Date: 2019-05-04 01:38+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,7 +22,7 @@ msgstr "" msgid "About %s" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:67 src/slic3r/GUI/MainFrame.cpp:52 +#: src/slic3r/GUI/AboutDialog.cpp:67 src/slic3r/GUI/MainFrame.cpp:53 msgid "Version" msgstr "" @@ -35,7 +35,7 @@ msgid "Rectangular" msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:72 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:118 src/slic3r/GUI/Plater.cpp:137 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:153 src/slic3r/GUI/Plater.cpp:137 #: src/slic3r/GUI/Tab.cpp:2257 msgid "Size" msgstr "" @@ -60,37 +60,37 @@ msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:87 src/slic3r/GUI/ConfigWizard.cpp:118 #: src/slic3r/GUI/ConfigWizard.cpp:561 src/slic3r/GUI/ConfigWizard.cpp:575 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:115 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:150 #: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:84 #: src/libslic3r/PrintConfig.cpp:59 src/libslic3r/PrintConfig.cpp:66 -#: src/libslic3r/PrintConfig.cpp:75 src/libslic3r/PrintConfig.cpp:209 -#: src/libslic3r/PrintConfig.cpp:284 src/libslic3r/PrintConfig.cpp:292 -#: src/libslic3r/PrintConfig.cpp:342 src/libslic3r/PrintConfig.cpp:352 -#: src/libslic3r/PrintConfig.cpp:472 src/libslic3r/PrintConfig.cpp:483 -#: src/libslic3r/PrintConfig.cpp:501 src/libslic3r/PrintConfig.cpp:679 -#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1226 -#: src/libslic3r/PrintConfig.cpp:1244 src/libslic3r/PrintConfig.cpp:1262 -#: src/libslic3r/PrintConfig.cpp:1314 src/libslic3r/PrintConfig.cpp:1324 -#: src/libslic3r/PrintConfig.cpp:1445 src/libslic3r/PrintConfig.cpp:1453 -#: src/libslic3r/PrintConfig.cpp:1494 src/libslic3r/PrintConfig.cpp:1502 -#: src/libslic3r/PrintConfig.cpp:1512 src/libslic3r/PrintConfig.cpp:1520 -#: src/libslic3r/PrintConfig.cpp:1528 src/libslic3r/PrintConfig.cpp:1611 -#: src/libslic3r/PrintConfig.cpp:1827 src/libslic3r/PrintConfig.cpp:1897 -#: src/libslic3r/PrintConfig.cpp:1931 src/libslic3r/PrintConfig.cpp:2123 -#: src/libslic3r/PrintConfig.cpp:2130 src/libslic3r/PrintConfig.cpp:2137 -#: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2177 -#: src/libslic3r/PrintConfig.cpp:2187 src/libslic3r/PrintConfig.cpp:2295 -#: src/libslic3r/PrintConfig.cpp:2370 src/libslic3r/PrintConfig.cpp:2379 -#: src/libslic3r/PrintConfig.cpp:2388 src/libslic3r/PrintConfig.cpp:2398 -#: src/libslic3r/PrintConfig.cpp:2442 src/libslic3r/PrintConfig.cpp:2452 -#: src/libslic3r/PrintConfig.cpp:2471 src/libslic3r/PrintConfig.cpp:2481 -#: src/libslic3r/PrintConfig.cpp:2490 src/libslic3r/PrintConfig.cpp:2508 -#: src/libslic3r/PrintConfig.cpp:2523 src/libslic3r/PrintConfig.cpp:2537 -#: src/libslic3r/PrintConfig.cpp:2550 src/libslic3r/PrintConfig.cpp:2560 +#: src/libslic3r/PrintConfig.cpp:75 src/libslic3r/PrintConfig.cpp:210 +#: src/libslic3r/PrintConfig.cpp:285 src/libslic3r/PrintConfig.cpp:293 +#: src/libslic3r/PrintConfig.cpp:343 src/libslic3r/PrintConfig.cpp:353 +#: src/libslic3r/PrintConfig.cpp:473 src/libslic3r/PrintConfig.cpp:484 +#: src/libslic3r/PrintConfig.cpp:502 src/libslic3r/PrintConfig.cpp:680 +#: src/libslic3r/PrintConfig.cpp:1166 src/libslic3r/PrintConfig.cpp:1227 +#: src/libslic3r/PrintConfig.cpp:1245 src/libslic3r/PrintConfig.cpp:1263 +#: src/libslic3r/PrintConfig.cpp:1315 src/libslic3r/PrintConfig.cpp:1325 +#: src/libslic3r/PrintConfig.cpp:1446 src/libslic3r/PrintConfig.cpp:1454 +#: src/libslic3r/PrintConfig.cpp:1495 src/libslic3r/PrintConfig.cpp:1503 +#: src/libslic3r/PrintConfig.cpp:1513 src/libslic3r/PrintConfig.cpp:1521 +#: src/libslic3r/PrintConfig.cpp:1529 src/libslic3r/PrintConfig.cpp:1612 +#: src/libslic3r/PrintConfig.cpp:1828 src/libslic3r/PrintConfig.cpp:1898 +#: src/libslic3r/PrintConfig.cpp:1932 src/libslic3r/PrintConfig.cpp:2125 +#: src/libslic3r/PrintConfig.cpp:2132 src/libslic3r/PrintConfig.cpp:2139 +#: src/libslic3r/PrintConfig.cpp:2169 src/libslic3r/PrintConfig.cpp:2179 +#: src/libslic3r/PrintConfig.cpp:2189 src/libslic3r/PrintConfig.cpp:2297 +#: src/libslic3r/PrintConfig.cpp:2372 src/libslic3r/PrintConfig.cpp:2381 +#: src/libslic3r/PrintConfig.cpp:2390 src/libslic3r/PrintConfig.cpp:2400 +#: src/libslic3r/PrintConfig.cpp:2444 src/libslic3r/PrintConfig.cpp:2454 +#: src/libslic3r/PrintConfig.cpp:2473 src/libslic3r/PrintConfig.cpp:2483 +#: src/libslic3r/PrintConfig.cpp:2492 src/libslic3r/PrintConfig.cpp:2510 +#: src/libslic3r/PrintConfig.cpp:2525 src/libslic3r/PrintConfig.cpp:2539 +#: src/libslic3r/PrintConfig.cpp:2552 src/libslic3r/PrintConfig.cpp:2562 msgid "mm" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:88 src/libslic3r/PrintConfig.cpp:676 +#: src/slic3r/GUI/BedShapeDialog.cpp:88 src/libslic3r/PrintConfig.cpp:677 msgid "Diameter" msgstr "" @@ -117,7 +117,7 @@ msgstr "" msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/GUI_ObjectList.cpp:1359 +#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/GUI_ObjectList.cpp:1431 msgid "Error! " msgstr "" @@ -283,7 +283,7 @@ msgstr "" msgid "Welcome" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:298 src/slic3r/GUI/GUI_App.cpp:643 +#: src/slic3r/GUI/ConfigWizard.cpp:298 src/slic3r/GUI/GUI_App.cpp:658 #, possible-c-format msgid "Run %s" msgstr "" @@ -467,49 +467,49 @@ msgstr "" msgid "Bed Temperature:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1063 +#: src/slic3r/GUI/ConfigWizard.cpp:1089 msgid "Select all standard printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1066 +#: src/slic3r/GUI/ConfigWizard.cpp:1092 msgid "< &Back" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1067 +#: src/slic3r/GUI/ConfigWizard.cpp:1093 msgid "&Next >" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1068 +#: src/slic3r/GUI/ConfigWizard.cpp:1094 msgid "&Finish" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1069 src/slic3r/GUI/FirmwareDialog.cpp:147 +#: src/slic3r/GUI/ConfigWizard.cpp:1095 src/slic3r/GUI/FirmwareDialog.cpp:147 #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:37 #: src/slic3r/GUI/ProgressStatusBar.cpp:28 msgid "Cancel" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1083 +#: src/slic3r/GUI/ConfigWizard.cpp:1109 msgid "Prusa FFF Technology Printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1086 +#: src/slic3r/GUI/ConfigWizard.cpp:1112 msgid "Prusa MSLA Technology Printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1173 +#: src/slic3r/GUI/ConfigWizard.cpp:1181 msgid "Configuration Wizard" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1174 +#: src/slic3r/GUI/ConfigWizard.cpp:1182 msgid "Configuration &Wizard" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1176 +#: src/slic3r/GUI/ConfigWizard.cpp:1184 msgid "Configuration Assistant" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1177 +#: src/slic3r/GUI/ConfigWizard.cpp:1185 msgid "Configuration &Assistant" msgstr "" @@ -665,19 +665,19 @@ msgstr "" msgid "Cancelling..." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:715 +#: src/slic3r/GUI/GLCanvas3D.cpp:719 msgid "Detected object outside print volume" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:716 +#: src/slic3r/GUI/GLCanvas3D.cpp:720 msgid "Detected toolpath outside print volume" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:717 +#: src/slic3r/GUI/GLCanvas3D.cpp:721 msgid "Some objects are not visible when editing supports" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:719 +#: src/slic3r/GUI/GLCanvas3D.cpp:723 msgid "" "Detected object outside print volume\n" "Resolve a clash to continue slicing/export process correctly" @@ -701,7 +701,7 @@ msgstr "" msgid "Cut [C]" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:188 src/libslic3r/PrintConfig.cpp:3011 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:188 src/libslic3r/PrintConfig.cpp:3013 msgid "Cut" msgstr "" @@ -745,345 +745,349 @@ msgstr "" msgid "Scale (%)" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:892 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:838 msgid "Head diameter: " msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:905 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:851 msgid "Lock supports under new islands" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:909 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1291 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:855 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1237 msgid "Remove selected points" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:913 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:966 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:859 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:912 msgid "Remove all points" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:918 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1294 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:864 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1240 msgid "Apply changes" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:923 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1295 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:869 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1241 msgid "Discard changes" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:931 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:877 msgid "Minimal points distance: " msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:942 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:888 msgid "Support points density: " msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:956 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1297 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:902 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1243 msgid "Auto-generate points" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:962 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:908 msgid "Manual editing" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:982 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:926 +msgid "Clipping of view:" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:928 msgid "Reset direction" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1049 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:995 msgid "SLA Support Points [L]" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1076 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1022 msgid "Do you want to save your manually edited support points ?\n" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1077 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1023 msgid "Save changes?" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1220 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1166 msgid "" "Autogeneration will erase all manually edited points.\n" "\n" "Are you sure you want to do it?\n" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1222 src/slic3r/GUI/GUI.cpp:288 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1168 src/slic3r/GUI/GUI.cpp:283 #: src/slic3r/GUI/WipeTowerDialog.cpp:44 src/slic3r/GUI/WipeTowerDialog.cpp:328 msgid "Warning" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1254 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1200 msgid "SLA gizmo keyboard shortcuts" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1283 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1229 msgid "Add point" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1284 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1230 msgid "Remove point" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1285 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1231 msgid "Move point" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1286 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1232 msgid "Add point to selection" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1287 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1233 msgid "Remove point from selection" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1288 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1234 msgid "Select by rectangle" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1289 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1235 msgid "Deselect by rectangle" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1290 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1236 msgid "Select all points" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1292 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1238 msgid "Move clipping plane" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1293 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1239 msgid "Reset clipping plane" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1296 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1242 msgid "Switch to editing mode" msgstr "" -#: src/slic3r/GUI/GUI.cpp:147 src/slic3r/GUI/Tab.cpp:2796 +#: src/slic3r/GUI/GUI.cpp:142 src/slic3r/GUI/Tab.cpp:2796 msgid "It's impossible to print multi-part object(s) with SLA technology." msgstr "" -#: src/slic3r/GUI/GUI.cpp:148 +#: src/slic3r/GUI/GUI.cpp:143 msgid "Please check and fix your object list." msgstr "" -#: src/slic3r/GUI/GUI.cpp:149 src/slic3r/GUI/GUI_App.cpp:728 +#: src/slic3r/GUI/GUI.cpp:144 src/slic3r/GUI/GUI_App.cpp:743 #: src/slic3r/GUI/Tab.cpp:2798 msgid "Attention!" msgstr "" -#: src/slic3r/GUI/GUI.cpp:282 +#: src/slic3r/GUI/GUI.cpp:277 msgid "Notice" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:363 +#: src/slic3r/GUI/GUI_App.cpp:378 msgid "Changing of an application language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:371 src/slic3r/GUI/GUI_App.cpp:380 +#: src/slic3r/GUI/GUI_App.cpp:386 src/slic3r/GUI/GUI_App.cpp:395 msgid "Recreating" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:384 +#: src/slic3r/GUI/GUI_App.cpp:399 msgid "Loading of current presets" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:392 +#: src/slic3r/GUI/GUI_App.cpp:407 msgid "Loading of a mode view" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:474 +#: src/slic3r/GUI/GUI_App.cpp:489 msgid "Choose one file (3MF):" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:486 +#: src/slic3r/GUI/GUI_App.cpp:501 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:499 +#: src/slic3r/GUI/GUI_App.cpp:514 msgid "Array of language names and identifiers should have the same size." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:509 +#: src/slic3r/GUI/GUI_App.cpp:524 msgid "Select the language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:509 +#: src/slic3r/GUI/GUI_App.cpp:524 msgid "Language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:579 src/slic3r/GUI/GUI_ObjectList.cpp:1175 -#: src/libslic3r/PrintConfig.cpp:298 +#: src/slic3r/GUI/GUI_App.cpp:594 src/slic3r/GUI/GUI_ObjectList.cpp:1245 +#: src/libslic3r/PrintConfig.cpp:299 msgid "Default" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:646 +#: src/slic3r/GUI/GUI_App.cpp:661 msgid "&Configuration Snapshots" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:646 +#: src/slic3r/GUI/GUI_App.cpp:661 msgid "Inspect / activate configuration snapshots" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:647 +#: src/slic3r/GUI/GUI_App.cpp:662 msgid "Take Configuration &Snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:647 +#: src/slic3r/GUI/GUI_App.cpp:662 msgid "Capture a configuration snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:650 +#: src/slic3r/GUI/GUI_App.cpp:665 msgid "&Preferences" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:656 +#: src/slic3r/GUI/GUI_App.cpp:671 msgid "Application preferences" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:659 src/slic3r/GUI/wxExtensions.cpp:2374 +#: src/slic3r/GUI/GUI_App.cpp:674 src/slic3r/GUI/wxExtensions.cpp:2459 msgid "Simple" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:659 +#: src/slic3r/GUI/GUI_App.cpp:674 msgid "Simple View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:660 src/slic3r/GUI/GUI_ObjectList.cpp:76 -#: src/slic3r/GUI/GUI_ObjectList.cpp:458 src/slic3r/GUI/Tab.cpp:1026 +#: src/slic3r/GUI/GUI_App.cpp:675 src/slic3r/GUI/GUI_ObjectList.cpp:76 +#: src/slic3r/GUI/GUI_ObjectList.cpp:517 src/slic3r/GUI/Tab.cpp:1026 #: src/slic3r/GUI/Tab.cpp:1041 src/slic3r/GUI/Tab.cpp:1139 #: src/slic3r/GUI/Tab.cpp:1142 src/slic3r/GUI/Tab.cpp:1515 #: src/slic3r/GUI/Tab.cpp:1940 src/slic3r/GUI/Tab.cpp:3435 -#: src/slic3r/GUI/wxExtensions.cpp:2375 src/libslic3r/PrintConfig.cpp:72 -#: src/libslic3r/PrintConfig.cpp:186 src/libslic3r/PrintConfig.cpp:349 -#: src/libslic3r/PrintConfig.cpp:987 src/libslic3r/PrintConfig.cpp:2173 +#: src/slic3r/GUI/wxExtensions.cpp:2460 src/libslic3r/PrintConfig.cpp:72 +#: src/libslic3r/PrintConfig.cpp:187 src/libslic3r/PrintConfig.cpp:350 +#: src/libslic3r/PrintConfig.cpp:988 src/libslic3r/PrintConfig.cpp:2175 msgid "Advanced" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:660 +#: src/slic3r/GUI/GUI_App.cpp:675 msgid "Advanced View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:661 src/slic3r/GUI/wxExtensions.cpp:2376 +#: src/slic3r/GUI/GUI_App.cpp:676 src/slic3r/GUI/wxExtensions.cpp:2461 msgid "Expert" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:661 +#: src/slic3r/GUI/GUI_App.cpp:676 msgid "Expert View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:666 +#: src/slic3r/GUI/GUI_App.cpp:681 msgid "Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:666 +#: src/slic3r/GUI/GUI_App.cpp:681 #, possible-c-format msgid "%s View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:668 +#: src/slic3r/GUI/GUI_App.cpp:683 msgid "Change Application &Language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:670 +#: src/slic3r/GUI/GUI_App.cpp:685 msgid "Flash printer &firmware" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:670 +#: src/slic3r/GUI/GUI_App.cpp:685 msgid "Upload a firmware image into an Arduino based printer" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:682 +#: src/slic3r/GUI/GUI_App.cpp:697 msgid "Taking configuration snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:682 +#: src/slic3r/GUI/GUI_App.cpp:697 msgid "Snapshot name" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:725 +#: src/slic3r/GUI/GUI_App.cpp:740 msgid "Application will be restarted after language change." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:726 +#: src/slic3r/GUI/GUI_App.cpp:741 msgid "3D-Scene will be cleaned." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:727 +#: src/slic3r/GUI/GUI_App.cpp:742 msgid "Please, check your changes before." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:754 +#: src/slic3r/GUI/GUI_App.cpp:769 msgid "&Configuration" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:774 +#: src/slic3r/GUI/GUI_App.cpp:789 msgid "You have unsaved changes " msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:774 +#: src/slic3r/GUI/GUI_App.cpp:789 msgid ". Discard changes and continue anyway?" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:775 +#: src/slic3r/GUI/GUI_App.cpp:790 msgid "Unsaved Presets" msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:28 src/slic3r/GUI/GUI_ObjectList.cpp:68 -#: src/slic3r/GUI/GUI_ObjectList.cpp:450 src/libslic3r/PrintConfig.cpp:56 -#: src/libslic3r/PrintConfig.cpp:149 src/libslic3r/PrintConfig.cpp:380 -#: src/libslic3r/PrintConfig.cpp:437 src/libslic3r/PrintConfig.cpp:445 -#: src/libslic3r/PrintConfig.cpp:841 src/libslic3r/PrintConfig.cpp:1025 -#: src/libslic3r/PrintConfig.cpp:1304 src/libslic3r/PrintConfig.cpp:1370 -#: src/libslic3r/PrintConfig.cpp:1551 src/libslic3r/PrintConfig.cpp:1986 -#: src/libslic3r/PrintConfig.cpp:2042 +#: src/slic3r/GUI/GUI_ObjectList.cpp:509 src/libslic3r/PrintConfig.cpp:56 +#: src/libslic3r/PrintConfig.cpp:150 src/libslic3r/PrintConfig.cpp:381 +#: src/libslic3r/PrintConfig.cpp:438 src/libslic3r/PrintConfig.cpp:446 +#: src/libslic3r/PrintConfig.cpp:842 src/libslic3r/PrintConfig.cpp:1026 +#: src/libslic3r/PrintConfig.cpp:1305 src/libslic3r/PrintConfig.cpp:1371 +#: src/libslic3r/PrintConfig.cpp:1552 src/libslic3r/PrintConfig.cpp:1987 +#: src/libslic3r/PrintConfig.cpp:2044 msgid "Layers and Perimeters" msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:29 src/slic3r/GUI/GUI_ObjectList.cpp:69 -#: src/slic3r/GUI/GUI_ObjectList.cpp:451 src/slic3r/GUI/Plater.cpp:439 +#: src/slic3r/GUI/GUI_ObjectList.cpp:510 src/slic3r/GUI/Plater.cpp:439 #: src/slic3r/GUI/Tab.cpp:1030 src/slic3r/GUI/Tab.cpp:1031 -#: src/slic3r/GUI/Tab.cpp:1360 src/libslic3r/PrintConfig.cpp:166 -#: src/libslic3r/PrintConfig.cpp:388 src/libslic3r/PrintConfig.cpp:728 -#: src/libslic3r/PrintConfig.cpp:742 src/libslic3r/PrintConfig.cpp:779 -#: src/libslic3r/PrintConfig.cpp:932 src/libslic3r/PrintConfig.cpp:942 -#: src/libslic3r/PrintConfig.cpp:960 src/libslic3r/PrintConfig.cpp:978 -#: src/libslic3r/PrintConfig.cpp:997 src/libslic3r/PrintConfig.cpp:1658 -#: src/libslic3r/PrintConfig.cpp:1675 +#: src/slic3r/GUI/Tab.cpp:1360 src/libslic3r/PrintConfig.cpp:167 +#: src/libslic3r/PrintConfig.cpp:389 src/libslic3r/PrintConfig.cpp:729 +#: src/libslic3r/PrintConfig.cpp:743 src/libslic3r/PrintConfig.cpp:780 +#: src/libslic3r/PrintConfig.cpp:933 src/libslic3r/PrintConfig.cpp:943 +#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:979 +#: src/libslic3r/PrintConfig.cpp:998 src/libslic3r/PrintConfig.cpp:1659 +#: src/libslic3r/PrintConfig.cpp:1676 msgid "Infill" msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:30 src/slic3r/GUI/GUI_ObjectList.cpp:70 -#: src/slic3r/GUI/GUI_ObjectList.cpp:452 src/slic3r/GUI/GUI_Preview.cpp:236 +#: src/slic3r/GUI/GUI_ObjectList.cpp:511 src/slic3r/GUI/GUI_Preview.cpp:236 #: src/slic3r/GUI/Tab.cpp:1059 src/slic3r/GUI/Tab.cpp:1060 -#: src/libslic3r/PrintConfig.cpp:333 src/libslic3r/PrintConfig.cpp:1431 -#: src/libslic3r/PrintConfig.cpp:1779 src/libslic3r/PrintConfig.cpp:1785 -#: src/libslic3r/PrintConfig.cpp:1793 src/libslic3r/PrintConfig.cpp:1805 -#: src/libslic3r/PrintConfig.cpp:1815 src/libslic3r/PrintConfig.cpp:1823 -#: src/libslic3r/PrintConfig.cpp:1838 src/libslic3r/PrintConfig.cpp:1859 -#: src/libslic3r/PrintConfig.cpp:1870 src/libslic3r/PrintConfig.cpp:1886 -#: src/libslic3r/PrintConfig.cpp:1895 src/libslic3r/PrintConfig.cpp:1904 -#: src/libslic3r/PrintConfig.cpp:1915 src/libslic3r/PrintConfig.cpp:1929 -#: src/libslic3r/PrintConfig.cpp:1937 src/libslic3r/PrintConfig.cpp:1938 -#: src/libslic3r/PrintConfig.cpp:1947 src/libslic3r/PrintConfig.cpp:1955 -#: src/libslic3r/PrintConfig.cpp:1969 src/libslic3r/GCode/PreviewData.cpp:172 +#: src/libslic3r/PrintConfig.cpp:334 src/libslic3r/PrintConfig.cpp:1432 +#: src/libslic3r/PrintConfig.cpp:1780 src/libslic3r/PrintConfig.cpp:1786 +#: src/libslic3r/PrintConfig.cpp:1794 src/libslic3r/PrintConfig.cpp:1806 +#: src/libslic3r/PrintConfig.cpp:1816 src/libslic3r/PrintConfig.cpp:1824 +#: src/libslic3r/PrintConfig.cpp:1839 src/libslic3r/PrintConfig.cpp:1860 +#: src/libslic3r/PrintConfig.cpp:1871 src/libslic3r/PrintConfig.cpp:1887 +#: src/libslic3r/PrintConfig.cpp:1896 src/libslic3r/PrintConfig.cpp:1905 +#: src/libslic3r/PrintConfig.cpp:1916 src/libslic3r/PrintConfig.cpp:1930 +#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1939 +#: src/libslic3r/PrintConfig.cpp:1948 src/libslic3r/PrintConfig.cpp:1956 +#: src/libslic3r/PrintConfig.cpp:1970 src/libslic3r/GCode/PreviewData.cpp:172 msgid "Support material" msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_ObjectList.cpp:72 -#: src/slic3r/GUI/GUI_ObjectList.cpp:454 src/slic3r/GUI/Tab.cpp:1119 -#: src/slic3r/GUI/Tab.cpp:1844 src/libslic3r/PrintConfig.cpp:455 -#: src/libslic3r/PrintConfig.cpp:953 src/libslic3r/PrintConfig.cpp:1339 -#: src/libslic3r/PrintConfig.cpp:1667 src/libslic3r/PrintConfig.cpp:1851 -#: src/libslic3r/PrintConfig.cpp:1877 src/libslic3r/PrintConfig.cpp:2149 -#: src/libslic3r/PrintConfig.cpp:2157 +#: src/slic3r/GUI/GUI_ObjectList.cpp:513 src/slic3r/GUI/Tab.cpp:1119 +#: src/slic3r/GUI/Tab.cpp:1844 src/libslic3r/PrintConfig.cpp:456 +#: src/libslic3r/PrintConfig.cpp:954 src/libslic3r/PrintConfig.cpp:1340 +#: src/libslic3r/PrintConfig.cpp:1668 src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:1878 src/libslic3r/PrintConfig.cpp:2151 +#: src/libslic3r/PrintConfig.cpp:2159 msgid "Extruders" msgstr "" @@ -1091,339 +1095,340 @@ msgstr "" msgid "Pad and Support" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:71 src/slic3r/GUI/GUI_ObjectList.cpp:453 +#: src/slic3r/GUI/GUI_ObjectList.cpp:71 src/slic3r/GUI/GUI_ObjectList.cpp:512 #: src/slic3r/GUI/GUI_Preview.cpp:215 src/slic3r/GUI/Tab.cpp:1084 -#: src/libslic3r/PrintConfig.cpp:198 src/libslic3r/PrintConfig.cpp:425 -#: src/libslic3r/PrintConfig.cpp:870 src/libslic3r/PrintConfig.cpp:998 -#: src/libslic3r/PrintConfig.cpp:1360 src/libslic3r/PrintConfig.cpp:1597 -#: src/libslic3r/PrintConfig.cpp:1646 src/libslic3r/PrintConfig.cpp:1697 -#: src/libslic3r/PrintConfig.cpp:2028 +#: src/libslic3r/PrintConfig.cpp:199 src/libslic3r/PrintConfig.cpp:426 +#: src/libslic3r/PrintConfig.cpp:871 src/libslic3r/PrintConfig.cpp:999 +#: src/libslic3r/PrintConfig.cpp:1361 src/libslic3r/PrintConfig.cpp:1598 +#: src/libslic3r/PrintConfig.cpp:1647 src/libslic3r/PrintConfig.cpp:1698 +#: src/libslic3r/PrintConfig.cpp:2029 msgid "Speed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:73 src/slic3r/GUI/GUI_ObjectList.cpp:455 -#: src/libslic3r/PrintConfig.cpp:415 src/libslic3r/PrintConfig.cpp:522 -#: src/libslic3r/PrintConfig.cpp:829 src/libslic3r/PrintConfig.cpp:961 -#: src/libslic3r/PrintConfig.cpp:1348 src/libslic3r/PrintConfig.cpp:1687 -#: src/libslic3r/PrintConfig.cpp:1860 src/libslic3r/PrintConfig.cpp:2017 +#: src/slic3r/GUI/GUI_ObjectList.cpp:73 src/slic3r/GUI/GUI_ObjectList.cpp:514 +#: src/libslic3r/PrintConfig.cpp:416 src/libslic3r/PrintConfig.cpp:523 +#: src/libslic3r/PrintConfig.cpp:830 src/libslic3r/PrintConfig.cpp:962 +#: src/libslic3r/PrintConfig.cpp:1349 src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1861 src/libslic3r/PrintConfig.cpp:2018 msgid "Extrusion Width" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:78 src/slic3r/GUI/GUI_ObjectList.cpp:460 +#: src/slic3r/GUI/GUI_ObjectList.cpp:78 src/slic3r/GUI/GUI_ObjectList.cpp:519 #: src/slic3r/GUI/Plater.cpp:418 src/slic3r/GUI/Tab.cpp:3397 -#: src/slic3r/GUI/Tab.cpp:3398 src/libslic3r/PrintConfig.cpp:2361 -#: src/libslic3r/PrintConfig.cpp:2368 src/libslic3r/PrintConfig.cpp:2377 -#: src/libslic3r/PrintConfig.cpp:2386 src/libslic3r/PrintConfig.cpp:2396 -#: src/libslic3r/PrintConfig.cpp:2422 src/libslic3r/PrintConfig.cpp:2429 -#: src/libslic3r/PrintConfig.cpp:2440 src/libslic3r/PrintConfig.cpp:2450 -#: src/libslic3r/PrintConfig.cpp:2459 src/libslic3r/PrintConfig.cpp:2469 -#: src/libslic3r/PrintConfig.cpp:2478 src/libslic3r/PrintConfig.cpp:2488 -#: src/libslic3r/PrintConfig.cpp:2498 src/libslic3r/PrintConfig.cpp:2506 +#: src/slic3r/GUI/Tab.cpp:3398 src/libslic3r/PrintConfig.cpp:2363 +#: src/libslic3r/PrintConfig.cpp:2370 src/libslic3r/PrintConfig.cpp:2379 +#: src/libslic3r/PrintConfig.cpp:2388 src/libslic3r/PrintConfig.cpp:2398 +#: src/libslic3r/PrintConfig.cpp:2424 src/libslic3r/PrintConfig.cpp:2431 +#: src/libslic3r/PrintConfig.cpp:2442 src/libslic3r/PrintConfig.cpp:2452 +#: src/libslic3r/PrintConfig.cpp:2461 src/libslic3r/PrintConfig.cpp:2471 +#: src/libslic3r/PrintConfig.cpp:2480 src/libslic3r/PrintConfig.cpp:2490 +#: src/libslic3r/PrintConfig.cpp:2500 src/libslic3r/PrintConfig.cpp:2508 msgid "Supports" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:79 src/slic3r/GUI/GUI_ObjectList.cpp:461 +#: src/slic3r/GUI/GUI_ObjectList.cpp:79 src/slic3r/GUI/GUI_ObjectList.cpp:520 #: src/slic3r/GUI/Tab.cpp:3425 src/slic3r/GUI/Tab.cpp:3426 -#: src/libslic3r/PrintConfig.cpp:2514 src/libslic3r/PrintConfig.cpp:2521 -#: src/libslic3r/PrintConfig.cpp:2535 src/libslic3r/PrintConfig.cpp:2545 -#: src/libslic3r/PrintConfig.cpp:2558 src/libslic3r/PrintConfig.cpp:2567 +#: src/libslic3r/PrintConfig.cpp:2516 src/libslic3r/PrintConfig.cpp:2523 +#: src/libslic3r/PrintConfig.cpp:2537 src/libslic3r/PrintConfig.cpp:2547 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:2569 msgid "Pad" msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:176 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:45 msgid "Name" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:204 -msgid "Right button click the icon to change the object settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:212 +#: src/slic3r/GUI/GUI_ObjectList.cpp:230 #, possible-c-format msgid "Auto-repaired (%d errors):\n" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:215 +#: src/slic3r/GUI/GUI_ObjectList.cpp:237 msgid "degenerate facets" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:216 +#: src/slic3r/GUI/GUI_ObjectList.cpp:238 msgid "edges fixed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:217 +#: src/slic3r/GUI/GUI_ObjectList.cpp:239 msgid "facets removed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:218 +#: src/slic3r/GUI/GUI_ObjectList.cpp:240 msgid "facets added" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:219 +#: src/slic3r/GUI/GUI_ObjectList.cpp:241 msgid "facets reversed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:220 +#: src/slic3r/GUI/GUI_ObjectList.cpp:242 msgid "backwards edges" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:234 +#: src/slic3r/GUI/GUI_ObjectList.cpp:250 msgid "Right button click the icon to fix STL through Netfabb" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:281 src/slic3r/GUI/Tab.cpp:1479 -#: src/libslic3r/PrintConfig.cpp:454 +#: src/slic3r/GUI/GUI_ObjectList.cpp:279 +msgid "Right button click the icon to change the object settings" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:335 src/slic3r/GUI/Tab.cpp:1479 +#: src/libslic3r/PrintConfig.cpp:455 msgid "Extruder" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:791 src/slic3r/GUI/GUI_ObjectList.cpp:1071 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1077 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1307 +#: src/slic3r/GUI/GUI_ObjectList.cpp:854 src/slic3r/GUI/GUI_ObjectList.cpp:1139 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1145 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1377 #, possible-c-format msgid "Quick Add Settings (%s)" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:854 +#: src/slic3r/GUI/GUI_ObjectList.cpp:917 msgid "Select showing settings" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:982 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1050 msgid "Load" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:987 src/slic3r/GUI/GUI_ObjectList.cpp:1019 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1022 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1055 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1087 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1090 msgid "Box" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:987 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1055 msgid "Cylinder" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:987 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1055 msgid "Sphere" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:987 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1055 msgid "Slab" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:998 src/slic3r/GUI/GUI_ObjectList.cpp:1014 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1066 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1082 msgid "Add part" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:999 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1067 msgid "Add modifier" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1000 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1018 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1068 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1086 msgid "Add support enforcer" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1001 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1021 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1069 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1089 msgid "Add support blocker" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1042 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1110 msgid "Split to parts" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1050 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1118 msgid "Add settings" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1117 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1185 msgid "Change type" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1124 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1261 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1192 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1331 msgid "Set as a Separated Object" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1132 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1200 msgid "Rename" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1142 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1210 msgid "Fix through the Netfabb" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1149 src/slic3r/GUI/Plater.cpp:2927 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1219 src/slic3r/GUI/Plater.cpp:2927 msgid "Export as STL" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1156 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1226 msgid "Change extruder" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1181 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1251 msgid "Select new extruder for the object/part" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1187 src/slic3r/GUI/Plater.cpp:2891 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1257 src/slic3r/GUI/Plater.cpp:2891 #: src/slic3r/GUI/Plater.cpp:2909 src/slic3r/GUI/Tab.cpp:2937 msgid "Delete" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1261 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1331 msgid "Set as a Separated Objects" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1479 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1551 msgid "Generic" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1617 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1694 msgid "You can't delete the last solid part from object." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1634 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1711 msgid "You can't delete the last intance from object." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1660 src/slic3r/GUI/Plater.cpp:2279 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1737 src/slic3r/GUI/Plater.cpp:2279 msgid "" "The selected object couldn't be split because it contains only one part." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1768 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1846 msgid "Group manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1780 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 msgid "Object manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1790 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 msgid "Object Settings to modify" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1794 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1872 msgid "Part Settings to modify" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1881 msgid "Part manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1809 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1887 msgid "Instance manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2333 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 msgid "Object or Instance" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2333 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 msgid "Part" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2335 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2414 msgid "Unsupported selection" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2336 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2415 #, possible-c-format msgid "You started your selection with %s Item." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2337 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2416 #, possible-c-format msgid "In this mode you can select only other %s Items%s" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2340 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2419 msgid "of a current Object" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2345 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2418 src/slic3r/GUI/Plater.cpp:118 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2424 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2497 src/slic3r/GUI/Plater.cpp:118 msgid "Info" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2459 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2538 msgid "You can't change a type of the last solid part of the object." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2466 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2545 msgid "Select type of part" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2630 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2709 msgid "Enter new name" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2630 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2709 msgid "Renaming" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2646 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2742 src/slic3r/GUI/Tab.cpp:3278 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2725 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2812 src/slic3r/GUI/Tab.cpp:3278 #: src/slic3r/GUI/Tab.cpp:3282 msgid "The supplied name is not valid;" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2647 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2743 src/slic3r/GUI/Tab.cpp:3279 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2726 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2813 src/slic3r/GUI/Tab.cpp:3279 msgid "the following characters are not allowed:" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2763 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2833 msgid "Set extruder for selected items" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2764 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2834 msgid "Select extruder number for selected objects and/or parts" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2777 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2847 msgid "Select extruder number:" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2778 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2848 msgid "This extruder will be set for selected items" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:25 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:27 msgid "Object Manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:47 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:78 msgid "Object name" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:115 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:158 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:150 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:193 msgid "Position" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:116 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:159 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:151 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:194 msgid "Rotation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:117 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:199 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:219 -#: src/libslic3r/PrintConfig.cpp:3075 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:152 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:234 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:254 +#: src/libslic3r/PrintConfig.cpp:3077 msgid "Scale" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:160 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:195 msgid "Scale factors" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:198 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:218 -#: src/libslic3r/PrintConfig.cpp:3060 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:233 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:253 +#: src/libslic3r/PrintConfig.cpp:3062 msgid "Rotate" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:217 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:252 msgid "Translate" msgstr "" @@ -1440,11 +1445,11 @@ msgstr "" msgid "Feature type" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:213 src/libslic3r/PrintConfig.cpp:467 +#: src/slic3r/GUI/GUI_Preview.cpp:213 src/libslic3r/PrintConfig.cpp:468 msgid "Height" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:214 src/libslic3r/PrintConfig.cpp:2135 +#: src/slic3r/GUI/GUI_Preview.cpp:214 src/libslic3r/PrintConfig.cpp:2137 msgid "Width" msgstr "" @@ -1487,13 +1492,13 @@ msgstr "" msgid "Internal infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:231 src/libslic3r/PrintConfig.cpp:1686 -#: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/GCode/PreviewData.cpp:167 +#: src/slic3r/GUI/GUI_Preview.cpp:231 src/libslic3r/PrintConfig.cpp:1687 +#: src/libslic3r/PrintConfig.cpp:1697 src/libslic3r/GCode/PreviewData.cpp:167 msgid "Solid infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:232 src/libslic3r/PrintConfig.cpp:2016 -#: src/libslic3r/PrintConfig.cpp:2027 src/libslic3r/GCode/PreviewData.cpp:168 +#: src/slic3r/GUI/GUI_Preview.cpp:232 src/libslic3r/PrintConfig.cpp:2017 +#: src/libslic3r/PrintConfig.cpp:2028 src/libslic3r/GCode/PreviewData.cpp:168 msgid "Top solid infill" msgstr "" @@ -1501,7 +1506,7 @@ msgstr "" msgid "Bridge infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:234 src/libslic3r/PrintConfig.cpp:869 +#: src/slic3r/GUI/GUI_Preview.cpp:234 src/libslic3r/PrintConfig.cpp:870 #: src/libslic3r/GCode/PreviewData.cpp:170 msgid "Gap fill" msgstr "" @@ -1511,7 +1516,7 @@ msgstr "" msgid "Skirt" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/PrintConfig.cpp:1903 +#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/PrintConfig.cpp:1904 #: src/libslic3r/GCode/PreviewData.cpp:173 msgid "Support material interface" msgstr "" @@ -1521,7 +1526,7 @@ msgstr "" msgid "Wipe tower" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/PrintConfig.cpp:2049 +#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/PrintConfig.cpp:2051 msgid "Travel" msgstr "" @@ -1537,7 +1542,7 @@ msgstr "" msgid "Shells" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 src/slic3r/GUI/MainFrame.cpp:516 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 src/slic3r/GUI/MainFrame.cpp:566 msgid "Keyboard Shortcuts" msgstr "" @@ -1554,7 +1559,7 @@ msgid "Load Config from .ini/amf/3mf/gcode" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:108 src/slic3r/GUI/Plater.cpp:733 -#: src/slic3r/GUI/Plater.cpp:3748 src/libslic3r/PrintConfig.cpp:2962 +#: src/slic3r/GUI/Plater.cpp:3821 src/libslic3r/PrintConfig.cpp:2964 msgid "Export G-code" msgstr "" @@ -1574,7 +1579,7 @@ msgstr "" msgid "Quick slice" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 src/slic3r/GUI/MainFrame.cpp:349 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 src/slic3r/GUI/MainFrame.cpp:395 msgid "Repeat last quick slice" msgstr "" @@ -1632,7 +1637,7 @@ msgid "Show keyboard shortcuts list" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:127 -msgid "Select multiple object/Move multiple object" +msgid "Press to select multiple object or move multiple object with mouse" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:129 @@ -1788,511 +1793,531 @@ msgstr "" msgid "Layers Slider Shortcuts" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:54 +#: src/slic3r/GUI/MainFrame.cpp:55 msgid "" " - Remember to check for updates at http://github.com/prusa3d/slic3r/releases" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:160 +#: src/slic3r/GUI/MainFrame.cpp:161 msgid "Plater" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:296 +#: src/slic3r/GUI/MainFrame.cpp:339 msgid "&Open Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:296 +#: src/slic3r/GUI/MainFrame.cpp:339 msgid "Open a project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:298 +#: src/slic3r/GUI/MainFrame.cpp:341 msgid "&Save Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:298 +#: src/slic3r/GUI/MainFrame.cpp:341 msgid "Save current project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:300 +#: src/slic3r/GUI/MainFrame.cpp:343 msgid "Save Project &as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:300 +#: src/slic3r/GUI/MainFrame.cpp:343 msgid "Save current project file as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:306 +#: src/slic3r/GUI/MainFrame.cpp:349 msgid "Import STL/OBJ/AM&F/3MF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:306 +#: src/slic3r/GUI/MainFrame.cpp:349 msgid "Load a model" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:309 +#: src/slic3r/GUI/MainFrame.cpp:352 msgid "Import &Config" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:309 +#: src/slic3r/GUI/MainFrame.cpp:352 msgid "Load exported configuration file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:311 +#: src/slic3r/GUI/MainFrame.cpp:354 msgid "Import Config from &project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:311 +#: src/slic3r/GUI/MainFrame.cpp:354 msgid "Load configuration from project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:314 +#: src/slic3r/GUI/MainFrame.cpp:357 msgid "Import Config &Bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:314 +#: src/slic3r/GUI/MainFrame.cpp:357 msgid "Load presets from a bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:316 +#: src/slic3r/GUI/MainFrame.cpp:359 msgid "&Import" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:319 +#: src/slic3r/GUI/MainFrame.cpp:362 src/slic3r/GUI/MainFrame.cpp:602 msgid "Export &G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:319 +#: src/slic3r/GUI/MainFrame.cpp:362 msgid "Export current plate as G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:322 +#: src/slic3r/GUI/MainFrame.cpp:366 msgid "Export plate as &STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:322 +#: src/slic3r/GUI/MainFrame.cpp:366 msgid "Export current plate as STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:324 +#: src/slic3r/GUI/MainFrame.cpp:368 +msgid "Export plate as STL including supports" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:368 +msgid "Export current plate as STL including supports" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:370 msgid "Export plate as &AMF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:324 +#: src/slic3r/GUI/MainFrame.cpp:370 msgid "Export current plate as AMF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:327 +#: src/slic3r/GUI/MainFrame.cpp:373 msgid "Export &Config" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:327 +#: src/slic3r/GUI/MainFrame.cpp:373 msgid "Export current configuration to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:329 +#: src/slic3r/GUI/MainFrame.cpp:375 msgid "Export Config &Bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:329 +#: src/slic3r/GUI/MainFrame.cpp:375 msgid "Export all presets to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:331 +#: src/slic3r/GUI/MainFrame.cpp:377 msgid "&Export" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:337 +#: src/slic3r/GUI/MainFrame.cpp:383 msgid "Quick Slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:337 +#: src/slic3r/GUI/MainFrame.cpp:383 msgid "Slice a file into a G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:343 +#: src/slic3r/GUI/MainFrame.cpp:389 msgid "Quick Slice and Save As" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:343 +#: src/slic3r/GUI/MainFrame.cpp:389 msgid "Slice a file into a G-code, save as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:349 +#: src/slic3r/GUI/MainFrame.cpp:395 msgid "Repeat Last Quick Slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:357 +#: src/slic3r/GUI/MainFrame.cpp:403 msgid "(Re)Slice &Now" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:357 +#: src/slic3r/GUI/MainFrame.cpp:403 msgid "Start new slicing process" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:360 +#: src/slic3r/GUI/MainFrame.cpp:406 msgid "&Repair STL file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:360 +#: src/slic3r/GUI/MainFrame.cpp:406 msgid "Automatically repair an STL file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:363 +#: src/slic3r/GUI/MainFrame.cpp:409 msgid "&Quit" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:363 +#: src/slic3r/GUI/MainFrame.cpp:409 #, possible-c-format msgid "Quit %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:397 +#: src/slic3r/GUI/MainFrame.cpp:444 msgid "&Select all" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:397 +#: src/slic3r/GUI/MainFrame.cpp:444 msgid "Selects all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:400 +#: src/slic3r/GUI/MainFrame.cpp:447 msgid "&Delete selected" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:400 +#: src/slic3r/GUI/MainFrame.cpp:447 msgid "Deletes the current selection" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:402 +#: src/slic3r/GUI/MainFrame.cpp:449 msgid "Delete &all" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:402 +#: src/slic3r/GUI/MainFrame.cpp:449 msgid "Deletes all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:407 +#: src/slic3r/GUI/MainFrame.cpp:454 msgid "&Copy" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:407 +#: src/slic3r/GUI/MainFrame.cpp:454 msgid "Copy selection to clipboard" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:409 +#: src/slic3r/GUI/MainFrame.cpp:456 msgid "&Paste" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:409 +#: src/slic3r/GUI/MainFrame.cpp:456 msgid "Paste clipboard" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:424 +#: src/slic3r/GUI/MainFrame.cpp:471 msgid "&Plater Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:424 +#: src/slic3r/GUI/MainFrame.cpp:471 msgid "Show the plater" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:431 +#: src/slic3r/GUI/MainFrame.cpp:478 msgid "P&rint Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:431 +#: src/slic3r/GUI/MainFrame.cpp:478 msgid "Show the print settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:433 +#: src/slic3r/GUI/MainFrame.cpp:480 src/slic3r/GUI/MainFrame.cpp:604 msgid "&Filament Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:433 +#: src/slic3r/GUI/MainFrame.cpp:480 msgid "Show the filament settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:435 +#: src/slic3r/GUI/MainFrame.cpp:483 msgid "Print&er Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:435 +#: src/slic3r/GUI/MainFrame.cpp:483 msgid "Show the printer settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:439 +#: src/slic3r/GUI/MainFrame.cpp:487 msgid "3&D" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:439 +#: src/slic3r/GUI/MainFrame.cpp:487 msgid "Show the 3D editing view" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:441 +#: src/slic3r/GUI/MainFrame.cpp:489 msgid "Pre&view" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:441 +#: src/slic3r/GUI/MainFrame.cpp:489 msgid "Show the 3D slices preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:462 +#: src/slic3r/GUI/MainFrame.cpp:510 msgid "Print &Host Upload Queue" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:462 +#: src/slic3r/GUI/MainFrame.cpp:510 msgid "Display the Print Host Upload Queue window" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:519 msgid "Iso" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:519 msgid "Iso View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:473 +#. TRN To be shown in the main menu View->Top +#: src/slic3r/GUI/MainFrame.cpp:522 msgid "Top" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2041 +#. TRN To be shown in Print Settings "Top solid layers" +#: src/libslic3r/PrintConfig.cpp:2043 msgctxt "Layers" msgid "Top" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:473 +#: src/slic3r/GUI/MainFrame.cpp:522 msgid "Top View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:474 +#. TRN To be shown in the main menu View->Bottom +#: src/slic3r/GUI/MainFrame.cpp:524 msgid "Bottom" msgstr "" -#: src/libslic3r/PrintConfig.cpp:148 -msgid "Bottom" +#. TRN To be shown in Print Settings "Bottom solid layers" +#: rc/libslic3r/PrintConfig.cpp:149 msgctxt "Layers" +msgid "Bottom" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:474 +#: src/slic3r/GUI/MainFrame.cpp:524 msgid "Bottom View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:475 +#: src/slic3r/GUI/MainFrame.cpp:525 msgid "Front" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:475 +#: src/slic3r/GUI/MainFrame.cpp:525 msgid "Front View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:476 src/libslic3r/PrintConfig.cpp:1561 +#: src/slic3r/GUI/MainFrame.cpp:526 src/libslic3r/PrintConfig.cpp:1562 msgid "Rear" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:476 +#: src/slic3r/GUI/MainFrame.cpp:526 msgid "Rear View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:477 +#: src/slic3r/GUI/MainFrame.cpp:527 msgid "Left" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:477 +#: src/slic3r/GUI/MainFrame.cpp:527 msgid "Left View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:478 +#: src/slic3r/GUI/MainFrame.cpp:528 msgid "Right" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:478 +#: src/slic3r/GUI/MainFrame.cpp:528 msgid "Right View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:542 msgid "Prusa 3D &Drivers" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:542 msgid "Open the Prusa3D drivers download page in your browser" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:494 +#: src/slic3r/GUI/MainFrame.cpp:544 msgid "Prusa Edition &Releases" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:494 +#: src/slic3r/GUI/MainFrame.cpp:544 msgid "Open the Prusa Edition releases page in your browser" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:550 #, possible-c-format msgid "%s &Website" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:501 +#: src/slic3r/GUI/MainFrame.cpp:551 #, possible-c-format msgid "Open the %s website in your browser" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:553 #, possible-c-format msgid "%s &Manual" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:504 +#: src/slic3r/GUI/MainFrame.cpp:554 #, possible-c-format msgid "Open the %s manual in your browser" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:507 +#: src/slic3r/GUI/MainFrame.cpp:557 msgid "System &Info" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:507 +#: src/slic3r/GUI/MainFrame.cpp:557 msgid "Show system information" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:509 +#: src/slic3r/GUI/MainFrame.cpp:559 msgid "Show &Configuration Folder" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:509 +#: src/slic3r/GUI/MainFrame.cpp:559 msgid "Show user configuration folder (datadir)" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:511 +#: src/slic3r/GUI/MainFrame.cpp:561 msgid "Report an I&ssue" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:511 +#: src/slic3r/GUI/MainFrame.cpp:561 #, possible-c-format msgid "Report an issue on %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:513 +#: src/slic3r/GUI/MainFrame.cpp:563 #, possible-c-format msgid "&About %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:513 +#: src/slic3r/GUI/MainFrame.cpp:563 msgid "Show about dialog" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:516 +#: src/slic3r/GUI/MainFrame.cpp:566 msgid "Show the list of the keyboard shortcuts" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:574 msgid "&File" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:525 +#: src/slic3r/GUI/MainFrame.cpp:575 msgid "&Edit" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:526 +#: src/slic3r/GUI/MainFrame.cpp:576 msgid "&Window" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:527 +#: src/slic3r/GUI/MainFrame.cpp:577 msgid "&View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:530 +#: src/slic3r/GUI/MainFrame.cpp:580 msgid "&Help" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:558 +#: src/slic3r/GUI/MainFrame.cpp:602 src/slic3r/GUI/Plater.cpp:3821 +msgid "Export" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:604 +msgid "Mate&rial Settings Tab" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:621 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:572 +#: src/slic3r/GUI/MainFrame.cpp:635 msgid "No previously sliced file." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:573 src/slic3r/GUI/PrintHostDialogs.cpp:230 +#: src/slic3r/GUI/MainFrame.cpp:636 src/slic3r/GUI/PrintHostDialogs.cpp:230 msgid "Error" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:578 +#: src/slic3r/GUI/MainFrame.cpp:641 msgid "Previously sliced file (" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:578 +#: src/slic3r/GUI/MainFrame.cpp:641 msgid ") not found." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:579 +#: src/slic3r/GUI/MainFrame.cpp:642 msgid "File Not Found" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:614 src/slic3r/GUI/Tab.cpp:3239 +#: src/slic3r/GUI/MainFrame.cpp:677 src/slic3r/GUI/Tab.cpp:3239 msgid "Save " msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:677 msgid "SVG" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:677 msgid "G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:677 msgid " file as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:692 msgid "Save zip file as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:641 src/slic3r/GUI/Plater.cpp:2412 -#: src/slic3r/GUI/Plater.cpp:3542 src/slic3r/GUI/Tab.cpp:1159 +#: src/slic3r/GUI/MainFrame.cpp:704 src/slic3r/GUI/Plater.cpp:2412 +#: src/slic3r/GUI/Plater.cpp:3615 src/slic3r/GUI/Tab.cpp:1159 #: src/slic3r/GUI/Tab.cpp:3436 msgid "Slicing" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:641 +#: src/slic3r/GUI/MainFrame.cpp:704 msgid "Processing " msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:664 +#: src/slic3r/GUI/MainFrame.cpp:727 msgid " was successfully sliced." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:666 +#: src/slic3r/GUI/MainFrame.cpp:729 msgid "Slicing Done!" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:681 +#: src/slic3r/GUI/MainFrame.cpp:744 msgid "Select the STL file to repair:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:694 +#: src/slic3r/GUI/MainFrame.cpp:757 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:709 +#: src/slic3r/GUI/MainFrame.cpp:772 msgid "Your file was repaired." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:709 src/libslic3r/PrintConfig.cpp:3056 +#: src/slic3r/GUI/MainFrame.cpp:772 src/libslic3r/PrintConfig.cpp:3058 msgid "Repair" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:723 +#: src/slic3r/GUI/MainFrame.cpp:786 msgid "Save configuration as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:743 src/slic3r/GUI/MainFrame.cpp:807 +#: src/slic3r/GUI/MainFrame.cpp:806 src/slic3r/GUI/MainFrame.cpp:870 msgid "Select configuration to load:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:780 +#: src/slic3r/GUI/MainFrame.cpp:843 msgid "Save presets bundle as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:831 +#: src/slic3r/GUI/MainFrame.cpp:894 #, possible-c-format msgid "%d presets successfully imported." msgstr "" @@ -2327,7 +2352,7 @@ msgstr "" msgid "Sliced Info" msgstr "" -#: src/slic3r/GUI/Plater.cpp:212 src/slic3r/GUI/Plater.cpp:1042 +#: src/slic3r/GUI/Plater.cpp:212 src/slic3r/GUI/Plater.cpp:1041 msgid "Used Filament (m)" msgstr "" @@ -2343,13 +2368,13 @@ msgstr "" msgid "Used Material (unit)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:216 src/slic3r/GUI/Plater.cpp:1057 -#: src/libslic3r/PrintConfig.cpp:716 +#: src/slic3r/GUI/Plater.cpp:216 src/slic3r/GUI/Plater.cpp:1056 +#: src/libslic3r/PrintConfig.cpp:717 msgid "Cost" msgstr "" -#: src/slic3r/GUI/Plater.cpp:217 src/slic3r/GUI/Plater.cpp:1029 -#: src/slic3r/GUI/Plater.cpp:1071 +#: src/slic3r/GUI/Plater.cpp:217 src/slic3r/GUI/Plater.cpp:1028 +#: src/slic3r/GUI/Plater.cpp:1070 msgid "Estimated printing time" msgstr "" @@ -2365,8 +2390,8 @@ msgstr "" msgid "Select what kind of support do you need" msgstr "" -#: src/slic3r/GUI/Plater.cpp:423 src/libslic3r/PrintConfig.cpp:1814 -#: src/libslic3r/PrintConfig.cpp:2421 +#: src/slic3r/GUI/Plater.cpp:423 src/libslic3r/PrintConfig.cpp:1815 +#: src/libslic3r/PrintConfig.cpp:2423 msgid "Support on build plate only" msgstr "" @@ -2409,12 +2434,12 @@ msgstr "" msgid "Printer" msgstr "" -#: src/slic3r/GUI/Plater.cpp:731 src/slic3r/GUI/Plater.cpp:3749 +#: src/slic3r/GUI/Plater.cpp:731 src/slic3r/GUI/Plater.cpp:3822 msgid "Send to printer" msgstr "" #: src/slic3r/GUI/Plater.cpp:734 src/slic3r/GUI/Plater.cpp:2412 -#: src/slic3r/GUI/Plater.cpp:3545 +#: src/slic3r/GUI/Plater.cpp:3618 msgid "Slice now" msgstr "" @@ -2422,52 +2447,52 @@ msgstr "" msgid "Hold Shift to Slice & Export G-code" msgstr "" -#: src/slic3r/GUI/Plater.cpp:975 +#: src/slic3r/GUI/Plater.cpp:974 #, possible-c-format msgid "%d (%d shells)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:980 +#: src/slic3r/GUI/Plater.cpp:979 #, possible-c-format msgid "Auto-repaired (%d errors)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:983 +#: src/slic3r/GUI/Plater.cpp:982 #, possible-c-format msgid "" "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " "facets reversed, %d backwards edges" msgstr "" -#: src/slic3r/GUI/Plater.cpp:993 +#: src/slic3r/GUI/Plater.cpp:992 msgid "Yes" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1016 +#: src/slic3r/GUI/Plater.cpp:1015 msgid "Used Material (ml)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1019 +#: src/slic3r/GUI/Plater.cpp:1018 msgid "object(s)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1019 +#: src/slic3r/GUI/Plater.cpp:1018 msgid "supports and pad" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1044 src/slic3r/GUI/Plater.cpp:1059 +#: src/slic3r/GUI/Plater.cpp:1043 src/slic3r/GUI/Plater.cpp:1058 msgid "objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1044 src/slic3r/GUI/Plater.cpp:1059 +#: src/slic3r/GUI/Plater.cpp:1043 src/slic3r/GUI/Plater.cpp:1058 msgid "wipe tower" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1074 +#: src/slic3r/GUI/Plater.cpp:1073 msgid "normal mode" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1078 +#: src/slic3r/GUI/Plater.cpp:1077 msgid "silent mode" msgstr "" @@ -2672,77 +2697,81 @@ msgstr "" msgid "Mirror the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2964 +#: src/slic3r/GUI/Plater.cpp:2966 msgid "To objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2964 src/slic3r/GUI/Plater.cpp:2986 +#: src/slic3r/GUI/Plater.cpp:2966 src/slic3r/GUI/Plater.cpp:2988 msgid "Split the selected object into individual objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2966 +#: src/slic3r/GUI/Plater.cpp:2968 msgid "To parts" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2966 src/slic3r/GUI/Plater.cpp:3006 +#: src/slic3r/GUI/Plater.cpp:2968 src/slic3r/GUI/Plater.cpp:3008 msgid "Split the selected object into individual sub-parts" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2969 src/slic3r/GUI/Plater.cpp:2986 -#: src/slic3r/GUI/Plater.cpp:3006 src/libslic3r/PrintConfig.cpp:3080 +#: src/slic3r/GUI/Plater.cpp:2971 src/slic3r/GUI/Plater.cpp:2988 +#: src/slic3r/GUI/Plater.cpp:3008 src/libslic3r/PrintConfig.cpp:3082 msgid "Split" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2969 +#: src/slic3r/GUI/Plater.cpp:2971 msgid "Split the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2992 +#: src/slic3r/GUI/Plater.cpp:2994 msgid "Optimize orientation" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2992 +#: src/slic3r/GUI/Plater.cpp:2994 msgid "Optimize the rotation of the object for better print results." msgstr "" -#: src/slic3r/GUI/Plater.cpp:3417 +#: src/slic3r/GUI/Plater.cpp:3298 +msgid "All objects will be removed, continue ?" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:3298 +msgid "Delete all" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:3433 msgid "Save G-code file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3417 +#: src/slic3r/GUI/Plater.cpp:3433 msgid "Save SL1 file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3472 +#: src/slic3r/GUI/Plater.cpp:3545 #, possible-c-format msgid "STL file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3488 +#: src/slic3r/GUI/Plater.cpp:3561 #, possible-c-format msgid "AMF file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3491 +#: src/slic3r/GUI/Plater.cpp:3564 #, possible-c-format msgid "Error exporting AMF file %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3517 +#: src/slic3r/GUI/Plater.cpp:3590 #, possible-c-format msgid "3MF file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3520 +#: src/slic3r/GUI/Plater.cpp:3593 #, possible-c-format msgid "Error exporting 3MF file %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3748 -msgid "Export" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:3749 +#: src/slic3r/GUI/Plater.cpp:3822 msgid "Send G-code" msgstr "" @@ -2845,12 +2874,12 @@ msgstr "" #: src/slic3r/GUI/Preset.cpp:930 src/slic3r/GUI/Preset.cpp:970 #: src/slic3r/GUI/Preset.cpp:1035 src/slic3r/GUI/Preset.cpp:1067 -#: src/slic3r/GUI/PresetBundle.cpp:1478 src/slic3r/GUI/PresetBundle.cpp:1543 +#: src/slic3r/GUI/PresetBundle.cpp:1488 src/slic3r/GUI/PresetBundle.cpp:1553 msgid "System presets" msgstr "" #: src/slic3r/GUI/Preset.cpp:974 src/slic3r/GUI/Preset.cpp:1071 -#: src/slic3r/GUI/PresetBundle.cpp:1548 +#: src/slic3r/GUI/PresetBundle.cpp:1558 msgid "User presets" msgstr "" @@ -3038,10 +3067,10 @@ msgid "Time" msgstr "" #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/RammingChart.cpp:81 -#: src/slic3r/GUI/WipeTowerDialog.cpp:82 src/libslic3r/PrintConfig.cpp:611 -#: src/libslic3r/PrintConfig.cpp:655 src/libslic3r/PrintConfig.cpp:670 -#: src/libslic3r/PrintConfig.cpp:2241 src/libslic3r/PrintConfig.cpp:2250 -#: src/libslic3r/PrintConfig.cpp:2310 src/libslic3r/PrintConfig.cpp:2317 +#: src/slic3r/GUI/WipeTowerDialog.cpp:82 src/libslic3r/PrintConfig.cpp:612 +#: src/libslic3r/PrintConfig.cpp:656 src/libslic3r/PrintConfig.cpp:671 +#: src/libslic3r/PrintConfig.cpp:2243 src/libslic3r/PrintConfig.cpp:2252 +#: src/libslic3r/PrintConfig.cpp:2312 src/libslic3r/PrintConfig.cpp:2319 msgid "s" msgstr "" @@ -3053,7 +3082,7 @@ msgstr "" msgid "System Information" msgstr "" -#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:228 +#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:229 msgid "Compatible printers" msgstr "" @@ -3061,7 +3090,7 @@ msgstr "" msgid "Select the printers this profile is compatible with." msgstr "" -#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:243 +#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:244 msgid "Compatible print profiles" msgstr "" @@ -3148,7 +3177,7 @@ msgstr "" msgid "Horizontal shells" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1014 src/libslic3r/PrintConfig.cpp:1709 +#: src/slic3r/GUI/Tab.cpp:1014 src/libslic3r/PrintConfig.cpp:1710 msgid "Solid layers" msgstr "" @@ -3232,7 +3261,7 @@ msgstr "" msgid "Output file" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1187 src/libslic3r/PrintConfig.cpp:1382 +#: src/slic3r/GUI/Tab.cpp:1187 src/libslic3r/PrintConfig.cpp:1383 msgid "Post-processing scripts" msgstr "" @@ -3332,8 +3361,8 @@ msgstr "" msgid "Cooling" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1490 src/libslic3r/PrintConfig.cpp:1285 -#: src/libslic3r/PrintConfig.cpp:2097 +#: src/slic3r/GUI/Tab.cpp:1490 src/libslic3r/PrintConfig.cpp:1286 +#: src/libslic3r/PrintConfig.cpp:2099 msgid "Enable" msgstr "" @@ -3370,17 +3399,17 @@ msgid "Custom G-code" msgstr "" #: src/slic3r/GUI/Tab.cpp:1564 src/slic3r/GUI/Tab.cpp:1949 -#: src/libslic3r/PrintConfig.cpp:1735 src/libslic3r/PrintConfig.cpp:1750 +#: src/libslic3r/PrintConfig.cpp:1736 src/libslic3r/PrintConfig.cpp:1751 msgid "Start G-code" msgstr "" #: src/slic3r/GUI/Tab.cpp:1570 src/slic3r/GUI/Tab.cpp:1955 -#: src/libslic3r/PrintConfig.cpp:358 src/libslic3r/PrintConfig.cpp:368 +#: src/libslic3r/PrintConfig.cpp:359 src/libslic3r/PrintConfig.cpp:369 msgid "End G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1681 src/slic3r/GUI/Tab.cpp:1737 -msgid " Browse " +#: src/slic3r/GUI/Tab.cpp:1681 +msgid "Browse" msgstr "" #: src/slic3r/GUI/Tab.cpp:1700 src/slic3r/GUI/Tab.cpp:1888 @@ -3401,6 +3430,10 @@ msgid "" "signed certificate." msgstr "" +#: src/slic3r/GUI/Tab.cpp:1737 +msgid " Browse " +msgstr "" + #: src/slic3r/GUI/Tab.cpp:1744 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "" @@ -3440,7 +3473,7 @@ msgstr "" msgid "USB/Serial connection" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1874 src/libslic3r/PrintConfig.cpp:1590 +#: src/slic3r/GUI/Tab.cpp:1874 src/libslic3r/PrintConfig.cpp:1591 msgid "Serial port" msgstr "" @@ -3464,11 +3497,11 @@ msgstr "" msgid "Before layer change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1967 src/libslic3r/PrintConfig.cpp:1030 +#: src/slic3r/GUI/Tab.cpp:1967 src/libslic3r/PrintConfig.cpp:1031 msgid "After layer change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1973 src/libslic3r/PrintConfig.cpp:2005 +#: src/slic3r/GUI/Tab.cpp:1973 src/libslic3r/PrintConfig.cpp:2006 msgid "Tool change G-code" msgstr "" @@ -3493,10 +3526,10 @@ msgid "Corrections" msgstr "" #: src/slic3r/GUI/Tab.cpp:2136 src/slic3r/GUI/Tab.cpp:2209 -#: src/libslic3r/PrintConfig.cpp:1076 src/libslic3r/PrintConfig.cpp:1086 -#: src/libslic3r/PrintConfig.cpp:1096 src/libslic3r/PrintConfig.cpp:1109 -#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1131 -#: src/libslic3r/PrintConfig.cpp:1142 +#: src/libslic3r/PrintConfig.cpp:1077 src/libslic3r/PrintConfig.cpp:1087 +#: src/libslic3r/PrintConfig.cpp:1097 src/libslic3r/PrintConfig.cpp:1110 +#: src/libslic3r/PrintConfig.cpp:1121 src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1143 msgid "Machine limits" msgstr "" @@ -4013,12 +4046,21 @@ msgstr "" msgid "Show advanced settings" msgstr "" -#: src/slic3r/GUI/wxExtensions.cpp:2328 +#: src/slic3r/GUI/wxExtensions.cpp:358 +msgid "Instances" +msgstr "" + +#: src/slic3r/GUI/wxExtensions.cpp:365 +#, possible-c-format +msgid "Instance_%d" +msgstr "" + +#: src/slic3r/GUI/wxExtensions.cpp:2412 #, possible-c-format msgid "Switch to the %s mode" msgstr "" -#: src/slic3r/GUI/wxExtensions.cpp:2329 +#: src/slic3r/GUI/wxExtensions.cpp:2413 #, possible-c-format msgid "Current mode is %s" msgstr "" @@ -4406,11 +4448,27 @@ msgstr "" msgid "Layer height can't be greater than nozzle diameter" msgstr "" +#: src/libslic3r/Print.cpp:1476 +msgid "Infilling layers" +msgstr "" + +#: src/libslic3r/Print.cpp:1484 +msgid "Generating skirt" +msgstr "" + +#: src/libslic3r/Print.cpp:1492 +msgid "Generating brim" +msgstr "" + +#: src/libslic3r/Print.cpp:1517 +msgid "Exporting G-code" +msgstr "" + #: src/libslic3r/SLAPrint.cpp:55 msgid "Slicing model" msgstr "" -#: src/libslic3r/SLAPrint.cpp:56 src/libslic3r/SLAPrint.cpp:810 +#: src/libslic3r/SLAPrint.cpp:56 src/libslic3r/SLAPrint.cpp:809 msgid "Generating support points" msgstr "" @@ -4445,16 +4503,16 @@ msgid "Elevation is too low for object." msgstr "" #. TRN To be shown at the status bar on SLA slicing error. -#: src/libslic3r/SLAPrint.cpp:707 +#: src/libslic3r/SLAPrint.cpp:709 msgid "Slicing had to be stopped due to an internal error." msgstr "" -#: src/libslic3r/SLAPrint.cpp:858 src/libslic3r/SLAPrint.cpp:868 -#: src/libslic3r/SLAPrint.cpp:916 +#: src/libslic3r/SLAPrint.cpp:857 src/libslic3r/SLAPrint.cpp:867 +#: src/libslic3r/SLAPrint.cpp:915 msgid "Visualizing supports" msgstr "" -#: src/libslic3r/SLAPrint.cpp:1458 +#: src/libslic3r/SLAPrint.cpp:1459 msgid "Slicing done" msgstr "" @@ -4517,6 +4575,17 @@ msgid "" "the API Key or the password required for authentication." msgstr "" +#: src/libslic3r/PrintConfig.cpp:95 +msgid "HTTPS CA File" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:96 +msgid "" +"Custom CA certificate file can be specified for HTTPS OctoPrint connections, " +"in crt/pem format. If left blank, the default OS CA certificate repository " +"is used." +msgstr "" + #: src/libslic3r/PrintConfig.cpp:111 msgid "Avoid crossing perimeters" msgstr "" @@ -4528,7 +4597,7 @@ msgid "" "feature slows down both the print and the G-code generation." msgstr "" -#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:1976 +#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:1977 msgid "Other layers" msgstr "" @@ -4563,69 +4632,69 @@ msgid "" "S[first_layer_temperature]\" command wherever you want." msgstr "" -#: src/libslic3r/PrintConfig.cpp:150 +#: src/libslic3r/PrintConfig.cpp:151 msgid "Number of solid layers to generate on bottom surfaces." msgstr "" -#: src/libslic3r/PrintConfig.cpp:151 +#: src/libslic3r/PrintConfig.cpp:152 msgid "Bottom solid layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:156 +#: src/libslic3r/PrintConfig.cpp:157 msgid "Bridge" msgstr "" -#: src/libslic3r/PrintConfig.cpp:157 +#: src/libslic3r/PrintConfig.cpp:158 msgid "" "This is the acceleration your printer will use for bridges. Set zero to " "disable acceleration control for bridges." msgstr "" -#: src/libslic3r/PrintConfig.cpp:159 src/libslic3r/PrintConfig.cpp:302 -#: src/libslic3r/PrintConfig.cpp:814 src/libslic3r/PrintConfig.cpp:935 -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:1133 -#: src/libslic3r/PrintConfig.cpp:1144 src/libslic3r/PrintConfig.cpp:1333 +#: src/libslic3r/PrintConfig.cpp:160 src/libslic3r/PrintConfig.cpp:303 +#: src/libslic3r/PrintConfig.cpp:815 src/libslic3r/PrintConfig.cpp:936 +#: src/libslic3r/PrintConfig.cpp:1089 src/libslic3r/PrintConfig.cpp:1134 +#: src/libslic3r/PrintConfig.cpp:1145 src/libslic3r/PrintConfig.cpp:1334 msgid "mm/s²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:165 +#: src/libslic3r/PrintConfig.cpp:166 msgid "Bridging angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:167 +#: src/libslic3r/PrintConfig.cpp:168 msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for all " "bridges. Use 180° for zero angle." msgstr "" -#: src/libslic3r/PrintConfig.cpp:170 src/libslic3r/PrintConfig.cpp:732 -#: src/libslic3r/PrintConfig.cpp:1569 src/libslic3r/PrintConfig.cpp:1579 -#: src/libslic3r/PrintConfig.cpp:1807 src/libslic3r/PrintConfig.cpp:1961 -#: src/libslic3r/PrintConfig.cpp:2461 +#: src/libslic3r/PrintConfig.cpp:171 src/libslic3r/PrintConfig.cpp:733 +#: src/libslic3r/PrintConfig.cpp:1570 src/libslic3r/PrintConfig.cpp:1580 +#: src/libslic3r/PrintConfig.cpp:1808 src/libslic3r/PrintConfig.cpp:1962 +#: src/libslic3r/PrintConfig.cpp:2146 src/libslic3r/PrintConfig.cpp:2463 msgid "°" msgstr "" -#: src/libslic3r/PrintConfig.cpp:176 +#: src/libslic3r/PrintConfig.cpp:177 msgid "Bridges fan speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:177 +#: src/libslic3r/PrintConfig.cpp:178 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "" -#: src/libslic3r/PrintConfig.cpp:178 src/libslic3r/PrintConfig.cpp:744 -#: src/libslic3r/PrintConfig.cpp:1153 src/libslic3r/PrintConfig.cpp:1216 -#: src/libslic3r/PrintConfig.cpp:1461 src/libslic3r/PrintConfig.cpp:2258 -#: src/libslic3r/PrintConfig.cpp:2500 +#: src/libslic3r/PrintConfig.cpp:179 src/libslic3r/PrintConfig.cpp:745 +#: src/libslic3r/PrintConfig.cpp:1154 src/libslic3r/PrintConfig.cpp:1217 +#: src/libslic3r/PrintConfig.cpp:1462 src/libslic3r/PrintConfig.cpp:2260 +#: src/libslic3r/PrintConfig.cpp:2502 msgid "%" msgstr "" -#: src/libslic3r/PrintConfig.cpp:185 +#: src/libslic3r/PrintConfig.cpp:186 msgid "Bridge flow ratio" msgstr "" -#: src/libslic3r/PrintConfig.cpp:187 +#: src/libslic3r/PrintConfig.cpp:188 msgid "" "This factor affects the amount of plastic for bridging. You can decrease it " "slightly to pull the extrudates and prevent sagging, although default " @@ -4633,83 +4702,83 @@ msgid "" "before tweaking this." msgstr "" -#: src/libslic3r/PrintConfig.cpp:197 +#: src/libslic3r/PrintConfig.cpp:198 msgid "Bridges" msgstr "" -#: src/libslic3r/PrintConfig.cpp:199 +#: src/libslic3r/PrintConfig.cpp:200 msgid "Speed for printing bridges." msgstr "" -#: src/libslic3r/PrintConfig.cpp:200 src/libslic3r/PrintConfig.cpp:576 -#: src/libslic3r/PrintConfig.cpp:584 src/libslic3r/PrintConfig.cpp:593 -#: src/libslic3r/PrintConfig.cpp:601 src/libslic3r/PrintConfig.cpp:628 -#: src/libslic3r/PrintConfig.cpp:647 src/libslic3r/PrintConfig.cpp:873 -#: src/libslic3r/PrintConfig.cpp:1000 src/libslic3r/PrintConfig.cpp:1078 -#: src/libslic3r/PrintConfig.cpp:1098 src/libslic3r/PrintConfig.cpp:1111 -#: src/libslic3r/PrintConfig.cpp:1122 src/libslic3r/PrintConfig.cpp:1175 -#: src/libslic3r/PrintConfig.cpp:1234 src/libslic3r/PrintConfig.cpp:1362 -#: src/libslic3r/PrintConfig.cpp:1536 src/libslic3r/PrintConfig.cpp:1545 -#: src/libslic3r/PrintConfig.cpp:1940 src/libslic3r/PrintConfig.cpp:2051 +#: src/libslic3r/PrintConfig.cpp:201 src/libslic3r/PrintConfig.cpp:577 +#: src/libslic3r/PrintConfig.cpp:585 src/libslic3r/PrintConfig.cpp:594 +#: src/libslic3r/PrintConfig.cpp:602 src/libslic3r/PrintConfig.cpp:629 +#: src/libslic3r/PrintConfig.cpp:648 src/libslic3r/PrintConfig.cpp:874 +#: src/libslic3r/PrintConfig.cpp:1001 src/libslic3r/PrintConfig.cpp:1079 +#: src/libslic3r/PrintConfig.cpp:1099 src/libslic3r/PrintConfig.cpp:1112 +#: src/libslic3r/PrintConfig.cpp:1123 src/libslic3r/PrintConfig.cpp:1176 +#: src/libslic3r/PrintConfig.cpp:1235 src/libslic3r/PrintConfig.cpp:1363 +#: src/libslic3r/PrintConfig.cpp:1537 src/libslic3r/PrintConfig.cpp:1546 +#: src/libslic3r/PrintConfig.cpp:1941 src/libslic3r/PrintConfig.cpp:2053 msgid "mm/s" msgstr "" -#: src/libslic3r/PrintConfig.cpp:207 +#: src/libslic3r/PrintConfig.cpp:208 msgid "Brim width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:208 +#: src/libslic3r/PrintConfig.cpp:209 msgid "" "Horizontal width of the brim that will be printed around each object on the " "first layer." msgstr "" -#: src/libslic3r/PrintConfig.cpp:215 +#: src/libslic3r/PrintConfig.cpp:216 msgid "Clip multi-part objects" msgstr "" -#: src/libslic3r/PrintConfig.cpp:216 +#: src/libslic3r/PrintConfig.cpp:217 msgid "" "When printing multi-material objects, this settings will make Slic3r to clip " "the overlapping object parts one by the other (2nd part will be clipped by " "the 1st, 3rd part will be clipped by the 1st and 2nd etc)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:223 +#: src/libslic3r/PrintConfig.cpp:224 msgid "Colorprint height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:224 +#: src/libslic3r/PrintConfig.cpp:225 msgid "Heights at which a filament change is to occur. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:234 +#: src/libslic3r/PrintConfig.cpp:235 msgid "Compatible printers condition" msgstr "" -#: src/libslic3r/PrintConfig.cpp:235 +#: src/libslic3r/PrintConfig.cpp:236 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." msgstr "" -#: src/libslic3r/PrintConfig.cpp:249 +#: src/libslic3r/PrintConfig.cpp:250 msgid "Compatible print profiles condition" msgstr "" -#: src/libslic3r/PrintConfig.cpp:250 +#: src/libslic3r/PrintConfig.cpp:251 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." msgstr "" -#: src/libslic3r/PrintConfig.cpp:267 +#: src/libslic3r/PrintConfig.cpp:268 msgid "Complete individual objects" msgstr "" -#: src/libslic3r/PrintConfig.cpp:268 +#: src/libslic3r/PrintConfig.cpp:269 msgid "" "When printing multiple objects or copies, this feature will complete each " "object before moving onto next one (and starting it from its bottom layer). " @@ -4717,114 +4786,114 @@ msgid "" "warn and prevent you from extruder collisions, but beware." msgstr "" -#: src/libslic3r/PrintConfig.cpp:276 +#: src/libslic3r/PrintConfig.cpp:277 msgid "Enable auto cooling" msgstr "" -#: src/libslic3r/PrintConfig.cpp:277 +#: src/libslic3r/PrintConfig.cpp:278 msgid "" "This flag enables the automatic cooling logic that adjusts print speed and " "fan speed according to layer printing time." msgstr "" -#: src/libslic3r/PrintConfig.cpp:282 +#: src/libslic3r/PrintConfig.cpp:283 msgid "Cooling tube position" msgstr "" -#: src/libslic3r/PrintConfig.cpp:283 +#: src/libslic3r/PrintConfig.cpp:284 msgid "Distance of the center-point of the cooling tube from the extruder tip " msgstr "" -#: src/libslic3r/PrintConfig.cpp:290 +#: src/libslic3r/PrintConfig.cpp:291 msgid "Cooling tube length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:291 +#: src/libslic3r/PrintConfig.cpp:292 msgid "Length of the cooling tube to limit space for cooling moves inside it " msgstr "" -#: src/libslic3r/PrintConfig.cpp:299 +#: src/libslic3r/PrintConfig.cpp:300 msgid "" "This is the acceleration your printer will be reset to after the role-" "specific acceleration values are used (perimeter/infill). Set zero to " "prevent resetting acceleration at all." msgstr "" -#: src/libslic3r/PrintConfig.cpp:308 +#: src/libslic3r/PrintConfig.cpp:309 msgid "Default filament profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:309 +#: src/libslic3r/PrintConfig.cpp:310 msgid "" "Default filament profile associated with the current printer profile. On " "selection of the current printer profile, this filament profile will be " "activated." msgstr "" -#: src/libslic3r/PrintConfig.cpp:315 +#: src/libslic3r/PrintConfig.cpp:316 msgid "Default print profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:316 src/libslic3r/PrintConfig.cpp:2339 -#: src/libslic3r/PrintConfig.cpp:2350 +#: src/libslic3r/PrintConfig.cpp:317 src/libslic3r/PrintConfig.cpp:2341 +#: src/libslic3r/PrintConfig.cpp:2352 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " "activated." msgstr "" -#: src/libslic3r/PrintConfig.cpp:322 +#: src/libslic3r/PrintConfig.cpp:323 msgid "Disable fan for the first" msgstr "" -#: src/libslic3r/PrintConfig.cpp:323 +#: src/libslic3r/PrintConfig.cpp:324 msgid "" "You can set this to a positive value to disable fan at all during the first " "layers, so that it does not make adhesion worse." msgstr "" -#: src/libslic3r/PrintConfig.cpp:325 src/libslic3r/PrintConfig.cpp:945 -#: src/libslic3r/PrintConfig.cpp:1434 src/libslic3r/PrintConfig.cpp:1619 -#: src/libslic3r/PrintConfig.cpp:1680 src/libslic3r/PrintConfig.cpp:1843 -#: src/libslic3r/PrintConfig.cpp:1888 +#: src/libslic3r/PrintConfig.cpp:326 src/libslic3r/PrintConfig.cpp:946 +#: src/libslic3r/PrintConfig.cpp:1435 src/libslic3r/PrintConfig.cpp:1620 +#: src/libslic3r/PrintConfig.cpp:1681 src/libslic3r/PrintConfig.cpp:1844 +#: src/libslic3r/PrintConfig.cpp:1889 msgid "layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:332 +#: src/libslic3r/PrintConfig.cpp:333 msgid "Don't support bridges" msgstr "" -#: src/libslic3r/PrintConfig.cpp:334 +#: src/libslic3r/PrintConfig.cpp:335 msgid "" "Experimental option for preventing support material from being generated " "under bridged areas." msgstr "" -#: src/libslic3r/PrintConfig.cpp:340 +#: src/libslic3r/PrintConfig.cpp:341 msgid "Distance between copies" msgstr "" -#: src/libslic3r/PrintConfig.cpp:341 +#: src/libslic3r/PrintConfig.cpp:342 msgid "Distance used for the auto-arrange feature of the plater." msgstr "" -#: src/libslic3r/PrintConfig.cpp:348 +#: src/libslic3r/PrintConfig.cpp:349 msgid "Elephant foot compensation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:350 +#: src/libslic3r/PrintConfig.cpp:351 msgid "" "The first layer will be shrunk in the XY plane by the configured value to " "compensate for the 1st layer squish aka an Elephant Foot effect." msgstr "" -#: src/libslic3r/PrintConfig.cpp:359 +#: src/libslic3r/PrintConfig.cpp:360 msgid "" "This end procedure is inserted at the end of the output file. Note that you " "can use placeholder variables for all Slic3r settings." msgstr "" -#: src/libslic3r/PrintConfig.cpp:369 +#: src/libslic3r/PrintConfig.cpp:370 msgid "" "This end procedure is inserted at the end of the output file, before the " "printer end gcode. Note that you can use placeholder variables for all " @@ -4832,62 +4901,62 @@ msgid "" "extruder order." msgstr "" -#: src/libslic3r/PrintConfig.cpp:379 +#: src/libslic3r/PrintConfig.cpp:380 msgid "Ensure vertical shell thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:381 +#: src/libslic3r/PrintConfig.cpp:382 msgid "" "Add solid infill near sloping surfaces to guarantee the vertical shell " "thickness (top+bottom solid layers)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:387 +#: src/libslic3r/PrintConfig.cpp:388 msgid "Top fill pattern" msgstr "" -#: src/libslic3r/PrintConfig.cpp:389 +#: src/libslic3r/PrintConfig.cpp:390 msgid "" "Fill pattern for top infill. This only affects the top visible layer, and " "not its adjacent solid shells." msgstr "" -#: src/libslic3r/PrintConfig.cpp:397 src/libslic3r/PrintConfig.cpp:795 -#: src/libslic3r/PrintConfig.cpp:1921 +#: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:796 +#: src/libslic3r/PrintConfig.cpp:1922 msgid "Rectilinear" msgstr "" -#: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:801 +#: src/libslic3r/PrintConfig.cpp:399 src/libslic3r/PrintConfig.cpp:802 msgid "Concentric" msgstr "" -#: src/libslic3r/PrintConfig.cpp:399 src/libslic3r/PrintConfig.cpp:805 +#: src/libslic3r/PrintConfig.cpp:400 src/libslic3r/PrintConfig.cpp:806 msgid "Hilbert Curve" msgstr "" -#: src/libslic3r/PrintConfig.cpp:400 src/libslic3r/PrintConfig.cpp:806 +#: src/libslic3r/PrintConfig.cpp:401 src/libslic3r/PrintConfig.cpp:807 msgid "Archimedean Chords" msgstr "" -#: src/libslic3r/PrintConfig.cpp:401 src/libslic3r/PrintConfig.cpp:807 +#: src/libslic3r/PrintConfig.cpp:402 src/libslic3r/PrintConfig.cpp:808 msgid "Octagram Spiral" msgstr "" -#: src/libslic3r/PrintConfig.cpp:408 +#: src/libslic3r/PrintConfig.cpp:409 msgid "Bottom fill pattern" msgstr "" -#: src/libslic3r/PrintConfig.cpp:409 +#: src/libslic3r/PrintConfig.cpp:410 msgid "" "Fill pattern for bottom infill. This only affects the bottom external " "visible layer, and not its adjacent solid shells." msgstr "" -#: src/libslic3r/PrintConfig.cpp:414 src/libslic3r/PrintConfig.cpp:424 +#: src/libslic3r/PrintConfig.cpp:415 src/libslic3r/PrintConfig.cpp:425 msgid "External perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:416 +#: src/libslic3r/PrintConfig.cpp:417 msgid "" "Set this to a non-zero value to set a manual extrusion width for external " "perimeters. If left zero, default extrusion width will be used if set, " @@ -4895,41 +4964,41 @@ msgid "" "(for example 200%), it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:834 -#: src/libslic3r/PrintConfig.cpp:966 src/libslic3r/PrintConfig.cpp:1353 -#: src/libslic3r/PrintConfig.cpp:1691 src/libslic3r/PrintConfig.cpp:1864 -#: src/libslic3r/PrintConfig.cpp:2022 +#: src/libslic3r/PrintConfig.cpp:420 src/libslic3r/PrintConfig.cpp:835 +#: src/libslic3r/PrintConfig.cpp:967 src/libslic3r/PrintConfig.cpp:1354 +#: src/libslic3r/PrintConfig.cpp:1692 src/libslic3r/PrintConfig.cpp:1865 +#: src/libslic3r/PrintConfig.cpp:2023 msgid "mm or % (leave 0 for default)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:426 +#: src/libslic3r/PrintConfig.cpp:427 msgid "" "This separate setting will affect the speed of external perimeters (the " "visible ones). If expressed as percentage (for example: 80%) it will be " "calculated on the perimeters speed setting above. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855 -#: src/libslic3r/PrintConfig.cpp:1650 src/libslic3r/PrintConfig.cpp:1701 -#: src/libslic3r/PrintConfig.cpp:1907 src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:430 src/libslic3r/PrintConfig.cpp:856 +#: src/libslic3r/PrintConfig.cpp:1651 src/libslic3r/PrintConfig.cpp:1702 +#: src/libslic3r/PrintConfig.cpp:1908 src/libslic3r/PrintConfig.cpp:2035 msgid "mm/s or %" msgstr "" -#: src/libslic3r/PrintConfig.cpp:436 +#: src/libslic3r/PrintConfig.cpp:437 msgid "External perimeters first" msgstr "" -#: src/libslic3r/PrintConfig.cpp:438 +#: src/libslic3r/PrintConfig.cpp:439 msgid "" "Print contour perimeters from the outermost one to the innermost one instead " "of the default inverse order." msgstr "" -#: src/libslic3r/PrintConfig.cpp:444 +#: src/libslic3r/PrintConfig.cpp:445 msgid "Extra perimeters if needed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:446 +#: src/libslic3r/PrintConfig.cpp:447 #, no-c-format msgid "" "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r " @@ -4937,14 +5006,14 @@ msgid "" "is supported." msgstr "" -#: src/libslic3r/PrintConfig.cpp:456 +#: src/libslic3r/PrintConfig.cpp:457 msgid "" "The extruder to use (unless more specific extruder settings are specified). " "This value overrides perimeter and infill extruders, but not the support " "extruders." msgstr "" -#: src/libslic3r/PrintConfig.cpp:468 +#: src/libslic3r/PrintConfig.cpp:469 msgid "" "Set this to the vertical distance between your nozzle tip and (usually) the " "X carriage rods. In other words, this is the height of the clearance " @@ -4952,30 +5021,30 @@ msgid "" "extruder can peek before colliding with other printed objects." msgstr "" -#: src/libslic3r/PrintConfig.cpp:478 +#: src/libslic3r/PrintConfig.cpp:479 msgid "Radius" msgstr "" -#: src/libslic3r/PrintConfig.cpp:479 +#: src/libslic3r/PrintConfig.cpp:480 msgid "" "Set this to the clearance radius around your extruder. If the extruder is " "not centered, choose the largest value for safety. This setting is used to " "check for collisions and to display the graphical preview in the plater." msgstr "" -#: src/libslic3r/PrintConfig.cpp:489 +#: src/libslic3r/PrintConfig.cpp:490 msgid "Extruder Color" msgstr "" -#: src/libslic3r/PrintConfig.cpp:490 src/libslic3r/PrintConfig.cpp:550 +#: src/libslic3r/PrintConfig.cpp:491 src/libslic3r/PrintConfig.cpp:551 msgid "This is only used in the Slic3r interface as a visual help." msgstr "" -#: src/libslic3r/PrintConfig.cpp:496 +#: src/libslic3r/PrintConfig.cpp:497 msgid "Extruder offset" msgstr "" -#: src/libslic3r/PrintConfig.cpp:497 +#: src/libslic3r/PrintConfig.cpp:498 msgid "" "If your firmware doesn't handle the extruder displacement you need the G-" "code to take it into account. This option lets you specify the displacement " @@ -4983,21 +5052,21 @@ msgid "" "coordinates (they will be subtracted from the XY coordinate)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:506 +#: src/libslic3r/PrintConfig.cpp:507 msgid "Extrusion axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:507 +#: src/libslic3r/PrintConfig.cpp:508 msgid "" "Use this option to set the axis letter associated to your printer's extruder " "(usually E but some printers use A)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:512 +#: src/libslic3r/PrintConfig.cpp:513 msgid "Extrusion multiplier" msgstr "" -#: src/libslic3r/PrintConfig.cpp:513 +#: src/libslic3r/PrintConfig.cpp:514 msgid "" "This factor changes the amount of flow proportionally. You may need to tweak " "this setting to get nice surface finish and correct single wall widths. " @@ -5005,11 +5074,11 @@ msgid "" "more, check filament diameter and your firmware E steps." msgstr "" -#: src/libslic3r/PrintConfig.cpp:521 +#: src/libslic3r/PrintConfig.cpp:522 msgid "Default extrusion width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:523 +#: src/libslic3r/PrintConfig.cpp:524 msgid "" "Set this to a non-zero value to allow a manual extrusion width. If left to " "zero, Slic3r derives extrusion widths from the nozzle diameter (see the " @@ -5018,131 +5087,131 @@ msgid "" "height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:527 +#: src/libslic3r/PrintConfig.cpp:528 msgid "mm or % (leave 0 for auto)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:532 +#: src/libslic3r/PrintConfig.cpp:533 msgid "Keep fan always on" msgstr "" -#: src/libslic3r/PrintConfig.cpp:533 +#: src/libslic3r/PrintConfig.cpp:534 msgid "" "If this is enabled, fan will never be disabled and will be kept running at " "least at its minimum speed. Useful for PLA, harmful for ABS." msgstr "" -#: src/libslic3r/PrintConfig.cpp:538 +#: src/libslic3r/PrintConfig.cpp:539 msgid "Enable fan if layer print time is below" msgstr "" -#: src/libslic3r/PrintConfig.cpp:539 +#: src/libslic3r/PrintConfig.cpp:540 msgid "" "If layer print time is estimated below this number of seconds, fan will be " "enabled and its speed will be calculated by interpolating the minimum and " "maximum speeds." msgstr "" -#: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:1637 +#: src/libslic3r/PrintConfig.cpp:542 src/libslic3r/PrintConfig.cpp:1638 msgid "approximate seconds" msgstr "" -#: src/libslic3r/PrintConfig.cpp:549 +#: src/libslic3r/PrintConfig.cpp:550 msgid "Color" msgstr "" -#: src/libslic3r/PrintConfig.cpp:555 +#: src/libslic3r/PrintConfig.cpp:556 msgid "Filament notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:556 +#: src/libslic3r/PrintConfig.cpp:557 msgid "You can put your notes regarding the filament here." msgstr "" -#: src/libslic3r/PrintConfig.cpp:564 src/libslic3r/PrintConfig.cpp:1181 +#: src/libslic3r/PrintConfig.cpp:565 src/libslic3r/PrintConfig.cpp:1182 msgid "Max volumetric speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:565 +#: src/libslic3r/PrintConfig.cpp:566 msgid "" "Maximum volumetric speed allowed for this filament. Limits the maximum " "volumetric speed of a print to the minimum of print and filament volumetric " "speed. Set to zero for no limit." msgstr "" -#: src/libslic3r/PrintConfig.cpp:568 src/libslic3r/PrintConfig.cpp:1184 +#: src/libslic3r/PrintConfig.cpp:569 src/libslic3r/PrintConfig.cpp:1185 msgid "mm³/s" msgstr "" -#: src/libslic3r/PrintConfig.cpp:574 +#: src/libslic3r/PrintConfig.cpp:575 msgid "Loading speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:575 +#: src/libslic3r/PrintConfig.cpp:576 msgid "Speed used for loading the filament on the wipe tower. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:582 +#: src/libslic3r/PrintConfig.cpp:583 msgid "Loading speed at the start" msgstr "" -#: src/libslic3r/PrintConfig.cpp:583 +#: src/libslic3r/PrintConfig.cpp:584 msgid "Speed used at the very beginning of loading phase. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:590 +#: src/libslic3r/PrintConfig.cpp:591 msgid "Unloading speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:591 +#: src/libslic3r/PrintConfig.cpp:592 msgid "" "Speed used for unloading the filament on the wipe tower (does not affect " "initial part of unloading just after ramming). " msgstr "" -#: src/libslic3r/PrintConfig.cpp:599 +#: src/libslic3r/PrintConfig.cpp:600 msgid "Unloading speed at the start" msgstr "" -#: src/libslic3r/PrintConfig.cpp:600 +#: src/libslic3r/PrintConfig.cpp:601 msgid "" "Speed used for unloading the tip of the filament immediately after ramming. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:607 +#: src/libslic3r/PrintConfig.cpp:608 msgid "Delay after unloading" msgstr "" -#: src/libslic3r/PrintConfig.cpp:608 +#: src/libslic3r/PrintConfig.cpp:609 msgid "" "Time to wait after the filament is unloaded. May help to get reliable " "toolchanges with flexible materials that may need more time to shrink to " "original dimensions. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:617 +#: src/libslic3r/PrintConfig.cpp:618 msgid "Number of cooling moves" msgstr "" -#: src/libslic3r/PrintConfig.cpp:618 +#: src/libslic3r/PrintConfig.cpp:619 msgid "" "Filament is cooled by being moved back and forth in the cooling tubes. " "Specify desired number of these moves " msgstr "" -#: src/libslic3r/PrintConfig.cpp:626 +#: src/libslic3r/PrintConfig.cpp:627 msgid "Speed of the first cooling move" msgstr "" -#: src/libslic3r/PrintConfig.cpp:627 +#: src/libslic3r/PrintConfig.cpp:628 msgid "Cooling moves are gradually accelerating beginning at this speed. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:634 +#: src/libslic3r/PrintConfig.cpp:635 msgid "Minimal purge on wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:635 +#: src/libslic3r/PrintConfig.cpp:636 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 " @@ -5151,62 +5220,62 @@ msgid "" "to produce successive infill or sacrificial object extrusions reliably." msgstr "" -#: src/libslic3r/PrintConfig.cpp:639 +#: src/libslic3r/PrintConfig.cpp:640 msgid "mm³" msgstr "" -#: src/libslic3r/PrintConfig.cpp:645 +#: src/libslic3r/PrintConfig.cpp:646 msgid "Speed of the last cooling move" msgstr "" -#: src/libslic3r/PrintConfig.cpp:646 +#: src/libslic3r/PrintConfig.cpp:647 msgid "Cooling moves are gradually accelerating towards this speed. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:653 +#: src/libslic3r/PrintConfig.cpp:654 msgid "Filament load time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:654 +#: src/libslic3r/PrintConfig.cpp:655 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 "" -#: src/libslic3r/PrintConfig.cpp:661 +#: src/libslic3r/PrintConfig.cpp:662 msgid "Ramming parameters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:662 +#: src/libslic3r/PrintConfig.cpp:663 msgid "" "This string is edited by RammingDialog and contains ramming specific " "parameters " msgstr "" -#: src/libslic3r/PrintConfig.cpp:668 +#: src/libslic3r/PrintConfig.cpp:669 msgid "Filament unload time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:669 +#: src/libslic3r/PrintConfig.cpp:670 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 "" -#: src/libslic3r/PrintConfig.cpp:677 +#: src/libslic3r/PrintConfig.cpp:678 msgid "" "Enter your filament diameter here. Good precision is required, so use a " "caliper and do multiple measurements along the filament, then compute the " "average." msgstr "" -#: src/libslic3r/PrintConfig.cpp:684 +#: src/libslic3r/PrintConfig.cpp:685 msgid "Density" msgstr "" -#: src/libslic3r/PrintConfig.cpp:685 +#: src/libslic3r/PrintConfig.cpp:686 msgid "" "Enter your filament density here. This is only for statistical information. " "A decent way is to weigh a known length of filament and compute the ratio of " @@ -5214,113 +5283,113 @@ msgid "" "displacement." msgstr "" -#: src/libslic3r/PrintConfig.cpp:688 +#: src/libslic3r/PrintConfig.cpp:689 msgid "g/cm³" msgstr "" -#: src/libslic3r/PrintConfig.cpp:693 +#: src/libslic3r/PrintConfig.cpp:694 msgid "Filament type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:694 +#: src/libslic3r/PrintConfig.cpp:695 msgid "The filament material type for use in custom G-codes." msgstr "" -#: src/libslic3r/PrintConfig.cpp:710 +#: src/libslic3r/PrintConfig.cpp:711 msgid "Soluble material" msgstr "" -#: src/libslic3r/PrintConfig.cpp:711 +#: src/libslic3r/PrintConfig.cpp:712 msgid "Soluble material is most likely used for a soluble support." msgstr "" -#: src/libslic3r/PrintConfig.cpp:717 +#: src/libslic3r/PrintConfig.cpp:718 msgid "" "Enter your filament cost per kg here. This is only for statistical " "information." msgstr "" -#: src/libslic3r/PrintConfig.cpp:718 +#: src/libslic3r/PrintConfig.cpp:719 msgid "money/kg" msgstr "" -#: src/libslic3r/PrintConfig.cpp:727 +#: src/libslic3r/PrintConfig.cpp:728 msgid "Fill angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:729 +#: src/libslic3r/PrintConfig.cpp:730 msgid "" "Default base angle for infill orientation. Cross-hatching will be applied to " "this. Bridges will be infilled using the best direction Slic3r can detect, " "so this setting does not affect them." msgstr "" -#: src/libslic3r/PrintConfig.cpp:741 +#: src/libslic3r/PrintConfig.cpp:742 msgid "Fill density" msgstr "" -#: src/libslic3r/PrintConfig.cpp:743 +#: src/libslic3r/PrintConfig.cpp:744 msgid "Density of internal infill, expressed in the range 0% - 100%." msgstr "" -#: src/libslic3r/PrintConfig.cpp:778 +#: src/libslic3r/PrintConfig.cpp:779 msgid "Fill pattern" msgstr "" -#: src/libslic3r/PrintConfig.cpp:780 +#: src/libslic3r/PrintConfig.cpp:781 msgid "Fill pattern for general low-density infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:796 +#: src/libslic3r/PrintConfig.cpp:797 msgid "Grid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:797 +#: src/libslic3r/PrintConfig.cpp:798 msgid "Triangles" msgstr "" -#: src/libslic3r/PrintConfig.cpp:798 +#: src/libslic3r/PrintConfig.cpp:799 msgid "Stars" msgstr "" -#: src/libslic3r/PrintConfig.cpp:799 +#: src/libslic3r/PrintConfig.cpp:800 msgid "Cubic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:800 +#: src/libslic3r/PrintConfig.cpp:801 msgid "Line" msgstr "" -#: src/libslic3r/PrintConfig.cpp:802 src/libslic3r/PrintConfig.cpp:1923 +#: src/libslic3r/PrintConfig.cpp:803 src/libslic3r/PrintConfig.cpp:1924 msgid "Honeycomb" msgstr "" -#: src/libslic3r/PrintConfig.cpp:803 +#: src/libslic3r/PrintConfig.cpp:804 msgid "3D Honeycomb" msgstr "" -#: src/libslic3r/PrintConfig.cpp:804 +#: src/libslic3r/PrintConfig.cpp:805 msgid "Gyroid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:811 src/libslic3r/PrintConfig.cpp:820 -#: src/libslic3r/PrintConfig.cpp:828 src/libslic3r/PrintConfig.cpp:861 +#: src/libslic3r/PrintConfig.cpp:812 src/libslic3r/PrintConfig.cpp:821 +#: src/libslic3r/PrintConfig.cpp:829 src/libslic3r/PrintConfig.cpp:862 msgid "First layer" msgstr "" -#: src/libslic3r/PrintConfig.cpp:812 +#: src/libslic3r/PrintConfig.cpp:813 msgid "" "This is the acceleration your printer will use for first layer. Set zero to " "disable acceleration control for first layer." msgstr "" -#: src/libslic3r/PrintConfig.cpp:821 +#: src/libslic3r/PrintConfig.cpp:822 msgid "" "Heated build plate temperature for the first layer. Set this to zero to " "disable bed temperature control commands in the output." msgstr "" -#: src/libslic3r/PrintConfig.cpp:830 +#: src/libslic3r/PrintConfig.cpp:831 msgid "" "Set this to a non-zero value to set a manual extrusion width for first " "layer. You can use this to force fatter extrudates for better adhesion. If " @@ -5328,11 +5397,11 @@ msgid "" "layer height. If set to zero, it will use the default extrusion width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:840 +#: src/libslic3r/PrintConfig.cpp:841 msgid "First layer height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:842 +#: src/libslic3r/PrintConfig.cpp:843 msgid "" "When printing with very low layer heights, you might still want to print a " "thicker bottom layer to improve adhesion and tolerance for non perfect build " @@ -5340,52 +5409,52 @@ msgid "" "example: 150%) over the default layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:846 src/libslic3r/PrintConfig.cpp:991 -#: src/libslic3r/PrintConfig.cpp:1796 +#: src/libslic3r/PrintConfig.cpp:847 src/libslic3r/PrintConfig.cpp:992 +#: src/libslic3r/PrintConfig.cpp:1797 msgid "mm or %" msgstr "" -#: src/libslic3r/PrintConfig.cpp:851 +#: src/libslic3r/PrintConfig.cpp:852 msgid "First layer speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:852 +#: src/libslic3r/PrintConfig.cpp:853 msgid "" "If expressed as absolute value in mm/s, this speed will be applied to all " "the print moves of the first layer, regardless of their type. If expressed " "as a percentage (for example: 40%) it will scale the default speeds." msgstr "" -#: src/libslic3r/PrintConfig.cpp:862 +#: src/libslic3r/PrintConfig.cpp:863 msgid "" "Extruder temperature for first layer. If you want to control temperature " "manually during print, set this to zero to disable temperature control " "commands in the output file." msgstr "" -#: src/libslic3r/PrintConfig.cpp:871 +#: src/libslic3r/PrintConfig.cpp:872 msgid "" "Speed for filling small gaps using short zigzag moves. Keep this reasonably " "low to avoid too much shaking and resonance issues. Set zero to disable gaps " "filling." msgstr "" -#: src/libslic3r/PrintConfig.cpp:879 +#: src/libslic3r/PrintConfig.cpp:880 msgid "Verbose G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:880 +#: src/libslic3r/PrintConfig.cpp:881 msgid "" "Enable this to get a commented G-code file, with each line explained by a " "descriptive text. If you print from SD card, the additional weight of the " "file could make your firmware slow down." msgstr "" -#: src/libslic3r/PrintConfig.cpp:887 +#: src/libslic3r/PrintConfig.cpp:888 msgid "G-code flavor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:888 +#: src/libslic3r/PrintConfig.cpp:889 msgid "" "Some G/M-code commands, including temperature control and others, are not " "universal. Set this option to your printer's firmware to get a compatible " @@ -5393,50 +5462,62 @@ msgid "" "extrusion value at all." msgstr "" -#: src/libslic3r/PrintConfig.cpp:911 +#: src/libslic3r/PrintConfig.cpp:912 msgid "No extrusion" msgstr "" -#: src/libslic3r/PrintConfig.cpp:924 -msgid "High extruder current on filament swap" +#: src/libslic3r/PrintConfig.cpp:917 +msgid "Label objects" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:918 +msgid "" +"Enable this to add comments into the G-Code labeling print moves with what " +"object they belong to, which is useful for the Octoprint CancelObject " +"plugin. This settings is NOT compatible with Single Extruder Multi Material " +"setup and Wipe into Object / Wipe into Infill." msgstr "" #: src/libslic3r/PrintConfig.cpp:925 +msgid "High extruder current on filament swap" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:926 msgid "" "It may be beneficial to increase the extruder motor current during the " "filament exchange sequence to allow for rapid ramming feed rates and to " "overcome resistance when loading a filament with an ugly shaped tip." msgstr "" -#: src/libslic3r/PrintConfig.cpp:933 +#: src/libslic3r/PrintConfig.cpp:934 msgid "" "This is the acceleration your printer will use for infill. Set zero to " "disable acceleration control for infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:941 +#: src/libslic3r/PrintConfig.cpp:942 msgid "Combine infill every" msgstr "" -#: src/libslic3r/PrintConfig.cpp:943 +#: src/libslic3r/PrintConfig.cpp:944 msgid "" "This feature allows to combine infill and speed up your print by extruding " "thicker infill layers while preserving thin perimeters, thus accuracy." msgstr "" -#: src/libslic3r/PrintConfig.cpp:946 +#: src/libslic3r/PrintConfig.cpp:947 msgid "Combine infill every n layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:952 +#: src/libslic3r/PrintConfig.cpp:953 msgid "Infill extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:954 +#: src/libslic3r/PrintConfig.cpp:955 msgid "The extruder to use when printing infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:962 +#: src/libslic3r/PrintConfig.cpp:963 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill. If " "left zero, default extrusion width will be used if set, otherwise 1.125 x " @@ -5445,32 +5526,32 @@ msgid "" "example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:971 +#: src/libslic3r/PrintConfig.cpp:972 msgid "Infill before perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:972 +#: src/libslic3r/PrintConfig.cpp:973 msgid "" "This option will switch the print order of perimeters and infill, making the " "latter first." msgstr "" -#: src/libslic3r/PrintConfig.cpp:977 +#: src/libslic3r/PrintConfig.cpp:978 msgid "Only infill where needed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:979 +#: src/libslic3r/PrintConfig.cpp:980 msgid "" "This option will limit infill to the areas actually needed for supporting " "ceilings (it will act as internal support material). If enabled, slows down " "the G-code generation due to the multiple checks involved." msgstr "" -#: src/libslic3r/PrintConfig.cpp:986 +#: src/libslic3r/PrintConfig.cpp:987 msgid "Infill/perimeters overlap" msgstr "" -#: src/libslic3r/PrintConfig.cpp:988 +#: src/libslic3r/PrintConfig.cpp:989 msgid "" "This setting applies an additional overlap between infill and perimeters for " "better bonding. Theoretically this shouldn't be needed, but backlash might " @@ -5478,30 +5559,30 @@ msgid "" "perimeter extrusion width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:999 +#: src/libslic3r/PrintConfig.cpp:1000 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1007 +#: src/libslic3r/PrintConfig.cpp:1008 msgid "Inherits profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1008 +#: src/libslic3r/PrintConfig.cpp:1009 msgid "Name of the profile, from which this profile inherits." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1021 +#: src/libslic3r/PrintConfig.cpp:1022 msgid "Interface shells" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1022 +#: src/libslic3r/PrintConfig.cpp:1023 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 "" -#: src/libslic3r/PrintConfig.cpp:1031 +#: src/libslic3r/PrintConfig.cpp:1032 msgid "" "This custom code is inserted at every layer change, right after the Z move " "and before the extruder moves to the first layer point. Note that you can " @@ -5509,11 +5590,11 @@ msgid "" "[layer_z]." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1042 +#: src/libslic3r/PrintConfig.cpp:1043 msgid "Supports remaining times" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1043 +#: src/libslic3r/PrintConfig.cpp:1044 msgid "" "Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute " "intervals into the G-code to let the firmware show accurate remaining time. " @@ -5521,63 +5602,63 @@ msgid "" "firmware supports M73 Qxx Sxx for the silent mode." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1051 +#: src/libslic3r/PrintConfig.cpp:1052 msgid "Supports silent mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1052 +#: src/libslic3r/PrintConfig.cpp:1053 msgid "Set silent mode for the G-code flavor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1075 +#: src/libslic3r/PrintConfig.cpp:1076 msgid "Maximum feedrate %1%" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1077 +#: src/libslic3r/PrintConfig.cpp:1078 msgid "Maximum feedrate of the %1% axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1085 +#: src/libslic3r/PrintConfig.cpp:1086 msgid "Maximum acceleration %1%" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1087 +#: src/libslic3r/PrintConfig.cpp:1088 msgid "Maximum acceleration of the %1% axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1095 +#: src/libslic3r/PrintConfig.cpp:1096 msgid "Maximum jerk %1%" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1097 +#: src/libslic3r/PrintConfig.cpp:1098 msgid "Maximum jerk of the %1% axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1108 src/libslic3r/PrintConfig.cpp:1110 +#: src/libslic3r/PrintConfig.cpp:1109 src/libslic3r/PrintConfig.cpp:1111 msgid "Minimum feedrate when extruding" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1121 +#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1122 msgid "Minimum travel feedrate" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1130 src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 msgid "Maximum acceleration when extruding" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1141 src/libslic3r/PrintConfig.cpp:1143 +#: src/libslic3r/PrintConfig.cpp:1142 src/libslic3r/PrintConfig.cpp:1144 msgid "Maximum acceleration when retracting" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1151 src/libslic3r/PrintConfig.cpp:1160 +#: src/libslic3r/PrintConfig.cpp:1152 src/libslic3r/PrintConfig.cpp:1161 msgid "Max" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1152 +#: src/libslic3r/PrintConfig.cpp:1153 msgid "This setting represents the maximum speed of your fan." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1161 +#: src/libslic3r/PrintConfig.cpp:1162 #, no-c-format msgid "" "This is the highest printable layer height for this extruder, used to cap " @@ -5586,28 +5667,28 @@ msgid "" "adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1171 +#: src/libslic3r/PrintConfig.cpp:1172 msgid "Max print speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1172 +#: src/libslic3r/PrintConfig.cpp:1173 msgid "" "When setting other speed settings to 0 Slic3r will autocalculate the optimal " "speed in order to keep constant extruder pressure. This experimental setting " "is used to set the highest print speed you want to allow." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1182 +#: src/libslic3r/PrintConfig.cpp:1183 msgid "" "This experimental setting is used to set the maximum volumetric speed your " "extruder supports." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1191 +#: src/libslic3r/PrintConfig.cpp:1192 msgid "Max volumetric slope positive" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1192 src/libslic3r/PrintConfig.cpp:1203 +#: src/libslic3r/PrintConfig.cpp:1193 src/libslic3r/PrintConfig.cpp:1204 msgid "" "This experimental setting is used to limit the speed of change in extrusion " "rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate " @@ -5615,99 +5696,99 @@ msgid "" "s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1196 src/libslic3r/PrintConfig.cpp:1207 +#: src/libslic3r/PrintConfig.cpp:1197 src/libslic3r/PrintConfig.cpp:1208 msgid "mm³/s²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1202 +#: src/libslic3r/PrintConfig.cpp:1203 msgid "Max volumetric slope negative" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1214 src/libslic3r/PrintConfig.cpp:1223 +#: src/libslic3r/PrintConfig.cpp:1215 src/libslic3r/PrintConfig.cpp:1224 msgid "Min" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1215 +#: src/libslic3r/PrintConfig.cpp:1216 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1224 +#: src/libslic3r/PrintConfig.cpp:1225 msgid "" "This is the lowest printable layer height for this extruder and limits the " "resolution for variable layer height. Typical values are between 0.05 mm and " "0.1 mm." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1232 +#: src/libslic3r/PrintConfig.cpp:1233 msgid "Min print speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1233 +#: src/libslic3r/PrintConfig.cpp:1234 msgid "Slic3r will not scale speed down below this speed." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1240 +#: src/libslic3r/PrintConfig.cpp:1241 msgid "Minimal filament extrusion length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1241 +#: src/libslic3r/PrintConfig.cpp:1242 msgid "" "Generate no less than the number of skirt loops required to consume the " "specified amount of filament on the bottom layer. For multi-extruder " "machines, this minimum applies to each extruder." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1250 +#: src/libslic3r/PrintConfig.cpp:1251 msgid "Configuration notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1251 +#: src/libslic3r/PrintConfig.cpp:1252 msgid "" "You can put here your personal notes. This text will be added to the G-code " "header comments." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1260 +#: src/libslic3r/PrintConfig.cpp:1261 msgid "Nozzle diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1261 +#: src/libslic3r/PrintConfig.cpp:1262 msgid "" "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1266 +#: src/libslic3r/PrintConfig.cpp:1267 msgid "Host Type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1267 +#: src/libslic3r/PrintConfig.cpp:1268 msgid "" "Slic3r can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1278 +#: src/libslic3r/PrintConfig.cpp:1279 msgid "Only retract when crossing perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1279 +#: src/libslic3r/PrintConfig.cpp:1280 msgid "" "Disables retraction when the travel path does not exceed the upper layer's " "perimeters (and thus any ooze will be probably invisible)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1286 +#: src/libslic3r/PrintConfig.cpp:1287 msgid "" "This option will drop the temperature of the inactive extruders to prevent " "oozing. It will enable a tall skirt automatically and move extruders outside " "such skirt when changing temperatures." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1293 +#: src/libslic3r/PrintConfig.cpp:1294 msgid "Output filename format" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1294 +#: src/libslic3r/PrintConfig.cpp:1295 msgid "" "You can use all configuration options as variables inside this template. For " "example: [layer_height], [fill_density] etc. You can also use [timestamp], " @@ -5715,31 +5796,31 @@ msgid "" "[input_filename], [input_filename_base]." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1303 +#: src/libslic3r/PrintConfig.cpp:1304 msgid "Detect bridging perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1305 +#: src/libslic3r/PrintConfig.cpp:1306 msgid "" "Experimental option to adjust flow for overhangs (bridge flow will be used), " "to apply bridge speed to them and enable fan." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1311 +#: src/libslic3r/PrintConfig.cpp:1312 msgid "Filament parking position" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1312 +#: src/libslic3r/PrintConfig.cpp:1313 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 "" -#: src/libslic3r/PrintConfig.cpp:1320 +#: src/libslic3r/PrintConfig.cpp:1321 msgid "Extra loading distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1321 +#: src/libslic3r/PrintConfig.cpp:1322 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 " @@ -5747,28 +5828,28 @@ msgid "" "than unloading. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:1329 src/libslic3r/PrintConfig.cpp:1347 -#: src/libslic3r/PrintConfig.cpp:1359 src/libslic3r/PrintConfig.cpp:1369 +#: src/libslic3r/PrintConfig.cpp:1330 src/libslic3r/PrintConfig.cpp:1348 +#: src/libslic3r/PrintConfig.cpp:1360 src/libslic3r/PrintConfig.cpp:1370 msgid "Perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1330 +#: src/libslic3r/PrintConfig.cpp:1331 msgid "" "This is the acceleration your printer will use for perimeters. A high value " "like 9000 usually gives good results if your hardware is up to the job. Set " "zero to disable acceleration control for perimeters." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1338 +#: src/libslic3r/PrintConfig.cpp:1339 msgid "Perimeter extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1340 +#: src/libslic3r/PrintConfig.cpp:1341 msgid "" "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1349 +#: src/libslic3r/PrintConfig.cpp:1350 msgid "" "Set this to a non-zero value to set a manual extrusion width for perimeters. " "You may want to use thinner extrudates to get more accurate surfaces. If " @@ -5777,12 +5858,12 @@ msgid "" "it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1361 +#: src/libslic3r/PrintConfig.cpp:1362 msgid "" "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1371 +#: src/libslic3r/PrintConfig.cpp:1372 msgid "" "This option sets the number of perimeters to generate for each layer. Note " "that Slic3r may increase this number automatically when it detects sloping " @@ -5790,11 +5871,11 @@ msgid "" "Perimeters option is enabled." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1375 +#: src/libslic3r/PrintConfig.cpp:1376 msgid "(minimum)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1383 +#: src/libslic3r/PrintConfig.cpp:1384 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. " @@ -5803,55 +5884,55 @@ msgid "" "environment variables." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1395 +#: src/libslic3r/PrintConfig.cpp:1396 msgid "Printer type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1396 +#: src/libslic3r/PrintConfig.cpp:1397 msgid "Type of the printer." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1401 +#: src/libslic3r/PrintConfig.cpp:1402 msgid "Printer notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1402 +#: src/libslic3r/PrintConfig.cpp:1403 msgid "You can put your notes regarding the printer here." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1410 +#: src/libslic3r/PrintConfig.cpp:1411 msgid "Printer vendor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1411 +#: src/libslic3r/PrintConfig.cpp:1412 msgid "Name of the printer vendor." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1416 +#: src/libslic3r/PrintConfig.cpp:1417 msgid "Printer variant" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1417 +#: src/libslic3r/PrintConfig.cpp:1418 msgid "" "Name of the printer variant. For example, the printer variants may be " "differentiated by a nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1430 +#: src/libslic3r/PrintConfig.cpp:1431 msgid "Raft layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1432 +#: src/libslic3r/PrintConfig.cpp:1433 msgid "" "The object will be raised by this number of layers, and support material " "will be generated under it." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1440 +#: src/libslic3r/PrintConfig.cpp:1441 msgid "Resolution" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1441 +#: src/libslic3r/PrintConfig.cpp:1442 msgid "" "Minimum detail resolution, used to simplify the input file for speeding up " "the slicing job and reducing memory usage. High-resolution models often " @@ -5859,278 +5940,278 @@ msgid "" "simplification and use full resolution from input." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1451 +#: src/libslic3r/PrintConfig.cpp:1452 msgid "Minimum travel after retraction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1452 +#: src/libslic3r/PrintConfig.cpp:1453 msgid "" "Retraction is not triggered when travel moves are shorter than this length." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1458 +#: src/libslic3r/PrintConfig.cpp:1459 msgid "Retract amount before wipe" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1459 +#: src/libslic3r/PrintConfig.cpp:1460 msgid "" "With bowden extruders, it may be wise to do some amount of quick retract " "before doing the wipe movement." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1466 +#: src/libslic3r/PrintConfig.cpp:1467 msgid "Retract on layer change" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1467 +#: src/libslic3r/PrintConfig.cpp:1468 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1472 src/libslic3r/PrintConfig.cpp:1480 +#: src/libslic3r/PrintConfig.cpp:1473 src/libslic3r/PrintConfig.cpp:1481 msgid "Length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1473 +#: src/libslic3r/PrintConfig.cpp:1474 msgid "Retraction Length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1474 +#: src/libslic3r/PrintConfig.cpp:1475 msgid "" "When retraction is triggered, filament is pulled back by the specified " "amount (the length is measured on raw filament, before it enters the " "extruder)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1476 src/libslic3r/PrintConfig.cpp:1485 +#: src/libslic3r/PrintConfig.cpp:1477 src/libslic3r/PrintConfig.cpp:1486 msgid "mm (zero to disable)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1481 +#: src/libslic3r/PrintConfig.cpp:1482 msgid "Retraction Length (Toolchange)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1483 msgid "" "When retraction is triggered before changing tool, filament is pulled back " "by the specified amount (the length is measured on raw filament, before it " "enters the extruder)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1490 +#: src/libslic3r/PrintConfig.cpp:1491 msgid "Lift Z" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1491 +#: src/libslic3r/PrintConfig.cpp:1492 msgid "" "If you set this to a positive value, Z is quickly raised every time a " "retraction is triggered. When using multiple extruders, only the setting for " "the first extruder will be considered." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1498 +#: src/libslic3r/PrintConfig.cpp:1499 msgid "Above Z" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1499 +#: src/libslic3r/PrintConfig.cpp:1500 msgid "Only lift Z above" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1500 +#: src/libslic3r/PrintConfig.cpp:1501 msgid "" "If you set this to a positive value, Z lift will only take place above the " "specified absolute Z. You can tune this setting for skipping lift on the " "first layers." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1507 +#: src/libslic3r/PrintConfig.cpp:1508 msgid "Below Z" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1508 +#: src/libslic3r/PrintConfig.cpp:1509 msgid "Only lift Z below" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1509 +#: src/libslic3r/PrintConfig.cpp:1510 msgid "" "If you set this to a positive value, Z lift will only take place below the " "specified absolute Z. You can tune this setting for limiting lift to the " "first layers." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1525 +#: src/libslic3r/PrintConfig.cpp:1518 src/libslic3r/PrintConfig.cpp:1526 msgid "Extra length on restart" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1518 +#: src/libslic3r/PrintConfig.cpp:1519 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 "" -#: src/libslic3r/PrintConfig.cpp:1526 +#: src/libslic3r/PrintConfig.cpp:1527 msgid "" "When the retraction is compensated after changing tool, the extruder will " "push this additional amount of filament." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1533 src/libslic3r/PrintConfig.cpp:1534 +#: src/libslic3r/PrintConfig.cpp:1534 src/libslic3r/PrintConfig.cpp:1535 msgid "Retraction Speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1535 +#: src/libslic3r/PrintConfig.cpp:1536 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1542 +#: src/libslic3r/PrintConfig.cpp:1542 src/libslic3r/PrintConfig.cpp:1543 msgid "Deretraction Speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1543 +#: src/libslic3r/PrintConfig.cpp:1544 msgid "" "The speed for loading of a filament into extruder after retraction (it only " "applies to the extruder motor). If left to zero, the retraction speed is " "used." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1550 +#: src/libslic3r/PrintConfig.cpp:1551 msgid "Seam position" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1552 +#: src/libslic3r/PrintConfig.cpp:1553 msgid "Position of perimeters starting points." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1558 +#: src/libslic3r/PrintConfig.cpp:1559 msgid "Random" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1559 +#: src/libslic3r/PrintConfig.cpp:1560 msgid "Nearest" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1560 +#: src/libslic3r/PrintConfig.cpp:1561 msgid "Aligned" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1568 +#: src/libslic3r/PrintConfig.cpp:1569 msgid "Direction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1570 +#: src/libslic3r/PrintConfig.cpp:1571 msgid "Preferred direction of the seam" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1571 +#: src/libslic3r/PrintConfig.cpp:1572 msgid "Seam preferred direction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1578 +#: src/libslic3r/PrintConfig.cpp:1579 msgid "Jitter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1580 +#: src/libslic3r/PrintConfig.cpp:1581 msgid "Seam preferred direction jitter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1581 +#: src/libslic3r/PrintConfig.cpp:1582 msgid "Preferred direction of the seam - jitter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1591 +#: src/libslic3r/PrintConfig.cpp:1592 msgid "USB/serial port for printer connection." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1598 +#: src/libslic3r/PrintConfig.cpp:1599 msgid "Serial port speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1599 +#: src/libslic3r/PrintConfig.cpp:1600 msgid "Speed (baud) of USB/serial port for printer connection." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1608 +#: src/libslic3r/PrintConfig.cpp:1609 msgid "Distance from object" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1609 +#: src/libslic3r/PrintConfig.cpp:1610 msgid "" "Distance between skirt and object(s). Set this to zero to attach the skirt " "to the object(s) and get a brim for better adhesion." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1616 +#: src/libslic3r/PrintConfig.cpp:1617 msgid "Skirt height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1617 +#: src/libslic3r/PrintConfig.cpp:1618 msgid "" "Height of skirt expressed in layers. Set this to a tall value to use skirt " "as a shield against drafts." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1624 +#: src/libslic3r/PrintConfig.cpp:1625 msgid "Loops (minimum)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1625 +#: src/libslic3r/PrintConfig.cpp:1626 msgid "Skirt Loops" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1626 +#: src/libslic3r/PrintConfig.cpp:1627 msgid "" "Number of loops for the skirt. If the Minimum Extrusion Length option is " "set, the number of loops might be greater than the one configured here. Set " "this to zero to disable skirt completely." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1634 +#: src/libslic3r/PrintConfig.cpp:1635 msgid "Slow down if layer print time is below" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1635 +#: src/libslic3r/PrintConfig.cpp:1636 msgid "" "If layer print time is estimated below this number of seconds, print moves " "speed will be scaled down to extend duration to this value." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1645 +#: src/libslic3r/PrintConfig.cpp:1646 msgid "Small perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1647 +#: src/libslic3r/PrintConfig.cpp:1648 msgid "" "This separate setting will affect the speed of perimeters having radius <= " "6.5mm (usually holes). If expressed as percentage (for example: 80%) it will " "be calculated on the perimeters speed setting above. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1657 +#: src/libslic3r/PrintConfig.cpp:1658 msgid "Solid infill threshold area" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1659 +#: src/libslic3r/PrintConfig.cpp:1660 msgid "" "Force solid infill for regions having a smaller area than the specified " "threshold." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1660 +#: src/libslic3r/PrintConfig.cpp:1661 msgid "mm²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1666 +#: src/libslic3r/PrintConfig.cpp:1667 msgid "Solid infill extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1668 +#: src/libslic3r/PrintConfig.cpp:1669 msgid "The extruder to use when printing solid infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1674 +#: src/libslic3r/PrintConfig.cpp:1675 msgid "Solid infill every" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1676 +#: src/libslic3r/PrintConfig.cpp:1677 msgid "" "This feature allows to force a solid layer every given number of layers. " "Zero to disable. You can set this to any value (for example 9999); Slic3r " @@ -6138,7 +6219,7 @@ msgid "" "according to nozzle diameter and layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1689 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill for " "solid surfaces. If left zero, default extrusion width will be used if set, " @@ -6146,22 +6227,22 @@ msgid "" "(for example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1698 +#: src/libslic3r/PrintConfig.cpp:1699 msgid "" "Speed for printing solid regions (top/bottom/internal horizontal shells). " "This can be expressed as a percentage (for example: 80%) over the default " "infill speed above. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1710 +#: src/libslic3r/PrintConfig.cpp:1711 msgid "Number of solid layers to generate on top and bottom surfaces." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1716 +#: src/libslic3r/PrintConfig.cpp:1717 msgid "Spiral vase" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1717 +#: src/libslic3r/PrintConfig.cpp:1718 msgid "" "This feature will raise Z gradually while printing a single-walled object in " "order to remove any visible seam. This option requires a single perimeter, " @@ -6170,18 +6251,18 @@ msgid "" "when printing more than an object." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1725 +#: src/libslic3r/PrintConfig.cpp:1726 msgid "Temperature variation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1726 +#: src/libslic3r/PrintConfig.cpp:1727 msgid "" "Temperature difference to be applied when an extruder is not active. Enables " "a full-height \"sacrificial\" skirt on which the nozzles are periodically " "wiped." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1736 +#: src/libslic3r/PrintConfig.cpp:1737 msgid "" "This start procedure is inserted at the beginning, after bed has reached the " "target temperature and extruder just started heating, and before extruder " @@ -6192,7 +6273,7 @@ msgid "" "\"M109 S[first_layer_temperature]\" command wherever you want." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1751 +#: src/libslic3r/PrintConfig.cpp:1752 msgid "" "This start procedure is inserted at the beginning, after any printer start " "gcode. This is used to override settings for a specific filament. If Slic3r " @@ -6204,93 +6285,93 @@ msgid "" "extruders, the gcode is processed in extruder order." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1766 +#: src/libslic3r/PrintConfig.cpp:1767 msgid "Single Extruder Multi Material" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1767 +#: src/libslic3r/PrintConfig.cpp:1768 msgid "The printer multiplexes filaments into a single hot end." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1772 +#: src/libslic3r/PrintConfig.cpp:1773 msgid "Prime all printing extruders" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1773 +#: src/libslic3r/PrintConfig.cpp:1774 msgid "" "If enabled, all printing extruders will be primed at the front edge of the " "print bed at the start of the print." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1778 +#: src/libslic3r/PrintConfig.cpp:1779 msgid "Generate support material" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1780 +#: src/libslic3r/PrintConfig.cpp:1781 msgid "Enable support material generation." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1784 +#: src/libslic3r/PrintConfig.cpp:1785 msgid "Auto generated supports" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1786 +#: src/libslic3r/PrintConfig.cpp:1787 msgid "" "If checked, supports will be generated automatically based on the overhang " "threshold value. If unchecked, supports will be generated inside the " "\"Support Enforcer\" volumes only." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1792 +#: src/libslic3r/PrintConfig.cpp:1793 msgid "XY separation between an object and its support" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1794 +#: src/libslic3r/PrintConfig.cpp:1795 msgid "" "XY separation between an object and its support. If expressed as percentage " "(for example 50%), it will be calculated over external perimeter width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1804 +#: src/libslic3r/PrintConfig.cpp:1805 msgid "Pattern angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1806 +#: src/libslic3r/PrintConfig.cpp:1807 msgid "" "Use this setting to rotate the support material pattern on the horizontal " "plane." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1816 src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:1817 src/libslic3r/PrintConfig.cpp:2425 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1822 +#: src/libslic3r/PrintConfig.cpp:1823 msgid "Contact Z distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1824 +#: src/libslic3r/PrintConfig.cpp:1825 msgid "" "The vertical distance between object and support material interface. Setting " "this to 0 will also prevent Slic3r from using bridge flow and speed for the " "first object layer." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1831 +#: src/libslic3r/PrintConfig.cpp:1832 msgid "soluble" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1832 +#: src/libslic3r/PrintConfig.cpp:1833 msgid "detachable" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1837 +#: src/libslic3r/PrintConfig.cpp:1838 msgid "Enforce support for the first" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1839 +#: src/libslic3r/PrintConfig.cpp:1840 msgid "" "Generate support material for the specified number of layers counting from " "bottom, regardless of whether normal support material is enabled or not and " @@ -6298,21 +6379,21 @@ msgid "" "of objects having a very thin or poor footprint on the build plate." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1844 +#: src/libslic3r/PrintConfig.cpp:1845 msgid "Enforce support for the first n layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1850 +#: src/libslic3r/PrintConfig.cpp:1851 msgid "Support material/raft/skirt extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:1853 msgid "" "The extruder to use when printing support material, raft and skirt (1+, 0 to " "use the current extruder to minimize tool changes)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1861 +#: src/libslic3r/PrintConfig.cpp:1862 msgid "" "Set this to a non-zero value to set a manual extrusion width for support " "material. If left zero, default extrusion width will be used if set, " @@ -6320,89 +6401,89 @@ msgid "" "example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1869 +#: src/libslic3r/PrintConfig.cpp:1870 msgid "Interface loops" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:1872 msgid "" "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1876 +#: src/libslic3r/PrintConfig.cpp:1877 msgid "Support material/raft interface extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1878 +#: src/libslic3r/PrintConfig.cpp:1879 msgid "" "The extruder to use when printing support material interface (1+, 0 to use " "the current extruder to minimize tool changes). This affects raft too." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1885 +#: src/libslic3r/PrintConfig.cpp:1886 msgid "Interface layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1887 +#: src/libslic3r/PrintConfig.cpp:1888 msgid "" "Number of interface layers to insert between the object(s) and support " "material." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1894 +#: src/libslic3r/PrintConfig.cpp:1895 msgid "Interface pattern spacing" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1896 +#: src/libslic3r/PrintConfig.cpp:1897 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1905 +#: src/libslic3r/PrintConfig.cpp:1906 msgid "" "Speed for printing support material interface layers. If expressed as " "percentage (for example 50%) it will be calculated over support material " "speed." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1914 +#: src/libslic3r/PrintConfig.cpp:1915 msgid "Pattern" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1916 +#: src/libslic3r/PrintConfig.cpp:1917 msgid "Pattern used to generate support material." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1922 +#: src/libslic3r/PrintConfig.cpp:1923 msgid "Rectilinear grid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1928 +#: src/libslic3r/PrintConfig.cpp:1929 msgid "Pattern spacing" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1930 +#: src/libslic3r/PrintConfig.cpp:1931 msgid "Spacing between support material lines." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1939 +#: src/libslic3r/PrintConfig.cpp:1940 msgid "Speed for printing support material." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1946 +#: src/libslic3r/PrintConfig.cpp:1947 msgid "Synchronize with object layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1948 +#: src/libslic3r/PrintConfig.cpp:1949 msgid "" "Synchronize support layers with the object print layers. This is useful with " "multi-material printers, where the extruder switch is expensive." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1954 +#: src/libslic3r/PrintConfig.cpp:1955 msgid "Overhang threshold" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1956 +#: src/libslic3r/PrintConfig.cpp:1957 msgid "" "Support material will not be generated for overhangs whose slope angle (90° " "= vertical) is above the given threshold. In other words, this value " @@ -6411,54 +6492,54 @@ msgid "" "detection (recommended)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1968 +#: src/libslic3r/PrintConfig.cpp:1969 msgid "With sheath around the support" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1970 +#: src/libslic3r/PrintConfig.cpp:1971 msgid "" "Add a sheath (a single perimeter line) around the base support. This makes " "the support more reliable, but also more difficult to remove." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1977 +#: src/libslic3r/PrintConfig.cpp:1978 msgid "" "Extruder temperature for layers after the first one. Set this to zero to " "disable temperature control commands in the output." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1979 +#: src/libslic3r/PrintConfig.cpp:1980 msgid "Temperature" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1985 +#: src/libslic3r/PrintConfig.cpp:1986 msgid "Detect thin walls" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1987 +#: src/libslic3r/PrintConfig.cpp:1988 msgid "" "Detect single-width walls (parts where two extrusions don't fit and we need " "to collapse them into a single trace)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1993 +#: src/libslic3r/PrintConfig.cpp:1994 msgid "Threads" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1994 +#: src/libslic3r/PrintConfig.cpp:1995 msgid "" "Threads are used to parallelize long-running tasks. Optimal threads number " "is slightly above the number of available cores/processors." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2006 +#: src/libslic3r/PrintConfig.cpp:2007 msgid "" "This custom code is inserted right before every extruder change. Note that " "you can use placeholder variables for all Slic3r settings as well as " "[previous_extruder] and [next_extruder]." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2018 +#: src/libslic3r/PrintConfig.cpp:2019 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill for " "top surfaces. You may want to use thinner extrudates to fill all narrow " @@ -6467,7 +6548,7 @@ msgid "" "percentage (for example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2029 +#: src/libslic3r/PrintConfig.cpp:2030 msgid "" "Speed for printing top solid layers (it only applies to the uppermost " "external layers and not to their internal solid layers). You may want to " @@ -6476,43 +6557,43 @@ msgid "" "for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2043 +#: src/libslic3r/PrintConfig.cpp:2045 msgid "Number of solid layers to generate on top surfaces." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2044 +#: src/libslic3r/PrintConfig.cpp:2046 msgid "Top solid layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2050 +#: src/libslic3r/PrintConfig.cpp:2052 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2058 +#: src/libslic3r/PrintConfig.cpp:2060 msgid "Use firmware retraction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2059 +#: src/libslic3r/PrintConfig.cpp:2061 msgid "" "This experimental setting uses G10 and G11 commands to have the firmware " "handle the retraction. This is only supported in recent Marlin." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2065 +#: src/libslic3r/PrintConfig.cpp:2067 msgid "Use relative E distances" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2066 +#: src/libslic3r/PrintConfig.cpp:2068 msgid "" "If your firmware requires relative E values, check this, otherwise leave it " "unchecked. Most firmwares use absolute values." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:2074 msgid "Use volumetric E" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2073 +#: src/libslic3r/PrintConfig.cpp:2075 msgid "" "This experimental setting uses outputs the E values in cubic millimeters " "instead of linear millimeters. If your firmware doesn't already know " @@ -6522,131 +6603,127 @@ msgid "" "only supported in recent Marlin." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2083 +#: src/libslic3r/PrintConfig.cpp:2085 msgid "Enable variable layer height feature" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2084 +#: src/libslic3r/PrintConfig.cpp:2086 msgid "" "Some printers or printer setups may have difficulties printing with a " "variable layer height. Enabled by default." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2090 +#: src/libslic3r/PrintConfig.cpp:2092 msgid "Wipe while retracting" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2091 +#: src/libslic3r/PrintConfig.cpp:2093 msgid "" "This flag will move the nozzle while retracting to minimize the possible " "blob on leaky extruders." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2098 +#: src/libslic3r/PrintConfig.cpp:2100 msgid "" "Multi material printers may need to prime or purge extruders on tool " "changes. Extrude the excess material into the wipe tower." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2104 +#: src/libslic3r/PrintConfig.cpp:2106 msgid "Purging volumes - load/unload volumes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2105 +#: src/libslic3r/PrintConfig.cpp:2107 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 "" -#: src/libslic3r/PrintConfig.cpp:2111 +#: src/libslic3r/PrintConfig.cpp:2113 msgid "Purging volumes - matrix" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2112 +#: src/libslic3r/PrintConfig.cpp:2114 msgid "" "This matrix describes volumes (in cubic milimetres) required to purge the " "new filament on the wipe tower for any given pair of tools. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:2121 +#: src/libslic3r/PrintConfig.cpp:2123 msgid "Position X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2122 +#: src/libslic3r/PrintConfig.cpp:2124 msgid "X coordinate of the left front corner of a wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2128 +#: src/libslic3r/PrintConfig.cpp:2130 msgid "Position Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2129 +#: src/libslic3r/PrintConfig.cpp:2131 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2136 +#: src/libslic3r/PrintConfig.cpp:2138 msgid "Width of a wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2142 +#: src/libslic3r/PrintConfig.cpp:2144 msgid "Wipe tower rotation angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2143 +#: src/libslic3r/PrintConfig.cpp:2145 msgid "Wipe tower rotation angle with respect to x-axis " msgstr "" -#: src/libslic3r/PrintConfig.cpp:2144 src/libslic3r/PrintConfig.cpp:2570 -msgid "degrees" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2150 +#: src/libslic3r/PrintConfig.cpp:2152 msgid "Wipe into this object's infill" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2151 +#: src/libslic3r/PrintConfig.cpp:2153 msgid "" "Purging after toolchange will done inside this object's infills. This lowers " "the amount of waste but may result in longer print time due to additional " "travel moves." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2158 +#: src/libslic3r/PrintConfig.cpp:2160 msgid "Wipe into this object" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2159 +#: src/libslic3r/PrintConfig.cpp:2161 msgid "" "Object will be used to purge the nozzle after a toolchange to save material " "that would otherwise end up in the wipe tower and decrease print time. " "Colours of the objects will be mixed as a result." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2165 +#: src/libslic3r/PrintConfig.cpp:2167 msgid "Maximal bridging distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2166 +#: src/libslic3r/PrintConfig.cpp:2168 msgid "Maximal distance between supports on sparse infill sections. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:2172 +#: src/libslic3r/PrintConfig.cpp:2174 msgid "XY Size Compensation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2174 +#: src/libslic3r/PrintConfig.cpp:2176 msgid "" "The object will be grown/shrunk in the XY plane by the configured value " "(negative = inwards, positive = outwards). This might be useful for fine-" "tuning hole sizes." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2182 +#: src/libslic3r/PrintConfig.cpp:2184 msgid "Z offset" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2183 +#: src/libslic3r/PrintConfig.cpp:2185 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 " @@ -6654,312 +6731,312 @@ msgid "" "print bed, set this to -0.3 (or fix your endstop)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2200 +#: src/libslic3r/PrintConfig.cpp:2202 msgid "Display width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2201 +#: src/libslic3r/PrintConfig.cpp:2203 msgid "Width of the display" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2206 +#: src/libslic3r/PrintConfig.cpp:2208 msgid "Display height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2207 +#: src/libslic3r/PrintConfig.cpp:2209 msgid "Height of the display" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2212 +#: src/libslic3r/PrintConfig.cpp:2214 msgid "Number of pixels in" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2214 +#: src/libslic3r/PrintConfig.cpp:2216 msgid "Number of pixels in X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2220 +#: src/libslic3r/PrintConfig.cpp:2222 msgid "Number of pixels in Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2225 +#: src/libslic3r/PrintConfig.cpp:2227 msgid "Display orientation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2226 +#: src/libslic3r/PrintConfig.cpp:2228 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " "images will be rotated by 90 degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2232 +#: src/libslic3r/PrintConfig.cpp:2234 msgid "Landscape" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2233 +#: src/libslic3r/PrintConfig.cpp:2235 msgid "Portrait" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2238 +#: src/libslic3r/PrintConfig.cpp:2240 msgid "Fast" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2239 +#: src/libslic3r/PrintConfig.cpp:2241 msgid "Fast tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2240 +#: src/libslic3r/PrintConfig.cpp:2242 msgid "Time of the fast tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2247 +#: src/libslic3r/PrintConfig.cpp:2249 msgid "Slow" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2248 +#: src/libslic3r/PrintConfig.cpp:2250 msgid "Slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2249 +#: src/libslic3r/PrintConfig.cpp:2251 msgid "Time of the slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2256 +#: src/libslic3r/PrintConfig.cpp:2258 msgid "Area fill" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2257 +#: src/libslic3r/PrintConfig.cpp:2259 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" "then a slow tilt will be used, otherwise - a fast tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2264 src/libslic3r/PrintConfig.cpp:2265 -#: src/libslic3r/PrintConfig.cpp:2266 +#: src/libslic3r/PrintConfig.cpp:2266 src/libslic3r/PrintConfig.cpp:2267 +#: src/libslic3r/PrintConfig.cpp:2268 msgid "Printer scaling correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2272 src/libslic3r/PrintConfig.cpp:2273 +#: src/libslic3r/PrintConfig.cpp:2274 src/libslic3r/PrintConfig.cpp:2275 msgid "Printer absolute correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2274 +#: src/libslic3r/PrintConfig.cpp:2276 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2281 +#: src/libslic3r/PrintConfig.cpp:2282 src/libslic3r/PrintConfig.cpp:2283 msgid "Printer gamma correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2282 +#: src/libslic3r/PrintConfig.cpp:2284 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " "behaviour eliminates antialiasing without losing holes in polygons." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2293 src/libslic3r/PrintConfig.cpp:2294 +#: src/libslic3r/PrintConfig.cpp:2295 src/libslic3r/PrintConfig.cpp:2296 msgid "Initial layer height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2300 +#: src/libslic3r/PrintConfig.cpp:2302 msgid "Faded layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2301 +#: src/libslic3r/PrintConfig.cpp:2303 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2308 src/libslic3r/PrintConfig.cpp:2309 +#: src/libslic3r/PrintConfig.cpp:2310 src/libslic3r/PrintConfig.cpp:2311 msgid "Exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2315 src/libslic3r/PrintConfig.cpp:2316 +#: src/libslic3r/PrintConfig.cpp:2317 src/libslic3r/PrintConfig.cpp:2318 msgid "Initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2322 src/libslic3r/PrintConfig.cpp:2323 +#: src/libslic3r/PrintConfig.cpp:2324 src/libslic3r/PrintConfig.cpp:2325 msgid "Correction for expansion" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2329 +#: src/libslic3r/PrintConfig.cpp:2331 msgid "SLA print material notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2330 +#: src/libslic3r/PrintConfig.cpp:2332 msgid "You can put your notes regarding the SLA print material here." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2338 src/libslic3r/PrintConfig.cpp:2349 +#: src/libslic3r/PrintConfig.cpp:2340 src/libslic3r/PrintConfig.cpp:2351 msgid "Default SLA material profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2360 +#: src/libslic3r/PrintConfig.cpp:2362 msgid "Generate supports" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2362 +#: src/libslic3r/PrintConfig.cpp:2364 msgid "Generate supports for the models" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2367 +#: src/libslic3r/PrintConfig.cpp:2369 msgid "Support head front diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2369 +#: src/libslic3r/PrintConfig.cpp:2371 msgid "Diameter of the pointing side of the head" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2376 +#: src/libslic3r/PrintConfig.cpp:2378 msgid "Support head penetration" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2378 +#: src/libslic3r/PrintConfig.cpp:2380 msgid "How much the pinhead has to penetrate the model surface" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2385 +#: src/libslic3r/PrintConfig.cpp:2387 msgid "Support head width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2387 +#: src/libslic3r/PrintConfig.cpp:2389 msgid "Width from the back sphere center to the front sphere center" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2395 +#: src/libslic3r/PrintConfig.cpp:2397 msgid "Support pillar diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2397 +#: src/libslic3r/PrintConfig.cpp:2399 msgid "Diameter in mm of the support pillars" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2405 +#: src/libslic3r/PrintConfig.cpp:2407 msgid "Support pillar connection mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2406 +#: src/libslic3r/PrintConfig.cpp:2408 msgid "" "Controls the bridge type between two neigboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " "the first two depending on the distance of the two pillars." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2414 +#: src/libslic3r/PrintConfig.cpp:2416 msgid "Zig-Zag" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2415 +#: src/libslic3r/PrintConfig.cpp:2417 msgid "Cross" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2416 +#: src/libslic3r/PrintConfig.cpp:2418 msgid "Dynamic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2428 +#: src/libslic3r/PrintConfig.cpp:2430 msgid "Pillar widening factor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2430 +#: src/libslic3r/PrintConfig.cpp:2432 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2439 +#: src/libslic3r/PrintConfig.cpp:2441 msgid "Support base diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2441 +#: src/libslic3r/PrintConfig.cpp:2443 msgid "Diameter in mm of the pillar base" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2449 +#: src/libslic3r/PrintConfig.cpp:2451 msgid "Support base height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2451 +#: src/libslic3r/PrintConfig.cpp:2453 msgid "The height of the pillar base cone" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2458 +#: src/libslic3r/PrintConfig.cpp:2460 msgid "Critical angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2460 +#: src/libslic3r/PrintConfig.cpp:2462 msgid "The default angle for connecting support sticks and junctions." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2468 +#: src/libslic3r/PrintConfig.cpp:2470 msgid "Max bridge length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2470 +#: src/libslic3r/PrintConfig.cpp:2472 msgid "The max length of a bridge" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2477 +#: src/libslic3r/PrintConfig.cpp:2479 msgid "Max pillar linking distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2479 +#: src/libslic3r/PrintConfig.cpp:2481 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2487 +#: src/libslic3r/PrintConfig.cpp:2489 msgid "Object elevation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2489 +#: src/libslic3r/PrintConfig.cpp:2491 msgid "How much the supports should lift up the supported object." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2497 +#: src/libslic3r/PrintConfig.cpp:2499 msgid "Support points density" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2499 +#: src/libslic3r/PrintConfig.cpp:2501 msgid "This is a relative measure of support points density." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2505 +#: src/libslic3r/PrintConfig.cpp:2507 msgid "Minimal distance of the support points" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2507 +#: src/libslic3r/PrintConfig.cpp:2509 msgid "No support points will be placed closer than this threshold." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2513 +#: src/libslic3r/PrintConfig.cpp:2515 msgid "Use pad" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2515 +#: src/libslic3r/PrintConfig.cpp:2517 msgid "Add a pad underneath the supported model" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2520 +#: src/libslic3r/PrintConfig.cpp:2522 msgid "Pad wall thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2522 +#: src/libslic3r/PrintConfig.cpp:2524 msgid "The thickness of the pad and its optional cavity walls." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2530 +#: src/libslic3r/PrintConfig.cpp:2532 msgid "Pad wall height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2531 +#: src/libslic3r/PrintConfig.cpp:2533 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -6967,279 +7044,283 @@ msgid "" "difficult." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2544 +#: src/libslic3r/PrintConfig.cpp:2546 msgid "Max merge distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2546 +#: src/libslic3r/PrintConfig.cpp:2548 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " "be. If theyare closer, they will get merged into one pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2557 +#: src/libslic3r/PrintConfig.cpp:2559 msgid "Pad edge radius" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2566 +#: src/libslic3r/PrintConfig.cpp:2568 msgid "Pad wall slope" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2568 +#: src/libslic3r/PrintConfig.cpp:2570 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2929 +#: src/libslic3r/PrintConfig.cpp:2572 +msgid "degrees" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2931 msgid "Export OBJ" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2930 +#: src/libslic3r/PrintConfig.cpp:2932 msgid "Export the model(s) as OBJ." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2941 +#: src/libslic3r/PrintConfig.cpp:2943 msgid "Export SLA" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2942 +#: src/libslic3r/PrintConfig.cpp:2944 msgid "Slice the model and export SLA printing layers as PNG." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2947 +#: src/libslic3r/PrintConfig.cpp:2949 msgid "Export 3MF" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2948 +#: src/libslic3r/PrintConfig.cpp:2950 msgid "Export the model(s) as 3MF." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2952 +#: src/libslic3r/PrintConfig.cpp:2954 msgid "Export AMF" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2953 +#: src/libslic3r/PrintConfig.cpp:2955 msgid "Export the model(s) as AMF." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2957 +#: src/libslic3r/PrintConfig.cpp:2959 msgid "Export STL" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2958 +#: src/libslic3r/PrintConfig.cpp:2960 msgid "Export the model(s) as STL." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2963 +#: src/libslic3r/PrintConfig.cpp:2965 msgid "Slice the model and export toolpaths as G-code." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2968 +#: src/libslic3r/PrintConfig.cpp:2970 msgid "Slice" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2969 +#: src/libslic3r/PrintConfig.cpp:2971 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2974 +#: src/libslic3r/PrintConfig.cpp:2976 msgid "Help" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2975 +#: src/libslic3r/PrintConfig.cpp:2977 msgid "Show this help." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2980 +#: src/libslic3r/PrintConfig.cpp:2982 msgid "Help (FFF options)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2981 +#: src/libslic3r/PrintConfig.cpp:2983 msgid "Show the full list of print/G-code configuration options." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2985 +#: src/libslic3r/PrintConfig.cpp:2987 msgid "Help (SLA options)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2986 +#: src/libslic3r/PrintConfig.cpp:2988 msgid "Show the full list of SLA print configuration options." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2990 +#: src/libslic3r/PrintConfig.cpp:2992 msgid "Output Model Info" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2991 +#: src/libslic3r/PrintConfig.cpp:2993 msgid "Write information about the model to the console." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2995 +#: src/libslic3r/PrintConfig.cpp:2997 msgid "Save config file" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2996 +#: src/libslic3r/PrintConfig.cpp:2998 msgid "Save configuration to the specified file." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3006 +#: src/libslic3r/PrintConfig.cpp:3008 msgid "Align XY" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3007 +#: src/libslic3r/PrintConfig.cpp:3009 msgid "Align the model to the given point." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3012 +#: src/libslic3r/PrintConfig.cpp:3014 msgid "Cut model at the given Z." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3033 +#: src/libslic3r/PrintConfig.cpp:3035 msgid "Center" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3034 +#: src/libslic3r/PrintConfig.cpp:3036 msgid "Center the print around the given center." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3038 +#: src/libslic3r/PrintConfig.cpp:3040 msgid "Don't arrange" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3039 +#: src/libslic3r/PrintConfig.cpp:3041 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3042 +#: src/libslic3r/PrintConfig.cpp:3044 msgid "Duplicate" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3043 +#: src/libslic3r/PrintConfig.cpp:3045 msgid "Multiply copies by this factor." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3047 +#: src/libslic3r/PrintConfig.cpp:3049 msgid "Duplicate by grid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3048 +#: src/libslic3r/PrintConfig.cpp:3050 msgid "Multiply copies by creating a grid." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3051 +#: src/libslic3r/PrintConfig.cpp:3053 msgid "Merge" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3052 +#: src/libslic3r/PrintConfig.cpp:3054 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3057 +#: src/libslic3r/PrintConfig.cpp:3059 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3061 +#: src/libslic3r/PrintConfig.cpp:3063 msgid "Rotation angle around the Z axis in degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3065 +#: src/libslic3r/PrintConfig.cpp:3067 msgid "Rotate around X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3066 +#: src/libslic3r/PrintConfig.cpp:3068 msgid "Rotation angle around the X axis in degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3070 +#: src/libslic3r/PrintConfig.cpp:3072 msgid "Rotate around Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3071 +#: src/libslic3r/PrintConfig.cpp:3073 msgid "Rotation angle around the Y axis in degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3076 +#: src/libslic3r/PrintConfig.cpp:3078 msgid "Scaling factor or percentage." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3083 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3084 +#: src/libslic3r/PrintConfig.cpp:3086 msgid "Scale to Fit" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3087 msgid "Scale to fit the given volume." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3094 +#: src/libslic3r/PrintConfig.cpp:3096 msgid "Ignore non-existent config files" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3095 +#: src/libslic3r/PrintConfig.cpp:3097 msgid "Do not fail if a file supplied to --load does not exist." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3098 +#: src/libslic3r/PrintConfig.cpp:3100 msgid "Load config file" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3099 +#: src/libslic3r/PrintConfig.cpp:3101 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3102 +#: src/libslic3r/PrintConfig.cpp:3104 msgid "Output File" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3103 +#: src/libslic3r/PrintConfig.cpp:3105 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3113 +#: src/libslic3r/PrintConfig.cpp:3115 msgid "Data directory" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3114 +#: src/libslic3r/PrintConfig.cpp:3116 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " "storage." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Logging level" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3118 +#: src/libslic3r/PrintConfig.cpp:3120 msgid "" "Messages with severity lower or eqal to the loglevel will be printed out. 0:" "trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3123 +#: src/libslic3r/PrintConfig.cpp:3125 msgid "Render with a software renderer" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3124 +#: src/libslic3r/PrintConfig.cpp:3126 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index d743a9b23c..72e3597d58 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1473,7 +1473,7 @@ void Print::process() BOOST_LOG_TRIVIAL(info) << "Staring the slicing process." << log_memory_info(); for (PrintObject *obj : m_objects) obj->make_perimeters(); - this->set_status(70, "Infilling layers"); + this->set_status(70, L("Infilling layers")); for (PrintObject *obj : m_objects) obj->infill(); for (PrintObject *obj : m_objects) @@ -1481,7 +1481,7 @@ void Print::process() if (this->set_started(psSkirt)) { m_skirt.clear(); if (this->has_skirt()) { - this->set_status(88, "Generating skirt"); + this->set_status(88, L("Generating skirt")); this->_make_skirt(); } this->set_done(psSkirt); @@ -1489,7 +1489,7 @@ void Print::process() if (this->set_started(psBrim)) { m_brim.clear(); if (m_config.brim_width > 0) { - this->set_status(88, "Generating brim"); + this->set_status(88, L("Generating brim")); this->_make_brim(); } this->set_done(psBrim); @@ -1497,7 +1497,7 @@ void Print::process() if (this->set_started(psWipeTower)) { m_wipe_tower_data.clear(); if (this->has_wipe_tower()) { - //this->set_status(95, "Generating wipe tower"); + //this->set_status(95, L("Generating wipe tower")); this->_make_wipe_tower(); } this->set_done(psWipeTower); @@ -1514,7 +1514,8 @@ std::string Print::export_gcode(const std::string &path_template, GCodePreviewDa // output everything to a G-code file // The following call may die if the output_filename_format template substitution fails. std::string path = this->output_filepath(path_template); - std::string message = "Exporting G-code"; + std::string message = L("Exporting G-code"); + // #ys_FIXME_localization if (! path.empty() && preview_data == nullptr) { // Only show the path if preview_data is not set -> running from command line. message += " to "; diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 3e1fc5c3d9..f2aba0e97d 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -92,9 +92,9 @@ void PrintConfigDef::init_common_params() def->default_value = new ConfigOptionString(""); def = this->add("printhost_cafile", coString); - def->label = "HTTPS CA File"; - def->tooltip = "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."; + def->label = L("HTTPS CA File"); + def->tooltip = L("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."); def->mode = comAdvanced; def->default_value = new ConfigOptionString(""); } @@ -145,6 +145,7 @@ void PrintConfigDef::init_fff_params() def->default_value = new ConfigOptionString(""); def = this->add("bottom_solid_layers", coInt); + //TRN To be shown in Print Settings "Bottom solid layers" def->label = L("Bottom"); def->category = L("Layers and Perimeters"); def->tooltip = L("Number of solid layers to generate on bottom surfaces."); @@ -913,10 +914,10 @@ void PrintConfigDef::init_fff_params() def->default_value = new ConfigOptionEnum(gcfRepRap); def = this->add("gcode_label_objects", coBool); - def->label = "Label objects"; - def->tooltip = "Enable this to add comments into the G-Code labeling print moves with what object they belong to," + def->label = L("Label objects"); + def->tooltip = L("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."; + "Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill."); def->mode = comAdvanced; def->default_value = new ConfigOptionBool(0); @@ -2038,6 +2039,7 @@ void PrintConfigDef::init_fff_params() def->default_value = new ConfigOptionFloatOrPercent(15, false); def = this->add("top_solid_layers", coInt); + //TRN To be shown in Print Settings "Top solid layers" def->label = L("Top"); def->category = L("Layers and Perimeters"); def->tooltip = L("Number of solid layers to generate on top surfaces."); @@ -2141,7 +2143,7 @@ void PrintConfigDef::init_fff_params() def = this->add("wipe_tower_rotation_angle", coFloat); def->label = L("Wipe tower rotation angle"); def->tooltip = L("Wipe tower rotation angle with respect to x-axis "); - def->sidetext = L("degrees"); + def->sidetext = L("°"); def->mode = comAdvanced; def->default_value = new ConfigOptionFloat(0.); diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index bb03d1e9d1..fddb711938 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -2,6 +2,7 @@ #include "BoundingBox.hpp" #include "ClipperUtils.hpp" #include "Geometry.hpp" +#include "I18N.hpp" #include "SupportMaterial.hpp" #include "Surface.hpp" #include "Slicing.hpp" @@ -17,6 +18,10 @@ #include +//! macro used to mark string used at localization, +//! return same string +#define L(s) Slic3r::I18N::translate(s) + #ifdef SLIC3R_DEBUG_SLICE_PROCESSING #define SLIC3R_DEBUG #endif @@ -102,7 +107,7 @@ void PrintObject::slice() { if (! this->set_started(posSlice)) return; - m_print->set_status(10, "Processing triangulated mesh"); + m_print->set_status(10, L("Processing triangulated mesh")); std::vector layer_height_profile; this->update_layer_height_profile(*this->model_object(), m_slicing_params, layer_height_profile); m_print->throw_if_canceled(); @@ -133,7 +138,7 @@ void PrintObject::make_perimeters() if (! this->set_started(posPerimeters)) return; - m_print->set_status(20, "Generating perimeters"); + m_print->set_status(20, L("Generating perimeters")); BOOST_LOG_TRIVIAL(info) << "Generating perimeters..." << log_memory_info(); // merge slices if they were split into types @@ -243,7 +248,7 @@ void PrintObject::prepare_infill() if (! this->set_started(posPrepareInfill)) return; - m_print->set_status(30, "Preparing infill"); + m_print->set_status(30, L("Preparing infill")); // This will assign a type (top/bottom/internal) to $layerm->slices. // Then the classifcation of $layerm->slices is transfered onto @@ -383,7 +388,7 @@ void PrintObject::generate_support_material() if (this->set_started(posSupportMaterial)) { this->clear_support_layers(); if ((m_config.support_material || m_config.raft_layers > 0) && m_layers.size() > 1) { - m_print->set_status(85, "Generating support material"); + m_print->set_status(85, L("Generating support material")); this->_generate_support_material(); m_print->throw_if_canceled(); } else { diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.cpp b/src/slic3r/GUI/BackgroundSlicingProcess.cpp index e5135ef43d..2a61e3ce72 100644 --- a/src/slic3r/GUI/BackgroundSlicingProcess.cpp +++ b/src/slic3r/GUI/BackgroundSlicingProcess.cpp @@ -28,6 +28,7 @@ #include #include #include +#include "I18N.hpp" namespace Slic3r { @@ -81,13 +82,14 @@ void BackgroundSlicingProcess::process_fff() std::string export_path = m_fff_print->print_statistics().finalize_output_path(m_export_path); if (copy_file(m_temp_output_path, export_path) != 0) throw std::runtime_error("Copying of the temporary G-code to the output G-code failed"); - m_print->set_status(95, "Running post-processing scripts"); + m_print->set_status(95, L("Running post-processing scripts")); run_post_process_scripts(export_path, m_fff_print->config()); - m_print->set_status(100, "G-code file exported to " + export_path); + // #ys_FIXME_localization + m_print->set_status(100, L("G-code file exported to ") + export_path); } else if (! m_upload_job.empty()) { prepare_upload(); } else { - m_print->set_status(100, "Slicing complete"); + m_print->set_status(100, L("Slicing complete")); } this->set_step_done(bspsGCodeFinalize); } @@ -101,11 +103,12 @@ void BackgroundSlicingProcess::process_sla() if (! m_export_path.empty()) { const std::string export_path = m_sla_print->print_statistics().finalize_output_path(m_export_path); m_sla_print->export_raster(export_path); - m_print->set_status(100, "Masked SLA file exported to " + export_path); + // #ys_FIXME_localization + m_print->set_status(100, L("Masked SLA file exported to ") + export_path); } else if (! m_upload_job.empty()) { prepare_upload(); } else { - m_print->set_status(100, "Slicing complete"); + m_print->set_status(100, L("Slicing complete")); } this->set_step_done(bspsGCodeFinalize); } @@ -394,7 +397,7 @@ void BackgroundSlicingProcess::prepare_upload() / boost::filesystem::unique_path("." SLIC3R_APP_KEY ".upload.%%%%-%%%%-%%%%-%%%%"); if (m_print == m_fff_print) { - m_print->set_status(95, "Running post-processing scripts"); + m_print->set_status(95, L("Running post-processing scripts")); if (copy_file(m_temp_output_path, source_path.string()) != 0) { throw std::runtime_error("Copying of the temporary G-code to the output G-code failed"); } @@ -405,7 +408,8 @@ void BackgroundSlicingProcess::prepare_upload() m_sla_print->export_raster(source_path.string(), m_upload_job.upload_data.upload_path.string()); } - m_print->set_status(100, (boost::format("Scheduling upload to `%1%`. See Window -> Print Host Upload Queue") % m_upload_job.printhost->get_host()).str()); + // #ys_FIXME_localization + m_print->set_status(100, (boost::format(L("Scheduling upload to `%1%`. See Window -> Print Host Upload Queue")) % m_upload_job.printhost->get_host()).str()); m_upload_job.upload_data.source_path = std::move(source_path); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 586ab910f7..490c685ad5 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -795,7 +795,7 @@ bool GLCanvas3D::WarningTexture::_generate(const std::string& msg_utf8, const GL if (msg_utf8.empty()) return false; - wxString msg = GUI::from_u8(msg_utf8); + wxString msg = _(msg_utf8);//GUI::from_u8(msg_utf8); wxMemoryDC memDC; diff --git a/src/slic3r/GUI/GUI_ObjectSettings.cpp b/src/slic3r/GUI/GUI_ObjectSettings.cpp index b7ba2d4fcd..8ea60cff01 100644 --- a/src/slic3r/GUI/GUI_ObjectSettings.cpp +++ b/src/slic3r/GUI/GUI_ObjectSettings.cpp @@ -121,7 +121,7 @@ void ObjectSettings::update_settings_list() if (cat.second.size() == 1 && cat.second[0] == "extruder") continue; - auto optgroup = std::make_shared(m_og->ctrl_parent(), cat.first, config, false, extra_column); + auto optgroup = std::make_shared(m_og->ctrl_parent(), _(cat.first), config, false, extra_column); optgroup->label_width = 15; optgroup->sidetext_width = 5.5; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp index 5be5e9a89c..017c00143c 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp @@ -923,7 +923,7 @@ RENDER_AGAIN: // Following is rendered in both editing and non-editing mode: m_imgui->text(""); if (m_clipping_plane_distance == 0.f) - m_imgui->text("Clipping of view: "); + m_imgui->text(_(L("Clipping of view:"))+ " "); else { if (m_imgui->button(_(L("Reset direction")))) { wxGetApp().CallAfter([this](){ diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index 066bc54fab..c80ee2ce44 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -48,9 +48,9 @@ KBShortcutsDialog::KBShortcutsDialog() m_head_bitmaps.reserve(m_full_shortcuts.size()); const wxSize topic_size = wxSize(10 * wxGetApp().em_unit(), -1); - for (auto& sc : m_full_shortcuts) + for (auto& shortcut : m_full_shortcuts) { - auto sizer = sc.second.second == szLeft ? l_sizer : r_sizer; + auto sizer = shortcut.second.second == szLeft ? l_sizer : r_sizer; wxBoxSizer* hsizer = new wxBoxSizer(wxHORIZONTAL); sizer->Add(hsizer, 0, wxEXPAND | wxTOP | wxBOTTOM, 10); @@ -59,7 +59,7 @@ KBShortcutsDialog::KBShortcutsDialog() hsizer->Add(m_head_bitmaps.back(), 0, wxEXPAND | wxLEFT | wxRIGHT, 15); // head - wxStaticText* head = new wxStaticText(panel, wxID_ANY, sc.first, wxDefaultPosition, topic_size); + wxStaticText* head = new wxStaticText(panel, wxID_ANY, shortcut.first, wxDefaultPosition, topic_size); head->SetFont(head_font); hsizer->Add(head, 0, wxALIGN_CENTER_VERTICAL); @@ -68,7 +68,7 @@ KBShortcutsDialog::KBShortcutsDialog() auto grid_sizer = new wxFlexGridSizer(2, 5, 15); sizer->Add(grid_sizer, 0, wxEXPAND | wxLEFT| wxRIGHT, 15); - for (auto pair : sc.second.first) + for (auto pair : shortcut.second.first) { auto shortcut = new wxStaticText(panel, wxID_ANY, _(pair.first)); shortcut->SetFont(bold_font); @@ -124,7 +124,7 @@ void KBShortcutsDialog::fill_shortcuts() main_shortcuts.push_back(Shortcut("+" ,L("Add Instance to selected object "))); main_shortcuts.push_back(Shortcut("-" ,L("Remove Instance from selected object"))); main_shortcuts.push_back(Shortcut("?" ,L("Show keyboard shortcuts list"))); - main_shortcuts.push_back(Shortcut(ctrl+"LeftMouse" ,L("Select multiple object/Move multiple object"))); + main_shortcuts.push_back(Shortcut(ctrl/*+"LeftMouse"*/,L("Press to select multiple object or move multiple object with mouse"))); m_full_shortcuts.push_back(std::make_pair(_(L("Main Shortcuts")), std::make_pair(main_shortcuts, szLeft))); diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 12e59c6f56..fd63889fc2 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -518,7 +518,9 @@ void MainFrame::init_menubar() // The camera control accelerators are captured by GLCanvas3D::on_char(). wxMenuItem* item_iso = append_menu_item(viewMenu, wxID_ANY, _(L("Iso")) + sep + "&0", _(L("Iso View")), [this](wxCommandEvent&) { select_view("iso"); }); viewMenu->AppendSeparator(); + //TRN To be shown in the main menu View->Top wxMenuItem* item_top = append_menu_item(viewMenu, wxID_ANY, _(L("Top")) + sep + "&1", _(L("Top View")), [this](wxCommandEvent&) { select_view("top"); }); + //TRN To be shown in the main menu View->Bottom wxMenuItem* item_bottom = append_menu_item(viewMenu, wxID_ANY, _(L("Bottom")) + sep + "&2", _(L("Bottom View")), [this](wxCommandEvent&) { select_view("bottom"); }); wxMenuItem* item_front = append_menu_item(viewMenu, wxID_ANY, _(L("Front")) + sep + "&3", _(L("Front View")), [this](wxCommandEvent&) { select_view("front"); }); wxMenuItem* item_rear = append_menu_item(viewMenu, wxID_ANY, _(L("Rear")) + sep + "&4", _(L("Rear View")), [this](wxCommandEvent&) { select_view("rear"); }); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index f3e4bee25b..2d44237bd7 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -989,7 +989,7 @@ void Sidebar::show_info_sizer() p->object_info->manifold_warning_icon->SetToolTip(tooltip); } else { - p->object_info->info_manifold->SetLabel(L("Yes")); + p->object_info->info_manifold->SetLabel(_(L("Yes"))); p->object_info->showing_manifold_warning_icon = false; p->object_info->info_manifold->SetToolTip(""); p->object_info->manifold_warning_icon->SetToolTip(""); @@ -2403,7 +2403,7 @@ unsigned int Plater::priv::update_background_process(bool force_validation) // Background data is valid. if ((return_state & UPDATE_BACKGROUND_PROCESS_RESTART) != 0 || (return_state & UPDATE_BACKGROUND_PROCESS_REFRESH_SCENE) != 0 ) - this->statusbar()->set_status_text(L("Ready to slice")); + this->statusbar()->set_status_text(_(L("Ready to slice"))); sidebar->set_btn_label(ActionButtonType::abExport, _(label_btn_export)); sidebar->set_btn_label(ActionButtonType::abSendGCode, _(label_btn_send)); @@ -2441,7 +2441,7 @@ bool Plater::priv::restart_background_process(unsigned int state) // The print is valid and it can be started. if (this->background_process.start()) { this->statusbar()->set_cancel_callback([this]() { - this->statusbar()->set_status_text(L("Cancelling")); + this->statusbar()->set_status_text(_(L("Cancelling"))); this->background_process.stop(); }); return true; @@ -2665,7 +2665,7 @@ void Plater::priv::on_slicing_update(SlicingStatusEvent &evt) } this->statusbar()->set_progress(evt.status.percent); - this->statusbar()->set_status_text(_(L(evt.status.text)) + wxString::FromUTF8("…")); + this->statusbar()->set_status_text(_(evt.status.text) + wxString::FromUTF8("…")); } if (evt.status.flags & (PrintBase::SlicingStatus::RELOAD_SCENE || PrintBase::SlicingStatus::RELOAD_SLA_SUPPORT_POINTS)) { switch (this->printer_technology) { @@ -2724,7 +2724,7 @@ void Plater::priv::on_process_completed(wxCommandEvent &evt) this->statusbar()->set_status_text(message); } if (canceled) - this->statusbar()->set_status_text(L("Cancelled")); + this->statusbar()->set_status_text(_(L("Cancelled"))); this->sidebar->show_sliced_info_sizer(success); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index fb8147ad27..add192770d 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1678,7 +1678,7 @@ void TabPrinter::build_printhost(ConfigOptionsGroup *optgroup) } auto printhost_browse = [=](wxWindow* parent) { - add_scaled_button(parent, &m_printhost_browse_btn, "browse", _(L(" Browse ")) + dots, wxBU_LEFT | wxBU_EXACTFIT); + add_scaled_button(parent, &m_printhost_browse_btn, "browse", _(L("Browse")) + " "+ dots, wxBU_LEFT | wxBU_EXACTFIT); ScalableButton* btn = m_printhost_browse_btn; btn->SetFont(Slic3r::GUI::wxGetApp().normal_font()); @@ -2057,7 +2057,7 @@ void TabPrinter::build_sla() optgroup->append_single_option_line("area_fill"); optgroup = page->new_optgroup(_(L("Corrections"))); - line = Line{ m_config->def()->get("relative_correction")->full_label, "" }; + line = Line{ _(m_config->def()->get("relative_correction")->full_label), "" }; // std::vector axes{ "X", "Y", "Z" }; std::vector axes{ "XY", "Z" }; int id = 0; @@ -3313,7 +3313,7 @@ void TabSLAMaterial::build() // std::vector axes{ "X", "Y", "Z" }; std::vector axes{ "XY", "Z" }; for (auto& opt_key : corrections) { - auto line = Line{ m_config->def()->get(opt_key)->full_label, "" }; + auto line = Line{ _(m_config->def()->get(opt_key)->full_label), "" }; int id = 0; for (auto& axis : axes) { auto opt = optgroup->get_option(opt_key, id); diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 1d4dd8f887..124af56ce1 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -346,6 +346,28 @@ wxBitmap create_scaled_bitmap(wxWindow *win, const std::string& bmp_name_in, con // ObjectDataViewModelNode // ---------------------------------------------------------------------------- +ObjectDataViewModelNode::ObjectDataViewModelNode(ObjectDataViewModelNode* parent, const ItemType type) : + m_parent(parent), + m_type(type), + m_extruder(wxEmptyString) +{ + if (type == itSettings) { + m_name = "Settings to modified"; + } + else if (type == itInstanceRoot) { + m_name = _(L("Instances")); +#ifdef __WXGTK__ + m_container = true; +#endif //__WXGTK__ + } + else if (type == itInstance) { + m_idx = parent->GetChildCount(); + m_name = wxString::Format(_(L("Instance_%d")), m_idx + 1); + + set_action_icon(); + } +} + void ObjectDataViewModelNode::set_action_icon() { m_action_icon_name = m_type == itObject ? "advanced_plus" : @@ -384,7 +406,7 @@ bool ObjectDataViewModelNode::update_settings_digest(const std::vectorGetChildCount(); - m_name = wxString::Format("Instance_%d", m_idx+1); - - set_action_icon(); - } - } + ObjectDataViewModelNode(ObjectDataViewModelNode* parent, const ItemType type); ~ObjectDataViewModelNode() { From e515ef4fbe31e86c7bc225e9965289c2d21a5f72 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Sat, 4 May 2019 14:03:50 +0200 Subject: [PATCH 60/94] Fixed make_cylinder() / make_sphere() functions to produce meshes without errors. --- src/libslic3r/TriangleMesh.cpp | 157 +++++++++++++++------------------ 1 file changed, 71 insertions(+), 86 deletions(-) diff --git a/src/libslic3r/TriangleMesh.cpp b/src/libslic3r/TriangleMesh.cpp index f449ac2b41..128124c973 100644 --- a/src/libslic3r/TriangleMesh.cpp +++ b/src/libslic3r/TriangleMesh.cpp @@ -1847,116 +1847,101 @@ TriangleMesh make_cube(double x, double y, double z) { // Generate the mesh for a cylinder and return it, using // the generated angle to calculate the top mesh triangles. // Default is 360 sides, angle fa is in radians. -TriangleMesh make_cylinder(double r, double h, double fa) { - Pointf3s vertices; - std::vector facets; +TriangleMesh make_cylinder(double r, double h, double fa) +{ + size_t n_steps = (size_t)ceil(2. * PI / fa); + double angle_step = 2. * PI / n_steps; + + Pointf3s vertices; + std::vector facets; + vertices.reserve(2 * n_steps + 2); + facets.reserve(4 * n_steps); // 2 special vertices, top and bottom center, rest are relative to this vertices.emplace_back(Vec3d(0.0, 0.0, 0.0)); vertices.emplace_back(Vec3d(0.0, 0.0, h)); - // adjust via rounding to get an even multiple for any provided angle. - double angle = (2*PI / floor(2*PI / fa)); - // for each line along the polygon approximating the top/bottom of the // circle, generate four points and four facets (2 for the wall, 2 for the // top and bottom. // Special case: Last line shares 2 vertices with the first line. - unsigned id = vertices.size() - 1; - vertices.emplace_back(Vec3d(sin(0) * r , cos(0) * r, 0)); - vertices.emplace_back(Vec3d(sin(0) * r , cos(0) * r, h)); - for (double i = 0; i < 2*PI; i+=angle) { - Vec2d p = Eigen::Rotation2Dd(i) * Eigen::Vector2d(0, r); + Vec2d p = Eigen::Rotation2Dd(0.) * Eigen::Vector2d(0, r); + vertices.emplace_back(Vec3d(p(0), p(1), 0.)); + vertices.emplace_back(Vec3d(p(0), p(1), h)); + for (size_t i = 1; i < n_steps; ++i) { + p = Eigen::Rotation2Dd(angle_step * i) * Eigen::Vector2d(0, r); vertices.emplace_back(Vec3d(p(0), p(1), 0.)); vertices.emplace_back(Vec3d(p(0), p(1), h)); - id = vertices.size() - 1; + int id = (int)vertices.size() - 1; facets.emplace_back(Vec3crd( 0, id - 1, id - 3)); // top facets.emplace_back(Vec3crd(id, 1, id - 2)); // bottom - facets.emplace_back(Vec3crd(id, id - 2, id - 3)); // upper-right of side + facets.emplace_back(Vec3crd(id, id - 2, id - 3)); // upper-right of side facets.emplace_back(Vec3crd(id, id - 3, id - 1)); // bottom-left of side } // Connect the last set of vertices with the first. - facets.emplace_back(Vec3crd( 2, 0, id - 1)); - facets.emplace_back(Vec3crd( 1, 3, id)); - facets.emplace_back(Vec3crd(id, 3, 2)); - facets.emplace_back(Vec3crd(id, 2, id - 1)); + int id = (int)vertices.size() - 1; + facets.emplace_back(Vec3crd( 0, 2, id - 1)); + facets.emplace_back(Vec3crd( 3, 1, id)); + facets.emplace_back(Vec3crd(id, 2, 3)); + facets.emplace_back(Vec3crd(id, id - 1, 2)); - TriangleMesh mesh(vertices, facets); - return mesh; + return TriangleMesh(std::move(vertices), std::move(facets)); } // Generates mesh for a sphere centered about the origin, using the generated angle // to determine the granularity. // Default angle is 1 degree. -TriangleMesh make_sphere(double rho, double fa) { - Pointf3s vertices; - std::vector facets; +//FIXME better to discretize an Icosahedron recursively http://www.songho.ca/opengl/gl_sphere.html +TriangleMesh make_sphere(double radius, double fa) +{ + int sectorCount = ceil(2. * M_PI / fa); + int stackCount = ceil(M_PI / fa); + float sectorStep = 2. * M_PI / sectorCount; + float stackStep = M_PI / stackCount; - // Algorithm: - // Add points one-by-one to the sphere grid and form facets using relative coordinates. - // Sphere is composed effectively of a mesh of stacked circles. + Pointf3s vertices; + vertices.reserve((stackCount - 1) * sectorCount + 2); + for (int i = 0; i <= stackCount; ++ i) { + // from pi/2 to -pi/2 + double stackAngle = 0.5 * M_PI - stackStep * i; + double xy = radius * cos(stackAngle); + double z = radius * sin(stackAngle); + if (i == 0 || i == stackCount) + vertices.emplace_back(Vec3d(xy, 0., z)); + else + for (int j = 0; j < sectorCount; ++ j) { + // from 0 to 2pi + double sectorAngle = sectorStep * j; + vertices.emplace_back(Vec3d(xy * cos(sectorAngle), xy * sin(sectorAngle), z)); + } + } - // adjust via rounding to get an even multiple for any provided angle. - double angle = (2*PI / floor(2*PI / fa)); - - // Ring to be scaled to generate the steps of the sphere - std::vector ring; - for (double i = 0; i < 2*PI; i+=angle) { - ring.emplace_back(i); - } - const size_t steps = ring.size(); - const double increment = (double)(1.0 / (double)steps); - - // special case: first ring connects to 0,0,0 - // insert and form facets. - vertices.emplace_back(Vec3d(0.0, 0.0, -rho)); - size_t id = vertices.size(); - for (size_t i = 0; i < ring.size(); i++) { - // Fixed scaling - const double z = -rho + increment*rho*2.0; - // radius of the circle for this step. - const double r = sqrt(abs(rho*rho - z*z)); - Vec2d b = Eigen::Rotation2Dd(ring[i]) * Eigen::Vector2d(0, r); - vertices.emplace_back(Vec3d(b(0), b(1), z)); - facets.emplace_back((i == 0) ? Vec3crd(1, 0, ring.size()) : Vec3crd(id, 0, id - 1)); - ++ id; - } - - // General case: insert and form facets for each step, joining it to the ring below it. - for (size_t s = 2; s < steps - 1; s++) { - const double z = -rho + increment*(double)s*2.0*rho; - const double r = sqrt(abs(rho*rho - z*z)); - - for (size_t i = 0; i < ring.size(); i++) { - Vec2d b = Eigen::Rotation2Dd(ring[i]) * Eigen::Vector2d(0, r); - vertices.emplace_back(Vec3d(b(0), b(1), z)); - if (i == 0) { - // wrap around - facets.emplace_back(Vec3crd(id + ring.size() - 1 , id, id - 1)); - facets.emplace_back(Vec3crd(id, id - ring.size(), id - 1)); - } else { - facets.emplace_back(Vec3crd(id , id - ring.size(), (id - 1) - ring.size())); - facets.emplace_back(Vec3crd(id, id - 1 - ring.size() , id - 1)); - } - id++; - } - } - - - // special case: last ring connects to 0,0,rho*2.0 - // only form facets. - vertices.emplace_back(Vec3d(0.0, 0.0, rho)); - for (size_t i = 0; i < ring.size(); i++) { - if (i == 0) { - // third vertex is on the other side of the ring. - facets.emplace_back(Vec3crd(id, id - ring.size(), id - 1)); - } else { - facets.emplace_back(Vec3crd(id, id - ring.size() + i, id - ring.size() + (i - 1))); - } - } - id++; - TriangleMesh mesh(vertices, facets); - return mesh; + std::vector facets; + facets.reserve(2 * (stackCount - 1) * sectorCount); + for (int i = 0; i < stackCount; ++ i) { + // Beginning of current stack. + int k1 = (i == 0) ? 0 : (1 + (i - 1) * sectorCount); + int k1_first = k1; + // Beginning of next stack. + int k2 = (i == 0) ? 1 : (k1 + sectorCount); + int k2_first = k2; + for (int j = 0; j < sectorCount; ++ j) { + // 2 triangles per sector excluding first and last stacks + int k1_next = k1; + int k2_next = k2; + if (i != 0) { + k1_next = (j + 1 == sectorCount) ? k1_first : (k1 + 1); + facets.emplace_back(Vec3crd(k1, k2, k1_next)); + } + if (i + 1 != stackCount) { + k2_next = (j + 1 == sectorCount) ? k2_first : (k2 + 1); + facets.emplace_back(Vec3crd(k1_next, k2, k2_next)); + } + k1 = k1_next; + k2 = k2_next; + } + } + return TriangleMesh(std::move(vertices), std::move(facets)); } } From 045879f68a07758aef43e4ae475d664f1c12f418 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Sat, 4 May 2019 21:40:58 +0200 Subject: [PATCH 61/94] Fix of a crash when deleting an object while it is edited with the smooth variable layer editing tool. --- src/slic3r/GUI/GLCanvas3D.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 490c685ad5..005b9db9d7 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -261,7 +261,7 @@ void GLCanvas3D::LayersEditing::select_object(const Model &model, int object_id) // Maximum height of an object changes when the object gets rotated or scaled. // Changing maximum height of an object will invalidate the layer heigth editing profile. // m_model_object->raw_bounding_box() is cached, therefore it is cheap even if this method is called frequently. - float new_max_z = (m_model_object == nullptr) ? 0.f : m_model_object->raw_bounding_box().size().z(); + float new_max_z = (model_object_new == nullptr) ? 0.f : model_object_new->raw_bounding_box().size().z(); if (m_model_object != model_object_new || this->last_object_id != object_id || m_object_max_z != new_max_z || (model_object_new != nullptr && m_model_object->id() != model_object_new->id())) { m_layer_height_profile.clear(); From cf3b9922693caaf3337a241d3fcc45ac7fb984a7 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Mon, 6 May 2019 14:48:59 +0200 Subject: [PATCH 62/94] GCode.cpp: Update the 'current_extruder' placeholder even if filament start gcode is empty --- src/libslic3r/GCode.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index bf1d24e8a2..8e48a56d60 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -201,12 +201,13 @@ std::string WipeTowerIntegration::append_tcr(GCode &gcodegen, const WipeTower::T // Let the m_writer know the current extruder_id, but ignore the generated G-code. if (new_extruder_id >= 0 && gcodegen.writer().need_toolchange(new_extruder_id)) gcodegen.writer().toolchange(new_extruder_id); + gcodegen.placeholder_parser().set("current_extruder", new_extruder_id); + // Always append the filament start G-code even if the extruder did not switch, // because the wipe tower resets the linear advance and we want it to be re-enabled. const std::string &start_filament_gcode = gcodegen.config().start_filament_gcode.get_at(new_extruder_id); if (! start_filament_gcode.empty()) { // Process the start_filament_gcode for the active filament only. - gcodegen.placeholder_parser().set("current_extruder", new_extruder_id); DynamicConfig config; config.set_key_value("filament_extruder_id", new ConfigOptionInt(new_extruder_id)); gcode += gcodegen.placeholder_parser_process("start_filament_gcode", start_filament_gcode, new_extruder_id, &config); From 1634cd1a3cb1e1a2a8ee44002873ce8c462d14cf Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Mon, 6 May 2019 16:57:46 +0200 Subject: [PATCH 63/94] Fix asan crash on statistics step --- src/libslic3r/SLAPrint.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libslic3r/SLAPrint.hpp b/src/libslic3r/SLAPrint.hpp index f43c3bf7a3..64b2160b09 100644 --- a/src/libslic3r/SLAPrint.hpp +++ b/src/libslic3r/SLAPrint.hpp @@ -176,6 +176,8 @@ private: { return level(r1) < level(r2); }); + + if(it == cont.end()) return it; T diff = std::abs(level(*it) - lvl); From c9cd4818c7e8e15e48f1f88e6a29af9f1a2f5182 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Mon, 6 May 2019 18:28:23 +0200 Subject: [PATCH 64/94] Improvements of High DPI scaling on Windows. --- src/slic3r/GUI/GUI_App.cpp | 16 ++++++++++------ src/slic3r/GUI/GUI_App.hpp | 2 +- src/slic3r/GUI/GUI_Utils.cpp | 4 +++- src/slic3r/GUI/GUI_Utils.hpp | 27 +++++++++++++++------------ src/slic3r/GUI/MainFrame.cpp | 19 ++++++++++--------- src/slic3r/GUI/Plater.cpp | 2 ++ src/slic3r/GUI/ProgressStatusBar.cpp | 1 + src/slic3r/GUI/Tab.cpp | 1 + src/slic3r/GUI/wxExtensions.cpp | 6 +++++- 9 files changed, 48 insertions(+), 30 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 47141a6644..4eb6c5aa8c 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -340,15 +340,19 @@ void GUI_App::init_fonts() #endif /*__WXMAC__*/ } -void GUI_App::update_fonts() +void GUI_App::update_fonts(const MainFrame *main_frame) { /* Only normal and bold fonts are used for an application rescale, * because of under MSW small and normal fonts are the same. * To avoid same rescaling twice, just fill this values * from rescaled MainFrame */ - m_normal_font = mainframe->normal_font(); - m_bold_font = mainframe->normal_font().Bold(); + if (main_frame == nullptr) + main_frame = this->mainframe; + m_normal_font = main_frame->normal_font(); + m_small_font = m_normal_font; + m_bold_font = main_frame->normal_font().Bold(); + m_em_unit = main_frame->em_unit(); } void GUI_App::set_label_clr_modified(const wxColour& clr) { @@ -773,14 +777,14 @@ void GUI_App::add_config_menu(wxMenuBar *menu) // to notify the user whether he is aware that some preset changes will be lost. bool GUI_App::check_unsaved_changes() { - std::string dirty; + wxString dirty; PrinterTechnology printer_technology = preset_bundle->printers.get_edited_preset().printer_technology(); for (Tab *tab : tabs_list) if (tab->supports_printer_technology(printer_technology) && tab->current_preset_is_dirty()) if (dirty.empty()) - dirty = tab->name(); + dirty = _(tab->name()); else - dirty += std::string(", ") + tab->name(); + dirty += wxString(", ") + _(tab->name()); if (dirty.empty()) // No changes, the application may close or reload presets. return true; diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 3a6a443f06..5c2ead49c3 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -100,7 +100,7 @@ public: void init_label_colours(); void update_label_colours_from_appconfig(); void init_fonts(); - void update_fonts(); + void update_fonts(const MainFrame *main_frame = nullptr); void set_label_clr_modified(const wxColour& clr); void set_label_clr_sys(const wxColour& clr); diff --git a/src/slic3r/GUI/GUI_Utils.cpp b/src/slic3r/GUI/GUI_Utils.cpp index 6dc5c5b4c7..754e693511 100644 --- a/src/slic3r/GUI/GUI_Utils.cpp +++ b/src/slic3r/GUI/GUI_Utils.cpp @@ -64,6 +64,7 @@ template typename F::FN winapi_get_function(const wchar_t *dll, const c } #endif +// If called with nullptr, a DPI for the primary monitor is returned. int get_dpi_for_window(wxWindow *window) { #ifdef _WIN32 @@ -82,7 +83,8 @@ int get_dpi_for_window(wxWindow *window) static auto GetDpiForWindow_fn = winapi_get_function(L"User32.dll", "GetDpiForWindow"); static auto GetDpiForMonitor_fn = winapi_get_function(L"Shcore.dll", "GetDpiForMonitor"); - const HWND hwnd = window->GetHandle(); + // Desktop Window is the window of the primary monitor. + const HWND hwnd = (window == nullptr) ? ::GetDesktopWindow() : window->GetHandle(); if (GetDpiForWindow_fn != nullptr) { // We're on Windows 10, we have per-screen DPI settings diff --git a/src/slic3r/GUI/GUI_Utils.hpp b/src/slic3r/GUI/GUI_Utils.hpp index 25cf25b165..8cefb68d01 100644 --- a/src/slic3r/GUI/GUI_Utils.hpp +++ b/src/slic3r/GUI/GUI_Utils.hpp @@ -59,13 +59,16 @@ public: : P(parent, id, title, pos, size, style, name) { m_scale_factor = (float)get_dpi_for_window(this) / (float)DPI_DEFAULT; - m_normal_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); + m_prev_scale_factor = m_scale_factor; + float scale_primary_display = (float)get_dpi_for_window(nullptr) / (float)DPI_DEFAULT; + m_normal_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); + if (std::abs(m_scale_factor - scale_primary_display) > 1e-6) + m_normal_font = m_normal_font.Scale(m_scale_factor / scale_primary_display); + // An analog of em_unit value from GUI_App. m_em_unit = std::max(10, 10 * m_scale_factor); - m_prev_scale_factor = m_scale_factor; - - recalc_font(); +// recalc_font(); this->Bind(EVT_DPI_CHANGED, [this](const DpiChangedEvent &evt) { m_scale_factor = (float)evt.dpi / (float)DPI_DEFAULT; @@ -107,7 +110,7 @@ public: float prev_scale_factor() const { return m_prev_scale_factor; } int em_unit() const { return m_em_unit; } - int font_size() const { return m_font_size; } +// int font_size() const { return m_font_size; } const wxFont& normal_font() const { return m_normal_font; } protected: @@ -116,19 +119,19 @@ protected: private: float m_scale_factor; int m_em_unit; - int m_font_size; +// int m_font_size; wxFont m_normal_font; float m_prev_scale_factor; bool m_can_rescale{ true }; - void recalc_font() - { - wxClientDC dc(this); - const auto metrics = dc.GetFontMetrics(); - m_font_size = metrics.height; +// void recalc_font() +// { +// wxClientDC dc(this); +// const auto metrics = dc.GetFontMetrics(); +// m_font_size = metrics.height; // m_em_unit = metrics.averageWidth; - } +// } // check if new scale is differ from previous bool is_new_scale_factor() const { return fabs(m_scale_factor - m_prev_scale_factor) > 0.001; } diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index fd63889fc2..cf5cd416d3 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -36,6 +36,12 @@ MainFrame::MainFrame() : DPIFrame(NULL, wxID_ANY, SLIC3R_BUILD, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, "mainframe"), m_printhost_queue_dlg(new PrintHostQueueDialog(this)) { + // Fonts were created by the DPIFrame constructor for the monitor, on which the window opened. + wxGetApp().update_fonts(this); + this->SetFont(this->normal_font()); + // initialize default width_unit according to the width of the one symbol ("m") of the currently active font of this window. + wxGetApp().set_em_unit(std::max(10, GetTextExtent("m").x - 1)); + // Load the icon either from the exe, or from the ico file. #if _WIN32 { @@ -54,11 +60,6 @@ DPIFrame(NULL, wxID_ANY, SLIC3R_BUILD, wxDefaultPosition, wxDefaultSize, wxDEFAU SLIC3R_VERSION + _(L(" - Remember to check for updates at http://github.com/prusa3d/slic3r/releases"))); - - // initialize default width_unit according to the width of the one symbol ("x") of the current system font - const wxSize size = GetTextExtent("m"); - wxGetApp().set_em_unit(std::max(10, size.x - 1)); - /* Load default preset bitmaps before a tabpanel initialization, * but after filling of an em_unit value */ @@ -141,6 +142,7 @@ void MainFrame::init_tabpanel() // wxNB_NOPAGETHEME: Disable Windows Vista theme for the Notebook background. The theme performance is terrible on Windows 10 // with multiple high resolution displays connected. m_tabpanel = new wxNotebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxNB_TOP | wxTAB_TRAVERSAL | wxNB_NOPAGETHEME); + m_tabpanel->SetFont(Slic3r::GUI::wxGetApp().normal_font()); m_tabpanel->Bind(wxEVT_NOTEBOOK_PAGE_CHANGED, [this](wxEvent&) { auto panel = m_tabpanel->GetCurrentPage(); @@ -278,10 +280,9 @@ bool MainFrame::can_delete_all() const void MainFrame::on_dpi_changed(const wxRect &suggested_rect) { wxGetApp().update_fonts(); - - // _strange_ workaround for correct em_unit calculation - const int new_em_unit = scale_factor() * 10; - wxGetApp().set_em_unit(std::max(10, new_em_unit)); + this->SetFont(this->normal_font()); + // initialize default width_unit according to the width of the one symbol ("m") of the currently active font of this window. + wxGetApp().set_em_unit(std::max(10, GetTextExtent("m").x - 1)); /* Load default preset bitmaps before a tabpanel initialization, * but after filling of an em_unit value diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 2d44237bd7..8130990f00 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1377,6 +1377,8 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) , view_toolbar(GLToolbar::Radio) #endif // ENABLE_SVG_ICONS { + this->q->SetFont(Slic3r::GUI::wxGetApp().normal_font()); + arranging = false; rotoptimizing = false; background_process.set_fff_print(&fff_print); diff --git a/src/slic3r/GUI/ProgressStatusBar.cpp b/src/slic3r/GUI/ProgressStatusBar.cpp index 83c5e5b24c..2f1937623d 100644 --- a/src/slic3r/GUI/ProgressStatusBar.cpp +++ b/src/slic3r/GUI/ProgressStatusBar.cpp @@ -32,6 +32,7 @@ ProgressStatusBar::ProgressStatusBar(wxWindow *parent, int id): m_prog->Hide(); m_cancelbutton->Hide(); + self->SetFont(GUI::wxGetApp().normal_font()); self->SetFieldsCount(3); int w[] = {-1, 150, 155}; self->SetStatusWidths(3, w); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index add192770d..b97623648b 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -42,6 +42,7 @@ Tab::Tab(wxNotebook* parent, const wxString& title, const char* name) : m_parent(parent), m_title(title), m_name(name) { Create(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBK_LEFT | wxTAB_TRAVERSAL, name); + this->SetFont(Slic3r::GUI::wxGetApp().normal_font()); set_type(); m_compatible_printers.type = Preset::TYPE_PRINTER; diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 124af56ce1..bb6ab1e164 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -299,9 +299,13 @@ int em_unit(wxWindow* win) { if (win) { - Slic3r::GUI::DPIDialog* dlg = dynamic_cast(Slic3r::GUI::find_toplevel_parent(win)); + wxTopLevelWindow *toplevel = Slic3r::GUI::find_toplevel_parent(win); + Slic3r::GUI::DPIDialog* dlg = dynamic_cast(toplevel); if (dlg) return dlg->em_unit(); + Slic3r::GUI::DPIFrame* frame = dynamic_cast(toplevel); + if (frame) + return frame->em_unit(); } return Slic3r::GUI::wxGetApp().em_unit(); From 4fdcc99d35e7a20c9f76e870583dc4aec4152156 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Mon, 6 May 2019 18:30:59 +0200 Subject: [PATCH 65/94] Require Boost 1.64.0 and newer on Linux & OSX due to the Boost::process library --- CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3e59090e3f..9477f68d89 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -234,7 +234,11 @@ if(SLIC3R_STATIC) endif() #set(Boost_DEBUG ON) # set(Boost_COMPILER "-vc120") -find_package(Boost REQUIRED COMPONENTS system filesystem thread log locale regex) +if(NOT WIN32) + # boost::process was introduced first in version 1.64.0 + set(MINIMUM_BOOST_VERSION "1.64.0") +endif() +find_package(Boost ${MINIMUM_BOOST_VERSION} REQUIRED COMPONENTS system filesystem thread log locale regex) if(Boost_FOUND) include_directories(${Boost_INCLUDE_DIRS}) if (APPLE) From 806dc34421b607059b70b222f3ad3a445d8f79da Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Tue, 7 May 2019 09:56:53 +0200 Subject: [PATCH 66/94] removing some commented out garbage --- src/libslic3r/SLAPrint.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp index 4210b46d5a..da6369c02f 100644 --- a/src/libslic3r/SLAPrint.cpp +++ b/src/libslic3r/SLAPrint.cpp @@ -1053,8 +1053,6 @@ void SLAPrint::process() const double width = m_printer_config.display_width.getFloat() / SCALING_FACTOR; const double height = m_printer_config.display_height.getFloat() / SCALING_FACTOR; const double display_area = width*height; - - const coord_t clpr_back_offs = - coord_t(m_printer_config.absolute_correction.getFloat() / SCALING_FACTOR); // get polygons for all instances in the object auto get_all_polygons = @@ -1138,7 +1136,7 @@ void SLAPrint::process() auto printlayerfn = [this, // functions and read only vars get_all_polygons, polyunion, polydiff, areafn, - area_fill, display_area, exp_time, init_exp_time, fast_tilt, slow_tilt, delta_fade_time, clpr_back_offs, + area_fill, display_area, exp_time, init_exp_time, fast_tilt, slow_tilt, delta_fade_time, // write vars &mutex, &models_volume, &supports_volume, &estim_time, &slow_layers, @@ -1174,8 +1172,6 @@ void SLAPrint::process() for(const SliceRecord& record : layer.slices()) { const SLAPrintObject *po = record.print_obj(); - // const ExPolygons &rawmodelslices = record.get_slice(soModel); - // const ExPolygons &modelslices = clpr_back_offs != 0 ? offset_ex(rawmodelslices, clpr_back_offs) : rawmodelslices; const ExPolygons &modelslices = record.get_slice(soModel); bool is_lefth = record.print_obj()->is_left_handed(); @@ -1184,8 +1180,6 @@ void SLAPrint::process() for(ClipperPolygon& p_tmp : v) model_polygons.emplace_back(std::move(p_tmp)); } - // const ExPolygons &rawsupportslices = record.get_slice(soSupport); - // const ExPolygons &supportslices = clpr_back_offs != 0 ? offset_ex(rawsupportslices, clpr_back_offs) : rawsupportslices; const ExPolygons &supportslices = record.get_slice(soSupport); if (!supportslices.empty()) { From c03a202e20641cc373f44ba8dc1996b62d8c3775 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Tue, 7 May 2019 13:06:15 +0200 Subject: [PATCH 67/94] Prevent degenerate triangles in pad. --- sandboxes/slabasebed/slabasebed.cpp | 48 +++++++++++++++++------------ src/libslic3r/SLA/SLABasePool.cpp | 21 +++++++++---- 2 files changed, 44 insertions(+), 25 deletions(-) diff --git a/sandboxes/slabasebed/slabasebed.cpp b/sandboxes/slabasebed/slabasebed.cpp index 3237416097..0c34eb9f52 100644 --- a/sandboxes/slabasebed/slabasebed.cpp +++ b/sandboxes/slabasebed/slabasebed.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include #include @@ -14,7 +15,9 @@ const std::string USAGE_STR = { namespace Slic3r { namespace sla { -Contour3D convert(const Polygons& triangles, coord_t z, bool dir); +Contour3D create_base_pool(const ExPolygons &ground_layer, + const PoolConfig& cfg = PoolConfig()); + Contour3D walls(const Polygon& floor_plate, const Polygon& ceiling, double floor_z_mm, double ceiling_z_mm, double offset_difference_mm, ThrowOnCancel thr); @@ -47,31 +50,38 @@ int main(const int argc, const char *argv[]) { if(ground_slice.empty()) return EXIT_FAILURE; - ExPolygon bottom_plate = ground_slice.front(); - ExPolygon top_plate = bottom_plate; - sla::offset(top_plate, coord_t(3.0/SCALING_FACTOR)); - sla::offset(bottom_plate, coord_t(1.0/SCALING_FACTOR)); +// ExPolygon bottom_plate = ground_slice.front(); +// ExPolygon top_plate = bottom_plate; +// sla::offset(top_plate, coord_t(3.0/SCALING_FACTOR)); +// sla::offset(bottom_plate, coord_t(1.0/SCALING_FACTOR)); bench.start(); - Polygons top_plate_triangles, bottom_plate_triangles; - top_plate.triangulate_p2t(&top_plate_triangles); - bottom_plate.triangulate_p2t(&bottom_plate_triangles); - - auto top_plate_mesh = sla::convert(top_plate_triangles, coord_t(3.0/SCALING_FACTOR), false); - auto bottom_plate_mesh = sla::convert(bottom_plate_triangles, 0, true); - - mesh.merge(bottom_plate_mesh); - mesh.merge(top_plate_mesh); - - sla::Contour3D w = sla::walls(bottom_plate.contour, top_plate.contour, 0, 3, 2.0, [](){}); - - mesh.merge(w); -// sla::create_base_pool(ground_slice, basepool); +// TriangleMesh pool; + sla::PoolConfig cfg; + cfg.min_wall_height_mm = 0; + cfg.edge_radius_mm = 0.2; + mesh = sla::create_base_pool(ground_slice, cfg); + +// mesh.merge(triangulate_expolygon_3d(top_plate, 3.0, false)); +// mesh.merge(triangulate_expolygon_3d(bottom_plate, 0.0, true)); +// mesh = sla::walls(bottom_plate.contour, top_plate.contour, 0, 3, 2.0, [](){}); + bench.stop(); cout << "Base pool creation time: " << std::setprecision(10) << bench.getElapsedSec() << " seconds." << endl; + +// auto point = []() + for(auto& trind : mesh.indices) { + Vec3d p0 = mesh.points[size_t(trind[0])]; + Vec3d p1 = mesh.points[size_t(trind[1])]; + Vec3d p2 = mesh.points[size_t(trind[2])]; + Vec3d p01 = p1 - p0; + Vec3d p02 = p2 - p0; + auto a = p01.cross(p02).norm() / 2.0; + if(std::abs(a) < 1e-6) std::cout << "degenerate triangle" << std::endl; + } // basepool.write_ascii("out.stl"); diff --git a/src/libslic3r/SLA/SLABasePool.cpp b/src/libslic3r/SLA/SLABasePool.cpp index 94b6c7d9b7..171d2b8d03 100644 --- a/src/libslic3r/SLA/SLABasePool.cpp +++ b/src/libslic3r/SLA/SLABasePool.cpp @@ -582,8 +582,8 @@ void base_plate(const TriangleMesh &mesh, ExPolygons &output, float h, } } -void create_base_pool(const ExPolygons &ground_layer, TriangleMesh& out, - const PoolConfig& cfg) +Contour3D create_base_pool(const ExPolygons &ground_layer, + const PoolConfig& cfg = PoolConfig()) { // for debugging: // Benchmark bench; @@ -618,7 +618,7 @@ void create_base_pool(const ExPolygons &ground_layer, TriangleMesh& out, Contour3D pool; for(ExPolygon& concaveh : concavehs) { - if(concaveh.contour.points.empty()) return; + if(concaveh.contour.points.empty()) return pool; // Get rid of any holes in the concave hull output. concaveh.holes.clear(); @@ -683,7 +683,7 @@ void create_base_pool(const ExPolygons &ground_layer, TriangleMesh& out, // Generate the smoothed edge geometry - pool.merge(round_edges(ob, + if(s_eradius > 0) pool.merge(round_edges(ob, r, phi, 0, // z position of the input plane @@ -698,7 +698,8 @@ void create_base_pool(const ExPolygons &ground_layer, TriangleMesh& out, if(wingheight > 0) { // Generate the smoothed edge geometry - pool.merge(round_edges(middle_base, + wh = 0; + if(s_eradius) pool.merge(round_edges(middle_base, r, phi - 90, // from tangent lines 0, // z position of the input plane @@ -722,6 +723,14 @@ void create_base_pool(const ExPolygons &ground_layer, TriangleMesh& out, pool.merge(triangulate_expolygon_3d(inner_base, -wingheight)); } + + return pool; +} + +void create_base_pool(const ExPolygons &ground_layer, TriangleMesh& out, + const PoolConfig& cfg) +{ + // For debugging: // bench.stop(); @@ -729,7 +738,7 @@ void create_base_pool(const ExPolygons &ground_layer, TriangleMesh& out, // std::fstream fout("pad_debug.obj", std::fstream::out); // if(fout.good()) pool.to_obj(fout); - out.merge(mesh(pool)); + out.merge(mesh(create_base_pool(ground_layer, cfg))); } } From ab4f34945679af8f04767f5f4fab1b15c2cd28dd Mon Sep 17 00:00:00 2001 From: bubnikv Date: Tue, 7 May 2019 13:35:37 +0200 Subject: [PATCH 68/94] Finished scaling of menu icons on Windows. --- src/slic3r/GUI/MainFrame.cpp | 28 ---------- src/slic3r/GUI/wxExtensions.cpp | 92 ++++++++++++--------------------- src/slic3r/GUI/wxExtensions.hpp | 17 +++--- 3 files changed, 40 insertions(+), 97 deletions(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 5511a73124..d86ebb886b 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -340,7 +340,6 @@ void MainFrame::init_menubar() // File menu wxMenu* fileMenu = new wxMenu; - set_as_owner_drawn(fileMenu); { wxMenuItem* item_open = append_menu_item(fileMenu, wxID_ANY, _(L("&Open Project")) + dots + "\tCtrl+O", _(L("Open a project file")), [this](wxCommandEvent&) { if (m_plater) m_plater->load_project(); }, menu_icon("open")); @@ -352,7 +351,6 @@ void MainFrame::init_menubar() fileMenu->AppendSeparator(); wxMenu* import_menu = new wxMenu(); - set_as_owner_drawn(import_menu); wxMenuItem* item_import_model = append_menu_item(import_menu, wxID_ANY, _(L("Import STL/OBJ/AM&F/3MF")) + dots + "\tCtrl+I", _(L("Load a model")), [this](wxCommandEvent&) { if (m_plater) m_plater->add_model(); }, menu_icon("import_plater")); import_menu->AppendSeparator(); @@ -366,7 +364,6 @@ void MainFrame::init_menubar() append_submenu(fileMenu, import_menu, wxID_ANY, _(L("&Import")), ""); wxMenu* export_menu = new wxMenu(); - set_as_owner_drawn(export_menu); wxMenuItem* item_export_gcode = append_menu_item(export_menu, wxID_ANY, _(L("Export &G-code")) + dots +"\tCtrl+G", _(L("Export current plate as G-code")), [this](wxCommandEvent&) { if (m_plater) m_plater->export_gcode(); }, menu_icon("export_gcode")); m_changeable_menu_items.push_back(item_export_gcode); @@ -418,29 +415,6 @@ void MainFrame::init_menubar() [this](wxCommandEvent&) { Close(false); }); Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(m_plater != nullptr); }, item_open->GetId()); -// Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) -// { -// wxMenuItem* item = dynamic_cast(evt.GetEventObject())->FindItem(evt.GetId()); -// -// // static const wxBitmap enabled_bmp = item->GetBitmap(); -// // static const wxBitmap disabled_bmp = enabled_bmp.IsOk() ? enabled_bmp.ConvertToImage().ConvertToGreyscale(0.5, 0.5, 0.5) : enabled_bmp; -// -// // bool enable = (m_plater != nullptr) && can_save(); -// // evt.Enable(enable); -// // item->SetBitmap(enable ? enabled_bmp : disabled_bmp); -// -// bool enable = (m_plater != nullptr) && can_save(); -// evt.Enable(enable); -// -// const std::string& icon_name = get_menuitem_icon_name(item->GetId()); -// if (!icon_name.empty()) -// { -// const wxBitmap enabled_bmp = create_scaled_bitmap(nullptr, icon_name); -// const wxBitmap disabled_bmp = enabled_bmp.IsOk() ? enabled_bmp.ConvertToImage().ConvertToGreyscale(0.5, 0.5, 0.5) : enabled_bmp; -// -// item->SetBitmap(enable ? enabled_bmp : disabled_bmp); -// } -// }, item_save->GetId()); Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable((m_plater != nullptr) && can_save()); }, item_save->GetId()); Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable((m_plater != nullptr) && can_save()); }, item_save_as->GetId()); Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(m_plater != nullptr); }, item_import_model->GetId()); @@ -466,7 +440,6 @@ void MainFrame::init_menubar() if (m_plater != nullptr) { editMenu = new wxMenu(); - set_as_owner_drawn(editMenu); #ifdef __APPLE__ // Backspace sign wxString hotkey_delete = "\u232b"; @@ -497,7 +470,6 @@ void MainFrame::init_menubar() // Window menu auto windowMenu = new wxMenu(); - set_as_owner_drawn(windowMenu); { size_t tab_offset = 0; if (m_plater) { diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 85f307999f..a58881946d 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -25,62 +25,28 @@ using Slic3r::GUI::from_u8; wxDEFINE_EVENT(wxCUSTOMEVT_TICKSCHANGED, wxEvent); wxDEFINE_EVENT(wxCUSTOMEVT_LAST_VOLUME_IS_DELETED, wxCommandEvent); -void set_as_owner_drawn(wxMenu* menu) -{ #ifdef __WXMSW__ - // this function is implemented only for MSW (in Prusa/wxWidgets fork) - menu->SetOwnerDrawn(true); -#endif -} - -std::map menuitem_bitmaps; -static std::string empty_str = ""; - -const std::string& get_menuitem_icon_name(const int item_id) -{ - const auto item = menuitem_bitmaps.find(item_id); - if (item == menuitem_bitmaps.end()) - return empty_str; - - return menuitem_bitmaps.at(item_id); -} - -void update_menu_item_icons(wxMenuItem* item) -{ - const std::string& icon_name = get_menuitem_icon_name(item->GetId()); - if (!icon_name.empty()) - { - const wxBitmap& item_icon = create_scaled_bitmap(nullptr, icon_name); - if (item_icon.IsOk()) - { - item->SetBitmap(item_icon); - - wxImage imgGrey = item_icon.ConvertToImage().ConvertToGreyscale(); - if (imgGrey.IsOk()) - item->SetDisabledBitmap(wxBitmap(imgGrey)); - } - } -} - +static std::map msw_menuitem_bitmaps; void msw_rescale_menu(wxMenu* menu) { - wxMenuItemList& items = menu->GetMenuItems(); - for (auto item : items) - { - update_menu_item_icons(item); - item->SetFont(Slic3r::GUI::wxGetApp().normal_font()); + struct update_icons { + static void run(wxMenuItem* item) { + const auto it = msw_menuitem_bitmaps.find(item->GetId()); + if (it != msw_menuitem_bitmaps.end()) { + const wxBitmap& item_icon = create_scaled_bitmap(nullptr, it->second); + if (item_icon.IsOk()) + item->SetBitmap(item_icon); + } + if (item->IsSubMenu()) + for (wxMenuItem *sub_item : item->GetSubMenu()->GetMenuItems()) + update_icons::run(sub_item); + } + }; - if (item->IsSubMenu()) - { - wxMenuItemList& sub_items = item->GetSubMenu()->GetMenuItems(); - for (auto sub_item : sub_items) - { - update_menu_item_icons(sub_item); - sub_item->SetFont(Slic3r::GUI::wxGetApp().normal_font()); - } - } - } + for (wxMenuItem *item : menu->GetMenuItems()) + update_icons::run(item); } +#endif /* __WXMSW__ */ wxMenuItem* append_menu_item(wxMenu* menu, int id, const wxString& string, const wxString& description, std::function cb, const wxBitmap& icon, wxEvtHandler* event_handler) @@ -88,16 +54,16 @@ wxMenuItem* append_menu_item(wxMenu* menu, int id, const wxString& string, const if (id == wxID_ANY) id = wxNewId(); - wxMenuItem* item = menu->Append(id, string, description); -// item->SetBitmap(icon); - - if (icon.IsOk()) - { + auto *item = new wxMenuItem(menu, id, string, description); + if (icon.IsOk()) { item->SetBitmap(icon); +#ifndef __WXMSW__ wxImage imgGrey = icon.ConvertToImage().ConvertToGreyscale(); if (imgGrey.IsOk()) item->SetDisabledBitmap(wxBitmap(imgGrey)); +#endif /* __WXMSW__ */ } + menu->Append(item); #ifdef __WXMSW__ if (event_handler != nullptr && event_handler != menu) @@ -116,8 +82,10 @@ wxMenuItem* append_menu_item(wxMenu* menu, int id, const wxString& string, const id = wxNewId(); const wxBitmap& bmp = !icon.empty() ? create_scaled_bitmap(nullptr, icon) : wxNullBitmap; // FIXME: pass window ptr +#ifdef __WXMSW__ if (bmp.IsOk()) - menuitem_bitmaps[id] = icon; + msw_menuitem_bitmaps[id] = icon; +#endif /* __WXMSW__ */ return append_menu_item(menu, id, string, description, cb, bmp, event_handler); } @@ -128,8 +96,16 @@ wxMenuItem* append_submenu(wxMenu* menu, wxMenu* sub_menu, int id, const wxStrin id = wxNewId(); wxMenuItem* item = new wxMenuItem(menu, id, string, description); - if (!icon.empty()) + if (!icon.empty()) { item->SetBitmap(create_scaled_bitmap(nullptr, icon)); // FIXME: pass window ptr +#ifdef __WXMSW__ + msw_menuitem_bitmaps[id] = icon; +#else /* __WXMSW__ */ + wxImage imgGrey = icon.ConvertToImage().ConvertToGreyscale(); + if (imgGrey.IsOk()) + item->SetDisabledBitmap(wxBitmap(imgGrey)); +#endif /* __WXMSW__ */ + } item->SetSubMenu(sub_menu); menu->Append(item); diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp index 574baaebcb..001eeb0d1f 100644 --- a/src/slic3r/GUI/wxExtensions.hpp +++ b/src/slic3r/GUI/wxExtensions.hpp @@ -20,10 +20,11 @@ namespace Slic3r { enum class ModelVolumeType : int; }; -void set_as_owner_drawn(wxMenu* menu); -const std::string& get_menuitem_icon_name(const int item_id); -void update_menu_item_icons(wxMenuItem* item); +#ifdef __WXMSW__ void msw_rescale_menu(wxMenu* menu); +#else /* __WXMSW__ */ +inline void msw_rescale_menu(wxMenu* /* menu */) {} +#endif /* __WXMSW__ */ wxMenuItem* append_menu_item(wxMenu* menu, int id, const wxString& string, const wxString& description, std::function cb, const wxBitmap& icon, wxEvtHandler* event_handler = nullptr); @@ -955,16 +956,10 @@ class MenuWithSeparators : public wxMenu { public: MenuWithSeparators(const wxString& title, long style = 0) - : wxMenu(title, style) - { - set_as_owner_drawn(this); - } + : wxMenu(title, style) {} MenuWithSeparators(long style = 0) - : wxMenu(style) - { - set_as_owner_drawn(this); - } + : wxMenu(style) {} ~MenuWithSeparators() {} From 4418a9b926589b6b96acafe3546098c9cd6854b1 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Tue, 7 May 2019 14:03:19 +0200 Subject: [PATCH 69/94] wxMenuItem::SetDisabledBitmap is only available on Windows --- src/slic3r/GUI/wxExtensions.cpp | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index a58881946d..7485d63751 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -57,11 +57,6 @@ wxMenuItem* append_menu_item(wxMenu* menu, int id, const wxString& string, const auto *item = new wxMenuItem(menu, id, string, description); if (icon.IsOk()) { item->SetBitmap(icon); -#ifndef __WXMSW__ - wxImage imgGrey = icon.ConvertToImage().ConvertToGreyscale(); - if (imgGrey.IsOk()) - item->SetDisabledBitmap(wxBitmap(imgGrey)); -#endif /* __WXMSW__ */ } menu->Append(item); @@ -100,10 +95,6 @@ wxMenuItem* append_submenu(wxMenu* menu, wxMenu* sub_menu, int id, const wxStrin item->SetBitmap(create_scaled_bitmap(nullptr, icon)); // FIXME: pass window ptr #ifdef __WXMSW__ msw_menuitem_bitmaps[id] = icon; -#else /* __WXMSW__ */ - wxImage imgGrey = icon.ConvertToImage().ConvertToGreyscale(); - if (imgGrey.IsOk()) - item->SetDisabledBitmap(wxBitmap(imgGrey)); #endif /* __WXMSW__ */ } From 61a0ab42808a0e64ffdaf58ede5b33b103854f75 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Tue, 7 May 2019 15:09:15 +0200 Subject: [PATCH 70/94] Workaround to fix crash reported in #2209 --- src/admesh/normals.cpp | 3 +++ src/libslic3r/ModelArrange.cpp | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/admesh/normals.cpp b/src/admesh/normals.cpp index a8faa44bd2..0ad134360f 100644 --- a/src/admesh/normals.cpp +++ b/src/admesh/normals.cpp @@ -108,6 +108,9 @@ stl_fix_normal_directions(stl_file *stl) { if (stl->error) return; + // this may happen for malformed models, see: https://github.com/prusa3d/Slic3r/issues/2209 + if (stl->stats.number_of_facets == 0) return; + /* Initialize linked list. */ head = (struct stl_normal*)malloc(sizeof(struct stl_normal)); if(head == NULL) perror("stl_fix_normal_directions"); diff --git a/src/libslic3r/ModelArrange.cpp b/src/libslic3r/ModelArrange.cpp index 50901da3ac..c821eef77a 100644 --- a/src/libslic3r/ModelArrange.cpp +++ b/src/libslic3r/ModelArrange.cpp @@ -567,8 +567,13 @@ ShapeData2D projectModelFromTop(const Slic3r::Model &model) { Transform3d trafo_instance = Geometry::assemble_transform(Vec3d::Zero(), rotation, finst->get_scaling_factor(), finst->get_mirror()); Polygon p = objptr->convex_hull_2d(trafo_instance); assert(! p.points.empty()); - p.reverse(); - assert(! p.is_counter_clockwise()); + + // this may happen for malformed models, see: https://github.com/prusa3d/Slic3r/issues/2209 + if (p.points.empty()) + continue; + + p.reverse(); + assert(!p.is_counter_clockwise()); p.append(p.first_point()); clpath = Slic3rMultiPoint_to_ClipperPath(p); } From 2ce0c575f609abbe3c25a1ab6eb0a0dfa8c32090 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Tue, 7 May 2019 15:37:41 +0200 Subject: [PATCH 71/94] Fixed objects rendering when turning off sla supports gizmo --- src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp index 017c00143c..1400bef5ef 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp @@ -79,6 +79,8 @@ void GLGizmoSlaSupports::set_sla_support_data(ModelObject* model_object, const S m_parent.toggle_model_objects_visibility(false); m_parent.toggle_model_objects_visibility(true, m_model_object, m_active_instance); } + else + m_parent.toggle_model_objects_visibility(true, nullptr, -1); } } From 6881911411f40abee6770c21074f70579ab5992b Mon Sep 17 00:00:00 2001 From: bubnikv Date: Tue, 7 May 2019 15:43:53 +0200 Subject: [PATCH 72/94] World / local coordinates: Fixed wrong scaling of a group selection, changed the "anisotropic scaling" - "embed vertices" message, fixed scaling in the world coordinate system, so it does not count the modifiers into the bounding box size. --- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 15 ++++++----- src/slic3r/GUI/OptionsGroup.hpp | 3 --- src/slic3r/GUI/Selection.cpp | 32 +++++++++++++++++++---- src/slic3r/GUI/Selection.hpp | 6 ++++- 4 files changed, 40 insertions(+), 16 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index 96a69e4648..ecce5770e3 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -37,8 +37,8 @@ static wxBitmapComboBox* create_word_local_combo(wxWindow *parent) temp->SetFont(Slic3r::GUI::wxGetApp().normal_font()); temp->SetBackgroundStyle(wxBG_STYLE_PAINT); - temp->Append(_(L("World"))); - temp->Append(_(L("Local"))); + temp->Append(_(L("World coordinates"))); + temp->Append(_(L("Local coordinates"))); temp->SetSelection(0); temp->SetValue(temp->GetString(0)); @@ -228,7 +228,7 @@ void ObjectManipulation::Show(const bool show) bool ObjectManipulation::IsShown() { - return m_og->get_grid_sizer()->IsShown(2); + return dynamic_cast(m_og->sizer)->GetStaticBox()->IsShown(); // m_og->get_grid_sizer()->IsShown(2); } void ObjectManipulation::UpdateAndShow(const bool show) @@ -265,7 +265,7 @@ void ObjectManipulation::update_settings_value(const Selection& selection) if (m_world_coordinates) { m_new_rotate_label_string = L("Rotate"); m_new_rotation = Vec3d::Zero(); - m_new_size = selection.get_bounding_box().size(); + m_new_size = selection.get_scaled_instance_bounding_box().size(); m_new_scale = m_new_size.cwiseProduct(selection.get_unscaled_instance_bounding_box().size().cwiseInverse()) * 100.; } else { m_new_rotation = volume->get_instance_rotation() * (180. / M_PI); @@ -399,7 +399,7 @@ void ObjectManipulation::reset_settings_value() { m_new_position = Vec3d::Zero(); m_new_rotation = Vec3d::Zero(); - m_new_scale = Vec3d::Ones(); + m_new_scale = Vec3d::Ones() * 100.; m_new_size = Vec3d::Zero(); m_new_enabled = false; // no need to set the dirty flag here as this method is called from update_settings_value(), @@ -590,10 +590,11 @@ void ObjectManipulation::set_uniform_scaling(const bool new_value) wxMessageDialog dlg(GUI::wxGetApp().mainframe, _(L("The currently manipulated object is tilted (rotation angles are not multiples of 90°).\n" "Non-uniform scaling of tilted objects is only possible in the World coordinate system,\n" - "once the rotation is embedded into the object coordinates.\n" + "once the rotation is embedded into the object coordinates.")) + "\n" + + _(L("This operation is irreversible.\n" "Do you want to proceed?")), SLIC3R_APP_NAME, - wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION); + wxYES_NO | wxCANCEL | wxCANCEL_DEFAULT | wxICON_QUESTION); if (dlg.ShowModal() != wxID_YES) { // Enforce uniform scaling. m_lock_bnt->SetLock(true); diff --git a/src/slic3r/GUI/OptionsGroup.hpp b/src/slic3r/GUI/OptionsGroup.hpp index fa8a199408..73b2c5110f 100644 --- a/src/slic3r/GUI/OptionsGroup.hpp +++ b/src/slic3r/GUI/OptionsGroup.hpp @@ -1,17 +1,14 @@ #ifndef slic3r_OptionsGroup_hpp_ #define slic3r_OptionsGroup_hpp_ -//#include #include #include -//#include #include #include #include "libslic3r/Config.hpp" #include "libslic3r/PrintConfig.hpp" -// #include "libslic3r/libslic3r.h" #include "Field.hpp" #include "GUI_App.hpp" diff --git a/src/slic3r/GUI/Selection.cpp b/src/slic3r/GUI/Selection.cpp index 28cab3eba2..eaa00bf6fc 100644 --- a/src/slic3r/GUI/Selection.cpp +++ b/src/slic3r/GUI/Selection.cpp @@ -430,10 +430,16 @@ const BoundingBoxf3& Selection::get_unscaled_instance_bounding_box() const { if (m_unscaled_instance_bounding_box_dirty) calc_unscaled_instance_bounding_box(); - return m_unscaled_instance_bounding_box; } +const BoundingBoxf3& Selection::get_scaled_instance_bounding_box() const +{ + if (m_scaled_instance_bounding_box_dirty) + calc_scaled_instance_bounding_box(); + return m_scaled_instance_bounding_box; +} + void Selection::start_dragging() { if (!m_valid) @@ -1416,11 +1422,11 @@ void Selection::calc_bounding_box() const void Selection::calc_unscaled_instance_bounding_box() const { m_unscaled_instance_bounding_box = BoundingBoxf3(); - if (m_valid) - { - for (unsigned int i : m_list) - { + if (m_valid) { + for (unsigned int i : m_list) { const GLVolume &volume = *(*m_volumes)[i]; + if (volume.is_modifier) + continue; Transform3d trafo = volume.get_instance_transformation().get_matrix(false, false, true, false) * volume.get_volume_transformation().get_matrix(); trafo.translation()(2) += volume.get_sla_shift_z(); m_unscaled_instance_bounding_box.merge(volume.transformed_convex_hull_bounding_box(trafo)); @@ -1429,6 +1435,22 @@ void Selection::calc_unscaled_instance_bounding_box() const m_unscaled_instance_bounding_box_dirty = false; } +void Selection::calc_scaled_instance_bounding_box() const +{ + m_scaled_instance_bounding_box = BoundingBoxf3(); + if (m_valid) { + for (unsigned int i : m_list) { + const GLVolume &volume = *(*m_volumes)[i]; + if (volume.is_modifier) + continue; + Transform3d trafo = volume.get_instance_transformation().get_matrix(false, false, false, false) * volume.get_volume_transformation().get_matrix(); + trafo.translation()(2) += volume.get_sla_shift_z(); + m_scaled_instance_bounding_box.merge(volume.transformed_convex_hull_bounding_box(trafo)); + } + } + m_scaled_instance_bounding_box_dirty = false; +} + void Selection::render_selected_volumes() const { float color[3] = { 1.0f, 1.0f, 1.0f }; diff --git a/src/slic3r/GUI/Selection.hpp b/src/slic3r/GUI/Selection.hpp index d808bee073..4e5da36858 100644 --- a/src/slic3r/GUI/Selection.hpp +++ b/src/slic3r/GUI/Selection.hpp @@ -187,6 +187,8 @@ private: // is useful for absolute scaling of tilted objects in world coordinate space. mutable BoundingBoxf3 m_unscaled_instance_bounding_box; mutable bool m_unscaled_instance_bounding_box_dirty; + mutable BoundingBoxf3 m_scaled_instance_bounding_box; + mutable bool m_scaled_instance_bounding_box_dirty; #if ENABLE_RENDER_SELECTION_CENTER GLUquadricObj* m_quadric; @@ -272,6 +274,7 @@ public: // Bounding box of a selection, with no instance scaling applied. This bounding box // is useful for absolute scaling of tilted objects in world coordinate space. const BoundingBoxf3& get_unscaled_instance_bounding_box() const; + const BoundingBoxf3& get_scaled_instance_bounding_box() const; void start_dragging(); @@ -311,7 +314,8 @@ private: void do_remove_object(unsigned int object_idx); void calc_bounding_box() const; void calc_unscaled_instance_bounding_box() const; - void set_bounding_boxes_dirty() { m_bounding_box_dirty = true; m_unscaled_instance_bounding_box_dirty = true; } + void calc_scaled_instance_bounding_box() const; + void set_bounding_boxes_dirty() { m_bounding_box_dirty = true; m_unscaled_instance_bounding_box_dirty = true; m_scaled_instance_bounding_box_dirty = true; } void render_selected_volumes() const; void render_synchronized_volumes() const; void render_bounding_box(const BoundingBoxf3& box, float* color) const; From 0b9945b632c116430892e8d372ec389d1a60a70c Mon Sep 17 00:00:00 2001 From: bubnikv Date: Tue, 7 May 2019 16:16:35 +0200 Subject: [PATCH 73/94] Switch the side panel to World Coordinates in the Simple Mode. --- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index ecce5770e3..5c534a3e15 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -212,16 +212,21 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : void ObjectManipulation::Show(const bool show) { if (show != IsShown()) { + // Show all lines of the panel. Some of these lines will be hidden in the lines below. m_og->Show(show); - if (show && wxGetApp().get_mode() != comSimple) { - m_og->get_grid_sizer()->Show(size_t(0), false); - m_og->get_grid_sizer()->Show(size_t(1), false); - } - } + if (show && wxGetApp().get_mode() != comSimple) { + // Show the label and the name of the STL in simple mode only. + // Label "Name: " + m_og->get_grid_sizer()->Show(size_t(0), false); + // The actual name of the STL. + m_og->get_grid_sizer()->Show(size_t(1), false); + } + } if (show) { - bool show_world_local_combo = wxGetApp().plater()->canvas3D()->get_selection().is_single_full_instance(); + // Show the "World Coordinates" / "Local Coordintes" Combo in Advanced / Expert mode only. + bool show_world_local_combo = wxGetApp().plater()->canvas3D()->get_selection().is_single_full_instance() && wxGetApp().get_mode() != comSimple; m_word_local_combo->Show(show_world_local_combo); } } @@ -247,6 +252,9 @@ void ObjectManipulation::update_settings_value(const Selection& selection) m_new_rotate_label_string = L("Rotation"); m_new_scale_label_string = L("Scale factors"); + if (wxGetApp().get_mode() == comSimple) + m_world_coordinates = true; + ObjectList* obj_list = wxGetApp().obj_list(); if (selection.is_single_full_instance()) { From 9ef5fd75ba1e6f2c54ee3ec24a4a7baea5b8e6e3 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Wed, 8 May 2019 10:37:45 +0200 Subject: [PATCH 74/94] Fixed a crash on deleting an object from the platter due to the object_list_changed() function calling GLVolumeCollection::check_outside_state() on GLVolumes, which were already deleted. --- src/slic3r/GUI/Plater.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 4aa1ce80f5..c5643f4226 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2035,16 +2035,16 @@ void Plater::priv::remove(size_t obj_idx) // Delete object from Sidebar list sidebar->obj_list()->delete_object_from_list(obj_idx); - object_list_changed(); update(); + object_list_changed(); } void Plater::priv::delete_object_from_model(size_t obj_idx) { model.delete_object(obj_idx); - object_list_changed(); update(); + object_list_changed(); } void Plater::priv::reset() @@ -2063,8 +2063,8 @@ void Plater::priv::reset() // Delete all objects from list on c++ side sidebar->obj_list()->delete_all_objects_from_list(); - object_list_changed(); update(); + object_list_changed(); // The hiding of the slicing results, if shown, is not taken care by the background process, so we do it here this->sidebar->show_sliced_info_sizer(false); @@ -2557,8 +2557,8 @@ void Plater::priv::fix_through_netfabb(const int obj_idx, const int vol_idx/* = if (obj_idx < 0) return; fix_model_by_win10_sdk_gui(*model.objects[obj_idx], vol_idx); - this->object_list_changed(); this->update(); + this->object_list_changed(); this->schedule_background_process(); } From 76aefd533cc76314344a3e41d09becdf49dec2e9 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Wed, 8 May 2019 17:43:43 +0200 Subject: [PATCH 75/94] In GUI mode, when exporting the G-code to a temp file, don't show "Exporting G-code", but "Generating G-code" --- src/libslic3r/Print.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 72e3597d58..86dc373654 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1514,13 +1514,15 @@ std::string Print::export_gcode(const std::string &path_template, GCodePreviewDa // output everything to a G-code file // The following call may die if the output_filename_format template substitution fails. std::string path = this->output_filepath(path_template); - std::string message = L("Exporting G-code"); + std::string message; // #ys_FIXME_localization if (! path.empty() && preview_data == nullptr) { // Only show the path if preview_data is not set -> running from command line. + message = L("Exporting G-code"); message += " to "; message += path; - } + } else + message = L("Generating G-code"); this->set_status(90, message); // The following line may die for multiple reasons. From ec57a7f9711d6e8293c4e181046c9ff6c3e51e8b Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Thu, 9 May 2019 10:09:33 +0200 Subject: [PATCH 76/94] Fixed current gizmo not turning off when removing last object from selection by ctrl + click and using selection rectangle --- src/slic3r/GUI/GLCanvas3D.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index df8124efa3..307b0af59c 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2741,7 +2741,11 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) // propagate event through callback if (curr_idxs != m_selection.get_volume_idxs()) { - m_gizmos.refresh_on_off_state(m_selection); + if (m_selection.is_empty()) + m_gizmos.reset_all_states(); + else + m_gizmos.refresh_on_off_state(m_selection); + m_gizmos.update_data(*this); post_event(SimpleEvent(EVT_GLCANVAS_OBJECT_SELECT)); m_dirty = true; @@ -5719,7 +5723,11 @@ void GLCanvas3D::_update_selection_from_hover() m_selection.remove(i); } - m_gizmos.refresh_on_off_state(m_selection); + if (m_selection.is_empty()) + m_gizmos.reset_all_states(); + else + m_gizmos.refresh_on_off_state(m_selection); + m_gizmos.update_data(*this); post_event(SimpleEvent(EVT_GLCANVAS_OBJECT_SELECT)); m_dirty = true; From cc98c9bbe2931201f4e5f2eb1c243d299ffdc36a Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Mon, 6 May 2019 15:24:50 +0200 Subject: [PATCH 77/94] Fixed disappearing visual hints when the user presses the ENTER key while editing one of the object manipulators fields --- src/slic3r/GUI/Field.cpp | 2 +- src/slic3r/GUI/Field.hpp | 3 +++ src/slic3r/GUI/GUI_ObjectManipulation.cpp | 16 +++++++++++++--- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 5e06efa29e..2f48814830 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -260,8 +260,8 @@ void TextCtrl::BUILD() { e.Skip(); temp->GetToolTip()->Enable(true); #endif // __WXGTK__ - propagate_value(); bEnterPressed = true; + propagate_value(); }), temp->GetId()); } diff --git a/src/slic3r/GUI/Field.hpp b/src/slic3r/GUI/Field.hpp index 88ea39036b..210ae73f4b 100644 --- a/src/slic3r/GUI/Field.hpp +++ b/src/slic3r/GUI/Field.hpp @@ -225,6 +225,9 @@ public: m_em_unit = em_unit(m_parent); } + bool get_enter_pressed() const { return bEnterPressed; } + void set_enter_pressed(bool pressed) { bEnterPressed = pressed; } + protected: RevertButton* m_Undo_btn = nullptr; // Bitmap and Tooltip text for m_Undo_btn. The wxButton will be updated only if the new wxBitmap pointer differs from the currently rendered one. diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index 5c534a3e15..6c7e4df989 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -527,11 +527,21 @@ void ObjectManipulation::do_scale(int axis, const Vec3d &scale) const void ObjectManipulation::on_change(t_config_option_key opt_key, const boost::any& value) { - // needed to hide the visual hints in 3D scene - wxGetApp().plater()->canvas3D()->handle_sidebar_focus_event(opt_key, false); + Field* field = m_og->get_field(opt_key); + bool enter_pressed = (field != nullptr) && field->get_enter_pressed(); + if (!enter_pressed) + { + // if the change does not come from the user pressing the ENTER key + // we need to hide the visual hints in 3D scene + wxGetApp().plater()->canvas3D()->handle_sidebar_focus_event(opt_key, false); + #ifndef __APPLE__ - m_focused_option = ""; + m_focused_option = ""; #endif // __APPLE__ + } + else + // if the change comes from the user pressing the ENTER key, restore the key state + field->set_enter_pressed(false); if (!m_cache.is_valid()) return; From 29ba570fb61b1043cc6c5911ce3354ee54b3ccf6 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 9 May 2019 11:42:45 +0200 Subject: [PATCH 78/94] Implemented msw_rescale_word_local_combo() for scaling of the coordinate system combobox --- src/slic3r/GUI/Field.cpp | 1 + src/slic3r/GUI/GUI_ObjectManipulation.cpp | 32 +++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 5e06efa29e..7814fd2811 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -1043,6 +1043,7 @@ void StaticText::msw_rescale() { wxStaticText* field = dynamic_cast(window); field->SetSize(size); + field->SetMinSize(size); } } diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index 5c534a3e15..9b4a091350 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -61,6 +61,37 @@ static wxBitmapComboBox* create_word_local_combo(wxWindow *parent) return temp; } +void msw_rescale_word_local_combo(wxBitmapComboBox* combo) +{ + const wxString selection = combo->GetString(combo->GetSelection()); + + /* To correct scaling (set new controll size) of a wxBitmapCombobox + * we need to refill control with new bitmaps. So, in our case : + * 1. clear control + * 2. add content + * 3. add scaled "empty" bitmap to the at least one item + */ + combo->Clear(); + wxSize size(wxDefaultSize); + size.SetWidth(15 * wxGetApp().em_unit()); + + // Set rescaled min height to correct layout + combo->SetMinSize(wxSize(-1, int(1.5f*combo->GetFont().GetPixelSize().y + 0.5f))); + // Set rescaled size + combo->SetSize(size); + + combo->Append(_(L("World coordinates"))); + combo->Append(_(L("Local coordinates"))); +// combo->SetSelection(0); +// combo->SetValue(combo->GetString(0)); + + wxBitmap empty_bmp(1, combo->GetFont().GetPixelSize().y + 2); + empty_bmp.SetWidth(0); + combo->SetItemBitmap(0, empty_bmp); + + combo->SetValue(selection); +} + ObjectManipulation::ObjectManipulation(wxWindow* parent) : OG_Settings(parent, true) #ifndef __APPLE__ @@ -621,6 +652,7 @@ void ObjectManipulation::set_uniform_scaling(const bool new_value) void ObjectManipulation::msw_rescale() { + msw_rescale_word_local_combo(m_word_local_combo); m_manifold_warning_bmp.msw_rescale(); m_fix_throught_netfab_bitmap->SetBitmap(m_manifold_warning_bmp.bmp()); From 92ba75ed757db7b567fe548f325ee2c905fa1e73 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Thu, 9 May 2019 14:15:56 +0200 Subject: [PATCH 79/94] Fixed localization of the "Machine Limits" parameters. Fixed localization of some other parameters (templating is not supported inside the PrintConfig.cpp as these strings are translated not inside PrintConfig.cpp, but by the calling GUI code). Fixed localization of SLA status bar. --- resources/localization/cs_CZ/Slic3rPE.mo | Bin 125247 -> 210995 bytes resources/localization/cs_CZ/Slic3rPE_cs.po | 14947 +++++++++--------- src/libslic3r/PrintConfig.cpp | 48 +- src/libslic3r/SLAPrint.cpp | 42 +- src/slic3r/GUI/MainFrame.cpp | 10 +- 5 files changed, 7362 insertions(+), 7685 deletions(-) diff --git a/resources/localization/cs_CZ/Slic3rPE.mo b/resources/localization/cs_CZ/Slic3rPE.mo index dded4eba47fee4205f635f2d8a071b96d8d68842..41416dd59c325e00cdebedb80625761422a4b18f 100644 GIT binary patch literal 210995 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 Dpv#z% delta 26284 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 V`2|z5`8yE3t*v8lN&6R!{{y$Y_s#$S diff --git a/resources/localization/cs_CZ/Slic3rPE_cs.po b/resources/localization/cs_CZ/Slic3rPE_cs.po index e471b46718..7c5da27bb5 100644 --- a/resources/localization/cs_CZ/Slic3rPE_cs.po +++ b/resources/localization/cs_CZ/Slic3rPE_cs.po @@ -1,2244 +1,5654 @@ msgid "" msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-09 14:34+0200\n" -"PO-Revision-Date: \n" -"Last-Translator: Oleksandra Iushchenko \n" -"Language-Team: \n" "Language: cs_CZ\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==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Poedit 2.0.8\n" - -#: src/slic3r/GUI/AboutDialog.cpp:35 -msgid "About Slic3r" -msgstr "O Slic3ru" - -#: src/slic3r/GUI/AboutDialog.cpp:64 src/slic3r/GUI/MainFrame.cpp:52 -msgid "Version" -msgstr "Verze" - -#: src/slic3r/GUI/BedShapeDialog.cpp:43 -msgid "Shape" -msgstr "Tvar" - -#: src/slic3r/GUI/BedShapeDialog.cpp:51 -msgid "Rectangular" -msgstr "Obdélníkový" - -#: src/slic3r/GUI/BedShapeDialog.cpp:55 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:118 src/slic3r/GUI/Plater.cpp:136 -#: src/slic3r/GUI/Tab.cpp:2185 -msgid "Size" -msgstr "Rozměr" - -#: src/slic3r/GUI/BedShapeDialog.cpp:56 -msgid "Size in X and Y of the rectangular plate." -msgstr "Rozměr obdélníkové tiskové podložky v ose X a Y." - -#: src/slic3r/GUI/BedShapeDialog.cpp:62 -msgid "Origin" -msgstr "Počátek" - -#: src/slic3r/GUI/BedShapeDialog.cpp:63 -msgid "" -"Distance of the 0,0 G-code coordinate from the front left corner of the " -"rectangle." -msgstr "Vzdálenost souřadnice 0,0 G-code od předního levého rohu obdélníku." - -#: src/slic3r/GUI/BedShapeDialog.cpp:67 -msgid "Circular" -msgstr "Kruhový" - -#: src/slic3r/GUI/BedShapeDialog.cpp:70 src/slic3r/GUI/ConfigWizard.cpp:111 -#: src/slic3r/GUI/ConfigWizard.cpp:544 src/slic3r/GUI/ConfigWizard.cpp:558 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:115 -#: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:84 -#: src/libslic3r/PrintConfig.cpp:59 src/libslic3r/PrintConfig.cpp:66 -#: src/libslic3r/PrintConfig.cpp:75 src/libslic3r/PrintConfig.cpp:209 -#: src/libslic3r/PrintConfig.cpp:284 src/libslic3r/PrintConfig.cpp:292 -#: src/libslic3r/PrintConfig.cpp:342 src/libslic3r/PrintConfig.cpp:352 -#: src/libslic3r/PrintConfig.cpp:472 src/libslic3r/PrintConfig.cpp:483 -#: src/libslic3r/PrintConfig.cpp:501 src/libslic3r/PrintConfig.cpp:679 -#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1226 -#: src/libslic3r/PrintConfig.cpp:1244 src/libslic3r/PrintConfig.cpp:1262 -#: src/libslic3r/PrintConfig.cpp:1314 src/libslic3r/PrintConfig.cpp:1324 -#: src/libslic3r/PrintConfig.cpp:1445 src/libslic3r/PrintConfig.cpp:1453 -#: src/libslic3r/PrintConfig.cpp:1494 src/libslic3r/PrintConfig.cpp:1502 -#: src/libslic3r/PrintConfig.cpp:1512 src/libslic3r/PrintConfig.cpp:1520 -#: src/libslic3r/PrintConfig.cpp:1528 src/libslic3r/PrintConfig.cpp:1611 -#: src/libslic3r/PrintConfig.cpp:1827 src/libslic3r/PrintConfig.cpp:1897 -#: src/libslic3r/PrintConfig.cpp:1931 src/libslic3r/PrintConfig.cpp:2123 -#: src/libslic3r/PrintConfig.cpp:2130 src/libslic3r/PrintConfig.cpp:2137 -#: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2177 -#: src/libslic3r/PrintConfig.cpp:2187 src/libslic3r/PrintConfig.cpp:2293 -#: src/libslic3r/PrintConfig.cpp:2368 src/libslic3r/PrintConfig.cpp:2377 -#: src/libslic3r/PrintConfig.cpp:2386 src/libslic3r/PrintConfig.cpp:2396 -#: src/libslic3r/PrintConfig.cpp:2440 src/libslic3r/PrintConfig.cpp:2450 -#: src/libslic3r/PrintConfig.cpp:2469 src/libslic3r/PrintConfig.cpp:2479 -#: src/libslic3r/PrintConfig.cpp:2488 src/libslic3r/PrintConfig.cpp:2506 -#: src/libslic3r/PrintConfig.cpp:2521 src/libslic3r/PrintConfig.cpp:2532 -#: src/libslic3r/PrintConfig.cpp:2545 src/libslic3r/PrintConfig.cpp:2555 -msgid "mm" -msgstr "mm" - -#: src/slic3r/GUI/BedShapeDialog.cpp:71 src/libslic3r/PrintConfig.cpp:676 -msgid "Diameter" -msgstr "Průměr" - -#: src/slic3r/GUI/BedShapeDialog.cpp:72 -msgid "" -"Diameter of the print bed. It is assumed that origin (0,0) is located in the " -"center." -msgstr "" -"Průměr tiskové podložky. Přepokládaný počátek (0,0) je umístěn uprostřed." - -#: src/slic3r/GUI/BedShapeDialog.cpp:76 src/slic3r/GUI/GUI_Preview.cpp:239 -#: src/libslic3r/GCode/PreviewData.cpp:175 -msgid "Custom" -msgstr "Vlastní" - -#: src/slic3r/GUI/BedShapeDialog.cpp:80 -msgid "Load shape from STL..." -msgstr "" - -#: src/slic3r/GUI/BedShapeDialog.cpp:126 -msgid "Settings" -msgstr "Nastavení" - -#: src/slic3r/GUI/BedShapeDialog.cpp:299 -msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "" -"Vyberte soubor pro import tvaru tiskové podložky z (STL/OBJ/AMF/3MF/PRUSA):" - -#: src/slic3r/GUI/BedShapeDialog.cpp:316 src/slic3r/GUI/GUI_ObjectList.cpp:1252 -msgid "Error! " -msgstr "Chyba! " - -#: src/slic3r/GUI/BedShapeDialog.cpp:325 -msgid "The selected file contains no geometry." -msgstr "Vybraný soubor neobsahuje geometrii." - -#: src/slic3r/GUI/BedShapeDialog.cpp:329 -msgid "" -"The selected file contains several disjoint areas. This is not supported." -msgstr "" -"Vybraný soubor obsahuje několik nespojených ploch. Tato možnost není " -"podporována." - -#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:507 -msgid "Bed Shape" -msgstr "Tvar tiskové podložky" - -#: src/slic3r/GUI/BonjourDialog.cpp:55 -msgid "Network lookup" -msgstr "Hledání v síti" - -#: src/slic3r/GUI/BonjourDialog.cpp:72 -msgid "Address" -msgstr "Adresa" - -#: src/slic3r/GUI/BonjourDialog.cpp:73 -msgid "Hostname" -msgstr "Název hosta" - -#: src/slic3r/GUI/BonjourDialog.cpp:74 -msgid "Service name" -msgstr "Název služby" - -#: src/slic3r/GUI/BonjourDialog.cpp:76 -msgid "OctoPrint version" -msgstr "Verze OctoPrintu" - -#: src/slic3r/GUI/BonjourDialog.cpp:218 -msgid "Searching for devices" -msgstr "Hledám zařízení" - -#: src/slic3r/GUI/BonjourDialog.cpp:225 -msgid "Finished" -msgstr "Dokončeno" - -#: src/slic3r/GUI/ButtonsDescription.cpp:15 -msgid "Buttons And Text Colors Description" -msgstr "Barvy pro textové popisky a tlačítka" - -#: src/slic3r/GUI/ButtonsDescription.cpp:40 -msgid "Value is the same as the system value" -msgstr "Hodnota je shodná se systémovou hodnotou" - -#: src/slic3r/GUI/ButtonsDescription.cpp:57 -msgid "" -"Value was changed and is not equal to the system value or the last saved " -"preset" -msgstr "" -"Hodnota byla změněna a není shodná se systémovou hodnotou nebo naposled " -"uloženým přednastavením" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:17 -msgid "Upgrade" -msgstr "Aktualizovat" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:19 -msgid "Downgrade" -msgstr "Downgrade" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:21 -msgid "Before roll back" -msgstr "Before roll back" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:23 -msgid "User" -msgstr "Uživatel" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:26 -msgid "Unknown" -msgstr "Neznámý" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:38 -msgid "Active: " -msgstr "Aktivní: " - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:44 -msgid "slic3r version" -msgstr "verze slic3ru" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 src/slic3r/GUI/Preset.cpp:1250 -msgid "print" -msgstr "tisk" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 -msgid "filaments" -msgstr "filamenty" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:47 src/slic3r/GUI/Preset.cpp:1254 -msgid "printer" -msgstr "tiskárna" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Tab.cpp:872 -msgid "vendor" -msgstr "prodejce" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 -msgid "version" -msgstr "verze" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 -msgid "min slic3r version" -msgstr "min verze slic3ru" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:54 -msgid "max slic3r version" -msgstr "max verze slic3ru" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 -msgid "model" -msgstr "model" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 -msgid "variants" -msgstr "varianty" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:69 -msgid "Incompatible with this Slic3r" -msgstr "Nekompatibilní s tímto Slic3rem" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:72 -msgid "Activate" -msgstr "Aktivovat" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:98 -msgid "Configuration Snapshots" -msgstr "Záloha konfigurace" - -#: src/slic3r/GUI/ConfigWizard.cpp:111 -msgid "nozzle" -msgstr "tryska" - -#: src/slic3r/GUI/ConfigWizard.cpp:115 -msgid "Alternate nozzles:" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:181 -msgid "All standard" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:182 src/slic3r/GUI/Tab.cpp:2909 -msgid "All" -msgstr "Vše" - -#: src/slic3r/GUI/ConfigWizard.cpp:183 src/slic3r/GUI/Plater.cpp:414 -#: src/libslic3r/GCode/PreviewData.cpp:162 -msgid "None" -msgstr "Žádný" - -#: src/slic3r/GUI/ConfigWizard.cpp:284 -#, c-format -msgid "Welcome to the Slic3r %s" -msgstr "Vítejte v Slic3r %s" - -#: src/slic3r/GUI/ConfigWizard.cpp:284 -msgid "Welcome" -msgstr "Vítejte" - -#: src/slic3r/GUI/ConfigWizard.cpp:288 src/slic3r/GUI/GUI_App.cpp:600 -#, c-format -msgid "Run %s" -msgstr "Spustit %s" - -#: src/slic3r/GUI/ConfigWizard.cpp:290 -#, c-format -msgid "" -"Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial " -"configuration; just a few settings and you will be ready to print." -msgstr "" -"Zdravím, vítejte ve Slic3r Prusa Edition! Tento %s vám pomůže se základní " -"konfigurací; jen několik nastavení a budete připraveni k tisku." - -#: src/slic3r/GUI/ConfigWizard.cpp:294 -msgid "" -"Remove user profiles - install from scratch (a snapshot will be taken " -"beforehand)" -msgstr "" -"Odstranit uživatelské profily - čistá instalace (nejprve bude provedena " -"záloha)" - -#: src/slic3r/GUI/ConfigWizard.cpp:325 -#, c-format -msgid "%s Family" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:362 -msgid "Custom Printer Setup" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:362 -msgid "Custom Printer" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:364 -msgid "Define a custom printer profile" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:366 -msgid "Custom profile name:" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:390 -msgid "Automatic updates" -msgstr "Automatické aktualizace" - -#: src/slic3r/GUI/ConfigWizard.cpp:390 -msgid "Updates" -msgstr "Aktualizace" - -#: src/slic3r/GUI/ConfigWizard.cpp:398 src/slic3r/GUI/Preferences.cpp:59 -msgid "Check for application updates" -msgstr "Zkontrolovat aktualizace aplikace" - -#: src/slic3r/GUI/ConfigWizard.cpp:401 src/slic3r/GUI/Preferences.cpp:61 -msgid "" -"If enabled, Slic3r checks for new versions of Slic3r PE online. When a new " -"version becomes available a notification is displayed at the next " -"application startup (never during program usage). This is only a " -"notification mechanisms, no automatic installation is done." -msgstr "" -"Pokud je povoleno, kontroluje Slic3r nově dostupné verze Slic3r PE. V " -"případě, že je nová verze k dispozici, zobrazí se notifikace při dalším " -"startu programu (nikdy během užívání aplikace). Tento systém slouží pouze " -"pro upozornění uživatele, nedochází k automatické instalaci." - -#: src/slic3r/GUI/ConfigWizard.cpp:405 src/slic3r/GUI/Preferences.cpp:67 -msgid "Update built-in Presets automatically" -msgstr "Aktualizovat vestavěné přednastavení automaticky" - -#: src/slic3r/GUI/ConfigWizard.cpp:408 src/slic3r/GUI/Preferences.cpp:69 -msgid "" -"If enabled, Slic3r downloads updates of built-in system presets in the " -"background. These updates are downloaded into a separate temporary location. " -"When a new preset version becomes available it is offered at application " -"startup." -msgstr "" -"Pokud je povoleno, stáhne Slic3r na pozadí aktualizace vestavěných " -"systémových přednastavení. Tyto aktualizace jsou staženy do dočasného " -"umístění. Pokud je k dispozici nové přednastavení, zobrazí se upozornění při " -"startu programu." - -#: src/slic3r/GUI/ConfigWizard.cpp:409 -msgid "" -"Updates are never applied without user's consent and never overwrite user's " -"customized settings." -msgstr "" -"Aktualizace nejsou nikdy nainstalovány bez vědomí uživatele a nikdy " -"nepřepíšou upravená uživatelská nastavení." - -#: src/slic3r/GUI/ConfigWizard.cpp:414 -msgid "" -"Additionally a backup snapshot of the whole configuration is created before " -"an update is applied." -msgstr "" -"Dále je před nainstalováním aktualizace vytvořena záloha veškerého nastavení." - -#: src/slic3r/GUI/ConfigWizard.cpp:421 -msgid "Other Vendors" -msgstr "Ostatní výrobci" - -#: src/slic3r/GUI/ConfigWizard.cpp:423 -msgid "Pick another vendor supported by Slic3r PE:" -msgstr "Vyberte si jiného prodejce podporovaného v Slic3r PE:" - -#: src/slic3r/GUI/ConfigWizard.cpp:469 -msgid "Firmware Type" -msgstr "Typ firmware" - -#: src/slic3r/GUI/ConfigWizard.cpp:469 src/slic3r/GUI/Tab.cpp:1870 -msgid "Firmware" -msgstr "Firmware" - -#: src/slic3r/GUI/ConfigWizard.cpp:473 -msgid "Choose the type of firmware used by your printer." -msgstr "Vyberte typ firmware používaný vaší tiskárnou." - -#: src/slic3r/GUI/ConfigWizard.cpp:507 -msgid "Bed Shape and Size" -msgstr "Tvar a rozměr podložky" - -#: src/slic3r/GUI/ConfigWizard.cpp:510 -msgid "Set the shape of your printer's bed." -msgstr "Nastavte tvar vaší tiskové podložky." - -#: src/slic3r/GUI/ConfigWizard.cpp:524 -msgid "Filament and Nozzle Diameters" -msgstr "Průměry filamentu a trysky" - -#: src/slic3r/GUI/ConfigWizard.cpp:524 -msgid "Print Diameters" -msgstr "Průměry tisku" - -#: src/slic3r/GUI/ConfigWizard.cpp:540 -msgid "Enter the diameter of your printer's hot end nozzle." -msgstr "Zadejte průměr trysky hotendu vaší tiskárny." - -#: src/slic3r/GUI/ConfigWizard.cpp:543 -msgid "Nozzle Diameter:" -msgstr "Průměr trysky:" - -#: src/slic3r/GUI/ConfigWizard.cpp:553 -msgid "Enter the diameter of your filament." -msgstr "Zadejte průměr vašeho filamentu." - -#: src/slic3r/GUI/ConfigWizard.cpp:554 -msgid "" -"Good precision is required, so use a caliper and do multiple measurements " -"along the filament, then compute the average." -msgstr "" -"Je zapotřebí velká přesnost, proto použijte posuvné měřítko (šupleru) a " -"proveďte několik měření po délce filamentu, poté vypočítejte průměr." - -#: src/slic3r/GUI/ConfigWizard.cpp:557 -msgid "Filament Diameter:" -msgstr "Průměr filamentu:" - -#: src/slic3r/GUI/ConfigWizard.cpp:575 -msgid "Extruder and Bed Temperatures" -msgstr "Teploty extruderu a podložky" - -#: src/slic3r/GUI/ConfigWizard.cpp:575 -msgid "Temperatures" -msgstr "Teploty" - -#: src/slic3r/GUI/ConfigWizard.cpp:591 -msgid "Enter the temperature needed for extruding your filament." -msgstr "Zadejte požadovanou teplotu pro extruzi vašeho filamentu." - -#: src/slic3r/GUI/ConfigWizard.cpp:592 -msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." -msgstr "Obecným pravidlem je 160 až 230° pro PLA a 215 až 250° pro ABS." - -#: src/slic3r/GUI/ConfigWizard.cpp:595 -msgid "Extrusion Temperature:" -msgstr "Teplota extruze:" - -#: src/slic3r/GUI/ConfigWizard.cpp:596 src/slic3r/GUI/ConfigWizard.cpp:610 -msgid "°C" -msgstr "°C" - -#: src/slic3r/GUI/ConfigWizard.cpp:605 -msgid "" -"Enter the bed temperature needed for getting your filament to stick to your " -"heated bed." -msgstr "" -"Zadejte požadovanou teplotu filamentu, aby se spojil s vyhřívanou podložkou." - -#: src/slic3r/GUI/ConfigWizard.cpp:606 -msgid "" -"A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have " -"no heated bed." -msgstr "" -"Obecným pravidlem je 160 až 230° pro PLA a 215 až 250° pro ABS. Zadejte " -"nula, pokud nemáte vyhřívanou podložku." - -#: src/slic3r/GUI/ConfigWizard.cpp:609 -msgid "Bed Temperature:" -msgstr "Teplota tiskové podložky:" - -#: src/slic3r/GUI/ConfigWizard.cpp:1001 -msgid "Select all standard printers" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:1004 -msgid "< &Back" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:1005 -msgid "&Next >" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:1006 -msgid "&Finish" -msgstr "&Dokončit" - -#: src/slic3r/GUI/ConfigWizard.cpp:1007 src/slic3r/GUI/FirmwareDialog.cpp:142 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:37 -#: src/slic3r/GUI/ProgressStatusBar.cpp:28 -msgid "Cancel" -msgstr "Zrušit" - -#: src/slic3r/GUI/ConfigWizard.cpp:1021 -msgid "Prusa FFF Technology Printers" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:1024 -msgid "Prusa MSLA Technology Printers" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:1111 -msgid "Configuration Wizard" -msgstr "Průvodce nastavením" - -#: src/slic3r/GUI/ConfigWizard.cpp:1112 -msgid "Configuration &Wizard" -msgstr "Průvodce &nastavením" - -#: src/slic3r/GUI/ConfigWizard.cpp:1114 -msgid "Configuration Assistant" -msgstr "Průvodce nastavení tiskárny" - -#: src/slic3r/GUI/ConfigWizard.cpp:1115 -msgid "Configuration &Assistant" -msgstr "Průvodce &nastavení tiskárny" - -#: src/slic3r/GUI/Field.cpp:112 -msgid "default value" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:115 -msgid "parameter name" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:143 -#, c-format +"X-Generator: PhraseApp (phraseapp.com)\n" + +#: xs/src/slic3r/GUI/Tab.cpp:2149 +msgid "\n\nand it has the following unsaved changes:" +msgstr "\n\na má neuložené následující změny:" + +#: xs/src/slic3r/GUI/Tab.cpp:2152 +msgid "\n\nDiscard changes and continue anyway?" +msgstr "\n\nZahodit změny a přesto pokračovat?" + +#: xs/src/slic3r/GUI/Tab.cpp:2150 +msgid "\n\nhas the following unsaved changes:" +msgstr "\n\nmá neuložené následující změny:" + +#: xs/src/slic3r/GUI/Tab.cpp:2149 +msgid "\n\nis not compatible with printer\n" +msgstr "\n\nnení kompatibilní s tiskárnou\n" + +#: src/slic3r/GUI/PresetHints.cpp:36 +msgid "\nDuring the other layers, fan " +msgstr "\nV průběhu ostaních vrstev, ventilátor " + +#: src/slic3r/GUI/PresetHints.cpp:32 +#, possible-c-format +msgid "\nIf estimated layer time is greater, but still below ~%ds, fan will run at a proportionally decreasing speed between %d%% and %d%%." +msgstr "\nPokud je odhadovaný čas vrstvy delší, ale stále pod ~%ds, bude ventilátor pracovat s plynule klesající rychlostí mezi %d%% a %d%%." + +#: lib/Slic3r/GUI/Plater.pm:1019 +msgid "\nNon-positive value." +msgstr "\nNezáporná hodnota." + +#: lib/Slic3r/GUI/Plater.pm:1020 +msgid "\nNot a numeric value." +msgstr "\nNečíselná hodnota." + +#: src/slic3r/GUI/MainFrame.cpp:55 +msgid " - Remember to check for updates at http://github.com/prusa3d/slic3r/releases" +msgstr " - Nezapomeňte zkontrolovat aktualizace na http://github.com/prusa3d/slic3r/releases" + +#: src/slic3r/GUI/Tab.cpp:3239 +msgid " as:" +msgstr " jako:" + +#: src/slic3r/GUI/PresetHints.cpp:228 +#, possible-c-format +msgid " at filament speed %3.2f mm/s." +msgstr " při rychlosti filamentu %3.2f mm/s." + +#: src/slic3r/GUI/Tab.cpp:1737 +msgid " Browse " +msgstr " Procházet " + +#: src/slic3r/GUI/MainFrame.cpp:677 +msgid " file as:" +msgstr " soubor jako:" + +#: src/slic3r/GUI/PresetHints.cpp:217 +msgid " flow rate is maximized " +msgstr " průtok je maximalizován " + +#: src/slic3r/GUI/Tab.cpp:1358 +#, no-c-format +msgid " infill pattern is not supposed to work at 100% density.\n\nShall I switch to rectilinear fill pattern?" +msgstr " vzor výplně není určen pro práci se 100% hustotou.\n\nMám přejít na vzor výplně rectilinear?" + +#: xs/src/slic3r/GUI/Tab.cpp:2131 +msgid " preset\n" +msgstr " přednastavení\n" + +#: xs/src/slic3r/GUI/Tab.cpp:2130 +msgid " preset" +msgstr " přednastavení" + +#: src/slic3r/GUI/Tab.cpp:2938 +msgid " Preset" +msgstr " Přednastavení" + +#: src/slic3r/GUI/Tab.cpp:1818 src/slic3r/GUI/Tab.cpp:2019 +#: src/slic3r/GUI/Tab.cpp:2988 +msgid " Set " +msgstr " Nastavit " + +#: src/slic3r/GUI/Tab.cpp:2936 +msgid " the selected preset?" +msgstr " zvolené přednastavení?" + +#: src/slic3r/GUI/MainFrame.cpp:727 +msgid " was successfully sliced." +msgstr " byl úspěšně slicován." + +#: src/slic3r/GUI/PresetHints.cpp:222 +msgid " with a volumetric rate " +msgstr " s objemovou rychlostí " + +#: src/libslic3r/PrintConfig.cpp:179 src/libslic3r/PrintConfig.cpp:745 +#: src/libslic3r/PrintConfig.cpp:1154 src/libslic3r/PrintConfig.cpp:1217 +#: src/libslic3r/PrintConfig.cpp:1462 src/libslic3r/PrintConfig.cpp:2260 +#: src/libslic3r/PrintConfig.cpp:2502 +msgid "%" +msgstr "%" + +#: src/libslic3r/GCode/PreviewData.cpp:504 +#, possible-c-format +msgid "%.2f - %.2f mm" +msgstr "%.2f - %.2f mm" + +#: src/slic3r/GUI/PresetHints.cpp:226 +#, possible-c-format +msgid "%3.2f mm³/s" +msgstr "%3.2f mm³/s" + +#: src/slic3r/GUI/Plater.cpp:974 +#, possible-c-format +msgid "%d (%d shells)" +msgstr "%d (%d obalů)" + +#: src/slic3r/GUI/Plater.cpp:982 +#, possible-c-format +msgid "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d facets reversed, %d backwards edges" +msgstr "%d poškozených faset, %d okrajů opraveno, %d faset odstraněno, %d faset přidáno, %d faset navráceno, %d zadních okrajů" + +#: src/slic3r/GUI/PresetHints.cpp:271 +#, possible-c-format +msgid "%d lines: %.2lf mm" +msgstr "%d linie: %.2lf mm" + +#: src/slic3r/GUI/MainFrame.cpp:894 +#, possible-c-format +msgid "%d presets successfully imported." +msgstr "%d přednastavení úspěšně importováno." + +#: src/slic3r/GUI/MainFrame.cpp:553 +#, possible-c-format +msgid "%s &Manual" +msgstr "%s Návod" + +#: src/slic3r/GUI/MainFrame.cpp:550 +#, possible-c-format +msgid "%s &Website" +msgstr "%s &Webová stránka" + +#: src/slic3r/GUI/UpdateDialogs.cpp:113 +#, possible-c-format +msgid "%s configuration is incompatible" +msgstr "Konfigurace %s není kompatibilní" + +#: src/slic3r/GUI/Field.cpp:136 +#, possible-c-format msgid "%s doesn't support percentage" msgstr "%s nepodporuje procenta" -#: src/slic3r/GUI/Field.cpp:157 src/slic3r/GUI/Field.cpp:180 -msgid "Invalid numeric input." -msgstr "" - -#: src/slic3r/GUI/Field.cpp:162 -msgid "Input value is out of range" -msgstr "Zadaná hodnota je mimo rozsah" - -#: src/slic3r/GUI/Field.cpp:188 -#, c-format -msgid "" -"Do you mean %d%% instead of %d %s?\n" -"Select YES if you want to change this value to %d%%, \n" -"or NO if you are sure that %d %s is a correct value." -msgstr "" - -#: src/slic3r/GUI/Field.cpp:191 -msgid "Parameter validation" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:141 -msgid "Flash!" -msgstr "Nahrát!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:143 -msgid "Flashing in progress. Please do not disconnect the printer!" -msgstr "Probíhá nahrávání firmware. Prosím neodpojujte tiskárnu!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:187 -msgid "Flashing failed: " -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:268 -msgid "Flashing succeeded!" -msgstr "Nahrávání bylo úspěšné!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:269 -msgid "Flashing failed. Please see the avrdude log below." -msgstr "Nahrání selhalo. Projděte si prosím avrdude log níže." - -#: src/slic3r/GUI/FirmwareDialog.cpp:270 -msgid "Flashing cancelled." -msgstr "Nahrávání zrušeno." - -#: src/slic3r/GUI/FirmwareDialog.cpp:308 -#, c-format -msgid "" -"This firmware hex file does not match the printer model.\n" -"The hex file is intended for: %s\n" -"Printer reported: %s\n" -"\n" -"Do you want to continue and flash this hex file anyway?\n" -"Please only continue if you are sure this is the right thing to do." -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:395 src/slic3r/GUI/FirmwareDialog.cpp:431 -#, c-format -msgid "" -"Multiple %s devices found. Please only connect one at a time for flashing." -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:412 -#, c-format -msgid "" -"The %s device was not found.\n" -"If the device is connected, please press the Reset button next to the USB " -"connector ..." -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:525 -#, c-format -msgid "The %s device could not have been found" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:603 -#, c-format -msgid "Error accessing port at %s: %s" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:605 -#, c-format -msgid "Error: %s" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:735 -msgid "Firmware flasher" -msgstr "Nahrání firmware" - -#: src/slic3r/GUI/FirmwareDialog.cpp:762 -msgid "Firmware image:" -msgstr "Soubor s firmware:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:766 -msgid "Serial port:" -msgstr "Sériový port:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:768 -msgid "Autodetected" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:769 -msgid "Rescan" -msgstr "Prohledat" - -#: src/slic3r/GUI/FirmwareDialog.cpp:776 -msgid "Progress:" -msgstr "Průběh:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:779 -msgid "Status:" -msgstr "Stav:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:780 -msgid "Ready" -msgstr "Připraveno" - -#: src/slic3r/GUI/FirmwareDialog.cpp:800 -msgid "Advanced: Output log" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:811 -#: src/slic3r/GUI/PrintHostDialogs.cpp:161 -msgid "Close" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:859 -msgid "" -"Are you sure you want to cancel firmware flashing?\n" -"This could leave your printer in an unusable state!" -msgstr "" -"Opravdu chcete ukončit nahrávání firmware?\n" -"Tiskárna může zůstat v nefunkčním stavu!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:860 -msgid "Confirmation" -msgstr "Potvrzení" - -#: src/slic3r/GUI/FirmwareDialog.cpp:863 -msgid "Cancelling..." -msgstr "" - -#: src/slic3r/GUI/GLCanvas3D.cpp:709 -msgid "Detected object outside print volume" -msgstr "" - -#: src/slic3r/GUI/GLCanvas3D.cpp:710 -msgid "Detected toolpath outside print volume" -msgstr "" - -#: src/slic3r/GUI/GLCanvas3D.cpp:711 -msgid "Some objects are not visible when editing supports" -msgstr "" - -#: src/slic3r/GUI/GLCanvas3D.cpp:713 -msgid "" -"Detected object outside print volume\n" -"Resolve a clash to continue slicing/export process correctly" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:35 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:195 -msgid "Rotate lower part upwards" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:36 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:198 -msgid "Perform cut" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:43 -msgid "Cut object:" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:88 -msgid "Cut [C]" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:188 src/libslic3r/PrintConfig.cpp:3006 -msgid "Cut" -msgstr "Řezat" - -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:193 -msgid "Keep upper part" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:194 -msgid "Keep lower part" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:32 -msgid "Place on face [F]" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:51 -msgid "Move [M]" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:176 -msgid "Position (mm)" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:176 -msgid "Displacement (mm)" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:458 -msgid "Rotate [R]" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:491 -msgid "Rotation (deg)" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:51 -msgid "Scale [S]" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:276 -msgid "Scale (%)" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:597 -msgid "Left mouse click - add point" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:598 -msgid "Right mouse click - remove point" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:599 -msgid "Shift + Left (+ drag) - select point(s)" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:606 -msgid "Head diameter: " -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:618 -msgid "Lock supports under new islands" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:622 -msgid "Remove selected points" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:626 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:679 -msgid "Remove all points" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:631 -msgid "Apply changes" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:636 -msgid "Discard changes" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:644 -msgid "Minimal points distance: " -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:655 -msgid "Support points density: " -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:669 -msgid "Auto-generate points [A]" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:675 -msgid "Manual editing [M]" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:738 -msgid "SLA Support Points [L]" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:767 -msgid "Do you want to save your manually edited support points ?\n" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:768 -msgid "Save changes?" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:897 -msgid "" -"Autogeneration will erase all manually edited points.\n" -"\n" -"Are you sure you want to do it?\n" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:899 src/slic3r/GUI/GUI.cpp:288 -#: src/slic3r/GUI/WipeTowerDialog.cpp:44 src/slic3r/GUI/WipeTowerDialog.cpp:328 -msgid "Warning" -msgstr "Varování" - -#: src/slic3r/GUI/GUI.cpp:147 src/slic3r/GUI/Tab.cpp:2720 -msgid "It's impossible to print multi-part object(s) with SLA technology." -msgstr "" - -#: src/slic3r/GUI/GUI.cpp:148 -msgid "Please check and fix your object list." -msgstr "" - -#: src/slic3r/GUI/GUI.cpp:149 src/slic3r/GUI/GUI_App.cpp:679 -#: src/slic3r/GUI/Tab.cpp:2722 -msgid "Attention!" -msgstr "Pozor!" - -#: src/slic3r/GUI/GUI.cpp:282 -msgid "Notice" -msgstr "Oznámení" - -#: src/slic3r/GUI/GUI_App.cpp:318 -msgid "Changing of an application language" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:326 src/slic3r/GUI/GUI_App.cpp:335 -msgid "Recreating" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:339 -msgid "Loading of a current presets" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:347 -msgid "Loading of a mode view" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:429 -msgid "Choose one file (3MF):" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:441 -msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Vyberte jeden nebo více souborů (STL/OBJ/AMF/3MF/PRUSA):" - -#: src/slic3r/GUI/GUI_App.cpp:454 -msgid "Array of language names and identifiers should have the same size." -msgstr "Pole jazykových jmen a identifikátorů by měla mít stejnou velikost." - -#: src/slic3r/GUI/GUI_App.cpp:464 -msgid "Select the language" -msgstr "Výběr jazyka" - -#: src/slic3r/GUI/GUI_App.cpp:464 -msgid "Language" -msgstr "Jazyk" - -#: src/slic3r/GUI/GUI_App.cpp:534 src/slic3r/GUI/GUI_ObjectList.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:298 -msgid "Default" -msgstr "Výchozí" - -#: src/slic3r/GUI/GUI_App.cpp:603 -msgid "&Configuration Snapshots" -msgstr "Záloha &Konfigurace" - -#: src/slic3r/GUI/GUI_App.cpp:603 -msgid "Inspect / activate configuration snapshots" -msgstr "Zkontrolovat / aktivovat zálohy konfigurace" - -#: src/slic3r/GUI/GUI_App.cpp:604 -msgid "Take Configuration &Snapshot" -msgstr "Provést &Zálohu Konfigurace" - -#: src/slic3r/GUI/GUI_App.cpp:604 -msgid "Capture a configuration snapshot" -msgstr "Vytvořit aktuální zálohu konfigurace" - -#: src/slic3r/GUI/GUI_App.cpp:607 -msgid "&Preferences" -msgstr "&Nastavení" - -#: src/slic3r/GUI/GUI_App.cpp:613 -msgid "Application preferences" -msgstr "Nastavení aplikace" - -#: src/slic3r/GUI/GUI_App.cpp:616 src/slic3r/GUI/wxExtensions.cpp:2446 -msgid "Simple" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:616 -msgid "Simple View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:617 src/slic3r/GUI/GUI_ObjectList.cpp:73 -#: src/slic3r/GUI/Tab.cpp:977 src/slic3r/GUI/Tab.cpp:992 -#: src/slic3r/GUI/Tab.cpp:1090 src/slic3r/GUI/Tab.cpp:1093 -#: src/slic3r/GUI/Tab.cpp:1466 src/slic3r/GUI/Tab.cpp:1890 -#: src/slic3r/GUI/Tab.cpp:3347 src/slic3r/GUI/wxExtensions.cpp:2447 -#: src/libslic3r/PrintConfig.cpp:72 src/libslic3r/PrintConfig.cpp:186 -#: src/libslic3r/PrintConfig.cpp:349 src/libslic3r/PrintConfig.cpp:987 -#: src/libslic3r/PrintConfig.cpp:2173 -msgid "Advanced" -msgstr "Pokročilé" - -#: src/slic3r/GUI/GUI_App.cpp:617 -msgid "Advanced View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:618 src/slic3r/GUI/wxExtensions.cpp:2448 -msgid "Expert" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:618 -msgid "Expert View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:623 -msgid "Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:623 -msgid "Slic3r View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:625 -msgid "Change Application &Language" -msgstr "Změnit &jazyk aplikace" - -#: src/slic3r/GUI/GUI_App.cpp:627 -msgid "Flash printer &firmware" -msgstr "Nahrát &firmware tiskárny" - -#: src/slic3r/GUI/GUI_App.cpp:627 -msgid "Upload a firmware image into an Arduino based printer" -msgstr "Nahrát firmware do tiskárny s Arduinem" - -#: src/slic3r/GUI/GUI_App.cpp:639 -msgid "Taking configuration snapshot" -msgstr "Ukládání zálohy nastavení" - -#: src/slic3r/GUI/GUI_App.cpp:639 -msgid "Snapshot name" -msgstr "Název zálohy" - -#: src/slic3r/GUI/GUI_App.cpp:676 -msgid "Application will be restarted after language change." -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:677 -msgid "3D-Scene will be cleaned." -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:678 -msgid "Please, check your changes before." -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:706 -msgid "&Configuration" -msgstr "&Konfigurace" - -#: src/slic3r/GUI/GUI_App.cpp:726 -msgid "You have unsaved changes " -msgstr "Máte neuložené změny " - -#: src/slic3r/GUI/GUI_App.cpp:726 -msgid ". Discard changes and continue anyway?" -msgstr ". Zahodit změny a přesto pokračovat?" - -#: src/slic3r/GUI/GUI_App.cpp:727 -msgid "Unsaved Presets" -msgstr "Neuložená Přednastavení" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:28 src/slic3r/GUI/GUI_ObjectList.cpp:65 -#: src/libslic3r/PrintConfig.cpp:56 src/libslic3r/PrintConfig.cpp:149 -#: src/libslic3r/PrintConfig.cpp:380 src/libslic3r/PrintConfig.cpp:437 -#: src/libslic3r/PrintConfig.cpp:445 src/libslic3r/PrintConfig.cpp:841 -#: src/libslic3r/PrintConfig.cpp:1025 src/libslic3r/PrintConfig.cpp:1304 -#: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1551 -#: src/libslic3r/PrintConfig.cpp:1986 src/libslic3r/PrintConfig.cpp:2042 -msgid "Layers and Perimeters" -msgstr "Vrstvy a perimetry" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:29 src/slic3r/GUI/GUI_ObjectList.cpp:66 -#: src/slic3r/GUI/Plater.cpp:431 src/slic3r/GUI/Tab.cpp:981 -#: src/slic3r/GUI/Tab.cpp:982 src/slic3r/GUI/Tab.cpp:1311 -#: src/libslic3r/PrintConfig.cpp:166 src/libslic3r/PrintConfig.cpp:388 -#: src/libslic3r/PrintConfig.cpp:728 src/libslic3r/PrintConfig.cpp:742 -#: src/libslic3r/PrintConfig.cpp:779 src/libslic3r/PrintConfig.cpp:932 -#: src/libslic3r/PrintConfig.cpp:942 src/libslic3r/PrintConfig.cpp:960 -#: src/libslic3r/PrintConfig.cpp:978 src/libslic3r/PrintConfig.cpp:997 -#: src/libslic3r/PrintConfig.cpp:1658 src/libslic3r/PrintConfig.cpp:1675 -msgid "Infill" -msgstr "Výplň" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:30 src/slic3r/GUI/GUI_ObjectList.cpp:67 -#: src/slic3r/GUI/GUI_Preview.cpp:236 src/slic3r/GUI/Tab.cpp:1010 -#: src/slic3r/GUI/Tab.cpp:1011 src/libslic3r/PrintConfig.cpp:333 -#: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1779 -#: src/libslic3r/PrintConfig.cpp:1785 src/libslic3r/PrintConfig.cpp:1793 -#: src/libslic3r/PrintConfig.cpp:1805 src/libslic3r/PrintConfig.cpp:1815 -#: src/libslic3r/PrintConfig.cpp:1823 src/libslic3r/PrintConfig.cpp:1838 -#: src/libslic3r/PrintConfig.cpp:1859 src/libslic3r/PrintConfig.cpp:1870 -#: src/libslic3r/PrintConfig.cpp:1886 src/libslic3r/PrintConfig.cpp:1895 -#: src/libslic3r/PrintConfig.cpp:1904 src/libslic3r/PrintConfig.cpp:1915 -#: src/libslic3r/PrintConfig.cpp:1929 src/libslic3r/PrintConfig.cpp:1937 -#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1947 -#: src/libslic3r/PrintConfig.cpp:1955 src/libslic3r/PrintConfig.cpp:1969 -#: src/libslic3r/GCode/PreviewData.cpp:172 -msgid "Support material" -msgstr "Podpory" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_ObjectList.cpp:69 -#: src/slic3r/GUI/Tab.cpp:1070 src/slic3r/GUI/Tab.cpp:1794 -#: src/libslic3r/PrintConfig.cpp:455 src/libslic3r/PrintConfig.cpp:953 -#: src/libslic3r/PrintConfig.cpp:1339 src/libslic3r/PrintConfig.cpp:1667 -#: src/libslic3r/PrintConfig.cpp:1851 src/libslic3r/PrintConfig.cpp:1877 -#: src/libslic3r/PrintConfig.cpp:2149 src/libslic3r/PrintConfig.cpp:2157 -msgid "Extruders" -msgstr "Extruder" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:39 -msgid "Pad and Support" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:68 src/slic3r/GUI/GUI_Preview.cpp:215 -#: src/slic3r/GUI/Tab.cpp:1035 src/libslic3r/PrintConfig.cpp:198 -#: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:870 -#: src/libslic3r/PrintConfig.cpp:998 src/libslic3r/PrintConfig.cpp:1360 -#: src/libslic3r/PrintConfig.cpp:1597 src/libslic3r/PrintConfig.cpp:1646 -#: src/libslic3r/PrintConfig.cpp:1697 src/libslic3r/PrintConfig.cpp:2028 -msgid "Speed" -msgstr "Rychlost" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:70 src/libslic3r/PrintConfig.cpp:415 -#: src/libslic3r/PrintConfig.cpp:522 src/libslic3r/PrintConfig.cpp:829 -#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:1348 -#: src/libslic3r/PrintConfig.cpp:1687 src/libslic3r/PrintConfig.cpp:1860 -#: src/libslic3r/PrintConfig.cpp:2017 -msgid "Extrusion Width" -msgstr "Šíře extruze" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:75 src/slic3r/GUI/Plater.cpp:410 -#: src/slic3r/GUI/Tab.cpp:3309 src/slic3r/GUI/Tab.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:2359 src/libslic3r/PrintConfig.cpp:2366 -#: src/libslic3r/PrintConfig.cpp:2375 src/libslic3r/PrintConfig.cpp:2384 -#: src/libslic3r/PrintConfig.cpp:2394 src/libslic3r/PrintConfig.cpp:2420 -#: src/libslic3r/PrintConfig.cpp:2427 src/libslic3r/PrintConfig.cpp:2438 -#: src/libslic3r/PrintConfig.cpp:2448 src/libslic3r/PrintConfig.cpp:2457 -#: src/libslic3r/PrintConfig.cpp:2467 src/libslic3r/PrintConfig.cpp:2476 -#: src/libslic3r/PrintConfig.cpp:2486 src/libslic3r/PrintConfig.cpp:2496 -#: src/libslic3r/PrintConfig.cpp:2504 -msgid "Supports" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:76 src/slic3r/GUI/Tab.cpp:3337 -#: src/slic3r/GUI/Tab.cpp:3338 src/libslic3r/PrintConfig.cpp:2512 -#: src/libslic3r/PrintConfig.cpp:2519 src/libslic3r/PrintConfig.cpp:2530 -#: src/libslic3r/PrintConfig.cpp:2540 src/libslic3r/PrintConfig.cpp:2553 -#: src/libslic3r/PrintConfig.cpp:2562 -msgid "Pad" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:173 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:45 -msgid "Name" -msgstr "Název" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:201 -msgid "Right button click the icon to change the object settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:209 -#, c-format -msgid "Auto-repaired (%d errors):\n" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:212 -msgid "degenerate facets" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:213 -msgid "edges fixed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:214 -msgid "facets removed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:215 -msgid "facets added" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:216 -msgid "facets reversed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:217 -msgid "backwards edges" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:231 -msgid "Right button click the icon to fix STL through Netfabb" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:278 src/slic3r/GUI/Tab.cpp:1430 -#: src/libslic3r/PrintConfig.cpp:454 -msgid "Extruder" -msgstr "Extruder" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:683 src/slic3r/GUI/GUI_ObjectList.cpp:963 -#: src/slic3r/GUI/GUI_ObjectList.cpp:969 src/slic3r/GUI/GUI_ObjectList.cpp:1199 -#, c-format -msgid "Quick Add Settings (%s)" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:746 -msgid "Select showing settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:874 -msgid "Load" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:879 src/slic3r/GUI/GUI_ObjectList.cpp:911 -#: src/slic3r/GUI/GUI_ObjectList.cpp:914 -msgid "Box" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:879 -msgid "Cylinder" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:879 -msgid "Sphere" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:879 -msgid "Slab" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:890 src/slic3r/GUI/GUI_ObjectList.cpp:906 -msgid "Add part" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:891 -msgid "Add modifier" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:892 src/slic3r/GUI/GUI_ObjectList.cpp:910 -msgid "Add support enforcer" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:893 src/slic3r/GUI/GUI_ObjectList.cpp:913 -msgid "Add support blocker" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:934 -msgid "Split to parts" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:942 -msgid "Add settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1009 -msgid "Change type" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1016 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1153 -msgid "Set as a Separated Object" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1024 -msgid "Rename" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1034 -msgid "Fix through the Netfabb" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1041 src/slic3r/GUI/Plater.cpp:2861 -msgid "Export as STL" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1048 -msgid "Change extruder" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1073 -msgid "Select new extruder for the object/part" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1079 src/slic3r/GUI/Plater.cpp:2825 -#: src/slic3r/GUI/Plater.cpp:2843 src/slic3r/GUI/Tab.cpp:2860 -msgid "Delete" -msgstr "Smazat" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1153 -msgid "Set as a Separated Objects" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1374 -msgid "Generic" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1516 -msgid "You can't delete the last solid part from object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1533 -msgid "You can't delete the last intance from object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1560 src/slic3r/GUI/Plater.cpp:2219 -msgid "" -"The selected object couldn't be split because it contains only one part." -msgstr "Vybraný objekt nemůže být rozdělen, protože obsahuje pouze jednu část." - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1676 -msgid "Group manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1688 -msgid "Object manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1698 -msgid "Object Settings to modify" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1702 -msgid "Part Settings to modify" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1711 -msgid "Part manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1717 -msgid "Instance manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2240 -msgid "Object or Instance" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2240 -msgid "Part" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2242 -msgid "Unsupported selection" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2243 -#, c-format -msgid "You started your selection with %s Item." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2244 -#, c-format -msgid "In this mode you can select only other %s Items%s" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2247 -msgid "of a current Object" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2252 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2325 src/slic3r/GUI/Plater.cpp:117 -msgid "Info" -msgstr "Info" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2366 -msgid "You can't change a type of the last solid part of the object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2373 -msgid "Select type of part" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2538 -msgid "Enter new name" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2538 -msgid "Renaming" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2554 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2632 src/slic3r/GUI/Tab.cpp:3191 -#: src/slic3r/GUI/Tab.cpp:3195 -msgid "The supplied name is not valid;" -msgstr "Zadaný název je naplatný;" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2555 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2633 src/slic3r/GUI/Tab.cpp:3192 -msgid "the following characters are not allowed:" -msgstr "následující znaky nejsou povoleny:" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2653 -msgid "Set extruder for selected items" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2654 -msgid "Select extruder number for selected objects and/or parts" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2667 -msgid "Select extruder number:" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2668 -msgid "This extruder will be set for selected items" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:25 -msgid "Object Manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:47 -msgid "Object name" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:115 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:160 -msgid "Position" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:116 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161 -msgid "Rotation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:117 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:201 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:221 -#: src/libslic3r/PrintConfig.cpp:3070 -msgid "Scale" -msgstr "Měřítko" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:162 -msgid "Scale factors" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:200 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:220 -#: src/libslic3r/PrintConfig.cpp:3055 -msgid "Rotate" -msgstr "Otočit" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:219 -msgid "Translate" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:58 -msgid "Additional Settings" -msgstr "" - -#: src/slic3r/GUI/GUI_Preview.cpp:209 -msgid "View" -msgstr "Zobrazení" - -#: src/slic3r/GUI/GUI_Preview.cpp:212 src/slic3r/GUI/GUI_Preview.cpp:525 -#: src/libslic3r/GCode/PreviewData.cpp:394 -msgid "Feature type" -msgstr "Typ" - -#: src/slic3r/GUI/GUI_Preview.cpp:213 src/libslic3r/PrintConfig.cpp:467 -msgid "Height" -msgstr "Výška" - -#: src/slic3r/GUI/GUI_Preview.cpp:214 src/libslic3r/PrintConfig.cpp:2135 -msgid "Width" -msgstr "Šířka" - -#: src/slic3r/GUI/GUI_Preview.cpp:216 -msgid "Volumetric flow rate" -msgstr "Objemový průtok" - -#: src/slic3r/GUI/GUI_Preview.cpp:217 src/slic3r/GUI/GUI_Preview.cpp:315 -#: src/slic3r/GUI/GUI_Preview.cpp:469 src/slic3r/GUI/GUI_Preview.cpp:525 -#: src/slic3r/GUI/GUI_Preview.cpp:701 src/libslic3r/GCode/PreviewData.cpp:404 -msgid "Tool" -msgstr "Nástroj" - -#: src/slic3r/GUI/GUI_Preview.cpp:218 src/slic3r/GUI/GUI_Preview.cpp:523 -#: src/libslic3r/GCode/PreviewData.cpp:406 -msgid "Color Print" -msgstr "" - -#: src/slic3r/GUI/GUI_Preview.cpp:221 -msgid "Show" -msgstr "Zobrazit" - -#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/GUI_Preview.cpp:225 -msgid "Feature types" -msgstr "Typy extruzí" - -#: src/slic3r/GUI/GUI_Preview.cpp:227 src/libslic3r/GCode/PreviewData.cpp:163 -msgid "Perimeter" -msgstr "Perimetr" - -#: src/slic3r/GUI/GUI_Preview.cpp:228 src/libslic3r/GCode/PreviewData.cpp:164 -msgid "External perimeter" -msgstr "Vnější perimetr" - -#: src/slic3r/GUI/GUI_Preview.cpp:229 src/libslic3r/GCode/PreviewData.cpp:165 -msgid "Overhang perimeter" -msgstr "Perimetr převisu" - -#: src/slic3r/GUI/GUI_Preview.cpp:230 src/libslic3r/GCode/PreviewData.cpp:166 -msgid "Internal infill" -msgstr "Vnitřní výplň" - -#: src/slic3r/GUI/GUI_Preview.cpp:231 src/libslic3r/PrintConfig.cpp:1686 -#: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/GCode/PreviewData.cpp:167 -msgid "Solid infill" -msgstr "Plná výplň" - -#: src/slic3r/GUI/GUI_Preview.cpp:232 src/libslic3r/PrintConfig.cpp:2016 -#: src/libslic3r/PrintConfig.cpp:2027 src/libslic3r/GCode/PreviewData.cpp:168 -msgid "Top solid infill" -msgstr "Výplň plných horních" - -#: src/slic3r/GUI/GUI_Preview.cpp:233 src/libslic3r/GCode/PreviewData.cpp:169 -msgid "Bridge infill" -msgstr "Výplň mostů" - -#: src/slic3r/GUI/GUI_Preview.cpp:234 src/libslic3r/PrintConfig.cpp:869 -#: src/libslic3r/GCode/PreviewData.cpp:170 -msgid "Gap fill" -msgstr "Výplň tenkých stěn" - -#: src/slic3r/GUI/GUI_Preview.cpp:235 src/slic3r/GUI/Tab.cpp:1001 -#: src/libslic3r/GCode/PreviewData.cpp:171 -msgid "Skirt" -msgstr "Obrys" - -#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/PrintConfig.cpp:1903 -#: src/libslic3r/GCode/PreviewData.cpp:173 -msgid "Support material interface" -msgstr "Kontaktní vrstvy podpor" - -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/Tab.cpp:1081 -#: src/libslic3r/GCode/PreviewData.cpp:174 -msgid "Wipe tower" -msgstr "Čistící věž" - -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/PrintConfig.cpp:2049 -msgid "Travel" -msgstr "Rychloposun" - -#: src/slic3r/GUI/GUI_Preview.cpp:244 -msgid "Retractions" -msgstr "Retrakce" - -#: src/slic3r/GUI/GUI_Preview.cpp:245 -msgid "Unretractions" -msgstr "Deretrakce" - -#: src/slic3r/GUI/GUI_Preview.cpp:246 -msgid "Shells" -msgstr "Skořápky" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 -msgid "Slic3r Prusa Edition - Keyboard Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:100 -msgid "Open project STL/OBJ/AMF/3MF with config, delete bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:101 -msgid "Import STL/OBJ/AMF/3MF without config, keep bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:102 -msgid "Load Config from .ini/amf/3mf/gcode" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 src/slic3r/GUI/Plater.cpp:725 -#: src/slic3r/GUI/Plater.cpp:3673 src/libslic3r/PrintConfig.cpp:2957 -msgid "Export G-code" -msgstr "Exportovat G-kód" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:104 -msgid "Save project (3MF)" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 -msgid "Load Config from .ini/amf/3mf/gcode and merge" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 -msgid "(Re)slice" -msgstr "znovu slicovat" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 -msgid "Quick slice" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 src/slic3r/GUI/MainFrame.cpp:326 -msgid "Repeat last quick slice" -msgstr "Opakovat poslední rychlé slicování" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 -msgid "Select Plater Tab" -msgstr "Zobrazit panel Podložka" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:110 -msgid "Quick slice and Save as" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 -msgid "Select Print Settings Tab" -msgstr "Zobrazit panel Nastavení tisku" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 -msgid "Select Filament Settings Tab" -msgstr "Zobrazit panel Nastavení filamentu" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 -msgid "Select Printer Settings Tab" -msgstr "Zobrazit panel Nastavení tiskárny" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 -msgid "Switch to 3D" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 -msgid "Switch to Preview" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Preferences.cpp:10 -msgid "Preferences" -msgstr "Nastavení" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 -#: src/slic3r/GUI/PrintHostDialogs.cpp:134 -msgid "Print host upload queue" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 -msgid "Camera view " -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 -msgid "Add Instance to selected object " -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 -msgid "Remove Instance from selected object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 -msgid "Show keyboard shortcuts list" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 -msgid "Select multiple object/Move multiple object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 -msgid "Main Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:130 -msgid "Arrange" -msgstr "Uspořádat" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:131 -msgid "Select All objects" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 -msgid "Delete selected" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 -msgid "Delete All" -msgstr "Smazat Vše" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 -msgid "Gizmo move" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 -msgid "Gizmo scale" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 -msgid "Gizmo rotate" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 -msgid "Gizmo cut" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 -msgid "Gizmo Place face on bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 -msgid "Gizmo SLA support points" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 -#, no-c-format -msgid "" -"Press to snap by 5% in Gizmo scale\n" -"or by 1mm in Gizmo move" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 -msgid "" -"Press to scale or rotate selected objects\n" -"around their own center" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 -msgid "Zoom to Bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 -msgid "Zoom to all objects in scene, if none selected" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 -msgid "Zoom to selected object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 -msgid "Zoom in" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 -msgid "Zoom out" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:147 -msgid "Unselect gizmo, keep object selection" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 -msgid "Plater Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 -msgid "Arrow Up" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 -msgid "Upper Layer" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 -msgid "Arrow Down" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 -msgid "Lower Layer" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 -msgid "Preview Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 -msgid "Move current slider thump Up" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 -msgid "Move current slider thump Down" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 -msgid "Arrow Left" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 -msgid "Set upper thumb to current slider thumb" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 -msgid "Arrow Right" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 -msgid "Set lower thumb to current slider thumb" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 -msgid "Add color change marker for current layer" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 -msgid "Delete color change marker for current layer" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 -msgid "Layers Slider Shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:54 -msgid "" -" - Remember to check for updates at http://github.com/prusa3d/slic3r/releases" -msgstr "" -" - Nezapomeňte zkontrolovat aktualizace na http://github.com/prusa3d/slic3r/" -"releases" - -#: src/slic3r/GUI/MainFrame.cpp:160 -msgid "Plater" -msgstr "Podložka" - -#: src/slic3r/GUI/MainFrame.cpp:273 -msgid "&Open Project" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:273 -msgid "Open a project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:275 -msgid "&Save Project" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:275 -msgid "Save current project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:277 -msgid "Save Project &as" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:277 -msgid "Save current project file as" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:283 -msgid "Import STL/OBJ/AM&F/3MF" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:283 -msgid "Load a model" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:286 -msgid "Import &Config" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:286 -msgid "Load exported configuration file" -msgstr "Načíst exportovaný konfigurační soubor" - -#: src/slic3r/GUI/MainFrame.cpp:288 -msgid "Import Config from &project" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:288 -msgid "Load configuration from project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:291 -msgid "Import Config &Bundle" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:291 -msgid "Load presets from a bundle" -msgstr "Načíst přednastavení z balíku" - -#: src/slic3r/GUI/MainFrame.cpp:293 -msgid "&Import" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:296 -msgid "Export &G-code" -msgstr "Exportovat &G-kód" - -#: src/slic3r/GUI/MainFrame.cpp:296 -msgid "Export current plate as G-code" -msgstr "Exportovat stávající plochu do G-code" - -#: src/slic3r/GUI/MainFrame.cpp:299 -msgid "Export plate as &STL" -msgstr "Exportovat plochu jako &STL" - -#: src/slic3r/GUI/MainFrame.cpp:299 -msgid "Export current plate as STL" -msgstr "Exportovat stávající plochu jako STL" - -#: src/slic3r/GUI/MainFrame.cpp:301 -msgid "Export plate as &AMF" -msgstr "Exportovat plochu jako &AMF" - -#: src/slic3r/GUI/MainFrame.cpp:301 -msgid "Export current plate as AMF" -msgstr "Exportovat stávající plochu jako AMF" - -#: src/slic3r/GUI/MainFrame.cpp:304 -msgid "Export &Config" -msgstr "Exportovat &Konfiguraci" - -#: src/slic3r/GUI/MainFrame.cpp:304 -msgid "Export current configuration to file" -msgstr "Exportovat současnou konfiguraci do souboru" - -#: src/slic3r/GUI/MainFrame.cpp:306 -msgid "Export Config &Bundle" -msgstr "Exportovat Konfigurační &Balík" - -#: src/slic3r/GUI/MainFrame.cpp:306 -msgid "Export all presets to file" -msgstr "Exportovat všechna přednastavení do souboru" - -#: src/slic3r/GUI/MainFrame.cpp:308 -msgid "&Export" -msgstr "&Exportovat" - -#: src/slic3r/GUI/MainFrame.cpp:314 -msgid "Quick Slice" -msgstr "Rychlé Slicování" - -#: src/slic3r/GUI/MainFrame.cpp:314 -msgid "Slice a file into a G-code" -msgstr "Slicovat soubor do G-code" - -#: src/slic3r/GUI/MainFrame.cpp:320 -msgid "Quick Slice and Save As" -msgstr "Rychlé Slicování a Uložit jako" - -#: src/slic3r/GUI/MainFrame.cpp:320 -msgid "Slice a file into a G-code, save as" -msgstr "Slicovat soubor do G-code, uložit jako" - -#: src/slic3r/GUI/MainFrame.cpp:326 -msgid "Repeat Last Quick Slice" -msgstr "Opakovat Poslední Slicování" - -#: src/slic3r/GUI/MainFrame.cpp:334 -msgid "(Re)Slice &Now" -msgstr "(Z&novu)Slicovat" - -#: src/slic3r/GUI/MainFrame.cpp:334 -msgid "Start new slicing process" -msgstr "Zahájit nový slicovací proces" - -#: src/slic3r/GUI/MainFrame.cpp:337 -msgid "&Repair STL file" -msgstr "Op&ravit soubor STL" - -#: src/slic3r/GUI/MainFrame.cpp:337 -msgid "Automatically repair an STL file" -msgstr "Automaticky opravit STL soubor" - -#: src/slic3r/GUI/MainFrame.cpp:340 -msgid "&Quit" -msgstr "U&končit" - -#: src/slic3r/GUI/MainFrame.cpp:340 -msgid "Quit Slic3r" -msgstr "Ukončit Slic3r" - -#: src/slic3r/GUI/MainFrame.cpp:374 -msgid "&Select all" -msgstr "&Vybrat vše" - -#: src/slic3r/GUI/MainFrame.cpp:374 -msgid "Selects all objects" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:377 -msgid "&Delete selected" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:377 -msgid "Deletes the current selection" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:379 -msgid "Delete &all" -msgstr "&Smazat Vše" - -#: src/slic3r/GUI/MainFrame.cpp:379 -msgid "Deletes all objects" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:392 -msgid "&Plater Tab" -msgstr "Panel &Podložka" - -#: src/slic3r/GUI/MainFrame.cpp:392 -msgid "Show the plater" -msgstr "Zobrazit podložku" - -#: src/slic3r/GUI/MainFrame.cpp:399 -msgid "P&rint Settings Tab" -msgstr "Panel Nastavení t&isku" - -#: src/slic3r/GUI/MainFrame.cpp:399 -msgid "Show the print settings" -msgstr "Zobrazit nastavení tisku" - -#: src/slic3r/GUI/MainFrame.cpp:401 -msgid "&Filament Settings Tab" -msgstr "Panel Nastavení &filamentu" - -#: src/slic3r/GUI/MainFrame.cpp:401 -msgid "Show the filament settings" -msgstr "Zobrazit nastavení filamentu" - -#: src/slic3r/GUI/MainFrame.cpp:403 -msgid "Print&er Settings Tab" -msgstr "Panel Nastavení &tiskárny" - -#: src/slic3r/GUI/MainFrame.cpp:403 -msgid "Show the printer settings" -msgstr "Zobrazit nastavení tiskárny" - -#: src/slic3r/GUI/MainFrame.cpp:407 -msgid "3&D" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:407 -msgid "Show the 3D editing view" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:409 -msgid "Pre&view" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:409 -msgid "Show the 3D slices preview" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:430 -msgid "Print &Host Upload Queue" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:430 -msgid "Display the Print Host Upload Queue window" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:439 -msgid "Iso" -msgstr "Iso" - -#: src/slic3r/GUI/MainFrame.cpp:439 -msgid "Iso View" -msgstr "Izometrické zobrazení" - -#: src/slic3r/GUI/MainFrame.cpp:441 -msgid "Top" -msgstr "Svrchu" - -#: src/libslic3r/PrintConfig.cpp:2041 -msgctxt "Layers" -msgid "Top" -msgstr "Horních" - -#: src/slic3r/GUI/MainFrame.cpp:441 -msgid "Top View" -msgstr "Pohled svrchu" - -#: src/slic3r/GUI/MainFrame.cpp:442 -msgid "Bottom" -msgstr "Zespod" - -#: src/libslic3r/PrintConfig.cpp:148 -msgctxt "Layers" -msgid "Bottom" -msgstr "Spodních" - -#: src/slic3r/GUI/MainFrame.cpp:442 -msgid "Bottom View" -msgstr "Pohled zespod" - -#: src/slic3r/GUI/MainFrame.cpp:443 -msgid "Front" -msgstr "Zepředu" - -#: src/slic3r/GUI/MainFrame.cpp:443 -msgid "Front View" -msgstr "Pohled zepředu" - -#: src/slic3r/GUI/MainFrame.cpp:444 src/libslic3r/PrintConfig.cpp:1561 -msgid "Rear" -msgstr "Zezadu" - -#: src/slic3r/GUI/MainFrame.cpp:444 -msgid "Rear View" -msgstr "Pohled zezadu" - -#: src/slic3r/GUI/MainFrame.cpp:445 -msgid "Left" -msgstr "Zleva" - -#: src/slic3r/GUI/MainFrame.cpp:445 -msgid "Left View" -msgstr "Pohled zleva" - -#: src/slic3r/GUI/MainFrame.cpp:446 -msgid "Right" -msgstr "Zprava" - -#: src/slic3r/GUI/MainFrame.cpp:446 -msgid "Right View" -msgstr "Pohled zprava" - -#: src/slic3r/GUI/MainFrame.cpp:460 -msgid "Prusa 3D &Drivers" -msgstr "Prusa 3D &Ovladače" - -#: src/slic3r/GUI/MainFrame.cpp:460 -msgid "Open the Prusa3D drivers download page in your browser" -msgstr "Otevřít stránku pro stahování Prusa 3D ovladačů ve vašem prohlížeči" - -#: src/slic3r/GUI/MainFrame.cpp:462 -msgid "Prusa Edition &Releases" -msgstr "&Vydání Prusa Edice" - -#: src/slic3r/GUI/MainFrame.cpp:462 -msgid "Open the Prusa Edition releases page in your browser" -msgstr "Otavřít stránku vydání Prusa Edice ve vašem prohlížeči" - -#: src/slic3r/GUI/MainFrame.cpp:468 -msgid "Slic3r &Website" -msgstr "Slic3r &Webová stránka" - -#: src/slic3r/GUI/MainFrame.cpp:468 -msgid "Open the Slic3r website in your browser" -msgstr "Otevřít webovou stránku Slic3ru ve vašem prohlížeči" - -#: src/slic3r/GUI/MainFrame.cpp:470 -msgid "Slic3r &Manual" -msgstr "Slic3r &návod" - -#: src/slic3r/GUI/MainFrame.cpp:470 -msgid "Open the Slic3r manual in your browser" -msgstr "Otevřít Slic3r návod ve vašem prohlížeči" - -#: src/slic3r/GUI/MainFrame.cpp:473 -msgid "System &Info" -msgstr "&Informace o systému" - -#: src/slic3r/GUI/MainFrame.cpp:473 -msgid "Show system information" -msgstr "Zobrazit systémové informace" - -#: src/slic3r/GUI/MainFrame.cpp:475 -msgid "Show &Configuration Folder" -msgstr "Otevřít &adresář nastavení" - -#: src/slic3r/GUI/MainFrame.cpp:475 -msgid "Show user configuration folder (datadir)" -msgstr "Zobrazit uživatelský adresář konfigurace (datadir)" - -#: src/slic3r/GUI/MainFrame.cpp:477 -msgid "Report an I&ssue" -msgstr "Nahlásit &chybu" - -#: src/slic3r/GUI/MainFrame.cpp:477 -msgid "Report an issue on the Slic3r Prusa Edition" -msgstr "Nahlásit chybu ve Slic3eru Prusa Edice" +#: src/slic3r/GUI/MsgDialog.cpp:73 +#, possible-c-format +msgid "%s error" +msgstr "%s chyba" + +#: src/slic3r/GUI/ConfigWizard.cpp:336 +#, possible-c-format +msgid "%s Family" +msgstr "%s Rodina" + +#: src/slic3r/GUI/MsgDialog.cpp:74 +#, possible-c-format +msgid "%s has encountered an error" +msgstr "Došlo k chybě v programu %s" + +#: src/slic3r/GUI/UpdateDialogs.cpp:112 +#, possible-c-format +msgid "%s incompatibility" +msgstr "Není kompatibilní s %s" + +#: src/slic3r/GUI/UpdateDialogs.cpp:172 +#, possible-c-format +msgid "%s now uses an updated configuration structure.\n\nSo called 'System presets' have been introduced, which hold the built-in default settings for various printers. These System presets cannot be modified, instead, users now may create their own presets inheriting settings from one of the System presets.\nAn inheriting preset may either inherit a particular value from its parent or override it with a customized value.\n\nPlease proceed with the %s that follows to set up the new presets and to choose whether to enable automatic preset updates." +msgstr "%s nyní používá aktualizovanou konfigurační strukturu.\n\nByly uvedeny takzvaná \"Systémová přednastavení\", která obsahují výchozí nastavení pro rozličné tiskárny. Tato systémová přednastavení nemohou být upravena, místo toho si nyní uživatel může vytvořit svá vlastní přednastavení tím, že zdědí nastavení z jednoho ze systémových přednastavení.\nNově vytvořené přednastavení může buď zdědit určitou hodnotu od svého předchůdce nebo ji přepsat upravenou hodnotou.\n\nPři nastavování nových předvoleb postupujte podle pokynů v %s a vyberte, zda chcete povolit automatické přednastavené aktualizace." + +#: src/slic3r/GUI/GUI_App.cpp:681 +#, possible-c-format +msgid "%s View Mode" +msgstr "%s Režim zobrazení" + +#: src/slic3r/GUI/MainFrame.cpp:563 +#, possible-c-format +msgid "&About %s" +msgstr "O %s" #: src/slic3r/GUI/MainFrame.cpp:479 msgid "&About Slic3r" msgstr "&O Slic3ru" -#: src/slic3r/GUI/MainFrame.cpp:479 -msgid "Show about dialog" -msgstr "Zobrazit okno o Slic3ru" +#: src/slic3r/GUI/GUI_App.cpp:769 +msgid "&Configuration" +msgstr "&Konfigurace" -#: src/slic3r/GUI/MainFrame.cpp:482 -msgid "Keyboard Shortcuts" -msgstr "" +#: src/slic3r/GUI/GUI_App.cpp:661 +msgid "&Configuration Snapshots" +msgstr "Záloha konfigura&ce" -#: src/slic3r/GUI/MainFrame.cpp:482 -msgid "Show the list of the keyboard shortcuts" -msgstr "" +#: src/slic3r/GUI/MainFrame.cpp:454 +msgid "&Copy" +msgstr "Kopírovat" -#: src/slic3r/GUI/MainFrame.cpp:490 +#: src/slic3r/GUI/MainFrame.cpp:447 +msgid "&Delete selected" +msgstr "&Smazat vybrané" + +#: src/slic3r/GUI/MainFrame.cpp:575 +msgid "&Edit" +msgstr "&Editovat" + +#: src/slic3r/GUI/MainFrame.cpp:377 +msgid "&Export" +msgstr "&Exportovat" + +#: lib/Slic3r/GUI/MainFrame.pm:227 +msgid "&Export Config Bundle…" +msgstr "&Exportovat Konfigurační Balík…" + +#: lib/Slic3r/GUI/MainFrame.pm:221 +msgid "&Export Config…\tCtrl+E" +msgstr "&Exportovat Konfiguraci…\tCtrl+E" + +#: src/slic3r/GUI/MainFrame.cpp:480 src/slic3r/GUI/MainFrame.cpp:604 +msgid "&Filament Settings Tab" +msgstr "Panel nastavení &filamentu" + +#: src/slic3r/GUI/MainFrame.cpp:574 msgid "&File" msgstr "&Soubor" -#: src/slic3r/GUI/MainFrame.cpp:491 -msgid "&Edit" -msgstr "" +#: src/slic3r/GUI/ConfigWizard.cpp:1094 +msgid "&Finish" +msgstr "&Dokončit" -#: src/slic3r/GUI/MainFrame.cpp:492 -msgid "&Window" -msgstr "&Okno" - -#: src/slic3r/GUI/MainFrame.cpp:493 -msgid "&View" -msgstr "&Zobrazení" - -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:580 msgid "&Help" msgstr "&Pomoc" -#: src/slic3r/GUI/MainFrame.cpp:524 -msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Zvolit soubor ke slicování (STL/OBJ/AMF/3MF/PRUSA):" +#: src/slic3r/GUI/MainFrame.cpp:359 +msgid "&Import" +msgstr "&Importovat" -#: src/slic3r/GUI/MainFrame.cpp:538 -msgid "No previously sliced file." -msgstr "Žádné dříve slicované soubory." +#: lib/Slic3r/GUI/MainFrame.pm:224 +msgid "&Load Config Bundle…" +msgstr "&Načíst Konfigurační Balík…" -#: src/slic3r/GUI/MainFrame.cpp:539 src/slic3r/GUI/PrintHostDialogs.cpp:219 -msgid "Error" -msgstr "Chyba" +#: lib/Slic3r/GUI/MainFrame.pm:218 +msgid "&Load Config…\tCtrl+L" +msgstr "&Načíst Konfiguraci…\tCtrl+L" -#: src/slic3r/GUI/MainFrame.cpp:544 -msgid "Previously sliced file (" -msgstr "Dříve slicovaný soubor (" +#: src/slic3r/GUI/ConfigWizard.cpp:1093 +msgid "&Next >" +msgstr "&Další>" -#: src/slic3r/GUI/MainFrame.cpp:544 +#: lib/Slic3r/GUI/MainFrame.pm:376 +msgid "&Object" +msgstr "&Objekt" + +#: src/slic3r/GUI/MainFrame.cpp:339 +msgid "&Open Project" +msgstr "&Otevřít projekt" + +#: src/slic3r/GUI/MainFrame.cpp:456 +msgid "&Paste" +msgstr "Vložit" + +#: lib/Slic3r/GUI/MainFrame.pm:375 +msgid "&Plater" +msgstr "&Podložka" + +#: src/slic3r/GUI/MainFrame.cpp:471 +msgid "&Plater Tab" +msgstr "&Panel Podložka" + +#: src/slic3r/GUI/GUI_App.cpp:665 +msgid "&Preferences" +msgstr "Nastavení" + +#: src/slic3r/GUI/MainFrame.cpp:409 +msgid "&Quit" +msgstr "&Ukončit" + +#: src/slic3r/GUI/MainFrame.cpp:406 +msgid "&Repair STL file" +msgstr "Op&ravit soubor STL" + +#: lib/Slic3r/GUI/MainFrame.pm:244 +msgid "&Repeat Last Quick Slice\tCtrl+Shift+U" +msgstr "&Opakovat Poslední Slicování\tCtrl+Shift+U" + +#: src/slic3r/GUI/MainFrame.cpp:341 +msgid "&Save Project" +msgstr "Uložit projekt" + +#: src/slic3r/GUI/MainFrame.cpp:444 +msgid "&Select all" +msgstr "Vybrat vše" + +#: src/slic3r/GUI/MainFrame.cpp:577 +msgid "&View" +msgstr "&Zobrazení" + +#: src/slic3r/GUI/MainFrame.cpp:576 +msgid "&Window" +msgstr "&Okno" + +#: lib/Slic3r/GUI/MainFrame.pm:255 +msgid "(&Re)Slice Now\tCtrl+S" +msgstr "(&Znovu)Slicovat\tCtrl+S" + +#: xs/src/slic3r/GUI/ConfigWizard.cpp:89 +msgid "(default)" +msgstr "(výchozí)" + +#: src/libslic3r/PrintConfig.cpp:1376 +msgid "(minimum)" +msgstr "(minimálně)" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 +msgid "(Re)slice" +msgstr "(Znovu)Slicovat" + +#: src/slic3r/GUI/MainFrame.cpp:403 +msgid "(Re)Slice &Now" +msgstr "(Z&novu)Slicovat" + +#: src/slic3r/GUI/MainFrame.cpp:641 msgid ") not found." msgstr ") nebyl nalezen." -#: src/slic3r/GUI/MainFrame.cpp:545 +#: src/slic3r/GUI/GUI_App.cpp:789 +msgid ". Discard changes and continue anyway?" +msgstr ". Pokračovat i přes zahození změn?" + +#: lib/Slic3r/GUI/Plater/3DPreview.pm:69 +msgid "1 Layer" +msgstr "1 Vrstva" + +#: lib/Slic3r/GUI/Plater.pm:206 +msgid "2D" +msgstr "2D" + +#: src/slic3r/GUI/MainFrame.cpp:487 +msgid "3&D" +msgstr "3&D" + +#: lib/Slic3r/GUI/Plater.pm:164 lib/Slic3r/GUI/Plater.pm:2323 +msgid "3D" +msgstr "3D" + +#: src/libslic3r/PrintConfig.cpp:804 +msgid "3D Honeycomb" +msgstr "3D Plástev" + +#: src/slic3r/GUI/GUI_App.cpp:741 +msgid "3D-Scene will be cleaned." +msgstr "3D-scéna bude smazána." + +#: lib/Slic3r/GUI/Plater.pm:1756 +msgid "3MF file exported to " +msgstr "Soubor 3MF byl exportován do " + +#: src/slic3r/GUI/Plater.cpp:3590 +#, possible-c-format +msgid "3MF file exported to %s" +msgstr "Soubor 3MF byl exportován do %s" + +#: lib/Slic3r/GUI/Plater.pm:258 +msgid "45° ccw" +msgstr "45° doleva" + +#: lib/Slic3r/GUI/Plater.pm:259 +msgid "45° cw" +msgstr "45° doprava" + +#: src/slic3r/GUI/ConfigWizard.cpp:1092 +msgid "< &Back" +msgstr "<&Zpět" + +#: src/libslic3r/PrintConfig.cpp:251 +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." +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." + +#: src/libslic3r/PrintConfig.cpp:236 +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." +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." + +#: src/slic3r/GUI/ConfigWizard.cpp:609 +msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." +msgstr "Obecným pravidlem je 160 až 230° pro PLA a 215 až 250° pro ABS." + +#: src/slic3r/GUI/ConfigWizard.cpp:623 +msgid "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have no heated bed." +msgstr "Obecným pravidlem je 160 až 230° pro PLA a 215 až 250° pro ABS. Zadejte nula, pokud nemáte vyhřívanou podložku." + +#: src/libslic3r/SLA/SLASupportTree.cpp:2162 +msgid "Abort" +msgstr "Přerušit" + +#: src/slic3r/GUI/AboutDialog.cpp:35 +#, possible-c-format +msgid "About %s" +msgstr "O %s" + +#: src/slic3r/GUI/AboutDialog.cpp:35 +msgid "About Slic3r" +msgstr "O Slic3ru" + +#: src/libslic3r/GCode/PreviewData.cpp:499 +#, possible-c-format +msgid "above %.2f mm" +msgstr "nad %.2f mm" + +#: src/libslic3r/PrintConfig.cpp:1499 +msgid "Above Z" +msgstr "Nad Z" + +#: src/slic3r/GUI/Tab.cpp:1103 +msgid "Acceleration control (advanced)" +msgstr "Kontrola akcelerací (pokročilé)" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:73 +msgid "Activate" +msgstr "Aktivovat" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:39 +msgid "Active: " +msgstr "Aktivní: " + +#: src/slic3r/GUI/Preset.cpp:1003 src/slic3r/GUI/Tab.cpp:237 +msgid "Add a new printer" +msgstr "Přidat novou tiskárnu" + +#: src/libslic3r/PrintConfig.cpp:2517 +msgid "Add a pad underneath the supported model" +msgstr "Pod podepíraný model přidá podložku" + +#: src/libslic3r/PrintConfig.cpp:1971 +msgid "Add a sheath (a single perimeter line) around the base support. This makes the support more reliable, but also more difficult to remove." +msgstr "Přidá pouzdro (jednu obvodovou čáru) kolem podpěr. Díky tomu je podpora spolehlivější, ale také obtížnější na odstranění." + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:186 +msgid "Add color change marker for current layer" +msgstr "Přidat značku změny barvy pro aktuální vrstvu" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +msgid "Add Instance to selected object " +msgstr "Přidat instanci vybraného objektu" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1067 +msgid "Add modifier" +msgstr "Přidat modifikátor" + +#: src/libslic3r/PrintConfig.cpp:447 +#, no-c-format +msgid "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r keeps adding perimeters, until more than 70% of the loop immediately above is supported." +msgstr "Přidání více perimetrů, pokud je potřeba, pro vyvarování se tvorbě mezer v šikmých plochách. Slic3r pokračuje v přidávání perimetrů, dokud není podepřeno více než 70% perimetrů v následující vrstvě." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1066 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1082 +msgid "Add part" +msgstr "Přidat díl" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1229 +msgid "Add point" +msgstr "Přidat bod" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1232 +msgid "Add point to selection" +msgstr "Přidat bod k výběru" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1118 +msgid "Add settings" +msgstr "Přidat nastavení" + +#: src/libslic3r/PrintConfig.cpp:382 +msgid "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)." +msgstr "Přidá plnou výplň u šikmých ploch pro garanci tloušťky svislých stěn (vrchních a spodních plných vrstev)." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1069 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1089 +msgid "Add support blocker" +msgstr "Přidat blokátor podpěr" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1068 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1086 +msgid "Add support enforcer" +msgstr "Přidat vynucení podpěr" + +#: src/slic3r/GUI/Tab.cpp:920 +msgid "Additional information:" +msgstr "Doplňující informace:" + +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:58 +msgid "Additional Settings" +msgstr "Další nastavení" + +#: src/slic3r/GUI/ConfigWizard.cpp:431 +msgid "Additionally a backup snapshot of the whole configuration is created before an update is applied." +msgstr "Dále je před nainstalováním aktualizace vytvořena záloha veškerého nastavení." + +#: src/slic3r/GUI/BonjourDialog.cpp:72 +msgid "Address" +msgstr "Adresa" + +#: lib/Slic3r/GUI/Plater.pm:250 lib/Slic3r/GUI/Plater.pm:268 +msgid "Add…" +msgstr "Přidat…" + +#: src/slic3r/GUI/GUI_App.cpp:675 src/slic3r/GUI/GUI_ObjectList.cpp:76 +#: src/slic3r/GUI/GUI_ObjectList.cpp:517 src/slic3r/GUI/Tab.cpp:1026 +#: src/slic3r/GUI/Tab.cpp:1041 src/slic3r/GUI/Tab.cpp:1139 +#: src/slic3r/GUI/Tab.cpp:1142 src/slic3r/GUI/Tab.cpp:1515 +#: src/slic3r/GUI/Tab.cpp:1940 src/slic3r/GUI/Tab.cpp:3435 +#: src/slic3r/GUI/wxExtensions.cpp:2460 src/libslic3r/PrintConfig.cpp:72 +#: src/libslic3r/PrintConfig.cpp:187 src/libslic3r/PrintConfig.cpp:350 +#: src/libslic3r/PrintConfig.cpp:988 src/libslic3r/PrintConfig.cpp:2175 +msgid "Advanced" +msgstr "Pokročilý" + +#: src/slic3r/GUI/GUI_App.cpp:675 +msgid "Advanced View Mode" +msgstr "Pokročilý režim" + +#: xs/src/slic3r/GUI/FirmwareDialog.cpp:400 +msgid "Advanced: avrdude output log" +msgstr "Pokročilé: výstupní log avrdude" + +#: src/slic3r/GUI/FirmwareDialog.cpp:803 +msgid "Advanced: Output log" +msgstr "Pokročilý:  Výstupní log" + +#: src/libslic3r/PrintConfig.cpp:636 +msgid "After a tool change, the exact position of the newly loaded filament inside the nozzle may not be known, and the filament pressure is likely not yet stable. Before purging the print head into an infill or a sacrificial object, Slic3r will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." +msgstr "Po výměně nástroje nemusí být známa přesná poloha nově zavedeného filamentu uvnitř trysky a tlak filamentu pravděpodobně ještě není stabilní. Před vyčištěním tiskové hlavy do výplně nebo do objektu bude Slic3r toto množství materiálu vždy vytlačovat do čistící věže, aby se spolehlivě vytvořily následné výplně nebo objekty." + +#: src/slic3r/GUI/Tab.cpp:1967 src/libslic3r/PrintConfig.cpp:1031 +msgid "After layer change G-code" +msgstr "G-code po změně vrstvy" + +#: src/libslic3r/PrintConfig.cpp:3009 +msgid "Align the model to the given point." +msgstr "Zarovnejte model s daným bodem." + +#: src/libslic3r/PrintConfig.cpp:3008 +msgid "Align XY" +msgstr "Zarovnat XY" + +#: src/libslic3r/PrintConfig.cpp:1561 +msgid "Aligned" +msgstr "Zarovnaný" + +#: src/slic3r/GUI/ConfigWizard.cpp:189 src/slic3r/GUI/Tab.cpp:2986 +msgid "All" +msgstr "Všechny" + +#: src/libslic3r/Print.cpp:1195 +msgid "All extruders must have the same diameter for single extruder multimaterial printer." +msgstr "Všechny průměry trysek musí být pro multimateriálovou tiskárnu s jedním extrudérem stejné." + +#: src/libslic3r/Print.cpp:1135 +msgid "All objects are outside of the print volume." +msgstr "Všechny objekty jsou mimo tiskový prostor." + +#: src/slic3r/GUI/Plater.cpp:3298 +msgid "All objects will be removed, continue ?" +msgstr "Všechny objekty budou obebrány, pokračovat?" + +#: src/slic3r/GUI/ConfigWizard.cpp:188 +msgid "All standard" +msgstr "Všechny běžné" + +#: src/libslic3r/Zipper.cpp:65 +msgid "allocation failed" +msgstr "alokace selhala" + +#: src/slic3r/GUI/Plater.cpp:2939 +msgid "Along X axis" +msgstr "Podél osy X" + +#: lib/Slic3r/GUI/Plater.pm:2251 lib/Slic3r/GUI/Plater.pm:2267 +#: lib/Slic3r/GUI/Plater.pm:2283 +msgid "Along X axis…" +msgstr "Podél osy X…" + +#: src/slic3r/GUI/Plater.cpp:2941 +msgid "Along Y axis" +msgstr "Podél osy Y" + +#: lib/Slic3r/GUI/Plater.pm:2254 lib/Slic3r/GUI/Plater.pm:2270 +#: lib/Slic3r/GUI/Plater.pm:2286 +msgid "Along Y axis…" +msgstr "Podél osy Y…" + +#: src/slic3r/GUI/Plater.cpp:2943 +msgid "Along Z axis" +msgstr "Podél osy Z" + +#: lib/Slic3r/GUI/Plater.pm:2257 lib/Slic3r/GUI/Plater.pm:2273 +#: lib/Slic3r/GUI/Plater.pm:2289 +msgid "Along Z axis…" +msgstr "Podél osy Z…" + +#: src/slic3r/GUI/ConfigWizard.cpp:122 +msgid "Alternate nozzles:" +msgstr "Alternativní trysky:" + +#: lib/Slic3r/GUI/Plater.pm:1740 +msgid "AMF file exported to " +msgstr "Soubor AMF byl exportován do " + +#: src/slic3r/GUI/Plater.cpp:3561 +#, possible-c-format +msgid "AMF file exported to %s" +msgstr "Soubor AMF byl exportován do %s" + +#: src/slic3r/GUI/Tab.cpp:2781 +msgid "and it has the following unsaved changes:" +msgstr "a má neuložené následující změny:" + +#: src/slic3r/GUI/Plater.cpp:2461 +msgid "Another export job is currently running." +msgstr "V současné době běží jiná úloha exportu." + +#: src/slic3r/GUI/Tab.cpp:915 +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. " + +#: xs/src/libslic3r/PrintConfig.cpp:1109 +msgid "API Key" +msgstr "Klíč API" + +#: src/libslic3r/PrintConfig.cpp:88 +msgid "API Key / Password" +msgstr "API klíč / Heslo" + +#: src/slic3r/GUI/GUI_App.cpp:671 +msgid "Application preferences" +msgstr "Nastavení aplikace" + +#: xs/src/slic3r/GUI/GUI.cpp:406 +msgid "Application will be restarted" +msgstr "Aplikace bude restartována" + +#: src/slic3r/GUI/GUI_App.cpp:740 +msgid "Application will be restarted after language change." +msgstr "Aplikace bude po změně jazyka restartována." + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:864 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1240 +msgid "Apply changes" +msgstr "Aplikovat změny" + +#: src/libslic3r/PrintConfig.cpp:542 src/libslic3r/PrintConfig.cpp:1638 +msgid "approximate seconds" +msgstr "vteřin přibližně" + +#: src/libslic3r/PrintConfig.cpp:401 src/libslic3r/PrintConfig.cpp:807 +msgid "Archimedean Chords" +msgstr "Archimedean Chords" + +#: src/libslic3r/Zipper.cpp:91 +msgid "archive is too large" +msgstr "archiv je moc velký" + +#: src/slic3r/GUI/Tab.cpp:2936 +msgid "Are you sure you want to " +msgstr "Jste si jistý že chcete " + +#: src/slic3r/GUI/FirmwareDialog.cpp:862 +msgid "Are you sure you want to cancel firmware flashing?\nThis could leave your printer in an unusable state!" +msgstr "Opravdu chcete ukončit nahrávání firmware?\nTiskárna může zůstat v nefunkčním stavu!" + +#: src/libslic3r/PrintConfig.cpp:2258 +msgid "Area fill" +msgstr "Zaplněná plocha" + +#: lib/Slic3r/GUI/Plater.pm:2238 +msgid "Around X axis…" +msgstr "Okolo osy X…" + +#: lib/Slic3r/GUI/Plater.pm:2241 +msgid "Around Y axis…" +msgstr "Okolo osy Y…" + +#: lib/Slic3r/GUI/Plater.pm:2244 +msgid "Around Z axis…" +msgstr "Okolo osy Z…" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 +msgid "Arrange" +msgstr "Uspořádat" + +#: src/libslic3r/PrintConfig.cpp:3054 +msgid "Arrange the supplied models in a plate and merge them in a single model in order to perform actions once." +msgstr "Uspořádejte modely na tiskovou podložku a slučte je do jednoho modelu, abyste s nimi mohli provádět akce jednou." + +#: src/slic3r/GUI/Plater.cpp:2106 +msgid "Arranging" +msgstr "Uspořádávání" + +#: src/slic3r/GUI/Plater.cpp:2103 +msgid "Arranging canceled" +msgstr "Uspořádávání bylo zrušeno" + +#: src/slic3r/GUI/Plater.cpp:2144 +msgid "Arranging done." +msgstr "Uspořádávání dokončeno." + +#: src/slic3r/GUI/GUI_App.cpp:514 +msgid "Array of language names and identifiers should have the same size." +msgstr "Pole jazykových jmen a identifikátorů by měla mít stejnou velikost." + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 +msgid "Arrow Down" +msgstr "Šipka dolů" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 +msgid "Arrow Left" +msgstr "Šipka vlevo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 +msgid "Arrow Right" +msgstr "Šipka vpravo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +msgid "Arrow Up" +msgstr "Šipka nahoru" + +#: xs/src/slic3r/GUI/GUI.cpp:660 +msgid "Attempt to free unreferenced scalar" +msgstr "Attempt to free unreferenced scalar" + +#: src/slic3r/GUI/GUI.cpp:144 src/slic3r/GUI/GUI_App.cpp:743 +#: src/slic3r/GUI/Tab.cpp:2798 +msgid "Attention!" +msgstr "Pozor!" + +#: src/libslic3r/PrintConfig.cpp:1785 +msgid "Auto generated supports" +msgstr "Automaticky generované podpěry" + +#: src/slic3r/GUI/Preferences.cpp:44 +msgid "Auto-center parts" +msgstr "Auto-centrování objektů" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:902 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1243 +msgid "Auto-generate points" +msgstr "Automatické generování bodů" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:669 +msgid "Auto-generate points [A]" +msgstr "Automatické generování bodů [A]" + +#: src/slic3r/GUI/Plater.cpp:979 +#, possible-c-format +msgid "Auto-repaired (%d errors)" +msgstr "Automaticky opraveno (%d chyb)" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:230 +#, possible-c-format +msgid "Auto-repaired (%d errors):\n" +msgstr "Automaticky opraveno ( %d chyb):\n" + +#: src/slic3r/GUI/FirmwareDialog.cpp:771 +msgid "Autodetected" +msgstr "Automaticky detekováno" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1166 +msgid "Autogeneration will erase all manually edited points.\n\nAre you sure you want to do it?\n" +msgstr "Automatické generování vymaže všechny ručně vytvořené body. \n\nOpravdu to chcete udělat?\n" + +#: src/slic3r/GUI/Tab.cpp:3421 +msgid "Automatic generation" +msgstr "Automatické generování" + +#: src/slic3r/GUI/ConfigWizard.cpp:401 +msgid "Automatic updates" +msgstr "Automatické aktualizace" + +#: src/slic3r/GUI/MainFrame.cpp:406 +msgid "Automatically repair an STL file" +msgstr "Automaticky opravit STL soubor" + +#: src/slic3r/GUI/Tab.cpp:1110 +msgid "Autospeed (advanced)" +msgstr "Automatická rychlost (pokročilé)" + +#: src/libslic3r/PrintConfig.cpp:111 +msgid "Avoid crossing perimeters" +msgstr "Vyhnout se přejíždění perimetrů" + +#: src/slic3r/GUI/Tab.cpp:3113 +msgid "BACK ARROW icon indicates that the settings were changed and are not equal to the last saved preset for the current option group.\nClick to reset all settings for the current option group to the last saved preset." +msgstr "Ikona ŠIPKY ZPĚT indikuje, že došlo ke změně nastavení, které není shodné s naposledy uloženým přednastavením pro aktuální skupinu nastavení.\nKlikněte pro reset všech nastavení pro aktuální skupinu nastavení na naposledy uložené přednastavení." + +#: src/slic3r/GUI/Tab.cpp:3127 +msgid "BACK ARROW icon indicates that the value was changed and is not equal to the last saved preset.\nClick to reset current value to the last saved preset." +msgstr "Ikona ŠIPKY ZPĚT indikuje, že se hodnota změnila a není shodná s naposledy uloženým přednastavením.\nKlikněte pro reset současné hodnoty na naposledy uložené přednastavení." + +#: src/slic3r/GUI/Tab.cpp:3077 +msgid "BACK ARROW;indicates that the settings were changed and are not equal to the last saved preset for the current option group.\nClick the BACK ARROW icon to reset all settings for the current option group to the last saved preset." +msgstr "ŠIPKA ZPĚT;indikuje, že došlo ke změně nastavení, které není shodné s naposledy uloženým přednastavením pro aktuální skupinu nastavení. Klikněte na ikonu ŠIPKY ZPĚT pro reset všech nastavení pro aktuální skupinu nastavení na naposledy uložené přednastavení." + +#: src/slic3r/GUI/Preferences.cpp:52 +msgid "Background processing" +msgstr "Zpracování na pozadí" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:242 +msgid "backwards edges" +msgstr "zadní okraje" + +#: src/slic3r/GUI/Tab.cpp:1484 +msgid "Bed" +msgstr "Tisková podložka" + +#: src/slic3r/GUI/BedShapeDialog.hpp:45 src/slic3r/GUI/ConfigWizard.cpp:524 +msgid "Bed Shape" +msgstr "Tvar tiskové podložky" + +#: src/libslic3r/PrintConfig.cpp:50 +msgid "Bed shape" +msgstr "Tvar tiskové podložky" + +#: src/slic3r/GUI/ConfigWizard.cpp:524 +msgid "Bed Shape and Size" +msgstr "Tvar a rozměr podložky" + +#: src/libslic3r/PrintConfig.cpp:122 +msgid "Bed temperature" +msgstr "Teplota tiskové podložky" + +#: src/libslic3r/PrintConfig.cpp:120 +msgid "Bed temperature for layers after the first one. Set this to zero to disable bed temperature control commands in the output." +msgstr "Teplota tiskové podložky pro další vrstvy po první vrstvě. Nastavením na hodnotu nula vypnete ovládací příkazy teploty tiskové podložky ve výstupu." + +#: src/slic3r/GUI/ConfigWizard.cpp:626 +msgid "Bed Temperature:" +msgstr "Teplota tiskové podložky:" + +#: src/slic3r/GUI/Tab.cpp:1961 src/libslic3r/PrintConfig.cpp:128 +msgid "Before layer change G-code" +msgstr "G-code před změnou vrstvy" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:22 +msgid "Before roll back" +msgstr "Před vrácením zpět" + +#: src/libslic3r/PrintConfig.cpp:1508 +msgid "Below Z" +msgstr "Pod Z" + +#: src/libslic3r/PrintConfig.cpp:139 +msgid "Between objects G-code" +msgstr "G-code mezi objekty" + +#: src/slic3r/GUI/Tab.cpp:1979 +msgid "Between objects G-code (for sequential printing)" +msgstr "G-code mezi objekty (pro sekvenční tisk)" + +#. TRN To be shown in the main menu View->Bottom +#: src/slic3r/GUI/MainFrame.cpp:524 +msgid "Bottom" +msgstr "Zespod" + +#: src/libslic3r/PrintConfig.cpp:409 +msgid "Bottom fill pattern" +msgstr "Vzor spodní výplně" + +#: src/libslic3r/PrintConfig.cpp:152 +msgid "Bottom solid layers" +msgstr "Plné spodní vrstvy" + +#: src/slic3r/GUI/MainFrame.cpp:524 +msgid "Bottom View" +msgstr "Pohled zespod" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1055 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1087 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1090 +msgid "Box" +msgstr "Kostka" + +#: src/libslic3r/PrintConfig.cpp:157 +msgid "Bridge" +msgstr "Most" + +#: src/libslic3r/PrintConfig.cpp:186 +msgid "Bridge flow ratio" +msgstr "Poměr průtoku při vytváření mostů" + +#: src/slic3r/GUI/GUI_Preview.cpp:233 src/libslic3r/GCode/PreviewData.cpp:169 +msgid "Bridge infill" +msgstr "Výplň mostů" + +#: src/libslic3r/PrintConfig.cpp:198 +msgid "Bridges" +msgstr "Mosty" + +#: src/libslic3r/PrintConfig.cpp:177 +msgid "Bridges fan speed" +msgstr "Rychlost ventilátoru při vytváření mostů" + +#: src/libslic3r/PrintConfig.cpp:166 +msgid "Bridging angle" +msgstr "Úhel vytváření mostů" + +#: src/libslic3r/PrintConfig.cpp:168 +msgid "Bridging angle override. If left to zero, the bridging angle will be calculated automatically. Otherwise the provided angle will be used for all bridges. Use 180° for zero angle." +msgstr "Přepsání úhlu vytváření mostů. Nastavením hodnoty na nulu se bude úhel vytváření mostů vypočítávat automaticky. Při zadání jiného úhlu, bude pro všechny mosty použitý zadaný úhel. Pro nulový úhel zadejte 180°." + +#: src/slic3r/GUI/PresetHints.cpp:216 +msgid "Bridging volumetric" +msgstr "Volumetrická hodnota mostů" + +#: src/slic3r/GUI/Plater.cpp:446 src/slic3r/GUI/Tab.cpp:1056 +msgid "Brim" +msgstr "Límec" + +#: src/libslic3r/PrintConfig.cpp:208 +msgid "Brim width" +msgstr "Šířka límce" + +#: src/slic3r/GUI/Tab.cpp:1681 +msgid "Browse" +msgstr "Procházet" + +#: src/libslic3r/Zipper.cpp:85 +msgid "buffer too small" +msgstr "buffer je příliš malý" + +#: src/slic3r/GUI/ButtonsDescription.cpp:16 +msgid "Buttons And Text Colors Description" +msgstr "Barvy pro textové popisky a tlačítka" + +#: src/slic3r/GUI/PresetHints.cpp:220 +msgid "by the print profile maximum" +msgstr "maximem pro profil tisku" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 +msgid "Camera view " +msgstr "Pohled kamery" + +#: src/slic3r/GUI/ConfigWizard.cpp:1095 src/slic3r/GUI/FirmwareDialog.cpp:147 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:37 +#: src/slic3r/GUI/ProgressStatusBar.cpp:28 +msgid "Cancel" +msgstr "Zrušit" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:156 +msgid "Cancel selected" +msgstr "Zrušit vybrané" + +#: src/slic3r/GUI/Plater.cpp:2727 src/slic3r/GUI/PrintHostDialogs.cpp:232 +msgid "Cancelled" +msgstr "Zrušeno" + +#: src/slic3r/GUI/Plater.cpp:2444 src/slic3r/GUI/PrintHostDialogs.cpp:231 +msgid "Cancelling" +msgstr "Zrušení" + +#: src/slic3r/GUI/FirmwareDialog.cpp:866 +msgid "Cancelling..." +msgstr "Ukončování..." + +#: src/slic3r/GUI/Tab.cpp:2905 +msgid "Cannot overwrite a system profile." +msgstr "Nelze přepsat systémový profil." + +#: src/slic3r/GUI/Tab.cpp:2909 +msgid "Cannot overwrite an external profile." +msgstr "Nelze přepsat externí profil." + +#: src/libslic3r/SLAPrint.cpp:612 +msgid "Cannot proceed without support points! Add support points or disable support generation." +msgstr "Nelze pokračovat bez podpěrných bodů! Přidejte podpěrné body nebo zakažte generování podpěr." + +#: src/slic3r/GUI/Tab.cpp:1840 +msgid "Capabilities" +msgstr "Možnosti" + +#: src/slic3r/GUI/GUI_App.cpp:662 +msgid "Capture a configuration snapshot" +msgstr "Vytvořit aktuální zálohu konfigurace" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2159 +msgid "Cascading pillars" +msgstr "Kaskádové sloupy" + +#: src/libslic3r/PrintConfig.cpp:3035 +msgid "Center" +msgstr "Střed" + +#: src/libslic3r/PrintConfig.cpp:3036 +msgid "Center the print around the given center." +msgstr "Vycentrujte tisk kolem daného středu." + +#: src/slic3r/GUI/Tab.cpp:1744 +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "Soubory s certifikátem (*.crt, *.pem)|*.crt;*.pem|Všechny soubory|*.*" + +#: src/slic3r/GUI/GUI_App.cpp:683 +msgid "Change Application &Language" +msgstr "Změnit jazyk ap&likace" + +#: xs/src/slic3r/GUI/GUI.cpp:354 +msgid "Change Application Language" +msgstr "Změnit jazyk aplikace" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1226 +msgid "Change extruder" +msgstr "Změnit extruder" + +#: src/slic3r/GUI/Plater.cpp:2901 +msgid "Change the number of copies of the selected object" +msgstr "Změňte počet kopií vybraného objektu" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1185 +msgid "Change type" +msgstr "Změnit typ" + +#: src/slic3r/GUI/GUI_App.cpp:378 +msgid "Changing of an application language" +msgstr "Změnit jazyk aplikace" + +#: src/slic3r/GUI/ConfigWizard.cpp:409 src/slic3r/GUI/Preferences.cpp:61 +msgid "Check for application updates" +msgstr "Zkontrolovat aktualizace aplikace" + +#: src/slic3r/GUI/BedShapeDialog.cpp:316 +msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" +msgstr "Vyberte soubor pro import tvaru tiskové podložky z (STL/OBJ/AMF/3MF/PRUSA):" + +#: src/slic3r/GUI/MainFrame.cpp:621 +msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" +msgstr "Zvolit soubor ke slicování (STL/OBJ/AMF/3MF/PRUSA):" + +#: src/slic3r/GUI/GUI_App.cpp:489 +msgid "Choose one file (3MF):" +msgstr "Vyberte jeden soubor (3MF):" + +#: src/slic3r/GUI/GUI_App.cpp:501 +msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" +msgstr "Vyberte jeden nebo více souborů (STL/OBJ/AMF/3MF/PRUSA):" + +#: src/slic3r/GUI/ConfigWizard.cpp:490 +msgid "Choose the type of firmware used by your printer." +msgstr "Vyberte typ firmware používaný vaší tiskárnou." + +#: src/slic3r/GUI/BedShapeDialog.cpp:84 +msgid "Circular" +msgstr "Kruhový" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2156 +msgid "Classification" +msgstr "Klasifikace" + +#: src/slic3r/GUI/Plater.cpp:292 +msgid "Click to edit preset" +msgstr "Klikněte pro editaci přednastavení" + +#: src/libslic3r/PrintConfig.cpp:216 +msgid "Clip multi-part objects" +msgstr "Připnutí objektů z více částí k sobě" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:926 +msgid "Clipping of view:" +msgstr "Řezová rovina:" + +#: src/slic3r/GUI/FirmwareDialog.cpp:814 +#: src/slic3r/GUI/PrintHostDialogs.cpp:160 +msgid "Close" +msgstr "Zavřít" + +#: src/libslic3r/PrintConfig.cpp:550 +msgid "Color" +msgstr "Barva" + +#: src/slic3r/GUI/GUI_Preview.cpp:218 src/slic3r/GUI/GUI_Preview.cpp:535 +#: src/libslic3r/GCode/PreviewData.cpp:406 +msgid "Color Print" +msgstr "Color Print" + +#: src/libslic3r/PrintConfig.cpp:224 +msgid "Colorprint height" +msgstr "Výška barevného tisku" + +#: src/libslic3r/PrintConfig.cpp:942 +msgid "Combine infill every" +msgstr "Kombinovat výplň každou" + +#: src/libslic3r/PrintConfig.cpp:947 +msgid "Combine infill every n layers" +msgstr "Kombinovat výplň každou n vrstvu" + +#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:244 +msgid "Compatible print profiles" +msgstr "Kompatibilní tiskové profily" + +#: src/libslic3r/PrintConfig.cpp:250 +msgid "Compatible print profiles condition" +msgstr "Stav kompatibilních tiskových profilů" + +#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:229 +msgid "Compatible printers" +msgstr "Kompatibilní tiskárny" + +#: src/libslic3r/PrintConfig.cpp:235 +msgid "Compatible printers condition" +msgstr "Stav kompatibilních tiskáren" + +#: src/libslic3r/PrintConfig.cpp:268 +msgid "Complete individual objects" +msgstr "Dokončení individuálních objektů" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:233 +msgid "Completed" +msgstr "Dokončeno" + +#: src/libslic3r/Zipper.cpp:57 +msgid "compression failed" +msgstr "komprese se nezdařila" + +#: src/libslic3r/PrintConfig.cpp:399 src/libslic3r/PrintConfig.cpp:802 +msgid "Concentric" +msgstr "Koncentrická" + +#: src/slic3r/GUI/ConfigWizard.cpp:1185 +msgid "Configuration &Assistant" +msgstr "Průvodce n&astavením" + +#: src/slic3r/GUI/ConfigWizard.cpp:1182 +msgid "Configuration &Wizard" +msgstr "Průvodce nastavením" + +#: src/slic3r/GUI/ConfigWizard.cpp:1184 +msgid "Configuration Assistant" +msgstr "Průvodce nastavení tiskárny" + +#: src/libslic3r/PrintConfig.cpp:1251 +msgid "Configuration notes" +msgstr "Konfigurační poznámky" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:99 +msgid "Configuration Snapshots" +msgstr "Záloha konfigurace" + +#: src/slic3r/GUI/UpdateDialogs.cpp:73 src/slic3r/GUI/UpdateDialogs.cpp:168 +msgid "Configuration update" +msgstr "Aktualizace nastavení" + +#: src/slic3r/GUI/UpdateDialogs.cpp:73 +msgid "Configuration update is available" +msgstr "Je k dispozici aktualizace nastavení" + +#: src/slic3r/GUI/ConfigWizard.cpp:1181 +msgid "Configuration Wizard" +msgstr "Průvodce nastavením" + +#: src/slic3r/GUI/FirmwareDialog.cpp:863 +msgid "Confirmation" +msgstr "Potvrzení" + +#: src/slic3r/GUI/Tab.cpp:1904 +msgid "Connection failed." +msgstr "Připojení selhalo." + +#: src/slic3r/GUI/Tab.cpp:3416 +msgid "Connection of the support sticks and junctions" +msgstr "Spojení podpůrných tyčí a spojek" + +#: src/slic3r/Utils/Duet.cpp:51 +msgid "Connection to Duet works correctly." +msgstr "Připojení k Duet funguje správně." + +#: src/slic3r/Utils/OctoPrint.cpp:84 +msgid "Connection to OctoPrint works correctly." +msgstr "Připojení k OctoPrint pracuje správně." + +#: src/slic3r/GUI/Tab.cpp:1901 +msgid "Connection to printer works correctly." +msgstr "Připojení k tiskárně pracuje správně." + +#: src/slic3r/Utils/OctoPrint.cpp:195 +msgid "Connection to Prusa SLA works correctly." +msgstr "Připojení k tiskárně Prusa SLA pracuje správně." + +#: src/libslic3r/PrintConfig.cpp:1823 +msgid "Contact Z distance" +msgstr "Mezera mezi podpěrami a objektem v ose Z" + +#: lib/Slic3r/GUI/MainFrame.pm:137 +msgid "Controller" +msgstr "Ovladač" + +#: src/libslic3r/PrintConfig.cpp:2408 +msgid "Controls the bridge type between two neigboring pillars. Can be zig-zag, cross (double zig-zag) or dynamic which will automatically switch between the first two depending on the distance of the two pillars." +msgstr "Řídí typ mostu mezi dvěma sousedními sloupky. Může být zig-zag, cross (double zig-zag) nebo dynamic. Typ automaticky přepíná mezi prvními dvěma v závislosti na vzdálenosti dvou sloupků." + +#: src/slic3r/GUI/Tab.cpp:1489 +msgid "Cooling" +msgstr "Chlazení" + +#: src/libslic3r/PrintConfig.cpp:628 +msgid "Cooling moves are gradually accelerating beginning at this speed. " +msgstr "Chladicí pohyby se postupně zrychlují a začínají touto rychlostí." + +#: src/libslic3r/PrintConfig.cpp:647 +msgid "Cooling moves are gradually accelerating towards this speed. " +msgstr "Chladící pohyby se postupně zrychlují až k této rychlosti." + +#: src/slic3r/GUI/Tab.cpp:1510 +msgid "Cooling thresholds" +msgstr "Podmínky chlazení" + +#: src/libslic3r/PrintConfig.cpp:291 +msgid "Cooling tube length" +msgstr "Délka chladící trubičky" + +#: src/libslic3r/PrintConfig.cpp:283 +msgid "Cooling tube position" +msgstr "Pozice chladící trubičky" + +#: lib/Slic3r/GUI/Plater.pm:304 lib/Slic3r/GUI/Plater.pm:992 +msgid "Copies" +msgstr "Kopií" + +#: src/slic3r/GUI/Tab.cpp:2878 +msgid "Copy" +msgstr "Kopírovat" + +#: src/slic3r/GUI/MainFrame.cpp:454 +msgid "Copy selection to clipboard" +msgstr "Kopírovat výběr do schránky" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 +msgid "Copy to clipboard" +msgstr "Kopírovat do schránky" + +#: src/libslic3r/PrintConfig.cpp:2324 src/libslic3r/PrintConfig.cpp:2325 +msgid "Correction for expansion" +msgstr "Korekce expanze" + +#: src/slic3r/GUI/Tab.cpp:2059 src/slic3r/GUI/Tab.cpp:3310 +msgid "Corrections" +msgstr "Korekce" + +#: src/slic3r/GUI/Plater.cpp:216 src/slic3r/GUI/Plater.cpp:1056 +#: src/libslic3r/PrintConfig.cpp:717 +msgid "Cost" +msgstr "Náklady" + +#: src/slic3r/GUI/Plater.cpp:2140 +msgid "Could not arrange model objects! Some geometries may be invalid." +msgstr "Objekty nelze uspořádat! Některé geometrie mohou být neplatné." + +#: src/slic3r/Utils/Duet.cpp:56 +msgid "Could not connect to Duet" +msgstr "Nelze se připojit k Duet" + +#: src/slic3r/Utils/OctoPrint.cpp:90 +msgid "Could not connect to OctoPrint" +msgstr "Nelze se spojit s OctoPrintem" + +#: src/slic3r/Utils/OctoPrint.cpp:200 +msgid "Could not connect to Prusa SLA" +msgstr "Nelze se připojit k Prusa SLA" + +#: src/slic3r/GUI/Tab.cpp:1710 +msgid "Could not get a valid Printer Host reference" +msgstr "Nelze získat platný odkaz na tiskový server" + +#: src/slic3r/Utils/Duet.cpp:151 +msgid "Could not get resources to create a new connection" +msgstr "Nelze získat prostředky pro vytvoření nového spojení" + +#: src/libslic3r/PrintConfig.cpp:1872 +msgid "Cover the top contact layer of the supports with loops. Disabled by default." +msgstr "Zakrýt smyčkami horní kontaktní vrstvu podpěr. Ve výchozím nastavení zakázáno." + +#: src/libslic3r/PrintConfig.cpp:73 +msgid "Cracks smaller than 2x gap closing radius are being filled during the triangle mesh slicing. The gap closing operation may reduce the final print resolution, therefore it is advisable to keep the value reasonably low." +msgstr "Praskliny menší než 2x poloměr uzavření mezery se vyplní během slicování trojúhelníkových sítí. Operace uzavírání mezery může snížit konečné rozlišení tisku, proto je vhodné udržovat rozumně nízkou hodnotu." + +#: src/libslic3r/Zipper.cpp:61 +msgid "CRC-32 check failed" +msgstr "CRC-32 kontrola selhala" + +#: src/libslic3r/PrintConfig.cpp:2460 +msgid "Critical angle" +msgstr "Kritický úhel" + +#: src/libslic3r/PrintConfig.cpp:2417 +msgid "Cross" +msgstr "Cross" + +#: src/libslic3r/PrintConfig.cpp:800 +msgid "Cubic" +msgstr "Kubická" + +#: src/slic3r/GUI/wxExtensions.cpp:2413 +#, possible-c-format +msgid "Current mode is %s" +msgstr "Aktuální režim je %s" + +#: src/slic3r/GUI/Tab.cpp:909 +msgid "Current preset is inherited from " +msgstr "Aktuální nastavení je zděděno od " + +#: src/slic3r/GUI/UpdateDialogs.cpp:45 +msgid "Current version:" +msgstr "Aktuální verze:" + +#: src/slic3r/GUI/BedShapeDialog.cpp:93 src/slic3r/GUI/GUI_Preview.cpp:239 +#: src/libslic3r/GCode/PreviewData.cpp:175 +msgid "Custom" +msgstr "Vlastní" + +#: src/libslic3r/PrintConfig.cpp:96 +msgid "Custom CA certificate file can be specified for HTTPS OctoPrint connections, in crt/pem format. If left blank, the default OS CA certificate repository is used." +msgstr "Pro HTTPS připojení OctoPrintu lze zadat vlastní CA certifikát ve formátu crt/pem. Pokud zůstane pole prázdné, použije se výchozí úložiště certifikátů OS CA." + +#: src/slic3r/GUI/Tab.cpp:1563 src/slic3r/GUI/Tab.cpp:1948 +msgid "Custom G-code" +msgstr "Vlastní G-code" + +#: src/slic3r/GUI/ConfigWizard.cpp:373 +msgid "Custom Printer" +msgstr "Vlastní tiskárna" + +#: src/slic3r/GUI/ConfigWizard.cpp:373 +msgid "Custom Printer Setup" +msgstr "Vlastní nastavení tiskárny" + +#: src/slic3r/GUI/ConfigWizard.cpp:377 +msgid "Custom profile name:" +msgstr "Vlastní název profilu:" + +#: xs/src/slic3r/GUI/ConfigWizard.cpp:254 +msgid "Custom setup" +msgstr "Vlastní nastavení" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:188 src/libslic3r/PrintConfig.cpp:3013 +msgid "Cut" +msgstr "Řezat" + +#: src/libslic3r/PrintConfig.cpp:3014 +msgid "Cut model at the given Z." +msgstr "Rozříznout model v dané výšce Z." + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:43 +msgid "Cut object:" +msgstr "Řezat objekt:" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:88 +msgid "Cut [C]" +msgstr "Řezat [C]" + +#: lib/Slic3r/GUI/Plater.pm:262 lib/Slic3r/GUI/Plater.pm:278 +#: lib/Slic3r/GUI/Plater.pm:2296 +msgid "Cut…" +msgstr "Řezat…" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1055 +msgid "Cylinder" +msgstr "Válec" + +#: src/libslic3r/PrintConfig.cpp:3115 +msgid "Data directory" +msgstr "Složka Data" + +#: src/libslic3r/Zipper.cpp:55 +msgid "decompression failed or archive is corrupted" +msgstr "dekomprese selhala nebo je archiv poškozen" + +#: src/slic3r/GUI/Plater.cpp:2899 +msgid "Decrease copies" +msgstr "Odebrat kopie" + +#: src/slic3r/GUI/GUI_App.cpp:594 src/slic3r/GUI/GUI_ObjectList.cpp:1245 +#: src/libslic3r/PrintConfig.cpp:299 +msgid "Default" +msgstr "Výchozí" + +#: xs/src/slic3r/GUI/Tab.cpp:2130 +msgid "Default " +msgstr "Výchozí " + +#: xs/src/slic3r/GUI/Field.cpp:98 +msgid "default" +msgstr "výchozí" + +#: src/libslic3r/PrintConfig.cpp:730 +msgid "Default base angle for infill orientation. Cross-hatching will be applied to this. Bridges will be infilled using the best direction Slic3r can detect, so this setting does not affect them." +msgstr "Výchozí úhel pro orientaci výplně. Bude pro něj použito křížové šrafování. Mosty budou vyplněny nejlepším směrem, který Slic3r dokáže rozpoznat, takže toto nastavení je neovlivní." + +#: src/libslic3r/PrintConfig.cpp:522 +msgid "Default extrusion width" +msgstr "Výchozí šířka extruze" + +#: src/slic3r/GUI/Tab.cpp:937 +msgid "default filament profile" +msgstr "výchozí profil filamentu" + +#: src/libslic3r/PrintConfig.cpp:309 +msgid "Default filament profile" +msgstr "Výchozí profil filamentu" + +#: src/libslic3r/PrintConfig.cpp:310 +msgid "Default filament profile associated with the current printer profile. On selection of the current printer profile, this filament profile will be activated." +msgstr "Výchozí materiálový profil spojený se současným profilem tiskárny. Při výběru současného profilu tiskárny se aktivuje tento materiálový profil." + +#: src/slic3r/GUI/Tab.cpp:2757 +#, possible-c-format +msgid "Default preset (%s)" +msgstr "Výchozí přednastavení (%s)" + +#: xs/src/slic3r/GUI/Tab.cpp:2410 xs/src/slic3r/GUI/Tab.cpp:2496 +msgid "Default presets" +msgstr "Výchozí přednastavení" + +#: src/libslic3r/GCode/PreviewData.cpp:491 +msgid "Default print color" +msgstr "Výchozí barva tisku" + +#: src/slic3r/GUI/Tab.cpp:934 +msgid "default print profile" +msgstr "výchozí tiskový profil" + +#: src/libslic3r/PrintConfig.cpp:316 +msgid "Default print profile" +msgstr "Výchozí tiskový profil" + +#: src/libslic3r/PrintConfig.cpp:317 src/libslic3r/PrintConfig.cpp:2341 +#: src/libslic3r/PrintConfig.cpp:2352 +msgid "Default print profile associated with the current printer profile. On selection of the current printer profile, this print profile will be activated." +msgstr "Výchozí tiskový profil spojený se současným profilem tiskárny. Při výběru současného profilu tiskárny se aktivuje tento tiskový profil." + +#: src/slic3r/GUI/Tab.cpp:951 +msgid "default SLA material profile" +msgstr "výchozí profil pro SLA materiál" + +#: src/libslic3r/PrintConfig.cpp:2340 src/libslic3r/PrintConfig.cpp:2351 +msgid "Default SLA material profile" +msgstr "Výchozí profil pro SLA materiál" + +#: src/slic3r/GUI/Tab.cpp:955 +msgid "default SLA print profile" +msgstr "výchozí SLA tiskový profil" + +#: src/slic3r/GUI/Field.cpp:105 +msgid "default value" +msgstr "výchozí hodnota" + +#: src/slic3r/GUI/ConfigWizard.cpp:375 +msgid "Define a custom printer profile" +msgstr "Vytvořit vlastní tiskový profil" + +#: src/libslic3r/PrintConfig.cpp:2529 +msgid "Defines the cavity depth. Set to zero to disable the cavity." +msgstr "Definuje hloubku dutiny. Chcete-li dutinu vypnout, nastavte ji na nulu." + +#: src/libslic3r/PrintConfig.cpp:2533 +msgid "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful when enabling this feature, as some resins may produce an extreme suction effect inside the cavity, which makes pealing the print off the vat foil difficult." +msgstr "Definuje hloubku dutiny. Chcete-li dutinu vypnout, nastavte ji na nulu. Při povolování této funkce buďte opatrní, protože některé pryskyřice mohou způsobit extrémní sací efekt uvnitř dutiny, což ztěžuje odlupování tisku z fólie ve vaničce." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:237 +msgid "degenerate facets" +msgstr "Degenerace facetů" + +#: src/libslic3r/PrintConfig.cpp:2572 +msgid "degrees" +msgstr "stupňů" + +#: src/libslic3r/PrintConfig.cpp:608 +msgid "Delay after unloading" +msgstr "Zpoždění po vyjmutí" + +#: src/slic3r/GUI/Tab.cpp:2935 +msgid "delete" +msgstr "smazat" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1257 src/slic3r/GUI/Plater.cpp:2891 +#: src/slic3r/GUI/Plater.cpp:2909 src/slic3r/GUI/Tab.cpp:2937 +msgid "Delete" +msgstr "Smazat" + +#: src/slic3r/GUI/MainFrame.cpp:449 +msgid "Delete &all" +msgstr "Sm&azat vše" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 +msgid "Delete All" +msgstr "Smazat Vše" + +#: src/slic3r/GUI/Plater.cpp:3298 +msgid "Delete all" +msgstr "Smazat vše" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:187 +msgid "Delete color change marker for current layer" +msgstr "Odebrat značku změny barvy pro aktuální vrstvu" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 +msgid "Delete selected" +msgstr "Smazat vybrané" + +#: src/slic3r/GUI/Tab.cpp:131 +msgid "Delete this preset" +msgstr "Smazat přednastavení" + +#: src/slic3r/GUI/MainFrame.cpp:449 +msgid "Deletes all objects" +msgstr "Smazat všechny objekty" + +#: src/slic3r/GUI/MainFrame.cpp:447 +msgid "Deletes the current selection" +msgstr "Smaže aktuální výběr" + +#: src/libslic3r/PrintConfig.cpp:685 +msgid "Density" +msgstr "Hustota" + +#: src/libslic3r/PrintConfig.cpp:744 +msgid "Density of internal infill, expressed in the range 0% - 100%." +msgstr "Hustota vnitřní výplně, vyjádřená v rozmezí 0% až 100%." + +#: src/slic3r/GUI/Tab.cpp:1200 src/slic3r/GUI/Tab.cpp:1584 +#: src/slic3r/GUI/Tab.cpp:1992 src/slic3r/GUI/Tab.cpp:2086 +#: src/slic3r/GUI/Tab.cpp:3336 src/slic3r/GUI/Tab.cpp:3445 +msgid "Dependencies" +msgstr "Závislosti" + +#: src/libslic3r/PrintConfig.cpp:1542 src/libslic3r/PrintConfig.cpp:1543 +msgid "Deretraction Speed" +msgstr "Rychlost deretrakce" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1235 +msgid "Deselect by rectangle" +msgstr "Odznačit obdélníkovým výběrem myši" + +#: src/libslic3r/PrintConfig.cpp:1833 +msgid "detachable" +msgstr "oddělitelný" + +#: src/libslic3r/PrintConfig.cpp:1304 +msgid "Detect bridging perimeters" +msgstr "Detekovat perimetry přemostění" + +#: src/libslic3r/PrintConfig.cpp:1988 +msgid "Detect single-width walls (parts where two extrusions don't fit and we need to collapse them into a single trace)." +msgstr "Detekuje stěny o tloušťce jedné čáry (části, kam se dvě čáry nemohou vejít a je potřeba sloučit je do čáry jedné)." + +#: src/libslic3r/PrintConfig.cpp:1986 +msgid "Detect thin walls" +msgstr "Detekovat tenké zdi" + +#: src/libslic3r/PrintConfig.cpp:3083 +msgid "Detect unconnected parts in the given model(s) and split them into separate objects." +msgstr "Rozpoznat nepřipojené části daného modelu(ů) a rozdělit je do samostatných objektů." + +#: src/slic3r/GUI/Plater.cpp:1713 +msgid "Detected advanced data" +msgstr "Byla detekována data z pokročilého režimu" + +#: src/slic3r/GUI/GLCanvas3D.cpp:723 +msgid "Detected object outside print volume\nResolve a clash to continue slicing/export process correctly" +msgstr "Detekován objekt mimo tiskový prostor\nVyřešte konflikt, abyste mohli správně pokračovat v procesu slicování/exportu" + +#: src/slic3r/GUI/GLCanvas3D.cpp:719 +msgid "Detected object outside print volume" +msgstr "Detekován objekt mimo tiskový prostor." + +#: src/slic3r/GUI/GLCanvas3D.cpp:720 +msgid "Detected toolpath outside print volume" +msgstr "Byla detekována cesta mimo tiskový objem" + +#: src/slic3r/GUI/BedShapeDialog.cpp:88 src/libslic3r/PrintConfig.cpp:677 +msgid "Diameter" +msgstr "Průměr" + +#: src/libslic3r/PrintConfig.cpp:2443 +msgid "Diameter in mm of the pillar base" +msgstr "Průměr základny podpěr v mm" + +#: src/libslic3r/PrintConfig.cpp:2399 +msgid "Diameter in mm of the support pillars" +msgstr "Průměr podpěrných sloupů v mm" + +#: src/libslic3r/PrintConfig.cpp:2371 +msgid "Diameter of the pointing side of the head" +msgstr "Průměr konce podpůrného hrotu" + +#: src/slic3r/GUI/BedShapeDialog.cpp:89 +msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." +msgstr "Průměr tiskové podložky. Přepokládaný počátek (0,0) je umístěn uprostřed." + +#: src/libslic3r/PrintConfig.cpp:1569 +msgid "Direction" +msgstr "Směr" + +#: xs/src/slic3r/GUI/Preferences.cpp:76 +msgid "Disable communication with the printer over a serial / USB cable. This simplifies the user interface in case the printer is never attached to the computer." +msgstr "Zakázat komunikaci s tiskárnou přes sériový / USB kabel. To zjednodušuje uživatelské rozhraní v případě, že tiskárna není nikdy připojena k počítači." + +#: src/libslic3r/PrintConfig.cpp:323 +msgid "Disable fan for the first" +msgstr "Vypnutí chlazení pro prvních" + +#: xs/src/slic3r/GUI/Preferences.cpp:74 +msgid "Disable USB/serial connection" +msgstr "Vypnout USB/sériové připojení" + +#: src/libslic3r/PrintConfig.cpp:1280 +msgid "Disables retraction when the travel path does not exceed the upper layer's perimeters (and thus any ooze will be probably invisible)." +msgstr "Vypne retrakce, pokud dráha nepřekročí perimetr vrchní vrstvy (a proto bude pravděpodobně jakékoliv odkapávání neviditelné)." + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:869 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1241 +msgid "Discard changes" +msgstr "Zahodit změny" + +#: src/slic3r/GUI/Tab.cpp:2784 +msgid "Discard changes and continue anyway?" +msgstr "Zahodit změny a pokračovat?" + +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:177 +msgid "Displacement (mm)" +msgstr "Posunutí (mm)" + +#: src/slic3r/GUI/Tab.cpp:2041 +msgid "Display" +msgstr "Displej" + +#: src/libslic3r/PrintConfig.cpp:2208 +msgid "Display height" +msgstr "Výška displeje" + +#: src/libslic3r/PrintConfig.cpp:2227 +msgid "Display orientation" +msgstr "Orientace displeje" + +#: src/slic3r/GUI/MainFrame.cpp:510 +msgid "Display the Print Host Upload Queue window" +msgstr "Zobrazit okno s frontou nahrávání do tiskového serveru." + +#: src/libslic3r/PrintConfig.cpp:2202 +msgid "Display width" +msgstr "Šířka displeje" + +#: src/libslic3r/PrintConfig.cpp:341 +msgid "Distance between copies" +msgstr "Vzdálenost mezi kopiemi" + +#: src/libslic3r/PrintConfig.cpp:1610 +msgid "Distance between skirt and object(s). Set this to zero to attach the skirt to the object(s) and get a brim for better adhesion." +msgstr "Vzdálenost mezi obrysem a objektem (objekty). Nastavte tuto hodnotu na nulu, pro sloučení obrysu s předmětem (předměty) a tvorbu límce pro dosažení lepší přilnavosti." + +#: src/libslic3r/PrintConfig.cpp:1609 +msgid "Distance from object" +msgstr "Vzdálenost od objektu" + +#: src/slic3r/GUI/BedShapeDialog.cpp:80 +msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." +msgstr "Vzdálenost souřadnice 0,0 G-code od předního levého rohu obdélníku." + +#: src/libslic3r/PrintConfig.cpp:284 +msgid "Distance of the center-point of the cooling tube from the extruder tip " +msgstr "Vzdálenost ze středu chladící trubičky ke špičce extruderu " + +#: src/libslic3r/PrintConfig.cpp:1313 +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 "Vzdálenost špičky extruderu od místa, kde je zaparkován filament při vytažení. Měla by se shodovat s hodnotou ve firmware tiskárny. " + +#: src/libslic3r/PrintConfig.cpp:342 +msgid "Distance used for the auto-arrange feature of the plater." +msgstr "Vzdálenost, použitá pro funkci automatického rozmístění po podložce." + +#: src/libslic3r/PrintConfig.cpp:3097 +msgid "Do not fail if a file supplied to --load does not exist." +msgstr "Nepodaří se, pokud neexistuje soubor dodaný k přepínači --load." + +#: src/libslic3r/PrintConfig.cpp:3041 +msgid "Do not rearrange the given models before merging and keep their original XY coordinates." +msgstr "Nepřeuspořádávejte modely před sloučením a tím ponecháním jejich původních souřadnic v XY." + +#: src/slic3r/GUI/Field.cpp:181 +#, possible-c-format +msgid "Do you mean %d%% instead of %d %s?\nSelect YES if you want to change this value to %d%%, \nor NO if you are sure that %d %s is a correct value." +msgstr "Myslíte %d%% namísto %d %s?\nVyberte ANO, pokud chcete změnit tuto hodnotu na %d%% nebo NE, pokud jste si jisti, že %d %s je správná hodnota." + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1022 +msgid "Do you want to save your manually edited support points ?\n" +msgstr "Chcete uložit ručně upravované podpěrné body?\n" + +#: src/libslic3r/PrintConfig.cpp:3040 +msgid "Don't arrange" +msgstr "Neuspořádávat" + +#: src/slic3r/GUI/UpdateDialogs.cpp:55 +msgid "Don't notify about new releases any more" +msgstr "Neupozorňovat na nové verze" + +#: src/libslic3r/PrintConfig.cpp:333 +msgid "Don't support bridges" +msgstr "Nevytvářet podpěry pod mosty" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2161 +msgid "Done" +msgstr "Dokončeno" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:20 +msgid "Downgrade" +msgstr "Downgrade" + +#: lib/Slic3r/GUI/Plater/2D.pm:132 +msgid "Drag your objects here" +msgstr "Přetáhněte své objekty sem" + +#: src/libslic3r/PrintConfig.cpp:3044 +msgid "Duplicate" +msgstr "Duplikovat" + +#: src/libslic3r/PrintConfig.cpp:3049 +msgid "Duplicate by grid" +msgstr "Duplikovat mřížkou" + +#: src/libslic3r/PrintConfig.cpp:2418 +msgid "Dynamic" +msgstr "Dynamic" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:238 +msgid "edges fixed" +msgstr "hrany opraveny" + +#: src/libslic3r/PrintConfig.cpp:349 +msgid "Elephant foot compensation" +msgstr "Kompenzace rozplácnutí první vrstvy" + +#: src/libslic3r/SLAPrint.cpp:624 +msgid "Elevation is too low for object." +msgstr "Výška od podložky je pro objekt příliš nízká." + +#: src/libslic3r/PrintConfig.cpp:1044 +msgid "Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute intervals into the G-code to let the firmware show accurate remaining time. As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 firmware supports M73 Qxx Sxx for the silent mode." +msgstr "Vkládání M73 P[počet vytištěných procent] R[zbývající čas v minutách] v 1 minutových intervalech do G-codu, aby firmware ukázal přesný zbývající čas. M73 nyní rozpoznává pouze firmware tiskárny Prusa i3 MK3. Firmware i3 MK3 také podporuje M73 Qxx Sxx pro tichý režim." + +#: src/slic3r/GUI/Tab.cpp:1490 src/libslic3r/PrintConfig.cpp:1286 +#: src/libslic3r/PrintConfig.cpp:2099 +msgid "Enable" +msgstr "Zapnout" + +#: src/libslic3r/PrintConfig.cpp:277 +msgid "Enable auto cooling" +msgstr "Zapnutí automatického chlazení" + +#: src/libslic3r/PrintConfig.cpp:539 +msgid "Enable fan if layer print time is below" +msgstr "Zapnout ventilátor, pokud je doba tisku vrstvy kratší než" + +#: src/libslic3r/PrintConfig.cpp:1781 +msgid "Enable support material generation." +msgstr "Zapne generování podpěr." + +#: src/libslic3r/PrintConfig.cpp:918 +msgid "Enable this to add comments into the G-Code labeling print moves with what object they belong to, which is useful for the Octoprint CancelObject plugin. This settings is NOT compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill." +msgstr "Zapněte tuto možnost, chcete-li do G-Code přidávat komentáře, které budou určovat, příslušnost tiskových pohybů k jednotlivým objektům. To je užitečné pro Octoprint plugin CancelObject. Nastavení NENÍ kompatibilní se Single Extruder Multi Material konfigurací a s čištěním trysky do objektu / výplně." + +#: src/libslic3r/PrintConfig.cpp:881 +msgid "Enable this to get a commented G-code file, with each line explained by a descriptive text. If you print from SD card, the additional weight of the file could make your firmware slow down." +msgstr "Aktivací získáte komentovaný soubor G-code, přičemž každý řádek je doplněn popisným textem. Pokud tisknete z SD karty, dodatečné informace v souboru můžou zpomalit firmware." + +#: src/libslic3r/PrintConfig.cpp:2085 +msgid "Enable variable layer height feature" +msgstr "Zapnout variabilní výšku vrstev" + +#: src/slic3r/GUI/Tab.cpp:1570 src/slic3r/GUI/Tab.cpp:1955 +#: src/libslic3r/PrintConfig.cpp:359 src/libslic3r/PrintConfig.cpp:369 +msgid "End G-code" +msgstr "Konec G-code" + +#: src/libslic3r/PrintConfig.cpp:1838 +msgid "Enforce support for the first" +msgstr "Zesílit podpěry pro prvních" + +#: src/libslic3r/PrintConfig.cpp:1845 +msgid "Enforce support for the first n layers" +msgstr "Vynucení podpěr pro prvních n vrstev" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:197 +#: src/slic3r/GUI/PrintHostDialogs.cpp:228 +msgid "Enqueued" +msgstr "Zařazeno do fronty" + +#: src/libslic3r/PrintConfig.cpp:380 +msgid "Ensure vertical shell thickness" +msgstr "Zajistit tloušťku svislých stěn" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2709 +msgid "Enter new name" +msgstr "Zadejte nový název" + +#: src/slic3r/GUI/ConfigWizard.cpp:622 +msgid "Enter the bed temperature needed for getting your filament to stick to your heated bed." +msgstr "Zadejte požadovanou teplotu filamentu, aby se spojil s vyhřívanou podložkou." + +#: src/slic3r/GUI/ConfigWizard.cpp:570 +msgid "Enter the diameter of your filament." +msgstr "Zadejte průměr vašeho filamentu." + +#: src/slic3r/GUI/ConfigWizard.cpp:557 +msgid "Enter the diameter of your printer's hot end nozzle." +msgstr "Zadejte průměr trysky hotendu vaší tiskárny." + +#: lib/Slic3r/GUI/Plater.pm:1158 +msgid "Enter the new max size for the selected object:" +msgstr "Zvolte nový maximální rozměr pro zvolný objekt:" + +#: lib/Slic3r/GUI/Plater.pm:1132 +#, possible-perl-format +msgid "Enter the new size for the selected object (print bed: %smm):" +msgstr "Zadejte novou velikost vybraného objektu (tisková podložka: %smm):" + +#: lib/Slic3r/GUI/Plater.pm:992 +msgid "Enter the number of copies of the selected object:" +msgstr "Zadejte počet kopií pro vybraný objekt:" + +#: lib/Slic3r/GUI/Plater.pm:1042 +msgid "Enter the rotation angle:" +msgstr "Zadejte úhel natočení:" + +#: lib/Slic3r/GUI/Plater.pm:1137 lib/Slic3r/GUI/Plater.pm:1163 +#, no-perl-format +msgid "Enter the scale % for the selected object:" +msgstr "Zadejte rozměr % pro zvolený objekt:" + +#: src/slic3r/GUI/ConfigWizard.cpp:608 +msgid "Enter the temperature needed for extruding your filament." +msgstr "Zadejte požadovanou teplotu pro extruzi vašeho filamentu." + +#: src/libslic3r/PrintConfig.cpp:718 +msgid "Enter your filament cost per kg here. This is only for statistical information." +msgstr "Zde zadejte cenu filamentu za kg. Slouží pouze pro statistické informace." + +#: src/libslic3r/PrintConfig.cpp:686 +msgid "Enter your filament density here. This is only for statistical information. A decent way is to weigh a known length of filament and compute the ratio of the length to volume. Better is to calculate the volume directly through displacement." +msgstr "Zde zadejte hustotu filamentu. Toto je pouze pro statistické informace. Přípustný způsob je zvážit známou délku filamentu a vypočítat poměr délky k objemu. Je lepší vypočítat objem přímo přes posun." + +#: src/libslic3r/PrintConfig.cpp:678 +msgid "Enter your filament diameter here. Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." +msgstr "Zde zadejte průměr filamentu. Je zapotřebí správné přesnosti, proto použijte šupleru a proveďte několik měření podél filamentu, poté vypočtete průměr." + +#: src/slic3r/GUI/MainFrame.cpp:636 src/slic3r/GUI/PrintHostDialogs.cpp:230 +msgid "Error" +msgstr "Chyba" + +#: src/slic3r/GUI/FirmwareDialog.cpp:608 +#, possible-c-format +msgid "Error accessing port at %s: %s" +msgstr "Chyba při přístupu k portu na %s : %s" + +#: lib/Slic3r/GUI/Plater.pm:1760 +msgid "Error exporting 3MF file " +msgstr "Chyba při exportu souboru 3MF " + +#: src/slic3r/GUI/Plater.cpp:3593 +#, possible-c-format +msgid "Error exporting 3MF file %s" +msgstr "Chyba při exportu souboru 3MF %s" + +#: lib/Slic3r/GUI/Plater.pm:1744 +msgid "Error exporting AMF file " +msgstr "Chyba při exportu souboru AMF " + +#: src/slic3r/GUI/Plater.cpp:3564 +#, possible-c-format +msgid "Error exporting AMF file %s" +msgstr "Chyba při exportu souboru AMF %s" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:271 +msgid "Error uploading to print host:" +msgstr "Chyba při nahrávání do tiskového serveru:" + +#: xs/src/slic3r/Utils/OctoPrint.cpp:98 +msgid "Error while uploading to the OctoPrint server" +msgstr "Chyba při nahrávání na server OctoPrint" + +#: src/libslic3r/Zipper.cpp:105 +msgid "Error with zip archive" +msgstr "Chyba v zip archivu" + +#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/GUI_ObjectList.cpp:1431 +msgid "Error! " +msgstr "Chyba! " + +#: src/slic3r/GUI/FirmwareDialog.cpp:610 +#, possible-c-format +msgid "Error: %s" +msgstr "Chyba: %s" + +#: src/slic3r/GUI/Plater.cpp:217 src/slic3r/GUI/Plater.cpp:1028 +#: src/slic3r/GUI/Plater.cpp:1070 +msgid "Estimated printing time" +msgstr "Odhadovaný čas tisku" + +#: lib/Slic3r/GUI/Plater.pm:1618 +msgid "Estimated printing time (normal mode)" +msgstr "Předpokládaná doba tisku (normální režim)" + +#: lib/Slic3r/GUI/Plater.pm:1620 +msgid "Estimated printing time (silent mode)" +msgstr "Předpokládaná doba tisku (tichý režim)" + +#: src/slic3r/GUI/Plater.cpp:424 +msgid "Everywhere" +msgstr "Všude" + +#: src/slic3r/GUI/PresetHints.cpp:46 +#, possible-c-format +msgid "except for the first %d layers" +msgstr "s výjimkou prvních %d vrstev" + +#: src/slic3r/GUI/PresetHints.cpp:50 +msgid "except for the first layer" +msgstr "vyjma první vrstvy" + +#: src/slic3r/GUI/UpdateDialogs.cpp:148 +#, possible-c-format +msgid "Exit %s" +msgstr "Ukončit %s" + +#: src/slic3r/GUI/UpdateDialogs.cpp:144 +msgid "Exit Slic3r" +msgstr "Ukončit Slic3r" + +#: src/libslic3r/PrintConfig.cpp:335 +msgid "Experimental option for preventing support material from being generated under bridged areas." +msgstr "Experimentální nastavení pro zabránění tvorbě podpěr v oblastech po mosty." + +#: src/libslic3r/PrintConfig.cpp:1306 +msgid "Experimental option to adjust flow for overhangs (bridge flow will be used), to apply bridge speed to them and enable fan." +msgstr "Experimentální volba pro nastavení průtoku pro přesahy (použije se průtok jako u mostů), aplikuje se na ně rychlost mostu a spustí se ventilátor." + +#: src/slic3r/GUI/GUI_App.cpp:676 src/slic3r/GUI/wxExtensions.cpp:2461 +msgid "Expert" +msgstr "Expert" + +#: src/slic3r/GUI/GUI_App.cpp:676 +msgid "Expert View Mode" +msgstr "Režim Expert" + +#: src/slic3r/GUI/MainFrame.cpp:602 src/slic3r/GUI/Plater.cpp:3821 +msgid "Export" +msgstr "Exportovat" + +#: src/slic3r/GUI/MainFrame.cpp:373 +msgid "Export &Config" +msgstr "Exportovat Konfigura&ci" + +#: src/slic3r/GUI/MainFrame.cpp:362 src/slic3r/GUI/MainFrame.cpp:602 +msgid "Export &G-code" +msgstr "Exportovat &G-code" + +#: src/libslic3r/PrintConfig.cpp:2949 +msgid "Export 3MF" +msgstr "Exportovat 3MF" + +#: src/slic3r/GUI/MainFrame.cpp:375 +msgid "Export all presets to file" +msgstr "Exportovat všechna přednastavení do souboru" + +#: src/libslic3r/PrintConfig.cpp:2954 +msgid "Export AMF" +msgstr "Exportovat AMF" + +#: src/slic3r/GUI/Plater.cpp:1932 +msgid "Export AMF file:" +msgstr "Exportovat AMF soubor:" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1219 src/slic3r/GUI/Plater.cpp:2927 +msgid "Export as STL" +msgstr "Exportovat jako STL" + +#: lib/Slic3r/GUI/Plater.pm:1416 +msgid "Export cancelled" +msgstr "Export zrušen" + +#: src/slic3r/GUI/MainFrame.cpp:375 +msgid "Export Config &Bundle" +msgstr "Exportovat Konfigurační &Balík" + +#: src/slic3r/GUI/MainFrame.cpp:373 +msgid "Export current configuration to file" +msgstr "Exportovat současnou konfiguraci do souboru" + +#: lib/Slic3r/GUI/MainFrame.pm:281 +msgid "Export current plate as 3MF" +msgstr "Exportovat stávající plochu jako 3MF" + +#: src/slic3r/GUI/MainFrame.cpp:370 +msgid "Export current plate as AMF" +msgstr "Exportovat stávající plochu jako AMF" + +#: src/slic3r/GUI/MainFrame.cpp:362 +msgid "Export current plate as G-code" +msgstr "Exportovat stávající plochu do G-code" + +#: src/slic3r/GUI/MainFrame.cpp:366 +msgid "Export current plate as STL" +msgstr "Exportovat stávající plochu jako STL" + +#: src/slic3r/GUI/MainFrame.cpp:368 +msgid "Export current plate as STL including supports" +msgstr "Exportovat stávající plochu včetně podpěr jako STL" + +#: src/slic3r/GUI/Plater.cpp:2722 +msgid "Export failed" +msgstr "Exportování selhalo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 src/slic3r/GUI/Plater.cpp:733 +#: src/slic3r/GUI/Plater.cpp:3821 src/libslic3r/PrintConfig.cpp:2964 +msgid "Export G-code" +msgstr "Exportovat G-code" + +#: lib/Slic3r/GUI/MainFrame.pm:272 +msgid "Export G-code..." +msgstr "Exportovat G-code…" + +#: lib/Slic3r/GUI/Plater.pm:322 +msgid "Export G-code…" +msgstr "Exportovat G-code…" + +#: src/libslic3r/PrintConfig.cpp:2931 +msgid "Export OBJ" +msgstr "Exportovat OBJ" + +#: lib/Slic3r/GUI/Plater.pm:2307 +msgid "Export object as STL…" +msgstr "Exportovat objekt jako STL…" + +#: src/slic3r/Utils/FixModelByWin10.cpp:368 +msgid "Export of a temporary 3mf file failed" +msgstr "Export dočasného 3MF souboru selhalo." + +#: src/slic3r/GUI/MainFrame.cpp:370 +msgid "Export plate as &AMF" +msgstr "Exportovat plochu jako &AMF" + +#: src/slic3r/GUI/MainFrame.cpp:366 +msgid "Export plate as &STL" +msgstr "Exportovat plochu jako &STL" + +#: lib/Slic3r/GUI/MainFrame.pm:281 +msgid "Export plate as 3MF..." +msgstr "Exportovat plochu jako 3MF..." + +#: lib/Slic3r/GUI/MainFrame.pm:278 +msgid "Export plate as AMF..." +msgstr "Exportovat plochu jako AMF..." + +#: src/slic3r/GUI/MainFrame.cpp:368 +msgid "Export plate as STL including supports" +msgstr "Exportovat plochu včetně podpěr jako STL soubor" + +#: lib/Slic3r/GUI/MainFrame.pm:275 +msgid "Export plate as STL..." +msgstr "Exportovat plochu jako STL..." + +#: xs/src/slic3r/GUI/GUI.cpp:930 +msgid "Export print config" +msgstr "Exportovat nastavení tisku" + +#: src/libslic3r/PrintConfig.cpp:2943 +msgid "Export SLA" +msgstr "Exportovat SLA" + +#: src/libslic3r/PrintConfig.cpp:2959 +msgid "Export STL" +msgstr "Exportovat STL" + +#: src/slic3r/GUI/Plater.cpp:1925 +msgid "Export STL file:" +msgstr "Exportovat STL soubor:" + +#: lib/Slic3r/GUI/Plater.pm:326 +msgid "Export STL…" +msgstr "Exportovat STL…" + +#: src/libslic3r/PrintConfig.cpp:2924 +msgid "Export SVG" +msgstr "Exportovat SVG" + +#: src/libslic3r/PrintConfig.cpp:2950 +msgid "Export the model(s) as 3MF." +msgstr "Exportovat model(y) jako 3MF." + +#: src/libslic3r/PrintConfig.cpp:2955 +msgid "Export the model(s) as AMF." +msgstr "Exportovat model(y) jako AMF." + +#: src/libslic3r/PrintConfig.cpp:2932 +msgid "Export the model(s) as OBJ." +msgstr "Exportovat model(y) jako OBJ." + +#: src/libslic3r/PrintConfig.cpp:2960 +msgid "Export the model(s) as STL." +msgstr "Exportovat model(y) jako STL." + +#: src/slic3r/GUI/Plater.cpp:2927 +msgid "Export the selected object as STL file" +msgstr "Exportovat vybrané objekty jako STL soubor" + +#: lib/Slic3r/GUI/Plater.pm:2307 +msgid "Export this single object as STL file" +msgstr "Exportovat tento jediný objekt jako STL soubor" + +#: src/libslic3r/Print.cpp:1517 +msgid "Exporting G-code" +msgstr "Exportování souboru G-code" + +#: src/slic3r/Utils/FixModelByWin10.cpp:341 +msgid "Exporting model..." +msgstr "Exportování modelu..." + +#: src/slic3r/Utils/FixModelByWin10.cpp:219 +#: src/slic3r/Utils/FixModelByWin10.cpp:359 +msgid "Exporting source model" +msgstr "Exportování zdrojového modelu" + +#: src/slic3r/GUI/Tab.cpp:3306 +msgid "Exposure" +msgstr "Osvit" + +#: src/libslic3r/PrintConfig.cpp:2310 src/libslic3r/PrintConfig.cpp:2311 +msgid "Exposure time" +msgstr "Doba osvitu" + +#: src/slic3r/GUI/GUI_Preview.cpp:228 src/libslic3r/GCode/PreviewData.cpp:164 +msgid "External perimeter" +msgstr "Vnější perimetr" + +#: src/slic3r/GUI/PresetHints.cpp:153 +msgid "external perimeters" +msgstr "vnější perimetry" + +#: src/libslic3r/PrintConfig.cpp:415 src/libslic3r/PrintConfig.cpp:425 +msgid "External perimeters" +msgstr "Vnější perimetry" + +#: src/libslic3r/PrintConfig.cpp:437 +msgid "External perimeters first" +msgstr "Nejprve tisknout vnější perimetry" + +#: src/libslic3r/PrintConfig.cpp:1518 src/libslic3r/PrintConfig.cpp:1526 +msgid "Extra length on restart" +msgstr "Extra vzdálenost při návratu" + +#: src/libslic3r/PrintConfig.cpp:1321 +msgid "Extra loading distance" +msgstr "Extra délka při zavádění" + +#: src/libslic3r/PrintConfig.cpp:445 +msgid "Extra perimeters if needed" +msgstr "Extra perimetry (pokud jsou potřeba)" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:335 src/slic3r/GUI/Tab.cpp:1479 +#: src/libslic3r/PrintConfig.cpp:455 +msgid "Extruder" +msgstr "Extruder" + +#: src/slic3r/GUI/Tab.cpp:2253 src/libslic3r/GCode/PreviewData.cpp:475 +#, possible-c-format +msgid "Extruder %d" +msgstr "Extruder %d" + +#: src/slic3r/GUI/ConfigWizard.cpp:592 +msgid "Extruder and Bed Temperatures" +msgstr "Teploty extruderu a podložky" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:226 +msgid "Extruder changed to" +msgstr "Extruder změněn na" + +#: src/slic3r/GUI/Tab.cpp:1171 +msgid "Extruder clearance (mm)" +msgstr "Kolizní oblast extruderu (mm)" + +#: src/libslic3r/PrintConfig.cpp:490 +msgid "Extruder Color" +msgstr "Barva extruderu" + +#: src/libslic3r/PrintConfig.cpp:497 +msgid "Extruder offset" +msgstr "Odsazení extruderu" + +#: src/libslic3r/PrintConfig.cpp:863 +msgid "Extruder temperature for first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output file." +msgstr "Teplota extruderu pro první vrstvu. Chcete-li během tisku ručně ovládat teplotu, nastavte tuto hodnotu na nulu, aby se ve výstupním souboru zakázaly příkazy pro řízení teploty." + +#: src/libslic3r/PrintConfig.cpp:1978 +msgid "Extruder temperature for layers after the first one. Set this to zero to disable temperature control commands in the output." +msgstr "Teplota extruderu pro následující vrstvy po vrstvě první. Nastavte tuto hodnotu na nulu, abyste zakázali příkazy pro řízení teploty na výstupu." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_ObjectList.cpp:72 +#: src/slic3r/GUI/GUI_ObjectList.cpp:513 src/slic3r/GUI/Tab.cpp:1119 +#: src/slic3r/GUI/Tab.cpp:1844 src/libslic3r/PrintConfig.cpp:456 +#: src/libslic3r/PrintConfig.cpp:954 src/libslic3r/PrintConfig.cpp:1340 +#: src/libslic3r/PrintConfig.cpp:1668 src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:1878 src/libslic3r/PrintConfig.cpp:2151 +#: src/libslic3r/PrintConfig.cpp:2159 +msgid "Extruders" +msgstr "Extrudery" + +#: src/libslic3r/PrintConfig.cpp:507 +msgid "Extrusion axis" +msgstr "Osa extruderu" + +#: src/libslic3r/PrintConfig.cpp:513 +msgid "Extrusion multiplier" +msgstr "Násobič extruze" + +#: src/slic3r/GUI/ConfigWizard.cpp:612 +msgid "Extrusion Temperature:" +msgstr "Teplota extruze:" + +#: src/slic3r/GUI/Tab.cpp:1143 +msgid "Extrusion width" +msgstr "Šířka extruze" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:73 src/slic3r/GUI/GUI_ObjectList.cpp:514 +#: src/libslic3r/PrintConfig.cpp:416 src/libslic3r/PrintConfig.cpp:523 +#: src/libslic3r/PrintConfig.cpp:830 src/libslic3r/PrintConfig.cpp:962 +#: src/libslic3r/PrintConfig.cpp:1349 src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1861 src/libslic3r/PrintConfig.cpp:2018 +msgid "Extrusion Width" +msgstr "Šíře extruze" + +#: src/slic3r/GUI/Plater.cpp:139 +msgid "Facets" +msgstr "Facety" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:240 +msgid "facets added" +msgstr "facety přidány" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:239 +msgid "facets removed" +msgstr "facety odebrány" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:241 +msgid "facets reversed" +msgstr "facety otočeny" + +#: src/libslic3r/PrintConfig.cpp:2302 +msgid "Faded layers" +msgstr "Vrstvy počátečního osvitu" + +#: src/libslic3r/Zipper.cpp:47 +msgid "failed finding central directory" +msgstr "selhalo nalezení kořenového adresáře" + +#: src/slic3r/Utils/FixModelByWin10.cpp:235 +msgid "Failed loading the input model." +msgstr "Načtení vstupního modelu se nezdařilo." + +#: src/libslic3r/PrintBase.cpp:65 +msgid "Failed processing of the output_filename_format template." +msgstr "Zpracování šablony output_filename_format selhalo." + +#: src/slic3r/GUI/PresetHints.cpp:38 +msgid "Fan " +msgstr "Ventilátor " + +#: src/slic3r/GUI/Tab.cpp:1501 +msgid "Fan settings" +msgstr "Nastavení ventilátoru" + +#: src/slic3r/GUI/Tab.cpp:1502 +msgid "Fan speed" +msgstr "Rychlost ventilátoru" + +#: src/libslic3r/PrintConfig.cpp:2240 +msgid "Fast" +msgstr "Rychlý" + +#: src/libslic3r/PrintConfig.cpp:2241 +msgid "Fast tilt" +msgstr "Rychlý náklon" + +#: src/slic3r/GUI/GUI_Preview.cpp:212 src/slic3r/GUI/GUI_Preview.cpp:537 +#: src/libslic3r/GCode/PreviewData.cpp:394 +msgid "Feature type" +msgstr "Typ" + +#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/GUI_Preview.cpp:225 +msgid "Feature types" +msgstr "Typy extruzí" + +#: lib/Slic3r/GUI/Plater.pm:256 +msgid "Fewer" +msgstr "Méně" + +#: src/slic3r/GUI/Plater.cpp:682 src/slic3r/GUI/Tab.cpp:1470 +#: src/slic3r/GUI/Tab.cpp:1471 +msgid "Filament" +msgstr "Filament" + +#: src/slic3r/GUI/Preset.cpp:1275 +msgid "filament" +msgstr "filament" + +#: src/slic3r/GUI/ConfigWizard.cpp:541 +msgid "Filament and Nozzle Diameters" +msgstr "Průměry filamentu a trysky" + +#: src/slic3r/GUI/ConfigWizard.cpp:574 +msgid "Filament Diameter:" +msgstr "Průměr filamentu:" + +#: src/libslic3r/PrintConfig.cpp:619 +msgid "Filament is cooled by being moved back and forth in the cooling tubes. Specify desired number of these moves " +msgstr "Filament je chlazen pohyby tam a zpět v chladicí trubičce. Zadejte požadovaný počet těchto pohybů" + +#: src/libslic3r/PrintConfig.cpp:654 +msgid "Filament load time" +msgstr "Doba zavádění filamentu" + +#: src/libslic3r/PrintConfig.cpp:556 +msgid "Filament notes" +msgstr "Poznámky k filamentu" + +#: src/libslic3r/PrintConfig.cpp:1312 +msgid "Filament parking position" +msgstr "Parkovací pozice filamentu" + +#: src/slic3r/GUI/Tab.cpp:1516 +msgid "Filament properties" +msgstr "Vlastnosti filamentu" + +#: src/slic3r/GUI/Tab.hpp:335 +msgid "Filament Settings" +msgstr "Nastavení filamentu" + +#: src/libslic3r/PrintConfig.cpp:694 +msgid "Filament type" +msgstr "Typ filamentu" + +#: src/libslic3r/PrintConfig.cpp:669 +msgid "Filament unload time" +msgstr "Doba vysouvání filamentu" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:47 +msgid "filaments" +msgstr "filamenty" + +#: lib/Slic3r/GUI/Plater.pm:1555 +msgid "File added to print queue" +msgstr "Soubor byl přidán do tiskové fronty" + +#: src/libslic3r/Zipper.cpp:75 +msgid "file close failed" +msgstr "zavření souboru selhalo" + +#: src/libslic3r/Zipper.cpp:69 +msgid "file create failed" +msgstr "vytvoření souboru selhalo" + +#: src/slic3r/GUI/MainFrame.cpp:642 msgid "File Not Found" msgstr "Soubor nenalezen" -#: src/slic3r/GUI/MainFrame.cpp:580 src/slic3r/GUI/Tab.cpp:3152 -msgid "Save " -msgstr "Uložit " +#: src/libslic3r/Zipper.cpp:89 +msgid "file not found" +msgstr "Soubor nenalezen" -#: src/slic3r/GUI/MainFrame.cpp:580 -msgid "SVG" -msgstr "SVG" +#: src/libslic3r/Zipper.cpp:67 +msgid "file open failed" +msgstr "otevření souboru selhalo" -#: src/slic3r/GUI/MainFrame.cpp:580 +#: src/libslic3r/Zipper.cpp:73 +msgid "file read failed" +msgstr "čtení souboru se nezdařilo" + +#: src/libslic3r/Zipper.cpp:77 +msgid "file seek failed" +msgstr "hledání souboru selhalo" + +#: src/libslic3r/Zipper.cpp:79 +msgid "file stat failed" +msgstr "soubor stat selhal" + +#: src/libslic3r/Zipper.cpp:39 +msgid "file too large" +msgstr "soubor je příliš velký" + +#: src/libslic3r/Zipper.cpp:71 +msgid "file write failed" +msgstr "zápis souboru se nezdařil" + +#: src/libslic3r/PrintConfig.cpp:728 +msgid "Fill angle" +msgstr "Úhel výplně" + +#: src/libslic3r/PrintConfig.cpp:742 +msgid "Fill density" +msgstr "Hustota výplně" + +#: src/libslic3r/PrintConfig.cpp:779 +msgid "Fill pattern" +msgstr "Vzor výplně" + +#: src/libslic3r/PrintConfig.cpp:410 +msgid "Fill pattern for bottom infill. This only affects the bottom external visible layer, and not its adjacent solid shells." +msgstr "Vzor výplně pro spodní vrstvy. Ovlivňuje pouze spodní vnější viditelné vrstvy. Neovlivňuje následné plné vrstvy." + +#: src/libslic3r/PrintConfig.cpp:781 +msgid "Fill pattern for general low-density infill." +msgstr "Vzor výplně pro obecnou výplň s nízkou hustotou." + +#: src/libslic3r/PrintConfig.cpp:390 +msgid "Fill pattern for top infill. This only affects the top visible layer, and not its adjacent solid shells." +msgstr "Nastavte vzor pro horní výplň. Ovlivňuje pouze horní viditelnou vrstvu a ne její sousední plné vrstvy." + +#: xs/src/libslic3r/PrintConfig.cpp:285 +msgid "Fill pattern for top/bottom infill. This only affects the external visible layer, and not its adjacent solid shells." +msgstr "Vzor výplně pro vrchní/spodní vrstvy. Ovlivňuje pouze vnější viditelné vrstvy. Neovlivňuje sousední plné vrstvy." + +#: src/libslic3r/SLA/SLASupportTree.cpp:2154 +msgid "Filtering" +msgstr "Filtrování" + +#: src/slic3r/GUI/BonjourDialog.cpp:225 +msgid "Finished" +msgstr "Dokončeno" + +#: src/slic3r/GUI/ConfigWizard.cpp:486 src/slic3r/GUI/Tab.cpp:1920 +msgid "Firmware" +msgstr "Firmware" + +#: src/slic3r/GUI/FirmwareDialog.cpp:740 +msgid "Firmware flasher" +msgstr "Aktualizace firmware" + +#: src/slic3r/GUI/FirmwareDialog.cpp:765 +msgid "Firmware image:" +msgstr "Soubor s firmware:" + +#: src/slic3r/GUI/Tab.cpp:2431 +msgid "Firmware Retraction" +msgstr "Firmware Retrakce" + +#: src/slic3r/GUI/ConfigWizard.cpp:486 +msgid "Firmware Type" +msgstr "Typ firmware" + +#: src/libslic3r/PrintConfig.cpp:812 src/libslic3r/PrintConfig.cpp:821 +#: src/libslic3r/PrintConfig.cpp:829 src/libslic3r/PrintConfig.cpp:862 +msgid "First layer" +msgstr "První vrstva" + +#: src/libslic3r/PrintConfig.cpp:841 +msgid "First layer height" +msgstr "Výška první vrstvy" + +#: src/libslic3r/Print.cpp:1328 +msgid "First layer height can't be greater than nozzle diameter" +msgstr "Výška první vrstvy nesmí být větší než průměr trysky" + +#: src/libslic3r/PrintConfig.cpp:852 +msgid "First layer speed" +msgstr "Rychlost první vrstvy" + +#: src/slic3r/GUI/PresetHints.cpp:216 +msgid "First layer volumetric" +msgstr "Volumetrická hodnota první vrstvy" + +#: src/libslic3r/Print.cpp:1313 +msgid "first_layer_height" +msgstr "first_layer_height" + +#: lib/Slic3r/GUI/Plater.pm:2311 +msgid "Fix STL through Netfabb" +msgstr "Opravit STL pomocí služby Netfabb" + +#: lib/Slic3r/GUI/Plater.pm:2311 +msgid "Fix the model by sending it to a Netfabb cloud service through Windows 10 API" +msgstr "Opravit model zasláním do cloudové služby Netfabb pomocí Window 10 API" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1210 +msgid "Fix through the Netfabb" +msgstr "Opravit pomocí služby Netfabb" + +#: src/slic3r/GUI/GUI_App.cpp:685 +msgid "Flash printer &firmware" +msgstr "Nahrát &firmware tiskárny" + +#: xs/src/slic3r/GUI/GUI.cpp:356 +msgid "Flash printer firmware" +msgstr "Nahrát firmware tiskárny" + +#: src/slic3r/GUI/FirmwareDialog.cpp:146 +msgid "Flash!" +msgstr "Nahrát!" + +#: src/slic3r/GUI/FirmwareDialog.cpp:275 +msgid "Flashing cancelled." +msgstr "Nahrávání zrušeno." + +#: src/slic3r/GUI/FirmwareDialog.cpp:274 +msgid "Flashing failed. Please see the avrdude log below." +msgstr "Nahrání selhalo. Projděte si prosím avrdude log níže." + +#: src/slic3r/GUI/FirmwareDialog.cpp:192 +msgid "Flashing failed: " +msgstr "Nahrávání selhalo:" + +#: src/slic3r/GUI/FirmwareDialog.cpp:148 +msgid "Flashing in progress. Please do not disconnect the printer!" +msgstr "Probíhá nahrávání firmware. Prosím neodpojujte tiskárnu!" + +#: src/slic3r/GUI/FirmwareDialog.cpp:273 +msgid "Flashing succeeded!" +msgstr "Nahrávání bylo úspěšné!" + +#: src/slic3r/GUI/Tab.cpp:1156 +msgid "Flow" +msgstr "Průtok" + +#: src/slic3r/GUI/UpdateDialogs.cpp:188 +msgid "For more information please visit our wiki page:" +msgstr "Pro více informací prosím navštivte naší wiki stránku:" + +#: src/slic3r/GUI/Tab.cpp:1295 +msgid "For the Wipe Tower to work with the soluble supports, the support layers\nneed to be synchronized with the object layers.\n\nShall I synchronize support layers in order to enable the Wipe Tower?" +msgstr "U čistící věže pokud pracujte s rozpustnými materiály, je třeba\nsynchronizovat vrstvy podpěr s vrstvami objektů.\n\nMám synchronizovat vrstvy podpěr, aby bylo možné zapnout Čistící věž?" + +#: src/libslic3r/Print.cpp:1302 +msgid "For the Wipe Tower to work with the soluble supports, the support layers need to be synchronized with the object layers." +msgstr "U čistící věže pokud pracujte s rozpustnými materiály, je třeba\nsynchronizovat vrstvy podpěr s vrstvami objektů." + +#: src/libslic3r/PrintConfig.cpp:1660 +msgid "Force solid infill for regions having a smaller area than the specified threshold." +msgstr "Vynucení plné výplně pro oblasti, které mají menší plochu, než je stanovená prahová hodnota." + +#: src/libslic3r/PrintConfig.cpp:1023 +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 "Vynucení vytváření pevných skořepin mezi sousedními materiály/objemy. Užitečné pro tisk s více extrudery s průsvitnými materiály nebo ručně rozpustným podpůrným materiálem." + +#: src/slic3r/GUI/WipeTowerDialog.cpp:262 +msgid "From" +msgstr "Předchozí extruder" + +#: src/slic3r/GUI/MainFrame.cpp:525 +msgid "Front" +msgstr "Zepředu" + +#: src/slic3r/GUI/MainFrame.cpp:525 +msgid "Front View" +msgstr "Pohled zepředu" + +#: src/slic3r/GUI/Tab.cpp:2151 +msgid "Full Power" +msgstr "Plný výkon (režim Normal)" + +#: src/slic3r/GUI/MainFrame.cpp:677 msgid "G-code" msgstr "G-code" -# Context: L('Save ') . ($params{export_svg} ? L('SVG') : L('G-code')) . L(' file as:'), e.g. "Save G-Code file as:" -#: src/slic3r/GUI/MainFrame.cpp:580 -msgid " file as:" -msgstr " soubor jako:" +#: lib/Slic3r/GUI/Plater.pm:1561 +msgid "G-code file exported to " +msgstr "Soubor G-code byl exportován do " -#: src/slic3r/GUI/MainFrame.cpp:595 -msgid "Save zip file as:" -msgstr "" +#: src/libslic3r/PrintConfig.cpp:888 +msgid "G-code flavor" +msgstr "Druh G-code" -#: src/slic3r/GUI/MainFrame.cpp:607 src/slic3r/GUI/Plater.cpp:2352 -#: src/slic3r/GUI/Plater.cpp:3467 src/slic3r/GUI/Tab.cpp:1110 -#: src/slic3r/GUI/Tab.cpp:3348 -msgid "Slicing" -msgstr "Slicování" +#: src/libslic3r/PrintConfig.cpp:689 +msgid "g/cm³" +msgstr "g/cm³" -#: src/slic3r/GUI/MainFrame.cpp:607 +#: src/slic3r/GUI/GUI_Preview.cpp:234 src/libslic3r/PrintConfig.cpp:870 +#: src/libslic3r/GCode/PreviewData.cpp:170 +msgid "Gap fill" +msgstr "Výplň tenkých stěn" + +#: src/slic3r/GUI/Preferences.cpp:19 src/slic3r/GUI/Tab.cpp:1812 +#: src/slic3r/GUI/Tab.cpp:2013 +msgid "General" +msgstr "Obecné" + +#: src/libslic3r/PrintConfig.cpp:1242 +msgid "Generate no less than the number of skirt loops required to consume the specified amount of filament on the bottom layer. For multi-extruder machines, this minimum applies to each extruder." +msgstr "Nevygenerovat méně, než počet obrysových smyček, potřebných ke spotřebování specifikovaného množství filamentu na spodní vrstvu. U strojů s více extrudery platí toto minimum pro každý extruder." + +#: src/libslic3r/SLA/SLASupportTree.cpp:2155 +msgid "Generate pinheads" +msgstr "Generovat podpůrné hroty" + +#: src/libslic3r/PrintConfig.cpp:1779 +msgid "Generate support material" +msgstr "Generovat podpěry" + +#: src/libslic3r/PrintConfig.cpp:1840 +msgid "Generate support material for the specified number of layers counting from bottom, regardless of whether normal support material is enabled or not and regardless of any angle threshold. This is useful for getting more adhesion of objects having a very thin or poor footprint on the build plate." +msgstr "Vygeneruje podpěry pro zadaný počet vrstev počítaných od spodního okraje, bez ohledu na to, zda jsou povoleny standartní podpěry nebo nikoliv a bez ohledu na jakýkoli prah úhlu. To je užitečné pro získání větší přilnavosti předmětů s velmi tenkou nebo špatnou stopou na tiskové podložce." + +#: src/libslic3r/PrintConfig.cpp:2362 +msgid "Generate supports" +msgstr "Generovat podpěry" + +#: src/libslic3r/PrintConfig.cpp:2364 +msgid "Generate supports for the models" +msgstr "Generovat podpěry modelů" + +#: src/libslic3r/Print.cpp:1492 +msgid "Generating brim" +msgstr "Generování límce" + +#: src/libslic3r/SLAPrint.cpp:58 +msgid "Generating pad" +msgstr "Generování podložky" + +#: src/libslic3r/Print.cpp:1484 +msgid "Generating skirt" +msgstr "Generování obrysových smyček" + +#: src/libslic3r/SLAPrint.cpp:56 src/libslic3r/SLAPrint.cpp:809 +msgid "Generating support points" +msgstr "Generování podpěrných bodů" + +#: src/libslic3r/SLAPrint.cpp:57 +msgid "Generating support tree" +msgstr "Generování podpěr typu strom" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1551 +msgid "Generic" +msgstr "Obecný" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 +msgid "Gizmo cut" +msgstr "Gizmo řez" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +msgid "Gizmo move" +msgstr "Gizmo posuv" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 +msgid "Gizmo Place face on bed" +msgstr "Gizmo Umístit plochou na podložku" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 +msgid "Gizmo rotate" +msgstr "Gizmo rotace" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 +msgid "Gizmo scale" +msgstr "Gizmo měřítko" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 +msgid "Gizmo SLA support points" +msgstr "Gizmo SLA podpěrné body" + +#: src/slic3r/GUI/ConfigWizard.cpp:571 +msgid "Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." +msgstr "Je zapotřebí velká přesnost, proto použijte posuvné měřítko (šupleru) a proveďte několik měření po délce filamentu, poté vypočítejte průměr." + +#: src/libslic3r/PrintConfig.cpp:797 +msgid "Grid" +msgstr "Mřížka" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1846 +msgid "Group manipulation" +msgstr "Manipulace se skupinou" + +#: src/libslic3r/PrintConfig.cpp:805 +msgid "Gyroid" +msgstr "Gyroid" + +#: src/slic3r/GUI/Tab.cpp:2775 +msgid "has the following unsaved changes:" +msgstr "má neuložené následující změny:" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:838 +msgid "Head diameter: " +msgstr "Průměr hrotu:" + +#: src/slic3r/GUI/Tab.cpp:3483 +msgid "Head penetration should not be greater than the head width." +msgstr "Průnik podpěry do modelu by neměl být větší než je tloušťka hrotu podpěry." + +#: src/libslic3r/PrintConfig.cpp:822 +msgid "Heated build plate temperature for the first layer. Set this to zero to disable bed temperature control commands in the output." +msgstr "Teplota vyhřívané tiskové podložky pro první vrstvu. Nastavením tuto hodnoty na nulu vypnete příkazy pro řízení teploty ve vrstvě ve výstupu." + +#: src/slic3r/GUI/GUI_Preview.cpp:213 src/libslic3r/PrintConfig.cpp:468 +msgid "Height" +msgstr "Výška" + +#: src/libslic3r/GCode/PreviewData.cpp:396 +msgid "Height (mm)" +msgstr "Výška (mm)" + +#: src/libslic3r/PrintConfig.cpp:1618 +msgid "Height of skirt expressed in layers. Set this to a tall value to use skirt as a shield against drafts." +msgstr "Výška obrysu vyjádřená ve vrstvách. Nastavte tuto hodnotu vysokou, pro použití obrysu jako stínění proti průvanu." + +#: src/libslic3r/PrintConfig.cpp:2209 +msgid "Height of the display" +msgstr "Výška displeje" + +#: src/libslic3r/PrintConfig.cpp:225 +msgid "Heights at which a filament change is to occur. " +msgstr "Výšky, při kterých má dojít ke změně filamentu." + +#: src/slic3r/GUI/ConfigWizard.cpp:300 +#, possible-c-format +msgid "Hello, welcome to %s! This %s helps you with the initial configuration; just a few settings and you will be ready to print." +msgstr "Zdravím, vítejte v %s! Tento %s vám pomůže se základní konfigurací; jen několik nastavení a budete připraveni k tisku." + +#: src/slic3r/GUI/ConfigWizard.cpp:290 +#, possible-c-format +msgid "Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial configuration; just a few settings and you will be ready to print." +msgstr "Zdravím, vítejte ve Slic3r Prusa Edition! Tento %s vám pomůže se základní konfigurací; jen několik nastavení a budete připraveni k tisku." + +#: src/libslic3r/PrintConfig.cpp:2976 +msgid "Help" +msgstr "Nápověda" + +#: src/libslic3r/PrintConfig.cpp:2982 +msgid "Help (FFF options)" +msgstr "Nápověda (pro FFF)" + +#: src/libslic3r/PrintConfig.cpp:2987 +msgid "Help (SLA options)" +msgstr "Nápověda (pro SLA)" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:225 +msgid "Here you can adjust required purging volume (mm³) for any given pair of tools." +msgstr "Zde můžete upravit požadovaný objem čištění (mm³) pro kteroukoliv dvojici extruderů." + +#: src/libslic3r/PrintConfig.cpp:925 +msgid "High extruder current on filament swap" +msgstr "Zvýšený proud do extruderového motoru při výměně filamentu" + +#: src/libslic3r/PrintConfig.cpp:400 src/libslic3r/PrintConfig.cpp:806 +msgid "Hilbert Curve" +msgstr "Hilbertova křivka" + +#: src/slic3r/GUI/Plater.cpp:873 +msgid "Hold Shift to Slice & Export G-code" +msgstr "Stiskni Shift pro Slicování & Export G-codu" + +#: src/libslic3r/PrintConfig.cpp:803 src/libslic3r/PrintConfig.cpp:1924 +msgid "Honeycomb" +msgstr "Plástev" + +#: src/slic3r/GUI/Tab.cpp:1013 +msgid "Horizontal shells" +msgstr "Vodorovné stěny" + +#: src/libslic3r/PrintConfig.cpp:209 +msgid "Horizontal width of the brim that will be printed around each object on the first layer." +msgstr "Šírka límce který bude vytištěn v první vrstvě okolo každého objektu." + +#: src/libslic3r/PrintConfig.cpp:1267 +msgid "Host Type" +msgstr "Typ tiskového serveru" + +#: src/slic3r/GUI/BonjourDialog.cpp:73 +msgid "Hostname" +msgstr "Název serveru" + +#: src/libslic3r/PrintConfig.cpp:81 +msgid "Hostname, IP or URL" +msgstr "Název serveru, IP nebo URL" + +#: src/slic3r/GUI/Tab.cpp:136 +msgid "Hover the cursor over buttons to find more information \nor click this button." +msgstr "Pro více informací přejeďte kurzorem nad tlačítky\nnebo na tlačítko klikněte." + +#: src/libslic3r/PrintConfig.cpp:2380 +msgid "How much the pinhead has to penetrate the model surface" +msgstr "Jak moc hrot podpěry pronikne do povrchu modelu" + +#: src/libslic3r/PrintConfig.cpp:2491 +msgid "How much the supports should lift up the supported object." +msgstr "O jakou vzdálenost mají podpěry zvednout objekt." + +#: src/libslic3r/PrintConfig.cpp:95 +msgid "HTTPS CA File" +msgstr "Soubor HTTPS CA" + +#: src/slic3r/GUI/Tab.cpp:1731 +msgid "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate." +msgstr "Soubor HTTPS CA je volitelný. Je nutný pouze pokud použijte HTTPS certifikát s vlastním podpisem." + +#: src/slic3r/GUI/Tab.cpp:1773 +#, possible-c-format +msgid "HTTPS CA File:\n \tOn this system, %s uses HTTPS certificates from the system Certificate Store or Keychain.\n \tTo use a custom CA file, please import your CA file into Certificate Store / Keychain." +msgstr "Soubor HTTPS CA:\nV tomto systému používá %s certifikáty HTTPS ze systému Certificate Store nebo Keychain. Chcete-li použít vlastní soubor CA, importujte soubor CA do Certificate Store / Keychain." + +#: src/slic3r/GUI/Tab.cpp:1725 +msgid "HTTPS CA File:\n\tOn this system, Slic3r uses HTTPS certificates from the system Certificate Store or Keychain.\n\tTo use a custom CA file, please import your CA file into Certificate Store / Keychain." +msgstr "Soubor HTTPS CA:\nV tomto systému používá Slic3r certifikáty HTTPS ze systému Certificate Store nebo Keychain. Chcete-li použít vlastní soubor CA, importujte soubor CA do Certificate Store / Keychain." + +#: src/libslic3r/PrintConfig.cpp:1787 +msgid "If checked, supports will be generated automatically based on the overhang threshold value. If unchecked, supports will be generated inside the \"Support Enforcer\" volumes only." +msgstr "Pokud je zaškrtnuto, budou podpěry generovány automaticky na základě prahové hodnoty převisu. Pokud není zaškrtnuto, bude podpěra generována pouze v místech, kde je umístěn objekt pro \"Vynucení podpěr\"." + +#: src/slic3r/GUI/ConfigWizard.cpp:413 +#, possible-c-format +msgid "If enabled, %s checks for new application versions online. When a new version becomes available, a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." +msgstr "Pokud je povoleno, kontroluje %s nově dostupné verze. V případě, že je nová verze k dispozici, zobrazí se notifikace při dalším startu programu (nikdy během užívání aplikace). Tento systém slouží pouze pro upozornění uživatele, nedochází k automatické instalaci." + +#: src/slic3r/GUI/ConfigWizard.cpp:423 +#, possible-c-format +msgid "If enabled, %s downloads updates of built-in system presets in the background.These updates are downloaded into a separate temporary location.When a new preset version becomes available it is offered at application startup." +msgstr "Pokud je povoleno, stáhne %s na pozadí aktualizace vestavěných systémových přednastavení. Tyto aktualizace jsou staženy do dočasného umístění. Pokud je k dispozici nové přednastavení, zobrazí se upozornění při startu programu." + +#: src/libslic3r/PrintConfig.cpp:1774 +msgid "If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print." +msgstr "Pokud je tato možnost povolena, všechny tiskové extrudery na začátku tisku vytlačí na předním okraji podložky malé množství materiálu." + +#: src/slic3r/GUI/Preferences.cpp:63 +msgid "If enabled, Slic3r checks for new versions of " +msgstr "Pokud je povoleno, Slic3r kontroluje dostupnost nové verze" + +#: src/slic3r/GUI/ConfigWizard.cpp:401 src/slic3r/GUI/Preferences.cpp:61 +msgid "If enabled, Slic3r checks for new versions of Slic3r PE online. When a new version becomes available a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." +msgstr "Pokud je povoleno, kontroluje Slic3r nově dostupné verze Slic3r PE. V případě, že je nová verze k dispozici, zobrazí se notifikace při dalším startu programu (nikdy během užívání aplikace). Tento systém slouží pouze pro upozornění uživatele, nedochází k automatické instalaci." + +#: src/slic3r/GUI/Preferences.cpp:71 +msgid "If enabled, Slic3r downloads updates of built-in system presets in the background. These updates are downloaded into a separate temporary location. When a new preset version becomes available it is offered at application startup." +msgstr "Pokud je povoleno, stáhne Slic3r na pozadí aktualizace vestavěných systémových přednastavení. Tyto aktualizace jsou staženy do dočasného umístění. Pokud je k dispozici nové přednastavení, zobrazí se upozornění při startu programu." + +#: src/slic3r/GUI/Preferences.cpp:105 +msgid "If enabled, the 3D scene will be rendered in Retina resolution. If you are experiencing 3D performance problems, disabling this option may help." +msgstr "Pokud je tato volba povolena, bude 3D scéna vykreslena v rozlišení Retina. Pokud dochází k potížím s výkonem, zkuste tuto volbu vypnout." + +#: src/slic3r/GUI/PresetHints.cpp:28 +#, possible-c-format +msgid "If estimated layer time is below ~%ds, fan will run at %d%% and print speed will be reduced so that no less than %ds are spent on that layer (however, speed will never be reduced below %dmm/s)." +msgstr "Pokud je odhadovaný čas vrstvy nižší než ~% ds, bude ventilátor pracovat na %d%% a rychlost tisku bude snížena tak, aby na tuto vrstvu nebylo použito méně než %ds (rychlost však nikdy nebude snížena pod %dmm/s)." + +#: src/libslic3r/PrintConfig.cpp:853 +msgid "If expressed as absolute value in mm/s, this speed will be applied to all the print moves of the first layer, regardless of their type. If expressed as a percentage (for example: 40%) it will scale the default speeds." +msgstr "Pokud je vyjádřena jako absolutní hodnota v mm / s, bude tato rychlost použita pro všechny pohyby tisku první vrstvy bez ohledu na jejich typ. Pokud je hodnota vyjádřena procenty (například: 40%), změní v závislosti na výchozích rychlostech." + +#: src/libslic3r/PrintConfig.cpp:540 +msgid "If layer print time is estimated below this number of seconds, fan will be enabled and its speed will be calculated by interpolating the minimum and maximum speeds." +msgstr "Pokud je doba tisku vrstvy odhadnuta jako kratší než tato nastavená hodnota ve vteřinách, ventilátor bude aktivován a jeho rychlost bude vypočtena interpolací minimální a maximální rychlosti." + +#: src/libslic3r/PrintConfig.cpp:1636 +msgid "If layer print time is estimated below this number of seconds, print moves speed will be scaled down to extend duration to this value." +msgstr "Pokud je doba tisku vrstvy odhadnuta kratší než tento počet sekund, rychlost tisku se zpomalí, aby se prodloužila doba tisku této vrstvy." + +#: src/libslic3r/PrintConfig.cpp:534 +msgid "If this is enabled, fan will never be disabled and will be kept running at least at its minimum speed. Useful for PLA, harmful for ABS." +msgstr "Pokud je tato funkce zapnutá, ventilátor nebude nikdy vypnut a bude udržován v chodu alespoň rychlostí která je nastavena jako minimální rychlost. Užitečné pro PLA, škodlivé pro ABS." + +#: src/slic3r/GUI/Preferences.cpp:46 +msgid "If this is enabled, Slic3r will auto-center objects around the print bed center." +msgstr "Pokud je tato možnost povolena, Slic3r bude automaticky centrovat objekty kolem středu tiskové plochy." + +#: src/slic3r/GUI/Preferences.cpp:54 +msgid "If this is enabled, Slic3r will pre-process objects as soon as they're loaded in order to save time when exporting G-code." +msgstr "Pokud je tato možnost povolena, Slic3r předprojektuje objekty, jakmile budou načteny, aby šetřil čas při exportu G-code." + +#: src/slic3r/GUI/Preferences.cpp:38 +msgid "If this is enabled, Slic3r will prompt the last output directory instead of the one containing the input files." +msgstr "Pokud je tato volba povolena, Slic3r vyvolá poslední výstupní adresář namísto toho, který obsahuje vstupní soubory." + +#: src/slic3r/GUI/Preferences.cpp:95 +msgid "If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may try to check this checkbox. This will disable the layer height editing and anti aliasing, so it is likely better to upgrade your graphics driver." +msgstr "Pokud máte problémy s vykreslováním způsobené chybným ovladačem OpenGL 2.0, můžete se pokusit zaškrtnout toto políčko. Tím se vypnou úpravy výšky hladiny a vyhlazení, takže je lepší upgradovat grafický ovladač." + +#: src/libslic3r/PrintConfig.cpp:1492 +msgid "If you set this to a positive value, Z is quickly raised every time a retraction is triggered. When using multiple extruders, only the setting for the first extruder will be considered." +msgstr "Zadáním kladné hodnoty, se Z rychle přizvedne při každém vyvolání retrakce. Při použití více extruderů bude použito pouze nastavení pro první extruder." + +#: src/libslic3r/PrintConfig.cpp:1501 +msgid "If you set this to a positive value, Z lift will only take place above the specified absolute Z. You can tune this setting for skipping lift on the first layers." +msgstr "Zadáním kladné hodnoty se zdvih Z uskuteční pouze nad zadanou absolutní hodnotou Z. Toto nastavení můžete zvolit pro přeskočení přizvednutí u prvních vrstev." + +#: src/libslic3r/PrintConfig.cpp:1510 +msgid "If you set this to a positive value, Z lift will only take place below the specified absolute Z. You can tune this setting for limiting lift to the first layers." +msgstr "Zadáním kladné hodnoty se zdvih Z uskuteční pouze pod zadanou absolutní hodnotou Z. Toto nastavení můžete zvolit pro přeskočení přizvednutí u prvních vrstev." + +#: src/libslic3r/PrintConfig.cpp:1384 +msgid "If you want to process the output G-code through custom scripts, just list their absolute paths here. Separate multiple scripts with a semicolon. Scripts will be passed the absolute path to the G-code file as the first argument, and they can access the Slic3r config settings by reading environment variables." +msgstr "Pokud chcete zpracovat výstupní G-code pomocí vlastních skriptů, stačí zde uvést jejich absolutní cesty. Oddělte více skriptů středníkem. Skripty předají absolutní cestu k souboru G-code jako první argument a mohou přistupovat k nastavení konfigurace Slic3ru čtením proměnných prostředí." + +#: src/libslic3r/PrintConfig.cpp:498 +msgid "If your firmware doesn't handle the extruder displacement you need the G-code to take it into account. This option lets you specify the displacement of each extruder with respect to the first one. It expects positive coordinates (they will be subtracted from the XY coordinate)." +msgstr "Pokud firmware nezpracovává umístění extruderu správně, potřebujete aby to vzal G-code v úvahu. Toto nastavení umožňuje určit odsazení každého extruderu vzhledem k prvnímu. Očekávají se pozitivní souřadnice (budou odečteny od souřadnice XY)." + +#: src/libslic3r/PrintConfig.cpp:2068 +msgid "If your firmware requires relative E values, check this, otherwise leave it unchecked. Most firmwares use absolute values." +msgstr "Pokud váš firmware vyžaduje relativní hodnoty E, zaškrtněte toto, jinak nechte nezaškrtnuté. Většina firmwarů používá absolutní hodnoty." + +#: src/libslic3r/PrintConfig.cpp:3096 +msgid "Ignore non-existent config files" +msgstr "Ignorovat neexistující konfigurační soubory" + +#: src/slic3r/GUI/MainFrame.cpp:352 +msgid "Import &Config" +msgstr "Importovat Konfigura&ci" + +#: src/slic3r/GUI/MainFrame.cpp:357 +msgid "Import Config &Bundle" +msgstr "Importovat Konfigurační &Balík" + +#: src/slic3r/GUI/MainFrame.cpp:354 +msgid "Import Config from &project" +msgstr "Načíst konfiguraci z &projektu" + +#: src/slic3r/Utils/FixModelByWin10.cpp:383 +msgid "Import of the repaired 3mf file failed" +msgstr "Import opraveného 3MF souboru selhal" + +#: src/slic3r/GUI/MainFrame.cpp:349 +msgid "Import STL/OBJ/AM&F/3MF" +msgstr "Importovat STL/OBJ/AM&F/3MF" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 +msgid "Import STL/OBJ/AMF/3MF without config, keep bed" +msgstr "Nahrát soubor STL/OBJ/AMF/3MF bez konfigurace (zachová stávající tiskovou plochu)" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2416 +#, possible-c-format +msgid "In this mode you can select only other %s Items%s" +msgstr "V tomto režimu můžete vybrat pouze jinou/jiný %s %s" + +#: src/slic3r/GUI/UpdateDialogs.cpp:132 +msgid "Incompatible bundles:" +msgstr "Nekompatibilní balíky:" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:70 +#, possible-c-format +msgid "Incompatible with this %s" +msgstr "Nekompatibilní s tímto %s" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:69 +msgid "Incompatible with this Slic3r" +msgstr "Nekompatibilní s tímto Slic3rem" + +#: src/slic3r/GUI/Plater.cpp:2813 src/slic3r/GUI/Plater.cpp:2825 +#: src/slic3r/GUI/Plater.cpp:2897 +msgid "Increase copies" +msgstr "Přidat kopie" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:29 src/slic3r/GUI/GUI_ObjectList.cpp:69 +#: src/slic3r/GUI/GUI_ObjectList.cpp:510 src/slic3r/GUI/Plater.cpp:439 +#: src/slic3r/GUI/Tab.cpp:1030 src/slic3r/GUI/Tab.cpp:1031 +#: src/slic3r/GUI/Tab.cpp:1360 src/libslic3r/PrintConfig.cpp:167 +#: src/libslic3r/PrintConfig.cpp:389 src/libslic3r/PrintConfig.cpp:729 +#: src/libslic3r/PrintConfig.cpp:743 src/libslic3r/PrintConfig.cpp:780 +#: src/libslic3r/PrintConfig.cpp:933 src/libslic3r/PrintConfig.cpp:943 +#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:979 +#: src/libslic3r/PrintConfig.cpp:998 src/libslic3r/PrintConfig.cpp:1659 +#: src/libslic3r/PrintConfig.cpp:1676 +msgid "Infill" +msgstr "Výplň" + +#: src/slic3r/GUI/PresetHints.cpp:171 +msgid "infill" +msgstr "výplň" + +#: src/libslic3r/PrintConfig.cpp:972 +msgid "Infill before perimeters" +msgstr "Tisknout výplň před tiskem perimetrů" + +#: src/libslic3r/PrintConfig.cpp:953 +msgid "Infill extruder" +msgstr "Extruder pro výplň" + +#: src/libslic3r/PrintConfig.cpp:987 +msgid "Infill/perimeters overlap" +msgstr "Přesah pro výplň/perimetry" + +#: src/libslic3r/Print.cpp:1476 +msgid "Infilling layers" +msgstr "Generování výplně vrstev" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2424 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2497 src/slic3r/GUI/Plater.cpp:118 +msgid "Info" +msgstr "Info" + +#: src/libslic3r/PrintConfig.cpp:1008 +msgid "Inherits profile" +msgstr "Zdědí profil" + +#: src/libslic3r/PrintConfig.cpp:2317 src/libslic3r/PrintConfig.cpp:2318 +msgid "Initial exposure time" +msgstr "Doba počátečního osvitu" + +#: src/libslic3r/PrintConfig.cpp:2295 src/libslic3r/PrintConfig.cpp:2296 +msgid "Initial layer height" +msgstr "Výška první vrstvy" + +#: src/slic3r/GUI/Field.cpp:155 +msgid "Input value is out of range" +msgstr "Zadaná hodnota je mimo rozsah" + +#: src/slic3r/GUI/GUI_App.cpp:661 +msgid "Inspect / activate configuration snapshots" +msgstr "Zkontrolovat / aktivovat zálohy konfigurace" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1887 +msgid "Instance manipulation" +msgstr "Manipulace s instancí objektu" + +#: src/slic3r/GUI/wxExtensions.cpp:358 +msgid "Instances" +msgstr "Instance" + +#: src/slic3r/GUI/wxExtensions.cpp:365 +#, possible-c-format +msgid "Instance_%d" +msgstr "Instance_%d" + +#: src/libslic3r/PrintConfig.cpp:1886 +msgid "Interface layers" +msgstr "Kontaktní vrstvy" + +#: src/libslic3r/PrintConfig.cpp:1870 +msgid "Interface loops" +msgstr "Kontaktní smyčky" + +#: src/libslic3r/PrintConfig.cpp:1895 +msgid "Interface pattern spacing" +msgstr "Rozteč kontaktních vrstev" + +#: src/libslic3r/PrintConfig.cpp:1022 +msgid "Interface shells" +msgstr "Mezilehlé stěny" + +#: src/libslic3r/Zipper.cpp:87 +msgid "internal error" +msgstr "interní chyba" + +#: src/slic3r/GUI/GUI_Preview.cpp:230 src/libslic3r/GCode/PreviewData.cpp:166 +msgid "Internal infill" +msgstr "Vnitřní výplň" + +#: xs/src/slic3r/Utils/OctoPrint.cpp:120 +msgid "Invalid API key" +msgstr "Neplatný API klíč" + +#: src/slic3r/GUI/Plater.cpp:2397 +msgid "Invalid data" +msgstr "Neplatná data" + +#: src/libslic3r/Zipper.cpp:83 +msgid "invalid filename" +msgstr "neplatný název souboru" + +#: src/slic3r/GUI/Tab.cpp:3484 +msgid "Invalid Head penetration" +msgstr "Neplatný průnik podpěry do modelu" + +#: src/libslic3r/Zipper.cpp:51 +msgid "invalid header or archive is corrupted" +msgstr "neplatná hlavička nebo je archiv poškozen" + +#: src/slic3r/GUI/Field.cpp:150 src/slic3r/GUI/Field.cpp:173 +msgid "Invalid numeric input." +msgstr "Neplatný číselný vstup." + +#: src/libslic3r/Zipper.cpp:81 +msgid "invalid parameter" +msgstr "neplatný parametr" + +#: src/slic3r/GUI/Tab.cpp:3497 +msgid "Invalid pinhead diameter" +msgstr "Neplatný průměr hrotu" + +#: lib/Slic3r/GUI/Plater.pm:1042 +msgid "Invalid rotation angle entered" +msgstr "Zadán neplatný úhel natočení" + +#: lib/Slic3r/GUI/Plater.pm:1133 lib/Slic3r/GUI/Plater.pm:1137 +#: lib/Slic3r/GUI/Plater.pm:1158 lib/Slic3r/GUI/Plater.pm:1163 +msgid "Invalid scaling value entered" +msgstr "Zadána neplatná hodnota pro úpravu rozměru" + +#: src/slic3r/GUI/Tab.cpp:2779 +msgid "is not compatible with print profile" +msgstr "není kompatibilní s tiskovým profilem" + +#: src/slic3r/GUI/Tab.cpp:2778 +msgid "is not compatible with printer" +msgstr "není kompatibilní s tiskárnou" + +#: src/slic3r/GUI/MainFrame.cpp:519 +msgid "Iso" +msgstr "Izometrické" + +#: src/slic3r/GUI/MainFrame.cpp:519 +msgid "Iso View" +msgstr "Izometrické zobrazení" + +#: src/slic3r/GUI/Tab.cpp:914 +msgid "It can't be deleted or modified. " +msgstr "Nelze smazat nebo upravit. " + +#: src/libslic3r/PrintConfig.cpp:926 +msgid "It may be beneficial to increase the extruder motor current during the filament exchange sequence to allow for rapid ramming feed rates and to overcome resistance when loading a filament with an ugly shaped tip." +msgstr "Může být užitečné zvýšit proud motoru extruderu během sekvence výměny filamentu, aby se umožnily vysoké rychlosti zavádění filamentu a aby se překonal odpor při zavádění filamentu s ošklivě tvarovanou špičkou." + +#: src/slic3r/GUI/Tab.cpp:907 +msgid "It's a default preset." +msgstr "Je to výchozí přednastavení." + +#: src/slic3r/GUI/Tab.cpp:908 +msgid "It's a system preset." +msgstr "Jedná se o systémové přednastavení." + +#: src/slic3r/GUI/GUI.cpp:142 src/slic3r/GUI/Tab.cpp:2796 +msgid "It's impossible to print multi-part object(s) with SLA technology." +msgstr "SLA technologií nelze tisknout vícedílné objekty." + +#: src/slic3r/GUI/Tab.cpp:2177 +msgid "Jerk limits" +msgstr "Ryv limity" + +#: src/libslic3r/PrintConfig.cpp:1579 +msgid "Jitter" +msgstr "Rozkmit (Jitter)" + +#: src/libslic3r/PrintConfig.cpp:533 +msgid "Keep fan always on" +msgstr "Ventilátor vždy zapnutý" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:194 +msgid "Keep lower part" +msgstr "Zachovat spodní část" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:193 +msgid "Keep upper part" +msgstr "Zachovat horní část" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 src/slic3r/GUI/MainFrame.cpp:566 +msgid "Keyboard Shortcuts" +msgstr "Klávesové zkratky" + +#: src/libslic3r/PrintConfig.cpp:917 +msgid "Label objects" +msgstr "Označování objektů" + +#: src/libslic3r/PrintConfig.cpp:2234 +msgid "Landscape" +msgstr "Orientace na šířku" + +#: src/slic3r/GUI/GUI_App.cpp:524 +msgid "Language" +msgstr "Jazyk" + +#: lib/Slic3r/GUI/Plater.pm:265 +msgid "Layer Editing" +msgstr "Vyhlazení vrstev" + +#: lib/Slic3r/GUI/Plater.pm:280 +msgid "Layer editing" +msgstr "Vyhlazení vrstev" + +#: src/slic3r/GUI/Tab.cpp:998 src/libslic3r/PrintConfig.cpp:55 +msgid "Layer height" +msgstr "Výška vrstvy" + +#: src/libslic3r/Print.cpp:1332 +msgid "Layer height can't be greater than nozzle diameter" +msgstr "Výška vrstvy nemůže být větší než je průměr trysky" + +#: src/slic3r/GUI/Tab.cpp:2260 +msgid "Layer height limits" +msgstr "Výškové limity vrstvy" + +#: src/libslic3r/PrintConfig.cpp:326 src/libslic3r/PrintConfig.cpp:946 +#: src/libslic3r/PrintConfig.cpp:1435 src/libslic3r/PrintConfig.cpp:1620 +#: src/libslic3r/PrintConfig.cpp:1681 src/libslic3r/PrintConfig.cpp:1844 +#: src/libslic3r/PrintConfig.cpp:1889 +msgid "layers" +msgstr "vrstva(y)" + +#: src/slic3r/GUI/Tab.cpp:3302 src/slic3r/GUI/Tab.cpp:3393 +msgid "Layers" +msgstr "Vrstvy" + +#: src/slic3r/GUI/Tab.cpp:997 src/slic3r/GUI/Tab.cpp:3391 +msgid "Layers and perimeters" +msgstr "Vrstvy a perimetry" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:28 src/slic3r/GUI/GUI_ObjectList.cpp:68 +#: src/slic3r/GUI/GUI_ObjectList.cpp:509 src/libslic3r/PrintConfig.cpp:56 +#: src/libslic3r/PrintConfig.cpp:150 src/libslic3r/PrintConfig.cpp:381 +#: src/libslic3r/PrintConfig.cpp:438 src/libslic3r/PrintConfig.cpp:446 +#: src/libslic3r/PrintConfig.cpp:842 src/libslic3r/PrintConfig.cpp:1026 +#: src/libslic3r/PrintConfig.cpp:1305 src/libslic3r/PrintConfig.cpp:1371 +#: src/libslic3r/PrintConfig.cpp:1552 src/libslic3r/PrintConfig.cpp:1987 +#: src/libslic3r/PrintConfig.cpp:2044 +msgid "Layers and Perimeters" +msgstr "Vrstvy a perimetry" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:189 +msgid "Layers Slider Shortcuts" +msgstr "Posuvníky" + +#. TRN To be shown in Print Settings "Bottom solid layers" +#: rc/libslic3r/PrintConfig.cpp:149 +msgctxt "Layers" +msgid "Bottom" +msgstr "Spodní" + +#. TRN To be shown in Print Settings "Top solid layers" +#: src/libslic3r/PrintConfig.cpp:2043 +msgctxt "Layers" +msgid "Top" +msgstr "Vrchní" + +#: src/slic3r/GUI/MainFrame.cpp:527 +msgid "Left" +msgstr "Zleva" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:597 +msgid "Left mouse click - add point" +msgstr "Kliknutí levým tlačítkem myši - přidání bodu" + +#: src/slic3r/GUI/MainFrame.cpp:527 +msgid "Left View" +msgstr "Pohled zleva" + +#: src/libslic3r/PrintConfig.cpp:1473 src/libslic3r/PrintConfig.cpp:1481 +msgid "Length" +msgstr "Vzdálenost" + +#: src/libslic3r/PrintConfig.cpp:292 +msgid "Length of the cooling tube to limit space for cooling moves inside it " +msgstr "Délka kovové trubičky určené pro ochlazení a zformování filamentu po vytažení z extruderu " + +#: src/libslic3r/PrintConfig.cpp:1491 +msgid "Lift Z" +msgstr "Zvednout Z" + +#: src/libslic3r/PrintConfig.cpp:801 +msgid "Line" +msgstr "Čára" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1050 +msgid "Load" +msgstr "Načíst" + +#: src/slic3r/GUI/MainFrame.cpp:349 +msgid "Load a model" +msgstr "Načíst model" + +#: src/libslic3r/PrintConfig.cpp:3116 +msgid "Load and store settings at the given directory. This is useful for maintaining different profiles or including configurations from a network storage." +msgstr "Načtěte a uložte nastavení z/do daného adresáře. To je užitečné pro udržování různých profilů nebo konfigurací ze síťového úložiště." + +#: src/libslic3r/PrintConfig.cpp:3100 +msgid "Load config file" +msgstr "Načíst konfigurační soubor" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 +msgid "Load Config from .ini/amf/3mf/gcode" +msgstr "Načíst konfiguraci z .ini/amf/3mf/gcode" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:110 +msgid "Load Config from .ini/amf/3mf/gcode and merge" +msgstr "Načíst konfiguraci z .ini/amf/3mf/gcode a sloučit" + +#: src/slic3r/GUI/MainFrame.cpp:354 +msgid "Load configuration from project file" +msgstr "Načíst konfiguraci z projektu" + +#: src/libslic3r/PrintConfig.cpp:3101 +msgid "Load configuration from the specified file. It can be used more than once to load options from multiple files." +msgstr "Načíst konfiguraci ze zadaného souboru. Může být použito vícekrát než jednou pro načtení z více souborů." + +#: src/slic3r/GUI/MainFrame.cpp:352 +msgid "Load exported configuration file" +msgstr "Načíst exportovaný konfigurační soubor" + +#: src/slic3r/GUI/MainFrame.cpp:357 +msgid "Load presets from a bundle" +msgstr "Načíst přednastavení z balíku" + +#: src/slic3r/GUI/BedShapeDialog.cpp:97 +msgid "Load shape from STL..." +msgstr "Načíst tvar ze souboru STL…" + +#: lib/Slic3r/GUI/Plater.pm:779 +msgid "Loaded " +msgstr "Načteno " + +#: src/slic3r/GUI/WipeTowerDialog.cpp:235 +msgid "loaded" +msgstr "zaváděn" + +#: src/slic3r/GUI/Plater.cpp:1782 +msgid "Loaded" +msgstr "Načteno" + +#: src/slic3r/GUI/Plater.cpp:1590 +msgid "Loading" +msgstr "Načítání" + +#: src/slic3r/GUI/GUI_App.cpp:339 +msgid "Loading of a current presets" +msgstr "Načítání aktuálních předvoleb" + +#: src/slic3r/GUI/GUI_App.cpp:407 +msgid "Loading of a mode view" +msgstr "Načítání režimu zobrazení" + +#: src/slic3r/GUI/GUI_App.cpp:399 +msgid "Loading of current presets" +msgstr "Načítání aktuálních předvoleb" + +#: src/slic3r/Utils/FixModelByWin10.cpp:251 +#: src/slic3r/Utils/FixModelByWin10.cpp:378 +msgid "Loading repaired model" +msgstr "Načítaní opraveného modelu" + +#: src/libslic3r/PrintConfig.cpp:575 +msgid "Loading speed" +msgstr "Rychlost zavádění" + +#: src/libslic3r/PrintConfig.cpp:583 +msgid "Loading speed at the start" +msgstr "Počáteční rychlost zavádění" + +#: lib/Slic3r/GUI/Plater.pm:713 +msgid "Loading…" +msgstr "Načítání…" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:851 +msgid "Lock supports under new islands" +msgstr "Ukotvi podpěry pod novými ostrůvky" + +#: src/slic3r/GUI/Tab.cpp:3103 +msgid "LOCKED LOCK icon indicates that the settings are the same as the system values for the current option group" +msgstr "Ikona ZAMKNUTÉHO ZÁMKU indikuje, že nastavení jsou stejná jako systémové hodnoty pro aktuální skupinu nastavení" + +#: src/slic3r/GUI/Tab.cpp:3119 +msgid "LOCKED LOCK icon indicates that the value is the same as the system value." +msgstr "Ikona ZAMKNUTÉHO ZÁMKU indikuje, že hodnota je shodná se systémovou hodnotou." + +#: src/slic3r/GUI/Tab.cpp:3064 +msgid "LOCKED LOCK;indicates that the settings are the same as the system values for the current option group" +msgstr "ZAMKNUTÝ ZÁMEK; indikuje, že nastavení jsou stejná jako systémové hodnoty pro aktuální skupinu nastavení" + +#: src/libslic3r/PrintConfig.cpp:3119 +msgid "Logging level" +msgstr "Úroveň logování" + +#: src/libslic3r/PrintConfig.cpp:1625 +msgid "Loops (minimum)" +msgstr "Smyček (minimálně)" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 +msgid "Lower Layer" +msgstr "Nižší vrstva" + +#: src/slic3r/GUI/Tab.cpp:2136 src/slic3r/GUI/Tab.cpp:2209 +#: src/libslic3r/PrintConfig.cpp:1077 src/libslic3r/PrintConfig.cpp:1087 +#: src/libslic3r/PrintConfig.cpp:1097 src/libslic3r/PrintConfig.cpp:1110 +#: src/libslic3r/PrintConfig.cpp:1121 src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1143 +msgid "Machine limits" +msgstr "Limity stroje" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:129 +msgid "Main Shortcuts" +msgstr "Hlavní" + +#: src/slic3r/GUI/Plater.cpp:143 +msgid "Manifold" +msgstr "Model OK" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:908 +msgid "Manual editing" +msgstr "Manuální úprava" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:675 +msgid "Manual editing [M]" +msgstr "Ruční úprava [M]" + +#: src/slic3r/GUI/MainFrame.cpp:604 +msgid "Mate&rial Settings Tab" +msgstr "Panel nastavení mate&riálu" + +#: src/slic3r/GUI/Tab.cpp:3300 +msgid "Material" +msgstr "Materiál" + +#: src/slic3r/GUI/Tab.hpp:391 +msgid "Material Settings" +msgstr "Nastavení materiálu" + +#: src/slic3r/GUI/Plater.cpp:140 +msgid "Materials" +msgstr "Materiálů" + +#: src/libslic3r/PrintConfig.cpp:1152 src/libslic3r/PrintConfig.cpp:1161 +msgid "Max" +msgstr "Maximum" + +#: src/libslic3r/PrintConfig.cpp:2470 +msgid "Max bridge length" +msgstr "Maximální délka mostu" + +#: src/libslic3r/PrintConfig.cpp:2546 +msgid "Max merge distance" +msgstr "Maximální vzdálenost pro sloučení" + +#: src/libslic3r/PrintConfig.cpp:2479 +msgid "Max pillar linking distance" +msgstr "Max. vzdálenost propojení podpěr" + +#: src/libslic3r/PrintConfig.cpp:64 +msgid "Max print height" +msgstr "Maximální výška tisku" + +#: src/libslic3r/PrintConfig.cpp:1172 +msgid "Max print speed" +msgstr "Maximální rychlost tisku" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:55 +msgid "max slic3r version" +msgstr "max verze slic3ru" + +#: src/libslic3r/PrintConfig.cpp:1203 +msgid "Max volumetric slope negative" +msgstr "Maximální negativní objemový sklon" + +#: src/libslic3r/PrintConfig.cpp:1192 +msgid "Max volumetric slope positive" +msgstr "Maximální pozitivní objemový sklon" + +#: src/libslic3r/PrintConfig.cpp:565 src/libslic3r/PrintConfig.cpp:1182 +msgid "Max volumetric speed" +msgstr "Maximální objemová rychlost" + +#: src/libslic3r/PrintConfig.cpp:2167 +msgid "Maximal bridging distance" +msgstr "Maximální vzdálenost přemostění" + +#: src/libslic3r/PrintConfig.cpp:2168 +msgid "Maximal distance between supports on sparse infill sections. " +msgstr "Maximální vzdálenost mezi podpěrami u částí s řídkou výplní. " + +#: src/libslic3r/PrintConfig.cpp:1086 +msgid "Maximum acceleration %1%" +msgstr "Maximální zrychlení %1%" + +#: src/libslic3r/PrintConfig.cpp:1088 +msgid "Maximum acceleration of the %1% axis" +msgstr "Maximální zrychlení osy %1%" + +#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 +msgid "Maximum acceleration when extruding" +msgstr "Maximální zrychlení při extruzi" + +#: src/libslic3r/PrintConfig.cpp:1142 src/libslic3r/PrintConfig.cpp:1144 +msgid "Maximum acceleration when retracting" +msgstr "Maximální zrychlení při retrakci" + +#: src/slic3r/GUI/Tab.cpp:2170 +msgid "Maximum accelerations" +msgstr "Maximální zrychlení" + +#: src/libslic3r/PrintConfig.cpp:1076 +msgid "Maximum feedrate %1%" +msgstr "Maximální rychlost posuvu %1%" + +#: src/libslic3r/PrintConfig.cpp:1078 +msgid "Maximum feedrate of the %1% axis" +msgstr "Maximální rychlost posuvu osy %1%" + +#: src/slic3r/GUI/Tab.cpp:2165 +msgid "Maximum feedrates" +msgstr "Maximální rychlosti posuvu" + +#: src/libslic3r/PrintConfig.cpp:1096 +msgid "Maximum jerk %1%" +msgstr "Maximální ryv (jerk) %1%" + +#: src/libslic3r/PrintConfig.cpp:1098 +msgid "Maximum jerk of the %1% axis" +msgstr "Maximální ryv (jerk) osy %1%" + +#: src/libslic3r/PrintConfig.cpp:566 +msgid "Maximum volumetric speed allowed for this filament. Limits the maximum volumetric speed of a print to the minimum of print and filament volumetric speed. Set to zero for no limit." +msgstr "Maximální povolený objem průtoku pro tento filament. Omezuje maximální rychlost průtoku pro tisk až na minimální rychlost průtoku pro tisk a filament. Zadejte nulu pro nastavení bez omezení." + +#: src/libslic3r/PrintConfig.cpp:3053 +msgid "Merge" +msgstr "Sloučit" + +#: src/libslic3r/PrintConfig.cpp:2432 +msgid "Merging bridges or pillars into another pillars can increase the radius. Zero means no increase, one means full increase." +msgstr "Sloučení mostů nebo podpěr do jiných podpěr může zvýšit poloměr. Hodnota 0 znamená žádné zvýšení, hodnota 1 znamená maximální zvýšení." + +#: src/libslic3r/SLAPrint.cpp:71 +msgid "Merging slices and calculating statistics" +msgstr "Slučování tiskových vrstev a výpočet statistik" + +#: src/slic3r/Utils/FixModelByWin10.cpp:248 +msgid "Mesh repair failed." +msgstr "Oprava meshe selhala." + +#: src/libslic3r/PrintConfig.cpp:3120 +msgid "Messages with severity lower or eqal to the loglevel will be printed out. 0:trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal" +msgstr "Zprávy se závažností nižší nebo rovnou úrovni logování budou vypsány. 0: trace, 1: debug, 2: info, 3: warning, 4: error, 5: fatal" + +#: src/libslic3r/PrintConfig.cpp:1215 src/libslic3r/PrintConfig.cpp:1224 +msgid "Min" +msgstr "Minimum" + +#: src/libslic3r/PrintConfig.cpp:1233 +msgid "Min print speed" +msgstr "Minimální rychlost tisku" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 +msgid "min slic3r version" +msgstr "min verze slic3ru" + +#: src/libslic3r/PrintConfig.cpp:2507 +msgid "Minimal distance of the support points" +msgstr "Minimální vzdálenost podpěrných bodů" + +#: src/libslic3r/PrintConfig.cpp:1241 +msgid "Minimal filament extrusion length" +msgstr "Minimální délka extruze filamentu" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:877 +msgid "Minimal points distance: " +msgstr "Minimální vzdálenost bodů:" + +#: src/libslic3r/PrintConfig.cpp:635 +msgid "Minimal purge on wipe tower" +msgstr "Minimální vytlačený objem na čistící věži" + +#: src/libslic3r/PrintConfig.cpp:1442 +msgid "Minimum detail resolution, used to simplify the input file for speeding up the slicing job and reducing memory usage. High-resolution models often carry more detail than printers can render. Set to zero to disable any simplification and use full resolution from input." +msgstr "Minimální rozlišení detailů, které se používají pro zjednodušení vstupního souboru pro urychlení slicovací úlohy a snížení využití paměti. Modely s vysokým rozlišením často obsahují více detailů než tiskárny dokážou vykreslit. Nastavte na nulu, chcete-li zakázat jakékoli zjednodušení a použít vstup v plném rozlišení." + +#: src/libslic3r/PrintConfig.cpp:1109 src/libslic3r/PrintConfig.cpp:1111 +msgid "Minimum feedrate when extruding" +msgstr "Minimální rychlosti posuvu během extruze" + +#: src/slic3r/GUI/Tab.cpp:2182 +msgid "Minimum feedrates" +msgstr "Minimální rychlosti posuvu" + +#: src/libslic3r/PrintConfig.cpp:1452 +msgid "Minimum travel after retraction" +msgstr "Minimální dráha extruderu po retrakci" + +#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1122 +msgid "Minimum travel feedrate" +msgstr "Minimální rychlost při přesunu" + +#: src/slic3r/GUI/Plater.cpp:2946 +msgid "Mirror" +msgstr "Zrcadlit" + +#: src/slic3r/GUI/Plater.cpp:2946 +msgid "Mirror the selected object" +msgstr "Zrcadlit vybraný objekt" + +#: src/slic3r/GUI/Plater.cpp:2939 +msgid "Mirror the selected object along the X axis" +msgstr "Zrcadlit rozměr vybraného objektu podél osy X" + +#: src/slic3r/GUI/Plater.cpp:2941 +msgid "Mirror the selected object along the Y axis" +msgstr "Zrcadlit rozměr vybraného objektu podél osy Y" + +#: src/slic3r/GUI/Plater.cpp:2943 +msgid "Mirror the selected object along the Z axis" +msgstr "Zrcadlit rozměr vybraného objektu podél osy Z" + +#: src/slic3r/Utils/OctoPrint.cpp:69 +#, possible-c-format +msgid "Mismatched type of print host: %s" +msgstr "Nesprávný typ tiskového serveru: % s" + +#: src/libslic3r/GCode/PreviewData.cpp:176 +msgid "Mixed" +msgstr "Smíšený" + +#: src/slic3r/GUI/BedShapeDialog.cpp:87 src/slic3r/GUI/ConfigWizard.cpp:118 +#: src/slic3r/GUI/ConfigWizard.cpp:561 src/slic3r/GUI/ConfigWizard.cpp:575 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:150 +#: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:84 +#: src/libslic3r/PrintConfig.cpp:59 src/libslic3r/PrintConfig.cpp:66 +#: src/libslic3r/PrintConfig.cpp:75 src/libslic3r/PrintConfig.cpp:210 +#: src/libslic3r/PrintConfig.cpp:285 src/libslic3r/PrintConfig.cpp:293 +#: src/libslic3r/PrintConfig.cpp:343 src/libslic3r/PrintConfig.cpp:353 +#: src/libslic3r/PrintConfig.cpp:473 src/libslic3r/PrintConfig.cpp:484 +#: src/libslic3r/PrintConfig.cpp:502 src/libslic3r/PrintConfig.cpp:680 +#: src/libslic3r/PrintConfig.cpp:1166 src/libslic3r/PrintConfig.cpp:1227 +#: src/libslic3r/PrintConfig.cpp:1245 src/libslic3r/PrintConfig.cpp:1263 +#: src/libslic3r/PrintConfig.cpp:1315 src/libslic3r/PrintConfig.cpp:1325 +#: src/libslic3r/PrintConfig.cpp:1446 src/libslic3r/PrintConfig.cpp:1454 +#: src/libslic3r/PrintConfig.cpp:1495 src/libslic3r/PrintConfig.cpp:1503 +#: src/libslic3r/PrintConfig.cpp:1513 src/libslic3r/PrintConfig.cpp:1521 +#: src/libslic3r/PrintConfig.cpp:1529 src/libslic3r/PrintConfig.cpp:1612 +#: src/libslic3r/PrintConfig.cpp:1828 src/libslic3r/PrintConfig.cpp:1898 +#: src/libslic3r/PrintConfig.cpp:1932 src/libslic3r/PrintConfig.cpp:2125 +#: src/libslic3r/PrintConfig.cpp:2132 src/libslic3r/PrintConfig.cpp:2139 +#: src/libslic3r/PrintConfig.cpp:2169 src/libslic3r/PrintConfig.cpp:2179 +#: src/libslic3r/PrintConfig.cpp:2189 src/libslic3r/PrintConfig.cpp:2297 +#: src/libslic3r/PrintConfig.cpp:2372 src/libslic3r/PrintConfig.cpp:2381 +#: src/libslic3r/PrintConfig.cpp:2390 src/libslic3r/PrintConfig.cpp:2400 +#: src/libslic3r/PrintConfig.cpp:2444 src/libslic3r/PrintConfig.cpp:2454 +#: src/libslic3r/PrintConfig.cpp:2473 src/libslic3r/PrintConfig.cpp:2483 +#: src/libslic3r/PrintConfig.cpp:2492 src/libslic3r/PrintConfig.cpp:2510 +#: src/libslic3r/PrintConfig.cpp:2525 src/libslic3r/PrintConfig.cpp:2539 +#: src/libslic3r/PrintConfig.cpp:2552 src/libslic3r/PrintConfig.cpp:2562 +msgid "mm" +msgstr "mm" + +#: src/libslic3r/PrintConfig.cpp:1477 src/libslic3r/PrintConfig.cpp:1486 +msgid "mm (zero to disable)" +msgstr "mm (nula pro vypnutí)" + +#: src/libslic3r/PrintConfig.cpp:847 src/libslic3r/PrintConfig.cpp:992 +#: src/libslic3r/PrintConfig.cpp:1797 +msgid "mm or %" +msgstr "mm nebo %" + +#: src/libslic3r/PrintConfig.cpp:528 +msgid "mm or % (leave 0 for auto)" +msgstr "mm nebo % (pro automatické ponechte 0)" + +#: src/libslic3r/PrintConfig.cpp:420 src/libslic3r/PrintConfig.cpp:835 +#: src/libslic3r/PrintConfig.cpp:967 src/libslic3r/PrintConfig.cpp:1354 +#: src/libslic3r/PrintConfig.cpp:1692 src/libslic3r/PrintConfig.cpp:1865 +#: src/libslic3r/PrintConfig.cpp:2023 +msgid "mm or % (leave 0 for default)" +msgstr "mm nebo % (ponechte 0 jako výchozí)" + +#: src/libslic3r/PrintConfig.cpp:201 src/libslic3r/PrintConfig.cpp:577 +#: src/libslic3r/PrintConfig.cpp:585 src/libslic3r/PrintConfig.cpp:594 +#: src/libslic3r/PrintConfig.cpp:602 src/libslic3r/PrintConfig.cpp:629 +#: src/libslic3r/PrintConfig.cpp:648 src/libslic3r/PrintConfig.cpp:874 +#: src/libslic3r/PrintConfig.cpp:1001 src/libslic3r/PrintConfig.cpp:1079 +#: src/libslic3r/PrintConfig.cpp:1099 src/libslic3r/PrintConfig.cpp:1112 +#: src/libslic3r/PrintConfig.cpp:1123 src/libslic3r/PrintConfig.cpp:1176 +#: src/libslic3r/PrintConfig.cpp:1235 src/libslic3r/PrintConfig.cpp:1363 +#: src/libslic3r/PrintConfig.cpp:1537 src/libslic3r/PrintConfig.cpp:1546 +#: src/libslic3r/PrintConfig.cpp:1941 src/libslic3r/PrintConfig.cpp:2053 +msgid "mm/s" +msgstr "mm/s" + +#: src/libslic3r/PrintConfig.cpp:430 src/libslic3r/PrintConfig.cpp:856 +#: src/libslic3r/PrintConfig.cpp:1651 src/libslic3r/PrintConfig.cpp:1702 +#: src/libslic3r/PrintConfig.cpp:1908 src/libslic3r/PrintConfig.cpp:2035 +msgid "mm/s or %" +msgstr "mm/s nebo %" + +#: src/libslic3r/PrintConfig.cpp:160 src/libslic3r/PrintConfig.cpp:303 +#: src/libslic3r/PrintConfig.cpp:815 src/libslic3r/PrintConfig.cpp:936 +#: src/libslic3r/PrintConfig.cpp:1089 src/libslic3r/PrintConfig.cpp:1134 +#: src/libslic3r/PrintConfig.cpp:1145 src/libslic3r/PrintConfig.cpp:1334 +msgid "mm/s²" +msgstr "mm/s²" + +#: src/libslic3r/PrintConfig.cpp:1661 +msgid "mm²" +msgstr "mm²" + +#: src/libslic3r/PrintConfig.cpp:640 +msgid "mm³" +msgstr "mm³" + +#: src/libslic3r/PrintConfig.cpp:569 src/libslic3r/PrintConfig.cpp:1185 +msgid "mm³/s" +msgstr "mm³/s" + +#: src/libslic3r/PrintConfig.cpp:1197 src/libslic3r/PrintConfig.cpp:1208 +msgid "mm³/s²" +msgstr "mm³/s²" + +#: src/slic3r/GUI/GUI_App.cpp:681 +msgid "Mode" +msgstr "Režim" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:58 +msgid "model" +msgstr "model" + +#: src/slic3r/Utils/FixModelByWin10.cpp:340 +msgid "Model fixing" +msgstr "Opravování modelu" + +#: src/slic3r/Utils/FixModelByWin10.cpp:423 +#: src/slic3r/Utils/FixModelByWin10.cpp:426 +msgid "Model Repair by the Netfabb service" +msgstr "Oprava modelu službou Netfabb" + +#: src/slic3r/Utils/FixModelByWin10.cpp:406 +msgid "Model repair canceled" +msgstr "Oprava modelu byla zrušena" + +#: src/slic3r/Utils/FixModelByWin10.cpp:426 +msgid "Model repair failed: \n" +msgstr "Oprava modelu selhala:\n" + +#: src/slic3r/Utils/FixModelByWin10.cpp:400 +msgid "Model repair finished" +msgstr "Oprava modelu byla dokončena" + +#: src/slic3r/Utils/FixModelByWin10.cpp:423 +msgid "Model repaired successfully" +msgstr "Model byl úspěšně opraven" + +#: src/slic3r/GUI/Preset.cpp:207 +msgid "modified" +msgstr "upraveno" + +#: src/slic3r/GUI/Tab.cpp:1100 +msgid "Modifiers" +msgstr "Modifikátory" + +#: src/libslic3r/PrintConfig.cpp:719 +msgid "money/kg" +msgstr "korun/kg" + +#: lib/Slic3r/GUI/Plater.pm:255 +msgid "More" +msgstr "Více" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1238 +msgid "Move clipping plane" +msgstr "Posunout řezovou rovinu" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 +msgid "Move current slider thumb Down" +msgstr "Posunout aktivní posuvník dolů" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +msgid "Move current slider thumb Up" +msgstr "Posunout aktivní posuvník nahoru" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +msgid "Move current slider thump Down" +msgstr "Posunout aktivní posuvník dolů" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 +msgid "Move current slider thump Up" +msgstr "Posunout aktivní posuvník nahoru" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1231 +msgid "Move point" +msgstr "Posunout bod" + +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:51 +msgid "Move [M]" +msgstr "Přesunout [M]" + +#: src/libslic3r/PrintConfig.cpp:2100 +msgid "Multi material printers may need to prime or purge extruders on tool changes. Extrude the excess material into the wipe tower." +msgstr "Multimateriálové tiskárny mohou potřebovat, aby při výměně nástrojů vyčistili extrudery. Vytlačí přebytečný materiál do čistící věže." + +#: src/slic3r/GUI/Plater.cpp:1661 src/slic3r/GUI/Plater.cpp:1769 +msgid "Multi-part object detected" +msgstr "Detekován objekt obsahující více částí" + +#: src/slic3r/GUI/FirmwareDialog.cpp:400 src/slic3r/GUI/FirmwareDialog.cpp:436 +#, possible-c-format +msgid "Multiple %s devices found. Please only connect one at a time for flashing." +msgstr "Bylo nalezeno více zařízení %s . Během flashování mějte připojené pouze jedno." + +#: src/slic3r/GUI/Tab.cpp:1118 +msgid "Multiple Extruders" +msgstr "Více Extruderů" + +#: src/slic3r/GUI/Plater.cpp:1766 +msgid "Multiple objects were loaded for a multi-material printer.\nInstead of considering them as multiple objects, should I consider\nthese files to represent a single object having multiple parts?\n" +msgstr "Bylo nahráno více objektů pro multi materiálovou tiskárnu.\nMají být vloženy jako jeden objekt obsahující více částí, \nnamísto vložení několika objektů?\n" + +#: src/libslic3r/PrintConfig.cpp:3050 +msgid "Multiply copies by creating a grid." +msgstr "Vynásobí kopie vytvořením mřížky." + +#: src/libslic3r/PrintConfig.cpp:3045 +msgid "Multiply copies by this factor." +msgstr "Vynásobí kopie tímto číslem." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:176 +msgid "Name" +msgstr "Název" + +#: src/libslic3r/PrintConfig.cpp:1418 +msgid "Name of the printer variant. For example, the printer variants may be differentiated by a nozzle diameter." +msgstr "Název varianty tiskárny. Varianty tiskárny mohou být například rozlišeny podle průměru trysky." + +#: src/libslic3r/PrintConfig.cpp:1412 +msgid "Name of the printer vendor." +msgstr "Název prodejce tiskárny." + +#: src/libslic3r/PrintConfig.cpp:1009 +msgid "Name of the profile, from which this profile inherits." +msgstr "Název profilu, ze kterého tento profil zdědí." + +#: src/libslic3r/PrintConfig.cpp:1560 +msgid "Nearest" +msgstr "Nejbližší" + +#: src/slic3r/GUI/BonjourDialog.cpp:55 +msgid "Network lookup" +msgstr "Hledání v síti" + +#: src/slic3r/GUI/UpdateDialogs.cpp:30 +#, possible-c-format +msgid "New version of %s is available" +msgstr "Je dostupná nová verze %s" + +#: src/slic3r/GUI/UpdateDialogs.cpp:29 +msgid "New version of Slic3r PE is available" +msgstr "Je dostupná nová verze Slic3r PE" + +#: src/slic3r/GUI/UpdateDialogs.cpp:47 +msgid "New version:" +msgstr "Nová verze:" + +#: src/libslic3r/PrintConfig.cpp:912 +msgid "No extrusion" +msgstr "Žádná extruze" + +#: src/slic3r/GUI/MainFrame.cpp:635 +msgid "No previously sliced file." +msgstr "Žádné dříve slicované soubory." + +#: src/slic3r/GUI/RammingChart.cpp:23 +msgid "NO RAMMING AT ALL" +msgstr "ŽÁDNÁ RAPIDNÍ EXTRUZE" + +#: src/libslic3r/PrintConfig.cpp:2509 +msgid "No support points will be placed closer than this threshold." +msgstr "Žádné podpůrné body nebudou umístěny blíže než je tento práh." + +#: src/slic3r/GUI/ConfigWizard.cpp:190 src/slic3r/GUI/Plater.cpp:422 +#: src/libslic3r/GCode/PreviewData.cpp:162 +msgid "None" +msgstr "Žádné" + +#: src/slic3r/GUI/Plater.cpp:1073 +msgid "normal mode" +msgstr "normální režim" + +#: src/libslic3r/Zipper.cpp:49 +msgid "not a ZIP archive" +msgstr "není ZIP archiv" + +#: src/slic3r/Utils/OctoPrint.cpp:90 +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "Poznámka: Je vyžadován OctoPrint ve verzi alespoň 1.1.0." + +#: src/slic3r/GUI/Tab.cpp:1193 src/slic3r/GUI/Tab.cpp:1194 +#: src/slic3r/GUI/Tab.cpp:1576 src/slic3r/GUI/Tab.cpp:1577 +#: src/slic3r/GUI/Tab.cpp:1985 src/slic3r/GUI/Tab.cpp:1986 +#: src/slic3r/GUI/Tab.cpp:2079 src/slic3r/GUI/Tab.cpp:2080 +#: src/slic3r/GUI/Tab.cpp:3328 src/slic3r/GUI/Tab.cpp:3329 +msgid "Notes" +msgstr "Poznámky" + +#: src/slic3r/GUI/GUI.cpp:277 +msgid "Notice" +msgstr "Oznámení" + +#: src/slic3r/GUI/ConfigWizard.cpp:118 +msgid "nozzle" +msgstr "tryska" + +#: src/libslic3r/PrintConfig.cpp:1261 +msgid "Nozzle diameter" +msgstr "Průměr trysky" + +#: src/slic3r/GUI/ConfigWizard.cpp:560 +msgid "Nozzle Diameter:" +msgstr "Průměr trysky:" + +#: src/libslic3r/PrintConfig.cpp:618 +msgid "Number of cooling moves" +msgstr "Počet chladících pohybů" + +#: src/slic3r/GUI/Tab.cpp:1845 +msgid "Number of extruders of the printer." +msgstr "Počet extrudérů tiskárny." + +#: src/libslic3r/PrintConfig.cpp:1888 +msgid "Number of interface layers to insert between the object(s) and support material." +msgstr "Počet interface vrstev vložených mezi objekt (objekty) a podpěry." + +#: src/libslic3r/PrintConfig.cpp:1627 +msgid "Number of loops for the skirt. If the Minimum Extrusion Length option is set, the number of loops might be greater than the one configured here. Set this to zero to disable skirt completely." +msgstr "Počet obrysových smyček. Je-li nastavena možnost Minimální délka extruze, počet obrysových smyček může být větší než počet zde nakonfigurovaných. Nastavte tuto hodnotu na nulu, pro úplné deaktivování." + +#: src/libslic3r/PrintConfig.cpp:2214 +msgid "Number of pixels in" +msgstr "Počet pixelů v ose" + +#: src/libslic3r/PrintConfig.cpp:2216 +msgid "Number of pixels in X" +msgstr "Počet pixelů v ose X" + +#: src/libslic3r/PrintConfig.cpp:2222 +msgid "Number of pixels in Y" +msgstr "Počet pixelů v ose Y" + +#: src/libslic3r/PrintConfig.cpp:151 +msgid "Number of solid layers to generate on bottom surfaces." +msgstr "Počet plných vrstev." + +#: src/libslic3r/PrintConfig.cpp:1711 +msgid "Number of solid layers to generate on top and bottom surfaces." +msgstr "Počet plných vrstev generovaných na vrchních a spodních površích." + +#: src/libslic3r/PrintConfig.cpp:2045 +msgid "Number of solid layers to generate on top surfaces." +msgstr "Počet vrchních generovaných plných vrstev." + +#: src/libslic3r/PrintConfig.cpp:2303 +msgid "Number of the layers needed for the exposure time fade from initial exposure time to the exposure time" +msgstr "Počet vrstev potřebných pro přechod z počáteční doby osvitu na dobu osvitu." + +#: src/slic3r/GUI/Plater.cpp:218 +msgid "Number of tool changes" +msgstr "Počet změn nástroje" + +#: src/libslic3r/PrintConfig.cpp:2489 +msgid "Object elevation" +msgstr "Nadzvednutí objektu" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 +msgid "Object manipulation" +msgstr "Manipulace s objektem" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:27 +msgid "Object Manipulation" +msgstr "Manipulace s objektem" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:78 +msgid "Object name" +msgstr "Jméno objektu" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 +msgid "Object or Instance" +msgstr "Objekt nebo Instanci" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +msgid "Object Settings to modify" +msgstr "Změna nastavení objektu" + +#: src/slic3r/GUI/Plater.cpp:1875 +msgid "Object too large?" +msgstr "Objekt moc velký?" + +#: src/libslic3r/PrintConfig.cpp:2161 +msgid "Object will be used to purge the nozzle after a toolchange to save material that would otherwise end up in the wipe tower and decrease print time. Colours of the objects will be mixed as a result." +msgstr "Objekty budou použity k vyčištění barvy filamentu v trysce po změně extruderu, aby se ušetřil materiál, který by jinak skončil v čistící věži. Výsledkem budou objekty s náhodně mixovanými barvami." + +#: src/slic3r/GUI/Plater.cpp:1018 +msgid "object(s)" +msgstr "objekt(y)" + +#: src/slic3r/GUI/Plater.cpp:1043 src/slic3r/GUI/Plater.cpp:1058 +msgid "objects" +msgstr "objekty" + +#: xs/src/libslic3r/PrintConfig.cpp:2006 +msgid "Objects will be used to wipe the nozzle after a toolchange to save material that would otherwise end up in the wipe tower and decrease print time. Colours of the objects will be mixed as a result." +msgstr "Objekty budou použity k vyčištění barvy filamentu v trysce po změně extruderu, aby se ušetřil materiál, který by jinak skončil v čistící věži. Výsledkem budou objekty s náhodně mixovanými barvami." + +#: src/libslic3r/PrintConfig.cpp:402 src/libslic3r/PrintConfig.cpp:808 +msgid "Octagram Spiral" +msgstr "Octagram Spiral" + +#: xs/src/slic3r/GUI/Tab.cpp:1520 xs/src/slic3r/Utils/OctoPrint.cpp:110 +msgid "OctoPrint upload" +msgstr "OctoPrint nahrávání" + +#: lib/Slic3r/GUI/Plater.pm:1576 +msgid "OctoPrint upload finished." +msgstr "Nahrávání do OctoPrintu dokončeno." + +#: src/slic3r/GUI/BonjourDialog.cpp:76 +msgid "OctoPrint version" +msgstr "Verze OctoPrintu" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2419 +msgid "of a current Object" +msgstr "současného Objektu" + +#: src/libslic3r/Print.cpp:1285 +msgid "One or more object were assigned an extruder that the printer does not have." +msgstr "Jeden nebo více objektů bylo přiřazeno extruderu, který tiskárna nemá." + +#: src/libslic3r/PrintConfig.cpp:1817 src/libslic3r/PrintConfig.cpp:2425 +msgid "Only create support if it lies on a build plate. Don't create support on a print." +msgstr "Podpěry vytvářet pouze v případě, že leží na tiskové podložce. Nevytváří podpěry na výtisky." + +#: src/libslic3r/PrintConfig.cpp:978 +msgid "Only infill where needed" +msgstr "Výplň pouze kde je potřeba" + +#: src/slic3r/GUI/Tab.cpp:2271 +msgid "Only lift Z" +msgstr "Pouze zvednout Z" + +#: src/libslic3r/PrintConfig.cpp:1500 +msgid "Only lift Z above" +msgstr "Zvednout Z pouze nad" + +#: src/libslic3r/PrintConfig.cpp:1509 +msgid "Only lift Z below" +msgstr "Zvednout Z pouze pod" + +#: src/libslic3r/PrintConfig.cpp:1279 +msgid "Only retract when crossing perimeters" +msgstr "Provést retrakci pouze při přejíždění perimetrů" + +#: src/slic3r/GUI/Tab.cpp:1126 +msgid "Ooze prevention" +msgstr "Prevence odkapávání" + +#: lib/Slic3r/GUI/MainFrame.pm:215 +msgid "Open a model" +msgstr "Otevřít model" + +#: src/slic3r/GUI/MainFrame.cpp:339 +msgid "Open a project file" +msgstr "Otevřít soubor s projektem" + +#: src/slic3r/GUI/Tab.cpp:1745 +msgid "Open CA certificate file" +msgstr "Otevřít soubor s certifikátem CA" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 +msgid "Open project STL/OBJ/AMF/3MF with config, delete bed" +msgstr "Otevřít soubor STL/OBJ/AMF/3MF s konfigurací (smaže tiskovou plochu)" + +#: lib/Slic3r/GUI/MainFrame.pm:215 +msgid "Open STL/OBJ/AMF/3MF…\tCtrl+O" +msgstr "Otevřít STL/OBJ/AMF/3MF… Ctrl+O" + +#: src/slic3r/GUI/MainFrame.cpp:554 +#, possible-c-format +msgid "Open the %s manual in your browser" +msgstr "Otevřít návod k %s v prohlížeči" + +#: src/slic3r/GUI/MainFrame.cpp:551 +#, possible-c-format +msgid "Open the %s website in your browser" +msgstr "Otevřít webovou stránku %s v prohlížeči" + +#: lib/Slic3r/GUI/Plater.pm:2296 +msgid "Open the 3D cutting tool" +msgstr "Otevřete nástroj 3D řezání" + +#: lib/Slic3r/GUI/Plater.pm:2300 +msgid "Open the object editor dialog" +msgstr "Otevře dialogové okno editoru objektů" + +#: src/slic3r/GUI/MainFrame.cpp:544 +msgid "Open the Prusa Edition releases page in your browser" +msgstr "Otevřít stránku vydání Prusa Edice ve vašem prohlížeči" + +#: src/slic3r/GUI/MainFrame.cpp:542 +msgid "Open the Prusa3D drivers download page in your browser" +msgstr "Otevřít stránku pro stahování Prusa 3D ovladačů ve vašem prohlížeči" + +#: src/slic3r/GUI/MainFrame.cpp:470 +msgid "Open the Slic3r manual in your browser" +msgstr "Otevřít Slic3r návod ve vašem prohlížeči" + +#: src/slic3r/GUI/MainFrame.cpp:468 +msgid "Open the Slic3r website in your browser" +msgstr "Otevřít webovou stránku Slic3ru ve vašem prohlížeči" + +#: src/slic3r/GUI/Plater.cpp:2994 +msgid "Optimize orientation" +msgstr "Optimalizovat orientaci" + +#: src/slic3r/GUI/Plater.cpp:2994 +msgid "Optimize the rotation of the object for better print results." +msgstr "Optimalizujte rotaci objektu pro lepší výsledky tisku." + +#: src/libslic3r/PrintConfig.cpp:112 +msgid "Optimize travel moves in order to minimize the crossing of perimeters. This is mostly useful with Bowden extruders which suffer from oozing. This feature slows down both the print and the G-code generation." +msgstr "Optimalizovat rychloposuny do pořadí aby se minimalizovalo přejíždění perimetrů. Nejvíce užitečné u Bowdenových extruderů které trpí na vytékání filamentu. Toto nastavení zpomaluje tisk i generování G-code." + +#: src/slic3r/GUI/Tab.cpp:1070 +msgid "Options for support material and raft" +msgstr "Volby pro podpěry a raft" + +#: src/slic3r/GUI/Plater.cpp:2251 +msgid "Orientation found." +msgstr "Orientace nalezena." + +#: src/slic3r/GUI/Plater.cpp:2185 +msgid "Orientation search canceled" +msgstr "Hledávání optimální orientace bylo zrušeno" + +#: src/slic3r/GUI/BedShapeDialog.cpp:79 +msgid "Origin" +msgstr "Počátek" + +#: src/slic3r/GUI/Tab.cpp:1165 +msgid "Other" +msgstr "Ostatní" + +#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:1977 +msgid "Other layers" +msgstr "Ostatní vrstvy" + +#: xs/src/slic3r/GUI/ConfigWizard.cpp:252 +msgid "Other vendors" +msgstr "Ostatní výrobci" + +#: src/slic3r/GUI/ConfigWizard.cpp:438 +msgid "Other Vendors" +msgstr "Ostatní výrobci" + +#: src/slic3r/GUI/Tab.cpp:1180 src/slic3r/GUI/Tab.cpp:3440 +msgid "Output file" +msgstr "Výstupní soubor" + +#: src/libslic3r/PrintConfig.cpp:3104 +msgid "Output File" +msgstr "Výstupní soubor" + +#: src/libslic3r/PrintConfig.cpp:1294 +msgid "Output filename format" +msgstr "Formát názvu výstupního souboru" + +#: src/libslic3r/PrintConfig.cpp:2992 +msgid "Output Model Info" +msgstr "Info o výstupním modelu" + +#: src/slic3r/GUI/Tab.cpp:1168 src/slic3r/GUI/Tab.cpp:3439 +msgid "Output options" +msgstr "Možnosti výstupu" + +#: src/slic3r/GUI/GUI_Preview.cpp:229 src/libslic3r/GCode/PreviewData.cpp:165 +msgid "Overhang perimeter" +msgstr "Perimetr převisu" + +#: src/libslic3r/PrintConfig.cpp:1955 +msgid "Overhang threshold" +msgstr "Mezní úhel převisu" + +#: src/slic3r/GUI/Tab.cpp:1153 +msgid "Overlap" +msgstr "Překrytí" + +#: src/slic3r/GUI/MainFrame.cpp:478 +msgid "P&rint Settings Tab" +msgstr "Panel nastavení tisku" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:79 src/slic3r/GUI/GUI_ObjectList.cpp:520 +#: src/slic3r/GUI/Tab.cpp:3425 src/slic3r/GUI/Tab.cpp:3426 +#: src/libslic3r/PrintConfig.cpp:2516 src/libslic3r/PrintConfig.cpp:2523 +#: src/libslic3r/PrintConfig.cpp:2537 src/libslic3r/PrintConfig.cpp:2547 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:2569 +msgid "Pad" +msgstr "Podložka" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:39 +msgid "Pad and Support" +msgstr "Podložka a Podppěry" + +#: src/libslic3r/PrintConfig.cpp:2559 +msgid "Pad edge radius" +msgstr "Poloměr hrany podložky" + +#: src/libslic3r/PrintConfig.cpp:2532 +msgid "Pad wall height" +msgstr "Výška bočnice podložky" + +#: src/libslic3r/PrintConfig.cpp:2568 +msgid "Pad wall slope" +msgstr "Sklon bočnice podložky" + +#: src/libslic3r/PrintConfig.cpp:2522 +msgid "Pad wall thickness" +msgstr "Tloušťka stěny podložky" + +#: src/slic3r/GUI/Field.cpp:108 +msgid "parameter name" +msgstr "název parametru" + +#: src/slic3r/GUI/Field.cpp:184 +msgid "Parameter validation" +msgstr "Validace parametru" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 +msgid "Part" +msgstr "Část" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1881 +msgid "Part manipulation" +msgstr "Manipulace s částmi" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1872 +msgid "Part Settings to modify" +msgstr "Změna nastavení části" + +#: src/slic3r/GUI/MainFrame.cpp:456 +msgid "Paste clipboard" +msgstr "Vložit ze schránky" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +msgid "Paste from clipboard" +msgstr "Vložit ze schránky" + +#: src/libslic3r/PrintConfig.cpp:1915 +msgid "Pattern" +msgstr "Vzor" + +#: src/libslic3r/PrintConfig.cpp:1805 +msgid "Pattern angle" +msgstr "Úhel vzoru" + +#: src/libslic3r/PrintConfig.cpp:1929 +msgid "Pattern spacing" +msgstr "Rozteč podpěr" + +#: src/libslic3r/PrintConfig.cpp:1917 +msgid "Pattern used to generate support material." +msgstr "Vzor použitý pro generování podpěr." + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:36 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:198 +msgid "Perform cut" +msgstr "Provést řez" + +#: src/slic3r/GUI/GUI_Preview.cpp:227 src/libslic3r/GCode/PreviewData.cpp:163 +msgid "Perimeter" +msgstr "Perimetr" + +#: src/libslic3r/PrintConfig.cpp:1339 +msgid "Perimeter extruder" +msgstr "Extruder pro perimetry" + +#: src/slic3r/GUI/PresetHints.cpp:162 +msgid "perimeters" +msgstr "perimetry" + +#: src/libslic3r/PrintConfig.cpp:1330 src/libslic3r/PrintConfig.cpp:1348 +#: src/libslic3r/PrintConfig.cpp:1360 src/libslic3r/PrintConfig.cpp:1370 +msgid "Perimeters" +msgstr "Perimetry" + +#: src/slic3r/GUI/ConfigWizard.cpp:440 +#, possible-c-format +msgid "Pick another vendor supported by %s:" +msgstr "Vyberte si jiného prodejce podporovaného v %s:" + +#: src/slic3r/GUI/ConfigWizard.cpp:423 +msgid "Pick another vendor supported by Slic3r PE:" +msgstr "Vyberte si jiného prodejce podporovaného v Slic3r PE:" + +#: src/libslic3r/PrintConfig.cpp:2430 +msgid "Pillar widening factor" +msgstr "Koeficient rozšiřování podpěry" + +#: src/slic3r/GUI/Tab.cpp:3496 +msgid "Pinhead diameter should be smaller than the pillar diameter." +msgstr "Průměr hrotu by měl být menší než průměr podpěry." + +#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:32 +msgid "Place on face [F]" +msgstr "Umístit plochou na podložku [F]" + +#: src/slic3r/GUI/Plater.cpp:2897 +msgid "Place one more copy of the selected object" +msgstr "Přidá jednu kopii vybraného objektu" + +#: src/slic3r/GUI/MainFrame.cpp:161 +msgid "Plater" +msgstr "Podložka" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 +msgid "Plater Shortcuts" +msgstr "Podložka" + +#: src/slic3r/GUI/GUI.cpp:143 +msgid "Please check and fix your object list." +msgstr "Zkontrolujte a opravte seznam objektů." + +#: src/slic3r/GUI/Tab.cpp:2797 +msgid "Please check your object list before preset changing." +msgstr "Před změnou nastavení zkontrolujte prosím seznam objektů." + +#: lib/Slic3r/GUI/Plater.pm:1897 +msgid "Please install the OpenGL modules to use this feature (see build instructions)." +msgstr "Pro použití této funkce prosím nainstalujte OpenGL moduly (viz instrukce vlastního sestavení)." + +#: src/slic3r/GUI/GUI_App.cpp:742 +msgid "Please, check your changes before." +msgstr "Prosím, nejdříve zkontrolujte provedené změny." + +#: src/libslic3r/PrintConfig.cpp:2235 +msgid "Portrait" +msgstr "Orientace na výšku" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:150 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:193 +msgid "Position" +msgstr "Pozice" + +#: src/slic3r/GUI/Tab.cpp:2265 +msgid "Position (for multi-extruder printers)" +msgstr "Pozice (pro tiskárny s více extrudery)" + +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:177 +msgid "Position (mm)" +msgstr "Pozice (mm)" + +#: src/libslic3r/PrintConfig.cpp:1553 +msgid "Position of perimeters starting points." +msgstr "Pozice začátku perimetrů." + +#: src/libslic3r/PrintConfig.cpp:2123 +msgid "Position X" +msgstr "Pozice X" + +#: src/libslic3r/PrintConfig.cpp:2130 +msgid "Position Y" +msgstr "Pozice Y" + +#: src/slic3r/GUI/Tab.cpp:1187 src/libslic3r/PrintConfig.cpp:1383 +msgid "Post-processing scripts" +msgstr "Postprodukční skripty" + +#: src/slic3r/GUI/MainFrame.cpp:489 +msgid "Pre&view" +msgstr "Náhled" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 src/slic3r/GUI/Preferences.cpp:10 +msgid "Preferences" +msgstr "Nastavení" + +#: src/libslic3r/PrintConfig.cpp:1571 +msgid "Preferred direction of the seam" +msgstr "Preferovaný směr švu" + +#: src/libslic3r/PrintConfig.cpp:1582 +msgid "Preferred direction of the seam - jitter" +msgstr "Preferovaný směr švu - rozkmit" + +#: src/slic3r/GUI/Tab.cpp:2758 +#, possible-c-format +msgid "Preset (%s)" +msgstr "Přednastavení (%s)" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:148 +msgid "Press to scale or rotate selected objects\naround their own center" +msgstr "Stisknutím změníte velikost nebo otočíte vybranými objekty kolem vlastního středu" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +msgid "Press to select multiple object or move multiple object with mouse" +msgstr "Stisknutím vyberte více objektů nebo přesuňte více objektů pomocí myši" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:147 +#, no-c-format +msgid "Press to snap by 5% in Gizmo scale\nor by 1mm in Gizmo move" +msgstr "Stiskněte pro změnu velikosti s krokem 5%\nnebo pro posun s krokem 1mm" + +#: src/slic3r/GUI/Tab.cpp:2288 +msgid "Preview" +msgstr "Náhled" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +msgid "Preview Shortcuts" +msgstr "Náhled" + +#: src/slic3r/GUI/MainFrame.cpp:641 +msgid "Previously sliced file (" +msgstr "Dříve slicovaný soubor (" + +#: src/libslic3r/PrintConfig.cpp:1773 +msgid "Prime all printing extruders" +msgstr "Příprava všech tiskových extruderů" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 src/slic3r/GUI/Preset.cpp:1274 +msgid "print" +msgstr "tisk" + +#: src/slic3r/GUI/MainFrame.cpp:510 +msgid "Print &Host Upload Queue" +msgstr "Fronta na&hrávání do tiskového serveru" + +#: src/libslic3r/PrintConfig.cpp:439 +msgid "Print contour perimeters from the outermost one to the innermost one instead of the default inverse order." +msgstr "Tisk obrysových perimetrů od vnějších po vnitřní namísto opačného výchozího pořadí." + +#: src/slic3r/GUI/ConfigWizard.cpp:541 +msgid "Print Diameters" +msgstr "Průměry tisku" + +#: src/slic3r/GUI/Tab.cpp:1917 src/slic3r/GUI/Tab.cpp:2074 +msgid "Print Host upload" +msgstr "Nahrání do tiskového serveru" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 +#: src/slic3r/GUI/PrintHostDialogs.cpp:135 +msgid "Print host upload queue" +msgstr "Fronta nahrávaní do tiskového serveru" + +#: src/slic3r/GUI/Tab.hpp:317 src/slic3r/GUI/Tab.hpp:405 +msgid "Print Settings" +msgstr "Nastavení tisku" + +#: src/slic3r/GUI/Plater.cpp:681 +msgid "Print settings" +msgstr "Nastavení tisku" + +#: src/slic3r/GUI/Tab.cpp:1520 +msgid "Print speed override" +msgstr "Přepsání rychlosti tisku" + +#: src/slic3r/GUI/MainFrame.cpp:483 +msgid "Print&er Settings Tab" +msgstr "Panel nastavení tiskárny" + +#: src/slic3r/GUI/Plater.cpp:685 +msgid "Printer" +msgstr "Tiskárna" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:48 src/slic3r/GUI/Preset.cpp:1278 +msgid "printer" +msgstr "tiskárna" + +#: src/libslic3r/PrintConfig.cpp:2274 src/libslic3r/PrintConfig.cpp:2275 +msgid "Printer absolute correction" +msgstr "Absolutní korekce tiskárny" + +#: src/libslic3r/PrintConfig.cpp:2282 src/libslic3r/PrintConfig.cpp:2283 +msgid "Printer gamma correction" +msgstr "Gamma korekce tiskárny" + +#: src/slic3r/GUI/Tab.cpp:926 +msgid "printer model" +msgstr "model tiskárny" + +#: src/libslic3r/PrintConfig.cpp:1402 +msgid "Printer notes" +msgstr "Poznámky o tiskárně" + +#: src/libslic3r/PrintConfig.cpp:2266 src/libslic3r/PrintConfig.cpp:2267 +#: src/libslic3r/PrintConfig.cpp:2268 +msgid "Printer scaling correction" +msgstr "Korekce měřítka tisku" + +#: src/slic3r/GUI/Tab.hpp:368 +msgid "Printer Settings" +msgstr "Nastavení tiskárny" + +#: src/libslic3r/PrintConfig.cpp:42 src/libslic3r/PrintConfig.cpp:43 +msgid "Printer technology" +msgstr "Technologie tisku" + +#: src/libslic3r/PrintConfig.cpp:1396 +msgid "Printer type" +msgstr "Typ tiskárny" + +#: src/libslic3r/PrintConfig.cpp:1417 +msgid "Printer variant" +msgstr "Varianta tiskárny" + +#: src/libslic3r/PrintConfig.cpp:1411 +msgid "Printer vendor" +msgstr "Prodejce tiskárny" + +#: src/libslic3r/Print.cpp:1294 +msgid "Printing with multiple extruders of differing nozzle diameters. If support is to be printed with the current extruder (support_material_extruder == 0 or support_material_interface_extruder == 0), all nozzles have to be of the same diameter." +msgstr "Tisk s více extrudery různých průměrů trysek. Má-li být podpěra tisknuta aktuálním extruderem (support_material_extruder == 0 nebo support_material_interface_extruder == 0), musí mít všechny trysky stejný průměr." + +#: lib/Slic3r/GUI/Plater.pm:324 +msgid "Print…" +msgstr "Tisk…" + +#: src/slic3r/GUI/MainFrame.cpp:704 msgid "Processing " msgstr "Zpracovávám " -#: src/slic3r/GUI/MainFrame.cpp:630 -msgid " was successfully sliced." -msgstr " byl úspěšně slicován." +#: lib/Slic3r/GUI/Plater.pm:713 lib/Slic3r/GUI/Plater.pm:727 +msgid "Processing input file\n" +msgstr "Zpracovávám vstupní soubor\n" -#: src/slic3r/GUI/MainFrame.cpp:632 -msgid "Slicing Done!" -msgstr "Slicování dokončeno!" +#: src/slic3r/GUI/Plater.cpp:1600 +#, possible-c-format +msgid "Processing input file %s\n" +msgstr "Zpracovávám vstupní soubor %s\n" -#: src/slic3r/GUI/MainFrame.cpp:647 -msgid "Select the STL file to repair:" -msgstr "Vyberte STL soubor k opravě:" +#: src/libslic3r/SLA/SLASupportTree.cpp:2160 +msgid "Processing small holes" +msgstr "Zpracování malých otvorů" -#: src/slic3r/GUI/MainFrame.cpp:661 -msgid "Save OBJ file (less prone to coordinate errors than STL) as:" -msgstr "Uložit soubor OBJ (méně náchylný na chyby souřadnic než STL) jako:" +#: src/slic3r/GUI/Tab.cpp:1201 src/slic3r/GUI/Tab.cpp:1585 +#: src/slic3r/GUI/Tab.cpp:1993 src/slic3r/GUI/Tab.cpp:2087 +#: src/slic3r/GUI/Tab.cpp:3337 src/slic3r/GUI/Tab.cpp:3446 +msgid "Profile dependencies" +msgstr "Profilové závislosti" -#: src/slic3r/GUI/MainFrame.cpp:676 -msgid "Your file was repaired." -msgstr "Váš soubor byl opraven." +#: src/slic3r/GUI/FirmwareDialog.cpp:779 +msgid "Progress:" +msgstr "Průběh:" -#: src/slic3r/GUI/MainFrame.cpp:676 src/libslic3r/PrintConfig.cpp:3051 +#: src/slic3r/GUI/MainFrame.cpp:542 +msgid "Prusa 3D &Drivers" +msgstr "Prusa 3&D Ovladače" + +#: lib/Slic3r/GUI/MainFrame.pm:338 +msgid "Prusa 3D Drivers" +msgstr "Prusa 3D Ovladače" + +#: src/slic3r/GUI/MainFrame.cpp:544 +msgid "Prusa Edition &Releases" +msgstr "Vydání P&rusa Edice" + +#: lib/Slic3r/GUI/MainFrame.pm:341 +msgid "Prusa Edition Releases" +msgstr "Vydání Prusa Edice" + +#: src/slic3r/GUI/ConfigWizard.cpp:1109 +msgid "Prusa FFF Technology Printers" +msgstr "Prusa tiskárny technologie FFF" + +#: src/slic3r/GUI/ConfigWizard.cpp:1112 +msgid "Prusa MSLA Technology Printers" +msgstr "Prusa tiskárny technologie MSLA" + +#: src/libslic3r/PrintConfig.cpp:2153 +msgid "Purging after toolchange will done inside this object's infills. This lowers the amount of waste but may result in longer print time due to additional travel moves." +msgstr "Vyčištění trysky po výměně filamentu se provede uvnitř výplní tohoto objektu. Tím se snižuje množství odpadu, ale může to mít za následek delší dobu tisku v důsledku dodatečných pohybů." + +#: xs/src/libslic3r/PrintConfig.cpp:1996 +msgid "Purging into infill" +msgstr "Čištění do výplně" + +#: xs/src/libslic3r/PrintConfig.cpp:2005 +msgid "Purging into objects" +msgstr "Čištění do objektů" + +#: src/slic3r/GUI/Plater.cpp:456 +msgid "Purging volumes" +msgstr "Objemy čištění" + +#: src/libslic3r/PrintConfig.cpp:2106 +msgid "Purging volumes - load/unload volumes" +msgstr "Objemy čištění - zaváděné / vyjmuté objemy" + +#: src/libslic3r/PrintConfig.cpp:2113 +msgid "Purging volumes - matrix" +msgstr "Objemy čištění - matice" + +#: lib/Slic3r/GUI/MainFrame.pm:232 +msgid "Q&uick Slice…\tCtrl+U" +msgstr "R&ychlé Slicování…\tCtrl+U" + +#: src/slic3r/GUI/Tab.cpp:1019 +msgid "Quality (slower slicing)" +msgstr "Kvalita (pomalejší slicing)" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:854 src/slic3r/GUI/GUI_ObjectList.cpp:1139 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1145 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1377 +#, possible-c-format +msgid "Quick Add Settings (%s)" +msgstr "Rychlé přidání nastavení (%s)" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 +msgid "Quick slice" +msgstr "Rychlé slicování" + +#: src/slic3r/GUI/MainFrame.cpp:383 +msgid "Quick Slice" +msgstr "Rychlé Slicování" + +#: lib/Slic3r/GUI/MainFrame.pm:238 +msgid "Quick Slice and Save &As…\tCtrl+Alt+U" +msgstr "Rychlé Slicování a Uložit &jako…\tCtrl+Alt+U" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 +msgid "Quick slice and Save as" +msgstr "Rychlé Slicování a Uložit jako" + +#: src/slic3r/GUI/MainFrame.cpp:389 +msgid "Quick Slice and Save As" +msgstr "Rychlé Slicování a Uložit jako" + +#: src/slic3r/GUI/MainFrame.cpp:409 +#, possible-c-format +msgid "Quit %s" +msgstr "Ukončit %s" + +#: src/slic3r/GUI/MainFrame.cpp:340 +msgid "Quit Slic3r" +msgstr "Ukončit Slic3r" + +#: src/libslic3r/PrintConfig.cpp:479 +msgid "Radius" +msgstr "Rádius" + +#: src/slic3r/GUI/Tab.cpp:1066 +msgid "Raft" +msgstr "Raft" + +#: src/libslic3r/PrintConfig.cpp:1431 +msgid "Raft layers" +msgstr "Vrstev raftu" + +#: xs/src/slic3r/GUI/Tab.cpp:1299 +msgid "Ramming" +msgstr "Rapidní extruze" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:14 +msgid "Ramming customization" +msgstr "Přizpůsobení rapidní extruze" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:40 +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\nThis is an expert-level setting, incorrect adjustment will likely lead to jams, extruder wheel grinding into filament etc." +msgstr "Rapidní extruze označuje rychlé vytlačení filamentu těsně před jeho výměnou za jiný v multi material tiskárně s jedním extruderem. Účelem je správně vytvarovat konec vysouvaného filamentu tak, aby neblokoval zasunutí nového filamentu a také mohl být sám později opětovně zasunut. Tento proces je důležitý a rozdílné materiály mohou pro získání optimálního tvaru vyžadovat různé rychlosti extruze. Z tohoto důvodu jsou objemové průtoky při rapidní extruzi uživatelsky upravitelné.\n\nToto nastavení je určeno pro pokročilé uživatele, nesprávné nastavení velmi pravděpodobně povede k zaseknutí filamentu, vybroušení filamentu podávacím kolečkem, atd." + +#: src/slic3r/GUI/WipeTowerDialog.cpp:90 +msgid "Ramming line spacing" +msgstr "Rozestup linek při rapidní extruzi" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:88 +msgid "Ramming line width" +msgstr "Šířka linky při rapidní extruzi" + +#: src/libslic3r/PrintConfig.cpp:662 +msgid "Ramming parameters" +msgstr "Parametry rapidní extruze" + +#: src/slic3r/GUI/Tab.cpp:1545 +msgid "Ramming settings" +msgstr "Nastavení rapidní extruze" + +#: src/libslic3r/PrintConfig.cpp:1559 +msgid "Random" +msgstr "Náhodný" + +#: src/libslic3r/SLAPrint.cpp:72 +msgid "Rasterizing layers" +msgstr "Rasterizace vrstev" + +#: src/slic3r/GUI/UpdateDialogs.cpp:151 +msgid "Re-configure" +msgstr "Přenastavit" + +#: src/slic3r/GUI/FirmwareDialog.cpp:783 +msgid "Ready" +msgstr "Připraveno" + +#: src/slic3r/GUI/Plater.cpp:2406 +msgid "Ready to slice" +msgstr "Připraven ke slicování" + +#: src/slic3r/GUI/MainFrame.cpp:526 src/libslic3r/PrintConfig.cpp:1562 +msgid "Rear" +msgstr "Zezadu" + +#: src/slic3r/GUI/MainFrame.cpp:526 +msgid "Rear View" +msgstr "Pohled zezadu" + +#: src/slic3r/GUI/PresetHints.cpp:264 +#, possible-c-format +msgid "Recommended object thin wall thickness for layer height %.2f and " +msgstr "Doporučená tloušťka stěny objektu pro výšku vrstvy %.2f a" + +#: src/slic3r/GUI/PresetHints.cpp:247 +msgid "Recommended object thin wall thickness: Not available due to invalid layer height." +msgstr "Doporučená tloušťka stěny objektu: Není k dispozici kvůli neplatné výšce vrstvy." + +#: src/slic3r/GUI/GUI_App.cpp:386 src/slic3r/GUI/GUI_App.cpp:395 +msgid "Recreating" +msgstr "Obnovení" + +#: src/slic3r/GUI/BedShapeDialog.cpp:68 +msgid "Rectangular" +msgstr "Obdélníkový" + +#: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:796 +#: src/libslic3r/PrintConfig.cpp:1922 +msgid "Rectilinear" +msgstr "Přímočará" + +#: src/libslic3r/PrintConfig.cpp:1923 +msgid "Rectilinear grid" +msgstr "Přímočará mřížka" + +#: src/slic3r/GUI/Tab.cpp:1037 +msgid "Reducing printing time" +msgstr "Zkracování tiskového času" + +#: src/slic3r/GUI/Plater.cpp:2924 +msgid "Reload from Disk" +msgstr "Znovu načíst z Disku" + +#: src/slic3r/GUI/Plater.cpp:2924 +msgid "Reload the selected file from Disk" +msgstr "Znovu načíst vybraný objekt z Disku" + +#: src/slic3r/GUI/Preferences.cpp:36 +msgid "Remember output directory" +msgstr "Pamatovat si výstupní složku" + +#: src/slic3r/GUI/Tab.cpp:2935 +msgid "remove" +msgstr "odebrat" + +#: src/slic3r/GUI/Tab.cpp:2937 +msgid "Remove" +msgstr "Odebrat" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:859 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:912 +msgid "Remove all points" +msgstr "Odebrat všechny body" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:125 +msgid "Remove Instance from selected object" +msgstr "Odebrat instanci vybraného objektu" + +#: src/slic3r/GUI/Plater.cpp:2899 +msgid "Remove one copy of the selected object" +msgstr "Odstraní jednu kopii vybraného objektu" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1230 +msgid "Remove point" +msgstr "Odebrat bod" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1233 +msgid "Remove point from selection" +msgstr "Odebrat bod z výběru" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:855 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1237 +msgid "Remove selected points" +msgstr "Odebrat označené body" + +#: src/slic3r/GUI/Plater.cpp:2891 src/slic3r/GUI/Plater.cpp:2909 +msgid "Remove the selected object" +msgstr "Odstranit vybraný objekt" + +#: src/slic3r/GUI/ConfigWizard.cpp:305 +msgid "Remove user profiles - install from scratch (a snapshot will be taken beforehand)" +msgstr "Odstranit uživatelské profily - čistá instalace (nejprve bude provedena záloha)" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1200 +msgid "Rename" +msgstr "Přejmenovat" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2709 +msgid "Renaming" +msgstr "Přejmenování" + +#: src/libslic3r/PrintConfig.cpp:3125 +msgid "Render with a software renderer" +msgstr "Vykreslení pomocí softwaru" + +#: src/libslic3r/PrintConfig.cpp:3126 +msgid "Render with a software renderer. The bundled MESA software renderer is loaded instead of the default OpenGL driver." +msgstr "Vykreslení pomocí softwaru. Namísto výchozího ovladače OpenGL je načten dodaný softwarový renderer MESA." + +#: src/slic3r/GUI/MainFrame.cpp:772 src/libslic3r/PrintConfig.cpp:3058 msgid "Repair" msgstr "Oprava" -#: src/slic3r/GUI/MainFrame.cpp:690 +#: lib/Slic3r/GUI/MainFrame.pm:258 +msgid "Repair STL file…" +msgstr "Opravit soubor STL…" + +#: src/slic3r/Utils/FixModelByWin10.cpp:387 +msgid "Repaired 3MF file contains more than one object" +msgstr "Opravený soubor 3MF obsahuje více než jeden objekt." + +#: src/slic3r/Utils/FixModelByWin10.cpp:391 +msgid "Repaired 3MF file contains more than one volume" +msgstr "Opravený soubor 3MF obsahuje více než jedno těleso." + +#: src/slic3r/Utils/FixModelByWin10.cpp:385 +msgid "Repaired 3MF file does not contain any object" +msgstr "Opravený soubor 3MF neobsahuje žádný objekt" + +#: src/slic3r/Utils/FixModelByWin10.cpp:389 +msgid "Repaired 3MF file does not contain any volume" +msgstr "Opravený soubor 3MF neobsahuje žádný objemové těleso" + +#: src/slic3r/Utils/FixModelByWin10.cpp:242 +msgid "Repairing model by the Netfabb service" +msgstr "Opravování modelu službou Netfabb" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 src/slic3r/GUI/MainFrame.cpp:395 +msgid "Repeat last quick slice" +msgstr "Opakovat poslední rychlé slicování" + +#: src/slic3r/GUI/MainFrame.cpp:395 +msgid "Repeat Last Quick Slice" +msgstr "Opakovat poslední rychlé slicování" + +#: src/slic3r/GUI/MainFrame.cpp:561 +msgid "Report an I&ssue" +msgstr "Nahlá&sit chybu" + +#: lib/Slic3r/GUI/MainFrame.pm:361 +msgid "Report an Issue" +msgstr "Nahlásit chybu" + +#: src/slic3r/GUI/MainFrame.cpp:561 +#, possible-c-format +msgid "Report an issue on %s" +msgstr "Nahlásit chybu v programu %s" + +#: src/slic3r/GUI/MainFrame.cpp:477 +msgid "Report an issue on the Slic3r Prusa Edition" +msgstr "Nahlásit chybu ve Slic3eru Prusa Edice" + +#: src/slic3r/Utils/PresetUpdater.cpp:590 +#, possible-c-format +msgid "requires max. %s" +msgstr "vyžaduje max. %s" + +#: src/slic3r/Utils/PresetUpdater.cpp:588 +#, possible-c-format +msgid "requires min. %s" +msgstr "vyžaduje min. %s" + +#: src/slic3r/Utils/PresetUpdater.cpp:583 +#, possible-c-format +msgid "requires min. %s and max. %s" +msgstr "vyžaduje min. %s a max. %s" + +#: src/slic3r/GUI/FirmwareDialog.cpp:772 +msgid "Rescan" +msgstr "Skenovat" + +#: src/slic3r/GUI/Tab.cpp:1879 +msgid "Rescan serial ports" +msgstr "Znovu prohledat sériové porty" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1239 +msgid "Reset clipping plane" +msgstr "Obnovit řezovou rovinu" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:928 +msgid "Reset direction" +msgstr "Resetovat směr" + +#: src/libslic3r/PrintConfig.cpp:1441 +msgid "Resolution" +msgstr "Rozlišení" + +#: src/libslic3r/PrintConfig.cpp:1459 +msgid "Retract amount before wipe" +msgstr "Délka retrakce před očištěním" + +#: src/libslic3r/PrintConfig.cpp:1467 +msgid "Retract on layer change" +msgstr "Retrakce při změně vrstvy" + +#: src/slic3r/GUI/Tab.cpp:2268 +msgid "Retraction" +msgstr "Retrakce" + +#: src/libslic3r/PrintConfig.cpp:1453 +msgid "Retraction is not triggered when travel moves are shorter than this length." +msgstr "Retrakce není spuštěna, pokud jsou rychloposuny pojezdu kratší než tato délka." + +#: src/libslic3r/PrintConfig.cpp:1474 +msgid "Retraction Length" +msgstr "Vzdálenost retrakce" + +#: src/libslic3r/PrintConfig.cpp:1482 +msgid "Retraction Length (Toolchange)" +msgstr "Vzdálenost retrakce (při změně extruderu)" + +#: src/libslic3r/PrintConfig.cpp:1534 src/libslic3r/PrintConfig.cpp:1535 +msgid "Retraction Speed" +msgstr "Rychlost retrakce" + +#: src/slic3r/GUI/Tab.cpp:2284 +msgid "Retraction when tool is disabled (advanced settings for multi-extruder setups)" +msgstr "Retrakce pro neaktivní extruder (pokročilé nastavení pro tiskárny typu MultiMaterial)" + +#: src/slic3r/GUI/GUI_Preview.cpp:244 +msgid "Retractions" +msgstr "Retrakce" + +#: src/slic3r/GUI/MainFrame.cpp:528 +msgid "Right" +msgstr "Zprava" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:279 +msgid "Right button click the icon to change the object settings" +msgstr "Klepnutím pravým tlačítkem myši na ikonu změníte nastavení objektu" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:250 +msgid "Right button click the icon to fix STL through Netfabb" +msgstr "Klepnutím pravým tlačítkem myši se spustí oprava STL souboru pomocí služby Netfabb" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:598 +msgid "Right mouse click - remove point" +msgstr "Kliknutí pravým tlačítkem myši - odebrání bodu" + +#: src/slic3r/GUI/MainFrame.cpp:528 +msgid "Right View" +msgstr "Pohled zprava" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:233 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:253 +#: src/libslic3r/PrintConfig.cpp:3062 +msgid "Rotate" +msgstr "Otočit" + +#: lib/Slic3r/GUI/Plater.pm:2228 +msgid "Rotate 45° clockwise" +msgstr "Otočit o 45° ve směru hodinových ručiček" + +#: lib/Slic3r/GUI/Plater.pm:2231 +msgid "Rotate 45° counter-clockwise" +msgstr "Otočit o 45° proti směru hodinových ručiček" + +#: lib/Slic3r/GUI/Plater.pm:1042 +msgid "Rotate around " +msgstr "Otočit okolo" + +#: src/libslic3r/PrintConfig.cpp:3067 +msgid "Rotate around X" +msgstr "Otočit okolo osy X" + +#: src/libslic3r/PrintConfig.cpp:3072 +msgid "Rotate around Y" +msgstr "Otočit okolo osy Y" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:35 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:195 +msgid "Rotate lower part upwards" +msgstr "Otočit spodní část řezem dolů" + +#: lib/Slic3r/GUI/Plater.pm:2228 +msgid "Rotate the selected object by 45° clockwise" +msgstr "Otočit vybraný objekt o 45° ve směru hodinových ručiček" + +#: lib/Slic3r/GUI/Plater.pm:2231 +msgid "Rotate the selected object by 45° counter-clockwise" +msgstr "Otočit vybraný objekt o 45° proti směru hodinových ručiček" + +#: lib/Slic3r/GUI/Plater.pm:2236 +msgid "Rotate the selected object by an arbitrary angle" +msgstr "Otočit vybraným objektem o libovolný úhel" + +#: lib/Slic3r/GUI/Plater.pm:2238 +msgid "Rotate the selected object by an arbitrary angle around X axis" +msgstr "Otočit vybraným objektem o libovolný úhel kolem osy X" + +#: lib/Slic3r/GUI/Plater.pm:2241 +msgid "Rotate the selected object by an arbitrary angle around Y axis" +msgstr "Otočit vybraným objektem o libovolný úhel kolem osy Y" + +#: lib/Slic3r/GUI/Plater.pm:2244 +msgid "Rotate the selected object by an arbitrary angle around Z axis" +msgstr "Otočit vybraným objektem o libovolný úhel kolem osy Z" + +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:458 +msgid "Rotate [R]" +msgstr "Otočit [R]" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:151 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:194 +msgid "Rotation" +msgstr "Otáčení" + +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:491 +msgid "Rotation (deg)" +msgstr "Otáčení (stupně)" + +#: src/libslic3r/PrintConfig.cpp:3068 +msgid "Rotation angle around the X axis in degrees." +msgstr "Úhel otočení kolem osy X ve stupních." + +#: src/libslic3r/PrintConfig.cpp:3073 +msgid "Rotation angle around the Y axis in degrees." +msgstr "Úhel otočení kolem osy Y ve stupních." + +#: src/libslic3r/PrintConfig.cpp:3063 +msgid "Rotation angle around the Z axis in degrees." +msgstr "Úhel otočení kolem osy Z ve stupních." + +#: src/libslic3r/SLA/SLASupportTree.cpp:2158 +msgid "Routing supports to model surface" +msgstr "Směrování podpěr k povrchu modelu" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2157 +msgid "Routing to ground" +msgstr "Směrování k zemi" + +#: src/slic3r/GUI/ConfigWizard.cpp:298 src/slic3r/GUI/GUI_App.cpp:658 +#, possible-c-format +msgid "Run %s" +msgstr "Spustit %s" + +#: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/RammingChart.cpp:81 +#: src/slic3r/GUI/WipeTowerDialog.cpp:82 src/libslic3r/PrintConfig.cpp:612 +#: src/libslic3r/PrintConfig.cpp:656 src/libslic3r/PrintConfig.cpp:671 +#: src/libslic3r/PrintConfig.cpp:2243 src/libslic3r/PrintConfig.cpp:2252 +#: src/libslic3r/PrintConfig.cpp:2312 src/libslic3r/PrintConfig.cpp:2319 +msgid "s" +msgstr "s" + +#: src/slic3r/GUI/MainFrame.cpp:677 src/slic3r/GUI/Tab.cpp:3239 +msgid "Save " +msgstr "Uložit " + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1023 +msgid "Save changes?" +msgstr "Uložit změny?" + +#: src/libslic3r/PrintConfig.cpp:2997 +msgid "Save config file" +msgstr "Uložit konfigurační soubor" + +#: src/slic3r/GUI/MainFrame.cpp:786 msgid "Save configuration as:" msgstr "Uložit konfiguraci jako:" -#: src/slic3r/GUI/MainFrame.cpp:710 src/slic3r/GUI/MainFrame.cpp:774 -msgid "Select configuration to load:" -msgstr "Zvolte konfiguraci k načtení:" +#: src/libslic3r/PrintConfig.cpp:2998 +msgid "Save configuration to the specified file." +msgstr "Uložit konfiguraci do zadaného souboru." -#: src/slic3r/GUI/MainFrame.cpp:747 +#: src/slic3r/GUI/Tab.cpp:130 +msgid "Save current " +msgstr "Uložit stávající " + +#: src/slic3r/GUI/MainFrame.cpp:341 +msgid "Save current project file" +msgstr "Uložit stávající projekt" + +#: src/slic3r/GUI/MainFrame.cpp:343 +msgid "Save current project file as" +msgstr "Uložit stávající projekt jako" + +#: src/slic3r/GUI/Plater.cpp:1938 +msgid "Save file as:" +msgstr "Uložit soubor jako:" + +#: src/slic3r/GUI/Plater.cpp:3433 +msgid "Save G-code file as:" +msgstr "Uložit G-code jako:" + +#: src/slic3r/GUI/MainFrame.cpp:757 +msgid "Save OBJ file (less prone to coordinate errors than STL) as:" +msgstr "Uložit soubor OBJ (méně náchylný na chyby souřadnic než STL) jako:" + +#: src/slic3r/GUI/Tab.hpp:417 +msgid "Save preset" +msgstr "Uložit přednastavení" + +#: src/slic3r/GUI/MainFrame.cpp:843 msgid "Save presets bundle as:" msgstr "Uložit balík přednastavení jako:" -#: src/slic3r/GUI/MainFrame.cpp:798 -#, c-format -msgid "%d presets successfully imported." -msgstr "%d přednastavení úspěšně importováno." +#: src/slic3r/GUI/MainFrame.cpp:343 +msgid "Save Project &as" +msgstr "Uložit Projekt j&ako" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 +msgid "Save project (3MF)" +msgstr "Uložit projekt (3MF)" + +#: src/slic3r/GUI/Plater.cpp:3433 +msgid "Save SL1 file as:" +msgstr "Uložit SL1 soubor jako:" + +#: src/slic3r/GUI/MainFrame.cpp:692 +msgid "Save zip file as:" +msgstr "Uložit ZIP soubor jako:" + +#: src/slic3r/Utils/FixModelByWin10.cpp:263 +#: src/slic3r/Utils/FixModelByWin10.cpp:270 +#: src/slic3r/Utils/FixModelByWin10.cpp:302 +msgid "Saving mesh into the 3MF container failed." +msgstr "Ukládání meshe do 3MF kontejneru selhalo." + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:152 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:234 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:254 +#: src/libslic3r/PrintConfig.cpp:3077 +msgid "Scale" +msgstr "Měřítko" + +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:276 +msgid "Scale (%)" +msgstr "Měřítko (%)" + +#: lib/Slic3r/GUI/Plater.pm:1133 lib/Slic3r/GUI/Plater.pm:1137 +msgid "Scale along " +msgstr "Upravit rozměr podél " + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:195 +msgid "Scale factors" +msgstr "Měřítka" + +#: lib/Slic3r/GUI/Plater.pm:2262 lib/Slic3r/GUI/Plater.pm:2278 +msgid "Scale the selected object along a single axis" +msgstr "Změnit rozměr vybraného objektu podél jedné osy" + +#: lib/Slic3r/GUI/Plater.pm:2267 lib/Slic3r/GUI/Plater.pm:2283 +msgid "Scale the selected object along the X axis" +msgstr "Změnit rozměr vybraného objektu podél osy X" + +#: lib/Slic3r/GUI/Plater.pm:2264 lib/Slic3r/GUI/Plater.pm:2280 +msgid "Scale the selected object along the XYZ axes" +msgstr "Změnit rozměr vybraného objektu podél os XYZ" + +#: lib/Slic3r/GUI/Plater.pm:2270 lib/Slic3r/GUI/Plater.pm:2286 +msgid "Scale the selected object along the Y axis" +msgstr "Změnit rozměr vybraného objektu podél osy Y" + +#: lib/Slic3r/GUI/Plater.pm:2273 lib/Slic3r/GUI/Plater.pm:2289 +msgid "Scale the selected object along the Z axis" +msgstr "Změnit rozměr vybraného objektu podél osy Z" + +#: src/libslic3r/PrintConfig.cpp:3086 +msgid "Scale to Fit" +msgstr "Změnit měřítko, aby se objekt vešel do tiskového prostoru" + +#: src/libslic3r/PrintConfig.cpp:3087 +msgid "Scale to fit the given volume." +msgstr "Změnit velikost, aby se objekt vešel do zadaného tiskového prostoru." + +#: lib/Slic3r/GUI/Plater.pm:2278 +msgid "Scale to size" +msgstr "Upravit do rozměru" + +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:51 +msgid "Scale [S]" +msgstr "Upravit velikost [S]" + +#: lib/Slic3r/GUI/Plater.pm:260 lib/Slic3r/GUI/Plater.pm:276 +msgid "Scale…" +msgstr "Velikost…" + +#: src/libslic3r/PrintConfig.cpp:3078 +msgid "Scaling factor or percentage." +msgstr "Procentuální měřítko." + +#: src/libslic3r/PrintConfig.cpp:1551 +msgid "Seam position" +msgstr "Pozice švu" + +#: src/libslic3r/PrintConfig.cpp:1572 +msgid "Seam preferred direction" +msgstr "Preferovaný směr švu" + +#: src/libslic3r/PrintConfig.cpp:1581 +msgid "Seam preferred direction jitter" +msgstr "Seam preferred direction jitter" + +#: src/slic3r/GUI/BonjourDialog.cpp:218 +msgid "Searching for devices" +msgstr "Hledám zařízení" + +#: src/slic3r/GUI/Plater.cpp:2190 +msgid "Searching for optimal orientation" +msgstr "Hledání optimální orientace" + +#: lib/Slic3r/GUI/MainFrame.pm:300 +msgid "Select &Controller Tab\tCtrl+T" +msgstr "Zobrazit panel Ovladač\tCtrl+T" + +#: lib/Slic3r/GUI/MainFrame.pm:311 +msgid "Select &Filament Settings Tab\tCtrl+3" +msgstr "Zobrazit panel Nastavení filamentu\tCtrl+3" + +#: lib/Slic3r/GUI/MainFrame.pm:294 +msgid "Select &Plater Tab\tCtrl+1" +msgstr "Zobrazit panel Podložka\tCtrl+1" + +#: xs/src/slic3r/GUI/ConfigWizard.cpp:108 +msgid "Select all" +msgstr "Vybrat vše" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 +msgid "Select All objects" +msgstr "Vybrat všechny objekty" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1236 +msgid "Select all points" +msgstr "Vybrat všechny body" + +#: src/slic3r/GUI/ConfigWizard.cpp:1089 +msgid "Select all standard printers" +msgstr "Vybrat všechny standardní tiskárny" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1234 +msgid "Select by rectangle" +msgstr "Označit obdélníkovým výběrem myši" + +#: src/slic3r/GUI/MainFrame.cpp:806 src/slic3r/GUI/MainFrame.cpp:870 +msgid "Select configuration to load:" +msgstr "Zvolte konfiguraci k načtení:" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2834 +msgid "Select extruder number for selected objects and/or parts" +msgstr "Vyberte číslo extruderu pro vybrané objekty a / nebo části" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2847 +msgid "Select extruder number:" +msgstr "Vyberte číslo extruderu:" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 +msgid "Select Filament Settings Tab" +msgstr "Zobrazit panel Nastavení filamentu" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +msgid "Select multiple object/Move multiple object" +msgstr "Vybrat více objektů/Přesunout více objektů" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1251 +msgid "Select new extruder for the object/part" +msgstr "Vyberte nový extruder pro objekt/část" + +#: xs/src/slic3r/GUI/ConfigWizard.cpp:109 +msgid "Select none" +msgstr "Odznačit vše" + +#: lib/Slic3r/GUI/MainFrame.pm:308 +msgid "Select P&rint Settings Tab\tCtrl+2" +msgstr "Zobrazit panel Nastavení tisku\tCtrl+2" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 +msgid "Select Plater Tab" +msgstr "Zobrazit panel Podložka" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 +msgid "Select Print Settings Tab" +msgstr "Zobrazit panel Nastavení tisku" + +#: lib/Slic3r/GUI/MainFrame.pm:314 +msgid "Select Print&er Settings Tab\tCtrl+4" +msgstr "Zobrazit panel Nastavení tiskárny\tCtrl+4" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 +msgid "Select Printer Settings Tab" +msgstr "Zobrazit panel Nastavení tiskárny" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:917 +msgid "Select showing settings" +msgstr "Zvolte nastavení zobrazení " + +#: src/slic3r/GUI/GUI_App.cpp:524 +msgid "Select the language" +msgstr "Výběr jazyka" + +#: src/slic3r/GUI/Tab.cpp:57 +msgid "Select the print profiles this profile is compatible with." +msgstr "Vyberte tiskové profily, s nimiž je tento profil kompatibilní." + +#: src/slic3r/GUI/Tab.cpp:51 +msgid "Select the printers this profile is compatible with." +msgstr "Vyberte tiskárny, s nimiž je tento profil kompatibilní." + +#: src/slic3r/GUI/MainFrame.cpp:744 +msgid "Select the STL file to repair:" +msgstr "Vyberte STL soubor k opravě:" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2545 +msgid "Select type of part" +msgstr "Vyberte typ součásti" + +#: src/slic3r/GUI/Plater.cpp:421 +msgid "Select what kind of support do you need" +msgstr "Vyberte typ podpěr, které potřebujete" + +#: src/slic3r/GUI/MainFrame.cpp:444 +msgid "Selects all objects" +msgstr "Vybrat všechny objekty" + +#: src/slic3r/GUI/Plater.cpp:3822 +msgid "Send G-code" +msgstr "Odeslat G-code" + +#: xs/src/slic3r/Utils/OctoPrint.cpp:33 +msgid "Send G-Code to printer" +msgstr "Odeslat G-code do tiskárny" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:33 +msgid "Send G-Code to printer host" +msgstr "Odeslat G-Code do tiskového serveru" + +#: src/slic3r/GUI/Plater.cpp:731 src/slic3r/GUI/Plater.cpp:3822 +msgid "Send to printer" +msgstr "Odeslat do tiskárny" + +#: xs/src/slic3r/Utils/OctoPrint.cpp:111 lib/Slic3r/GUI/Plater.pm:1558 +msgid "Sending G-code file to the OctoPrint server..." +msgstr "Odesílání souboru G-code na server OctoPrint…" + +#: src/slic3r/GUI/Tab.cpp:1169 +msgid "Sequential printing" +msgstr "Sekvenční tisk" + +#: src/slic3r/GUI/Tab.cpp:1874 src/libslic3r/PrintConfig.cpp:1591 +msgid "Serial port" +msgstr "Sériový port" + +#: src/libslic3r/PrintConfig.cpp:1599 +msgid "Serial port speed" +msgstr "Rychlost sériového portu" + +#: src/slic3r/GUI/FirmwareDialog.cpp:769 +msgid "Serial port:" +msgstr "Sériový port:" + +#: src/slic3r/GUI/BonjourDialog.cpp:74 +msgid "Service name" +msgstr "Název služby" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1192 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1331 +msgid "Set as a Separated Object" +msgstr "Změnit na oddělený objekt" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1331 +msgid "Set as a Separated Objects" +msgstr "Převést na oddělené objekty" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2833 +msgid "Set extruder for selected items" +msgstr "Zvolte extruder pro vybrané položky" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 +msgid "Set lower thumb to current slider thumb" +msgstr "Aktivovat spodní ukazatel aktivního posuvníku" + +#: src/slic3r/GUI/Plater.cpp:2901 +msgid "Set number of copies" +msgstr "Zadat počet kopií" + +#: lib/Slic3r/GUI/Plater.pm:2224 +msgid "Set number of copies…" +msgstr "Zadat počet kopií…" + +#: src/libslic3r/PrintConfig.cpp:1053 +msgid "Set silent mode for the G-code flavor" +msgstr "Nastavit přiznak G-codu pro tichý režim" + +#: src/libslic3r/PrintConfig.cpp:2228 +msgid "Set the actual LCD display orientation inside the SLA printer. Portrait mode will flip the meaning of display width and height parameters and the output images will be rotated by 90 degrees." +msgstr "Nastavte skutečnou orientaci LCD displeje uvnitř SLA tiskárny. Režim Orientace na výšku převrátí význam parametrů šířky a výšky a výstupní obrazy budou otočeny o 90 stupňů." + +#: src/slic3r/GUI/ConfigWizard.cpp:527 +msgid "Set the shape of your printer's bed." +msgstr "Nastavte tvar a rozměry vaší tiskové podložky." + +#: src/libslic3r/PrintConfig.cpp:524 +msgid "Set this to a non-zero value to allow a manual extrusion width. If left to zero, Slic3r derives extrusion widths from the nozzle diameter (see the tooltips for perimeter extrusion width, infill extrusion width etc). If expressed as percentage (for example: 230%), it will be computed over layer height." +msgstr "Nastavením kladné hodnoty povolíte manuální šířku extruze. Pokud je hodnota ponechána na nule, Slic3r odvozuje šířku extruze z průměru trysky (viz nápovědy pro šířku extruze perimetru, šířku extruze výplně apod.). Pokud je hodnota vyjádřena procenty (například: 230%), vypočítá se z výšky vrstvy." + +#: src/libslic3r/PrintConfig.cpp:417 +msgid "Set this to a non-zero value to set a manual extrusion width for external perimeters. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 200%), it will be computed over layer height." +msgstr "Nastavením na kladnou hodnotu, definuje šířku manuální extruze pro vnější obvod. Pokud je ponechána nula, použije se výchozí šířka extruze, pokud je nastavena, jinak se použije průměr trysky 1,125 x. Pokud je hodnota vyjádřena jako procento (například 200%), vypočítá se podle výšky vrstvy." + +#: src/libslic3r/PrintConfig.cpp:831 +msgid "Set this to a non-zero value to set a manual extrusion width for first layer. You can use this to force fatter extrudates for better adhesion. If expressed as percentage (for example 120%) it will be computed over first layer height. If set to zero, it will use the default extrusion width." +msgstr "Nastavením kladné hodnoty zvolíte manuální šířku vytlačování pro první vrstvu. Toto můžete použít k vytlačování tlustší extruze pro lepší přilnavost. Pokud je vyjádřeno jako procenty (například 120%), bude vypočteno z výšky první vrstvy. Pokud je nastavena na nulu, použije se výchozí šířka vytlačování." + +#: src/libslic3r/PrintConfig.cpp:1689 +msgid "Set this to a non-zero value to set a manual extrusion width for infill for solid surfaces. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." +msgstr "Zadejte kladnou hodnotu, chcete-li nastavit manuálně šířku extruze pro výplň plných povrchů. Pokud je ponechána nula, použije se standardní šířka extruze, pokud je nastavena, jinak se použije průměr trysky 1,125 x. Pokud je vyjádřena procenty (například 90%), bude vypočtena z výšky vrstvy." + +#: src/libslic3r/PrintConfig.cpp:2019 +msgid "Set this to a non-zero value to set a manual extrusion width for infill for top surfaces. You may want to use thinner extrudates to fill all narrow regions and get a smoother finish. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." +msgstr "Zadejte kladnou hodnotu, chcete-li nastavit manuálně šířku extruze pro výplň vrchních ploch. Možná budete chtít použít tenčí extruzi, abyste vyplnili všechny úzké oblasti a získali hladší povrch. Pokud je ponechána nula, použije se výchozí šířka extruze, pokud je nastavena, jinak se použije průměr trysky. Pokud je vyjádřena procenty (například 90%), bude vypočtena z výšky vrstvy." + +#: src/libslic3r/PrintConfig.cpp:963 +msgid "Set this to a non-zero value to set a manual extrusion width for infill. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. You may want to use fatter extrudates to speed up the infill and make your parts stronger. If expressed as percentage (for example 90%) it will be computed over layer height." +msgstr "Nastavením kladné hodnoty upravíte manuálně šířku extruze pro výplň. Pokud je ponechána nula, použije se standardní šířka extruze, pokud je nastavena, jinak se použije průměr trysky 1,125 x. Je možné, že budete chtít použít tlustší extruze, pro zrychlení výplně a zpevnění vašich výtisků. Pokud je vyjádřeno jako procenty (například 90%), bude vypočteno z výšky vrstvy." + +#: src/libslic3r/PrintConfig.cpp:1350 +msgid "Set this to a non-zero value to set a manual extrusion width for perimeters. You may want to use thinner extrudates to get more accurate surfaces. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 200%) it will be computed over layer height." +msgstr "Nastavením na kladnou hodnotu nastavíte manuálně šířku vytlačování perimetrů. Chcete-li získat přesnější povrchy, můžete použít tenčí extruze. Pokud je ponechána nula, použije se standardní šířka extruze, pokud je nastavena, jinak se použije průměr trysky 1,125 x. Pokud je vyjádřeno procenty (například 200%), vypočte se z výšky vrstvy." + +#: src/libslic3r/PrintConfig.cpp:1862 +msgid "Set this to a non-zero value to set a manual extrusion width for support material. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." +msgstr "Zadejte kladnou hodnotu, chcete-li nastavit manuálně šířku extruze pro podpěry. Pokud je ponechána nula, použije se výchozí šířka extruze, pokud je nastavena, jinak se použije průměr trysky. Pokud je vyjádřena procenty (například 90%), bude vypočtena z výšky vrstvy." + +#: src/libslic3r/PrintConfig.cpp:480 +msgid "Set this to the clearance radius around your extruder. If the extruder is not centered, choose the largest value for safety. This setting is used to check for collisions and to display the graphical preview in the plater." +msgstr "Zadejte horizontální rádius kolizního prostoru okolo extruderu. Pokud tryska není v centru tohoto rádiusu, zvolte nejdelší vzdálenost. Toto nastavení slouží ke kontrole kolizí a zobrazení grafického náhledu na podložce." + +#: src/libslic3r/PrintConfig.cpp:65 +msgid "Set this to the maximum height that can be reached by your extruder while printing." +msgstr "Nastavte tuto hodnotu na maximální výšku, která může být dosažena extruderem během tisku." + +#: src/libslic3r/PrintConfig.cpp:469 +msgid "Set this to the vertical distance between your nozzle tip and (usually) the X carriage rods. In other words, this is the height of the clearance cylinder around your extruder, and it represents the maximum depth the extruder can peek before colliding with other printed objects." +msgstr "Zadejte vertikální vzdálenost mezi tryskou a (obvykle) tyčemi osy X. Jinými slovy, je to výška kolizního prostoru okolo extruderu a představuje maximální hloubku, které může extruder dosáhnout před kolizí s jinými, již vytištěnými, objekty." + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 +msgid "Set upper thumb to current slider thumb" +msgstr "Aktivovat horní ukazatel aktivního posuvníku" + +#: src/slic3r/GUI/BedShapeDialog.cpp:143 +msgid "Settings" +msgstr "Nastavení" + +#: lib/Slic3r/GUI/Plater.pm:264 lib/Slic3r/GUI/Plater.pm:279 +#: lib/Slic3r/GUI/Plater.pm:2300 +msgid "Settings…" +msgstr "Nastavení…" + +#: src/slic3r/GUI/BedShapeDialog.cpp:60 +msgid "Shape" +msgstr "Tvar" + +#: src/slic3r/GUI/GUI_Preview.cpp:246 +msgid "Shells" +msgstr "Skořápky" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:599 +msgid "Shift + Left (+ drag) - select point(s)" +msgstr "Shift + Levé tlačítko (klik nebo tažení) - výběr bodu(ů)" + +#: src/slic3r/GUI/GUI_Preview.cpp:221 +msgid "Show" +msgstr "Zobrazit" + +#: src/slic3r/GUI/MainFrame.cpp:559 +msgid "Show &Configuration Folder" +msgstr "Otevřít adresář nastavení" + +#: src/slic3r/GUI/MainFrame.cpp:563 +msgid "Show about dialog" +msgstr "Zobrazit okno o Slic3ru" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:339 +msgid "Show advanced settings" +msgstr "Zobrazit rozšířená nastavení" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:158 +msgid "Show error message" +msgstr "Zobrazit chybovou hlášku" + +#: src/slic3r/GUI/Preferences.cpp:84 +msgid "Show incompatible print and filament presets" +msgstr "Zobrazit nekompatibilní přednastavení tisku a filamentu" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +msgid "Show keyboard shortcuts list" +msgstr "Zobrazit přehled klávesových zkratek" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:339 +msgid "Show simplified settings" +msgstr "Zobrazit jednoduché nastavení" + +#: src/slic3r/GUI/MainFrame.cpp:557 +msgid "Show system information" +msgstr "Zobrazit systémové informace" + +#: src/slic3r/GUI/MainFrame.cpp:487 +msgid "Show the 3D editing view" +msgstr "Zobrazit 3D editaci" + +#: src/slic3r/GUI/MainFrame.cpp:489 +msgid "Show the 3D slices preview" +msgstr "Zobrazit 3D náhled vrstev" + +#: src/slic3r/GUI/MainFrame.cpp:480 +msgid "Show the filament settings" +msgstr "Zobrazit nastavení filamentu" + +#: src/libslic3r/PrintConfig.cpp:2983 +msgid "Show the full list of print/G-code configuration options." +msgstr "Zobrazit kompletní seznam možností konfigurace tisku / G-codu." + +#: src/libslic3r/PrintConfig.cpp:2988 +msgid "Show the full list of SLA print configuration options." +msgstr "Zobrazit kompletní seznam možností konfigurace SLA tisku." + +#: src/slic3r/GUI/MainFrame.cpp:566 +msgid "Show the list of the keyboard shortcuts" +msgstr "Zobrazit seznam klávesových zkratek" + +#: src/slic3r/GUI/MainFrame.cpp:471 +msgid "Show the plater" +msgstr "Zobrazit podložku" + +#: src/slic3r/GUI/MainFrame.cpp:478 +msgid "Show the print settings" +msgstr "Zobrazit nastavení tisku" + +#: lib/Slic3r/GUI/MainFrame.pm:300 +msgid "Show the printer controller" +msgstr "Zobrazit ovladač tiskárny" + +#: src/slic3r/GUI/MainFrame.cpp:483 +msgid "Show the printer settings" +msgstr "Zobrazit nastavení tiskárny" + +#: src/libslic3r/PrintConfig.cpp:2977 +msgid "Show this help." +msgstr "Zobrazí tuto nápovědu." + +#: src/slic3r/GUI/MainFrame.cpp:559 +msgid "Show user configuration folder (datadir)" +msgstr "Zobrazit uživatelský adresář konfigurace (datadir)" + +#: src/slic3r/GUI/Tab.cpp:2157 +msgid "Silent" +msgstr "Tichý" + +#: src/slic3r/GUI/Plater.cpp:1077 +msgid "silent mode" +msgstr "tichý režim" + +#: src/slic3r/GUI/GUI_App.cpp:674 src/slic3r/GUI/wxExtensions.cpp:2459 +msgid "Simple" +msgstr "Jednoduchý" + +#: src/slic3r/GUI/GUI_App.cpp:674 +msgid "Simple View Mode" +msgstr "Jednoduchý režim" + +#: src/slic3r/GUI/Tab.cpp:2231 src/slic3r/GUI/Tab.cpp:2239 +msgid "Single extruder MM setup" +msgstr "Nastavení jednoho extruderu MM" + +#: src/libslic3r/PrintConfig.cpp:1767 +msgid "Single Extruder Multi Material" +msgstr "MultiMaterial tisk s jedním extrudérem" + +#: src/slic3r/GUI/Tab.cpp:2240 +msgid "Single extruder multimaterial parameters" +msgstr "Parametry jednoho multi materiálového extruderu" + +#: src/slic3r/GUI/BedShapeDialog.cpp:72 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:153 src/slic3r/GUI/Plater.cpp:137 +#: src/slic3r/GUI/Tab.cpp:2257 +msgid "Size" +msgstr "Rozměr" + +#: src/slic3r/GUI/Tab.cpp:1813 src/slic3r/GUI/Tab.cpp:2014 +msgid "Size and coordinates" +msgstr "Rozměry a počátek" + +#: src/slic3r/GUI/BedShapeDialog.cpp:73 +msgid "Size in X and Y of the rectangular plate." +msgstr "Rozměr obdélníkové tiskové podložky v ose X a Y." + +#: src/slic3r/GUI/GUI_Preview.cpp:235 src/slic3r/GUI/Tab.cpp:1050 +#: src/libslic3r/GCode/PreviewData.cpp:171 +msgid "Skirt" +msgstr "Obrys" + +#: src/slic3r/GUI/Tab.cpp:1049 +msgid "Skirt and brim" +msgstr "Obrys a límec" + +#: src/libslic3r/PrintConfig.cpp:1617 +msgid "Skirt height" +msgstr "Výška obrysu" + +#: src/libslic3r/PrintConfig.cpp:1626 +msgid "Skirt Loops" +msgstr "Počet obrysových smyček" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1200 +msgid "SLA gizmo keyboard shortcuts" +msgstr "Klávesové zkratky pro SLA gizma" + +#: src/slic3r/GUI/Plater.cpp:684 src/slic3r/GUI/Preset.cpp:1277 +msgid "SLA material" +msgstr "SLA materiál" + +#: src/slic3r/GUI/Plater.cpp:683 src/slic3r/GUI/Preset.cpp:1276 +msgid "SLA print" +msgstr "SLA tisk" + +#: src/libslic3r/PrintConfig.cpp:2331 +msgid "SLA print material notes" +msgstr "Poznámky pro SLA materiál" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:995 +msgid "SLA Support Points [L]" +msgstr "SLA Podpěrné Body [L]" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1055 +msgid "Slab" +msgstr "Deska" + +#: src/slic3r/GUI/MainFrame.cpp:470 +msgid "Slic3r &Manual" +msgstr "Slic3r návod" + +#: src/slic3r/GUI/MainFrame.cpp:468 +msgid "Slic3r &Website" +msgstr "Slic3r &Webová stránka" + +#: src/libslic3r/PrintConfig.cpp:1268 +msgid "Slic3r can upload G-code files to a printer host. This field must contain the kind of the host." +msgstr "Slic3r může nahrát soubory G-code do tiskového serveru. Toto pole musí obsahovat druh tiskového serveru." + +#: src/libslic3r/PrintConfig.cpp:89 +msgid "Slic3r can upload G-code files to a printer host. This field should contain the API Key or the password required for authentication." +msgstr "Slic3r může nahrát soubory do tiskového serveru. Toto pole by mělo obsahovat klíč API požadovaný pro ověření." + +#: src/libslic3r/PrintConfig.cpp:82 +msgid "Slic3r can upload G-code files to a printer host. This field should contain the hostname, IP address or URL of the printer host instance." +msgstr "Slic3r může nahrát soubory G-code do tiskového serveru. Toto pole by mělo obsahovat název serveru (hostname), IP adresu nebo URL tiskového serveru." + +#: xs/src/libslic3r/PrintConfig.cpp:1110 +msgid "Slic3r can upload G-code files to OctoPrint. This field should contain the API Key required for authentication." +msgstr "Slic3r může nahrát soubory G-code do OctoPrintu. Toto pole by mělo obsahovat klíč API požadovaný pro ověření." + +#: xs/src/libslic3r/PrintConfig.cpp:1124 +msgid "Slic3r can upload G-code files to OctoPrint. This field should contain the hostname, IP address or URL of the OctoPrint instance." +msgstr "Slic3r může nahrát soubory G-code do OctoPrintu. Toto pole by mělo obsahovat název hosta (hostname), IP adresu nebo URL instance OctoPrint." + +#: src/slic3r/GUI/UpdateDialogs.cpp:111 +msgid "Slic3r configuration is incompatible" +msgstr "Konfigurace Slic3ru není kompatibilní" + +#: lib/Slic3r/GUI/Plater.pm:1021 +msgid "Slic3r Error" +msgstr "Chyba Slic3ru" #: src/slic3r/GUI/MsgDialog.cpp:71 msgid "Slic3r error" @@ -2248,5531 +5658,1762 @@ msgstr "Chyba Slic3ru" msgid "Slic3r has encountered an error" msgstr "Došlo k chybě Slic3ru" -#: src/slic3r/GUI/Plater.cpp:137 -msgid "Volume" -msgstr "Obsah" +#: src/slic3r/GUI/UpdateDialogs.cpp:111 +msgid "Slic3r incompatibility" +msgstr "Nekompatibilita Slic3ru" -#: src/slic3r/GUI/Plater.cpp:138 -msgid "Facets" -msgstr "Facety" +#: src/slic3r/GUI/UpdateDialogs.cpp:168 +#, possible-c-format +msgid "Slic3r PE now uses an updated configuration structure.\n\nSo called 'System presets' have been introduced, which hold the built-in default settings for various printers. These System presets cannot be modified, instead, users now may create their own presets inheriting settings from one of the System presets.\nAn inheriting preset may either inherit a particular value from its parent or override it with a customized value.\n\nPlease proceed with the %s that follows to set up the new presets and to choose whether to enable automatic preset updates." +msgstr "Slic3r PE nyní používá aktualizovanou konfigurační strukturu.\n\nByly uvedeny takzvaná \"Systémová přednastavení\", která obsahují výchozí nastavení pro rozličné tiskárny. Tato systémová přednastavení nemohou být upravena, místo toho si nyní uživatel může vytvořit svá vlastní přednastavení tím, že zdědí nastavení z jednoho ze systémových přednastavení.\nNově vytvořené přednastavení může buď zdědit určitou hodnotu od svého předchůdce nebo ji přepsat upravenou hodnotou.\n\nProsím postupujte dle %s, který následuje pro nastavení nových přednastavení a vyberte si, zdali chcete jejich automatickou aktualizaci." -#: src/slic3r/GUI/Plater.cpp:139 -msgid "Materials" -msgstr "Materiálů" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 +msgid "Slic3r Prusa Edition - Keyboard Shortcuts" +msgstr "Slic3r Prusa Edition - Klávesové zkratky" -#: src/slic3r/GUI/Plater.cpp:142 -msgid "Manifold" -msgstr "Model OK" +#: src/slic3r/GUI/SysInfoDialog.cpp:44 +msgid "Slic3r Prusa Edition - System Information" +msgstr "Slic3r Prusa Edition - Systémové informace" -#: src/slic3r/GUI/Plater.cpp:188 -msgid "Sliced Info" -msgstr "Informace o slicování" +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 +msgid "slic3r version" +msgstr "verze slic3ru" -#: src/slic3r/GUI/Plater.cpp:207 src/slic3r/GUI/Plater.cpp:998 -msgid "Used Filament (m)" -msgstr "Použito Filamentu (m)" +#: src/slic3r/GUI/GUI_App.cpp:623 +msgid "Slic3r View Mode" +msgstr "Režim zobrazení Slic3ru" -#: src/slic3r/GUI/Plater.cpp:208 -msgid "Used Filament (mm³)" -msgstr "Použito Filamentu (mm³)" +#: src/libslic3r/PrintConfig.cpp:1234 +msgid "Slic3r will not scale speed down below this speed." +msgstr "Slic3r nebude měnit rychlost pod tuto rychlost." -#: src/slic3r/GUI/Plater.cpp:209 -msgid "Used Filament (g)" -msgstr "Použito Filamentu (g)" +#: src/libslic3r/PrintConfig.cpp:2970 +msgid "Slice" +msgstr "Slicovat" -#: src/slic3r/GUI/Plater.cpp:210 -msgid "Used Material (unit)" -msgstr "" +#: src/slic3r/GUI/MainFrame.cpp:383 +msgid "Slice a file into a G-code" +msgstr "Slicovat soubor do G-code" -#: src/slic3r/GUI/Plater.cpp:211 src/slic3r/GUI/Plater.cpp:1013 -#: src/libslic3r/PrintConfig.cpp:716 -msgid "Cost" -msgstr "Náklady" +#: src/slic3r/GUI/MainFrame.cpp:389 +msgid "Slice a file into a G-code, save as" +msgstr "Slicovat soubor do G-code, uložit jako" -#: src/slic3r/GUI/Plater.cpp:212 src/slic3r/GUI/Plater.cpp:985 -#: src/slic3r/GUI/Plater.cpp:1027 -msgid "Estimated printing time" -msgstr "Odhadovaný čas tisku" +#: lib/Slic3r/GUI/MainFrame.pm:251 +msgid "Slice file to a multi-layer SVG" +msgstr "Slicovat soubor do více-vrstvého SVG" -#: src/slic3r/GUI/Plater.cpp:213 -msgid "Number of tool changes" -msgstr "" +#: src/libslic3r/PrintConfig.cpp:71 +msgid "Slice gap closing radius" +msgstr "Poloměr uzavření mezery v tiskové vrstvě" -#: src/slic3r/GUI/Plater.cpp:290 -msgid "Click to edit preset" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:413 -msgid "Select what kind of support do you need" -msgstr "Vyberte typ podpor, které potřebujete" - -#: src/slic3r/GUI/Plater.cpp:415 src/libslic3r/PrintConfig.cpp:1814 -#: src/libslic3r/PrintConfig.cpp:2419 -msgid "Support on build plate only" -msgstr "Podpory pouze na tiskové ploše" - -#: src/slic3r/GUI/Plater.cpp:416 -msgid "Everywhere" -msgstr "Všude" - -#: src/slic3r/GUI/Plater.cpp:438 src/slic3r/GUI/Tab.cpp:1007 -msgid "Brim" -msgstr "Límec" - -#: src/slic3r/GUI/Plater.cpp:440 -msgid "" -"This flag enables the brim that will be printed around each object on the " -"first layer." -msgstr "" -"Tato vlajka zapíná límec, který bude vytištěn kolem každého objektu při " -"první vrstvě." - -#: src/slic3r/GUI/Plater.cpp:448 -msgid "Purging volumes" -msgstr "Objemy čištění" - -#: src/slic3r/GUI/Plater.cpp:673 -msgid "Print settings" -msgstr "Nastavení tisku" - -#: src/slic3r/GUI/Plater.cpp:674 src/slic3r/GUI/Tab.cpp:1421 -#: src/slic3r/GUI/Tab.cpp:1422 -msgid "Filament" -msgstr "Filament" - -#: src/slic3r/GUI/Plater.cpp:675 src/slic3r/GUI/Preset.cpp:1252 -msgid "SLA print" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:676 src/slic3r/GUI/Preset.cpp:1253 -msgid "SLA material" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:677 -msgid "Printer" -msgstr "Tiskárna" - -#: src/slic3r/GUI/Plater.cpp:707 src/slic3r/GUI/Plater.cpp:3674 -msgid "Send to printer" -msgstr "Odeslat do tiskárny" - -#: src/slic3r/GUI/Plater.cpp:727 src/slic3r/GUI/Plater.cpp:2352 -#: src/slic3r/GUI/Plater.cpp:3470 +#: src/slic3r/GUI/Plater.cpp:734 src/slic3r/GUI/Plater.cpp:2412 +#: src/slic3r/GUI/Plater.cpp:3618 msgid "Slice now" msgstr "Slicovat" -#: src/slic3r/GUI/Plater.cpp:860 -msgid "Hold Shift to Slice & Export G-code" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:931 -#, c-format -msgid "%d (%d shells)" -msgstr "%d (%d obalů)" - -#: src/slic3r/GUI/Plater.cpp:936 -#, c-format -msgid "Auto-repaired (%d errors)" -msgstr "Automaticky opraveno (%d errors)" - -#: src/slic3r/GUI/Plater.cpp:939 -#, c-format -msgid "" -"%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " -"facets reversed, %d backwards edges" -msgstr "" -"%d poškozených faset, %d okrajů opraveno, %d faset odstraněno, %d faset " -"přidáno, %d faset navráceno, %d zadních okrajů" - -#: src/slic3r/GUI/Plater.cpp:949 -msgid "Yes" -msgstr "Ano" - -#: src/slic3r/GUI/Plater.cpp:972 -msgid "Used Material (ml)" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:975 -msgid "object(s)" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:975 -msgid "supports and pad" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1000 src/slic3r/GUI/Plater.cpp:1015 -msgid "objects" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1000 src/slic3r/GUI/Plater.cpp:1015 -msgid "wipe tower" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1030 -msgid "normal mode" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1034 -msgid "silent mode" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1544 -msgid "Loading" -msgstr "Načítání" - -#: src/slic3r/GUI/Plater.cpp:1554 -#, c-format -msgid "Processing input file %s\n" -msgstr "Zpracovávám vstupní soubor %s\n" - -#: src/slic3r/GUI/Plater.cpp:1612 -msgid "" -"This file contains several objects positioned at multiple heights. Instead " -"of considering them as multiple objects, should I consider\n" -"this file as a single object having multiple parts?\n" -msgstr "" -"Tento soubor obsahuje několik objektů umístěných v různých výškách. Mají být " -"vloženy jako jeden objekt obsahující více částí,\n" -"namísto vložení několika objektů?\n" - -#: src/slic3r/GUI/Plater.cpp:1615 src/slic3r/GUI/Plater.cpp:1707 -msgid "Multi-part object detected" -msgstr "Detekován objekt obsahující více částí" - -#: src/slic3r/GUI/Plater.cpp:1650 -msgid "" -"This file cannot be loaded in simple mode. Do you want to switch to expert " -"mode?\n" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1651 -msgid "Detected advanced data" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1684 -#, c-format -msgid "" -"You can't to add the object(s) from %s because of one or some of them " -"is(are) multi-part" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1704 -msgid "" -"Multiple objects were loaded for a multi-material printer.\n" -"Instead of considering them as multiple objects, should I consider\n" -"these files to represent a single object having multiple parts?\n" -msgstr "" -"Bylo nahráno více objektů pro multi materiálovou tiskárnu.\n" -"Mají být vloženy jako jeden objekt obsahující více částí, \n" -"namísto vložení několika objektů?\n" - -#: src/slic3r/GUI/Plater.cpp:1720 -msgid "Loaded" -msgstr "Načteno" - -#: src/slic3r/GUI/Plater.cpp:1812 -msgid "" -"Your object appears to be too large, so it was automatically scaled down to " -"fit your print bed." -msgstr "" -"Váš objekt se zdá být příliš velký, takže byl automaticky zmenšen, aby se " -"vešel na tiskovou podložku." - -#: src/slic3r/GUI/Plater.cpp:1813 -msgid "Object too large?" -msgstr "Objekt moc velký?" - -#: src/slic3r/GUI/Plater.cpp:1863 -msgid "Export STL file:" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1870 -msgid "Export AMF file:" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1876 -msgid "Save file as:" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2042 -msgid "Arranging canceled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2045 -msgid "Arranging" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2079 -msgid "Could not arrange model objects! Some geometries may be invalid." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2083 -msgid "Arranging done." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2124 -msgid "Orientation search canceled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2129 -msgid "Searching for optimal orientation" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2190 -msgid "Orientation found." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2211 -msgid "" -"The selected object can't be split because it contains more than one volume/" -"material." -msgstr "" -"Vybraný objekt nemůže být rozdělen, protože obsahuje více nez jeden objem/" -"materiál." - -#: src/slic3r/GUI/Plater.cpp:2337 -msgid "Invalid data" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2346 -msgid "Ready to slice" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2379 src/slic3r/GUI/PrintHostDialogs.cpp:220 -msgid "Cancelling" -msgstr "Ukončování" - -#: src/slic3r/GUI/Plater.cpp:2396 -msgid "Another export job is currently running." -msgstr "V současné době běží jiná úloha exportu." - -#: src/slic3r/GUI/Plater.cpp:2656 -msgid "Export failed" -msgstr "Exportování selhalo" - -#: src/slic3r/GUI/Plater.cpp:2661 src/slic3r/GUI/PrintHostDialogs.cpp:221 -msgid "Cancelled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2747 src/slic3r/GUI/Plater.cpp:2759 -#: src/slic3r/GUI/Plater.cpp:2831 -msgid "Increase copies" -msgstr "Přidat kopie" - -#: src/slic3r/GUI/Plater.cpp:2825 src/slic3r/GUI/Plater.cpp:2843 -msgid "Remove the selected object" -msgstr "Odstanit vybraný objekt" - -#: src/slic3r/GUI/Plater.cpp:2831 -msgid "Place one more copy of the selected object" -msgstr "Přidá jednu kopii vybraného objektu" - -#: src/slic3r/GUI/Plater.cpp:2833 -msgid "Decrease copies" -msgstr "Odebrat kopie" - -#: src/slic3r/GUI/Plater.cpp:2833 -msgid "Remove one copy of the selected object" -msgstr "Odstaní jednu kopii vybraného objektu" - -#: src/slic3r/GUI/Plater.cpp:2835 -msgid "Set number of copies" -msgstr "Zadat počet kopií" - -#: src/slic3r/GUI/Plater.cpp:2835 -msgid "Change the number of copies of the selected object" -msgstr "Změňte počet kopií vybraného objektu" - -#: src/slic3r/GUI/Plater.cpp:2858 -msgid "Reload from Disk" -msgstr "Znovu načíst z Disku" - -#: src/slic3r/GUI/Plater.cpp:2858 -msgid "Reload the selected file from Disk" -msgstr "Znovu načíst vybraný objekt z Disku" - -#: src/slic3r/GUI/Plater.cpp:2861 -msgid "Export the selected object as STL file" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2873 -msgid "Along X axis" -msgstr "Podél osy X" - -#: src/slic3r/GUI/Plater.cpp:2873 -msgid "Mirror the selected object along the X axis" -msgstr "Zrcadlit rozměr vybraného objektu podél osy X" - -#: src/slic3r/GUI/Plater.cpp:2875 -msgid "Along Y axis" -msgstr "Podél osy Y" - -#: src/slic3r/GUI/Plater.cpp:2875 -msgid "Mirror the selected object along the Y axis" -msgstr "Zrcadlit rozměr vybraného objektu podél osy Y" - -#: src/slic3r/GUI/Plater.cpp:2877 -msgid "Along Z axis" -msgstr "Podél osy Z" - -#: src/slic3r/GUI/Plater.cpp:2877 -msgid "Mirror the selected object along the Z axis" -msgstr "Zrcadlit rozměr vybraného objektu podél osy Z" - -#: src/slic3r/GUI/Plater.cpp:2880 -msgid "Mirror" -msgstr "Zrcadlit" - -#: src/slic3r/GUI/Plater.cpp:2880 -msgid "Mirror the selected object" -msgstr "Zrcadlit vybraný objekt" - -#: src/slic3r/GUI/Plater.cpp:2898 -msgid "To objects" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2898 src/slic3r/GUI/Plater.cpp:2920 -msgid "Split the selected object into individual objects" -msgstr "Rozdělit vybraný objekt na jednotlivé objekty" - -#: src/slic3r/GUI/Plater.cpp:2900 -msgid "To parts" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2900 src/slic3r/GUI/Plater.cpp:2940 -msgid "Split the selected object into individual sub-parts" -msgstr "Rozdělit vybraný objekt na jednotlivé části" - -#: src/slic3r/GUI/Plater.cpp:2903 src/slic3r/GUI/Plater.cpp:2920 -#: src/slic3r/GUI/Plater.cpp:2940 src/libslic3r/PrintConfig.cpp:3075 -msgid "Split" -msgstr "Rozdělit" - -#: src/slic3r/GUI/Plater.cpp:2903 -msgid "Split the selected object" -msgstr "Rozdělit vybraný objekt" - -#: src/slic3r/GUI/Plater.cpp:2926 -msgid "Optimize orientation" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2926 -msgid "Optimize the rotation of the object for better print results." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:3342 -msgid "Save G-code file as:" -msgstr "Uložit G-code jako:" - -#: src/slic3r/GUI/Plater.cpp:3342 -msgid "Save SL1 file as:" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:3397 -#, c-format -msgid "STL file exported to %s" -msgstr "Soubor STL byl exportován do %s" - -#: src/slic3r/GUI/Plater.cpp:3413 -#, c-format -msgid "AMF file exported to %s" -msgstr "Soubor AMF byl exportován do %s" - -#: src/slic3r/GUI/Plater.cpp:3416 -#, c-format -msgid "Error exporting AMF file %s" -msgstr "Chyba při exportu souboru AMF %s" - -#: src/slic3r/GUI/Plater.cpp:3442 -#, c-format -msgid "3MF file exported to %s" -msgstr "Soubor 3MF byl exportován do %s" - -#: src/slic3r/GUI/Plater.cpp:3445 -#, c-format -msgid "Error exporting 3MF file %s" -msgstr "Chyba při exportu souboru 3MF %s" - -#: src/slic3r/GUI/Plater.cpp:3673 -msgid "Export" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:3674 -msgid "Send G-code" -msgstr "" - -#: src/slic3r/GUI/Preferences.cpp:17 src/slic3r/GUI/Tab.cpp:1762 -#: src/slic3r/GUI/Tab.cpp:1963 -msgid "General" -msgstr "Obecné" - -#: src/slic3r/GUI/Preferences.cpp:34 -msgid "Remember output directory" -msgstr "Pamatovat si výstupní složku" - -#: src/slic3r/GUI/Preferences.cpp:36 -msgid "" -"If this is enabled, Slic3r will prompt the last output directory instead of " -"the one containing the input files." -msgstr "" -"Pokud je tato volba povolena, Slic3r vyvolá poslední výstupní adresář " -"namísto toho, který obsahuje vstupní soubory." - -#: src/slic3r/GUI/Preferences.cpp:42 -msgid "Auto-center parts" -msgstr "Auto-centrování objektů" - -#: src/slic3r/GUI/Preferences.cpp:44 -msgid "" -"If this is enabled, Slic3r will auto-center objects around the print bed " -"center." -msgstr "" -"Pokud je tato možnost povolena, Slic3r bude automaticky centrovat objekty " -"kolem středu tiskové plochy." - -#: src/slic3r/GUI/Preferences.cpp:50 -msgid "Background processing" -msgstr "Zpracování na pozadí" - -#: src/slic3r/GUI/Preferences.cpp:52 -msgid "" -"If this is enabled, Slic3r will pre-process objects as soon as they're " -"loaded in order to save time when exporting G-code." -msgstr "" -"Pokud je tato možnost povolena, Slic3r předprojektuje objekty, jakmile budou " -"načteny, aby šetřil čas při exportu G-code." - -#: src/slic3r/GUI/Preferences.cpp:74 -msgid "Suppress \" - default - \" presets" -msgstr "Potlačit “ - výchozí - “ přednastavení" - -#: src/slic3r/GUI/Preferences.cpp:76 -msgid "" -"Suppress \" - default - \" presets in the Print / Filament / Printer " -"selections once there are any other valid presets available." -msgstr "" -"Potlačit “ - výchozí - “ přednastavení v nabídkách Tisk / Filament / " -"Tiskárna, jakmile budou k dispozici další platné předvolby." - -#: src/slic3r/GUI/Preferences.cpp:82 -msgid "Show incompatible print and filament presets" -msgstr "Zobrazit nekompatibilní přednastavení tisku a filamentu" - -#: src/slic3r/GUI/Preferences.cpp:84 -msgid "" -"When checked, the print and filament presets are shown in the preset editor " -"even if they are marked as incompatible with the active printer" -msgstr "" -"Pokud je zaškrtnuto, přednastavení tisku a filamentu se zobrazují v editoru " -"přednastavení, i když jsou označeny jako nekompatibilní s aktivní tiskárnou" - -#: src/slic3r/GUI/Preferences.cpp:91 -msgid "Use legacy OpenGL 1.1 rendering" -msgstr "Použijte historické OpenGL 1.1 vykreslování" - -#: src/slic3r/GUI/Preferences.cpp:93 -msgid "" -"If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may " -"try to check this checkbox. This will disable the layer height editing and " -"anti aliasing, so it is likely better to upgrade your graphics driver." -msgstr "" -"Pokud máte problémy s vykreslováním způsobené chybným ovladačem OpenGL 2.0, " -"můžete se pokusit zaškrtnout toto políčko. Tím se vypnou úpravy výšky " -"hladiny a vyhlazení, takže je je lepší upgradovat grafický ovladač." - -#: src/slic3r/GUI/Preferences.cpp:101 -msgid "Use Retina resolution for the 3D scene" -msgstr "" - -#: src/slic3r/GUI/Preferences.cpp:103 -msgid "" -"If enabled, the 3D scene will be rendered in Retina resolution. If you are " -"experiencing 3D performance problems, disabling this option may help." -msgstr "" - -#: src/slic3r/GUI/Preferences.cpp:126 -msgid "You need to restart Slic3r to make the changes effective." -msgstr "Chcete-li provést změny, musíte restartovat aplikaci Slic3r." - -#: src/slic3r/GUI/Preset.cpp:207 -msgid "modified" -msgstr "" - -#: src/slic3r/GUI/Preset.cpp:918 src/slic3r/GUI/Preset.cpp:958 -#: src/slic3r/GUI/Preset.cpp:1011 src/slic3r/GUI/Preset.cpp:1043 -#: src/slic3r/GUI/PresetBundle.cpp:1484 src/slic3r/GUI/PresetBundle.cpp:1537 -msgid "System presets" -msgstr "Systémové přednastavení" - -#: src/slic3r/GUI/Preset.cpp:962 src/slic3r/GUI/Preset.cpp:1047 -#: src/slic3r/GUI/PresetBundle.cpp:1542 -msgid "User presets" -msgstr "Uživatelská přednastavení" - -#: src/slic3r/GUI/Preset.cpp:991 src/slic3r/GUI/Tab.cpp:247 -msgid "Add a new printer" -msgstr "" - -#: src/slic3r/GUI/Preset.cpp:1251 -msgid "filament" -msgstr "" - -#: src/slic3r/GUI/PresetHints.cpp:28 -#, c-format -msgid "" -"If estimated layer time is below ~%ds, fan will run at %d%% and print speed " -"will be reduced so that no less than %ds are spent on that layer (however, " -"speed will never be reduced below %dmm/s)." -msgstr "" -"Pokud je odhadovaný čas vrstvy nižší než ~% ds, bude ventilátor pracovat na " -"%d%% a rychlost tisku bude snížena tak, aby na tuto vrstvu nebylo použito " -"méně než %ds (rychlost však nikdy nebude snížena pod %dmm/s)." - -#: src/slic3r/GUI/PresetHints.cpp:32 -#, c-format -msgid "" -"\n" -"If estimated layer time is greater, but still below ~%ds, fan will run at a " -"proportionally decreasing speed between %d%% and %d%%." -msgstr "" -"\n" -"Pokud je odhadovaný čas vrstvy delší, ale stále pod ~% ds, bude ventilátor " -"pracovat s plynule klesající rychlostí mezi %d%% a %d%%." - -#: src/slic3r/GUI/PresetHints.cpp:36 -msgid "" -"\n" -"During the other layers, fan " -msgstr "" -"\n" -"V průběhu ostaních vrstev, ventilátor " - -#: src/slic3r/GUI/PresetHints.cpp:38 -msgid "Fan " -msgstr "Ventilátor " - -#: src/slic3r/GUI/PresetHints.cpp:43 -#, c-format -msgid "will always run at %d%% " -msgstr "bude vždy běžet na %d%% " - -#: src/slic3r/GUI/PresetHints.cpp:46 -#, c-format -msgid "except for the first %d layers" -msgstr "s výjimkou prvních %d vrstev" - -#: src/slic3r/GUI/PresetHints.cpp:50 -msgid "except for the first layer" -msgstr "vyjma první vstvy" - -#: src/slic3r/GUI/PresetHints.cpp:52 -msgid "will be turned off." -msgstr "bude vypnut." - -#: src/slic3r/GUI/PresetHints.cpp:153 -msgid "external perimeters" -msgstr "vnější perimetry" - -#: src/slic3r/GUI/PresetHints.cpp:162 -msgid "perimeters" -msgstr "perimetry" - -#: src/slic3r/GUI/PresetHints.cpp:171 -msgid "infill" -msgstr "výplň" +#: src/libslic3r/PrintConfig.cpp:2944 +msgid "Slice the model and export SLA printing layers as PNG." +msgstr "Naslicuje model a exportuje SLA tiskové vrstvy jako PNG soubory." + +#: src/libslic3r/PrintConfig.cpp:2965 +msgid "Slice the model and export toolpaths as G-code." +msgstr "Naslicujte model a exportujte cesty jako G-code." + +#: src/libslic3r/PrintConfig.cpp:2971 +msgid "Slice the model as FFF or SLA based on the printer_technology configuration value." +msgstr "Slicovat model jako FFF nebo SLA tisk na základě konfigurační hodnoty printer_technology." + +#: lib/Slic3r/GUI/MainFrame.pm:251 +msgid "Slice to SV&G…\tCtrl+G" +msgstr "Slicovat do SV&G…\tCtrl+G" + +#: src/slic3r/GUI/Plater.cpp:193 +msgid "Sliced Info" +msgstr "Informace o slicování" + +#: src/slic3r/GUI/MainFrame.cpp:704 src/slic3r/GUI/Plater.cpp:2412 +#: src/slic3r/GUI/Plater.cpp:3615 src/slic3r/GUI/Tab.cpp:1159 +#: src/slic3r/GUI/Tab.cpp:3436 +msgid "Slicing" +msgstr "Slicování" + +#: lib/Slic3r/GUI/Plater.pm:1391 +msgid "Slicing cancelled" +msgstr "Slicování zrušeno" + +#: src/libslic3r/SLAPrint.cpp:1459 +msgid "Slicing done" +msgstr "Slicování dokončeno" + +#: src/slic3r/GUI/MainFrame.cpp:729 +msgid "Slicing Done!" +msgstr "Slicování dokončeno!" + +#. TRN To be shown at the status bar on SLA slicing error. +#: src/libslic3r/SLAPrint.cpp:709 +msgid "Slicing had to be stopped due to an internal error." +msgstr "Slicování muselo být zastaveno kvůli vnitřní chybě." + +#: src/libslic3r/SLAPrint.cpp:55 +msgid "Slicing model" +msgstr "Slicovaný model" + +#: src/libslic3r/SLAPrint.cpp:59 +msgid "Slicing supports" +msgstr "Slicování podpěr" + +#: lib/Slic3r/GUI/MainFrame.pm:483 +msgid "Slicing…" +msgstr "Slicování…" + +#: src/libslic3r/PrintConfig.cpp:2249 +msgid "Slow" +msgstr "Pomalý" + +#: src/libslic3r/PrintConfig.cpp:1635 +msgid "Slow down if layer print time is below" +msgstr "Zpomalit tisk pokud je doba tisku kratší než" + +#: src/libslic3r/PrintConfig.cpp:2250 +msgid "Slow tilt" +msgstr "Pomalý náklon" + +#: src/libslic3r/PrintConfig.cpp:1646 +msgid "Small perimeters" +msgstr "Malé perimetry" + +#: src/slic3r/GUI/GUI_App.cpp:697 +msgid "Snapshot name" +msgstr "Název zálohy" #: src/slic3r/GUI/PresetHints.cpp:181 msgid "solid infill" msgstr "plná výplň" -#: src/slic3r/GUI/PresetHints.cpp:189 -msgid "top solid infill" -msgstr "vrchní plná výplň" +#: src/slic3r/GUI/GUI_Preview.cpp:231 src/libslic3r/PrintConfig.cpp:1687 +#: src/libslic3r/PrintConfig.cpp:1697 src/libslic3r/GCode/PreviewData.cpp:167 +msgid "Solid infill" +msgstr "Plná výplň" -#: src/slic3r/GUI/PresetHints.cpp:200 -msgid "support" -msgstr "podpory" - -#: src/slic3r/GUI/PresetHints.cpp:210 -msgid "support interface" -msgstr "kontaktní vrstva podpor" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "First layer volumetric" -msgstr "Volumetrická hodnota první vrstvy" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "Bridging volumetric" -msgstr "Volumetrická hodnota mostů" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "Volumetric" -msgstr "Volumetrický" - -#: src/slic3r/GUI/PresetHints.cpp:217 -msgid " flow rate is maximized " -msgstr " průtok je maximalizován " - -#: src/slic3r/GUI/PresetHints.cpp:220 -msgid "by the print profile maximum" -msgstr "maximem pro profil tisku" - -#: src/slic3r/GUI/PresetHints.cpp:221 -msgid "when printing " -msgstr "při tisku " - -#: src/slic3r/GUI/PresetHints.cpp:222 -msgid " with a volumetric rate " -msgstr " s objemovou rychlostí " - -#: src/slic3r/GUI/PresetHints.cpp:226 -#, c-format -msgid "%3.2f mm³/s" -msgstr "%3.2f mm³/s" - -#: src/slic3r/GUI/PresetHints.cpp:228 -#, c-format -msgid " at filament speed %3.2f mm/s." -msgstr " při rychlosti filamentu %3.2f mm/s." - -#: src/slic3r/GUI/PresetHints.cpp:247 -msgid "" -"Recommended object thin wall thickness: Not available due to invalid layer " -"height." -msgstr "" -"Doporučená tloušťka stěny objektu: Není k dispozici kvůli neplatné výšce " -"vrstvy." - -#: src/slic3r/GUI/PresetHints.cpp:264 -#, c-format -msgid "Recommended object thin wall thickness for layer height %.2f and " -msgstr "Doporučená tloušťka stěny objektu pro výšku vrstvy %.2f and " - -#: src/slic3r/GUI/PresetHints.cpp:271 -#, c-format -msgid "%d lines: %.2lf mm" -msgstr "%d linie: %.2lf mm" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:32 -msgid "Send G-Code to printer host" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:32 -msgid "Upload to Printer Host with the following filename:" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:34 -msgid "Start printing after upload" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:41 -msgid "Use forward slashes ( / ) as a directory separator if needed." -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:157 -msgid "Cancel selected" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:159 -msgid "Show error message" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:198 -#: src/slic3r/GUI/PrintHostDialogs.cpp:217 -msgid "Enqueued" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:218 -msgid "Uploading" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:222 -msgid "Completed" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:260 -msgid "Error uploading to print host:" -msgstr "" - -#: src/slic3r/GUI/RammingChart.cpp:23 -msgid "NO RAMMING AT ALL" -msgstr "ŽÁDNÁ RAPIDNÍ EXTRUZE" - -#: src/slic3r/GUI/RammingChart.cpp:76 -msgid "Time" -msgstr "Čas" - -#: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/RammingChart.cpp:81 -#: src/slic3r/GUI/WipeTowerDialog.cpp:82 src/libslic3r/PrintConfig.cpp:611 -#: src/libslic3r/PrintConfig.cpp:655 src/libslic3r/PrintConfig.cpp:670 -#: src/libslic3r/PrintConfig.cpp:2241 src/libslic3r/PrintConfig.cpp:2250 -#: src/libslic3r/PrintConfig.cpp:2308 src/libslic3r/PrintConfig.cpp:2315 -msgid "s" -msgstr "s" - -#: src/slic3r/GUI/RammingChart.cpp:81 -msgid "Volumetric speed" -msgstr "Objemová rychlost" - -#: src/slic3r/GUI/SysInfoDialog.cpp:44 -msgid "Slic3r Prusa Edition - System Information" -msgstr "Slic3r Prusa Edition - Informace o systému" - -#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:228 -msgid "Compatible printers" -msgstr "Kompatibilní tiskárny" - -#: src/slic3r/GUI/Tab.cpp:51 -msgid "Select the printers this profile is compatible with." -msgstr "Vyberte tiskárny, s nimiž je tento profil kompatibilní." - -#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:243 -msgid "Compatible print profiles" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:57 -msgid "Select the print profiles this profile is compatible with." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:132 -msgid "Save current " -msgstr "Uložit stávající " - -#: src/slic3r/GUI/Tab.cpp:133 -msgid "Delete this preset" -msgstr "Smazat přednastavení" - -#: src/slic3r/GUI/Tab.cpp:145 -msgid "" -"Hover the cursor over buttons to find more information \n" -"or click this button." -msgstr "" -"Pro více informací přejeďte kurzorem nad tlačítky nebo na tlačítko klikněte." - -#: src/slic3r/GUI/Tab.cpp:858 -msgid "It's a default preset." -msgstr "Je to výchozí přednastavení." - -#: src/slic3r/GUI/Tab.cpp:859 -msgid "It's a system preset." -msgstr "Je to systémové přednastavení." - -#: src/slic3r/GUI/Tab.cpp:860 -msgid "Current preset is inherited from " -msgstr "Aktuální nastavení je zděděno od " - -#: src/slic3r/GUI/Tab.cpp:865 -msgid "It can't be deleted or modified. " -msgstr "Nelze smazat nebo upravit. " - -#: src/slic3r/GUI/Tab.cpp:866 -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. " - -#: src/slic3r/GUI/Tab.cpp:867 -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í." - -#: src/slic3r/GUI/Tab.cpp:871 -msgid "Additional information:" -msgstr "Doplňující informace:" - -#: src/slic3r/GUI/Tab.cpp:877 -msgid "printer model" -msgstr "model tiskárny" - -#: src/slic3r/GUI/Tab.cpp:885 -msgid "default print profile" -msgstr "výchozí tiskový profil" - -#: src/slic3r/GUI/Tab.cpp:888 -msgid "default filament profile" -msgstr "výchozí profil filamentu" - -#: src/slic3r/GUI/Tab.cpp:902 -msgid "default SLA material profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:906 -msgid "default SLA print profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:3303 -msgid "Layers and perimeters" -msgstr "Vrstvy a perimetry" - -#: src/slic3r/GUI/Tab.cpp:949 src/libslic3r/PrintConfig.cpp:55 -msgid "Layer height" -msgstr "Výška vrstvy" - -#: src/slic3r/GUI/Tab.cpp:953 -msgid "Vertical shells" -msgstr "Svislé stěny" - -#: src/slic3r/GUI/Tab.cpp:964 -msgid "Horizontal shells" -msgstr "Vodorovné stěny" - -#: src/slic3r/GUI/Tab.cpp:965 src/libslic3r/PrintConfig.cpp:1709 -msgid "Solid layers" -msgstr "Plných vrstev" - -#: src/slic3r/GUI/Tab.cpp:970 -msgid "Quality (slower slicing)" -msgstr "Kvalita (pomalejší slicing)" - -#: src/slic3r/GUI/Tab.cpp:988 -msgid "Reducing printing time" -msgstr "Zkracování tiskového času" - -#: src/slic3r/GUI/Tab.cpp:1000 -msgid "Skirt and brim" -msgstr "Obrys a límec" - -#: src/slic3r/GUI/Tab.cpp:1017 -msgid "Raft" -msgstr "Raft" - -#: src/slic3r/GUI/Tab.cpp:1021 -msgid "Options for support material and raft" -msgstr "Volby pro podpory a raft" - -#: src/slic3r/GUI/Tab.cpp:1036 -msgid "Speed for print moves" -msgstr "Speed for print moves" - -#: src/slic3r/GUI/Tab.cpp:1048 -msgid "Speed for non-print moves" -msgstr "Netiskové rychlosti" - -#: src/slic3r/GUI/Tab.cpp:1051 -msgid "Modifiers" -msgstr "Modifikátory" - -#: src/slic3r/GUI/Tab.cpp:1054 -msgid "Acceleration control (advanced)" -msgstr "Kontrola akcelerací (pokročilé)" - -#: src/slic3r/GUI/Tab.cpp:1061 -msgid "Autospeed (advanced)" -msgstr "Automatická rychlost (pokročilé)" - -#: src/slic3r/GUI/Tab.cpp:1069 -msgid "Multiple Extruders" -msgstr "Multiple Extruders" - -#: src/slic3r/GUI/Tab.cpp:1077 -msgid "Ooze prevention" -msgstr "Prevence odkapávání" - -#: src/slic3r/GUI/Tab.cpp:1094 -msgid "Extrusion width" -msgstr "Šířka extruze" - -#: src/slic3r/GUI/Tab.cpp:1104 -msgid "Overlap" -msgstr "Překrytí" - -#: src/slic3r/GUI/Tab.cpp:1107 -msgid "Flow" -msgstr "Průtok" - -#: src/slic3r/GUI/Tab.cpp:1116 -msgid "Other" -msgstr "Ostatní" - -#: src/slic3r/GUI/Tab.cpp:1119 src/slic3r/GUI/Tab.cpp:3351 -msgid "Output options" -msgstr "Možnosti výstupu" - -#: src/slic3r/GUI/Tab.cpp:1120 -msgid "Sequential printing" -msgstr "Sekvenční tisk" - -#: src/slic3r/GUI/Tab.cpp:1122 -msgid "Extruder clearance (mm)" -msgstr "Kolizní oblast extruderu (mm)" - -#: src/slic3r/GUI/Tab.cpp:1131 src/slic3r/GUI/Tab.cpp:3352 -msgid "Output file" -msgstr "Výstupní soubor" - -#: src/slic3r/GUI/Tab.cpp:1138 src/libslic3r/PrintConfig.cpp:1382 -msgid "Post-processing scripts" -msgstr "Postprodukční skripty" - -#: src/slic3r/GUI/Tab.cpp:1144 src/slic3r/GUI/Tab.cpp:1145 -#: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1528 -#: src/slic3r/GUI/Tab.cpp:1935 src/slic3r/GUI/Tab.cpp:1936 -#: src/slic3r/GUI/Tab.cpp:2027 src/slic3r/GUI/Tab.cpp:2028 -#: src/slic3r/GUI/Tab.cpp:3240 src/slic3r/GUI/Tab.cpp:3241 -msgid "Notes" -msgstr "Poznámky" - -#: src/slic3r/GUI/Tab.cpp:1151 src/slic3r/GUI/Tab.cpp:1535 -#: src/slic3r/GUI/Tab.cpp:1942 src/slic3r/GUI/Tab.cpp:2034 -#: src/slic3r/GUI/Tab.cpp:3248 src/slic3r/GUI/Tab.cpp:3357 -msgid "Dependencies" -msgstr "Závislosti" - -#: src/slic3r/GUI/Tab.cpp:1152 src/slic3r/GUI/Tab.cpp:1536 -#: src/slic3r/GUI/Tab.cpp:1943 src/slic3r/GUI/Tab.cpp:2035 -#: src/slic3r/GUI/Tab.cpp:3249 src/slic3r/GUI/Tab.cpp:3358 -msgid "Profile dependencies" -msgstr "Profilové závislosti" - -#: src/slic3r/GUI/Tab.cpp:1198 -#, no-c-format -msgid "" -"The Spiral Vase mode requires:\n" -"- one perimeter\n" -"- no top solid layers\n" -"- 0% fill density\n" -"- no support material\n" -"- no ensure_vertical_shell_thickness\n" -"\n" -"Shall I adjust those settings in order to enable Spiral Vase?" -msgstr "" -"Mód spirálové vázy vyžaduje:\n" -"- jeden perimeter\n" -"- žádné plné vrchní vrstvy\n" -"- 0% hustota výplně\n" -"- žádné podpěry\n" -"- nezjišťování vertikální tloušťky pláště\n" -"\n" -"Mám tyto nastavení upravit tak, aby bylo možné mód spirálové vázy zapnout?" - -#: src/slic3r/GUI/Tab.cpp:1205 -msgid "Spiral Vase" -msgstr "Spirálová váza" - -#: src/slic3r/GUI/Tab.cpp:1228 -msgid "" -"The Wipe Tower currently supports the non-soluble supports only\n" -"if they are printed with the current extruder without triggering a tool " -"change.\n" -"(both support_material_extruder and support_material_interface_extruder need " -"to be set to 0).\n" -"\n" -"Shall I adjust those settings in order to enable the Wipe Tower?" -msgstr "" -"Čistící věž v současné době podporuje pouze nerozpustné podpory\n" -"pokud jsou vytištěny s aktuálním extrudérem bez spuštění výměny nástroje.\n" -"(jak extruder pro tisk popor tak extruder pro tisk kontaktních podpor je " -"třeba nastavit na 0).\n" -"\n" -"Mám tyto nastavení upravit tak, aby bylo možné zapnout Čistící věž?" - -#: src/slic3r/GUI/Tab.cpp:1232 src/slic3r/GUI/Tab.cpp:1249 -msgid "Wipe Tower" -msgstr "Čistící věž" - -#: src/slic3r/GUI/Tab.cpp:1246 -msgid "" -"For the Wipe Tower to work with the soluble supports, the support layers\n" -"need to be synchronized with the object layers.\n" -"\n" -"Shall I synchronize support layers in order to enable the Wipe Tower?" -msgstr "" -"U čistící věže pokud pracujte s rozpustnými materiály, je třeba\n" -"synchronizovat vrstvy podpor s vrstvami objektů.\n" -"\n" -"Mám synchronizovat vrstvy podpor, aby bylo možné zapnout Čistící věž?" - -#: src/slic3r/GUI/Tab.cpp:1264 -msgid "" -"Supports work better, if the following feature is enabled:\n" -"- Detect bridging perimeters\n" -"\n" -"Shall I adjust those settings for supports?" -msgstr "" -"Podpory fungují lépe, pokud je povolena následující funkce:\n" -"- Zjistit přemosťovací perimetry\n" -"\n" -"Mám tyto nastavení pro podpory upravit?" - -#: src/slic3r/GUI/Tab.cpp:1267 -msgid "Support Generator" -msgstr "Generátor Podpor" - -#: src/slic3r/GUI/Tab.cpp:1309 -msgid "The " -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1309 -#, no-c-format -msgid "" -" infill pattern is not supposed to work at 100% density.\n" -"\n" -"Shall I switch to rectilinear fill pattern?" -msgstr "" -" vzor výplně není určen pro práci se 100% hustotou.\n" -"\n" -"Mám přejít na vzor výplně rectilinear?" - -#: src/slic3r/GUI/Tab.cpp:1429 -msgid "Temperature " -msgstr "Teplota " - -#: src/slic3r/GUI/Tab.cpp:1435 -msgid "Bed" -msgstr "Tisková podložka" - -#: src/slic3r/GUI/Tab.cpp:1440 -msgid "Cooling" -msgstr "Chlazení" - -#: src/slic3r/GUI/Tab.cpp:1441 src/libslic3r/PrintConfig.cpp:1285 -#: src/libslic3r/PrintConfig.cpp:2097 -msgid "Enable" -msgstr "Zapnout" - -#: src/slic3r/GUI/Tab.cpp:1452 -msgid "Fan settings" -msgstr "Nastavení ventilátoru" - -#: src/slic3r/GUI/Tab.cpp:1453 -msgid "Fan speed" -msgstr "Rychlost ventilátoru" - -#: src/slic3r/GUI/Tab.cpp:1461 -msgid "Cooling thresholds" -msgstr "Podmínky chlazení" - -#: src/slic3r/GUI/Tab.cpp:1467 -msgid "Filament properties" -msgstr "Vlastnosti filamentu" - -#: src/slic3r/GUI/Tab.cpp:1471 -msgid "Print speed override" -msgstr "Přepsání rychlosti tisku" - -#: src/slic3r/GUI/Tab.cpp:1481 -msgid "Toolchange parameters with single extruder MM printers" -msgstr "Parametry při výměně (Multi Material s jedním extruderem)" - -#: src/slic3r/GUI/Tab.cpp:1496 -msgid "Ramming settings" -msgstr "Nastavení rapidní extruze" - -#: src/slic3r/GUI/Tab.cpp:1514 src/slic3r/GUI/Tab.cpp:1898 -msgid "Custom G-code" -msgstr "Vlastní G-code" - -#: src/slic3r/GUI/Tab.cpp:1515 src/slic3r/GUI/Tab.cpp:1899 -#: src/libslic3r/PrintConfig.cpp:1735 src/libslic3r/PrintConfig.cpp:1750 -msgid "Start G-code" -msgstr "Začátek G-code" - -#: src/slic3r/GUI/Tab.cpp:1521 src/slic3r/GUI/Tab.cpp:1905 -#: src/libslic3r/PrintConfig.cpp:358 src/libslic3r/PrintConfig.cpp:368 -msgid "End G-code" -msgstr "Konec G-code" - -#: src/slic3r/GUI/Tab.cpp:1632 src/slic3r/GUI/Tab.cpp:1689 -msgid " Browse " -msgstr " Procházet " - -#: src/slic3r/GUI/Tab.cpp:1651 src/slic3r/GUI/Tab.cpp:1838 -msgid "Test" -msgstr "Test" - -#: src/slic3r/GUI/Tab.cpp:1662 -msgid "Could not get a valid Printer Host reference" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1668 src/slic3r/GUI/Tab.cpp:1851 -msgid "Success!" -msgstr "Úspěch!" - -#: src/slic3r/GUI/Tab.cpp:1683 -msgid "" -"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -"signed certificate." -msgstr "" -"Soubor HTTPS CA je volitelný. Je nutný pouze pokud použijte HTTPS certifikát " -"s vlastním podpisem." - -#: src/slic3r/GUI/Tab.cpp:1696 -msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -msgstr "Soubory s certifikátem (*.crt, *.pem)|*.crt;*.pem|Všechny soubory|*.*" - -#: src/slic3r/GUI/Tab.cpp:1697 -msgid "Open CA certificate file" -msgstr "Otevřít soubor s certifikátem CA" - -#: src/slic3r/GUI/Tab.cpp:1725 -msgid "" -"HTTPS CA File:\n" -"\tOn this system, Slic3r uses HTTPS certificates from the system Certificate " -"Store or Keychain.\n" -"\tTo use a custom CA file, please import your CA file into Certificate " -"Store / Keychain." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1763 src/slic3r/GUI/Tab.cpp:1964 -msgid "Size and coordinates" -msgstr "Rozměr a souřadnice" - -#: src/slic3r/GUI/Tab.cpp:1767 src/slic3r/GUI/Tab.cpp:1968 -#: src/slic3r/GUI/Tab.cpp:2911 -msgid " Set " -msgstr " Nastavit " - -#: src/slic3r/GUI/Tab.cpp:1790 -msgid "Capabilities" -msgstr "Možnosti" - -#: src/slic3r/GUI/Tab.cpp:1795 -msgid "Number of extruders of the printer." -msgstr "Počet extrudérů tiskárny." - -#: src/slic3r/GUI/Tab.cpp:1823 -msgid "USB/Serial connection" -msgstr "USB/Sériové připojení" - -#: src/slic3r/GUI/Tab.cpp:1824 src/libslic3r/PrintConfig.cpp:1590 -msgid "Serial port" -msgstr "Sériový port" - -#: src/slic3r/GUI/Tab.cpp:1829 -msgid "Rescan serial ports" -msgstr "Znovu prohledat sériové porty" - -#: src/slic3r/GUI/Tab.cpp:1851 -msgid "Connection to printer works correctly." -msgstr "Připojení k tiskárně pracuje správně." - -#: src/slic3r/GUI/Tab.cpp:1854 -msgid "Connection failed." -msgstr "Připojení selhalo." - -#: src/slic3r/GUI/Tab.cpp:1867 src/slic3r/GUI/Tab.cpp:2022 -msgid "Print Host upload" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1911 src/libslic3r/PrintConfig.cpp:128 -msgid "Before layer change G-code" -msgstr "G-code před změnou vrstvy" - -#: src/slic3r/GUI/Tab.cpp:1917 src/libslic3r/PrintConfig.cpp:1030 -msgid "After layer change G-code" -msgstr "G-code po změně vrstvy" - -#: src/slic3r/GUI/Tab.cpp:1923 src/libslic3r/PrintConfig.cpp:2005 -msgid "Tool change G-code" -msgstr "G-code pro výměnu nástroje" - -#: src/slic3r/GUI/Tab.cpp:1929 -msgid "Between objects G-code (for sequential printing)" -msgstr "G-code mezi objekty (pro sekvenční tisk)" - -#: src/slic3r/GUI/Tab.cpp:1990 -msgid "Display" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2001 -msgid "Tilt" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2002 -msgid "Tilt time" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2008 src/slic3r/GUI/Tab.cpp:3223 -msgid "Corrections" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2074 src/slic3r/GUI/Tab.cpp:2136 -#: src/libslic3r/PrintConfig.cpp:1076 src/libslic3r/PrintConfig.cpp:1086 -#: src/libslic3r/PrintConfig.cpp:1096 src/libslic3r/PrintConfig.cpp:1109 -#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1131 -#: src/libslic3r/PrintConfig.cpp:1142 -msgid "Machine limits" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2088 -msgid "Values in this column are for Full Power mode" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2089 -msgid "Full Power" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2094 -msgid "Values in this column are for Silent mode" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2095 -msgid "Silent" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2103 -msgid "Maximum feedrates" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2108 -msgid "Maximum accelerations" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2115 -msgid "Jerk limits" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2120 -msgid "Minimum feedrates" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2158 src/slic3r/GUI/Tab.cpp:2166 -msgid "Single extruder MM setup" -msgstr "Nastavení jednoho extruderu MM" - -#: src/slic3r/GUI/Tab.cpp:2167 -msgid "Single extruder multimaterial parameters" -msgstr "Parametry jednoho multi materiálového extruderu" - -#: src/slic3r/GUI/Tab.cpp:2181 src/libslic3r/GCode/PreviewData.cpp:475 -#, c-format -msgid "Extruder %d" -msgstr "Extruder %d" - -#: src/slic3r/GUI/Tab.cpp:2188 -msgid "Layer height limits" -msgstr "Výskové limity vrstvy" - -#: src/slic3r/GUI/Tab.cpp:2193 -msgid "Position (for multi-extruder printers)" -msgstr "Pozice (pro tiskárny s více extrudery)" - -#: src/slic3r/GUI/Tab.cpp:2196 -msgid "Retraction" -msgstr "Retrakce" - -#: src/slic3r/GUI/Tab.cpp:2199 -msgid "Only lift Z" -msgstr "Pouze zvednout Z" - -#: src/slic3r/GUI/Tab.cpp:2212 -msgid "" -"Retraction when tool is disabled (advanced settings for multi-extruder " -"setups)" -msgstr "" -"Retrakce pro neaktivní extruder (pokročilé nastavení pro tiskárny typu " -"MultiMaterial)" - -#: src/slic3r/GUI/Tab.cpp:2216 -msgid "Preview" -msgstr "Náhled" - -#: src/slic3r/GUI/Tab.cpp:2352 -msgid "" -"The Wipe option is not available when using the Firmware Retraction mode.\n" -"\n" -"Shall I disable it in order to enable Firmware Retraction?" -msgstr "" -"Možnost Očistit není k dispozici při použití režimu retrací z firmwaru.\n" -"\n" -"Mám ji deaktivovat, aby bylo možné povolit retrakce z firmwaru?" - -#: src/slic3r/GUI/Tab.cpp:2354 -msgid "Firmware Retraction" -msgstr "Firmware Retrakce" - -#: src/slic3r/GUI/Tab.cpp:2681 -#, c-format -msgid "Default preset (%s)" -msgstr "Výchozí přednastavení (%s)" - -#: src/slic3r/GUI/Tab.cpp:2682 -#, c-format -msgid "Preset (%s)" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2699 -msgid "has the following unsaved changes:" -msgstr "má neuložené následující změny:" - -#: src/slic3r/GUI/Tab.cpp:2702 -msgid "is not compatible with printer" -msgstr "není kompatibilní s tiskárnou" - -#: src/slic3r/GUI/Tab.cpp:2703 -msgid "is not compatible with print profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2705 -msgid "and it has the following unsaved changes:" -msgstr "a má neuložené následující změny:" - -#: src/slic3r/GUI/Tab.cpp:2708 -msgid "Discard changes and continue anyway?" -msgstr "Zahodit změny a přesto pokračovat?" - -#: src/slic3r/GUI/Tab.cpp:2709 -msgid "Unsaved Changes" -msgstr "Neuložené Změny" - -#: src/slic3r/GUI/Tab.cpp:2721 -msgid "Please check your object list before preset changing." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2801 -msgid "Copy" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2823 -msgid "The supplied name is empty. It can't be saved." -msgstr "Název je prázdný. Nelze uložit." - -#: src/slic3r/GUI/Tab.cpp:2828 -msgid "Cannot overwrite a system profile." -msgstr "Nelze přepsat systémový profil." - -#: src/slic3r/GUI/Tab.cpp:2832 -msgid "Cannot overwrite an external profile." -msgstr "Nelze přepsat externí profil." - -#: src/slic3r/GUI/Tab.cpp:2858 -msgid "remove" -msgstr "odebrat" - -#: src/slic3r/GUI/Tab.cpp:2858 -msgid "delete" -msgstr "smazat" - -#: src/slic3r/GUI/Tab.cpp:2859 -msgid "Are you sure you want to " -msgstr "Jste si jistý že chcete " - -#: src/slic3r/GUI/Tab.cpp:2859 -msgid " the selected preset?" -msgstr " zvolené přednastavení?" - -#: src/slic3r/GUI/Tab.cpp:2860 -msgid "Remove" -msgstr "Odebrat" - -#: src/slic3r/GUI/Tab.cpp:2861 -msgid " Preset" -msgstr " Přednastavení" - -#: src/slic3r/GUI/Tab.cpp:2989 -msgid "" -"LOCKED LOCK;indicates that the settings are the same as the system values " -"for the current option group" -msgstr "" -"ZAMKNUTÝ ZÁMEK; indikuje, že nastavení jsou stejná jako systémové hodnoty " -"pro aktuální skupinu nastavení" - -#: src/slic3r/GUI/Tab.cpp:2992 -msgid "" -"UNLOCKED LOCK;indicates that some settings were changed and are not equal to " -"the system values for the current option group.\n" -"Click the UNLOCKED LOCK icon to reset all settings for current option group " -"to the system values." -msgstr "" -"ODEMKNUTÝ ZÁMEK;indikuje, že některá nastavení byla změněna a nejsou shodná " -"se systémovými hodnotami pro danou skupinu nastavení.\n" -"Klikněte na ikonu ODEMKNUTÉHO ZÁMKU pro reset všech nastavení aktuální " -"skupiny nastavení na systémové hodnoty." - -#: src/slic3r/GUI/Tab.cpp:2998 -msgid "" -"WHITE BULLET;for the left button: \tindicates a non-system preset,\n" -"for the right button: \tindicates that the settings hasn't been modified." -msgstr "" -"BÍLÁ TEČKA;pro levé tlačítko: indikuje nesystémové přednastavení,\n" -"pro pravé tlačítko: indikuje, že nastavení nebylo změněno." - -#: src/slic3r/GUI/Tab.cpp:3002 -msgid "" -"BACK ARROW;indicates that the settings were changed and are not equal to the " -"last saved preset for the current option group.\n" -"Click the BACK ARROW icon to reset all settings for the current option group " -"to the last saved preset." -msgstr "" -"ŠIPKA ZPĚT; indikuje, že došlo ke změně nastavení, které není shodné s " -"naposledy uloženým přednastavením pro aktuální skupinu nastavení. Klikněte " -"na ikonu ŠIPKY ZPĚT pro reset všech nastavení pro aktuální skupinu nastavení " -"na naposledy uložené přednastavení." - -#: src/slic3r/GUI/Tab.cpp:3028 -msgid "" -"LOCKED LOCK icon indicates that the settings are the same as the system " -"values for the current option group" -msgstr "" -"Ikona ZAMKNUTÉHO ZÁMKU indikuje, že nastavení jsou stejná jako systémové " -"hodnoty pro aktuální skupinu nastavení" - -#: src/slic3r/GUI/Tab.cpp:3030 -msgid "" -"UNLOCKED LOCK icon indicates that some settings were changed and are not " -"equal to the system values for the current option group.\n" -"Click to reset all settings for current option group to the system values." -msgstr "" -"Ikona ODEMKNUTÉHO ZÁMKU indikuje, že některá nastavení byla změněna a nejsou " -"shodná se systémovými hodnotami pro danou skupinu nastavení. Klikněte pro " -"reset všech nastavení aktuální skupiny nastavení na systémové hodnoty." - -#: src/slic3r/GUI/Tab.cpp:3033 -msgid "WHITE BULLET icon indicates a non system preset." -msgstr "Ikona BÍLÉ TEČKY indikuje nesystémové přednastavení." - -#: src/slic3r/GUI/Tab.cpp:3036 -msgid "" -"WHITE BULLET icon indicates that the settings are the same as in the last " -"saved preset for the current option group." -msgstr "" -"Ikona BÍLÉ TEČKY indikuje, že nastavení jsou shodná s naposledy uloženým " -"přednastavením pro danou skupinu nastavení." - -#: src/slic3r/GUI/Tab.cpp:3038 -msgid "" -"BACK ARROW icon indicates that the settings were changed and are not equal " -"to the last saved preset for the current option group.\n" -"Click to reset all settings for the current option group to the last saved " -"preset." -msgstr "" -"Ikona ŠIPKY ZPĚT indikuje, že došlo ke změně nastavení, které není shodné s " -"naposledy uloženým přednastavením pro aktuální skupinu nastavení.\n" -"Klikněte pro reset všech nastavení pro aktuální skupinu nastavení na " -"naposledy uložené přednastavení." - -#: src/slic3r/GUI/Tab.cpp:3044 -msgid "" -"LOCKED LOCK icon indicates that the value is the same as the system value." -msgstr "" -"Ikona ZAMKNUTÉHO ZÁMKU indikuje, že hodnota je shodná se systémovou hodnotou." - -#: src/slic3r/GUI/Tab.cpp:3045 -msgid "" -"UNLOCKED LOCK icon indicates that the value was changed and is not equal to " -"the system value.\n" -"Click to reset current value to the system value." -msgstr "" -"Ikona ODEMKNUTÉHO ZÁMKU indikuje, že se hodnota změnila a není shodná se " -"systémovou hodnotou.\n" -"Klikněte pro reset současné hodnoty na systémovou hodnotu." - -#: src/slic3r/GUI/Tab.cpp:3051 -msgid "" -"WHITE BULLET icon indicates that the value is the same as in the last saved " -"preset." -msgstr "" -"Ikona BÍLÉ TEČKY indikuje, že je hodnota shodná s naposledy uloženým " -"přednastavením." - -#: src/slic3r/GUI/Tab.cpp:3052 -msgid "" -"BACK ARROW icon indicates that the value was changed and is not equal to the " -"last saved preset.\n" -"Click to reset current value to the last saved preset." -msgstr "" -"Ikona ŠIPKY ZPĚT indikuje, že se hodnota změnila a není shodná s naposledy " -"uloženým přednastavením.\n" -"Klikněte pro reset současné hodnoty na naposledy uložené přednastavení." - -# Used in this context: _("Save ") + title + _(" as:") -#: src/slic3r/GUI/Tab.cpp:3152 -msgid " as:" -msgstr " jako:" - -#: src/slic3r/GUI/Tab.cpp:3196 -msgid "the following postfix are not allowed:" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3200 -msgid "The supplied name is not available." -msgstr "Zadaný název není dostupný." - -#: src/slic3r/GUI/Tab.cpp:3213 -msgid "Material" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3215 src/slic3r/GUI/Tab.cpp:3305 -msgid "Layers" -msgstr "Vrstvy" - -#: src/slic3r/GUI/Tab.cpp:3219 -msgid "Exposure" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3313 -msgid "Support head" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3318 -msgid "Support pillar" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3328 -msgid "Connection of the support sticks and junctions" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3333 -msgid "Automatic generation" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3395 -msgid "Head penetration should not be greater than the head width." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3396 -msgid "Invalid Head penetration" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3408 -msgid "Pinhead diameter should be smaller than the pillar diameter." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3409 -msgid "Invalid pinhead diameter" -msgstr "" - -#: src/slic3r/GUI/Tab.hpp:307 src/slic3r/GUI/Tab.hpp:395 -msgid "Print Settings" -msgstr "Nastavení tisku" - -#: src/slic3r/GUI/Tab.hpp:325 -msgid "Filament Settings" -msgstr "Nastavení filamentu" - -#: src/slic3r/GUI/Tab.hpp:358 -msgid "Printer Settings" -msgstr "Nastavení tiskárny" - -#: src/slic3r/GUI/Tab.hpp:381 -msgid "Material Settings" -msgstr "" - -#: src/slic3r/GUI/Tab.hpp:407 -msgid "Save preset" -msgstr "Uložit přednastavení" - -#: src/slic3r/GUI/UpdateDialogs.cpp:29 -msgid "Update available" -msgstr "Je dostupná aktualizace" - -#: src/slic3r/GUI/UpdateDialogs.cpp:29 -msgid "New version of Slic3r PE is available" -msgstr "Je dostupná nová verze Slic3r PE" - -#: src/slic3r/GUI/UpdateDialogs.cpp:36 -msgid "To download, follow the link below." -msgstr "Pro stažení, klikněte na odkaz níže." - -#: src/slic3r/GUI/UpdateDialogs.cpp:44 -msgid "Current version:" -msgstr "Aktuální verze:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:46 -msgid "New version:" -msgstr "Nová verze:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:54 -msgid "Don't notify about new releases any more" -msgstr "Neupozorňovat na nové verze" - -#: src/slic3r/GUI/UpdateDialogs.cpp:72 src/slic3r/GUI/UpdateDialogs.cpp:164 -msgid "Configuration update" -msgstr "Aktualizace nastavení" - -#: src/slic3r/GUI/UpdateDialogs.cpp:72 -msgid "Configuration update is available" -msgstr "Je k dispozici aktualizace nastavení" - -#: src/slic3r/GUI/UpdateDialogs.cpp:75 -msgid "" -"Would you like to install it?\n" -"\n" -"Note that a full configuration snapshot will be created first. It can then " -"be restored at any time should there be a problem with the new version.\n" -"\n" -"Updated configuration bundles:" -msgstr "" -"Přejete si spustit instalaci?\n" -"\n" -"Nejprve bude provedena kompletní záloha nastavení. V případě problémů s " -"novou verzí ji bude možné kdykoliv obnovit.\n" -"\n" -"Aktualizované balíčky nastavení:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:111 -msgid "Slic3r incompatibility" -msgstr "Nekompatibilita Slic3ru" - -#: src/slic3r/GUI/UpdateDialogs.cpp:111 -msgid "Slic3r configuration is incompatible" -msgstr "Konfigurace Slic3ru není kompatibilní" - -#: src/slic3r/GUI/UpdateDialogs.cpp:114 -msgid "" -"This version of Slic3r PE is not compatible with currently installed " -"configuration bundles.\n" -"This probably happened as a result of running an older Slic3r PE after using " -"a newer one.\n" -"\n" -"You may either exit Slic3r and try again with a newer version, or you may re-" -"run the initial configuration. Doing so will create a backup snapshot of the " -"existing configuration before installing files compatible with this Slic3r.\n" -msgstr "" -"Tato verze Slic3r PE není kompatibilní se současně nainstalovanými balíčky " -"nastavení.\n" -"Tato situace nejspíše nastala spuštěním starší verze Slic3r PE po používání " -"novější verze.\n" -"\n" -"Můžete buď ukončit Slic3r a zkusit to znovu s novou verzí, nebo můžete znovu " -"spustit výchozí konfiguraci. Před instalací kompatibilního nastavení s touto " -"verzí Slic3ru dojde k vytvoření zálohy současné konfigurace.\n" - -#: src/slic3r/GUI/UpdateDialogs.cpp:123 -#, c-format -msgid "This Slic3r PE version: %s" -msgstr "Tato verze Slic3r PE: %s" - -#: src/slic3r/GUI/UpdateDialogs.cpp:128 -msgid "Incompatible bundles:" -msgstr "Nekompatibilní balíky:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:144 -msgid "Exit Slic3r" -msgstr "Ukončit Slic3r" - -#: src/slic3r/GUI/UpdateDialogs.cpp:147 -msgid "Re-configure" -msgstr "Přenastavit" - -#: src/slic3r/GUI/UpdateDialogs.cpp:168 -#, c-format -msgid "" -"Slic3r PE now uses an updated configuration structure.\n" -"\n" -"So called 'System presets' have been introduced, which hold the built-in " -"default settings for various printers. These System presets cannot be " -"modified, instead, users now may create their own presets inheriting " -"settings from one of the System presets.\n" -"An inheriting preset may either inherit a particular value from its parent " -"or override it with a customized value.\n" -"\n" -"Please proceed with the %s that follows to set up the new presets and to " -"choose whether to enable automatic preset updates." -msgstr "" -"Slic3r PE nyní používá aktualizovanou konfigurační strukturu.\n" -"\n" -"Byly uvedeny takzvaná \"Systémová přednastavení\", která obsahují výchozí " -"nastavení pro rozličné tiskárny. Tato systémová přednastavení nemohou být " -"upravena, místo toho si nyní uživatel může vytvořit svá vlastní " -"přednastavení tím, že zdědí nastavení z jednoho ze systémových " -"přednastavení.\n" -"Nově vytvořené přednastavení může buď zdědit určitou hodnotu od svého " -"předchůdce nebo ji přepsat upravenou hodnotou.\n" -"\n" -"Prosím postupujte dle %s, který následuje pro nastavení nových přednastavení " -"a vyberte si, zdali chcete jejich automatickou aktualizaci." - -#: src/slic3r/GUI/UpdateDialogs.cpp:184 -msgid "For more information please visit our wiki page:" -msgstr "Pro více informací prosím navštivte naší wiki stránku:" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:14 -msgid "Ramming customization" -msgstr "Přizpůsobení rapidní extruze" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:40 -msgid "" -"Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the " -"unloaded filament so it does not prevent insertion of the new filament and " -"can itself be reinserted later. This phase is important and different " -"materials can require different extrusion speeds to get the good shape. For " -"this reason, the extrusion rates during ramming are adjustable.\n" -"\n" -"This is an expert-level setting, incorrect adjustment will likely lead to " -"jams, extruder wheel grinding into filament etc." -msgstr "" -"Rapidní extruze označuje rychlé vytlačení filamentu těsně před jeho výměnou " -"za jiný v multi material tiskárně s jedním extruderem. Účelem je správně " -"vytvarovat konec vysouvaného filamentu tak, aby neblokoval zasunutí nového " -"filamentu a také mohl být sám později opětovně zasunut. Tento proces je " -"důležitý a rozdílné materiály mohou pro získání optimálního tvaru vyžadovat " -"různé rychlosti extruze. Z tohoto důvodu jsou objemové průtoky při rapidní " -"extruzi uživatelsky upravitelné.\n" -"\n" -"Toto nastavení je určeno pro pokročilé uživatele, nesprávné nastavení velmi " -"pravděpodobně povede k zaseknutí filamentu, vybroušení filamentu podávacím " -"kolečkem, atd." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:82 -msgid "Total ramming time" -msgstr "Celkový čas rapidní extruze" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:84 -msgid "Total rammed volume" -msgstr "Celkový objem rapidní extruze" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:88 -msgid "Ramming line width" -msgstr "Šířka linky při rapidní extruzi" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:90 -msgid "Ramming line spacing" -msgstr "Rozestup linek při rapidní extruzi" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:141 -msgid "Wipe tower - Purging volume adjustment" -msgstr "Čistící věž - Úprava objemu čištění" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:225 -msgid "" -"Here you can adjust required purging volume (mm³) for any given pair of " -"tools." -msgstr "" -"Zde můžete upravit požadovaný objem čištění (mm³) pro kteroukoliv dvojici " -"extruderů." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:226 -msgid "Extruder changed to" -msgstr "Extruder změněn na" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:234 -msgid "unloaded" -msgstr "vyjmuto" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:235 -msgid "loaded" -msgstr "zaváděn" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:240 -msgid "Tool #" -msgstr "Nástroj #" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:247 -msgid "" -"Total purging volume is calculated by summing two values below, depending on " -"which tools are loaded/unloaded." -msgstr "" -"Celkový objem čištění je spočítán jako součet dvou hodnot níže v závislosti " -"na tom, které extrudery jsou zavedeny/vyjmuty." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:248 -msgid "Volume to purge (mm³) when the filament is being" -msgstr "Objem k vyčištění (mm³) pokud je filament" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:262 -msgid "From" -msgstr "Předchozí extruder" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:327 -msgid "" -"Switching to simple settings will discard changes done in the advanced " -"mode!\n" -"\n" -"Do you want to proceed?" -msgstr "" -"Přepnutím do jednoduchého nastavení ztratíte změny provedené v pokročilém " -"režimu!\n" -"\n" -"Opravdu chcete pokračovat?" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:339 -msgid "Show simplified settings" -msgstr "Zobrazit jednoduché nastavení" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:339 -msgid "Show advanced settings" -msgstr "Zobrazit rozšířená nastavení" - -#: src/slic3r/GUI/wxExtensions.cpp:2398 -#, c-format -msgid "Switch to the %s mode" -msgstr "" - -#: src/slic3r/GUI/wxExtensions.cpp:2399 -#, c-format -msgid "Current mode is %s" -msgstr "" - -#: src/slic3r/Utils/Duet.cpp:51 -msgid "Connection to Duet works correctly." -msgstr "" - -#: src/slic3r/Utils/Duet.cpp:56 -msgid "Could not connect to Duet" -msgstr "" - -#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:154 -msgid "Unknown error occured" -msgstr "" - -#: src/slic3r/Utils/Duet.cpp:148 -msgid "Wrong password" -msgstr "" - -#: src/slic3r/Utils/Duet.cpp:151 -msgid "Could not get resources to create a new connection" -msgstr "" - -#: src/slic3r/Utils/OctoPrint.cpp:69 -#, c-format -msgid "Mismatched type of print host: %s" -msgstr "" - -#: src/slic3r/Utils/OctoPrint.cpp:84 -msgid "Connection to OctoPrint works correctly." -msgstr "Připojení k OctoPrint pracuje správně." - -#: src/slic3r/Utils/OctoPrint.cpp:90 -msgid "Could not connect to OctoPrint" -msgstr "Nelze se spojit s OctoPrintem" - -#: src/slic3r/Utils/OctoPrint.cpp:90 -msgid "Note: OctoPrint version at least 1.1.0 is required." -msgstr "Poznámka: Je vyžadován OctoPrint ve verzi alespoň 1.1.0." - -#: src/slic3r/Utils/OctoPrint.cpp:195 -msgid "Connection to Prusa SLA works correctly." -msgstr "" - -#: src/slic3r/Utils/OctoPrint.cpp:200 -msgid "Could not connect to Prusa SLA" -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:583 -#, c-format -msgid "requires min. %s and max. %s" -msgstr "vyžaduje min. %s a max. %s" - -#: src/slic3r/Utils/PresetUpdater.cpp:588 -#, c-format -msgid "requires min. %s" -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:590 -#, c-format -msgid "requires max. %s" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:219 -#: src/slic3r/Utils/FixModelByWin10.cpp:359 -msgid "Exporting source model" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:235 -msgid "Failed loading the input model." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:242 -msgid "Repairing model by the Netfabb service" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:248 -msgid "Mesh repair failed." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:251 -#: src/slic3r/Utils/FixModelByWin10.cpp:378 -msgid "Loading repaired model" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:263 -#: src/slic3r/Utils/FixModelByWin10.cpp:270 -#: src/slic3r/Utils/FixModelByWin10.cpp:302 -msgid "Saving mesh into the 3MF container failed." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:340 -msgid "Model fixing" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:341 -msgid "Exporting model..." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:368 -msgid "Export of a temporary 3mf file failed" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:383 -msgid "Import of the repaired 3mf file failed" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:385 -msgid "Repaired 3MF file does not contain any object" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:387 -msgid "Repaired 3MF file contains more than one object" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:389 -msgid "Repaired 3MF file does not contain any volume" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:391 -msgid "Repaired 3MF file contains more than one volume" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:400 -msgid "Model repair finished" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:406 -msgid "Model repair canceled" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:423 -msgid "Model repaired successfully" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:423 -#: src/slic3r/Utils/FixModelByWin10.cpp:426 -msgid "Model Repair by the Netfabb service" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:426 -msgid "Model repair failed: \n" -msgstr "" - -#: src/libslic3r/Zipper.cpp:35 -msgid "undefined error" -msgstr "" - -#: src/libslic3r/Zipper.cpp:37 -msgid "too many files" -msgstr "" - -#: src/libslic3r/Zipper.cpp:39 -msgid "file too large" -msgstr "" - -#: src/libslic3r/Zipper.cpp:41 -msgid "unsupported method" -msgstr "" - -#: src/libslic3r/Zipper.cpp:43 -msgid "unsupported encryption" -msgstr "" - -#: src/libslic3r/Zipper.cpp:45 -msgid "unsupported feature" -msgstr "" - -#: src/libslic3r/Zipper.cpp:47 -msgid "failed finding central directory" -msgstr "" - -#: src/libslic3r/Zipper.cpp:49 -msgid "not a ZIP archive" -msgstr "" - -#: src/libslic3r/Zipper.cpp:51 -msgid "invalid header or archive is corrupted" -msgstr "" - -#: src/libslic3r/Zipper.cpp:53 -msgid "unsupported multidisk archive" -msgstr "" - -#: src/libslic3r/Zipper.cpp:55 -msgid "decompression failed or archive is corrupted" -msgstr "" - -#: src/libslic3r/Zipper.cpp:57 -msgid "compression failed" -msgstr "" - -#: src/libslic3r/Zipper.cpp:59 -msgid "unexpected decompressed size" -msgstr "" - -#: src/libslic3r/Zipper.cpp:61 -msgid "CRC-32 check failed" -msgstr "" - -#: src/libslic3r/Zipper.cpp:63 -msgid "unsupported central directory size" -msgstr "" - -#: src/libslic3r/Zipper.cpp:65 -msgid "allocation failed" -msgstr "" - -#: src/libslic3r/Zipper.cpp:67 -msgid "file open failed" -msgstr "" - -#: src/libslic3r/Zipper.cpp:69 -msgid "file create failed" -msgstr "" - -#: src/libslic3r/Zipper.cpp:71 -msgid "file write failed" -msgstr "" - -#: src/libslic3r/Zipper.cpp:73 -msgid "file read failed" -msgstr "" - -#: src/libslic3r/Zipper.cpp:75 -msgid "file close failed" -msgstr "" - -#: src/libslic3r/Zipper.cpp:77 -msgid "file seek failed" -msgstr "" - -#: src/libslic3r/Zipper.cpp:79 -msgid "file stat failed" -msgstr "" - -#: src/libslic3r/Zipper.cpp:81 -msgid "invalid parameter" -msgstr "" - -#: src/libslic3r/Zipper.cpp:83 -msgid "invalid filename" -msgstr "" - -#: src/libslic3r/Zipper.cpp:85 -msgid "buffer too small" -msgstr "" - -#: src/libslic3r/Zipper.cpp:87 -msgid "internal error" -msgstr "" - -#: src/libslic3r/Zipper.cpp:89 -msgid "file not found" -msgstr "" - -#: src/libslic3r/Zipper.cpp:91 -msgid "archive is too large" -msgstr "" - -#: src/libslic3r/Zipper.cpp:93 -msgid "validation failed" -msgstr "" - -#: src/libslic3r/Zipper.cpp:95 -msgid "write calledback failed" -msgstr "" - -#: src/libslic3r/Zipper.cpp:105 -msgid "Error with zip archive" -msgstr "" - -#: src/libslic3r/SLA/SLASupportTree.cpp:2153 -msgid "Starting" -msgstr "" - -#: src/libslic3r/SLA/SLASupportTree.cpp:2154 -msgid "Filtering" -msgstr "" - -#: src/libslic3r/SLA/SLASupportTree.cpp:2155 -msgid "Generate pinheads" -msgstr "" - -#: src/libslic3r/SLA/SLASupportTree.cpp:2156 -msgid "Classification" -msgstr "" - -#: src/libslic3r/SLA/SLASupportTree.cpp:2157 -msgid "Routing to ground" -msgstr "" - -#: src/libslic3r/SLA/SLASupportTree.cpp:2158 -msgid "Routing supports to model surface" -msgstr "" - -#: src/libslic3r/SLA/SLASupportTree.cpp:2159 -msgid "Cascading pillars" -msgstr "" - -#: src/libslic3r/SLA/SLASupportTree.cpp:2160 -msgid "Processing small holes" -msgstr "" - -#: src/libslic3r/SLA/SLASupportTree.cpp:2161 -msgid "Done" -msgstr "" - -#: src/libslic3r/SLA/SLASupportTree.cpp:2162 -msgid "Abort" -msgstr "" - -#: src/libslic3r/Print.cpp:1136 -msgid "All objects are outside of the print volume." -msgstr "" - -#: src/libslic3r/Print.cpp:1165 -msgid "Some objects are too close; your extruder will collide with them." -msgstr "" - -#: src/libslic3r/Print.cpp:1180 -msgid "" -"Some objects are too tall and cannot be printed without extruder collisions." -msgstr "" - -#: src/libslic3r/Print.cpp:1190 -msgid "The Spiral Vase option can only be used when printing a single object." -msgstr "" - -#: src/libslic3r/Print.cpp:1192 -msgid "" -"The Spiral Vase option can only be used when printing single material " -"objects." -msgstr "" - -#: src/libslic3r/Print.cpp:1198 -msgid "" -"All extruders must have the same diameter for single extruder multimaterial " -"printer." -msgstr "" - -#: src/libslic3r/Print.cpp:1203 -msgid "" -"The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter " -"and Repetier G-code flavors." -msgstr "" - -#: src/libslic3r/Print.cpp:1205 -msgid "" -"The Wipe Tower is currently only supported with the relative extruder " -"addressing (use_relative_e_distances=1)." -msgstr "" - -#: src/libslic3r/Print.cpp:1226 -msgid "" -"The Wipe Tower is only supported for multiple objects if they have equal " -"layer heigths" -msgstr "" - -#: src/libslic3r/Print.cpp:1228 -msgid "" -"The Wipe Tower is only supported for multiple objects if they are printed " -"over an equal number of raft layers" -msgstr "" - -#: src/libslic3r/Print.cpp:1230 -msgid "" -"The Wipe Tower is only supported for multiple objects if they are printed " -"with the same support_material_contact_distance" -msgstr "" - -#: src/libslic3r/Print.cpp:1232 -msgid "" -"The Wipe Tower is only supported for multiple objects if they are sliced " -"equally." -msgstr "" - -#: src/libslic3r/Print.cpp:1261 -msgid "" -"The Wipe tower is only supported if all objects have the same layer height " -"profile" -msgstr "" - -#: src/libslic3r/Print.cpp:1271 -msgid "The supplied settings will cause an empty print." -msgstr "" - -#: src/libslic3r/Print.cpp:1288 -msgid "" -"One or more object were assigned an extruder that the printer does not have." -msgstr "" - -#: src/libslic3r/Print.cpp:1297 -msgid "" -"Printing with multiple extruders of differing nozzle diameters. If support " -"is to be printed with the current extruder (support_material_extruder == 0 " -"or support_material_interface_extruder == 0), all nozzles have to be of the " -"same diameter." -msgstr "" - -#: src/libslic3r/Print.cpp:1305 -msgid "" -"For the Wipe Tower to work with the soluble supports, the support layers " -"need to be synchronized with the object layers." -msgstr "" - -#: src/libslic3r/Print.cpp:1309 -msgid "" -"The Wipe Tower currently supports the non-soluble supports only if they are " -"printed with the current extruder without triggering a tool change. (both " -"support_material_extruder and support_material_interface_extruder need to be " -"set to 0)." -msgstr "" - -#: src/libslic3r/Print.cpp:1316 -msgid "first_layer_height" -msgstr "" - -#: src/libslic3r/Print.cpp:1331 -msgid "First layer height can't be greater than nozzle diameter" -msgstr "" - -#: src/libslic3r/Print.cpp:1335 -msgid "Layer height can't be greater than nozzle diameter" -msgstr "" - -#: src/libslic3r/SLAPrint.cpp:55 -msgid "Slicing model" -msgstr "" - -#: src/libslic3r/SLAPrint.cpp:56 src/libslic3r/SLAPrint.cpp:801 -msgid "Generating support points" -msgstr "" - -#: src/libslic3r/SLAPrint.cpp:57 -msgid "Generating support tree" -msgstr "" - -#: src/libslic3r/SLAPrint.cpp:58 -msgid "Generating pad" -msgstr "" - -#: src/libslic3r/SLAPrint.cpp:59 -msgid "Slicing supports" -msgstr "" - -#: src/libslic3r/SLAPrint.cpp:71 -msgid "Merging slices and calculating statistics" -msgstr "" - -#: src/libslic3r/SLAPrint.cpp:72 -msgid "Rasterizing layers" -msgstr "" - -#: src/libslic3r/SLAPrint.cpp:605 -msgid "" -"Cannot proceed without support points! Add support points or disable support " -"generation." -msgstr "" - -#: src/libslic3r/SLAPrint.cpp:617 -msgid "Elevation is too low for object." -msgstr "" - -#: src/libslic3r/SLAPrint.cpp:699 -msgid "Slicing had to be stopped due to an internal error." -msgstr "" - -#: src/libslic3r/SLAPrint.cpp:849 src/libslic3r/SLAPrint.cpp:859 -#: src/libslic3r/SLAPrint.cpp:907 -msgid "Visualizing supports" -msgstr "" - -#: src/libslic3r/SLAPrint.cpp:1449 -msgid "Slicing done" -msgstr "" - -#: src/libslic3r/PrintBase.cpp:65 -msgid "Failed processing of the output_filename_format template." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:42 src/libslic3r/PrintConfig.cpp:43 -msgid "Printer technology" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:50 -msgid "Bed shape" -msgstr "Tvar tiskové podložky" - -#: src/libslic3r/PrintConfig.cpp:57 -msgid "" -"This setting controls the height (and thus the total number) of the slices/" -"layers. Thinner layers give better accuracy but take more time to print." -msgstr "" -"Toto nastavení řídí výšku (a tedy výsledný počet) řezů/vrstev. Tenčí vrstva " -"poskytuje lepší přesnost, ale tiskne se déle." - -#: src/libslic3r/PrintConfig.cpp:64 -msgid "Max print height" -msgstr "Maximální výška tisku" - -#: src/libslic3r/PrintConfig.cpp:65 -msgid "" -"Set this to the maximum height that can be reached by your extruder while " -"printing." -msgstr "" -"Nastavte tuto hodnotu na maximální výšku, která může být dosažena extruderem " -"během tisku." - -#: src/libslic3r/PrintConfig.cpp:71 -msgid "Slice gap closing radius" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:73 -msgid "" -"Cracks smaller than 2x gap closing radius are being filled during the " -"triangle mesh slicing. The gap closing operation may reduce the final print " -"resolution, therefore it is advisable to keep the value reasonably low." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:81 -msgid "Hostname, IP or URL" -msgstr "Název hosta, IP nebo URL" - -#: src/libslic3r/PrintConfig.cpp:82 -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:88 -msgid "API Key / Password" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:89 -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:111 -msgid "Avoid crossing perimeters" -msgstr "Vyhnout se přejíždění perimetrů" - -#: src/libslic3r/PrintConfig.cpp:112 -msgid "" -"Optimize travel moves in order to minimize the crossing of perimeters. This " -"is mostly useful with Bowden extruders which suffer from oozing. This " -"feature slows down both the print and the G-code generation." -msgstr "" -"Optimalizovat rychloposuny do pořadí aby se minimalizovalo přejíždění " -"perimetrů. Nejvíce užitečné u Bowdenových extruderů které trpí na vytékáné " -"filamentu. Toto nastavení zpomaluje tisk i generování G-code." - -#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:1976 -msgid "Other layers" -msgstr "Ostatní vrstvy" - -#: src/libslic3r/PrintConfig.cpp:120 -msgid "" -"Bed temperature for layers after the first one. Set this to zero to disable " -"bed temperature control commands in the output." -msgstr "" -"Teplota tiskové podložky pro další vrstvy po první vrstvě. Nastavením na " -"hodnotu nula vypnete ovládací příkazy teploty tiskové podložky ve výstupu." - -#: src/libslic3r/PrintConfig.cpp:122 -msgid "Bed temperature" -msgstr "Teplota tiskové podložky" - -#: src/libslic3r/PrintConfig.cpp:129 -msgid "" -"This custom code is inserted at every layer change, right before the Z move. " -"Note that you can use placeholder variables for all Slic3r settings as well " -"as [layer_num] and [layer_z]." -msgstr "" -"Tento vlastní kód je vložen pro každou změnu vrstvy, předtím než se pohne Z. " -"Můžete přidávat zástupné proměnné pro veškeré nastavení Slic3ru stejně tak " -"jako [layer_num] a [layer_z]." - -#: src/libslic3r/PrintConfig.cpp:139 -msgid "Between objects G-code" -msgstr "G-code mezi objekty" - -#: src/libslic3r/PrintConfig.cpp:140 -msgid "" -"This code is inserted between objects when using sequential printing. By " -"default extruder and bed temperature are reset using non-wait command; " -"however if M104, M109, M140 or M190 are detected in this custom code, Slic3r " -"will not add temperature commands. Note that you can use placeholder " -"variables for all Slic3r settings, so you can put a \"M109 " -"S[first_layer_temperature]\" command wherever you want." -msgstr "" -"Tento kód je vložen mezi objekty, pokud je použit sekvenční tisk. Ve " -"výchozím nastavení je resetován extruder a tisková podložka pomocí non-wait " -"(nečekacím) příkazem; nicméně pokud jsou příkazy M104, M109, 140 nebo M190 " -"detekovány v tomto vlastním kódu, Slic3r nebude přidávat teplotní příkazy. " -"Můžete přidávat zástupné proměnné pro veškeré nastavení Slic3ru, takže " -"můžete vložit příkaz “M109 S[first_layer_temperature]” kamkoliv chcete." - -#: src/libslic3r/PrintConfig.cpp:150 -msgid "Number of solid layers to generate on bottom surfaces." -msgstr "Počet plných vrstev." - -#: src/libslic3r/PrintConfig.cpp:151 -msgid "Bottom solid layers" -msgstr "Plné spodní vrstvy" - -#: src/libslic3r/PrintConfig.cpp:156 -msgid "Bridge" -msgstr "Most" - -#: src/libslic3r/PrintConfig.cpp:157 -msgid "" -"This is the acceleration your printer will use for bridges. Set zero to " -"disable acceleration control for bridges." -msgstr "" -"Nastavení akcelerace tiskárny při vytváření mostů. Nastavením na nulu " -"vypnete ovládání akcelerace pro mosty." - -#: src/libslic3r/PrintConfig.cpp:159 src/libslic3r/PrintConfig.cpp:302 -#: src/libslic3r/PrintConfig.cpp:814 src/libslic3r/PrintConfig.cpp:935 -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:1133 -#: src/libslic3r/PrintConfig.cpp:1144 src/libslic3r/PrintConfig.cpp:1333 -msgid "mm/s²" -msgstr "mm/s²" - -#: src/libslic3r/PrintConfig.cpp:165 -msgid "Bridging angle" -msgstr "Úhel vytváření mostů" - -#: src/libslic3r/PrintConfig.cpp:167 -msgid "" -"Bridging angle override. If left to zero, the bridging angle will be " -"calculated automatically. Otherwise the provided angle will be used for all " -"bridges. Use 180° for zero angle." -msgstr "" -"Přepsání úhlu vytváření mostů. Nastavením hodnoty na nulu se bude úhel " -"vytváření mostů vypočítávat automaticky. Při zadání jiného úhlu, bude pro " -"všechny mosty použitý zadaný úhel. Pro nulový úhel zadejte 180°." - -#: src/libslic3r/PrintConfig.cpp:170 src/libslic3r/PrintConfig.cpp:732 -#: src/libslic3r/PrintConfig.cpp:1569 src/libslic3r/PrintConfig.cpp:1579 -#: src/libslic3r/PrintConfig.cpp:1807 src/libslic3r/PrintConfig.cpp:1961 -#: src/libslic3r/PrintConfig.cpp:2459 -msgid "°" -msgstr "°" - -#: src/libslic3r/PrintConfig.cpp:176 -msgid "Bridges fan speed" -msgstr "Rychlost ventilátoru při vytváření mostů" - -#: src/libslic3r/PrintConfig.cpp:177 -msgid "This fan speed is enforced during all bridges and overhangs." -msgstr "" -"Nastavená rychlost ventilátoru je využita vždy při vytváření mostů a přesahů." - -#: src/libslic3r/PrintConfig.cpp:178 src/libslic3r/PrintConfig.cpp:744 -#: src/libslic3r/PrintConfig.cpp:1153 src/libslic3r/PrintConfig.cpp:1216 -#: src/libslic3r/PrintConfig.cpp:1461 src/libslic3r/PrintConfig.cpp:2258 -#: src/libslic3r/PrintConfig.cpp:2498 -msgid "%" -msgstr "%" - -#: src/libslic3r/PrintConfig.cpp:185 -msgid "Bridge flow ratio" -msgstr "Poměr průtoku při vytváření mostů" - -#: src/libslic3r/PrintConfig.cpp:187 -msgid "" -"This factor affects the amount of plastic for bridging. You can decrease it " -"slightly to pull the extrudates and prevent sagging, although default " -"settings are usually good and you should experiment with cooling (use a fan) " -"before tweaking this." -msgstr "" -"Tato hodnota určuje množství vytlačeného plastu při vytváření mostů. Mírným " -"snížením této hodnoty můžete předejít pronášení ikdyž, přednastavené hodnoty " -"jsou většinou dobré a je lepší experimentovat s chlazením (využitím " -"ventilátoru), než s touto hodnotou." - -#: src/libslic3r/PrintConfig.cpp:197 -msgid "Bridges" -msgstr "Mosty" - -#: src/libslic3r/PrintConfig.cpp:199 -msgid "Speed for printing bridges." -msgstr "Rychlost pro vytváření mostů." - -#: src/libslic3r/PrintConfig.cpp:200 src/libslic3r/PrintConfig.cpp:576 -#: src/libslic3r/PrintConfig.cpp:584 src/libslic3r/PrintConfig.cpp:593 -#: src/libslic3r/PrintConfig.cpp:601 src/libslic3r/PrintConfig.cpp:628 -#: src/libslic3r/PrintConfig.cpp:647 src/libslic3r/PrintConfig.cpp:873 -#: src/libslic3r/PrintConfig.cpp:1000 src/libslic3r/PrintConfig.cpp:1078 -#: src/libslic3r/PrintConfig.cpp:1098 src/libslic3r/PrintConfig.cpp:1111 -#: src/libslic3r/PrintConfig.cpp:1122 src/libslic3r/PrintConfig.cpp:1175 -#: src/libslic3r/PrintConfig.cpp:1234 src/libslic3r/PrintConfig.cpp:1362 -#: src/libslic3r/PrintConfig.cpp:1536 src/libslic3r/PrintConfig.cpp:1545 -#: src/libslic3r/PrintConfig.cpp:1940 src/libslic3r/PrintConfig.cpp:2051 -msgid "mm/s" -msgstr "mm/s" - -#: src/libslic3r/PrintConfig.cpp:207 -msgid "Brim width" -msgstr "Šířka límce" - -#: src/libslic3r/PrintConfig.cpp:208 -msgid "" -"Horizontal width of the brim that will be printed around each object on the " -"first layer." -msgstr "Šírka límce který bude vytištěn v první vrstvě okolo každého objektu." - -#: src/libslic3r/PrintConfig.cpp:215 -msgid "Clip multi-part objects" -msgstr "Připnutí objektů z více částí k sobě" - -#: src/libslic3r/PrintConfig.cpp:216 -msgid "" -"When printing multi-material objects, this settings will make slic3r to clip " -"the overlapping object parts one by the other (2nd part will be clipped by " -"the 1st, 3rd part will be clipped by the 1st and 2nd etc)." -msgstr "" -"Připnutí překrývajících se objektů jeden k druhému při Multimateriálovém " -"tisku. (Druhá část se připne k první, třetí část k první a druhé, atd)." - -#: src/libslic3r/PrintConfig.cpp:223 -msgid "Colorprint height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:224 -msgid "Heights at which a filament change is to occur. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:234 -msgid "Compatible printers condition" -msgstr "Stav kompatibilních tiskáren" - -#: src/libslic3r/PrintConfig.cpp:235 -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." -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." - -#: src/libslic3r/PrintConfig.cpp:249 -msgid "Compatible print profiles condition" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:250 -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." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:267 -msgid "Complete individual objects" -msgstr "Dokončení individuálních objektů" - -#: src/libslic3r/PrintConfig.cpp:268 -msgid "" -"When printing multiple objects or copies, this feature will complete each " -"object before moving onto next one (and starting it from its bottom layer). " -"This feature is useful to avoid the risk of ruined prints. Slic3r should " -"warn and prevent you from extruder collisions, but beware." -msgstr "" -"Při tisku více objektů nebo kopií tiskárna kompletně dokončí jeden objekt, " -"předtím než začne tisknout druhý (začíná od spodní vstvy). Tato vlastnost je " -"výhodná z důvodů snížení rizika zničených výtisků. Slic3r by měl varovat při " -"možné kolizi extruderu s objektem a zabránit mu, přesto doporučujeme " -"obezřetnost." - -#: src/libslic3r/PrintConfig.cpp:276 -msgid "Enable auto cooling" -msgstr "Zapnutí automatického chlazení" - -#: src/libslic3r/PrintConfig.cpp:277 -msgid "" -"This flag enables the automatic cooling logic that adjusts print speed and " -"fan speed according to layer printing time." -msgstr "" -"Zapne výpočet automatického chlazení který upravuje rychlost tisku a " -"ventilátoru v závislosti na délce tisku jedné vstvy." - -#: src/libslic3r/PrintConfig.cpp:282 -msgid "Cooling tube position" -msgstr "Pozice chladící trubičky" - -#: src/libslic3r/PrintConfig.cpp:283 -msgid "Distance of the center-point of the cooling tube from the extruder tip " -msgstr "Vzdálenost ze středu chladící trubičky ke špičce extruderu " - -#: src/libslic3r/PrintConfig.cpp:290 -msgid "Cooling tube length" -msgstr "Délka chladící trubičky" - -#: src/libslic3r/PrintConfig.cpp:291 -msgid "Length of the cooling tube to limit space for cooling moves inside it " -msgstr "" -"Délka kovové trubičky určené pro ochlazení a zformování filamentu po " -"vytažení z extruderu " - -#: src/libslic3r/PrintConfig.cpp:299 -msgid "" -"This is the acceleration your printer will be reset to after the role-" -"specific acceleration values are used (perimeter/infill). Set zero to " -"prevent resetting acceleration at all." -msgstr "" -"Toto je hodnota akcelerace na kterou se tiskárna vrátí po specifických " -"úpravách akcelerace například při tisku (perimetru/výplně). Nastavením na " -"nulu zabráníte návratu rychlostí zcela." - -#: src/libslic3r/PrintConfig.cpp:308 -msgid "Default filament profile" -msgstr "Výchozí profil filamentu" - -#: src/libslic3r/PrintConfig.cpp:309 -msgid "" -"Default filament profile associated with the current printer profile. On " -"selection of the current printer profile, this filament profile will be " -"activated." -msgstr "" -"Výchozí materiálový profil spojený se současným profilem tiskárny. Při " -"výběru současného profilu tiskárny se aktivuje tento materiálový profil." - -#: src/libslic3r/PrintConfig.cpp:315 -msgid "Default print profile" -msgstr "Výchozí tiskový profil" - -#: src/libslic3r/PrintConfig.cpp:316 src/libslic3r/PrintConfig.cpp:2337 -#: src/libslic3r/PrintConfig.cpp:2348 -msgid "" -"Default print profile associated with the current printer profile. On " -"selection of the current printer profile, this print profile will be " -"activated." -msgstr "" -"Výchozí tiskový profil spojený se současným profilem tiskárny. Při výběru " -"současného profilu tiskárny se aktivuje tento tiskový profil." - -#: src/libslic3r/PrintConfig.cpp:322 -msgid "Disable fan for the first" -msgstr "Vypnutí chlazení pro prvních" - -#: src/libslic3r/PrintConfig.cpp:323 -msgid "" -"You can set this to a positive value to disable fan at all during the first " -"layers, so that it does not make adhesion worse." -msgstr "" -"Nastavením počtu prvních vstev s vypnutým chlazením pro nezhoršování " -"přilnavosti." - -#: src/libslic3r/PrintConfig.cpp:325 src/libslic3r/PrintConfig.cpp:945 -#: src/libslic3r/PrintConfig.cpp:1434 src/libslic3r/PrintConfig.cpp:1619 -#: src/libslic3r/PrintConfig.cpp:1680 src/libslic3r/PrintConfig.cpp:1843 -#: src/libslic3r/PrintConfig.cpp:1888 -msgid "layers" -msgstr "vrstvu" - -#: src/libslic3r/PrintConfig.cpp:332 -msgid "Don't support bridges" -msgstr "Nevytvářet podpory pod mosty" - -#: src/libslic3r/PrintConfig.cpp:334 -msgid "" -"Experimental option for preventing support material from being generated " -"under bridged areas." -msgstr "" -"Experimentální nastavení pro zabránění tvorbě podpěr v oblastech po mosty." - -#: src/libslic3r/PrintConfig.cpp:340 -msgid "Distance between copies" -msgstr "Vzdálenost mezi kopiemi" - -#: src/libslic3r/PrintConfig.cpp:341 -msgid "Distance used for the auto-arrange feature of the plater." -msgstr "Vzdálenost, použitá pro funkci automatického rozmístění po podložce." - -#: src/libslic3r/PrintConfig.cpp:348 -msgid "Elephant foot compensation" -msgstr "Kompenzace rozplácnutí první vrstvy" - -#: src/libslic3r/PrintConfig.cpp:350 -msgid "" -"The first layer will be shrunk in the XY plane by the configured value to " -"compensate for the 1st layer squish aka an Elephant Foot effect." -msgstr "" -"První vrstva bude v rovině XY zmenšena nakonfigurovanou hodnotou, která " -"kompenzuje rozplácnutí první vrstvy." - -#: src/libslic3r/PrintConfig.cpp:359 -msgid "" -"This end procedure is inserted at the end of the output file. Note that you " -"can use placeholder variables for all Slic3r settings." -msgstr "" -"Tato ukončovací procedůra je vložena na konec výstupního souboru. Můžete " -"přidávat zástupné proměnné pro veškeré nastavení Slic3ru." - -#: src/libslic3r/PrintConfig.cpp:369 -msgid "" -"This end procedure is inserted at the end of the output file, before the " -"printer end gcode. Note that you can use placeholder variables for all " -"Slic3r settings. If you have multiple extruders, the gcode is processed in " -"extruder order." -msgstr "" -"Tato ukončovací procedůra je vložena na konec výstupního souboru, před " -"konečným G-code tiskárny. Můžete přidávat zástupné proměnné pro veškeré " -"nastavení Slic3ru. Pokud máte tiskárnu s více extrudery, G-code je zpracován " -"v pořadí extruderů." - -#: src/libslic3r/PrintConfig.cpp:379 -msgid "Ensure vertical shell thickness" -msgstr "Zajistit tloušťku svislých stěn" - -#: src/libslic3r/PrintConfig.cpp:381 -msgid "" -"Add solid infill near sloping surfaces to guarantee the vertical shell " -"thickness (top+bottom solid layers)." -msgstr "" -"Přidá plnou výplň u šikmých ploch pro garanci tloušťky svislých stěn " -"(vrchních a spodních plných vrstev)." - -#: src/libslic3r/PrintConfig.cpp:387 -msgid "Top fill pattern" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:389 -msgid "" -"Fill pattern for top infill. This only affects the top visible layer, and " -"not its adjacent solid shells." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:397 src/libslic3r/PrintConfig.cpp:795 -#: src/libslic3r/PrintConfig.cpp:1921 -msgid "Rectilinear" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:801 -msgid "Concentric" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:399 src/libslic3r/PrintConfig.cpp:805 -msgid "Hilbert Curve" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:400 src/libslic3r/PrintConfig.cpp:806 -msgid "Archimedean Chords" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:401 src/libslic3r/PrintConfig.cpp:807 -msgid "Octagram Spiral" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:408 -msgid "Bottom fill pattern" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:409 -msgid "" -"Fill pattern for bottom infill. This only affects the bottom external " -"visible layer, and not its adjacent solid shells." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:414 src/libslic3r/PrintConfig.cpp:424 -msgid "External perimeters" -msgstr "Vnější perimetry" - -#: src/libslic3r/PrintConfig.cpp:416 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for external " -"perimeters. If left zero, default extrusion width will be used if set, " -"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " -"(for example 200%), it will be computed over layer height." -msgstr "" -"Nastavením na kladnou hodnotu, definuje šířku manuální extruze pro vnější " -"obvod. Pokud je ponechána nula, použije se výchozí šířka extruze, pokud je " -"nastavena, jinak se použije průměr trysky 1,125 x. Pokud je hodnota " -"vyjádřena jako procento (například 200%), vypočítá se podle výšky vrstvy." - -#: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:834 -#: src/libslic3r/PrintConfig.cpp:966 src/libslic3r/PrintConfig.cpp:1353 -#: src/libslic3r/PrintConfig.cpp:1691 src/libslic3r/PrintConfig.cpp:1864 -#: src/libslic3r/PrintConfig.cpp:2022 -msgid "mm or % (leave 0 for default)" -msgstr "mm nebo % (ponechte 0 jako výchozí)" - -#: src/libslic3r/PrintConfig.cpp:426 -msgid "" -"This separate setting will affect the speed of external perimeters (the " -"visible ones). If expressed as percentage (for example: 80%) it will be " -"calculated on the perimeters speed setting above. Set to zero for auto." -msgstr "" -"Toto oddělené nastavení ovlivní rychlost tisku vnějších perimetrů (těch " -"viditelných). Pokud je hodnota vyjádřena procenty (například: 80%), bude " -"rychlost vypočítána z hodnoty rychlosti tisku perimetrů, nastavené výše. " -"Nastavte nulu pro automatický výpočet." - -#: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855 -#: src/libslic3r/PrintConfig.cpp:1650 src/libslic3r/PrintConfig.cpp:1701 -#: src/libslic3r/PrintConfig.cpp:1907 src/libslic3r/PrintConfig.cpp:2034 -msgid "mm/s or %" -msgstr "mm/s nebo %" - -#: src/libslic3r/PrintConfig.cpp:436 -msgid "External perimeters first" -msgstr "Nejprve tisknout vnější perimetry" - -#: src/libslic3r/PrintConfig.cpp:438 -msgid "" -"Print contour perimeters from the outermost one to the innermost one instead " -"of the default inverse order." -msgstr "" -"Tisk obrysových perimetrů od vnějších po vnitřní namísto opačného výchozího " -"pořadí." - -#: src/libslic3r/PrintConfig.cpp:444 -msgid "Extra perimeters if needed" -msgstr "Extra perimetry pokud jsou potřeba" - -#: src/libslic3r/PrintConfig.cpp:446 -#, no-c-format -msgid "" -"Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r " -"keeps adding perimeters, until more than 70% of the loop immediately above " -"is supported." -msgstr "" -"Přidání více perimetrů, pokud je potřeba, pro vyvarování se tvorbě mezer v " -"šikmých plochách. Slic3r pokračuje v přidávání perimetrů, dokud není " -"podepřeno více než 70% perimetrů v následující vrstvě." - -#: src/libslic3r/PrintConfig.cpp:456 -msgid "" -"The extruder to use (unless more specific extruder settings are specified). " -"This value overrides perimeter and infill extruders, but not the support " -"extruders." -msgstr "" -"Extruder, který chcete použít (pokud nejsou zvoleny specifičtější nastavení " -"extruderu). Tato hodnota přepíše nastavení perimetrového a výplňového " -"exrtuderu, ale ne nastavení extruderu pro podpory." - -#: src/libslic3r/PrintConfig.cpp:468 -msgid "" -"Set this to the vertical distance between your nozzle tip and (usually) the " -"X carriage rods. In other words, this is the height of the clearance " -"cylinder around your extruder, and it represents the maximum depth the " -"extruder can peek before colliding with other printed objects." -msgstr "" -"Zadejte vertikální vzdálenost mezi tryskou a (obvykle) tyčemi osy X. Jinými " -"slovy, je to výška kolizního prostoru okolo extruderu a představuje " -"maximální hloubku, které může extruder dosáhnout před kolizí s jinými, již " -"vytištěnými, objekty." - -#: src/libslic3r/PrintConfig.cpp:478 -msgid "Radius" -msgstr "Rádius" - -#: src/libslic3r/PrintConfig.cpp:479 -msgid "" -"Set this to the clearance radius around your extruder. If the extruder is " -"not centered, choose the largest value for safety. This setting is used to " -"check for collisions and to display the graphical preview in the plater." -msgstr "" -"Zadejte horizontální rádius kolizního prostoru okolo extruderu. Pokud tryska " -"není v centru tohoto rádiusu, zvolte nejdelší vzdálenost. Toto nastavení " -"slouží ke kontrole kolizí a zobrazení grafického náhledu na podložce." - -#: src/libslic3r/PrintConfig.cpp:489 -msgid "Extruder Color" -msgstr "Barva extruderu" - -#: src/libslic3r/PrintConfig.cpp:490 src/libslic3r/PrintConfig.cpp:550 -msgid "This is only used in the Slic3r interface as a visual help." -msgstr "Toto je ve Slic3ru jako názorná pomoc." - -#: src/libslic3r/PrintConfig.cpp:496 -msgid "Extruder offset" -msgstr "Odsazení extruderu" - -#: src/libslic3r/PrintConfig.cpp:497 -msgid "" -"If your firmware doesn't handle the extruder displacement you need the G-" -"code to take it into account. This option lets you specify the displacement " -"of each extruder with respect to the first one. It expects positive " -"coordinates (they will be subtracted from the XY coordinate)." -msgstr "" -"Pokud firmware nezpracovává umístění extruderu správně, potřebujete aby to " -"vzal G-code v úvahu. Toto nastavení umožňuje určit odsazení každého " -"extruderu vzhledem k prvnímu. Očekávají se pozitivní souřadnice (budou " -"odečteny od souřadnice XY)." - -#: src/libslic3r/PrintConfig.cpp:506 -msgid "Extrusion axis" -msgstr "Osa extruderu" - -#: src/libslic3r/PrintConfig.cpp:507 -msgid "" -"Use this option to set the axis letter associated to your printer's extruder " -"(usually E but some printers use A)." -msgstr "" -"Touto volbou nastavíte písmeno osy přidružené k extruderu tiskárny (obvykle " -"E, ale některé tiskárny používají A)." - -#: src/libslic3r/PrintConfig.cpp:512 -msgid "Extrusion multiplier" -msgstr "Násobič extruze" - -#: src/libslic3r/PrintConfig.cpp:513 -msgid "" -"This factor changes the amount of flow proportionally. You may need to tweak " -"this setting to get nice surface finish and correct single wall widths. " -"Usual values are between 0.9 and 1.1. If you think you need to change this " -"more, check filament diameter and your firmware E steps." -msgstr "" -"Tento faktor mění poměrné množství průtoku. Možná bude třeba toto nastavení " -"vyladit, pro dosažení hezkého povrchu a správné šířky jednotlivých stěn. " -"Obvyklé hodnoty jsou mezi 0,9 a 1,1. Pokud si myslíte, že hodnotu " -"potřebujete změnit více, zkontrolujte průměr filamentu a E kroky ve firmwaru." - -#: src/libslic3r/PrintConfig.cpp:521 -msgid "Default extrusion width" -msgstr "Výchozí šířka extruze" - -#: src/libslic3r/PrintConfig.cpp:523 -msgid "" -"Set this to a non-zero value to allow a manual extrusion width. If left to " -"zero, Slic3r derives extrusion widths from the nozzle diameter (see the " -"tooltips for perimeter extrusion width, infill extrusion width etc). If " -"expressed as percentage (for example: 230%), it will be computed over layer " -"height." -msgstr "" -"Nastavením kladné hodnoty povolíte manuální šířku extruze. Pokud je hodnota " -"ponechána na nule, Slic3r odvozuje šířku extruze z průměru trysky (viz " -"nápovědy pro šířku extruze perimetru, šířku extruze výplně apod.). Pokud je " -"hodnota vyjádřena procenty (například: 230%), vypočítá se z výšky vrstvy." - -#: src/libslic3r/PrintConfig.cpp:527 -msgid "mm or % (leave 0 for auto)" -msgstr "mm or % (pro automatické ponechte 0)" - -#: src/libslic3r/PrintConfig.cpp:532 -msgid "Keep fan always on" -msgstr "Ventilátor vždy zapnutý" - -#: src/libslic3r/PrintConfig.cpp:533 -msgid "" -"If this is enabled, fan will never be disabled and will be kept running at " -"least at its minimum speed. Useful for PLA, harmful for ABS." -msgstr "" -"Pokud je tato funkce zapnutá, ventilátor nebude nikdy vypnut a bude udržován " -"v chodu alespoň rychlostí která je nastavena jako minimální rychlost. " -"Užitečné pro PLA, škodlivé pro ABS." - -#: src/libslic3r/PrintConfig.cpp:538 -msgid "Enable fan if layer print time is below" -msgstr "Zapnout ventilátor pokud je doba tisku vrstvy kratší než" - -#: src/libslic3r/PrintConfig.cpp:539 -msgid "" -"If layer print time is estimated below this number of seconds, fan will be " -"enabled and its speed will be calculated by interpolating the minimum and " -"maximum speeds." -msgstr "" -"Pokud je doba tisku vrstvy odhadnuta jako kratší než tato nastavená hodnota " -"ve vteřinách, ventilátor bude aktivován a jeho rychlost bude vypočtena " -"interpolací minimální a maximální rychlosti." - -#: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:1637 -msgid "approximate seconds" -msgstr "vteřin přibližně" - -#: src/libslic3r/PrintConfig.cpp:549 -msgid "Color" -msgstr "Barva" - -#: src/libslic3r/PrintConfig.cpp:555 -msgid "Filament notes" -msgstr "Poznámky k filamentu" - -#: src/libslic3r/PrintConfig.cpp:556 -msgid "You can put your notes regarding the filament here." -msgstr "Zde můžete vložit poznámky týkající se filamentu." - -#: src/libslic3r/PrintConfig.cpp:564 src/libslic3r/PrintConfig.cpp:1181 -msgid "Max volumetric speed" -msgstr "Maximální objemová rychlost" - -#: src/libslic3r/PrintConfig.cpp:565 -msgid "" -"Maximum volumetric speed allowed for this filament. Limits the maximum " -"volumetric speed of a print to the minimum of print and filament volumetric " -"speed. Set to zero for no limit." -msgstr "" -"Maximální povolený objem průtoku pro tento filament. Omezuje maximální " -"rychlost průtoku pro tisk až na minimální rychlost průtoku pro tisk a " -"filament. Zadejte nulu pro nastavení bez omezení." - -#: src/libslic3r/PrintConfig.cpp:568 src/libslic3r/PrintConfig.cpp:1184 -msgid "mm³/s" -msgstr "mm³/s" - -#: src/libslic3r/PrintConfig.cpp:574 -msgid "Loading speed" -msgstr "Rychlost zavádění" - -#: src/libslic3r/PrintConfig.cpp:575 -msgid "Speed used for loading the filament on the wipe tower. " -msgstr "Rychlost použitá pro zavádění filamentu na čistící věž. " - -#: src/libslic3r/PrintConfig.cpp:582 -msgid "Loading speed at the start" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:583 -msgid "Speed used at the very beginning of loading phase. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:590 -msgid "Unloading speed" -msgstr "Rychlost vysunutí" - -#: src/libslic3r/PrintConfig.cpp:591 -msgid "" -"Speed used for unloading the filament on the wipe tower (does not affect " -"initial part of unloading just after ramming). " -msgstr "" -"Rychlost vysouvání filamentu při výměně na čistící věži (úvodní část " -"vysunutí okamžitě po rapidní extruzi není ovlivněna). " - -#: src/libslic3r/PrintConfig.cpp:599 -msgid "Unloading speed at the start" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:600 -msgid "" -"Speed used for unloading the tip of the filament immediately after ramming. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:607 -msgid "Delay after unloading" -msgstr "Zpoždění po vyjmutí" - -#: src/libslic3r/PrintConfig.cpp:608 -msgid "" -"Time to wait after the filament is unloaded. May help to get reliable " -"toolchanges with flexible materials that may need more time to shrink to " -"original dimensions. " -msgstr "" -"Doba čekání po vysunutí filamentu. Může pomoci ke spolehlivé výměně nástrojů " -"s flexibilními materiály, které potřebují více času ke smrštění na původní " -"rozměry. " - -#: src/libslic3r/PrintConfig.cpp:617 -msgid "Number of cooling moves" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:618 -msgid "" -"Filament is cooled by being moved back and forth in the cooling tubes. " -"Specify desired number of these moves " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:626 -msgid "Speed of the first cooling move" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:627 -msgid "Cooling moves are gradually accelerating beginning at this speed. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:634 -msgid "Minimal purge on wipe tower" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:635 -msgid "" -"After a tool change, the exact position of the newly loaded filament inside " -"the nozzle may not be known, and the filament pressure is likely not yet " -"stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:639 -msgid "mm³" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:645 -msgid "Speed of the last cooling move" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:646 -msgid "Cooling moves are gradually accelerating towards this speed. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:653 -msgid "Filament load time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:654 -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 "" - -#: src/libslic3r/PrintConfig.cpp:661 -msgid "Ramming parameters" -msgstr "Parametry rapidní extruze" - -#: src/libslic3r/PrintConfig.cpp:662 -msgid "" -"This string is edited by RammingDialog and contains ramming specific " -"parameters " -msgstr "" -"This string is edited by RammingDialog and contains ramming specific " -"parameters " - -#: src/libslic3r/PrintConfig.cpp:668 -msgid "Filament unload time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:669 -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 "" - -#: src/libslic3r/PrintConfig.cpp:677 -msgid "" -"Enter your filament diameter here. Good precision is required, so use a " -"caliper and do multiple measurements along the filament, then compute the " -"average." -msgstr "" -"Zde zadejte průměr filamentu. Je zapotřebí správné přesnosti, proto použijte " -"šupleru a proveďte několik měření podél filamentu, poté vypočtete průměr." - -#: src/libslic3r/PrintConfig.cpp:684 -msgid "Density" -msgstr "Hustota" - -#: src/libslic3r/PrintConfig.cpp:685 -msgid "" -"Enter your filament density here. This is only for statistical information. " -"A decent way is to weigh a known length of filament and compute the ratio of " -"the length to volume. Better is to calculate the volume directly through " -"displacement." -msgstr "" -"Zde zadejte hustotu filamentu. Toto je pouze pro statistické informace. " -"Přípustný způsob je zvážit známou délku filamentu a vypočítat poměr délky k " -"objemu. Je lepší vypočítat objem přímo přes posun." - -#: src/libslic3r/PrintConfig.cpp:688 -msgid "g/cm³" -msgstr "g/cm³" - -#: src/libslic3r/PrintConfig.cpp:693 -msgid "Filament type" -msgstr "Typ filamentu" - -#: src/libslic3r/PrintConfig.cpp:694 -msgid "The filament material type for use in custom G-codes." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:710 -msgid "Soluble material" -msgstr "Rozpustný materiál" - -#: src/libslic3r/PrintConfig.cpp:711 -msgid "Soluble material is most likely used for a soluble support." -msgstr "Rozpustný materiál je převážně používán pro tisk rozpustných podpor." - -#: src/libslic3r/PrintConfig.cpp:717 -msgid "" -"Enter your filament cost per kg here. This is only for statistical " -"information." -msgstr "" -"Zde zadejte cenu filamentu za kg. Slouží pouze pro statistické informace." - -#: src/libslic3r/PrintConfig.cpp:718 -msgid "money/kg" -msgstr "korun/kg" - -#: src/libslic3r/PrintConfig.cpp:727 -msgid "Fill angle" -msgstr "Úhel výplně" - -#: src/libslic3r/PrintConfig.cpp:729 -msgid "" -"Default base angle for infill orientation. Cross-hatching will be applied to " -"this. Bridges will be infilled using the best direction Slic3r can detect, " -"so this setting does not affect them." -msgstr "" -"Výchozí úhel pro orientaci výplně. Bude pro něj použito křížové šrafování. " -"Mosty budou vyplněny nejlepším směrem, který Slic3r dokáže rozpoznat, takže " -"toto nastavení je neovlivní." - -#: src/libslic3r/PrintConfig.cpp:741 -msgid "Fill density" -msgstr "Hustota výplně" - -#: src/libslic3r/PrintConfig.cpp:743 -msgid "Density of internal infill, expressed in the range 0% - 100%." -msgstr "Hustota vnitřní výplně, vyjádřená v rozmezí 0% až 100%." - -#: src/libslic3r/PrintConfig.cpp:778 -msgid "Fill pattern" -msgstr "Vzor výplně" - -#: src/libslic3r/PrintConfig.cpp:780 -msgid "Fill pattern for general low-density infill." -msgstr "Vzor výplně pro obecnou výplň s nízkou hustotou." - -#: src/libslic3r/PrintConfig.cpp:796 -msgid "Grid" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:797 -msgid "Triangles" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:798 -msgid "Stars" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:799 -msgid "Cubic" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:800 -msgid "Line" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:802 src/libslic3r/PrintConfig.cpp:1923 -msgid "Honeycomb" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:803 -msgid "3D Honeycomb" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:804 -msgid "Gyroid" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:811 src/libslic3r/PrintConfig.cpp:820 -#: src/libslic3r/PrintConfig.cpp:828 src/libslic3r/PrintConfig.cpp:861 -msgid "First layer" -msgstr "První vrstva" - -#: src/libslic3r/PrintConfig.cpp:812 -msgid "" -"This is the acceleration your printer will use for first layer. Set zero to " -"disable acceleration control for first layer." -msgstr "" -"Toto je zrychlení, které vaše tiskárna použije pro první vrstvu. Nastavte " -"nulu pro vypnutí řízení zrychlení pro první vrstvu." - -#: src/libslic3r/PrintConfig.cpp:821 -msgid "" -"Heated build plate temperature for the first layer. Set this to zero to " -"disable bed temperature control commands in the output." -msgstr "" -"Teplota vyhřívané tiskové podložky pro první vrstvu. Nastavením tuto hodnoty " -"na nulu vypnete příkazy pro řízení teploty ve vrstvě ve výstupu." - -#: src/libslic3r/PrintConfig.cpp:830 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for first " -"layer. You can use this to force fatter extrudates for better adhesion. If " -"expressed as percentage (for example 120%) it will be computed over first " -"layer height. If set to zero, it will use the default extrusion width." -msgstr "" -"Nastavením kladné hodnoty zvolíte manuální šířku vytlačování pro první " -"vrstvu. Toto můžete použít k vytlačování tlustší extruze pro lepší " -"přilnavost. Pokud je vyjádřeno jako procenty (například 120%), bude " -"vypočteno z výšky první vrstvy. Pokud je nastavena na nulu, použije se " -"výchozí šířka vytlačování." - -#: src/libslic3r/PrintConfig.cpp:840 -msgid "First layer height" -msgstr "Výška první vrstvy" - -#: src/libslic3r/PrintConfig.cpp:842 -msgid "" -"When printing with very low layer heights, you might still want to print a " -"thicker bottom layer to improve adhesion and tolerance for non perfect build " -"plates. This can be expressed as an absolute value or as a percentage (for " -"example: 150%) over the default layer height." -msgstr "" -"Při tisku s velmi nízkými výškami vrstev můžete stále vytisknout tlustší " -"spodní vrstvu pro zlepšení přilnavosti a toleranci pro nedokonale " -"zkalibrovanou tiskovou podložku. Může být vyjádřeno jako absolutní hodnota " -"nebo jako procento (například: 150%) z výchozí výšky vrstvy." - -#: src/libslic3r/PrintConfig.cpp:846 src/libslic3r/PrintConfig.cpp:991 -#: src/libslic3r/PrintConfig.cpp:1796 -msgid "mm or %" -msgstr "mm nebo %" - -#: src/libslic3r/PrintConfig.cpp:851 -msgid "First layer speed" -msgstr "Rychlost první vrstvy" - -#: src/libslic3r/PrintConfig.cpp:852 -msgid "" -"If expressed as absolute value in mm/s, this speed will be applied to all " -"the print moves of the first layer, regardless of their type. If expressed " -"as a percentage (for example: 40%) it will scale the default speeds." -msgstr "" -"Pokud je vyjádřena jako absolutní hodnota v mm / s, bude tato rychlost " -"použita pro všechny pohyby tisku první vrstvy bez ohledu na jejich typ. " -"Pokud je hodnota vyjádřena procenty (například: 40%), změní v závisloti na " -"výchozích rychlostech." - -#: src/libslic3r/PrintConfig.cpp:862 -msgid "" -"Extruder temperature for first layer. If you want to control temperature " -"manually during print, set this to zero to disable temperature control " -"commands in the output file." -msgstr "" -"Teplota extruderu pro první vrstvu. Chcete-li během tisku ručně ovládat " -"teplotu, nastavte tuto hodnotu na nulu, aby se ve výstupním souboru zakázaly " -"příkazy pro řízení teploty." - -#: src/libslic3r/PrintConfig.cpp:871 -msgid "" -"Speed for filling small gaps using short zigzag moves. Keep this reasonably " -"low to avoid too much shaking and resonance issues. Set zero to disable gaps " -"filling." -msgstr "" -"Rychlost plnění malých mezer pomocí krátkých cikcak pohybů. Udržujte tuto " -"hodnotu poměrně nízkou, aby nedošlo k přílišným otřesům a problémům s " -"rezonancí. Nastavte nulu pro vypnutí vyplnění mezery." - -#: src/libslic3r/PrintConfig.cpp:879 -msgid "Verbose G-code" -msgstr "Komentáře do G-code" - -#: src/libslic3r/PrintConfig.cpp:880 -msgid "" -"Enable this to get a commented G-code file, with each line explained by a " -"descriptive text. If you print from SD card, the additional weight of the " -"file could make your firmware slow down." -msgstr "" -"Aktivací získáte komentovaný soubor G-code, přičemž každý řádek je doplněn " -"popisným textem. Pokud tisknete z SD karty, dodatečné informace v souboru " -"můžou zpomalit firmware." - -#: src/libslic3r/PrintConfig.cpp:887 -msgid "G-code flavor" -msgstr "Druh G-code" - -#: src/libslic3r/PrintConfig.cpp:888 -msgid "" -"Some G/M-code commands, including temperature control and others, are not " -"universal. Set this option to your printer's firmware to get a compatible " -"output. The \"No extrusion\" flavor prevents Slic3r from exporting any " -"extrusion value at all." -msgstr "" -"Některé příkazy G/M code, včetně řízení teploty a jiné, nejsou univerzální. " -"Vyberte typ firmwaru který používá vaše tiskárna pro dosažení kompatibilního " -"výstupu. Příkazy typu “No extrusion” zabraňují Slic3ru zcela exportovat " -"jakoukoliv hodnotu extruze." - -#: src/libslic3r/PrintConfig.cpp:911 -msgid "No extrusion" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:924 -msgid "High extruder current on filament swap" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:925 -msgid "" -"It may be beneficial to increase the extruder motor current during the " -"filament exchange sequence to allow for rapid ramming feed rates and to " -"overcome resistance when loading a filament with an ugly shaped tip." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:933 -msgid "" -"This is the acceleration your printer will use for infill. Set zero to " -"disable acceleration control for infill." -msgstr "" -"Toto je zrychlení, které vaše tiskárna použije pro výplň. Nastavte nulu, " -"chcete-li vypnout řízení zrychlení pro výplň." - -#: src/libslic3r/PrintConfig.cpp:941 -msgid "Combine infill every" -msgstr "Kombinovat výplň každou" - -#: src/libslic3r/PrintConfig.cpp:943 -msgid "" -"This feature allows to combine infill and speed up your print by extruding " -"thicker infill layers while preserving thin perimeters, thus accuracy." -msgstr "" -"Tato funkce umožňuje kombinovat výplň a urychlit tisk pomocí extruzí " -"silnějších výplňových vrstev při zachování tenkých obvodů, a tím i přesnosti." - -#: src/libslic3r/PrintConfig.cpp:946 -msgid "Combine infill every n layers" -msgstr "Kombinovat výplň každou n vrstvu" - -#: src/libslic3r/PrintConfig.cpp:952 -msgid "Infill extruder" -msgstr "Extruder pro výplň" - -#: src/libslic3r/PrintConfig.cpp:954 -msgid "The extruder to use when printing infill." -msgstr "Extruder který se použije pro tisk výplní." - -#: src/libslic3r/PrintConfig.cpp:962 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill. If " -"left zero, default extrusion width will be used if set, otherwise 1.125 x " -"nozzle diameter will be used. You may want to use fatter extrudates to speed " -"up the infill and make your parts stronger. If expressed as percentage (for " -"example 90%) it will be computed over layer height." -msgstr "" -"Nastavením kladné hodnoty upravíte manuálně šířku extruze pro výplň. Pokud " -"je ponechána nula, použije se standardní šířka extruze, pokud je nastavena, " -"jinak se použije průměr trysky 1,125 x. Je možné, že budete chtít použít " -"tlustší extruze, pro zrychlení výplně a zpevnění vašich výtisků. Pokud je " -"vyjádřeno jako procenty (například 90%), bude vypočteno z výšky vrstvy." - -#: src/libslic3r/PrintConfig.cpp:971 -msgid "Infill before perimeters" -msgstr "Tisknout výplň před tiskem perimetrů" - -#: src/libslic3r/PrintConfig.cpp:972 -msgid "" -"This option will switch the print order of perimeters and infill, making the " -"latter first." -msgstr "Tato volba obrátí pořadí tisku obvodů a výplní." - -#: src/libslic3r/PrintConfig.cpp:977 -msgid "Only infill where needed" -msgstr "Výplň pouze kde je potřeba" - -#: src/libslic3r/PrintConfig.cpp:979 -msgid "" -"This option will limit infill to the areas actually needed for supporting " -"ceilings (it will act as internal support material). If enabled, slows down " -"the G-code generation due to the multiple checks involved." -msgstr "" -"Tato volba omezuje výplň na plochy skutečně potřebné pro podporu stropů " -"(bude se chovat jako vnitřní podpůrný materiál). Je-li tato volba zapnuta, " -"zpomaluje generování G-code kvůli několikanásobným kontrolám." - -#: src/libslic3r/PrintConfig.cpp:986 -msgid "Infill/perimeters overlap" -msgstr "Přesah pro výplň/perimetry" - -#: src/libslic3r/PrintConfig.cpp:988 -msgid "" -"This setting applies an additional overlap between infill and perimeters for " -"better bonding. Theoretically this shouldn't be needed, but backlash might " -"cause gaps. If expressed as percentage (example: 15%) it is calculated over " -"perimeter extrusion width." -msgstr "" -"Toto nastavení uplatňuje dodatečné překrytí mezi výplní a obvodem pro lepší " -"spojení. Teoreticky by to nemělo být potřeba, ale reakce by mohla způsobit " -"mezery. Pokud je vyjádřeno procenty (například: 15%), vypočítá se z šířky " -"extruze perimetrů." - -#: src/libslic3r/PrintConfig.cpp:999 -msgid "Speed for printing the internal fill. Set to zero for auto." -msgstr "Rychlost tisku vnitřní výplně. Pro automatické nastavení zadejte nulu." - -#: src/libslic3r/PrintConfig.cpp:1007 -msgid "Inherits profile" -msgstr "Zdědí profil" - -#: src/libslic3r/PrintConfig.cpp:1008 -msgid "Name of the profile, from which this profile inherits." -msgstr "Název profilu, ze kterého tento profil zdědí." - -#: src/libslic3r/PrintConfig.cpp:1021 -msgid "Interface shells" -msgstr "Mezilehlé stěny" - -#: src/libslic3r/PrintConfig.cpp:1022 -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 "" -"Vynucení vytváření pevných skořepin mezi sousedními materiály/objemy. " -"Užitečné pro tisk s více extrudery s průsvitnými materiály nebo ručně " -"rozpustným podpůrným materiálem." - -#: src/libslic3r/PrintConfig.cpp:1031 -msgid "" -"This custom code is inserted at every layer change, right after the Z move " -"and before the extruder moves to the first layer point. Note that you can " -"use placeholder variables for all Slic3r settings as well as [layer_num] and " -"[layer_z]." -msgstr "" -"Tento vlastní kód je vložen při každé změně vrstvy, hned po pohybu Z a " -"předtím, než se extruder přesune na první bod vrstvy. Můžete přidávat " -"zástupné proměnné pro veškeré nastavení Slic3ru, stejně tak jako [layer_num] " -"a [layer_z]." - -#: src/libslic3r/PrintConfig.cpp:1042 -msgid "Supports remaining times" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1043 -msgid "" -"Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute " -"intervals into the G-code to let the firmware show accurate remaining time. " -"As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 " -"firmware supports M73 Qxx Sxx for the silent mode." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1051 -msgid "Supports silent mode" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1052 -msgid "Set silent mode for the G-code flavor" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1075 -msgid "Maximum feedrate %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1077 -msgid "Maximum feedrate of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1085 -msgid "Maximum acceleration %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1087 -msgid "Maximum acceleration of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1095 -msgid "Maximum jerk %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1097 -msgid "Maximum jerk of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1108 src/libslic3r/PrintConfig.cpp:1110 -msgid "Minimum feedrate when extruding" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1121 -msgid "Minimum travel feedrate" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1130 src/libslic3r/PrintConfig.cpp:1132 -msgid "Maximum acceleration when extruding" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1141 src/libslic3r/PrintConfig.cpp:1143 -msgid "Maximum acceleration when retracting" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1151 src/libslic3r/PrintConfig.cpp:1160 -msgid "Max" -msgstr "Maximum" - -#: src/libslic3r/PrintConfig.cpp:1152 -msgid "This setting represents the maximum speed of your fan." -msgstr "Toto nastavení vyjadřuje maximální rychlost ventilátoru." - -#: src/libslic3r/PrintConfig.cpp:1161 -#, no-c-format -msgid "" -"This is the highest printable layer height for this extruder, used to cap " -"the variable layer height and support layer height. Maximum recommended " -"layer height is 75% of the extrusion width to achieve reasonable inter-layer " -"adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." -msgstr "" -"Toto je největší možná výška vrstvy pro tento extruder, který se používá k " -"zakrytí výšky proměnné vrstvy a výšky podpůrné vrstvy. Maximální doporučená " -"výška vrstvy činí 75% šířky vytlačování, aby se dosáhlo přiměřené " -"přilnavosti mezi vrstvami. Pokud je nastavena hodnota 0, je výška vrstvy " -"omezena na 75% průměru trysky." - -#: src/libslic3r/PrintConfig.cpp:1171 -msgid "Max print speed" -msgstr "Maximální rychlost tisku" - -#: src/libslic3r/PrintConfig.cpp:1172 -msgid "" -"When setting other speed settings to 0 Slic3r will autocalculate the optimal " -"speed in order to keep constant extruder pressure. This experimental setting " -"is used to set the highest print speed you want to allow." -msgstr "" -"Pokud jsou všechna ostatní nastavení rychlosti na hodnotě nula, Slic3r " -"automaticky vypočítá optimální rychlost pro udržení konstantního tlaku v " -"extruderu. Toto experimentální nastavení slouží k nastavení nejvyšší " -"rychlosti tisku, kterou chcete povolit." - -#: src/libslic3r/PrintConfig.cpp:1182 -msgid "" -"This experimental setting is used to set the maximum volumetric speed your " -"extruder supports." -msgstr "" -"Toto experimentální nastavení slouží k nastavení maximální objemové " -"rychlosti, kterou váš extruder podporuje." - -#: src/libslic3r/PrintConfig.cpp:1191 -msgid "Max volumetric slope positive" -msgstr "Maximální pozitivní objemový sklon" - -#: src/libslic3r/PrintConfig.cpp:1192 src/libslic3r/PrintConfig.cpp:1203 -msgid "" -"This experimental setting is used to limit the speed of change in extrusion " -"rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate " -"of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/" -"s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." -msgstr "" -"Toto experimentální nastavení se používá k omezení rychlosti změny " -"objemového průtoku. Hodnota 1,8mm³/s² zajišťuje, že změna objemového průtoku " -"z 1,8 mm³/s (šířka extruze 0,45 mm, výška extruze 0,2 mm, rychlost posuvu 20 " -"mm/s) na 5,4 mm³/s (rychlost posuvu 60 mm/s) potrvá nejméně 2 sekundy." - -#: src/libslic3r/PrintConfig.cpp:1196 src/libslic3r/PrintConfig.cpp:1207 -msgid "mm³/s²" -msgstr "mm³/s²" - -#: src/libslic3r/PrintConfig.cpp:1202 -msgid "Max volumetric slope negative" -msgstr "Maximální negativní objemový sklon" - -#: src/libslic3r/PrintConfig.cpp:1214 src/libslic3r/PrintConfig.cpp:1223 -msgid "Min" -msgstr "Minimum" - -#: src/libslic3r/PrintConfig.cpp:1215 -msgid "This setting represents the minimum PWM your fan needs to work." -msgstr "" -"Toto nastavení představuje minimální hodnotu PWM, kterou ventilátor " -"potřebuje, aby pracoval." - -#: src/libslic3r/PrintConfig.cpp:1224 -msgid "" -"This is the lowest printable layer height for this extruder and limits the " -"resolution for variable layer height. Typical values are between 0.05 mm and " -"0.1 mm." -msgstr "" -"Nejmenší tisknutelná výška vrstvy pro tento extruder. Omezuje rozlišení pro " -"výšku proměnné vrstvy. Typické hodnoty jsou mezi 0,05 mm a 0,1 mm." - -#: src/libslic3r/PrintConfig.cpp:1232 -msgid "Min print speed" -msgstr "Minimální rychlost tisku" - -#: src/libslic3r/PrintConfig.cpp:1233 -msgid "Slic3r will not scale speed down below this speed." -msgstr "Slic3r nebude měnit rychlost pod tuto rychlost." - -#: src/libslic3r/PrintConfig.cpp:1240 -msgid "Minimal filament extrusion length" -msgstr "Minimální délka extruze filamentu" - -#: src/libslic3r/PrintConfig.cpp:1241 -msgid "" -"Generate no less than the number of skirt loops required to consume the " -"specified amount of filament on the bottom layer. For multi-extruder " -"machines, this minimum applies to each extruder." -msgstr "" -"Nevygenerovat méně, než počet obrysových smyček, potřebných ke spotřebování " -"specifikovaného množství filamentu na spodní vrstvu. U strojů s více " -"extrudery platí toto minimum pro každý extruder." - -#: src/libslic3r/PrintConfig.cpp:1250 -msgid "Configuration notes" -msgstr "Konfigurační poznámky" - -#: src/libslic3r/PrintConfig.cpp:1251 -msgid "" -"You can put here your personal notes. This text will be added to the G-code " -"header comments." -msgstr "" -"Zde můžete zadat své osobní poznámky. Tento text bude přidán do komentáře " -"záhlaví G code." - -#: src/libslic3r/PrintConfig.cpp:1260 -msgid "Nozzle diameter" -msgstr "Průměr trysky" - -#: src/libslic3r/PrintConfig.cpp:1261 -msgid "" -"This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" -msgstr "Průměr trysky extruderu (například: 0.5, 0.35 atd.)" - -#: src/libslic3r/PrintConfig.cpp:1266 -msgid "Host Type" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1267 -msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " -"the kind of the host." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1278 -msgid "Only retract when crossing perimeters" -msgstr "Provést retrakci pouze při přejíždění perimetrů" - -#: src/libslic3r/PrintConfig.cpp:1279 -msgid "" -"Disables retraction when the travel path does not exceed the upper layer's " -"perimeters (and thus any ooze will be probably invisible)." -msgstr "" -"Vypne retrakce, pokud dráha nepřekročí perimetr vrchní vrstvy (a proto bude " -"pravděpodobně jakékoliv odkapávání neviditelné)." - -#: src/libslic3r/PrintConfig.cpp:1286 -msgid "" -"This option will drop the temperature of the inactive extruders to prevent " -"oozing. It will enable a tall skirt automatically and move extruders outside " -"such skirt when changing temperatures." -msgstr "" -"Tato volba sníží teplotu neaktivních extruderů, aby u nich nedošlo k " -"vytékání." - -#: src/libslic3r/PrintConfig.cpp:1293 -msgid "Output filename format" -msgstr "Formát názvu výstupního souboru" - -#: src/libslic3r/PrintConfig.cpp:1294 -msgid "" -"You can use all configuration options as variables inside this template. For " -"example: [layer_height], [fill_density] etc. You can also use [timestamp], " -"[year], [month], [day], [hour], [minute], [second], [version], " -"[input_filename], [input_filename_base]." -msgstr "" -"V této šabloně můžete použít všechny možnosti konfigurace jako proměnné. " -"Můžete například použít: [layer_height], [fill_density] etc. Také můžete " -"použít [timestamp], [year], [month], [day], [hour], [minute], [second], " -"[version], [input_filename], [input_filename_base]." - -#: src/libslic3r/PrintConfig.cpp:1303 -msgid "Detect bridging perimeters" -msgstr "Detekovat perimetry přemostění" - -#: src/libslic3r/PrintConfig.cpp:1305 -msgid "" -"Experimental option to adjust flow for overhangs (bridge flow will be used), " -"to apply bridge speed to them and enable fan." -msgstr "" -"Experimentální volba pro nastavení průtoku pro přesahy (použije se průtok " -"jako u mostů), aplikuje se na ně rychlost mostu a spustí se ventilátor." - -#: src/libslic3r/PrintConfig.cpp:1311 -msgid "Filament parking position" -msgstr "Parkovací pozice filamentu" - -#: src/libslic3r/PrintConfig.cpp:1312 -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 "" -"Vzdálenost špičky extruderu od místa, kde je zaparkován filament při " -"vytažení. Měla by se shodovat s hodnotou ve firmware tiskárny. " - -#: src/libslic3r/PrintConfig.cpp:1320 -msgid "Extra loading distance" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1321 -msgid "" -"When set to zero, the distance the filament is moved from parking position " -"during load is exactly the same as it was moved back during unload. When " -"positive, it is loaded further, if negative, the loading move is shorter " -"than unloading. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1329 src/libslic3r/PrintConfig.cpp:1347 -#: src/libslic3r/PrintConfig.cpp:1359 src/libslic3r/PrintConfig.cpp:1369 -msgid "Perimeters" -msgstr "Perimetry" - -#: src/libslic3r/PrintConfig.cpp:1330 -msgid "" -"This is the acceleration your printer will use for perimeters. A high value " -"like 9000 usually gives good results if your hardware is up to the job. Set " -"zero to disable acceleration control for perimeters." -msgstr "" -"Jedná se o akceleraci, kterou vaše tiskárna použije pro perimetry. Vysoká " -"hodnota, jako je 9000, obvykle dává dobré výsledky, pokud je váš hardware v " -"pořádku. Nastavte nulu pro vypnutí řízení zrychlení pro perimetry." - -#: src/libslic3r/PrintConfig.cpp:1338 -msgid "Perimeter extruder" -msgstr "Extruder pro perimetry" - -#: src/libslic3r/PrintConfig.cpp:1340 -msgid "" -"The extruder to use when printing perimeters and brim. First extruder is 1." -msgstr "" -"Extruder, který se používá při tisku perimetrů a límce. První extruder je 1." - -#: src/libslic3r/PrintConfig.cpp:1349 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for perimeters. " -"You may want to use thinner extrudates to get more accurate surfaces. If " -"left zero, default extrusion width will be used if set, otherwise 1.125 x " -"nozzle diameter will be used. If expressed as percentage (for example 200%) " -"it will be computed over layer height." -msgstr "" -"Nastavením na kladnou hodnotu nastavíte manuálně šířku vytlačování " -"perimetrů. Chcete-li získat přesnější povrchy, můžete použít tenčí extruze. " -"Pokud je ponechána nula, použije se standardní šířka extruze, pokud je " -"nastavena, jinak se použije průměr trysky 1,125 x. Pokud je vyjádřeno " -"procenty (například 200%), vypočte se z výšky vrstvy." - -#: src/libslic3r/PrintConfig.cpp:1361 -msgid "" -"Speed for perimeters (contours, aka vertical shells). Set to zero for auto." -msgstr "" -"Rychlost pro perimetry (obrysy, neboli svislé stěny). Zadejte nulu pro " -"automatické nastavení." - -#: src/libslic3r/PrintConfig.cpp:1371 -msgid "" -"This option sets the number of perimeters to generate for each layer. Note " -"that Slic3r may increase this number automatically when it detects sloping " -"surfaces which benefit from a higher number of perimeters if the Extra " -"Perimeters option is enabled." -msgstr "" -"Tato volba nastavuje počet perimetrů, které je třeba vygenerovat pro každou " -"vrstvu. Slic3r může toto číslo automaticky zvýšit, pokud detekuje šikmé " -"plochy, které se tisknou lépe s vyšším počtem obvodů, pokud je zapnuta " -"možnost Extra perimetry." - -#: src/libslic3r/PrintConfig.cpp:1375 -msgid "(minimum)" -msgstr "(minimálně)" - -#: src/libslic3r/PrintConfig.cpp:1383 -msgid "" -"If you want to process the output G-code through custom scripts, just list " -"their absolute paths here. Separate multiple scripts with a semicolon. " -"Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " -"environment variables." -msgstr "" -"Pokud chcete zpracovat výstupní G-code pomocí vlastních skriptů, stačí zde " -"uvést jejich absolutní cesty. Oddělte více skriptů středníkem. Skripty " -"předají absolutní cestu k souboru G-code jako první argument a mohou " -"přistupovat k nastavení konfigurace Slic3ru čtením proměnných prostředí." - -#: src/libslic3r/PrintConfig.cpp:1395 -msgid "Printer type" -msgstr "Typ tiskárny" - -#: src/libslic3r/PrintConfig.cpp:1396 -msgid "Type of the printer." -msgstr "Typ tiskárny." - -#: src/libslic3r/PrintConfig.cpp:1401 -msgid "Printer notes" -msgstr "Poznámky o tiskárně" - -#: src/libslic3r/PrintConfig.cpp:1402 -msgid "You can put your notes regarding the printer here." -msgstr "Zde můžete uvést poznámky týkající se tiskárny." - -#: src/libslic3r/PrintConfig.cpp:1410 -msgid "Printer vendor" -msgstr "Prodejce tiskárny" - -#: src/libslic3r/PrintConfig.cpp:1411 -msgid "Name of the printer vendor." -msgstr "Název prodejce tiskárny." - -#: src/libslic3r/PrintConfig.cpp:1416 -msgid "Printer variant" -msgstr "Varianta tiskárny" - -#: src/libslic3r/PrintConfig.cpp:1417 -msgid "" -"Name of the printer variant. For example, the printer variants may be " -"differentiated by a nozzle diameter." -msgstr "" -"Název varianty tiskárny. Varianty tiskárny mohou být například rozlišeny " -"podle průměru trysky." - -#: src/libslic3r/PrintConfig.cpp:1430 -msgid "Raft layers" -msgstr "Vrstev raftu" - -#: src/libslic3r/PrintConfig.cpp:1432 -msgid "" -"The object will be raised by this number of layers, and support material " -"will be generated under it." -msgstr "" -"Objekt se zvýší tímto počtem vrstev a pod ním bude vytvořen podpůrný " -"materiál." - -#: src/libslic3r/PrintConfig.cpp:1440 -msgid "Resolution" -msgstr "Rozlišení" - -#: src/libslic3r/PrintConfig.cpp:1441 -msgid "" -"Minimum detail resolution, used to simplify the input file for speeding up " -"the slicing job and reducing memory usage. High-resolution models often " -"carry more detail than printers can render. Set to zero to disable any " -"simplification and use full resolution from input." -msgstr "" -"Minimální rozlišení detailů, které se používají pro zjednodušení vstupního " -"souboru pro urychlení slicovací úlohy a snížení využití paměti. Modely s " -"vysokým rozlišením často obsahují více detailů než tiskárny dokážou " -"vykreslit. Nastavte na nulu, chcete-li zakázat jakékoli zjednodušení a " -"použít vstup v plném rozlišení." - -#: src/libslic3r/PrintConfig.cpp:1451 -msgid "Minimum travel after retraction" -msgstr "Minimální rychloposun po retrakci" - -#: src/libslic3r/PrintConfig.cpp:1452 -msgid "" -"Retraction is not triggered when travel moves are shorter than this length." -msgstr "" -"Retrakce není spuštěna, pokud jsou rychloposuny pojezdu kratší než tato " -"délka." - -#: src/libslic3r/PrintConfig.cpp:1458 -msgid "Retract amount before wipe" -msgstr "Délka retrakce před očištěním" - -#: src/libslic3r/PrintConfig.cpp:1459 -msgid "" -"With bowden extruders, it may be wise to do some amount of quick retract " -"before doing the wipe movement." -msgstr "" -"U bowdenových extrudérů může být vhodné provést rychlé retrakce než se " -"spustí očištění." - -#: src/libslic3r/PrintConfig.cpp:1466 -msgid "Retract on layer change" -msgstr "Retrakce při změně vrstvy" - -#: src/libslic3r/PrintConfig.cpp:1467 -msgid "This flag enforces a retraction whenever a Z move is done." -msgstr "Tato možnost vyvolá retrakci, kdykoli je proveden pohyb Z." - -#: src/libslic3r/PrintConfig.cpp:1472 src/libslic3r/PrintConfig.cpp:1480 -msgid "Length" -msgstr "Vzdálenost" - -#: src/libslic3r/PrintConfig.cpp:1473 -msgid "Retraction Length" -msgstr "Vzdálenost retrakce" - -#: src/libslic3r/PrintConfig.cpp:1474 -msgid "" -"When retraction is triggered, filament is pulled back by the specified " -"amount (the length is measured on raw filament, before it enters the " -"extruder)." -msgstr "" -"Při spuštění retrakce se filament zatáhne zpět o zadané množství (délka se " -"měří na surovém filamentu, než vstoupí do extruderu)." - -#: src/libslic3r/PrintConfig.cpp:1476 src/libslic3r/PrintConfig.cpp:1485 -msgid "mm (zero to disable)" -msgstr "mm (nula pro vypnutí)" - -#: src/libslic3r/PrintConfig.cpp:1481 -msgid "Retraction Length (Toolchange)" -msgstr "Vzdálenost retrakce (při změně nástroje)" - -#: src/libslic3r/PrintConfig.cpp:1482 -msgid "" -"When retraction is triggered before changing tool, filament is pulled back " -"by the specified amount (the length is measured on raw filament, before it " -"enters the extruder)." -msgstr "" -"Při výměně nástroje se spustí retrakce a filament se zatáhne zpět o zadané " -"množství (délka se měří na surovém filamentu, než vstoupí do extruderu)." - -#: src/libslic3r/PrintConfig.cpp:1490 -msgid "Lift Z" -msgstr "Zvednout Z" - -#: src/libslic3r/PrintConfig.cpp:1491 -msgid "" -"If you set this to a positive value, Z is quickly raised every time a " -"retraction is triggered. When using multiple extruders, only the setting for " -"the first extruder will be considered." -msgstr "" -"Zadáním kladné hodnoty, se Z rychle přizvedne při každém vyvolání retrakce. " -"Při použití více extruderů bude použito pouze nastavení pro první extruder." - -#: src/libslic3r/PrintConfig.cpp:1498 -msgid "Above Z" -msgstr "Nad Z" - -#: src/libslic3r/PrintConfig.cpp:1499 -msgid "Only lift Z above" -msgstr "Zvednout Z pouze nad" - -#: src/libslic3r/PrintConfig.cpp:1500 -msgid "" -"If you set this to a positive value, Z lift will only take place above the " -"specified absolute Z. You can tune this setting for skipping lift on the " -"first layers." -msgstr "" -"Zadáním kladné hodnoty se zdvih Z uskuteční pouze nad zadanou absolutní " -"hodnotou Z. Toto nastavení můžete zvolit pro přeskočení přizvednutí u " -"prvních vrstev." - -#: src/libslic3r/PrintConfig.cpp:1507 -msgid "Below Z" -msgstr "Pod Z" - -#: src/libslic3r/PrintConfig.cpp:1508 -msgid "Only lift Z below" -msgstr "Zvednout Z pouze pod" - -#: src/libslic3r/PrintConfig.cpp:1509 -msgid "" -"If you set this to a positive value, Z lift will only take place below the " -"specified absolute Z. You can tune this setting for limiting lift to the " -"first layers." -msgstr "" -"Zadáním kladné hodnoty se zdvih Z uskuteční pouze pod zadanou absolutní " -"hodnotou Z. Toto nastavení můžete zvolit pro přeskočení přizvednutí u " -"prvních vrstev." - -#: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1525 -msgid "Extra length on restart" -msgstr "Extra vzdálenost při návratu" - -#: src/libslic3r/PrintConfig.cpp:1518 -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 "" -"Když je retrakce kompenzována po rychloposunu, extruder vytlačuje toto další " -"množství filamentu. Toto nastavení je zřídkakdy potřeba." - -#: src/libslic3r/PrintConfig.cpp:1526 -msgid "" -"When the retraction is compensated after changing tool, the extruder will " -"push this additional amount of filament." -msgstr "" -"Když je retrakce kompenzována po změně nástroje, extruder vytlačuje toto " -"další množství filamentu." - -#: src/libslic3r/PrintConfig.cpp:1533 src/libslic3r/PrintConfig.cpp:1534 -msgid "Retraction Speed" -msgstr "Rychlost retrakce" - -#: src/libslic3r/PrintConfig.cpp:1535 -msgid "The speed for retractions (it only applies to the extruder motor)." -msgstr "Rychlost retrakce (toto nastavení platí pouze pro motor extruderu)." - -#: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1542 -msgid "Deretraction Speed" -msgstr "Rychlost deretrakce" - -#: src/libslic3r/PrintConfig.cpp:1543 -msgid "" -"The speed for loading of a filament into extruder after retraction (it only " -"applies to the extruder motor). If left to zero, the retraction speed is " -"used." -msgstr "" -"Rychlost vtlačení filamentu do extruderu po retrakci (vztahuje se pouze na " -"motor extruderu). Pokud je ponecháno na nulu, použije se rychlost retrakce." - -#: src/libslic3r/PrintConfig.cpp:1550 -msgid "Seam position" -msgstr "Pozice švu" - -#: src/libslic3r/PrintConfig.cpp:1552 -msgid "Position of perimeters starting points." -msgstr "Pozice začátku perimetrů." - -#: src/libslic3r/PrintConfig.cpp:1558 -msgid "Random" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1559 -msgid "Nearest" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1560 -msgid "Aligned" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1568 -msgid "Direction" -msgstr "Směr" - -#: src/libslic3r/PrintConfig.cpp:1570 -msgid "Preferred direction of the seam" -msgstr "Preferovaný směr švu" - -#: src/libslic3r/PrintConfig.cpp:1571 -msgid "Seam preferred direction" -msgstr "Preferovaný směr švu" - -#: src/libslic3r/PrintConfig.cpp:1578 -msgid "Jitter" -msgstr "Rozkmit (Jitter)" - -#: src/libslic3r/PrintConfig.cpp:1580 -msgid "Seam preferred direction jitter" -msgstr "Seam preferred direction jitter" - -#: src/libslic3r/PrintConfig.cpp:1581 -msgid "Preferred direction of the seam - jitter" -msgstr "Preferovaný směr švu - rozkmit" - -#: src/libslic3r/PrintConfig.cpp:1591 -msgid "USB/serial port for printer connection." -msgstr "USB/sériový port pro připojení tiskárny." - -#: src/libslic3r/PrintConfig.cpp:1598 -msgid "Serial port speed" -msgstr "Rychlost sériového portu" - -#: src/libslic3r/PrintConfig.cpp:1599 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "Rychlost (baud) USB/sériového portu pro připojení tiskárny." - -#: src/libslic3r/PrintConfig.cpp:1608 -msgid "Distance from object" -msgstr "Vzdálenost od objektu" - -#: src/libslic3r/PrintConfig.cpp:1609 -msgid "" -"Distance between skirt and object(s). Set this to zero to attach the skirt " -"to the object(s) and get a brim for better adhesion." -msgstr "" -"Vzdálenost mezi obrysem a objektem (objekty). Nastavte tuto hodnotu na nulu, " -"pro sloučení obrysu s předmětem (předměty) a tvorbu límce pro dosažení lepší " -"přilnavosti." - -#: src/libslic3r/PrintConfig.cpp:1616 -msgid "Skirt height" -msgstr "Výška obrysu" - -#: src/libslic3r/PrintConfig.cpp:1617 -msgid "" -"Height of skirt expressed in layers. Set this to a tall value to use skirt " -"as a shield against drafts." -msgstr "" -"Výška obrysu vyjádřená ve vrstvách. Nastavte tuto hodnotu vysokou, pro " -"použití obrysu jako stínění proti průvanu." - -#: src/libslic3r/PrintConfig.cpp:1624 -msgid "Loops (minimum)" -msgstr "Smyček (minimálně)" - -#: src/libslic3r/PrintConfig.cpp:1625 -msgid "Skirt Loops" -msgstr "Počet obrysových smyček" - -#: src/libslic3r/PrintConfig.cpp:1626 -msgid "" -"Number of loops for the skirt. If the Minimum Extrusion Length option is " -"set, the number of loops might be greater than the one configured here. Set " -"this to zero to disable skirt completely." -msgstr "" -"Počet obrysových smyček. Je-li nastavena možnost Minimální délka extruze, " -"počet obrysových smyček může být větší než počet zde nakonfigurovaných. " -"Nastavte tuto hodnotu na nulu, pro úplné deaktivování." - -#: src/libslic3r/PrintConfig.cpp:1634 -msgid "Slow down if layer print time is below" -msgstr "Zpomalit tisk pokud je doba tisku kratší než" - -#: src/libslic3r/PrintConfig.cpp:1635 -msgid "" -"If layer print time is estimated below this number of seconds, print moves " -"speed will be scaled down to extend duration to this value." -msgstr "" -"Pokud je doba tisku vrstvy odhadnuta kratší než tento počet sekund, rychlost " -"tisku se zpomalí, aby se prodloužila doba tisku této vrstvy." - -#: src/libslic3r/PrintConfig.cpp:1645 -msgid "Small perimeters" -msgstr "Malé perimetry" - -#: src/libslic3r/PrintConfig.cpp:1647 -msgid "" -"This separate setting will affect the speed of perimeters having radius <= " -"6.5mm (usually holes). If expressed as percentage (for example: 80%) it will " -"be calculated on the perimeters speed setting above. Set to zero for auto." -msgstr "" -"Toto oddělené nastavení ovlivní rychlost perimetrů o poloměru <= 6,5 mm " -"(obvykle díry). Pokud je vyjádřeno jako procentní podíl (například: 80%), " -"vypočte se z výše uvedeného nastavení rychlosti perimetrů. Pro automatické " -"nastavení zadejte nulu." - -#: src/libslic3r/PrintConfig.cpp:1657 -msgid "Solid infill threshold area" -msgstr "Prahová hodnota plochy pro plnou výplň" - -#: src/libslic3r/PrintConfig.cpp:1659 -msgid "" -"Force solid infill for regions having a smaller area than the specified " -"threshold." -msgstr "" -"Vynucení plné výplně pro oblasti, které mají menší plochu, než je stanovená " -"prahová hodnota." - -#: src/libslic3r/PrintConfig.cpp:1660 -msgid "mm²" -msgstr "mm²" - -#: src/libslic3r/PrintConfig.cpp:1666 -msgid "Solid infill extruder" -msgstr "Extruder pro plnou výplň" - -#: src/libslic3r/PrintConfig.cpp:1668 -msgid "The extruder to use when printing solid infill." -msgstr "Extruder který bude použit při tisku plných výplní." - -#: src/libslic3r/PrintConfig.cpp:1674 +#: src/libslic3r/PrintConfig.cpp:1675 msgid "Solid infill every" msgstr "Plná výplň každou" -#: src/libslic3r/PrintConfig.cpp:1676 -msgid "" -"This feature allows to force a solid layer every given number of layers. " -"Zero to disable. You can set this to any value (for example 9999); Slic3r " -"will automatically choose the maximum possible number of layers to combine " -"according to nozzle diameter and layer height." -msgstr "" -"Tato funkce umožňuje vynucení plné vrstvy za každý daný počet vrstev. Pro " -"vypnutí nastavte nulu. Můžete nastavit libovolnou hodnotu (například 9999); " -"Slic3r automaticky zvolí maximální počet vrstev, které se budou kombinovat " -"podle průměru trysky a výšky vrstvy." +#: src/libslic3r/PrintConfig.cpp:1667 +msgid "Solid infill extruder" +msgstr "Extruder pro plnou výplň" -#: src/libslic3r/PrintConfig.cpp:1688 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill for " -"solid surfaces. If left zero, default extrusion width will be used if set, " -"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " -"(for example 90%) it will be computed over layer height." -msgstr "" -"Zadejte kladnou hodnotu, chcete-li nastavit manuálně šířku extruze pro výplň " -"plných povrchů. Pokud je ponechána nula, použije se standardní šířka " -"extruze, pokud je nastavena, jinak se použije průměr trysky 1,125 x. Pokud " -"je vyjádřena procenty (například 90%), bude vypočtena z výšky vrstvy." +#: src/libslic3r/PrintConfig.cpp:1658 +msgid "Solid infill threshold area" +msgstr "Prahová hodnota plochy pro plnou výplň" -#: src/libslic3r/PrintConfig.cpp:1698 -msgid "" -"Speed for printing solid regions (top/bottom/internal horizontal shells). " -"This can be expressed as a percentage (for example: 80%) over the default " -"infill speed above. Set to zero for auto." -msgstr "" -"Rychlost tisku plných oblastí (vrchní / spodní / vnitřní vodorovné stěny). " -"Může být vyjádřeno procenty (například: 80%) oproti výchozí rychlosti " -"vyplnění. Pro automatické nastavení zadejte nulu." - -#: src/libslic3r/PrintConfig.cpp:1710 -msgid "Number of solid layers to generate on top and bottom surfaces." -msgstr "Počet plných vstev generovaných na vrchních a spodních površích." - -#: src/libslic3r/PrintConfig.cpp:1716 -msgid "Spiral vase" -msgstr "Spirálová váza" - -#: src/libslic3r/PrintConfig.cpp:1717 -msgid "" -"This feature will raise Z gradually while printing a single-walled object in " -"order to remove any visible seam. This option requires a single perimeter, " -"no infill, no top solid layers and no support material. You can still set " -"any number of bottom solid layers as well as skirt/brim loops. It won't work " -"when printing more than an object." -msgstr "" -"Tato funkce zvýší postupně Z při tisku jednovrstvého objektu, aby se " -"odstranil jakýkoli viditelný šev. Tato volba vyžaduje jediný obvod, žádnou " -"výplň, žádné vrchní plné vrstvy a žádný podpůrný materiál. Můžete stále " -"nastavit libovolný počet spodních plných vrstev, stejně jako obrysové " -"smyčky / límec. Při tisku více než jednoho objektu nebude toto nastavení " -"fungovat." - -#: src/libslic3r/PrintConfig.cpp:1725 -msgid "Temperature variation" -msgstr "Temperature variation" - -#: src/libslic3r/PrintConfig.cpp:1726 -msgid "" -"Temperature difference to be applied when an extruder is not active. Enables " -"a full-height \"sacrificial\" skirt on which the nozzles are periodically " -"wiped." -msgstr "" -"Teplotní rozdíl, který se použije v případě, že extruder není aktivní. " -"Umožňuje “obětní” obrysy v plné výšce objektu, na kterém jsou trysky " -"periodicky očištěny." - -#: src/libslic3r/PrintConfig.cpp:1736 -msgid "" -"This start procedure is inserted at the beginning, after bed has reached the " -"target temperature and extruder just started heating, and before extruder " -"has finished heating. If Slic3r detects M104 or M190 in your custom codes, " -"such commands will not be prepended automatically so you're free to " -"customize the order of heating commands and other custom actions. Note that " -"you can use placeholder variables for all Slic3r settings, so you can put a " -"\"M109 S[first_layer_temperature]\" command wherever you want." -msgstr "" -"Tento spouštěcí postup je vložen na začátku, poté, co vyhřívaná tisková " -"podložka dosáhla cílové teploty a extruder se právě začal ohřívat a předtím, " -"než dosáhl cílové teploty extruder . Pokud Slic3r detekuje M104 nebo M190 ve " -"vašich vlastních kódech, takové příkazy nebudou automaticky předkládány, " -"takže máte možnost upravit pořadí příkazů pro vytápění a další vlastní akce. " -"Pro všechny nastavení Slic3ru můžete použít zástupné proměnné, takže můžete " -"zadat příkaz “M109 S [first_layer_temperature]” kdekoli chcete." - -#: src/libslic3r/PrintConfig.cpp:1751 -msgid "" -"This start procedure is inserted at the beginning, after any printer start " -"gcode. This is used to override settings for a specific filament. If Slic3r " -"detects M104, M109, M140 or M190 in your custom codes, such commands will " -"not be prepended automatically so you're free to customize the order of " -"heating commands and other custom actions. Note that you can use placeholder " -"variables for all Slic3r settings, so you can put a \"M109 " -"S[first_layer_temperature]\" command wherever you want. If you have multiple " -"extruders, the gcode is processed in extruder order." -msgstr "" -"Tento postup spuštění je vložen na začátku, po každém spuštění G-code " -"tiskárny. Toto slouží k přepsání nastavení pro konkrétní filament. Pokud " -"Slic3r detekuje M104, M109, M140 nebo M190 ve vašich vlastních kódech, " -"takové příkazy nebudou automaticky předkládány, takže máte možnost " -"přizpůsobit pořadí příkazů k ohřevu a další vlastní akce. Pro všechny " -"nastavení Slic3ru můžete použít zástupné proměnné, takže můžete zadat příkaz " -"“M109 S [first_layer_temperature]” kdekoli chcete. Pokud máte více " -"extruderů, G-code se zpracovává v pořadí extruderů." - -#: src/libslic3r/PrintConfig.cpp:1766 -msgid "Single Extruder Multi Material" -msgstr "MultiMaterial tisk s jedním extrudérem" - -#: src/libslic3r/PrintConfig.cpp:1767 -msgid "The printer multiplexes filaments into a single hot end." -msgstr "Tiskárna přepíná několik filamentů v jednou hot endu." - -#: src/libslic3r/PrintConfig.cpp:1772 -msgid "Prime all printing extruders" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1773 -msgid "" -"If enabled, all printing extruders will be primed at the front edge of the " -"print bed at the start of the print." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1778 -msgid "Generate support material" -msgstr "Generovat podpory" - -#: src/libslic3r/PrintConfig.cpp:1780 -msgid "Enable support material generation." -msgstr "Zapne generování podpor." - -#: src/libslic3r/PrintConfig.cpp:1784 -msgid "Auto generated supports" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1786 -msgid "" -"If checked, supports will be generated automatically based on the overhang " -"threshold value. If unchecked, supports will be generated inside the " -"\"Support Enforcer\" volumes only." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1792 -msgid "XY separation between an object and its support" -msgstr "XY vzdálenost mezi objektem a podporami" - -#: src/libslic3r/PrintConfig.cpp:1794 -msgid "" -"XY separation between an object and its support. If expressed as percentage " -"(for example 50%), it will be calculated over external perimeter width." -msgstr "" -"XY vzdálenost mezi objektem a podporami. Pokud je vyjádřeno procenty " -"(například 50%), bude vypočítána z šířky perimetru." - -#: src/libslic3r/PrintConfig.cpp:1804 -msgid "Pattern angle" -msgstr "Úhel vzoru" - -#: src/libslic3r/PrintConfig.cpp:1806 -msgid "" -"Use this setting to rotate the support material pattern on the horizontal " -"plane." -msgstr "Toto nastavení použijte pro horizontální otočení vzoru." - -#: src/libslic3r/PrintConfig.cpp:1816 src/libslic3r/PrintConfig.cpp:2421 -msgid "" -"Only create support if it lies on a build plate. Don't create support on a " -"print." -msgstr "" -"Podpory vytvářet pouze v případě, že leží na tiskové podložce. Nevytváří " -"podpory na výtisky." - -#: src/libslic3r/PrintConfig.cpp:1822 -msgid "Contact Z distance" -msgstr "Mezera mezi podporami a objektem v ose Z" - -#: src/libslic3r/PrintConfig.cpp:1824 -msgid "" -"The vertical distance between object and support material interface. Setting " -"this to 0 will also prevent Slic3r from using bridge flow and speed for the " -"first object layer." -msgstr "" -"Vertikální vzdálenost mezi objektem a podporami. Nastavením tohoto parametru " -"na hodnotu 0 se také zabrání tomu, aby Slic3r použil parametry průtoku a " -"rychlosti pro mosty při tisku první vrstvy objektu." - -#: src/libslic3r/PrintConfig.cpp:1831 -msgid "soluble" -msgstr "" +#: src/slic3r/GUI/Tab.cpp:1014 src/libslic3r/PrintConfig.cpp:1710 +msgid "Solid layers" +msgstr "Plných vrstev" #: src/libslic3r/PrintConfig.cpp:1832 -msgid "detachable" -msgstr "" +msgid "soluble" +msgstr "rozpustný" -#: src/libslic3r/PrintConfig.cpp:1837 -msgid "Enforce support for the first" -msgstr "Zesílit podpory pro prvních" +#: src/libslic3r/PrintConfig.cpp:711 +msgid "Soluble material" +msgstr "Rozpustný materiál" -#: src/libslic3r/PrintConfig.cpp:1839 -msgid "" -"Generate support material for the specified number of layers counting from " -"bottom, regardless of whether normal support material is enabled or not and " -"regardless of any angle threshold. This is useful for getting more adhesion " -"of objects having a very thin or poor footprint on the build plate." -msgstr "" -"Vygeneruje podpory pro zadaný počet vrstev počítaných od spodního okraje, " -"bez ohledu na to, zda jsou povoleny standartní podpory nebo nikoliv a bez " -"ohledu na jakýkoli prah úhlu. To je užitečné pro získání větší přilnavosti " -"předmětů s velmi tenkou nebo špatnou stopou na tiskové podložce." +#: src/libslic3r/PrintConfig.cpp:712 +msgid "Soluble material is most likely used for a soluble support." +msgstr "Rozpustný materiál je převážně používán pro tisk rozpustných podpěr." -#: src/libslic3r/PrintConfig.cpp:1844 -msgid "Enforce support for the first n layers" -msgstr "Vynucení podpor pro prvních n vrstev" +#: src/libslic3r/PrintConfig.cpp:889 +msgid "Some G/M-code commands, including temperature control and others, are not universal. Set this option to your printer's firmware to get a compatible output. The \"No extrusion\" flavor prevents Slic3r from exporting any extrusion value at all." +msgstr "Některé příkazy G/M code, včetně řízení teploty a jiné, nejsou univerzální. Vyberte typ firmwaru který používá vaše tiskárna pro dosažení kompatibilního výstupu. Příkazy typu “No extrusion” zabraňují Slic3ru zcela exportovat jakoukoliv hodnotu extruze." -#: src/libslic3r/PrintConfig.cpp:1850 -msgid "Support material/raft/skirt extruder" -msgstr "Extruder pro podpory/raft/obrys" +#: src/slic3r/GUI/GLCanvas3D.cpp:721 +msgid "Some objects are not visible when editing supports" +msgstr "Některé objekty nejsou při úpravách podpěr viditelné" -#: src/libslic3r/PrintConfig.cpp:1852 -msgid "" -"The extruder to use when printing support material, raft and skirt (1+, 0 to " -"use the current extruder to minimize tool changes)." -msgstr "" -"Extruder, který se používá při tisku podpor, raftu a obrysu (1+, 0 pro " -"použití aktuálního extruderu pro co nejméně změn nástroje)." +#: src/libslic3r/Print.cpp:1162 +msgid "Some objects are too close; your extruder will collide with them." +msgstr "Některé objekty jsou příliš blízko; Extruder do nich narazí." -#: src/libslic3r/PrintConfig.cpp:1861 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for support " -"material. If left zero, default extrusion width will be used if set, " -"otherwise nozzle diameter will be used. If expressed as percentage (for " -"example 90%) it will be computed over layer height." -msgstr "" -"Zadejte kladnou hodnotu, chcete-li nastavit manuálně šířku extruze pro " -"podpory. Pokud je ponechána nula, použije se výchozí šířka extruze, pokud je " -"nastavena, jinak se použije průměr trysky. Pokud je vyjádřena procenty " -"(například 90%), bude vypočtena z výšky vrstvy." +#: src/libslic3r/Print.cpp:1177 +msgid "Some objects are too tall and cannot be printed without extruder collisions." +msgstr "Některé objekty jsou příliš vysoké a nelze je tisknout bez kolizí extruderu." -#: src/libslic3r/PrintConfig.cpp:1869 -msgid "Interface loops" -msgstr "Kontaktní smyčky" +#: src/libslic3r/PrintConfig.cpp:2548 +msgid "Some objects can get along with a few smaller pads instead of a single big one. This parameter defines how far the center of two smaller pads should be. If theyare closer, they will get merged into one pad." +msgstr "Některé objekty mohou být na několika menších podložkách namísto jedné velké. Tento parametr definuje, jak daleko může být střed dvou menších podložek. Pokud budou blíže, budou sloučeny do jedné podložky." -#: src/libslic3r/PrintConfig.cpp:1871 -msgid "" -"Cover the top contact layer of the supports with loops. Disabled by default." -msgstr "" -"Zakrýt smyčkami horní kontaktní vrstvu podpor. Ve výchozím nastavení " -"zakázáno." +#: src/libslic3r/PrintConfig.cpp:2086 +msgid "Some printers or printer setups may have difficulties printing with a variable layer height. Enabled by default." +msgstr "Některé tiskárny nebo nastavení tiskárny mohou mít potíže s tiskem s proměnnou výškou vrstvy. Ve výchozím nastavení je zapnuto." -#: src/libslic3r/PrintConfig.cpp:1876 -msgid "Support material/raft interface extruder" -msgstr "Extruder pro kontaktní podpory/raft" - -#: src/libslic3r/PrintConfig.cpp:1878 -msgid "" -"The extruder to use when printing support material interface (1+, 0 to use " -"the current extruder to minimize tool changes). This affects raft too." -msgstr "" -"Extruder, který se použije při tisku kontaktních vrstev podpor (1+, 0 pro " -"použití aktuálního extruderu, aby se minimalizovaly změny nástroje). To " -"ovlivňuje i raft." - -#: src/libslic3r/PrintConfig.cpp:1885 -msgid "Interface layers" -msgstr "Kontaktní vrstvy" - -#: src/libslic3r/PrintConfig.cpp:1887 -msgid "" -"Number of interface layers to insert between the object(s) and support " -"material." -msgstr "Počet interface vrstev vložených mezi objekt (objekty) a podpory." - -#: src/libslic3r/PrintConfig.cpp:1894 -msgid "Interface pattern spacing" -msgstr "Rozteč kontaktních vrstev" - -#: src/libslic3r/PrintConfig.cpp:1896 +#: src/libslic3r/PrintConfig.cpp:1897 msgid "Spacing between interface lines. Set zero to get a solid interface." -msgstr "" -"Rozteč linií kontaktních vrstev. Nastavte nulu pro získání plných " -"kontaktních vrstev." +msgstr "Rozteč linií kontaktních vrstev. Nastavte nulu pro získání plných kontaktních vrstev." -#: src/libslic3r/PrintConfig.cpp:1905 -msgid "" -"Speed for printing support material interface layers. If expressed as " -"percentage (for example 50%) it will be calculated over support material " -"speed." -msgstr "" -"Rychlost tisku podpůrných interface vrstev. Pokud je vyjádřen procentní " -"podíl (například 50%), vypočítá se podle rychlosti tisku podpor." - -#: src/libslic3r/PrintConfig.cpp:1914 -msgid "Pattern" -msgstr "Vzor" - -#: src/libslic3r/PrintConfig.cpp:1916 -msgid "Pattern used to generate support material." -msgstr "Vzor použitý pro generování podpor." - -#: src/libslic3r/PrintConfig.cpp:1922 -msgid "Rectilinear grid" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1928 -msgid "Pattern spacing" -msgstr "Rozteč podpor" - -#: src/libslic3r/PrintConfig.cpp:1930 +#: src/libslic3r/PrintConfig.cpp:1931 msgid "Spacing between support material lines." -msgstr "Rozteč linií podpor." - -#: src/libslic3r/PrintConfig.cpp:1939 -msgid "Speed for printing support material." -msgstr "Rychlost tisku podpor." - -#: src/libslic3r/PrintConfig.cpp:1946 -msgid "Synchronize with object layers" -msgstr "Synchronizovat s vrstvami objektu" - -#: src/libslic3r/PrintConfig.cpp:1948 -msgid "" -"Synchronize support layers with the object print layers. This is useful with " -"multi-material printers, where the extruder switch is expensive." -msgstr "" -"Synchronizování vrstev podpor s vrstvami objektu. Toto je velmi užitečné u " -"multi-materiálových tiskáren, kde je přepínání extruderů drahé." - -#: src/libslic3r/PrintConfig.cpp:1954 -msgid "Overhang threshold" -msgstr "Mezní úhel převisu" - -#: src/libslic3r/PrintConfig.cpp:1956 -msgid "" -"Support material will not be generated for overhangs whose slope angle (90° " -"= vertical) is above the given threshold. In other words, this value " -"represent the most horizontal slope (measured from the horizontal plane) " -"that you can print without support material. Set to zero for automatic " -"detection (recommended)." -msgstr "" -"Podpory nebudou vytvořeny pro převisy, jejichž úhel sklonu (90° = " -"vertikální) je nad danou prahovou hodnotou. Jinými slovy, tato hodnota " -"představuje největší horizontální sklon (měřený od horizontální roviny), " -"který můžete tisknout bez podpůrného materiálu. Nastavte na nulu pro " -"automatickou detekci (doporučeno)." - -#: src/libslic3r/PrintConfig.cpp:1968 -msgid "With sheath around the support" -msgstr "S pouzdrem okolo podpor" - -#: src/libslic3r/PrintConfig.cpp:1970 -msgid "" -"Add a sheath (a single perimeter line) around the base support. This makes " -"the support more reliable, but also more difficult to remove." -msgstr "" -"Přidá pouzdro (jednu obvodovou čáru) kolem podpor. Díky tomu je podpora " -"spolehlivější, ale také obtížnější na odstranění." - -#: src/libslic3r/PrintConfig.cpp:1977 -msgid "" -"Extruder temperature for layers after the first one. Set this to zero to " -"disable temperature control commands in the output." -msgstr "" -"Teplota extruderu pro následující vrstvy po vrstvě první. Nastavte tuto " -"hodnotu na nulu, abyste zakázali příkazy pro řízení teploty na výstupu." - -#: src/libslic3r/PrintConfig.cpp:1979 -msgid "Temperature" -msgstr "Teplota" - -#: src/libslic3r/PrintConfig.cpp:1985 -msgid "Detect thin walls" -msgstr "Detekovat tenké zdi" - -#: src/libslic3r/PrintConfig.cpp:1987 -msgid "" -"Detect single-width walls (parts where two extrusions don't fit and we need " -"to collapse them into a single trace)." -msgstr "" -"Detekuje stěny o tlošťce jedné čáry (části, kam se dvě čáry nemohou vejít a " -"je potřeba sloučit je do čáry jedné)." - -#: src/libslic3r/PrintConfig.cpp:1993 -msgid "Threads" -msgstr "Vlákna" - -#: src/libslic3r/PrintConfig.cpp:1994 -msgid "" -"Threads are used to parallelize long-running tasks. Optimal threads number " -"is slightly above the number of available cores/processors." -msgstr "" -"Vlákna jsou používána pro paralelizaci časově náročnějších úloh. Optimální " -"počet vláken je mírně nad počtem dostupných jader/procesorů." - -#: src/libslic3r/PrintConfig.cpp:2006 -msgid "" -"This custom code is inserted right before every extruder change. Note that " -"you can use placeholder variables for all Slic3r settings as well as " -"[previous_extruder] and [next_extruder]." -msgstr "" -"Tento vlastní kód je vložen těsně před každou změnou extruderu. Můžete " -"použít zástupné proměnné pro všechna nastavení Slic3ru, stejně jako " -"[previous_extruder] a [next_extruder]." - -#: src/libslic3r/PrintConfig.cpp:2018 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill for " -"top surfaces. You may want to use thinner extrudates to fill all narrow " -"regions and get a smoother finish. If left zero, default extrusion width " -"will be used if set, otherwise nozzle diameter will be used. If expressed as " -"percentage (for example 90%) it will be computed over layer height." -msgstr "" -"Zadejte kladnou hodnotu, chcete-li nastavit manuálně šířku extruze pro výplň " -"vrchních ploch. Možná budete chtít použít tenčí extruzi, abyste vyplnili " -"všechny úzké oblasti a získali hladší povrch. Pokud je ponechána nula, " -"použije se výchozí šířka extruze, pokud je nastavena, jinak se použije " -"průměr trysky. Pokud je vyjádřena procenty (například 90%), bude vypočtena z " -"výšky vrstvy." +msgstr "Rozteč linií podpěr." +#: src/slic3r/GUI/GUI_ObjectList.cpp:71 src/slic3r/GUI/GUI_ObjectList.cpp:512 +#: src/slic3r/GUI/GUI_Preview.cpp:215 src/slic3r/GUI/Tab.cpp:1084 +#: src/libslic3r/PrintConfig.cpp:199 src/libslic3r/PrintConfig.cpp:426 +#: src/libslic3r/PrintConfig.cpp:871 src/libslic3r/PrintConfig.cpp:999 +#: src/libslic3r/PrintConfig.cpp:1361 src/libslic3r/PrintConfig.cpp:1598 +#: src/libslic3r/PrintConfig.cpp:1647 src/libslic3r/PrintConfig.cpp:1698 #: src/libslic3r/PrintConfig.cpp:2029 -msgid "" -"Speed for printing top solid layers (it only applies to the uppermost " -"external layers and not to their internal solid layers). You may want to " -"slow down this to get a nicer surface finish. This can be expressed as a " -"percentage (for example: 80%) over the solid infill speed above. Set to zero " -"for auto." -msgstr "" -"Rychlost tisku vrchních plných vrstev (vztahuje se pouze na nejvyšší horní " -"vrstvy a nikoli na jejich vnitřní plné vrstvy). Rychlost lze zpomalit, " -"abyste získali hezčí povrchovou úpravu. Může být vyjádřena procenty " -"(například: 80%) z rychlosti plné výplně materiálu výše. Pro automatické " -"nastavení zadejte nulu." +msgid "Speed" +msgstr "Rychlost" -#: src/libslic3r/PrintConfig.cpp:2043 -msgid "Number of solid layers to generate on top surfaces." -msgstr "Počet vrchních generovaných plných vrstev." - -#: src/libslic3r/PrintConfig.cpp:2044 -msgid "Top solid layers" -msgstr "Vrchních plných vrstev" - -#: src/libslic3r/PrintConfig.cpp:2050 -msgid "Speed for travel moves (jumps between distant extrusion points)." -msgstr "Rychlost posunů (přejezdy mezi body extruze)." - -#: src/libslic3r/PrintConfig.cpp:2058 -msgid "Use firmware retraction" -msgstr "Použít retrakce z firmwaru" - -#: src/libslic3r/PrintConfig.cpp:2059 -msgid "" -"This experimental setting uses G10 and G11 commands to have the firmware " -"handle the retraction. This is only supported in recent Marlin." -msgstr "" -"Toto experimentální nastavení používá příkazy G10 a G11, aby si firmware " -"poradil s retrakcí. Toto je podporováno pouze v posledních verzích firmwaru " -"Marlin." - -#: src/libslic3r/PrintConfig.cpp:2065 -msgid "Use relative E distances" -msgstr "Použít relativní E vzdálenosti" - -#: src/libslic3r/PrintConfig.cpp:2066 -msgid "" -"If your firmware requires relative E values, check this, otherwise leave it " -"unchecked. Most firmwares use absolute values." -msgstr "" -"Pokud váš firmware vyžaduje relativní hodnoty E, zaškrtněte toto, jinak " -"nechte nezaškrtnuté. Většina firmwarů používá absolutní hodnoty." - -#: src/libslic3r/PrintConfig.cpp:2072 -msgid "Use volumetric E" -msgstr "Použít volumetrickou hodnotu E" - -#: src/libslic3r/PrintConfig.cpp:2073 -msgid "" -"This experimental setting uses outputs the E values in cubic millimeters " -"instead of linear millimeters. If your firmware doesn't already know " -"filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] " -"T0' in your start G-code in order to turn volumetric mode on and use the " -"filament diameter associated to the filament selected in Slic3r. This is " -"only supported in recent Marlin." -msgstr "" -"Toto experimentální nastavení používá výstupní hodnoty E v kubických " -"milimetrech místo lineárních milimetrů. Pokud firmware dosud nezná průměr " -"(průměry) filamentu, můžete v počátečním G-code zadat příkazy jako “M200 D " -"[filament_diameter_0] T0”, pro se zapnutí volumetrického režimu a použití " -"průměru filamentu přidruženého k vybranému filamentu ve Slic3ru. Toto je " -"podporováno pouze v posledních verzích firmwaru Marlin." - -#: src/libslic3r/PrintConfig.cpp:2083 -msgid "Enable variable layer height feature" -msgstr "Zapnout variabilní výšku vrstev" - -#: src/libslic3r/PrintConfig.cpp:2084 -msgid "" -"Some printers or printer setups may have difficulties printing with a " -"variable layer height. Enabled by default." -msgstr "" -"Některé tiskárny nebo nastavení tiskárny mohou mít potíže s tiskem s " -"proměnnou výškou vrstvy. Ve výchozím nastavení je zapnuto." - -#: src/libslic3r/PrintConfig.cpp:2090 -msgid "Wipe while retracting" -msgstr "Očistit při retrakci" - -#: src/libslic3r/PrintConfig.cpp:2091 -msgid "" -"This flag will move the nozzle while retracting to minimize the possible " -"blob on leaky extruders." -msgstr "" -"Toto nastavení přemístí trysku při retrakci, aby se minimalizovalo možné " -"vytékání materiálu." - -#: src/libslic3r/PrintConfig.cpp:2098 -msgid "" -"Multi material printers may need to prime or purge extruders on tool " -"changes. Extrude the excess material into the wipe tower." -msgstr "" -"Multimateriálové tiskárny mohou potřebovat, aby při výměně nástrojů " -"vyčistili extrudery. Vytlačí přebytečný materiál do čistící věže." - -#: src/libslic3r/PrintConfig.cpp:2104 -msgid "Purging volumes - load/unload volumes" -msgstr "Objemy čištění - zaváděné / vyjmuté objemy" - -#: src/libslic3r/PrintConfig.cpp:2105 -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 "" -"Tento vektor ukládá potřebné objemy pro změnu z/na každý extruder používaný " -"na čistící veži. Tyto hodnoty jsou použity pro zjednodušení vytvoření " -"celkových objemů čištění níže. " - -#: src/libslic3r/PrintConfig.cpp:2111 -msgid "Purging volumes - matrix" -msgstr "Objemy čištění - matice" - -#: src/libslic3r/PrintConfig.cpp:2112 -msgid "" -"This matrix describes volumes (in cubic milimetres) required to purge the " -"new filament on the wipe tower for any given pair of tools. " -msgstr "" -"Tato matice popisuje objemy (v kubických milimetrech) nutné k vyčištění " -"nového filamentu na čistící věži pro danou dvojici nástrojů. " - -#: src/libslic3r/PrintConfig.cpp:2121 -msgid "Position X" -msgstr "Pozice X" - -#: src/libslic3r/PrintConfig.cpp:2122 -msgid "X coordinate of the left front corner of a wipe tower" -msgstr "X souřadnice levého předního rohu čistící věže" - -#: src/libslic3r/PrintConfig.cpp:2128 -msgid "Position Y" -msgstr "Pozice Y" - -#: src/libslic3r/PrintConfig.cpp:2129 -msgid "Y coordinate of the left front corner of a wipe tower" -msgstr "Y souřadnice levého předního rohu čistící věže" - -#: src/libslic3r/PrintConfig.cpp:2136 -msgid "Width of a wipe tower" -msgstr "Šířka čistící věže" - -#: src/libslic3r/PrintConfig.cpp:2142 -msgid "Wipe tower rotation angle" -msgstr "Úhel natočení čistící věže" - -#: src/libslic3r/PrintConfig.cpp:2143 -msgid "Wipe tower rotation angle with respect to x-axis " -msgstr "Úhel natočení čistící věže s ohledem na osu X " - -#: src/libslic3r/PrintConfig.cpp:2144 src/libslic3r/PrintConfig.cpp:2565 -msgid "degrees" -msgstr "stupňů" - -#: src/libslic3r/PrintConfig.cpp:2150 -msgid "Wipe into this object's infill" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2151 -msgid "" -"Purging after toolchange will done inside this object's infills. This lowers " -"the amount of waste but may result in longer print time due to additional " -"travel moves." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2158 -msgid "Wipe into this object" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2159 -msgid "" -"Object will be used to purge the nozzle after a toolchange to save material " -"that would otherwise end up in the wipe tower and decrease print time. " -"Colours of the objects will be mixed as a result." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2165 -msgid "Maximal bridging distance" -msgstr "Maximální vzdálenost přemostění" - -#: src/libslic3r/PrintConfig.cpp:2166 -msgid "Maximal distance between supports on sparse infill sections. " -msgstr "Maximální vzdálenost mezi podporami u částí s řídkou výplní. " - -#: src/libslic3r/PrintConfig.cpp:2172 -msgid "XY Size Compensation" -msgstr "Kompenzace XY rozměrů" - -#: src/libslic3r/PrintConfig.cpp:2174 -msgid "" -"The object will be grown/shrunk in the XY plane by the configured value " -"(negative = inwards, positive = outwards). This might be useful for fine-" -"tuning hole sizes." -msgstr "" -"Objekt bude roztažen / smrštěn v rovině XY nastavenou hodnotou (negativní = " -"směrem dovnitř, pozitivní = směrem ven). To může být užitečné pro jemné " -"doladění otvorů." - -#: src/libslic3r/PrintConfig.cpp:2182 -msgid "Z offset" -msgstr "Odsazení Z" - -#: src/libslic3r/PrintConfig.cpp:2183 -msgid "" -"This value will be added (or subtracted) from all the Z coordinates in the " -"output G-code. It is used to compensate for bad Z endstop position: for " -"example, if your endstop zero actually leaves the nozzle 0.3mm far from the " -"print bed, set this to -0.3 (or fix your endstop)." -msgstr "" -"Tato hodnota bude přidána (nebo odečtena) ze všech souřadnic Z ve výstupním " -"G-code. Používá se ke kompenzování špatné pozice endstopu Z. Například pokud " -"endstop 0 skutečně ponechá trysku 0,3 mm daleko od tiskové podložky, " -"nastavte hodnotu -0,3 (nebo dolaďte svůj koncový doraz)." - -#: src/libslic3r/PrintConfig.cpp:2200 -msgid "Display width" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2201 -msgid "Width of the display" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2206 -msgid "Display height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2207 -msgid "Height of the display" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2212 -msgid "Number of pixels in" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2214 -msgid "Number of pixels in X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2220 -msgid "Number of pixels in Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2225 -msgid "Display orientation" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2226 -msgid "" -"Set the actual LCD display orientation inside the SLA printer. Portrait mode " -"will flip the meaning of display width and height parameters and the output " -"images will be rotated by 90 degrees." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2232 -msgid "Landscape" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2233 -msgid "Portrait" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2238 -msgid "Fast" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2239 -msgid "Fast tilt" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2240 -msgid "Time of the fast tilt" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2247 -msgid "Slow" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2248 -msgid "Slow tilt" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2249 -msgid "Time of the slow tilt" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2256 -msgid "Area fill" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2257 -msgid "" -"The percentage of the bed area. \n" -"If the print area exceeds the specified value, \n" -"then a slow tilt will be used, otherwise - a fast tilt" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2264 src/libslic3r/PrintConfig.cpp:2265 -#: src/libslic3r/PrintConfig.cpp:2266 -msgid "Printer scaling correction" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2272 src/libslic3r/PrintConfig.cpp:2273 -msgid "Printer absolute correction" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2274 -msgid "" -"Will inflate or deflate the sliced 2D polygons according to the sign of the " -"correction." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2281 -msgid "Printer gamma correction" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2282 -msgid "This will apply a gamm correction to the rasterized 2D polygons." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2291 src/libslic3r/PrintConfig.cpp:2292 -msgid "Initial layer height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2298 -msgid "Faded layers" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2299 -msgid "" -"Number of the layers needed for the exposure time fade from initial exposure " -"time to the exposure time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2306 src/libslic3r/PrintConfig.cpp:2307 -msgid "Exposure time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2313 src/libslic3r/PrintConfig.cpp:2314 -msgid "Initial exposure time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2320 src/libslic3r/PrintConfig.cpp:2321 -msgid "Correction for expansion" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2327 -msgid "SLA print material notes" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2328 -msgid "You can put your notes regarding the SLA print material here." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2336 src/libslic3r/PrintConfig.cpp:2347 -msgid "Default SLA material profile" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2358 -msgid "Generate supports" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2360 -msgid "Generate supports for the models" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2365 -msgid "Support head front diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2367 -msgid "Diameter of the pointing side of the head" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2374 -msgid "Support head penetration" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2376 -msgid "How much the pinhead has to penetrate the model surface" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2383 -msgid "Support head width" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2385 -msgid "Width from the back sphere center to the front sphere center" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2393 -msgid "Support pillar diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2395 -msgid "Diameter in mm of the support pillars" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2403 -msgid "Support pillar connection mode" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2404 -msgid "" -"Controls the bridge type between two neigboring pillars. Can be zig-zag, " -"cross (double zig-zag) or dynamic which will automatically switch between " -"the first two depending on the distance of the two pillars." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2412 -msgid "Zig-Zag" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2413 -msgid "Cross" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2414 -msgid "Dynamic" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2426 -msgid "Pillar widening factor" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2428 -msgid "" -"Merging bridges or pillars into another pillars can increase the radius. " -"Zero means no increase, one means full increase." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2437 -msgid "Support base diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2439 -msgid "Diameter in mm of the pillar base" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2447 -msgid "Support base height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2449 -msgid "The height of the pillar base cone" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2456 -msgid "Critical angle" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2458 -msgid "The default angle for connecting support sticks and junctions." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2466 -msgid "Max bridge length" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2468 -msgid "The max length of a bridge" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2475 -msgid "Max pillar linking distance" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2477 -msgid "" -"The max distance of two pillars to get linked with each other. A zero value " -"will prohibit pillar cascading." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2485 -msgid "Object elevation" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2487 -msgid "How much the supports should lift up the supported object." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2495 -msgid "Support points density" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2497 -msgid "This is a relative measure of support points density." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2503 -msgid "Minimal distance of the support points" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2505 -msgid "No support points will be placed closer than this threshold." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2511 -msgid "Use pad" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2513 -msgid "Add a pad underneath the supported model" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2518 -msgid "Pad wall thickness" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2520 -msgid "The thickness of the pad and its optional cavity walls." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2528 -msgid "Pad wall height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2529 -msgid "Defines the cavity depth. Set to zero to disable the cavity." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2539 -msgid "Max merge distance" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2541 -msgid "" -"Some objects can get along with a few smaller pads instead of a single big " -"one. This parameter defines how far the center of two smaller pads should " -"be. If theyare closer, they will get merged into one pad." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2552 -msgid "Pad edge radius" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2561 -msgid "Pad wall slope" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2563 -msgid "" -"The slope of the pad wall relative to the bed plane. 90 degrees means " -"straight walls." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2924 -msgid "Export SVG" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2925 -msgid "Export the model(s) as OBJ." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2936 -msgid "Export SLA" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2937 -msgid "Slice the model and export SLA printing layers as PNG." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2942 -msgid "Export 3MF" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2943 -msgid "Export the model(s) as 3MF." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2947 -msgid "Export AMF" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2948 -msgid "Export the model(s) as AMF." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2952 -msgid "Export STL" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2953 -msgid "Export the model(s) as STL." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2958 -msgid "Slice the model and export toolpaths as G-code." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2963 -msgid "Slice" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2964 -msgid "" -"Slice the model as FFF or SLA based on the printer_technology configuration " -"value." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2969 -msgid "Help" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2970 -msgid "Show this help." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2975 -msgid "Help (FFF options)" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2976 -msgid "Show the full list of print/G-code configuration options." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2980 -msgid "Help (SLA options)" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2981 -msgid "Show the full list of SLA print configuration options." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2985 -msgid "Output Model Info" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2986 -msgid "Write information about the model to the console." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2990 -msgid "Save config file" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2991 -msgid "Save configuration to the specified file." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3001 -msgid "Align XY" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3002 -msgid "Align the model to the given point." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3007 -msgid "Cut model at the given Z." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3028 -msgid "Center" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3029 -msgid "Center the print around the given center." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3033 -msgid "Don't arrange" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3034 -msgid "" -"Do not rearrange the given models before merging and keep their original XY " -"coordinates." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3037 -msgid "Duplicate" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3038 -msgid "Multiply copies by this factor." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3042 -msgid "Duplicate by grid" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3043 -msgid "Multiply copies by creating a grid." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3046 -msgid "Merge" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3047 -msgid "" -"Arrange the supplied models in a plate and merge them in a single model in " -"order to perform actions once." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3052 -msgid "" -"Try to repair any non-manifold meshes (this option is implicitly added " -"whenever we need to slice the model to perform the requested action)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3056 -msgid "Rotation angle around the Z axis in degrees." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3060 -msgid "Rotate around X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3061 -msgid "Rotation angle around the X axis in degrees." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3065 -msgid "Rotate around Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3066 -msgid "Rotation angle around the Y axis in degrees." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3071 -msgid "Scaling factor or percentage." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3076 -msgid "" -"Detect unconnected parts in the given model(s) and split them into separate " -"objects." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3079 -msgid "Scale to Fit" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3080 -msgid "Scale to fit the given volume." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3089 -msgid "Ignore non-existent config files" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3090 -msgid "Do not fail if a file supplied to --load does not exist." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3093 -msgid "Load config file" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3094 -msgid "" -"Load configuration from the specified file. It can be used more than once to " -"load options from multiple files." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3097 -msgid "Output File" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3098 -msgid "" -"The file where the output will be written (if not specified, it will be " -"based on the input file)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3108 -msgid "Data directory" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3109 -msgid "" -"Load and store settings at the given directory. This is useful for " -"maintaining different profiles or including configurations from a network " -"storage." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3112 -msgid "Logging level" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3113 -msgid "" -"Messages with severity lower or eqal to the loglevel will be printed out. 0:" -"trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal" -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:176 -msgid "Mixed" -msgstr "Smíšený" - -#: src/libslic3r/GCode/PreviewData.cpp:396 -msgid "Height (mm)" -msgstr "Výška (mm)" - -#: src/libslic3r/GCode/PreviewData.cpp:398 -msgid "Width (mm)" -msgstr "Šířka (mm)" +#: src/libslic3r/PrintConfig.cpp:1600 +msgid "Speed (baud) of USB/serial port for printer connection." +msgstr "Rychlost (baud) USB/sériového portu pro připojení tiskárny." #: src/libslic3r/GCode/PreviewData.cpp:400 msgid "Speed (mm/s)" msgstr "Rychlost (mm/s)" +#: src/libslic3r/PrintConfig.cpp:872 +msgid "Speed for filling small gaps using short zigzag moves. Keep this reasonably low to avoid too much shaking and resonance issues. Set zero to disable gaps filling." +msgstr "Rychlost plnění malých mezer pomocí krátkých cikcak pohybů. Udržujte tuto hodnotu poměrně nízkou, aby nedošlo k přílišným otřesům a problémům s rezonancí. Nastavte nulu pro vypnutí vyplnění mezery." + +#: src/slic3r/GUI/Tab.cpp:1097 +msgid "Speed for non-print moves" +msgstr "Netiskové rychlosti" + +#: src/libslic3r/PrintConfig.cpp:1362 +msgid "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." +msgstr "Rychlost pro perimetry (obrysy, neboli svislé stěny). Zadejte nulu pro automatické nastavení." + +#: src/slic3r/GUI/Tab.cpp:1085 +msgid "Speed for print moves" +msgstr "Rychlosti pohybů tiskárny" + +#: src/libslic3r/PrintConfig.cpp:200 +msgid "Speed for printing bridges." +msgstr "Rychlost pro vytváření mostů." + +#: src/libslic3r/PrintConfig.cpp:1699 +msgid "Speed for printing solid regions (top/bottom/internal horizontal shells). This can be expressed as a percentage (for example: 80%) over the default infill speed above. Set to zero for auto." +msgstr "Rychlost tisku plných oblastí (vrchní / spodní / vnitřní vodorovné stěny). Může být vyjádřeno procenty (například: 80%) oproti výchozí rychlosti vyplnění. Pro automatické nastavení zadejte nulu." + +#: src/libslic3r/PrintConfig.cpp:1906 +msgid "Speed for printing support material interface layers. If expressed as percentage (for example 50%) it will be calculated over support material speed." +msgstr "Rychlost tisku podpěrných interface vrstev. Pokud je vyjádřen procentní podíl (například 50%), vypočítá se podle rychlosti tisku podpěr." + +#: src/libslic3r/PrintConfig.cpp:1940 +msgid "Speed for printing support material." +msgstr "Rychlost tisku podpěr." + +#: src/libslic3r/PrintConfig.cpp:1000 +msgid "Speed for printing the internal fill. Set to zero for auto." +msgstr "Rychlost tisku vnitřní výplně. Pro automatické nastavení zadejte nulu." + +#: src/libslic3r/PrintConfig.cpp:2030 +msgid "Speed for printing top solid layers (it only applies to the uppermost external layers and not to their internal solid layers). You may want to slow down this to get a nicer surface finish. This can be expressed as a percentage (for example: 80%) over the solid infill speed above. Set to zero for auto." +msgstr "Rychlost tisku vrchních plných vrstev (vztahuje se pouze na nejvyšší horní vrstvy a nikoli na jejich vnitřní plné vrstvy). Rychlost lze zpomalit, abyste získali hezčí povrchovou úpravu. Může být vyjádřena procenty (například: 80%) z rychlosti plné výplně materiálu výše. Pro automatické nastavení zadejte nulu." + +#: src/libslic3r/PrintConfig.cpp:2052 +msgid "Speed for travel moves (jumps between distant extrusion points)." +msgstr "Rychlost posunů (přejezdy mezi body extruze)." + +#: src/libslic3r/PrintConfig.cpp:627 +msgid "Speed of the first cooling move" +msgstr "Rychlost prvního pohybu chlazení" + +#: src/libslic3r/PrintConfig.cpp:646 +msgid "Speed of the last cooling move" +msgstr "Rychlost posledního pohybu chlazení" + +#: src/libslic3r/PrintConfig.cpp:584 +msgid "Speed used at the very beginning of loading phase. " +msgstr "Rychlost použitá na samém počátku zaváděcí fáze" + +#: src/libslic3r/PrintConfig.cpp:576 +msgid "Speed used for loading the filament on the wipe tower. " +msgstr "Rychlost použitá pro zavádění filamentu na čistící věž. " + +#: src/libslic3r/PrintConfig.cpp:592 +msgid "Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just after ramming). " +msgstr "Rychlost vysouvání filamentu při výměně na čistící věži (úvodní část vysunutí okamžitě po rapidní extruzi není ovlivněna). " + +#: src/libslic3r/PrintConfig.cpp:601 +msgid "Speed used for unloading the tip of the filament immediately after ramming. " +msgstr "Rychlost použitá při vysouvání špičky filamentu bezprostředně po rapidní extruzi." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1055 +msgid "Sphere" +msgstr "Koule" + +#: src/slic3r/GUI/Tab.cpp:1254 +msgid "Spiral Vase" +msgstr "Spirálová váza" + +#: src/libslic3r/PrintConfig.cpp:1717 +msgid "Spiral vase" +msgstr "Spirálová váza" + +#: src/slic3r/GUI/Plater.cpp:2971 src/slic3r/GUI/Plater.cpp:2988 +#: src/slic3r/GUI/Plater.cpp:3008 src/libslic3r/PrintConfig.cpp:3082 +msgid "Split" +msgstr "Rozdělit" + +#: src/slic3r/GUI/Plater.cpp:2971 +msgid "Split the selected object" +msgstr "Rozdělit vybraný objekt" + +#: src/slic3r/GUI/Plater.cpp:2966 src/slic3r/GUI/Plater.cpp:2988 +msgid "Split the selected object into individual objects" +msgstr "Rozdělit vybraný objekt na jednotlivé objekty" + +#: lib/Slic3r/GUI/Plater.pm:2293 +msgid "Split the selected object into individual parts" +msgstr "Rozdělit vybraný objekt na jednotlivé části" + +#: src/slic3r/GUI/Plater.cpp:2968 src/slic3r/GUI/Plater.cpp:3008 +msgid "Split the selected object into individual sub-parts" +msgstr "Rozdělit vybraný objekt na jednotlivé dílčí části" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1110 +msgid "Split to parts" +msgstr "Rozdělit na části" + +#: src/libslic3r/PrintConfig.cpp:799 +msgid "Stars" +msgstr "Hvězdy" + +#: src/slic3r/GUI/Tab.cpp:1564 src/slic3r/GUI/Tab.cpp:1949 +#: src/libslic3r/PrintConfig.cpp:1736 src/libslic3r/PrintConfig.cpp:1751 +msgid "Start G-code" +msgstr "Začátek G-code" + +#: src/slic3r/GUI/MainFrame.cpp:403 +msgid "Start new slicing process" +msgstr "Zahájit nový slicovací proces" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:35 +msgid "Start printing after upload" +msgstr "Spustit tisk po nahrání" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2153 +msgid "Starting" +msgstr "Spuštění" + +#: src/slic3r/GUI/FirmwareDialog.cpp:782 +msgid "Status:" +msgstr "Stav:" + +#: lib/Slic3r/GUI/Plater.pm:1659 lib/Slic3r/GUI/Plater.pm:1701 +msgid "STL file exported to " +msgstr "Soubor STL byl exportován do " + +#: src/slic3r/GUI/Plater.cpp:3545 +#, possible-c-format +msgid "STL file exported to %s" +msgstr "Soubor STL exportován do %s" + +#: src/slic3r/GUI/Tab.cpp:1716 src/slic3r/GUI/Tab.cpp:1901 +msgid "Success!" +msgstr "Úspěch!" + +#: src/slic3r/GUI/PresetHints.cpp:200 +msgid "support" +msgstr "podpěry" + +#: xs/src/slic3r/GUI/GUI.cpp:859 +msgid "Support" +msgstr "Podpěra" + +#: src/libslic3r/PrintConfig.cpp:2441 +msgid "Support base diameter" +msgstr "Průměr podpěrné základny" + +#: src/libslic3r/PrintConfig.cpp:2451 +msgid "Support base height" +msgstr "Výška podpěrné základny" + +#: src/slic3r/GUI/Tab.cpp:1316 +msgid "Support Generator" +msgstr "Generátor Podpěr" + +#: src/slic3r/GUI/Tab.cpp:3401 +msgid "Support head" +msgstr "Hrot podpěry" + +#: src/libslic3r/PrintConfig.cpp:2369 +msgid "Support head front diameter" +msgstr "Délka hrotu podpěry" + +#: src/libslic3r/PrintConfig.cpp:2378 +msgid "Support head penetration" +msgstr "Průnik podpěry do modelu" + +#: src/libslic3r/PrintConfig.cpp:2387 +msgid "Support head width" +msgstr "Tloušťka hrotu podpěry" + +#: src/slic3r/GUI/PresetHints.cpp:210 +msgid "support interface" +msgstr "kontaktní vrstva podpěr" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:30 src/slic3r/GUI/GUI_ObjectList.cpp:70 +#: src/slic3r/GUI/GUI_ObjectList.cpp:511 src/slic3r/GUI/GUI_Preview.cpp:236 +#: src/slic3r/GUI/Tab.cpp:1059 src/slic3r/GUI/Tab.cpp:1060 +#: src/libslic3r/PrintConfig.cpp:334 src/libslic3r/PrintConfig.cpp:1432 +#: src/libslic3r/PrintConfig.cpp:1780 src/libslic3r/PrintConfig.cpp:1786 +#: src/libslic3r/PrintConfig.cpp:1794 src/libslic3r/PrintConfig.cpp:1806 +#: src/libslic3r/PrintConfig.cpp:1816 src/libslic3r/PrintConfig.cpp:1824 +#: src/libslic3r/PrintConfig.cpp:1839 src/libslic3r/PrintConfig.cpp:1860 +#: src/libslic3r/PrintConfig.cpp:1871 src/libslic3r/PrintConfig.cpp:1887 +#: src/libslic3r/PrintConfig.cpp:1896 src/libslic3r/PrintConfig.cpp:1905 +#: src/libslic3r/PrintConfig.cpp:1916 src/libslic3r/PrintConfig.cpp:1930 +#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1939 +#: src/libslic3r/PrintConfig.cpp:1948 src/libslic3r/PrintConfig.cpp:1956 +#: src/libslic3r/PrintConfig.cpp:1970 src/libslic3r/GCode/PreviewData.cpp:172 +msgid "Support material" +msgstr "Podpěry" + +#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/PrintConfig.cpp:1904 +#: src/libslic3r/GCode/PreviewData.cpp:173 +msgid "Support material interface" +msgstr "Kontaktní vrstvy podpěr" + +#: src/libslic3r/PrintConfig.cpp:1957 +msgid "Support material will not be generated for overhangs whose slope angle (90° = vertical) is above the given threshold. In other words, this value represent the most horizontal slope (measured from the horizontal plane) that you can print without support material. Set to zero for automatic detection (recommended)." +msgstr "Podpěry nebudou vytvořeny pro převisy, jejichž úhel sklonu (90° = vertikální) je nad danou prahovou hodnotou. Jinými slovy, tato hodnota představuje největší horizontální sklon (měřený od horizontální roviny), který můžete tisknout bez podpěrného materiálu. Nastavte na nulu pro automatickou detekci (doporučeno)." + +#: src/libslic3r/PrintConfig.cpp:1877 +msgid "Support material/raft interface extruder" +msgstr "Extruder pro kontaktní podpěry/raft" + +#: src/libslic3r/PrintConfig.cpp:1851 +msgid "Support material/raft/skirt extruder" +msgstr "Extruder pro podpěry/raft/obrys" + +#: src/slic3r/GUI/Plater.cpp:423 src/libslic3r/PrintConfig.cpp:1815 +#: src/libslic3r/PrintConfig.cpp:2423 +msgid "Support on build plate only" +msgstr "Pouze na tiskové podložce" + +#: src/slic3r/GUI/Tab.cpp:3406 +msgid "Support pillar" +msgstr "Podpěrný pilíř" + +#: src/libslic3r/PrintConfig.cpp:2407 +msgid "Support pillar connection mode" +msgstr "Propojení podpěr" + +#: src/libslic3r/PrintConfig.cpp:2397 +msgid "Support pillar diameter" +msgstr "Tloušťka podpěry" + +#: src/libslic3r/PrintConfig.cpp:2499 +msgid "Support points density" +msgstr "Hustota podpěrných bodů" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:888 +msgid "Support points density: " +msgstr "Hustota podpěrných bodů:" + +#: xs/src/libslic3r/PrintConfig.cpp:896 +msgid "Support silent mode" +msgstr "Podpora tichého režimu" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:78 src/slic3r/GUI/GUI_ObjectList.cpp:519 +#: src/slic3r/GUI/Plater.cpp:418 src/slic3r/GUI/Tab.cpp:3397 +#: src/slic3r/GUI/Tab.cpp:3398 src/libslic3r/PrintConfig.cpp:2363 +#: src/libslic3r/PrintConfig.cpp:2370 src/libslic3r/PrintConfig.cpp:2379 +#: src/libslic3r/PrintConfig.cpp:2388 src/libslic3r/PrintConfig.cpp:2398 +#: src/libslic3r/PrintConfig.cpp:2424 src/libslic3r/PrintConfig.cpp:2431 +#: src/libslic3r/PrintConfig.cpp:2442 src/libslic3r/PrintConfig.cpp:2452 +#: src/libslic3r/PrintConfig.cpp:2461 src/libslic3r/PrintConfig.cpp:2471 +#: src/libslic3r/PrintConfig.cpp:2480 src/libslic3r/PrintConfig.cpp:2490 +#: src/libslic3r/PrintConfig.cpp:2500 src/libslic3r/PrintConfig.cpp:2508 +msgid "Supports" +msgstr "Podpěry" + +#: src/slic3r/GUI/Plater.cpp:1018 +msgid "supports and pad" +msgstr "podpěry a podložka" + +#: src/libslic3r/PrintConfig.cpp:1043 +msgid "Supports remaining times" +msgstr "Podpora zbývajících tiskových časů" + +#: src/libslic3r/PrintConfig.cpp:1052 +msgid "Supports silent mode" +msgstr "Podporuje tichý režim" + +#: src/slic3r/GUI/Tab.cpp:1313 +msgid "Supports work better, if the following feature is enabled:\n- Detect bridging perimeters\n\nShall I adjust those settings for supports?" +msgstr "Podpěry fungují lépe, pokud je povolena následující funkce:\n- Zjistit přemosťovací perimetry\n\nMám tyto nastavení pro podpěry upravit?" + +#: src/slic3r/GUI/Preferences.cpp:76 +msgid "Suppress \" - default - \" presets" +msgstr "Potlačit “ - výchozí - “ přednastavení" + +#: src/slic3r/GUI/Preferences.cpp:78 +msgid "Suppress \" - default - \" presets in the Print / Filament / Printer selections once there are any other valid presets available." +msgstr "Potlačit “ - výchozí - “ přednastavení v nabídkách Tisk / Filament / Tiskárna, jakmile budou k dispozici další platné předvolby." + +#: src/slic3r/GUI/MainFrame.cpp:677 +msgid "SVG" +msgstr "SVG" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +msgid "Switch to 3D" +msgstr "Přepnout do 3D" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1242 +msgid "Switch to editing mode" +msgstr "Přepnout do režimu editace" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +msgid "Switch to Preview" +msgstr "Přepnout do náhledu" + +#: src/slic3r/GUI/wxExtensions.cpp:2412 +#, possible-c-format +msgid "Switch to the %s mode" +msgstr "Přepnout do režimu %s" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:327 +msgid "Switching to simple settings will discard changes done in the advanced mode!\n\nDo you want to proceed?" +msgstr "Přepnutím do jednoduchého nastavení ztratíte změny provedené v pokročilém režimu!\n\nOpravdu chcete pokračovat?" + +#: src/libslic3r/PrintConfig.cpp:1949 +msgid "Synchronize support layers with the object print layers. This is useful with multi-material printers, where the extruder switch is expensive." +msgstr "Synchronizování vrstev podpěr s vrstvami objektu. Toto je velmi užitečné u multi-materiálových tiskáren, kde je přepínání extruderů drahé." + +#: src/libslic3r/PrintConfig.cpp:1947 +msgid "Synchronize with object layers" +msgstr "Synchronizovat s vrstvami objektu" + +#: src/slic3r/GUI/MainFrame.cpp:557 +msgid "System &Info" +msgstr "&Informace o systému" + +#: lib/Slic3r/GUI/MainFrame.pm:355 +msgid "System Info" +msgstr "Informace o systému" + +#: src/slic3r/GUI/SysInfoDialog.cpp:44 +msgid "System Information" +msgstr "Systémové informace" + +#: src/slic3r/GUI/Preset.cpp:930 src/slic3r/GUI/Preset.cpp:970 +#: src/slic3r/GUI/Preset.cpp:1035 src/slic3r/GUI/Preset.cpp:1067 +#: src/slic3r/GUI/PresetBundle.cpp:1488 src/slic3r/GUI/PresetBundle.cpp:1553 +msgid "System presets" +msgstr "Systémová přednastavení" + +#: src/slic3r/GUI/GUI_App.cpp:662 +msgid "Take Configuration &Snapshot" +msgstr "Prové&st Zálohu Konfigurace" + +#: xs/src/slic3r/GUI/GUI.cpp:350 +msgid "Take Configuration Snapshot" +msgstr "Provést Zálohu Konfigurace" + +#: src/slic3r/GUI/GUI_App.cpp:697 +msgid "Taking configuration snapshot" +msgstr "Ukládání zálohy nastavení" + +#: src/slic3r/GUI/Tab.cpp:1478 +msgid "Temperature " +msgstr "Teplota " + +#: src/libslic3r/PrintConfig.cpp:1980 +msgid "Temperature" +msgstr "Teplota" + +#: src/libslic3r/PrintConfig.cpp:1727 +msgid "Temperature difference to be applied when an extruder is not active. Enables a full-height \"sacrificial\" skirt on which the nozzles are periodically wiped." +msgstr "Teplotní rozdíl, který se použije v případě, že extruder není aktivní. Umožňuje “obětní” obrysy v plné výšce objektu, na kterém jsou trysky periodicky očištěny." + +#: src/libslic3r/PrintConfig.cpp:1726 +msgid "Temperature variation" +msgstr "Kolísání teploty" + +#: src/slic3r/GUI/ConfigWizard.cpp:592 +msgid "Temperatures" +msgstr "Teploty" + +#: src/slic3r/GUI/Tab.cpp:1700 src/slic3r/GUI/Tab.cpp:1888 +msgid "Test" +msgstr "Test" + +#: src/slic3r/GUI/FirmwareDialog.cpp:530 +#, possible-c-format +msgid "The %s device could not have been found" +msgstr "Zařízení %s nebylo nalezeno" + +#: src/slic3r/GUI/FirmwareDialog.cpp:417 +#, possible-c-format +msgid "The %s device was not found.\nIf the device is connected, please press the Reset button next to the USB connector ..." +msgstr "Zařízení %s nebylo nalezeno. Pokud je zařízení připojeno, stiskněte tlačítko Reset vedle USB konektoru ..." + +#: src/libslic3r/PrintConfig.cpp:2462 +msgid "The default angle for connecting support sticks and junctions." +msgstr "Výchozí úhel pro připojení nosných tyčí a spojek." + +#: src/libslic3r/PrintConfig.cpp:457 +msgid "The extruder to use (unless more specific extruder settings are specified). This value overrides perimeter and infill extruders, but not the support extruders." +msgstr "Extruder, který chcete použít (pokud nejsou zvoleny specifičtější nastavení extruderu). Tato hodnota přepíše nastavení perimetrového a výplňového exrtuderu, ale ne nastavení extruderu pro podpěry." + +#: src/libslic3r/PrintConfig.cpp:955 +msgid "The extruder to use when printing infill." +msgstr "Extruder který se použije pro tisk výplní." + +#: src/libslic3r/PrintConfig.cpp:1341 +msgid "The extruder to use when printing perimeters and brim. First extruder is 1." +msgstr "Extruder, který se používá při tisku perimetrů a límce. První extruder je 1." + +#: src/libslic3r/PrintConfig.cpp:1669 +msgid "The extruder to use when printing solid infill." +msgstr "Extruder který bude použit při tisku plných výplní." + +#: src/libslic3r/PrintConfig.cpp:1879 +msgid "The extruder to use when printing support material interface (1+, 0 to use the current extruder to minimize tool changes). This affects raft too." +msgstr "Extruder, který se použije při tisku kontaktních vrstev podpěr (1+, 0 pro použití aktuálního extruderu, aby se minimalizovaly změny nástroje). To ovlivňuje i raft." + +#: src/libslic3r/PrintConfig.cpp:1853 +msgid "The extruder to use when printing support material, raft and skirt (1+, 0 to use the current extruder to minimize tool changes)." +msgstr "Extruder, který se používá při tisku podpěr, raftu a obrysu (1+, 0 pro použití aktuálního extruderu pro co nejméně změn nástroje)." + +#: src/libslic3r/PrintConfig.cpp:695 +msgid "The filament material type for use in custom G-codes." +msgstr "Typ filamentu pro použití ve vlastních G-code." + +#: src/libslic3r/PrintConfig.cpp:3105 +msgid "The file where the output will be written (if not specified, it will be based on the input file)." +msgstr "Soubor, do kterého bude zapisován výstup (pokud není zadán, bude vycházet ze vstupního souboru)." + +#: src/libslic3r/PrintConfig.cpp:351 +msgid "The first layer will be shrunk in the XY plane by the configured value to compensate for the 1st layer squish aka an Elephant Foot effect." +msgstr "První vrstva bude v rovině XY zmenšena nakonfigurovanou hodnotou, která kompenzuje rozplácnutí první vrstvy." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2726 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2813 src/slic3r/GUI/Tab.cpp:3279 +msgid "the following characters are not allowed:" +msgstr "následující znaky nejsou povolené:" + +#: src/slic3r/GUI/Tab.cpp:3283 +msgid "the following postfix are not allowed:" +msgstr "následující postfixy nejsou povolené:" + +#: src/libslic3r/PrintConfig.cpp:2453 +msgid "The height of the pillar base cone" +msgstr "Výška ukotvení podpěrného kužele" + +#: src/libslic3r/PrintConfig.cpp:2481 +msgid "The max distance of two pillars to get linked with each other. A zero value will prohibit pillar cascading." +msgstr "Maximální vzdálenost dvou podpůrných pilířů pro vzájemné provázání. Nulová hodnota zakáže provazování." + +#: src/libslic3r/PrintConfig.cpp:2472 +msgid "The max length of a bridge" +msgstr "Maximální délka přemostění." + +#: src/libslic3r/PrintConfig.cpp:2176 +msgid "The object will be grown/shrunk in the XY plane by the configured value (negative = inwards, positive = outwards). This might be useful for fine-tuning hole sizes." +msgstr "Objekt bude roztažen / smrštěn v rovině XY nastavenou hodnotou (negativní = směrem dovnitř, pozitivní = směrem ven). To může být užitečné pro jemné doladění otvorů." + +#: src/libslic3r/PrintConfig.cpp:1433 +msgid "The object will be raised by this number of layers, and support material will be generated under it." +msgstr "Objekt se zvýší tímto počtem vrstev a pod ním bude vytvořen podpůrný materiál." + +#: src/libslic3r/PrintConfig.cpp:2259 +msgid "The percentage of the bed area. \nIf the print area exceeds the specified value, \nthen a slow tilt will be used, otherwise - a fast tilt" +msgstr "Procentuálně vyjádřená zabraná tisková plocha.\nPokud tisk zabere více než je zadaná hodnota,\nbude použit pomalý náklon. V ostatních případech bude použit rychlý náklon." + +#: src/libslic3r/PrintConfig.cpp:1768 +msgid "The printer multiplexes filaments into a single hot end." +msgstr "Tiskárna přepíná několik filamentů v jednou hot endu." + +#: src/slic3r/GUI/BedShapeDialog.cpp:342 +msgid "The selected file contains no geometry." +msgstr "Vybraný soubor neobsahuje geometrii." + +#: src/slic3r/GUI/BedShapeDialog.cpp:346 +msgid "The selected file contains several disjoint areas. This is not supported." +msgstr "Vybraný soubor obsahuje několik nespojených ploch. Tato možnost není podporována." + +#: src/slic3r/GUI/Plater.cpp:2271 +msgid "The selected object can't be split because it contains more than one volume/material." +msgstr "Vybraný objekt nemůže být rozdělen, protože obsahuje více než jeden objem/materiál." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1737 src/slic3r/GUI/Plater.cpp:2279 +msgid "The selected object couldn't be split because it contains only one part." +msgstr "Vybraný objekt nemůže být rozdělen, protože obsahuje pouze jednu část." + +#: src/libslic3r/PrintConfig.cpp:2570 +msgid "The slope of the pad wall relative to the bed plane. 90 degrees means straight walls." +msgstr "Sklon bočnic vzhledem k podložce. 90 stupňů znamená kolmé stěny." + +#: src/libslic3r/PrintConfig.cpp:1544 +msgid "The speed for loading of a filament into extruder after retraction (it only applies to the extruder motor). If left to zero, the retraction speed is used." +msgstr "Rychlost vtlačení filamentu do extruderu po retrakci (vztahuje se pouze na motor extruderu). Pokud je ponecháno na nulu, použije se rychlost retrakce." + +#: src/libslic3r/PrintConfig.cpp:1536 +msgid "The speed for retractions (it only applies to the extruder motor)." +msgstr "Rychlost retrakce (toto nastavení platí pouze pro motor extruderu)." + +#: src/slic3r/GUI/Tab.cpp:1247 +#, no-c-format +msgid "The Spiral Vase mode requires:\n- one perimeter\n- no top solid layers\n- 0% fill density\n- no support material\n- no ensure_vertical_shell_thickness\n\nShall I adjust those settings in order to enable Spiral Vase?" +msgstr "Mód spirálové vázy vyžaduje:\n- jeden perimetr\n- žádné plné vrchní vrstvy\n- 0% hustota výplně\n- žádné podpěry\n- nezjišťování vertikální tloušťky pláště\n\nMám tyto nastavení upravit tak, aby bylo možné mód spirálové vázy zapnout?" + +#: src/libslic3r/Print.cpp:1187 +msgid "The Spiral Vase option can only be used when printing a single object." +msgstr "Možnost \"Spirálová váza\" lze použít pouze při tisku jednoho objektu." + +#: src/libslic3r/Print.cpp:1189 +msgid "The Spiral Vase option can only be used when printing single material objects." +msgstr "Možnost \"Spirálová váza\" lze použít pouze při tisku jedním materiálem." + +#: src/slic3r/GUI/Tab.cpp:2900 +msgid "The supplied name is empty. It can't be saved." +msgstr "Název je prázdný. Nelze uložit." + +#: src/slic3r/GUI/Tab.cpp:3287 +msgid "The supplied name is not available." +msgstr "Zadaný název není dostupný." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2725 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2812 src/slic3r/GUI/Tab.cpp:3278 +#: src/slic3r/GUI/Tab.cpp:3282 +msgid "The supplied name is not valid;" +msgstr "Zadaný název není platný;" + +#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1785 +msgid "The supplied name is not valid; the following characters are not allowed:" +msgstr "Zadaný název je neplatný; následující znaky nejsou povoleny:" + +#: src/libslic3r/Print.cpp:1268 +msgid "The supplied settings will cause an empty print." +msgstr "Zadané nastavení způsobí prázdný tisk." + +#: src/libslic3r/PrintConfig.cpp:2524 +msgid "The thickness of the pad and its optional cavity walls." +msgstr "Tloušťka podložky a její volitelné duté stěny." + +#: src/libslic3r/PrintConfig.cpp:1825 +msgid "The vertical distance between object and support material interface. Setting this to 0 will also prevent Slic3r from using bridge flow and speed for the first object layer." +msgstr "Vertikální vzdálenost mezi objektem a podpěrami. Nastavením tohoto parametru na hodnotu 0 se také zabrání tomu, aby Slic3r použil parametry průtoku a rychlosti pro mosty při tisku první vrstvy objektu." + +#: src/slic3r/GUI/Tab.cpp:2429 +msgid "The Wipe option is not available when using the Firmware Retraction mode.\n\nShall I disable it in order to enable Firmware Retraction?" +msgstr "Možnost Očistit není k dispozici při použití režimu retrakcí z firmwaru.\n\nMám ji deaktivovat, aby bylo možné povolit retrakce z firmwaru?" + +#: src/slic3r/GUI/Tab.cpp:1277 +msgid "The Wipe Tower currently supports the non-soluble supports only\nif they are printed with the current extruder without triggering a tool change.\n(both support_material_extruder and support_material_interface_extruder need to be set to 0).\n\nShall I adjust those settings in order to enable the Wipe Tower?" +msgstr "Čistící věž v současné době podporuje pouze nerozpustné podpěry\npokud jsou vytištěny s aktuálním extrudérem bez spuštění výměny nástroje.\n(jak extruder pro tisk podpěr tak extruder pro tisk kontaktních podpěr je třeba nastavit na 0).\n\nMám tyto nastavení upravit tak, aby bylo možné zapnout Čistící věž?" + +#: src/libslic3r/Print.cpp:1306 +msgid "The Wipe Tower currently supports the non-soluble supports only if they are printed with the current extruder without triggering a tool change. (both support_material_extruder and support_material_interface_extruder need to be set to 0)." +msgstr "Čistící věž v současné době podporuje pouze nerozpustné podpěry\npokud jsou vytištěny s aktuálním extrudérem bez spuštění výměny nástroje.\n(jak extruder pro tisk podpor tak extruder pro tisk kontaktních podpěr je třeba nastavit na 0)." + +#: xs/src/libslic3r/Print.cpp:617 +msgid "The Wipe Tower is currently only supported for the Marlin and RepRap/Sprinter G-code flavors." +msgstr "Čistící věž je v současné době možná pouze pro G-cody určené pro Marlin a RepRap/Sprinter." + +#: src/libslic3r/Print.cpp:1200 +msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter and Repetier G-code flavors." +msgstr "Čistící věž je v současné době možná pouze pro G-cody určené pro Marlin, RepRap/Sprinter a Repetier." + +#: src/libslic3r/Print.cpp:1202 +msgid "The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1)." +msgstr "Čistící věž je v současné době možná pouze v případě relativního adresování exruderu (use_relative_e_distances=1)." + +#: src/libslic3r/Print.cpp:1225 +msgid "The Wipe Tower is only supported for multiple objects if they are printed over an equal number of raft layers" +msgstr "Čistící věž pro více objektů je možná pouze v případě, že objekty mají stejný počet raft vrstev" + +#: src/libslic3r/Print.cpp:1227 +msgid "The Wipe Tower is only supported for multiple objects if they are printed with the same support_material_contact_distance" +msgstr "Čistící věž pro více objektů je možná pouze v případě, že objekty mají shodný parametr support_material_contact_distance." + +#: src/libslic3r/Print.cpp:1229 +msgid "The Wipe Tower is only supported for multiple objects if they are sliced equally." +msgstr "Čistící věž je při více objektech možná pouze v případě, že objekty jsou slicovány stejně." + +#: src/libslic3r/Print.cpp:1223 +msgid "The Wipe Tower is only supported for multiple objects if they have equal layer heigths" +msgstr "Čistící věž je při více objektech možná pouze v případě, že objekty mají všechny vrstvy stejné výšky." + +#: src/libslic3r/Print.cpp:1258 +msgid "The Wipe tower is only supported if all objects have the same layer height profile" +msgstr "Čistící věž je podporována pouze v případě, že všechny objekty mají stejný výškový profil" + +#: src/slic3r/GUI/UpdateDialogs.cpp:127 +#, possible-c-format +msgid "This %s version: %s" +msgstr "Tento %s verze: %s" + +#: src/libslic3r/PrintConfig.cpp:140 +msgid "This code is inserted between objects when using sequential printing. By default extruder and bed temperature are reset using non-wait command; however if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not add temperature commands. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." +msgstr "Tento kód je vložen mezi objekty, pokud je použit sekvenční tisk. Ve výchozím nastavení je resetován extruder a tisková podložka pomocí non-wait (nečekacím) příkazem; nicméně pokud jsou příkazy M104, M109, 140 nebo M190 detekovány v tomto vlastním kódu, Slic3r nebude přidávat teplotní příkazy. Můžete přidávat zástupné proměnné pro veškeré nastavení Slic3ru, takže můžete vložit příkaz “M109 S[first_layer_temperature]” kamkoliv chcete." + +#: src/libslic3r/PrintConfig.cpp:1032 +msgid "This custom code is inserted at every layer change, right after the Z move and before the extruder moves to the first layer point. Note that you can use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." +msgstr "Tento vlastní kód je vložen při každé změně vrstvy, hned po pohybu Z a předtím, než se extruder přesune na první bod vrstvy. Můžete přidávat zástupné proměnné pro veškeré nastavení Slic3ru, stejně tak jako [layer_num] a [layer_z]." + +#: src/libslic3r/PrintConfig.cpp:129 +msgid "This custom code is inserted at every layer change, right before the Z move. Note that you can use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." +msgstr "Tento vlastní kód je vložen pro každou změnu vrstvy, předtím než se pohne Z. Můžete přidávat zástupné proměnné pro veškeré nastavení Slic3ru stejně tak jako [layer_num] a [layer_z]." + +#: src/libslic3r/PrintConfig.cpp:2007 +msgid "This custom code is inserted right before every extruder change. Note that you can use placeholder variables for all Slic3r settings as well as [previous_extruder] and [next_extruder]." +msgstr "Tento vlastní kód je vložen těsně před každou změnou extruderu. Můžete použít zástupné proměnné pro všechna nastavení Slic3ru, stejně jako [previous_extruder] a [next_extruder]." + +#: src/libslic3r/PrintConfig.cpp:370 +msgid "This end procedure is inserted at the end of the output file, before the printer end gcode. Note that you can use placeholder variables for all Slic3r settings. If you have multiple extruders, the gcode is processed in extruder order." +msgstr "Tato ukončovací procedura je vložena na konec výstupního souboru, před konečným G-code tiskárny. Můžete přidávat zástupné proměnné pro veškeré nastavení Slic3ru. Pokud máte tiskárnu s více extrudery, G-code je zpracován v pořadí extruderů." + +#: src/libslic3r/PrintConfig.cpp:360 +msgid "This end procedure is inserted at the end of the output file. Note that you can use placeholder variables for all Slic3r settings." +msgstr "Tato ukončovací procedura je vložena na konec výstupního souboru. Můžete přidávat zástupné proměnné pro veškeré nastavení Slic3ru." + +#: src/libslic3r/PrintConfig.cpp:1193 src/libslic3r/PrintConfig.cpp:1204 +msgid "This experimental setting is used to limit the speed of change in extrusion rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." +msgstr "Toto experimentální nastavení se používá k omezení rychlosti změny objemového průtoku. Hodnota 1,8mm³/s² zajišťuje, že změna objemového průtoku z 1,8 mm³/s (šířka extruze 0,45 mm, výška extruze 0,2 mm, rychlost posuvu 20 mm/s) na 5,4 mm³/s (rychlost posuvu 60 mm/s) potrvá nejméně 2 sekundy." + +#: src/libslic3r/PrintConfig.cpp:1183 +msgid "This experimental setting is used to set the maximum volumetric speed your extruder supports." +msgstr "Toto experimentální nastavení slouží k nastavení maximální objemové rychlosti, kterou váš extruder podporuje." + +#: src/libslic3r/PrintConfig.cpp:2061 +msgid "This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is only supported in recent Marlin." +msgstr "Toto experimentální nastavení používá příkazy G10 a G11, aby si firmware poradil s retrakcí. Toto je podporováno pouze v posledních verzích firmwaru Marlin." + +#: src/libslic3r/PrintConfig.cpp:2075 +msgid "This experimental setting uses outputs the E values in cubic millimeters instead of linear millimeters. If your firmware doesn't already know filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] T0' in your start G-code in order to turn volumetric mode on and use the filament diameter associated to the filament selected in Slic3r. This is only supported in recent Marlin." +msgstr "Toto experimentální nastavení používá výstupní hodnoty E v kubických milimetrech místo lineárních milimetrů. Pokud firmware dosud nezná průměr (průměry) filamentu, můžete v počátečním G-code zadat příkazy jako “M200 D [filament_diameter_0] T0”, pro se zapnutí volumetrického režimu a použití průměru filamentu přidruženého k vybranému filamentu ve Slic3ru. Toto je podporováno pouze v posledních verzích firmwaru Marlin." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2848 +msgid "This extruder will be set for selected items" +msgstr "Tento extruder bude nastaven pro vybrané položky" + +#: src/libslic3r/PrintConfig.cpp:188 +msgid "This factor affects the amount of plastic for bridging. You can decrease it slightly to pull the extrudates and prevent sagging, although default settings are usually good and you should experiment with cooling (use a fan) before tweaking this." +msgstr "Tato hodnota určuje množství vytlačeného plastu při vytváření mostů. Mírným snížením této hodnoty můžete předejít pronášení i když, přednastavené hodnoty jsou většinou dobré a je lepší experimentovat s chlazením (využitím ventilátoru), než s touto hodnotou." + +#: src/libslic3r/PrintConfig.cpp:514 +msgid "This factor changes the amount of flow proportionally. You may need to tweak this setting to get nice surface finish and correct single wall widths. Usual values are between 0.9 and 1.1. If you think you need to change this more, check filament diameter and your firmware E steps." +msgstr "Tento faktor mění poměrné množství průtoku. Možná bude třeba toto nastavení vyladit, pro dosažení hezkého povrchu a správné šířky jednotlivých stěn. Obvyklé hodnoty jsou mezi 0,9 a 1,1. Pokud si myslíte, že hodnotu potřebujete změnit více, zkontrolujte průměr filamentu a E kroky ve firmwaru." + +#: src/libslic3r/PrintConfig.cpp:178 +msgid "This fan speed is enforced during all bridges and overhangs." +msgstr "Nastavená rychlost ventilátoru je využita vždy při vytváření mostů a přesahů." + +#: src/libslic3r/PrintConfig.cpp:944 +msgid "This feature allows to combine infill and speed up your print by extruding thicker infill layers while preserving thin perimeters, thus accuracy." +msgstr "Tato funkce umožňuje kombinovat výplň a urychlit tisk pomocí extruzí silnějších výplňových vrstev při zachování tenkých obvodů, a tím i přesnosti." + +#: src/libslic3r/PrintConfig.cpp:1677 +msgid "This feature allows to force a solid layer every given number of layers. Zero to disable. You can set this to any value (for example 9999); Slic3r will automatically choose the maximum possible number of layers to combine according to nozzle diameter and layer height." +msgstr "Tato funkce umožňuje vynucení plné vrstvy za každý daný počet vrstev. Pro vypnutí nastavte nulu. Můžete nastavit libovolnou hodnotu (například 9999); Slic3r automaticky zvolí maximální počet vrstev, které se budou kombinovat podle průměru trysky a výšky vrstvy." + +#: src/libslic3r/PrintConfig.cpp:1718 +msgid "This feature will raise Z gradually while printing a single-walled object in order to remove any visible seam. This option requires a single perimeter, no infill, no top solid layers and no support material. You can still set any number of bottom solid layers as well as skirt/brim loops. It won't work when printing more than an object." +msgstr "Tato funkce zvýší postupně Z při tisku jednovrstvého objektu, aby se odstranil jakýkoli viditelný šev. Tato volba vyžaduje jediný obvod, žádnou výplň, žádné vrchní plné vrstvy a žádný podpůrný materiál. Můžete stále nastavit libovolný počet spodních plných vrstev, stejně jako obrysové smyčky / límec. Při tisku více než jednoho objektu nebude toto nastavení fungovat." + +#: src/slic3r/GUI/Plater.cpp:1712 +msgid "This file cannot be loaded in a simple mode. Do you want to switch to an advanced mode?\n" +msgstr "Tento soubor nelze načíst v jednoduchém režimu. Chcete přepnout do pokročilého režimu?\n" + +#: src/slic3r/GUI/Plater.cpp:1650 +msgid "This file cannot be loaded in simple mode. Do you want to switch to expert mode?\n" +msgstr "Tento soubor nelze načíst v jednoduchém režimu. Chcete přepnout do expert režimu?\n" + +#: src/slic3r/GUI/Plater.cpp:1658 +msgid "This file contains several objects positioned at multiple heights. Instead of considering them as multiple objects, should I consider\nthis file as a single object having multiple parts?\n" +msgstr "Tento soubor obsahuje několik objektů umístěných v různých výškách. Mají být vloženy jako jeden objekt obsahující více částí,\nnamísto vložení několika objektů?\n" + +#: src/slic3r/GUI/FirmwareDialog.cpp:313 +#, possible-c-format +msgid "This firmware hex file does not match the printer model.\nThe hex file is intended for: %s\nPrinter reported: %s\n\nDo you want to continue and flash this hex file anyway?\nPlease only continue if you are sure this is the right thing to do." +msgstr "Tento hex soubor s firmware neodpovídá modelu tiskárny.\nSoubor hex je určen pro: %s\nTiskárna oznámila: %s\n\nChcete i přesto pokračovat a nahrát do tiskárny hex soubor?\nPokračujte prosím, pouze pokud jste si jisti, že je to správný soubor." + +#: src/libslic3r/PrintConfig.cpp:278 +msgid "This flag enables the automatic cooling logic that adjusts print speed and fan speed according to layer printing time." +msgstr "Zapne výpočet automatického chlazení, který upravuje rychlost tisku a ventilátoru v závislosti na délce tisku jedné vrstvy." + +#: src/slic3r/GUI/Plater.cpp:448 +msgid "This flag enables the brim that will be printed around each object on the first layer." +msgstr "Tato vlajka zapíná límec, který bude vytištěn kolem každého objektu při první vrstvě." + +#: src/libslic3r/PrintConfig.cpp:1468 +msgid "This flag enforces a retraction whenever a Z move is done." +msgstr "Tato možnost vyvolá retrakci, kdykoli je proveden pohyb Z." + +#: src/libslic3r/PrintConfig.cpp:2093 +msgid "This flag will move the nozzle while retracting to minimize the possible blob on leaky extruders." +msgstr "Toto nastavení přemístí trysku při retrakci, aby se minimalizovalo možné vytékání materiálu." + +#: src/libslic3r/PrintConfig.cpp:2501 +msgid "This is a relative measure of support points density." +msgstr "Relativní míra hustoty podpěrných bodů." + +#: src/libslic3r/PrintConfig.cpp:491 src/libslic3r/PrintConfig.cpp:551 +msgid "This is only used in the Slic3r interface as a visual help." +msgstr "Toto je v Slic3ru jako názorná pomoc." + +#: src/libslic3r/PrintConfig.cpp:300 +msgid "This is the acceleration your printer will be reset to after the role-specific acceleration values are used (perimeter/infill). Set zero to prevent resetting acceleration at all." +msgstr "Toto je hodnota akcelerace na kterou se tiskárna vrátí po specifických úpravách akcelerace například při tisku (perimetru/výplně). Nastavením na nulu zabráníte návratu rychlostí zcela." + +#: src/libslic3r/PrintConfig.cpp:158 +msgid "This is the acceleration your printer will use for bridges. Set zero to disable acceleration control for bridges." +msgstr "Nastavení akcelerace tiskárny při vytváření mostů. Nastavením na nulu vypnete ovládání akcelerace pro mosty." + +#: src/libslic3r/PrintConfig.cpp:813 +msgid "This is the acceleration your printer will use for first layer. Set zero to disable acceleration control for first layer." +msgstr "Toto je zrychlení, které vaše tiskárna použije pro první vrstvu. Nastavte nulu pro vypnutí řízení zrychlení pro první vrstvu." + +#: src/libslic3r/PrintConfig.cpp:934 +msgid "This is the acceleration your printer will use for infill. Set zero to disable acceleration control for infill." +msgstr "Toto je zrychlení, které vaše tiskárna použije pro výplň. Nastavte nulu, chcete-li vypnout řízení zrychlení pro výplň." + +#: src/libslic3r/PrintConfig.cpp:1331 +msgid "This is the acceleration your printer will use for perimeters. A high value like 9000 usually gives good results if your hardware is up to the job. Set zero to disable acceleration control for perimeters." +msgstr "Jedná se o akceleraci, kterou vaše tiskárna použije pro perimetry. Vysoká hodnota, jako je 9000, obvykle dává dobré výsledky, pokud je váš hardware v pořádku. Nastavte nulu pro vypnutí řízení zrychlení pro perimetry." + +#: src/libslic3r/PrintConfig.cpp:1262 +msgid "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" +msgstr "Průměr trysky extruderu (například: 0.5, 0.35 atd.)" + +#: src/libslic3r/PrintConfig.cpp:1162 +#, no-c-format +msgid "This is the highest printable layer height for this extruder, used to cap the variable layer height and support layer height. Maximum recommended layer height is 75% of the extrusion width to achieve reasonable inter-layer adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." +msgstr "Toto je největší možná výška vrstvy pro tento extruder, který se používá k zakrytí výšky proměnné vrstvy a výšky podpůrné vrstvy. Maximální doporučená výška vrstvy činí 75% šířky vytlačování, aby se dosáhlo přiměřené přilnavosti mezi vrstvami. Pokud je nastavena hodnota 0, je výška vrstvy omezena na 75% průměru trysky." + +#: src/libslic3r/PrintConfig.cpp:1225 +msgid "This is the lowest printable layer height for this extruder and limits the resolution for variable layer height. Typical values are between 0.05 mm and 0.1 mm." +msgstr "Nejmenší tisknutelná výška vrstvy pro tento extruder. Omezuje rozlišení pro výšku proměnné vrstvy. Typické hodnoty jsou mezi 0,05 mm a 0,1 mm." + +#: src/libslic3r/PrintConfig.cpp:2114 +msgid "This matrix describes volumes (in cubic milimetres) required to purge the new filament on the wipe tower for any given pair of tools. " +msgstr "Tato matice popisuje objemy (v kubických milimetrech) nutné k vyčištění nového filamentu na čistící věži pro danou dvojici nástrojů. " + +#: src/libslic3r/PrintConfig.cpp:1372 +msgid "This option sets the number of perimeters to generate for each layer. Note that Slic3r may increase this number automatically when it detects sloping surfaces which benefit from a higher number of perimeters if the Extra Perimeters option is enabled." +msgstr "Tato volba nastavuje počet perimetrů, které je třeba vygenerovat pro každou vrstvu. Slic3r může toto číslo automaticky zvýšit, pokud detekuje šikmé plochy, které se tisknou lépe s vyšším počtem obvodů, pokud je zapnuta možnost Extra perimetry." + +#: src/libslic3r/PrintConfig.cpp:1287 +msgid "This option will drop the temperature of the inactive extruders to prevent oozing. It will enable a tall skirt automatically and move extruders outside such skirt when changing temperatures." +msgstr "Tato volba sníží teplotu neaktivních extruderů, aby u nich nedošlo k vytékání." + +#: src/libslic3r/PrintConfig.cpp:980 +msgid "This option will limit infill to the areas actually needed for supporting ceilings (it will act as internal support material). If enabled, slows down the G-code generation due to the multiple checks involved." +msgstr "Tato volba omezuje výplň na plochy skutečně potřebné pro podpěru stropů (bude se chovat jako vnitřní podpěrný materiál). Je-li tato volba zapnuta, zpomaluje generování G-code kvůli několikanásobným kontrolám." + +#: src/libslic3r/PrintConfig.cpp:973 +msgid "This option will switch the print order of perimeters and infill, making the latter first." +msgstr "Tato volba obrátí pořadí tisku obvodů a výplní." + +#: src/libslic3r/PrintConfig.cpp:427 +msgid "This separate setting will affect the speed of external perimeters (the visible ones). If expressed as percentage (for example: 80%) it will be calculated on the perimeters speed setting above. Set to zero for auto." +msgstr "Toto oddělené nastavení ovlivní rychlost tisku vnějších perimetrů (těch viditelných). Pokud je hodnota vyjádřena procenty (například: 80%), bude rychlost vypočítána z hodnoty rychlosti tisku perimetrů, nastavené výše. Nastavte nulu pro automatický výpočet." + +#: src/libslic3r/PrintConfig.cpp:1648 +msgid "This separate setting will affect the speed of perimeters having radius <= 6.5mm (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the perimeters speed setting above. Set to zero for auto." +msgstr "Toto oddělené nastavení ovlivní rychlost perimetrů o poloměru <= 6,5 mm (obvykle díry). Pokud je vyjádřeno jako procentní podíl (například: 80%), vypočte se z výše uvedeného nastavení rychlosti perimetrů. Pro automatické nastavení zadejte nulu." + +#: src/libslic3r/PrintConfig.cpp:989 +msgid "This setting applies an additional overlap between infill and perimeters for better bonding. Theoretically this shouldn't be needed, but backlash might cause gaps. If expressed as percentage (example: 15%) it is calculated over perimeter extrusion width." +msgstr "Toto nastavení uplatňuje dodatečné překrytí mezi výplní a obvodem pro lepší spojení. Teoreticky by to nemělo být potřeba, ale reakce by mohla způsobit mezery. Pokud je vyjádřeno procenty (například: 15%), vypočítá se z šířky extruze perimetrů." + +#: src/libslic3r/PrintConfig.cpp:57 +msgid "This setting controls the height (and thus the total number) of the slices/layers. Thinner layers give better accuracy but take more time to print." +msgstr "Toto nastavení řídí výšku (a tedy výsledný počet) řezů/vrstev. Tenčí vrstva poskytuje lepší přesnost, ale tiskne se déle." + +#: src/libslic3r/PrintConfig.cpp:1153 +msgid "This setting represents the maximum speed of your fan." +msgstr "Toto nastavení vyjadřuje maximální rychlost ventilátoru." + +#: src/libslic3r/PrintConfig.cpp:1216 +msgid "This setting represents the minimum PWM your fan needs to work." +msgstr "Toto nastavení představuje minimální hodnotu PWM, kterou ventilátor potřebuje, aby pracoval." + +#: src/slic3r/GUI/UpdateDialogs.cpp:123 +#, possible-c-format +msgid "This Slic3r PE version: %s" +msgstr "Tato verze Slic3r PE: %s" + +#: src/libslic3r/PrintConfig.cpp:1752 +msgid "This start procedure is inserted at the beginning, after any printer start gcode. This is used to override settings for a specific filament. If Slic3r detects M104, M109, M140 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want. If you have multiple extruders, the gcode is processed in extruder order." +msgstr "Tento postup spuštění je vložen na začátku, po každém spuštění G-code tiskárny. Toto slouží k přepsání nastavení pro konkrétní filament. Pokud Slic3r detekuje M104, M109, M140 nebo M190 ve vašich vlastních kódech, takové příkazy nebudou automaticky předkládány, takže máte možnost přizpůsobit pořadí příkazů k ohřevu a další vlastní akce. Pro všechny nastavení Slic3ru můžete použít zástupné proměnné, takže můžete zadat příkaz “M109 S [first_layer_temperature]” kdekoli chcete. Pokud máte více extruderů, G-code se zpracovává v pořadí extruderů." + +#: src/libslic3r/PrintConfig.cpp:1737 +msgid "This start procedure is inserted at the beginning, after bed has reached the target temperature and extruder just started heating, and before extruder has finished heating. If Slic3r detects M104 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." +msgstr "Tento spouštěcí postup je vložen na začátku, poté, co vyhřívaná tisková podložka dosáhla cílové teploty a extruder se právě začal ohřívat a předtím, než dosáhl cílové teploty extruder. Pokud Slic3r detekuje M104 nebo M190 ve vašich vlastních kódech, takové příkazy nebudou automaticky předkládány, takže máte možnost upravit pořadí příkazů pro vytápění a další vlastní akce. Pro všechny nastavení Slic3ru můžete použít zástupné proměnné, takže můžete zadat příkaz “M109 S [first_layer_temperature]” kdekoli chcete." + +#: src/libslic3r/PrintConfig.cpp:663 +msgid "This string is edited by RammingDialog and contains ramming specific parameters " +msgstr "This string is edited by RammingDialog and contains ramming specific parameters " + +#: src/libslic3r/PrintConfig.cpp:2185 +msgid "This value will be added (or subtracted) from all the Z coordinates in the output G-code. It is used to compensate for bad Z endstop position: for example, if your endstop zero actually leaves the nozzle 0.3mm far from the print bed, set this to -0.3 (or fix your endstop)." +msgstr "Tato hodnota bude přidána (nebo odečtena) ze všech souřadnic Z ve výstupním G-code. Používá se ke kompenzování špatné pozice endstopu Z. Například pokud endstop 0 skutečně ponechá trysku 0,3 mm daleko od tiskové podložky, nastavte hodnotu -0,3 (nebo dolaďte svůj koncový doraz)." + +#: src/libslic3r/PrintConfig.cpp:2107 +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 "Tento vektor ukládá potřebné objemy pro změnu z/na každý extruder používaný na čistící věži. Tyto hodnoty jsou použity pro zjednodušení vytvoření celkových objemů čištění níže. " + +#: src/slic3r/GUI/UpdateDialogs.cpp:118 +#, possible-c-format +msgid "This version of %s is not compatible with currently installed configuration bundles.\nThis probably happened as a result of running an older %s after using a newer one.\n\nYou may either exit %s and try again with a newer version, or you may re-run the initial configuration. Doing so will create a backup snapshot of the existing configuration before installing files compatible with this %s.\n" +msgstr "Tato verze %s není kompatibilní se současně nainstalovanými balíčky nastavení.\nTato situace nejspíše nastala spuštěním starší verze %s po používání novější verze.\n\nMůžete buď ukončit %s a zkusit to znovu s novou verzí, nebo můžete znovu spustit výchozí konfiguraci. Před instalací kompatibilního nastavení s touto verzí %s dojde k vytvoření zálohy současné konfigurace.\n" + +#: src/slic3r/GUI/UpdateDialogs.cpp:114 +msgid "This version of Slic3r PE is not compatible with currently installed configuration bundles.\nThis probably happened as a result of running an older Slic3r PE after using a newer one.\n\nYou may either exit Slic3r and try again with a newer version, or you may re-run the initial configuration. Doing so will create a backup snapshot of the existing configuration before installing files compatible with this Slic3r.\n" +msgstr "Tato verze Slic3r PE není kompatibilní se současně nainstalovanými balíčky nastavení.\nTato situace nejspíše nastala spuštěním starší verze Slic3r PE po používání novější verze.\n\nMůžete buď ukončit Slic3r a zkusit to znovu s novou verzí, nebo můžete znovu spustit výchozí konfiguraci. Před instalací kompatibilního nastavení s touto verzí Slic3ru dojde k vytvoření zálohy současné konfigurace.\n" + +#: src/libslic3r/PrintConfig.cpp:2282 +msgid "This will apply a gamm correction to the rasterized 2D polygons." +msgstr "Aplikuje korekci gamma na rastrové 2D polygony." + +#: src/libslic3r/PrintConfig.cpp:2284 +msgid "This will apply a gamma correction to the rasterized 2D polygons. A gamma value of zero means thresholding with the threshold in the middle. This behaviour eliminates antialiasing without losing holes in polygons." +msgstr "Aplikuje gamma korekci na rastrové 2D polygony. Hodnota nula znamená nastavení prahové hodnoty doprostřed. Toto chování eliminuje antialiasing bez ztráty otvorů v polygonech." + +#: src/libslic3r/PrintConfig.cpp:1994 +msgid "Threads" +msgstr "Vlákna" + +#: src/libslic3r/PrintConfig.cpp:1995 +msgid "Threads are used to parallelize long-running tasks. Optimal threads number is slightly above the number of available cores/processors." +msgstr "Vlákna jsou používána pro paralelizaci časově náročnějších úloh. Optimální počet vláken je mírně nad počtem dostupných jader/procesorů." + +#: src/slic3r/GUI/Tab.cpp:2052 +msgid "Tilt" +msgstr "Náklon" + +#: src/slic3r/GUI/Tab.cpp:2053 +msgid "Tilt time" +msgstr "Doba náklonu" + +#: src/slic3r/GUI/RammingChart.cpp:76 +msgid "Time" +msgstr "Čas" + +#: src/libslic3r/PrintConfig.cpp:655 +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 "Doba, po kterou firmware tiskárny (nebo jednotka Multi Material 2.0) zavádí nový filament během jeho výměny (při provádění kódu T). Tento čas je přidán k celkové době tisku pomocí G-code odhadovače tiskového času." + +#: src/libslic3r/PrintConfig.cpp:670 +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 "Doba, po kterou firmware tiskárny (nebo jednotka Multi Material 2.0) vysouvá filament během jeho výměny (při provádění kódu T). Tento čas je přidán k celkové době tisku pomocí G-code odhadovače tiskového času." + +#: src/libslic3r/PrintConfig.cpp:2242 +msgid "Time of the fast tilt" +msgstr "Doba trvání rychlého náklonu" + +#: src/libslic3r/PrintConfig.cpp:2251 +msgid "Time of the slow tilt" +msgstr "Doba trvání pomalého náklonu" + +#: src/libslic3r/PrintConfig.cpp:609 +msgid "Time to wait after the filament is unloaded. May help to get reliable toolchanges with flexible materials that may need more time to shrink to original dimensions. " +msgstr "Doba čekání po vysunutí filamentu. Může pomoci ke spolehlivé změně extruderu s flexibilními materiály, které potřebují více času ke smrštění na původní rozměry. " + +#: src/slic3r/GUI/Tab.cpp:916 +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í." + +#: src/slic3r/GUI/UpdateDialogs.cpp:37 +msgid "To download, follow the link below." +msgstr "Pro stažení, klikněte na odkaz níže." + +#: src/slic3r/GUI/Plater.cpp:2966 +msgid "To objects" +msgstr "Objektům" + +#: src/slic3r/GUI/Plater.cpp:2968 +msgid "To parts" +msgstr "Na části" + +#: src/libslic3r/Zipper.cpp:37 +msgid "too many files" +msgstr "příliš mnoho souborů" + +#: src/slic3r/GUI/GUI_Preview.cpp:217 src/slic3r/GUI/GUI_Preview.cpp:315 +#: src/slic3r/GUI/GUI_Preview.cpp:481 src/slic3r/GUI/GUI_Preview.cpp:537 +#: src/slic3r/GUI/GUI_Preview.cpp:713 src/libslic3r/GCode/PreviewData.cpp:404 +msgid "Tool" +msgstr "Nástroj" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:240 +msgid "Tool #" +msgstr "Nástroj #" + +#: src/slic3r/GUI/Tab.cpp:1973 src/libslic3r/PrintConfig.cpp:2006 +msgid "Tool change G-code" +msgstr "G-code pro výměnu nástroje" + +#: src/slic3r/GUI/Tab.cpp:1530 +msgid "Toolchange parameters with single extruder MM printers" +msgstr "Parametry při výměně (Multi Material s jedním extruderem)" + +#. TRN To be shown in the main menu View->Top +#: src/slic3r/GUI/MainFrame.cpp:522 +msgid "Top" +msgstr "Shora" + +#: src/libslic3r/PrintConfig.cpp:388 +msgid "Top fill pattern" +msgstr "Vzor výplně horní vrstvy" + +#: src/slic3r/GUI/PresetHints.cpp:189 +msgid "top solid infill" +msgstr "vrchní plná výplň" + +#: src/slic3r/GUI/GUI_Preview.cpp:232 src/libslic3r/PrintConfig.cpp:2017 +#: src/libslic3r/PrintConfig.cpp:2028 src/libslic3r/GCode/PreviewData.cpp:168 +msgid "Top solid infill" +msgstr "Vrchní plné výplně" + +#: src/libslic3r/PrintConfig.cpp:2046 +msgid "Top solid layers" +msgstr "Vrchních plných vrstev" + +#: src/slic3r/GUI/MainFrame.cpp:522 +msgid "Top View" +msgstr "Pohled svrchu" + +#: xs/src/libslic3r/PrintConfig.cpp:283 +msgid "Top/bottom fill pattern" +msgstr "Vzor výplně horní/spodní vrstvy" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:247 +msgid "Total purging volume is calculated by summing two values below, depending on which tools are loaded/unloaded." +msgstr "Celkový objem čištění je spočítán jako součet dvou hodnot níže v závislosti na tom, které extrudery jsou zavedeny/vyjmuty." + +#: src/slic3r/GUI/WipeTowerDialog.cpp:84 +msgid "Total rammed volume" +msgstr "Celkový objem rapidní extruze" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:82 +msgid "Total ramming time" +msgstr "Celkový čas rapidní extruze" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:252 +msgid "Translate" +msgstr "Posunout" + +#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/PrintConfig.cpp:2051 +msgid "Travel" +msgstr "Rychloposun" + +#: src/libslic3r/PrintConfig.cpp:798 +msgid "Triangles" +msgstr "Trojúhelníky" + +#: src/libslic3r/PrintConfig.cpp:3059 +msgid "Try to repair any non-manifold meshes (this option is implicitly added whenever we need to slice the model to perform the requested action)." +msgstr "Pokuste se opravit nemanifoldní meshe (tato možnost je implicitně přidána vždy, když potřebujeme řezat model)." + +#: src/libslic3r/PrintConfig.cpp:1397 +msgid "Type of the printer." +msgstr "Typ tiskárny." + +#: src/libslic3r/Zipper.cpp:35 +msgid "undefined error" +msgstr "nedefinovaná chyba" + +#: src/libslic3r/Zipper.cpp:59 +msgid "unexpected decompressed size" +msgstr "neočekávaná dekomprimovaná velikost" + +#: lib/Slic3r/GUI/Plater.pm:2264 lib/Slic3r/GUI/Plater.pm:2280 +msgid "Uniformly…" +msgstr "Souměrně…" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:27 +msgid "Unknown" +msgstr "Neznámý" + +#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:154 +msgid "Unknown error occured" +msgstr "Došlo k neznámé chybě" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:234 +msgid "unloaded" +msgstr "vyjmuto" + +#: src/libslic3r/PrintConfig.cpp:591 +msgid "Unloading speed" +msgstr "Rychlost vysunutí" + +#: src/libslic3r/PrintConfig.cpp:600 +msgid "Unloading speed at the start" +msgstr "Počáteční rychlost vysouvání filamentu " + +#: src/slic3r/GUI/Tab.cpp:3105 +msgid "UNLOCKED LOCK icon indicates that some settings were changed and are not equal to the system values for the current option group.\nClick to reset all settings for current option group to the system values." +msgstr "Ikona ODEMKNUTÉHO ZÁMKU indikuje, že některá nastavení byla změněna a nejsou shodná se systémovými hodnotami pro danou skupinu nastavení. Klikněte pro reset všech nastavení aktuální skupiny nastavení na systémové hodnoty." + +#: src/slic3r/GUI/Tab.cpp:3120 +msgid "UNLOCKED LOCK icon indicates that the value was changed and is not equal to the system value.\nClick to reset current value to the system value." +msgstr "Ikona ODEMKNUTÉHO ZÁMKU indikuje, že se hodnota změnila a není shodná se systémovou hodnotou.\nKlikněte pro reset současné hodnoty na systémovou hodnotu." + +#: src/slic3r/GUI/Tab.cpp:3067 +msgid "UNLOCKED LOCK;indicates that some settings were changed and are not equal to the system values for the current option group.\nClick the UNLOCKED LOCK icon to reset all settings for current option group to the system values." +msgstr "ODEMKNUTÝ ZÁMEK;indikuje, že některá nastavení byla změněna a nejsou shodná se systémovými hodnotami pro danou skupinu nastavení.\nKlikněte na ikonu ODEMKNUTÉHO ZÁMKU pro reset všech nastavení aktuální skupiny nastavení na systémové hodnoty." + +#: src/slic3r/GUI/GUI_Preview.cpp:245 +msgid "Unretractions" +msgstr "Deretrakce" + +#: src/slic3r/GUI/Tab.cpp:2785 +msgid "Unsaved Changes" +msgstr "Neuložené Změny" + +#: src/slic3r/GUI/GUI_App.cpp:790 +msgid "Unsaved Presets" +msgstr "Neuložená přednastavení" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 +msgid "Unselect gizmo, keep object selection" +msgstr "Zrušit gizmo, zachovat výběr objektů" + +#: src/libslic3r/Zipper.cpp:63 +msgid "unsupported central directory size" +msgstr "nepodporovaná velikost centrálního adresáře" + +#: src/libslic3r/Zipper.cpp:43 +msgid "unsupported encryption" +msgstr "nepodporované šifrování" + +#: src/libslic3r/Zipper.cpp:45 +msgid "unsupported feature" +msgstr "nepodporovaná funkce" + +#: src/libslic3r/Zipper.cpp:41 +msgid "unsupported method" +msgstr "nepodporovaná metoda" + +#: src/libslic3r/Zipper.cpp:53 +msgid "unsupported multidisk archive" +msgstr "nepodporovaný multidisk archiv" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2414 +msgid "Unsupported selection" +msgstr "Nepodporovaný výběr" + +#: src/libslic3r/GCode/PreviewData.cpp:495 +#, possible-c-format +msgid "up to %.2f mm" +msgstr "do % .2f mm" + +#: src/slic3r/GUI/UpdateDialogs.cpp:30 +msgid "Update available" +msgstr "Je dostupná aktualizace" + +#: src/slic3r/GUI/ConfigWizard.cpp:419 src/slic3r/GUI/Preferences.cpp:69 +msgid "Update built-in Presets automatically" +msgstr "Aktualizovat vestavěné přednastavení automaticky" + +#: src/slic3r/GUI/ConfigWizard.cpp:401 +msgid "Updates" +msgstr "Aktualizace" + +#: src/slic3r/GUI/ConfigWizard.cpp:426 +msgid "Updates are never applied without user's consent and never overwrite user's customized settings." +msgstr "Aktualizace nejsou nikdy nainstalovány bez vědomí uživatele a nikdy nepřepíšou upravená uživatelská nastavení." + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:18 +msgid "Upgrade" +msgstr "Aktualizovat" + +#: src/slic3r/GUI/GUI_App.cpp:685 +msgid "Upload a firmware image into an Arduino based printer" +msgstr "Nahrát firmware do tiskárny s Arduinem" + +#: xs/src/slic3r/Utils/OctoPrint.cpp:33 +msgid "Upload to OctoPrint with the following filename:" +msgstr "Nahrát do OctoPrintu s následujícím názvem:" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:33 +msgid "Upload to Printer Host with the following filename:" +msgstr "Nahrát soubor do tiskového serveru se jménem:" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:229 +msgid "Uploading" +msgstr "Nahrávání" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 +msgid "Upper Layer" +msgstr "Vyšší vrstva" + +#: src/slic3r/GUI/Tab.cpp:1873 +msgid "USB/Serial connection" +msgstr "USB/Sériové připojení" + +#: src/libslic3r/PrintConfig.cpp:1592 +msgid "USB/serial port for printer connection." +msgstr "USB/sériový port pro připojení tiskárny." + +#: src/libslic3r/PrintConfig.cpp:2060 +msgid "Use firmware retraction" +msgstr "Použít retrakce z firmwaru" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:42 +msgid "Use forward slashes ( / ) as a directory separator if needed." +msgstr "Pokud je to nutné, použijte pro oddělení složek lomítko ( / )." + +#: src/slic3r/GUI/Preferences.cpp:93 +msgid "Use legacy OpenGL 1.1 rendering" +msgstr "Použijte historické OpenGL 1.1 vykreslování" + +#: src/libslic3r/PrintConfig.cpp:2515 +msgid "Use pad" +msgstr "Použít podložku" + +#: src/libslic3r/PrintConfig.cpp:2067 +msgid "Use relative E distances" +msgstr "Použít relativní E vzdálenosti" + +#: src/slic3r/GUI/Preferences.cpp:103 +msgid "Use Retina resolution for the 3D scene" +msgstr "Pro 3D scénu použít rozlišení Retina" + +#: src/libslic3r/PrintConfig.cpp:508 +msgid "Use this option to set the axis letter associated to your printer's extruder (usually E but some printers use A)." +msgstr "Touto volbou nastavíte písmeno osy přidružené k extruderu tiskárny (obvykle E, ale některé tiskárny používají A)." + +#: src/libslic3r/PrintConfig.cpp:1807 +msgid "Use this setting to rotate the support material pattern on the horizontal plane." +msgstr "Toto nastavení použijte pro horizontální otočení vzoru." + +#: src/libslic3r/PrintConfig.cpp:2074 +msgid "Use volumetric E" +msgstr "Použít volumetrickou hodnotu E" + +#: src/slic3r/GUI/Plater.cpp:214 +msgid "Used Filament (g)" +msgstr "Použito Filamentu (g)" + +#: src/slic3r/GUI/Plater.cpp:212 src/slic3r/GUI/Plater.cpp:1041 +msgid "Used Filament (m)" +msgstr "Použito Filamentu (m)" + +#: src/slic3r/GUI/Plater.cpp:213 +msgid "Used Filament (mm³)" +msgstr "Použito Filamentu (mm³)" + +#: src/slic3r/GUI/Plater.cpp:1015 +msgid "Used Material (ml)" +msgstr "Použitý materiál (ml)" + +#: src/slic3r/GUI/Plater.cpp:215 +msgid "Used Material (unit)" +msgstr "Použito materiálu (jednotka)" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 +msgid "User" +msgstr "Uživatel" + +#: src/slic3r/GUI/Preset.cpp:974 src/slic3r/GUI/Preset.cpp:1071 +#: src/slic3r/GUI/PresetBundle.cpp:1558 +msgid "User presets" +msgstr "Uživatelská přednastavení" + +#: src/libslic3r/Zipper.cpp:93 +msgid "validation failed" +msgstr "Validace selhala" + +#: src/slic3r/GUI/ButtonsDescription.cpp:41 +msgid "Value is the same as the system value" +msgstr "Hodnota je shodná se systémovou hodnotou" + +#: src/slic3r/GUI/ButtonsDescription.cpp:58 +msgid "Value was changed and is not equal to the system value or the last saved preset" +msgstr "Hodnota byla změněna a není shodná se systémovou hodnotou nebo naposled uloženým přednastavením" + +#: src/slic3r/GUI/Tab.cpp:2150 +msgid "Values in this column are for Full Power mode" +msgstr "Hodnoty v tomto sloupci jsou určeny pro režim plného výkonu (normal režim)" + +#: src/slic3r/GUI/Tab.cpp:2156 +msgid "Values in this column are for Silent mode" +msgstr "Hodnoty v tomto sloupci jsou pro tichý režim" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:58 +msgid "variants" +msgstr "varianty" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 src/slic3r/GUI/Tab.cpp:921 +msgid "vendor" +msgstr "prodejce" + +#: src/libslic3r/PrintConfig.cpp:880 +msgid "Verbose G-code" +msgstr "Komentáře do G-code" + +#: lib/Slic3r/GUI/MainFrame.pm:66 +msgid "Version " +msgstr "Verze " + +#: src/slic3r/GUI/AboutDialog.cpp:67 src/slic3r/GUI/MainFrame.cpp:53 +msgid "Version" +msgstr "Verze" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 +msgid "version" +msgstr "verze" + +#: src/slic3r/GUI/Tab.cpp:1002 +msgid "Vertical shells" +msgstr "Svislé stěny" + +#: src/slic3r/GUI/GUI_Preview.cpp:209 +msgid "View" +msgstr "Zobrazení" + +#: src/libslic3r/SLAPrint.cpp:857 src/libslic3r/SLAPrint.cpp:867 +#: src/libslic3r/SLAPrint.cpp:915 +msgid "Visualizing supports" +msgstr "Vizualizace podpěr" + +#: src/slic3r/GUI/Plater.cpp:138 +msgid "Volume" +msgstr "Obsah" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:248 +msgid "Volume to purge (mm³) when the filament is being" +msgstr "Objem k vyčištění (mm³) pokud je filament" + +#: src/slic3r/GUI/PresetHints.cpp:216 +msgid "Volumetric" +msgstr "Volumetrický" + +#: src/slic3r/GUI/GUI_Preview.cpp:216 +msgid "Volumetric flow rate" +msgstr "Objemový průtok" + #: src/libslic3r/GCode/PreviewData.cpp:402 msgid "Volumetric flow rate (mm3/s)" msgstr "Objemový průtok (mm3/s)" -#: src/libslic3r/GCode/PreviewData.cpp:491 -msgid "Default print color" -msgstr "" +#: src/slic3r/GUI/RammingChart.cpp:81 +msgid "Volumetric speed" +msgstr "Objemová rychlost" -#: src/libslic3r/GCode/PreviewData.cpp:495 -#, c-format -msgid "up to %.2f mm" -msgstr "" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1168 src/slic3r/GUI/GUI.cpp:283 +#: src/slic3r/GUI/WipeTowerDialog.cpp:44 src/slic3r/GUI/WipeTowerDialog.cpp:328 +msgid "Warning" +msgstr "Varování" -#: src/libslic3r/GCode/PreviewData.cpp:499 -#, c-format -msgid "above %.2f mm" -msgstr "" +#: src/slic3r/GUI/ConfigWizard.cpp:294 +msgid "Welcome" +msgstr "Vítejte" -#: src/libslic3r/GCode/PreviewData.cpp:504 -#, c-format -msgid "%.2f - %.2f mm" -msgstr "" +#: src/slic3r/GUI/ConfigWizard.cpp:294 +#, possible-c-format +msgid "Welcome to the %s %s" +msgstr "Vítejte v %s %s" + +#: src/slic3r/GUI/ConfigWizard.cpp:284 +#, possible-c-format +msgid "Welcome to the Slic3r %s" +msgstr "Vítejte v Slic3r %s" + +#: lib/Slic3r/GUI/Plater/2D.pm:131 +msgid "What do you want to print today? ™" +msgstr "Co chcete dnes tisknout? ™" + +#: src/slic3r/GUI/Preferences.cpp:86 +msgid "When checked, the print and filament presets are shown in the preset editor even if they are marked as incompatible with the active printer" +msgstr "Pokud je zaškrtnuto, přednastavení tisku a filamentu se zobrazují v editoru přednastavení, i když jsou označeny jako nekompatibilní s aktivní tiskárnou" + +#: src/slic3r/GUI/PresetHints.cpp:221 +msgid "when printing " +msgstr "při tisku " + +#: src/libslic3r/PrintConfig.cpp:216 +msgid "When printing multi-material objects, this settings will make slic3r to clip the overlapping object parts one by the other (2nd part will be clipped by the 1st, 3rd part will be clipped by the 1st and 2nd etc)." +msgstr "Připnutí překrývajících se objektů jeden k druhému při Multimateriálovém tisku. (Druhá část se připne k první, třetí část k první a druhé, atd)." + +#: src/libslic3r/PrintConfig.cpp:217 +msgid "When printing multi-material objects, this settings will make Slic3r to clip the overlapping object parts one by the other (2nd part will be clipped by the 1st, 3rd part will be clipped by the 1st and 2nd etc)." +msgstr "Připnutí překrývajících se objektů jeden k druhému při Multimateriálovém tisku. (Druhá část se připne k první, třetí část k první a druhé, atd)." + +#: src/libslic3r/PrintConfig.cpp:269 +msgid "When printing multiple objects or copies, this feature will complete each object before moving onto next one (and starting it from its bottom layer). This feature is useful to avoid the risk of ruined prints. Slic3r should warn and prevent you from extruder collisions, but beware." +msgstr "Při tisku více objektů nebo kopií tiskárna kompletně dokončí jeden objekt, předtím než začne tisknout druhý (začíná od spodní vrstvy). Tato vlastnost je výhodná z důvodů snížení rizika zničených výtisků. Slic3r by měl varovat při možné kolizi extruderu s objektem a zabránit mu, přesto doporučujeme obezřetnost." + +#: src/libslic3r/PrintConfig.cpp:843 +msgid "When printing with very low layer heights, you might still want to print a thicker bottom layer to improve adhesion and tolerance for non perfect build plates. This can be expressed as an absolute value or as a percentage (for example: 150%) over the default layer height." +msgstr "Při tisku s velmi nízkými výškami vrstev můžete stále vytisknout tlustší spodní vrstvu pro zlepšení přilnavosti a toleranci pro nedokonale zkalibrovanou tiskovou podložku. Může být vyjádřeno jako absolutní hodnota nebo jako procento (například: 150%) z výchozí výšky vrstvy." + +#: src/libslic3r/PrintConfig.cpp:1483 +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "Při výměně nástroje se spustí retrakce a filament se zatáhne zpět o zadané množství (délka se měří na surovém filamentu, než vstoupí do extruderu)." + +#: src/libslic3r/PrintConfig.cpp:1475 +msgid "When retraction is triggered, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "Při spuštění retrakce se filament zatáhne zpět o zadané množství (délka se měří na surovém filamentu, než vstoupí do extruderu)." + +#: src/libslic3r/PrintConfig.cpp:1322 +msgid "When set to zero, the distance the filament is moved from parking position during load is exactly the same as it was moved back during unload. When positive, it is loaded further, if negative, the loading move is shorter than unloading. " +msgstr "Když je hodnota nastavena na nulu, vzdálenost o kterou se filament posune během zavádění, je stejná, jako zpětný posun během vysouvání filamentu. Je-li hodnota kladná, je filament posunut více,. Je-li hodnota záporná, posun při zavádění je kratší než při vysouvání." + +#: src/libslic3r/PrintConfig.cpp:1173 +msgid "When setting other speed settings to 0 Slic3r will autocalculate the optimal speed in order to keep constant extruder pressure. This experimental setting is used to set the highest print speed you want to allow." +msgstr "Pokud jsou všechna ostatní nastavení rychlosti na hodnotě nula, Slic3r automaticky vypočítá optimální rychlost pro udržení konstantního tlaku v extruderu. Toto experimentální nastavení slouží k nastavení nejvyšší rychlosti tisku, kterou chcete povolit." + +#: src/libslic3r/PrintConfig.cpp:1527 +msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." +msgstr "Když je retrakce kompenzována po změně nástroje, extruder vytlačuje toto další množství filamentu." + +#: src/libslic3r/PrintConfig.cpp:1519 +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 "Když je retrakce kompenzována po rychloposunu, extruder vytlačuje toto další množství filamentu. Toto nastavení je zřídkakdy potřeba." + +#: src/slic3r/GUI/Tab.cpp:3108 +msgid "WHITE BULLET icon indicates a non system preset." +msgstr "Ikona BÍLÉ TEČKY indikuje nesystémové přednastavení." + +#: src/slic3r/GUI/Tab.cpp:3111 +msgid "WHITE BULLET icon indicates that the settings are the same as in the last saved preset for the current option group." +msgstr "Ikona BÍLÉ TEČKY indikuje, že nastavení jsou shodná s naposledy uloženým přednastavením pro danou skupinu nastavení." + +#: src/slic3r/GUI/Tab.cpp:3126 +msgid "WHITE BULLET icon indicates that the value is the same as in the last saved preset." +msgstr "Ikona BÍLÉ TEČKY indikuje, že je hodnota shodná s naposledy uloženým přednastavením." + +#: src/slic3r/GUI/Tab.cpp:3073 +msgid "WHITE BULLET;for the left button: \tindicates a non-system preset,\nfor the right button: \tindicates that the settings hasn't been modified." +msgstr "BÍLÁ TEČKA;pro levé tlačítko: indikuje nesystémové přednastavení,\npro pravé tlačítko: indikuje, že nastavení nebylo změněno." + +#: src/slic3r/GUI/GUI_Preview.cpp:214 src/libslic3r/PrintConfig.cpp:2137 +msgid "Width" +msgstr "Šířka" + +#: src/libslic3r/GCode/PreviewData.cpp:398 +msgid "Width (mm)" +msgstr "Šířka (mm)" + +#: src/libslic3r/PrintConfig.cpp:2389 +msgid "Width from the back sphere center to the front sphere center" +msgstr "Šířka od středu zadní koule ke středu přední koule" + +#: src/libslic3r/PrintConfig.cpp:2138 +msgid "Width of a wipe tower" +msgstr "Šířka čistící věže" + +#: src/libslic3r/PrintConfig.cpp:2203 +msgid "Width of the display" +msgstr "Šířka displeje" + +#: src/slic3r/GUI/PresetHints.cpp:43 +#, possible-c-format +msgid "will always run at %d%% " +msgstr "bude vždy běžet na %d%% " + +#: src/slic3r/GUI/PresetHints.cpp:52 +msgid "will be turned off." +msgstr "bude vypnut." + +#: src/libslic3r/PrintConfig.cpp:2276 +msgid "Will inflate or deflate the sliced 2D polygons according to the sign of the correction." +msgstr "Vytvoří offset každé vrstvy v rovině XY. Kladná hodnota - offset směrem ven, plocha polygonu se zvětší. Záporná hodnota - offset směrem dovnitř, plocha polygonu se zmenší." + +#: src/libslic3r/PrintConfig.cpp:2160 +msgid "Wipe into this object" +msgstr "Vyčistit do tohoto objektu" + +#: src/libslic3r/PrintConfig.cpp:2152 +msgid "Wipe into this object's infill" +msgstr "Vyčištění do výplně tohoto objektu" + +#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/Tab.cpp:1130 +#: src/libslic3r/GCode/PreviewData.cpp:174 +msgid "Wipe tower" +msgstr "Čistící věž" + +#: src/slic3r/GUI/Tab.cpp:1281 src/slic3r/GUI/Tab.cpp:1298 +msgid "Wipe Tower" +msgstr "Čistící věž" + +#: src/slic3r/GUI/Plater.cpp:1043 src/slic3r/GUI/Plater.cpp:1058 +msgid "wipe tower" +msgstr "čistící věž" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:141 +msgid "Wipe tower - Purging volume adjustment" +msgstr "Čistící věž - Úprava objemu čištění" + +#: src/libslic3r/PrintConfig.cpp:2144 +msgid "Wipe tower rotation angle" +msgstr "Úhel natočení čistící věže" + +#: src/libslic3r/PrintConfig.cpp:2145 +msgid "Wipe tower rotation angle with respect to x-axis " +msgstr "Úhel natočení čistící věže s ohledem na osu X " + +#: src/libslic3r/PrintConfig.cpp:2092 +msgid "Wipe while retracting" +msgstr "Očistit při retrakci" + +#: xs/src/libslic3r/PrintConfig.cpp:1997 +msgid "Wiping after toolchange will be preferentially done inside infills. This lowers the amount of waste but may result in longer print time due to additional travel moves." +msgstr "Čištění po výměně extruderu bude přednostně prováděno do vnitřních výplní. Tím se snižuje množství odpadu, ale může to mít za následek delší dobu tisku v důsledku dodatečných pohybů." + +#: src/libslic3r/PrintConfig.cpp:1460 +msgid "With bowden extruders, it may be wise to do some amount of quick retract before doing the wipe movement." +msgstr "U bowdenových extrudérů může být vhodné provést rychlé retrakce než se spustí očištění." + +#: src/libslic3r/PrintConfig.cpp:1969 +msgid "With sheath around the support" +msgstr "Pouzdro okolo podpěr" + +#: src/slic3r/GUI/UpdateDialogs.cpp:76 +msgid "Would you like to install it?\n\nNote that a full configuration snapshot will be created first. It can then be restored at any time should there be a problem with the new version.\n\nUpdated configuration bundles:" +msgstr "Přejete si spustit instalaci?\n\nNejprve bude provedena kompletní záloha nastavení. V případě problémů s novou verzí ji bude možné kdykoliv obnovit.\n\nAktualizované balíčky nastavení:" + +#: src/libslic3r/Zipper.cpp:95 +msgid "write calledback failed" +msgstr "zpětné volání se nezdařilo" + +#: src/libslic3r/PrintConfig.cpp:2993 +msgid "Write information about the model to the console." +msgstr "Vypsat informace o modelu do konsole." + +#: src/slic3r/Utils/Duet.cpp:148 +msgid "Wrong password" +msgstr "Chybné heslo" + +#: src/libslic3r/PrintConfig.cpp:2124 +msgid "X coordinate of the left front corner of a wipe tower" +msgstr "X souřadnice levého předního rohu čistící věže" + +#: src/libslic3r/PrintConfig.cpp:1793 +msgid "XY separation between an object and its support" +msgstr "XY vzdálenost mezi objektem a podpěrami" + +#: src/libslic3r/PrintConfig.cpp:1795 +msgid "XY separation between an object and its support. If expressed as percentage (for example 50%), it will be calculated over external perimeter width." +msgstr "XY vzdálenost mezi objektem a podpěrami. Pokud je vyjádřeno procenty (například 50%), bude vypočítána z šířky perimetru." + +#: src/libslic3r/PrintConfig.cpp:2174 +msgid "XY Size Compensation" +msgstr "Kompenzace XY rozměrů" + +#: src/libslic3r/PrintConfig.cpp:2131 +msgid "Y coordinate of the left front corner of a wipe tower" +msgstr "Y souřadnice levého předního rohu čistící věže" + +#: src/slic3r/GUI/Plater.cpp:992 +msgid "Yes" +msgstr "Ano" + +#: src/libslic3r/PrintConfig.cpp:1252 +msgid "You can put here your personal notes. This text will be added to the G-code header comments." +msgstr "Zde můžete zadat své osobní poznámky. Tento text bude přidán do komentáře záhlaví G code." + +#: src/libslic3r/PrintConfig.cpp:557 +msgid "You can put your notes regarding the filament here." +msgstr "Zde můžete vložit poznámky týkající se filamentu." + +#: src/libslic3r/PrintConfig.cpp:1403 +msgid "You can put your notes regarding the printer here." +msgstr "Zde můžete uvést poznámky týkající se tiskárny." + +#: src/libslic3r/PrintConfig.cpp:2332 +msgid "You can put your notes regarding the SLA print material here." +msgstr "Zde můžete vkládat své poznámky týkající se tiskového materiálu SLA." + +#: src/libslic3r/PrintConfig.cpp:324 +msgid "You can set this to a positive value to disable fan at all during the first layers, so that it does not make adhesion worse." +msgstr "Nastavením počtu prvních vrstev s vypnutým chlazením pro nezhoršování přilnavosti." + +#: src/libslic3r/PrintConfig.cpp:1295 +msgid "You can use all configuration options as variables inside this template. For example: [layer_height], [fill_density] etc. You can also use [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." +msgstr "V této šabloně můžete použít všechny možnosti konfigurace jako proměnné. Můžete například použít: [layer_height], [fill_density] etc. Také můžete použít [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2538 +msgid "You can't change a type of the last solid part of the object." +msgstr "Nelze změnit typ poslední plné části objektu." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1711 +msgid "You can't delete the last intance from object." +msgstr "Nelze smazat poslední instanci z objektu." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1694 +msgid "You can't delete the last solid part from object." +msgstr "Nelze smazat poslední část z objektu." + +#: src/slic3r/GUI/Plater.cpp:1746 +#, possible-c-format +msgid "You can't to add the object(s) from %s because of one or some of them is(are) multi-part" +msgstr "Nemůžete přidat objekt(y) z %s, protože jeden nebo některé z nich je(jsou) vícedílné" + +#: src/slic3r/GUI/GUI_App.cpp:789 +msgid "You have unsaved changes " +msgstr "Máte neuložené změny " + +#: src/slic3r/GUI/Preferences.cpp:130 +#, possible-c-format +msgid "You need to restart %s to make the changes effective." +msgstr "Chcete-li provést změny, musíte restartovat aplikaci %s." + +#: src/slic3r/GUI/Preferences.cpp:126 +msgid "You need to restart Slic3r to make the changes effective." +msgstr "Chcete-li provést změny, musíte restartovat aplikaci Slic3r." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2415 +#, possible-c-format +msgid "You started your selection with %s Item." +msgstr "Začali jste výběr s položkou %s." + +#: src/slic3r/GUI/MainFrame.cpp:772 +msgid "Your file was repaired." +msgstr "Váš soubor byl opraven." + +#: src/slic3r/GUI/Plater.cpp:1874 +msgid "Your object appears to be too large, so it was automatically scaled down to fit your print bed." +msgstr "Váš objekt se zdá být příliš velký, takže byl automaticky zmenšen, aby se vešel na tiskovou podložku." + +#: src/libslic3r/PrintConfig.cpp:2184 +msgid "Z offset" +msgstr "Odsazení Z" + +#: src/libslic3r/PrintConfig.cpp:2416 +msgid "Zig-Zag" +msgstr "Zig-Zag" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:152 +msgid "Zoom in" +msgstr "Přiblížit" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:153 +msgid "Zoom out" +msgstr "Oddálit" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:150 +msgid "Zoom to all objects in scene, if none selected" +msgstr "Pohled na všechny objekty ve scéně, pokud žádný není vybraný" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 +msgid "Zoom to Bed" +msgstr "Pohled na tiskovou plochu" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 +msgid "Zoom to selected object" +msgstr "Pohled na vybraný objekt" + +#: src/libslic3r/PrintConfig.cpp:171 src/libslic3r/PrintConfig.cpp:733 +#: src/libslic3r/PrintConfig.cpp:1570 src/libslic3r/PrintConfig.cpp:1580 +#: src/libslic3r/PrintConfig.cpp:1808 src/libslic3r/PrintConfig.cpp:1962 +#: src/libslic3r/PrintConfig.cpp:2146 src/libslic3r/PrintConfig.cpp:2463 +msgid "°" +msgstr "°" + +#: src/slic3r/GUI/ConfigWizard.cpp:613 src/slic3r/GUI/ConfigWizard.cpp:627 +msgid "°C" +msgstr "°C" diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index cffa4bf0cf..3a9573ccf6 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -14,7 +14,8 @@ namespace Slic3r { //! macro used to mark string used at localization, //! return same string -#define L(s) Slic3r::I18N::translate(s) +#define L(s) (s) +#define _(s) Slic3r::I18N::translate(s) static void assign_printer_technology_to_unknown(t_optiondef_map &options, PrinterTechnology printer_technology) { @@ -1073,9 +1074,17 @@ void PrintConfigDef::init_fff_params() std::string axis_upper = boost::to_upper_copy(axis.name); // Add the machine feedrate limits for XYZE axes. (M203) def = this->add("machine_max_feedrate_" + axis.name, coFloats); - def->full_label = (boost::format(L("Maximum feedrate %1%")) % axis_upper).str(); + def->full_label = (boost::format("Maximum feedrate %1%") % axis_upper).str(); + L("Maximum feedrate x"); + L("Maximum feedrate y"); + L("Maximum feedrate z"); + L("Maximum feedrate e"); def->category = L("Machine limits"); - def->tooltip = (boost::format(L("Maximum feedrate of the %1% axis")) % axis_upper).str(); + def->tooltip = (boost::format("Maximum feedrate of the %1% axis") % axis_upper).str(); + L("Maximum feedrate of the x axis"); + L("Maximum feedrate of the y axis"); + L("Maximum feedrate of the z axis"); + L("Maximum feedrate of the e axis"); def->sidetext = L("mm/s"); def->min = 0; def->width = machine_limits_opt_width; @@ -1083,9 +1092,13 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionFloats(axis.max_feedrate)); // Add the machine acceleration limits for XYZE axes (M201) def = this->add("machine_max_acceleration_" + axis.name, coFloats); - def->full_label = (boost::format(L("Maximum acceleration %1%")) % axis_upper).str(); + def->full_label = (boost::format("Maximum acceleration %1%") % axis_upper).str(); + L("Maximum acceleration x"); + L("Maximum acceleration y"); + L("Maximum acceleration z"); + L("Maximum acceleration e"); def->category = L("Machine limits"); - def->tooltip = (boost::format(L("Maximum acceleration of the %1% axis")) % axis_upper).str(); + def->tooltip = (boost::format("Maximum acceleration of the %1% axis") % axis_upper).str(); def->sidetext = L("mm/s²"); def->min = 0; def->width = machine_limits_opt_width; @@ -1093,9 +1106,17 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionFloats(axis.max_acceleration)); // Add the machine jerk limits for XYZE axes (M205) def = this->add("machine_max_jerk_" + axis.name, coFloats); - def->full_label = (boost::format(L("Maximum jerk %1%")) % axis_upper).str(); + def->full_label = (boost::format("Maximum jerk %1%") % axis_upper).str(); + L("Maximum jerk x"); + L("Maximum jerk y"); + L("Maximum jerk z"); + L("Maximum jerk e"); def->category = L("Machine limits"); - def->tooltip = (boost::format(L("Maximum jerk of the %1% axis")) % axis_upper).str(); + def->tooltip = (boost::format("Maximum jerk of the %1% axis") % axis_upper).str(); + L("Maximum jerk of the x axis"); + L("Maximum jerk of the y axis"); + L("Maximum jerk of the z axis"); + L("Maximum jerk of the e axis"); def->sidetext = L("mm/s"); def->min = 0; def->width = machine_limits_opt_width; @@ -1108,7 +1129,7 @@ void PrintConfigDef::init_fff_params() def = this->add("machine_min_extruding_rate", coFloats); def->full_label = L("Minimum feedrate when extruding"); def->category = L("Machine limits"); - def->tooltip = L("Minimum feedrate when extruding") + " (M205 S)"; + def->tooltip = L("Minimum feedrate when extruding (M205 S)"); def->sidetext = L("mm/s"); def->min = 0; def->width = machine_limits_opt_width; @@ -1119,7 +1140,7 @@ void PrintConfigDef::init_fff_params() def = this->add("machine_min_travel_rate", coFloats); def->full_label = L("Minimum travel feedrate"); def->category = L("Machine limits"); - def->tooltip = L("Minimum travel feedrate") + " (M205 T)"; + def->tooltip = L("Minimum travel feedrate (M205 T)"); def->sidetext = L("mm/s"); def->min = 0; def->width = machine_limits_opt_width; @@ -1130,7 +1151,7 @@ void PrintConfigDef::init_fff_params() def = this->add("machine_max_acceleration_extruding", coFloats); def->full_label = L("Maximum acceleration when extruding"); def->category = L("Machine limits"); - def->tooltip = L("Maximum acceleration when extruding") + " (M204 S)"; + def->tooltip = L("Maximum acceleration when extruding (M204 S)"); def->sidetext = L("mm/s²"); def->min = 0; def->width = machine_limits_opt_width; @@ -1141,7 +1162,7 @@ void PrintConfigDef::init_fff_params() def = this->add("machine_max_acceleration_retracting", coFloats); def->full_label = L("Maximum acceleration when retracting"); def->category = L("Machine limits"); - def->tooltip = L("Maximum acceleration when retracting") + " (M204 T)"; + def->tooltip = L("Maximum acceleration when retracting (M204 T)"); def->sidetext = L("mm/s²"); def->min = 0; def->width = machine_limits_opt_width; @@ -1829,8 +1850,8 @@ void PrintConfigDef::init_fff_params() // def->min = 0; def->enum_values.push_back("0"); def->enum_values.push_back("0.2"); - def->enum_labels.push_back((boost::format("0 (%1%)") % L("soluble")).str()); - def->enum_labels.push_back((boost::format("0.2 (%1%)") % L("detachable")).str()); + def->enum_labels.push_back(L("0 (soluble)")); + def->enum_labels.push_back(L("0.2 (detachable)")); def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(0.2)); @@ -2736,6 +2757,7 @@ double PrintConfig::min_object_distance(const ConfigBase *config) : duplicate_distance; } +//FIXME localize this function. std::string FullPrintConfig::validate() { // --layer-height diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp index da6369c02f..6883bb2f26 100644 --- a/src/libslic3r/SLAPrint.cpp +++ b/src/libslic3r/SLAPrint.cpp @@ -50,13 +50,18 @@ const std::array OBJ_STEP_LEVELS = 30, // slaposSliceSupports, }; -const std::array OBJ_STEP_LABELS = +// Object step to status label. The labels are localized at the time of calling, thus supporting language switching. +std::string OBJ_STEP_LABELS(size_t idx) { - L("Slicing model"), // slaposObjectSlice, - L("Generating support points"), // slaposSupportPoints, - L("Generating support tree"), // slaposSupportTree, - L("Generating pad"), // slaposBasePool, - L("Slicing supports"), // slaposSliceSupports, + switch (idx) { + case slaposObjectSlice: return L("Slicing model"); + case slaposSupportPoints: return L("Generating support points"); + case slaposSupportTree: return L("Generating support tree"); + case slaposBasePool: return L("Generating pad"); + case slaposSliceSupports: return L("Slicing supports"); + default:; + } + assert(false); return "Out of bounds!"; }; // Should also add up to 100 (%) @@ -66,10 +71,15 @@ const std::array PRINT_STEP_LEVELS = 90, // slapsRasterize }; -const std::array PRINT_STEP_LABELS = +// Print step to status label. The labels are localized at the time of calling, thus supporting language switching. +std::string PRINT_STEP_LABELS(size_t idx) { - L("Merging slices and calculating statistics"), // slapsStats - L("Rasterizing layers"), // slapsRasterize + switch (idx) { + case slapsMergeSlicesAndEval: return L("Merging slices and calculating statistics"); + case slapsRasterize: return L("Rasterizing layers"); + default:; + } + assert(false); return "Out of bounds!"; }; } @@ -128,7 +138,7 @@ static std::vector sla_instances(const ModelObject &mo instances.emplace_back( model_instance->id(), Point::new_scale(model_instance->get_offset(X), model_instance->get_offset(Y)), - float(Geometry::rotation_diff_z(rotation0, model_instance->get_rotation()))); + float(Geometry::rotation_diff_z(rotation0, model_instance->get_rotation()))); } } return instances; @@ -705,7 +715,7 @@ void SLAPrint::process() po.closest_slice_record(po.m_slice_index, float(bb3d.min(Z))); if(slindex_it == po.m_slice_index.end()) - //TRN To be shown at the status bar on SLA slicing error. + //TRN To be shown at the status bar on SLA slicing error. throw std::runtime_error(L("Slicing had to be stopped " "due to an internal error.")); @@ -783,7 +793,7 @@ void SLAPrint::process() double current = init + st * d; if(std::round(m_report_status.status()) < std::round(current)) m_report_status(*this, current, - OBJ_STEP_LABELS[slaposSupportPoints]); + OBJ_STEP_LABELS(slaposSupportPoints)); }; @@ -837,7 +847,7 @@ void SLAPrint::process() double current = init + st * d; if(std::round(m_report_status.status()) < std::round(current)) m_report_status(*this, current, - OBJ_STEP_LABELS[slaposSupportTree]); + OBJ_STEP_LABELS(slaposSupportTree)); }; @@ -1347,7 +1357,7 @@ void SLAPrint::process() double st = std::round(dstatus); if(st > pst) { m_report_status(*this, st, - PRINT_STEP_LABELS[slapsRasterize]); + PRINT_STEP_LABELS(slapsRasterize)); pst = st; } } @@ -1413,7 +1423,7 @@ void SLAPrint::process() st += incr * ostepd; if(po->m_stepmask[currentstep] && po->set_started(currentstep)) { - m_report_status(*this, st, OBJ_STEP_LABELS[currentstep]); + m_report_status(*this, st, OBJ_STEP_LABELS(currentstep)); pobj_program[currentstep](*po); throw_if_canceled(); po->set_done(currentstep); @@ -1440,7 +1450,7 @@ void SLAPrint::process() if(m_stepmask[currentstep] && set_started(currentstep)) { - m_report_status(*this, st, PRINT_STEP_LABELS[currentstep]); + m_report_status(*this, st, PRINT_STEP_LABELS(currentstep)); print_program[currentstep](); throw_if_canceled(); set_done(currentstep); diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index d86ebb886b..3439449b93 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -619,7 +619,11 @@ void MainFrame::quick_slice(const int qs) // { // validate configuration auto config = wxGetApp().preset_bundle->full_config(); - config.validate(); + auto valid = config.validate(); + if (! valid.empty()) { + show_error(this, valid); + return; + } // select input file if (!(qs & qsReslice)) { @@ -783,8 +787,8 @@ void MainFrame::export_config() auto config = wxGetApp().preset_bundle->full_config(); // Validate the cummulative configuration. auto valid = config.validate(); - if (!valid.empty()) { -// Slic3r::GUI::catch_error(this); + if (! valid.empty()) { + show_error(this, valid); return; } // Ask user for the file name for the config file. From 2a57acfbd69d52806b37668131e37a914310dfb6 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 9 May 2019 14:53:01 +0200 Subject: [PATCH 80/94] Fixed menu items "Add..." scaling under MSW --- src/slic3r/GUI/GUI_ObjectList.cpp | 83 ++++++++++++++++--------------- src/slic3r/GUI/GUI_ObjectList.hpp | 5 +- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 368ccc9777..14a0d9142f 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -39,6 +39,15 @@ FreqSettingsBundle FREQ_SETTINGS_BUNDLE_SLA = { L("Pad and Support") , { "supports_enable", "pad_enable" } } }; +// Note: id accords to type of the sub-object (adding volume), so sequence of the menu items is important +std::vector> ADD_VOLUME_MENU_ITEMS = { +// menu_item Name menu_item bitmap name + {L("Add part"), "add_part" }, // ~ModelVolumeType::MODEL_PART + {L("Add modifier"), "add_modifier"}, // ~ModelVolumeType::PARAMETER_MODIFIER + {L("Add support enforcer"), "support_enforcer"}, // ~ModelVolumeType::SUPPORT_ENFORCER + {L("Add support blocker"), "support_blocker"} // ~ModelVolumeType::SUPPORT_BLOCKER +}; + static PrinterTechnology printer_technology() { return wxGetApp().preset_bundle->printers.get_selected_preset().printer_technology(); @@ -467,10 +476,10 @@ void ObjectList::update_name_in_model(const wxDataViewItem& item) const void ObjectList::init_icons() { - m_bmp_solidmesh = ScalableBitmap(nullptr, "add_part"); // Add part - m_bmp_modifiermesh = ScalableBitmap(nullptr, "add_modifier"); // Add modifier - m_bmp_support_enforcer = ScalableBitmap(nullptr, "support_enforcer");// Add support enforcer - m_bmp_support_blocker = ScalableBitmap(nullptr, "support_blocker"); // Add support blocker + m_bmp_solidmesh = ScalableBitmap(nullptr, ADD_VOLUME_MENU_ITEMS[int(ModelVolumeType::MODEL_PART) ].second); + m_bmp_modifiermesh = ScalableBitmap(nullptr, ADD_VOLUME_MENU_ITEMS[int(ModelVolumeType::PARAMETER_MODIFIER)].second); + m_bmp_support_enforcer = ScalableBitmap(nullptr, ADD_VOLUME_MENU_ITEMS[int(ModelVolumeType::SUPPORT_ENFORCER) ].second); + m_bmp_support_blocker = ScalableBitmap(nullptr, ADD_VOLUME_MENU_ITEMS[int(ModelVolumeType::SUPPORT_BLOCKER) ].second); m_bmp_vector.reserve(4); // bitmaps for different types of parts m_bmp_vector.push_back(&m_bmp_solidmesh.bmp()); @@ -487,19 +496,15 @@ void ObjectList::init_icons() // Set warning bitmap for the model m_objects_model->SetWarningBitmap(&m_bmp_manifold_warning.bmp()); - // init bitmap for "Split to sub-objects" context menu - m_bmp_split = ScalableBitmap(nullptr, "split_parts_SMALL"); - // init bitmap for "Add Settings" context menu m_bmp_cog = ScalableBitmap(nullptr, "cog"); } -void ObjectList::rescale_icons() +void ObjectList::msw_rescale_icons() { m_bmp_vector.clear(); m_bmp_vector.reserve(4); // bitmaps for different types of parts - for (ScalableBitmap* bitmap : std::vector { - &m_bmp_solidmesh, // Add part + for (ScalableBitmap* bitmap : { &m_bmp_solidmesh, // Add part &m_bmp_modifiermesh, // Add modifier &m_bmp_support_enforcer, // Add support enforcer &m_bmp_support_blocker }) // Add support blocker @@ -514,7 +519,6 @@ void ObjectList::rescale_icons() // Set warning bitmap for the model m_objects_model->SetWarningBitmap(&m_bmp_manifold_warning.bmp()); - m_bmp_split.msw_rescale(); m_bmp_cog.msw_rescale(); @@ -1061,72 +1065,62 @@ void ObjectList::update_settings_item() } } -void ObjectList::append_menu_item_add_generic(wxMenuItem* menu, const ModelVolumeType type) { +wxMenu* ObjectList::append_submenu_add_generic(wxMenu* menu, const ModelVolumeType type) { auto sub_menu = new wxMenu; if (wxGetApp().get_mode() == comExpert) { append_menu_item(sub_menu, wxID_ANY, _(L("Load")) + " " + dots, "", - [this, type](wxCommandEvent&) { load_subobject(type); }, "", menu->GetMenu()); + [this, type](wxCommandEvent&) { load_subobject(type); }, "", menu); sub_menu->AppendSeparator(); } for (auto& item : { L("Box"), L("Cylinder"), L("Sphere"), L("Slab") }) { append_menu_item(sub_menu, wxID_ANY, _(item), "", - [this, type, item](wxCommandEvent&) { load_generic_subobject(item, type); }, "", menu->GetMenu()); + [this, type, item](wxCommandEvent&) { load_generic_subobject(item, type); }, "", menu); } - menu->SetSubMenu(sub_menu); + return sub_menu; } void ObjectList::append_menu_items_add_volume(wxMenu* menu) { - // Note: id accords to type of the sub-object, so sequence of the menu items is important - std::vector menu_object_types_items = {L("Add part"), // ~ModelVolumeType::MODEL_PART - L("Add modifier"), // ~ModelVolumeType::PARAMETER_MODIFIER - L("Add support enforcer"), // ~ModelVolumeType::SUPPORT_ENFORCER - L("Add support blocker") }; // ~ModelVolumeType::SUPPORT_BLOCKER - // Update "add" items(delete old & create new) settings popupmenu - for (auto& item : menu_object_types_items){ - const auto settings_id = menu->FindItem(_(item)); + for (auto& item : ADD_VOLUME_MENU_ITEMS){ + const auto settings_id = menu->FindItem(_(item.first)); if (settings_id != wxNOT_FOUND) menu->Destroy(settings_id); } const ConfigOptionMode mode = wxGetApp().get_mode(); - if (mode == comAdvanced) - { - append_menu_item(menu, wxID_ANY, _(L("Add part")), "", - [this](wxCommandEvent&) { load_subobject(ModelVolumeType::MODEL_PART); }, *m_bmp_vector[int(ModelVolumeType::MODEL_PART)]); + if (mode == comAdvanced) { + append_menu_item(menu, wxID_ANY, _(ADD_VOLUME_MENU_ITEMS[int(ModelVolumeType::MODEL_PART)].first), "", + [this](wxCommandEvent&) { load_subobject(ModelVolumeType::MODEL_PART); }, ADD_VOLUME_MENU_ITEMS[int(ModelVolumeType::MODEL_PART)].second); } if (mode == comSimple) { - append_menu_item(menu, wxID_ANY, _(L("Add support enforcer")), "", + append_menu_item(menu, wxID_ANY, _(ADD_VOLUME_MENU_ITEMS[int(ModelVolumeType::SUPPORT_ENFORCER)].first), "", [this](wxCommandEvent&) { load_generic_subobject(L("Box"), ModelVolumeType::SUPPORT_ENFORCER); }, - *m_bmp_vector[int(ModelVolumeType::SUPPORT_ENFORCER)]); - append_menu_item(menu, wxID_ANY, _(L("Add support blocker")), "", + ADD_VOLUME_MENU_ITEMS[int(ModelVolumeType::SUPPORT_ENFORCER)].second); + append_menu_item(menu, wxID_ANY, _(ADD_VOLUME_MENU_ITEMS[int(ModelVolumeType::SUPPORT_BLOCKER)].first), "", [this](wxCommandEvent&) { load_generic_subobject(L("Box"), ModelVolumeType::SUPPORT_BLOCKER); }, - *m_bmp_vector[int(ModelVolumeType::SUPPORT_BLOCKER)]); + ADD_VOLUME_MENU_ITEMS[int(ModelVolumeType::SUPPORT_BLOCKER)].second); return; } - for (int type = mode == comExpert ? 0 : 1 ; type < menu_object_types_items.size(); type++) + for (int type = mode == comExpert ? 0 : 1 ; type < ADD_VOLUME_MENU_ITEMS.size(); type++) { - auto& item = menu_object_types_items[type]; + auto& item = ADD_VOLUME_MENU_ITEMS[type]; - auto menu_item = new wxMenuItem(menu, wxID_ANY, _(item)); - menu_item->SetBitmap(*m_bmp_vector[type]); - append_menu_item_add_generic(menu_item, ModelVolumeType(type)); - - menu->Append(menu_item); + wxMenu* sub_menu = append_submenu_add_generic(menu, ModelVolumeType(type)); + append_submenu(menu, sub_menu, wxID_ANY, _(item.first), "", item.second); } } wxMenuItem* ObjectList::append_menu_item_split(wxMenu* menu) { return append_menu_item(menu, wxID_ANY, _(L("Split to parts")), "", - [this](wxCommandEvent&) { split(); }, m_bmp_split.bmp(), menu); + [this](wxCommandEvent&) { split(); }, "split_parts_SMALL", menu); } wxMenuItem* ObjectList::append_menu_item_settings(wxMenu* menu_) @@ -2796,11 +2790,18 @@ void ObjectList::msw_rescale() GetColumn(2)->SetWidth( 2 * em); // rescale all icons, used by ObjectList - rescale_icons(); + msw_rescale_icons(); - // rescale/update existingitems with bitmaps + // rescale/update existing items with bitmaps m_objects_model->Rescale(); + // rescale menus + for (MenuWithSeparators* menu : { &m_menu_object, + &m_menu_part, + &m_menu_sla_object, + &m_menu_instance }) + msw_rescale_menu(menu); + Layout(); } diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index 1ca358cd90..1625c2fac8 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -114,7 +114,6 @@ class ObjectList : public wxDataViewCtrl ScalableBitmap m_bmp_support_blocker; ScalableBitmap m_bmp_manifold_warning; ScalableBitmap m_bmp_cog; - ScalableBitmap m_bmp_split; MenuWithSeparators m_menu_object; MenuWithSeparators m_menu_part; @@ -173,7 +172,7 @@ public: void update_extruder_values_for_items(const int max_extruder); void init_icons(); - void rescale_icons(); + void msw_rescale_icons(); // Get obj_idx and vol_idx values for the selected (by default) or an adjusted item void get_selected_item_indexes(int& obj_idx, int& vol_idx, const wxDataViewItem& item = wxDataViewItem(0)); @@ -195,7 +194,7 @@ public: void get_freq_settings_choice(const wxString& bundle_name); void update_settings_item(); - void append_menu_item_add_generic(wxMenuItem* menu, const ModelVolumeType type); + wxMenu* append_submenu_add_generic(wxMenu* menu, const ModelVolumeType type); void append_menu_items_add_volume(wxMenu* menu); wxMenuItem* append_menu_item_split(wxMenu* menu); wxMenuItem* append_menu_item_settings(wxMenu* menu); From 54f40fd2d9d96c565336a16fde81af6f527a25b2 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Thu, 9 May 2019 14:59:00 +0200 Subject: [PATCH 81/94] Fixed localization of status bar updates during the slicing process. --- src/slic3r/GUI/BackgroundSlicingProcess.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.cpp b/src/slic3r/GUI/BackgroundSlicingProcess.cpp index 2a61e3ce72..79705e24f7 100644 --- a/src/slic3r/GUI/BackgroundSlicingProcess.cpp +++ b/src/slic3r/GUI/BackgroundSlicingProcess.cpp @@ -82,14 +82,13 @@ void BackgroundSlicingProcess::process_fff() std::string export_path = m_fff_print->print_statistics().finalize_output_path(m_export_path); if (copy_file(m_temp_output_path, export_path) != 0) throw std::runtime_error("Copying of the temporary G-code to the output G-code failed"); - m_print->set_status(95, L("Running post-processing scripts")); + m_print->set_status(95, _(L("Running post-processing scripts")).ToUTF8().data()); run_post_process_scripts(export_path, m_fff_print->config()); - // #ys_FIXME_localization - m_print->set_status(100, L("G-code file exported to ") + export_path); + m_print->set_status(100, (boost::format(_(L("G-code file exported to %1%")).ToUTF8().data()) % export_path).str()); } else if (! m_upload_job.empty()) { prepare_upload(); } else { - m_print->set_status(100, L("Slicing complete")); + m_print->set_status(100, _(L("Slicing complete")).ToUTF8().data()); } this->set_step_done(bspsGCodeFinalize); } @@ -104,11 +103,11 @@ void BackgroundSlicingProcess::process_sla() const std::string export_path = m_sla_print->print_statistics().finalize_output_path(m_export_path); m_sla_print->export_raster(export_path); // #ys_FIXME_localization - m_print->set_status(100, L("Masked SLA file exported to ") + export_path); + m_print->set_status(100, (boost::format(_(L("Masked SLA file exported to %1%")).ToUTF8().data()) % export_path).str()); } else if (! m_upload_job.empty()) { prepare_upload(); } else { - m_print->set_status(100, L("Slicing complete")); + m_print->set_status(100, _(L("Slicing complete")).ToUTF8().data()); } this->set_step_done(bspsGCodeFinalize); } @@ -397,9 +396,9 @@ void BackgroundSlicingProcess::prepare_upload() / boost::filesystem::unique_path("." SLIC3R_APP_KEY ".upload.%%%%-%%%%-%%%%-%%%%"); if (m_print == m_fff_print) { - m_print->set_status(95, L("Running post-processing scripts")); + m_print->set_status(95, _(L("Running post-processing scripts")).ToUTF8().data()); if (copy_file(m_temp_output_path, source_path.string()) != 0) { - throw std::runtime_error("Copying of the temporary G-code to the output G-code failed"); + throw std::runtime_error(_(L("Copying of the temporary G-code to the output G-code failed"))); } run_post_process_scripts(source_path.string(), m_fff_print->config()); m_upload_job.upload_data.upload_path = m_fff_print->print_statistics().finalize_output_path(m_upload_job.upload_data.upload_path.string()); @@ -409,7 +408,7 @@ void BackgroundSlicingProcess::prepare_upload() } // #ys_FIXME_localization - m_print->set_status(100, (boost::format(L("Scheduling upload to `%1%`. See Window -> Print Host Upload Queue")) % m_upload_job.printhost->get_host()).str()); + m_print->set_status(100, (boost::format(_(L("Scheduling upload to `%1%`. See Window -> Print Host Upload Queue")).ToUTF8().data()) % m_upload_job.printhost->get_host()).str()); m_upload_job.upload_data.source_path = std::move(source_path); From b247bbab2e989f9a2699086ab5c259cf0026fd3f Mon Sep 17 00:00:00 2001 From: bubnikv Date: Thu, 9 May 2019 15:13:14 +0200 Subject: [PATCH 82/94] Fixed localization of parameter legends. --- src/slic3r/GUI/Field.cpp | 2 +- src/slic3r/GUI/Field.hpp | 2 +- src/slic3r/GUI/Tab.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 4f1c024eb6..edc65aca00 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -1019,7 +1019,7 @@ void StaticText::BUILD() if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit); if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit); - const wxString legend(m_opt.get_default_value()->value); + const wxString legend = wxString::FromUTF8(m_opt.get_default_value()->value.c_str()); auto temp = new wxStaticText(m_parent, wxID_ANY, legend, wxDefaultPosition, size, wxST_ELLIPSIZE_MIDDLE); temp->SetFont(Slic3r::GUI::wxGetApp().normal_font()); temp->SetBackgroundStyle(wxBG_STYLE_PAINT); diff --git a/src/slic3r/GUI/Field.hpp b/src/slic3r/GUI/Field.hpp index 210ae73f4b..ae449450a6 100644 --- a/src/slic3r/GUI/Field.hpp +++ b/src/slic3r/GUI/Field.hpp @@ -465,7 +465,7 @@ public: void set_value(const std::string& value, bool change_event = false) { m_disable_change_event = !change_event; - dynamic_cast(window)->SetLabel(value); + dynamic_cast(window)->SetLabel(wxString::FromUTF8(value.data())); m_disable_change_event = false; } void set_value(const boost::any& value, bool change_event = false) { diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index c6043e8028..7ad4263ca4 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2149,13 +2149,13 @@ PageShp TabPrinter::build_kinematics_page() def.gui_type = "legend"; def.mode = comAdvanced; def.tooltip = L("Values in this column are for Full Power mode"); - def.set_default_value(new ConfigOptionString{ L("Full Power") }); + def.set_default_value(new ConfigOptionString{ _(L("Full Power")).ToUTF8().data() }); auto option = Option(def, "full_power_legend"); line.append_option(option); def.tooltip = L("Values in this column are for Silent mode"); - def.set_default_value(new ConfigOptionString{ L("Silent") }); + def.set_default_value(new ConfigOptionString{ _(L("Silent")).ToUTF8().data() }); option = Option(def, "silent_legend"); line.append_option(option); From 1efe74383425add5171ea614637a727f1d6a2b75 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Thu, 9 May 2019 15:24:08 +0200 Subject: [PATCH 83/94] Modified texts of the "Change language" dialog. --- src/slic3r/GUI/GUI_App.cpp | 8 ++++---- src/slic3r/Utils/OctoPrint.cpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index c8e411ee4b..bd40e2016b 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -749,10 +749,10 @@ void GUI_App::add_config_menu(wxMenuBar *menu) * and draw user's attention to the application restarting after a language change */ wxMessageDialog dialog(nullptr, - _(L("Application will be restarted after language change.")) + "\n" + - _(L("3D-Scene will be cleaned.")) + "\n\n" + - _(L("Please, check your changes before.")), - _(L("Attention!")), + _(L("Switching the language will trigger application restart.\n" + "You will lose all your unsaved data (content of the plater, modified presets).")) + "\n\n" + + _(L("Do you want to proceed?")), + wxString(SLIC3R_APP_NAME) + " - " + _(L("Language selection")), wxICON_QUESTION | wxOK | wxCANCEL); if ( dialog.ShowModal() == wxID_CANCEL) return; diff --git a/src/slic3r/Utils/OctoPrint.cpp b/src/slic3r/Utils/OctoPrint.cpp index 7cea198bfd..cafa69c554 100644 --- a/src/slic3r/Utils/OctoPrint.cpp +++ b/src/slic3r/Utils/OctoPrint.cpp @@ -192,7 +192,7 @@ const char* SL1Host::get_name() const { return "SL1Host"; } wxString SL1Host::get_test_ok_msg () const { - return _(L("Connection to Prusa SLA works correctly.")); + return _(L("Connection to Prusa SL1 works correctly.")); } wxString SL1Host::get_test_failed_msg (wxString &msg) const From 3c0737c5880c054431950d89b36d88ec3448c489 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 9 May 2019 15:37:52 +0200 Subject: [PATCH 84/94] Fixed typo in "Machine limits" information strings --- src/libslic3r/PrintConfig.cpp | 44 +++++++++++++++++++---------------- src/slic3r/GUI/Field.cpp | 2 +- src/slic3r/GUI/Tab.cpp | 2 +- 3 files changed, 26 insertions(+), 22 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 3a9573ccf6..9fec898fef 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1075,16 +1075,16 @@ void PrintConfigDef::init_fff_params() // Add the machine feedrate limits for XYZE axes. (M203) def = this->add("machine_max_feedrate_" + axis.name, coFloats); def->full_label = (boost::format("Maximum feedrate %1%") % axis_upper).str(); - L("Maximum feedrate x"); - L("Maximum feedrate y"); - L("Maximum feedrate z"); - L("Maximum feedrate e"); + L("Maximum feedrate X"); + L("Maximum feedrate Y"); + L("Maximum feedrate Z"); + L("Maximum feedrate E"); def->category = L("Machine limits"); def->tooltip = (boost::format("Maximum feedrate of the %1% axis") % axis_upper).str(); - L("Maximum feedrate of the x axis"); - L("Maximum feedrate of the y axis"); - L("Maximum feedrate of the z axis"); - L("Maximum feedrate of the e axis"); + L("Maximum feedrate of the X axis"); + L("Maximum feedrate of the Y axis"); + L("Maximum feedrate of the Z axis"); + L("Maximum feedrate of the E axis"); def->sidetext = L("mm/s"); def->min = 0; def->width = machine_limits_opt_width; @@ -1093,12 +1093,16 @@ void PrintConfigDef::init_fff_params() // Add the machine acceleration limits for XYZE axes (M201) def = this->add("machine_max_acceleration_" + axis.name, coFloats); def->full_label = (boost::format("Maximum acceleration %1%") % axis_upper).str(); - L("Maximum acceleration x"); - L("Maximum acceleration y"); - L("Maximum acceleration z"); - L("Maximum acceleration e"); + L("Maximum acceleration X"); + L("Maximum acceleration Y"); + L("Maximum acceleration Z"); + L("Maximum acceleration E"); def->category = L("Machine limits"); def->tooltip = (boost::format("Maximum acceleration of the %1% axis") % axis_upper).str(); + L("Maximum acceleration of the X axis"); + L("Maximum acceleration of the Y axis"); + L("Maximum acceleration of the Z axis"); + L("Maximum acceleration of the E axis"); def->sidetext = L("mm/s²"); def->min = 0; def->width = machine_limits_opt_width; @@ -1107,16 +1111,16 @@ void PrintConfigDef::init_fff_params() // Add the machine jerk limits for XYZE axes (M205) def = this->add("machine_max_jerk_" + axis.name, coFloats); def->full_label = (boost::format("Maximum jerk %1%") % axis_upper).str(); - L("Maximum jerk x"); - L("Maximum jerk y"); - L("Maximum jerk z"); - L("Maximum jerk e"); + L("Maximum jerk X"); + L("Maximum jerk Y"); + L("Maximum jerk Z"); + L("Maximum jerk E"); def->category = L("Machine limits"); def->tooltip = (boost::format("Maximum jerk of the %1% axis") % axis_upper).str(); - L("Maximum jerk of the x axis"); - L("Maximum jerk of the y axis"); - L("Maximum jerk of the z axis"); - L("Maximum jerk of the e axis"); + L("Maximum jerk of the X axis"); + L("Maximum jerk of the Y axis"); + L("Maximum jerk of the Z axis"); + L("Maximum jerk of the E axis"); def->sidetext = L("mm/s"); def->min = 0; def->width = machine_limits_opt_width; diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 4f1c024eb6..a8a2b7e928 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -1020,7 +1020,7 @@ void StaticText::BUILD() if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit); const wxString legend(m_opt.get_default_value()->value); - auto temp = new wxStaticText(m_parent, wxID_ANY, legend, wxDefaultPosition, size, wxST_ELLIPSIZE_MIDDLE); + auto temp = new wxStaticText(m_parent, wxID_ANY, _(legend.ToStdString()), wxDefaultPosition, size, wxST_ELLIPSIZE_MIDDLE); temp->SetFont(Slic3r::GUI::wxGetApp().normal_font()); temp->SetBackgroundStyle(wxBG_STYLE_PAINT); temp->SetFont(wxGetApp().bold_font()); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index c6043e8028..d7e6d398c4 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2125,7 +2125,7 @@ void TabPrinter::extruders_count_changed(size_t extruders_count) void TabPrinter::append_option_line(ConfigOptionsGroupShp optgroup, const std::string opt_key) { auto option = optgroup->get_option(opt_key, 0); - auto line = Line{ option.opt.full_label, "" }; + auto line = Line{ _(option.opt.full_label), "" }; line.append_option(option); if (m_use_silent_mode) line.append_option(optgroup->get_option(opt_key, 1)); From 5012e3079fe2b75eb7454c51e1be6acd8ded791b Mon Sep 17 00:00:00 2001 From: bubnikv Date: Thu, 9 May 2019 15:39:15 +0200 Subject: [PATCH 85/94] Some textation improvements, renamed Silent mode to Stealth. --- src/libslic3r/PrintConfig.cpp | 6 +++--- src/slic3r/GUI/KBShortcutsDialog.cpp | 6 +++--- src/slic3r/GUI/Plater.cpp | 2 +- src/slic3r/GUI/Tab.cpp | 8 ++++---- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 3a9573ccf6..f5190a96c6 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1050,8 +1050,8 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionBool(false)); def = this->add("silent_mode", coBool); - def->label = L("Supports silent mode"); - def->tooltip = L("Set silent mode for the G-code flavor"); + def->label = L("Supports stealth mode"); + def->tooltip = L("The firmware supports stealth mode"); def->mode = comExpert; def->set_default_value(new ConfigOptionBool(true)); @@ -2426,7 +2426,7 @@ void PrintConfigDef::init_sla_params() def = this->add("support_pillar_connection_mode", coEnum); def->label = L("Support pillar connection mode"); - def->tooltip = L("Controls the bridge type between two neigboring pillars." + def->tooltip = L("Controls the bridge type between two neighboring pillars." " Can be zig-zag, cross (double zig-zag) or dynamic which" " will automatically switch between the first two depending" " on the distance of the two pillars."); diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index 7042c125a1..a032c97615 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -120,9 +120,9 @@ void KBShortcutsDialog::fill_shortcuts() main_shortcuts.push_back(Shortcut(ctrl+"6" ,L("Switch to Preview"))); main_shortcuts.push_back(Shortcut(ctrl+"P" ,L("Preferences"))); main_shortcuts.push_back(Shortcut(ctrl+"J" ,L("Print host upload queue"))); - main_shortcuts.push_back(Shortcut("0-6" ,L("Camera view "))); - main_shortcuts.push_back(Shortcut("+" ,L("Add Instance to selected object "))); - main_shortcuts.push_back(Shortcut("-" ,L("Remove Instance from selected object"))); + main_shortcuts.push_back(Shortcut("0-6" ,L("Camera view"))); + main_shortcuts.push_back(Shortcut("+" ,L("Add Instance of the selected object"))); + main_shortcuts.push_back(Shortcut("-" ,L("Remove Instance of the selected object"))); main_shortcuts.push_back(Shortcut("?" ,L("Show keyboard shortcuts list"))); main_shortcuts.push_back(Shortcut(ctrl/*+"LeftMouse"*/,L("Press to select multiple object or move multiple object with mouse"))); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index c5643f4226..022cb2e9dd 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1081,7 +1081,7 @@ void Sidebar::show_sliced_info_sizer(const bool show) info_text += wxString::Format("\n%s", ps.estimated_normal_print_time); } if (ps.estimated_silent_print_time != "N/A") { - new_label += wxString::Format("\n - %s", _(L("silent mode"))); + new_label += wxString::Format("\n - %s", _(L("stealth mode"))); info_text += wxString::Format("\n%s", ps.estimated_silent_print_time); } p->sliced_info->SetTextAndShow(siEstimatedTime, info_text, new_label); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 7ad4263ca4..4c59eec915 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2148,14 +2148,14 @@ PageShp TabPrinter::build_kinematics_page() def.width = 15; def.gui_type = "legend"; def.mode = comAdvanced; - def.tooltip = L("Values in this column are for Full Power mode"); - def.set_default_value(new ConfigOptionString{ _(L("Full Power")).ToUTF8().data() }); + def.tooltip = L("Values in this column are for Normal mode"); + def.set_default_value(new ConfigOptionString{ _(L("Normal")).ToUTF8().data() }); auto option = Option(def, "full_power_legend"); line.append_option(option); - def.tooltip = L("Values in this column are for Silent mode"); - def.set_default_value(new ConfigOptionString{ _(L("Silent")).ToUTF8().data() }); + def.tooltip = L("Values in this column are for Stealth mode"); + def.set_default_value(new ConfigOptionString{ _(L("Stealth")).ToUTF8().data() }); option = Option(def, "silent_legend"); line.append_option(option); From 0cfac53d24d9e5c5ee063d4cc988e342facc081f Mon Sep 17 00:00:00 2001 From: bubnikv Date: Thu, 9 May 2019 15:44:53 +0200 Subject: [PATCH 86/94] Some more localization fixes. --- src/libslic3r/Print.cpp | 3 +-- src/libslic3r/PrintConfig.cpp | 2 +- src/slic3r/GUI/BackgroundSlicingProcess.cpp | 2 -- src/slic3r/GUI/GUI_App.cpp | 2 +- 4 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 86dc373654..84837389eb 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1220,7 +1220,7 @@ std::string Print::validate() const const SlicingParameters &slicing_params = object->slicing_parameters(); if (std::abs(slicing_params.first_print_layer_height - slicing_params0.first_print_layer_height) > EPSILON || std::abs(slicing_params.layer_height - slicing_params0.layer_height ) > EPSILON) - return L("The Wipe Tower is only supported for multiple objects if they have equal layer heigths"); + return L("The Wipe Tower is only supported for multiple objects if they have equal layer heights"); if (slicing_params.raft_layers() != slicing_params0.raft_layers()) return L("The Wipe Tower is only supported for multiple objects if they are printed over an equal number of raft layers"); if (object->config().support_material_contact_distance != m_objects.front()->config().support_material_contact_distance) @@ -1515,7 +1515,6 @@ std::string Print::export_gcode(const std::string &path_template, GCodePreviewDa // The following call may die if the output_filename_format template substitution fails. std::string path = this->output_filepath(path_template); std::string message; - // #ys_FIXME_localization if (! path.empty() && preview_data == nullptr) { // Only show the path if preview_data is not set -> running from command line. message = L("Exporting G-code"); diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index f5190a96c6..1dbd61bbb8 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2554,7 +2554,7 @@ void PrintConfigDef::init_sla_params() def->tooltip = L("Defines the pad cavity depth. Set to zero to disable the cavity. " "Be careful when enabling this feature, as some resins may " "produce an extreme suction effect inside the cavity, " - "which makes pealing the print off the vat foil difficult."); + "which makes peeling the print off the vat foil difficult."); def->category = L("Pad"); // def->tooltip = L(""); def->sidetext = L("mm"); diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.cpp b/src/slic3r/GUI/BackgroundSlicingProcess.cpp index 79705e24f7..19ee0800b5 100644 --- a/src/slic3r/GUI/BackgroundSlicingProcess.cpp +++ b/src/slic3r/GUI/BackgroundSlicingProcess.cpp @@ -102,7 +102,6 @@ void BackgroundSlicingProcess::process_sla() if (! m_export_path.empty()) { const std::string export_path = m_sla_print->print_statistics().finalize_output_path(m_export_path); m_sla_print->export_raster(export_path); - // #ys_FIXME_localization m_print->set_status(100, (boost::format(_(L("Masked SLA file exported to %1%")).ToUTF8().data()) % export_path).str()); } else if (! m_upload_job.empty()) { prepare_upload(); @@ -407,7 +406,6 @@ void BackgroundSlicingProcess::prepare_upload() m_sla_print->export_raster(source_path.string(), m_upload_job.upload_data.upload_path.string()); } - // #ys_FIXME_localization m_print->set_status(100, (boost::format(_(L("Scheduling upload to `%1%`. See Window -> Print Host Upload Queue")).ToUTF8().data()) % m_upload_job.printhost->get_host()).str()); m_upload_job.upload_data.source_path = std::move(source_path); diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index bd40e2016b..a41e317679 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -750,7 +750,7 @@ void GUI_App::add_config_menu(wxMenuBar *menu) */ wxMessageDialog dialog(nullptr, _(L("Switching the language will trigger application restart.\n" - "You will lose all your unsaved data (content of the plater, modified presets).")) + "\n\n" + + "You will lose content of the plater.")) + "\n\n" + _(L("Do you want to proceed?")), wxString(SLIC3R_APP_NAME) + " - " + _(L("Language selection")), wxICON_QUESTION | wxOK | wxCANCEL); From 32de7e1bb1616be87008d0d3df4bb0cd27e2719c Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 9 May 2019 16:14:45 +0200 Subject: [PATCH 87/94] Fixed ButtonsDescription localization --- src/slic3r/GUI/Tab.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 8113df643f..91424b830b 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -3062,21 +3062,25 @@ void Tab::compatible_widget_reload(PresetDependencies &deps) void Tab::fill_icon_descriptions() { - m_icon_descriptions.push_back(t_icon_description(&m_bmp_value_lock, L("LOCKED LOCK;" - "indicates that the settings are the same as the system values for the current option group"))); + m_icon_descriptions.push_back(t_icon_description(&m_bmp_value_lock, L("LOCKED LOCK") ";" + // TRN Description for "LOCKED LOCK" + L("indicates that the settings are the same as the system values for the current option group"))); - m_icon_descriptions.push_back(t_icon_description(&m_bmp_value_unlock, L("UNLOCKED LOCK;" - "indicates that some settings were changed and are not equal to the system values for " + m_icon_descriptions.push_back(t_icon_description(&m_bmp_value_unlock, L("UNLOCKED LOCK") ";" + // TRN Description for "UNLOCKED LOCK" + L("indicates that some settings were changed and are not equal to the system values for " "the current option group.\n" "Click the UNLOCKED LOCK icon to reset all settings for current option group to " "the system values."))); - m_icon_descriptions.push_back(t_icon_description(&m_bmp_white_bullet, L("WHITE BULLET;" - "for the left button: \tindicates a non-system preset,\n" + m_icon_descriptions.push_back(t_icon_description(&m_bmp_white_bullet, L("WHITE BULLET") ";" + // TRN Description for "WHITE BULLET" + L("for the left button: \tindicates a non-system preset,\n" "for the right button: \tindicates that the settings hasn't been modified."))); - m_icon_descriptions.push_back(t_icon_description(&m_bmp_value_revert, L("BACK ARROW;" - "indicates that the settings were changed and are not equal to the last saved preset for " + m_icon_descriptions.push_back(t_icon_description(&m_bmp_value_revert, L("BACK ARROW") ";" + // TRN Description for "BACK ARROW" + L("indicates that the settings were changed and are not equal to the last saved preset for " "the current option group.\n" "Click the BACK ARROW icon to reset all settings for the current option group to " "the last saved preset."))); From 0196fbb60ffefe5ac3156af2b7b376b0f86405f2 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 9 May 2019 16:38:44 +0200 Subject: [PATCH 88/94] AboutDialog localization --- src/slic3r/GUI/AboutDialog.cpp | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/slic3r/GUI/AboutDialog.cpp b/src/slic3r/GUI/AboutDialog.cpp index b1a2556e7c..85f332f42f 100644 --- a/src/slic3r/GUI/AboutDialog.cpp +++ b/src/slic3r/GUI/AboutDialog.cpp @@ -89,21 +89,28 @@ AboutDialog::AboutDialog() int size[] = {fs,fs,fs,fs,fs,fs,fs}; m_html->SetFonts(font.GetFaceName(), font.GetFaceName(), size); m_html->SetBorders(2); + const wxString copyright_str = _(L("Copyright")); + // TRN "Slic3r _is licensed under the_ License" + const wxString is_lecensed_str = _(L("is licensed under the")); + const wxString license_str = _(L("GNU Affero General Public License, version 3")); + const wxString contributors_str = _(L("Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and numerous others.")); const auto text = wxString::Format( "" "" "" - "Copyright © 2016-2019 Prusa Research.
" - "Copyright © 2011-2018 Alessandro Ranellucci.
" - "Slic3r is licensed under the " - "GNU Affero General Public License, version 3." + "%s © 2016-2019 Prusa Research.
" + "%s © 2011-2018 Alessandro Ranellucci.
" + "Slic3r %s " + "%s." "

" - "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and numerous others. " - "Manual by Gary Hodgson. Inspired by the RepRap community.
" - "Slic3r logo designed by Corey Daniels, Silk Icon Set designed by Mark James. " + "%s" "
" "" - "", bgr_clr_str, text_clr_str, text_clr_str); + "", bgr_clr_str, text_clr_str, text_clr_str, + copyright_str, copyright_str, + is_lecensed_str, + license_str, + contributors_str); m_html->SetPage(text); vsizer->Add(m_html, 1, wxEXPAND | wxBOTTOM, 10); m_html->Bind(wxEVT_HTML_LINK_CLICKED, &AboutDialog::onLinkClicked, this); @@ -113,9 +120,6 @@ AboutDialog::AboutDialog() this->SetEscapeId(wxID_CLOSE); this->Bind(wxEVT_BUTTON, &AboutDialog::onCloseDialog, this, wxID_CLOSE); vsizer->Add(buttons, 0, wxEXPAND | wxRIGHT | wxBOTTOM, 3); - -// this->Bind(wxEVT_LEFT_DOWN, &AboutDialog::onCloseDialog, this); -// logo->Bind(wxEVT_LEFT_DOWN, &AboutDialog::onCloseDialog, this); SetSizer(main_sizer); main_sizer->SetSizeHints(this); From 8126ec33fc0ab2084ae10bf1695895697eaee9f4 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Thu, 9 May 2019 17:18:03 +0200 Subject: [PATCH 89/94] Fixed localization of 3D scene toolbar tips. --- doc/Localization_guide.md | 2 +- src/slic3r/GUI/GLCanvas3D.cpp | 26 ++++++++++---------- src/slic3r/GUI/Gizmos/GLGizmoCut.cpp | 2 +- src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp | 2 +- src/slic3r/GUI/Gizmos/GLGizmoMove.cpp | 2 +- src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp | 2 +- src/slic3r/GUI/Gizmos/GLGizmoScale.cpp | 2 +- src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp | 2 +- src/slic3r/GUI/I18N.hpp | 12 +++++++++ src/slic3r/GUI/Plater.cpp | 14 +++++------ 10 files changed, 39 insertions(+), 27 deletions(-) diff --git a/doc/Localization_guide.md b/doc/Localization_guide.md index 3394d29587..abf898cb84 100644 --- a/doc/Localization_guide.md +++ b/doc/Localization_guide.md @@ -36,7 +36,7 @@ Each string resource in Slic3rPE available for translation needs to be explicitl ```C++ auto msg = L("This message to be localized") ``` -To get translated text use one of needed macro/function (`_(s)`, `_CHB(s)` or `L_str(s)` ). +To get translated text use one of needed macro/function (`_(s)` or `_CHB(s)` ). If you add new file resource, add it to the list of files containing macro `L()` ### Scenario 4. How do I use GNUgettext to localize my own application taking Slic3rPE as an example diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 307b0af59c..8619bec1c5 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -3035,10 +3035,10 @@ void GLCanvas3D::set_tooltip(const std::string& tooltip) const if (tooltip.empty()) m_canvas->UnsetToolTip(); else - t->SetTip(tooltip); + t->SetTip(wxString::FromUTF8(tooltip.data())); } else if (!tooltip.empty()) // Avoid "empty" tooltips => unset of the empty tooltip leads to application crash under OSX - m_canvas->SetToolTip(tooltip); + m_canvas->SetToolTip(wxString::FromUTF8(tooltip.data())); } } @@ -3389,7 +3389,7 @@ bool GLCanvas3D::_init_toolbar() #if ENABLE_SVG_ICONS item.icon_filename = "add.svg"; #endif // ENABLE_SVG_ICONS - item.tooltip = GUI::L_str("Add...") + " [" + GUI::shortkey_ctrl_prefix() + "I]"; + item.tooltip = _utf8(L("Add...")) + " [" + GUI::shortkey_ctrl_prefix() + "I]"; item.sprite_id = 0; item.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_ADD)); }; if (!m_toolbar.add_item(item)) @@ -3399,7 +3399,7 @@ bool GLCanvas3D::_init_toolbar() #if ENABLE_SVG_ICONS item.icon_filename = "remove.svg"; #endif // ENABLE_SVG_ICONS - item.tooltip = GUI::L_str("Delete") + " [Del]"; + item.tooltip = _utf8(L("Delete")) + " [Del]"; item.sprite_id = 1; item.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_DELETE)); }; item.enabled_state_callback = []()->bool { return wxGetApp().plater()->can_delete(); }; @@ -3410,7 +3410,7 @@ bool GLCanvas3D::_init_toolbar() #if ENABLE_SVG_ICONS item.icon_filename = "delete_all.svg"; #endif // ENABLE_SVG_ICONS - item.tooltip = GUI::L_str("Delete all") + " [" + GUI::shortkey_ctrl_prefix() + "Del]"; + item.tooltip = _utf8(L("Delete all")) + " [" + GUI::shortkey_ctrl_prefix() + "Del]"; item.sprite_id = 2; item.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_DELETE_ALL)); }; item.enabled_state_callback = []()->bool { return wxGetApp().plater()->can_delete_all(); }; @@ -3421,7 +3421,7 @@ bool GLCanvas3D::_init_toolbar() #if ENABLE_SVG_ICONS item.icon_filename = "arrange.svg"; #endif // ENABLE_SVG_ICONS - item.tooltip = GUI::L_str("Arrange [A]"); + item.tooltip = _utf8(L("Arrange")) + " [A]"; item.sprite_id = 3; item.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_ARRANGE)); }; item.enabled_state_callback = []()->bool { return wxGetApp().plater()->can_arrange(); }; @@ -3435,7 +3435,7 @@ bool GLCanvas3D::_init_toolbar() #if ENABLE_SVG_ICONS item.icon_filename = "copy.svg"; #endif // ENABLE_SVG_ICONS - item.tooltip = GUI::L_str("Copy") + " [" + GUI::shortkey_ctrl_prefix() + "C]"; + item.tooltip = _utf8(L("Copy")) + " [" + GUI::shortkey_ctrl_prefix() + "C]"; item.sprite_id = 4; item.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_COPY)); }; item.enabled_state_callback = []()->bool { return wxGetApp().plater()->can_copy(); }; @@ -3446,7 +3446,7 @@ bool GLCanvas3D::_init_toolbar() #if ENABLE_SVG_ICONS item.icon_filename = "paste.svg"; #endif // ENABLE_SVG_ICONS - item.tooltip = GUI::L_str("Paste") + " [" + GUI::shortkey_ctrl_prefix() + "V]"; + item.tooltip = _utf8(L("Paste")) + " [" + GUI::shortkey_ctrl_prefix() + "V]"; item.sprite_id = 5; item.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_PASTE)); }; item.enabled_state_callback = []()->bool { return wxGetApp().plater()->can_paste(); }; @@ -3460,7 +3460,7 @@ bool GLCanvas3D::_init_toolbar() #if ENABLE_SVG_ICONS item.icon_filename = "instance_add.svg"; #endif // ENABLE_SVG_ICONS - item.tooltip = GUI::L_str("Add instance [+]"); + item.tooltip = _utf8(L("Add instance")) + " [+]"; item.sprite_id = 6; item.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_MORE)); }; item.visibility_callback = []()->bool { return wxGetApp().get_mode() != comSimple; }; @@ -3472,7 +3472,7 @@ bool GLCanvas3D::_init_toolbar() #if ENABLE_SVG_ICONS item.icon_filename = "instance_remove.svg"; #endif // ENABLE_SVG_ICONS - item.tooltip = GUI::L_str("Remove instance [-]"); + item.tooltip = _utf8(L("Remove instance")) + " [-]"; item.sprite_id = 7; item.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_FEWER)); }; item.visibility_callback = []()->bool { return wxGetApp().get_mode() != comSimple; }; @@ -3487,7 +3487,7 @@ bool GLCanvas3D::_init_toolbar() #if ENABLE_SVG_ICONS item.icon_filename = "split_objects.svg"; #endif // ENABLE_SVG_ICONS - item.tooltip = GUI::L_str("Split to objects"); + item.tooltip = _utf8(L("Split to objects")); item.sprite_id = 8; item.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_SPLIT_OBJECTS)); }; item.visibility_callback = GLToolbarItem::Default_Visibility_Callback; @@ -3499,7 +3499,7 @@ bool GLCanvas3D::_init_toolbar() #if ENABLE_SVG_ICONS item.icon_filename = "split_parts.svg"; #endif // ENABLE_SVG_ICONS - item.tooltip = GUI::L_str("Split to parts"); + item.tooltip = _utf8(L("Split to parts")); item.sprite_id = 9; item.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_SPLIT_VOLUMES)); }; item.visibility_callback = []()->bool { return wxGetApp().get_mode() != comSimple; }; @@ -3514,7 +3514,7 @@ bool GLCanvas3D::_init_toolbar() #if ENABLE_SVG_ICONS item.icon_filename = "layers_white.svg"; #endif // ENABLE_SVG_ICONS - item.tooltip = GUI::L_str("Layers editing"); + item.tooltip = _utf8(L("Layers editing")); item.sprite_id = 10; item.is_toggable = true; item.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_LAYERSEDITING)); }; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp index cabede8cd6..8934bc52b4 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp @@ -85,7 +85,7 @@ bool GLGizmoCut::on_init() std::string GLGizmoCut::on_get_name() const { - return L("Cut [C]"); + return (_(L("Cut")) + " [C]").ToUTF8().data(); } void GLGizmoCut::on_set_state() diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp index 56dbf4f54f..ec991a2413 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp @@ -29,7 +29,7 @@ bool GLGizmoFlatten::on_init() std::string GLGizmoFlatten::on_get_name() const { - return L("Place on face [F]"); + return (_(L("Place on face")) + " [F]").ToUTF8().data(); } bool GLGizmoFlatten::on_is_activable(const Selection& selection) const diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMove.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMove.cpp index 346bf5b066..c8925ad60d 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMove.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMove.cpp @@ -48,7 +48,7 @@ bool GLGizmoMove3D::on_init() std::string GLGizmoMove3D::on_get_name() const { - return L("Move [M]"); + return (_(L("Move")) + " [M]").ToUTF8().data(); } void GLGizmoMove3D::on_start_dragging(const Selection& selection) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp b/src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp index ff9cf380e2..68b9a8c332 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp @@ -455,7 +455,7 @@ bool GLGizmoRotate3D::on_init() std::string GLGizmoRotate3D::on_get_name() const { - return L("Rotate [R]"); + return (_(L("Rotate")) + " [R]").ToUTF8().data(); } void GLGizmoRotate3D::on_start_dragging(const Selection& selection) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoScale.cpp b/src/slic3r/GUI/Gizmos/GLGizmoScale.cpp index a4f3969341..30b60d3729 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoScale.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoScale.cpp @@ -48,7 +48,7 @@ bool GLGizmoScale3D::on_init() std::string GLGizmoScale3D::on_get_name() const { - return L("Scale [S]"); + return (_(L("Scale")) + " [S]").ToUTF8().data(); } void GLGizmoScale3D::on_start_dragging(const Selection& selection) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp index 1400bef5ef..b2b7c9872f 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp @@ -994,7 +994,7 @@ bool GLGizmoSlaSupports::on_is_selectable() const std::string GLGizmoSlaSupports::on_get_name() const { - return L("SLA Support Points [L]"); + return (_(L("SLA Support Points")) + " [L]").ToUTF8().data(); } void GLGizmoSlaSupports::on_set_state() diff --git a/src/slic3r/GUI/I18N.hpp b/src/slic3r/GUI/I18N.hpp index a899eaa59d..cf85f7410c 100644 --- a/src/slic3r/GUI/I18N.hpp +++ b/src/slic3r/GUI/I18N.hpp @@ -1,9 +1,11 @@ #ifndef _ #define _(s) Slic3r::GUI::I18N::translate((s)) +#define _utf8(s) Slic3r::GUI::I18N::translate_utf8((s)) #endif /* _ */ #ifndef _CTX #define _CTX(s, ctx) Slic3r::GUI::I18N::translate((s), (ctx)) +#define _CTX_utf8(s, ctx) Slic3r::GUI::I18N::translate_utf8((s), (ctx)) #endif /* _ */ #ifndef L @@ -35,6 +37,11 @@ namespace I18N { inline wxString translate(const std::string &s) { return wxGetTranslation(wxString(s.c_str(), wxConvUTF8)); } inline wxString translate(const std::wstring &s) { return wxGetTranslation(s.c_str()); } + inline std::string translate_utf8(const char *s) { return wxGetTranslation(wxString(s, wxConvUTF8)).ToUTF8().data(); } + inline std::string translate_utf8(const wchar_t *s) { return wxGetTranslation(s).ToUTF8().data(); } + inline std::string translate_utf8(const std::string &s) { return wxGetTranslation(wxString(s.c_str(), wxConvUTF8)).ToUTF8().data(); } + inline std::string translate_utf8(const std::wstring &s) { return wxGetTranslation(s.c_str()).ToUTF8().data(); } + #if wxCHECK_VERSION(3, 1, 1) #define _wxGetTranslation_ctx(S, CTX) wxGetTranslation((S), wxEmptyString, (CTX)) #else @@ -46,6 +53,11 @@ namespace I18N { inline wxString translate(const std::string &s, const char* ctx) { return _wxGetTranslation_ctx(wxString(s.c_str(), wxConvUTF8), ctx); } inline wxString translate(const std::wstring &s, const char* ctx) { return _wxGetTranslation_ctx(s.c_str(), ctx); } + inline wxString translate_utf8(const char *s, const char* ctx) { return _wxGetTranslation_ctx(wxString(s, wxConvUTF8), ctx).ToUTF8().data(); } + inline wxString translate_utf8(const wchar_t *s, const char* ctx) { return _wxGetTranslation_ctx(s, ctx).ToUTF8().data(); } + inline wxString translate_utf8(const std::string &s, const char* ctx) { return _wxGetTranslation_ctx(wxString(s.c_str(), wxConvUTF8), ctx).ToUTF8().data(); } + inline wxString translate_utf8(const std::wstring &s, const char* ctx) { return _wxGetTranslation_ctx(s.c_str(), ctx).ToUTF8().data(); } + #undef _wxGetTranslation_ctx } diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 022cb2e9dd..f5b4a65454 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -685,11 +685,11 @@ Sidebar::Sidebar(Plater *parent) }; p->combos_filament.push_back(nullptr); - init_combo(&p->combo_print, _(L("Print settings")), Preset::TYPE_PRINT, false); - init_combo(&p->combos_filament[0], _(L("Filament")), Preset::TYPE_FILAMENT, true); - init_combo(&p->combo_sla_print, _(L("SLA print")), Preset::TYPE_SLA_PRINT, false); - init_combo(&p->combo_sla_material, _(L("SLA material")), Preset::TYPE_SLA_MATERIAL, false); - init_combo(&p->combo_printer, _(L("Printer")), Preset::TYPE_PRINTER, false); + init_combo(&p->combo_print, _(L("Print settings")), Preset::TYPE_PRINT, false); + init_combo(&p->combos_filament[0], _(L("Filament")), Preset::TYPE_FILAMENT, true); + init_combo(&p->combo_sla_print, _(L("SLA print settings")), Preset::TYPE_SLA_PRINT, false); + init_combo(&p->combo_sla_material, _(L("SLA material")), Preset::TYPE_SLA_MATERIAL, false); + init_combo(&p->combo_printer, _(L("Printer")), Preset::TYPE_PRINTER, false); const int margin_5 = int(0.5*wxGetApp().em_unit());// 5; const int margin_10 = 10;//int(1.5*wxGetApp().em_unit());// 15; @@ -3071,7 +3071,7 @@ void Plater::priv::init_view_toolbar() #if ENABLE_SVG_ICONS item.icon_filename = "editor.svg"; #endif // ENABLE_SVG_ICONS - item.tooltip = GUI::L_str("3D editor view") + " [" + GUI::shortkey_ctrl_prefix() + "5]"; + item.tooltip = _utf8(L("3D editor view")) + " [" + GUI::shortkey_ctrl_prefix() + "5]"; item.sprite_id = 0; item.action_callback = [this]() { if (this->q != nullptr) wxPostEvent(this->q, SimpleEvent(EVT_GLVIEWTOOLBAR_3D)); }; item.is_toggable = false; @@ -3082,7 +3082,7 @@ void Plater::priv::init_view_toolbar() #if ENABLE_SVG_ICONS item.icon_filename = "preview.svg"; #endif // ENABLE_SVG_ICONS - item.tooltip = GUI::L_str("Preview") + " [" + GUI::shortkey_ctrl_prefix() + "6]"; + item.tooltip = _utf8(L("Preview")) + " [" + GUI::shortkey_ctrl_prefix() + "6]"; item.sprite_id = 1; item.action_callback = [this]() { if (this->q != nullptr) wxPostEvent(this->q, SimpleEvent(EVT_GLVIEWTOOLBAR_PREVIEW)); }; item.is_toggable = false; From 5757728f2b313a9cab79fbf6396d7ec9a779b7d3 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Thu, 9 May 2019 17:35:18 +0200 Subject: [PATCH 90/94] Localization of "Upload to host" table legend. --- src/slic3r/GUI/PrintHostDialogs.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/slic3r/GUI/PrintHostDialogs.cpp b/src/slic3r/GUI/PrintHostDialogs.cpp index 2b6e4f2a26..82795efc46 100644 --- a/src/slic3r/GUI/PrintHostDialogs.cpp +++ b/src/slic3r/GUI/PrintHostDialogs.cpp @@ -145,12 +145,12 @@ PrintHostQueueDialog::PrintHostQueueDialog(wxWindow *parent) job_list = new wxDataViewListCtrl(this, wxID_ANY); // Note: Keep these in sync with Column - job_list->AppendTextColumn("ID", wxDATAVIEW_CELL_INERT); - job_list->AppendProgressColumn("Progress", wxDATAVIEW_CELL_INERT); - job_list->AppendTextColumn("Status", wxDATAVIEW_CELL_INERT); - job_list->AppendTextColumn("Host", wxDATAVIEW_CELL_INERT); - job_list->AppendTextColumn("Filename", wxDATAVIEW_CELL_INERT); - job_list->AppendTextColumn("error_message", wxDATAVIEW_CELL_INERT, -1, wxALIGN_CENTER, wxDATAVIEW_COL_HIDDEN); + job_list->AppendTextColumn(_(L("ID")), wxDATAVIEW_CELL_INERT); + job_list->AppendProgressColumn(_(L("Progress")), wxDATAVIEW_CELL_INERT); + job_list->AppendTextColumn(_(L("Status")), wxDATAVIEW_CELL_INERT); + job_list->AppendTextColumn(_(L("Host")), wxDATAVIEW_CELL_INERT); + job_list->AppendTextColumn(_(L("Filename")), wxDATAVIEW_CELL_INERT); + job_list->AppendTextColumn(_(L("Error Message")), wxDATAVIEW_CELL_INERT, -1, wxALIGN_CENTER, wxDATAVIEW_COL_HIDDEN); auto *btnsizer = new wxBoxSizer(wxHORIZONTAL); btn_cancel = new wxButton(this, wxID_DELETE, _(L("Cancel selected"))); From b6837112dfff4ab9c7b3ea3081a6b29908e08fed Mon Sep 17 00:00:00 2001 From: bubnikv Date: Thu, 9 May 2019 18:18:21 +0200 Subject: [PATCH 91/94] Some more localization improvmenets. --- src/slic3r/GUI/ConfigWizard.cpp | 20 +++++++++++++------- src/slic3r/GUI/FirmwareDialog.cpp | 1 + src/slic3r/GUI/KBShortcutsDialog.cpp | 2 +- src/slic3r/GUI/Plater.cpp | 2 +- src/slic3r/GUI/wxExtensions.cpp | 10 +++++++++- src/slic3r/GUI/wxExtensions.hpp | 11 ++--------- 6 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index 4fbaa45637..09d0ec0854 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -291,7 +291,13 @@ void ConfigWizardPage::append_spacer(int space) // Wizard pages PageWelcome::PageWelcome(ConfigWizard *parent) - : ConfigWizardPage(parent, wxString::Format(_(L("Welcome to the %s %s")), SLIC3R_APP_NAME, ConfigWizard::name()), _(L("Welcome"))) + : ConfigWizardPage(parent, wxString::Format( +#ifdef __APPLE__ + _(L("Welcome to the %s Configuration Assistant")) +#else + _(L("Welcome to the %s Configuration Wizard")) +#endif + , SLIC3R_APP_NAME), _(L("Welcome"))) , cbox_reset(nullptr) { if (wizard_p()->run_reason == ConfigWizard::RR_DATA_EMPTY) { @@ -488,7 +494,7 @@ PageFirmware::PageFirmware(ConfigWizard *parent) , gcode_picker(nullptr) { append_text(_(L("Choose the type of firmware used by your printer."))); - append_text(gcode_opt.tooltip); + append_text(_(gcode_opt.tooltip)); wxArrayString choices; choices.Alloc(gcode_opt.enum_labels.size()); @@ -1175,12 +1181,12 @@ bool ConfigWizard::run(PresetBundle *preset_bundle, const PresetUpdater *updater const wxString& ConfigWizard::name(const bool from_menu/* = false*/) { // A different naming convention is used for the Wizard on Windows vs. OSX & GTK. -#if WIN32 - static const wxString config_wizard_name = L("Configuration Wizard"); - static const wxString config_wizard_name_menu = L("Configuration &Wizard"); +#if __APPLE__ + static const wxString config_wizard_name = _(L("Configuration Assistant")); + static const wxString config_wizard_name_menu = _(L("Configuration &Assistant")); #else - static const wxString config_wizard_name = L("Configuration Assistant"); - static const wxString config_wizard_name_menu = L("Configuration &Assistant"); + static const wxString config_wizard_name = _(L("Configuration Wizard")); + static const wxString config_wizard_name_menu = _(L("Configuration &Wizard")); #endif return from_menu ? config_wizard_name_menu : config_wizard_name; } diff --git a/src/slic3r/GUI/FirmwareDialog.cpp b/src/slic3r/GUI/FirmwareDialog.cpp index 5de5626db8..da6e77fcd8 100644 --- a/src/slic3r/GUI/FirmwareDialog.cpp +++ b/src/slic3r/GUI/FirmwareDialog.cpp @@ -765,6 +765,7 @@ FirmwareDialog::FirmwareDialog(wxWindow *parent) : auto *label_hex_picker = new wxStaticText(panel, wxID_ANY, _(L("Firmware image:"))); p->hex_picker = new wxFilePickerCtrl(panel, wxID_ANY, wxEmptyString, wxFileSelectorPromptStr, "Hex files (*.hex)|*.hex|All files|*.*"); + p->hex_picker->GetPickerCtrl()->SetLabelText(_(L("Browse"))); auto *label_port_picker = new wxStaticText(panel, wxID_ANY, _(L("Serial port:"))); p->port_picker = new wxComboBox(panel, wxID_ANY); diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index a032c97615..1990c4ae27 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -112,7 +112,7 @@ void KBShortcutsDialog::fill_shortcuts() // main_shortcuts.push_back(Shortcut(ctrl+"U" ,L("Quick slice"))); // main_shortcuts.push_back(Shortcut(ctrl+"Shift+U" ,L("Repeat last quick slice"))); main_shortcuts.push_back(Shortcut(ctrl+"1" ,L("Select Plater Tab"))); - main_shortcuts.push_back(Shortcut(ctrl+alt+"U" ,L("Quick slice and Save as"))); +// main_shortcuts.push_back(Shortcut(ctrl+alt+"U" ,L("Quick slice and Save as"))); main_shortcuts.push_back(Shortcut(ctrl+"2" ,L("Select Print Settings Tab"))); main_shortcuts.push_back(Shortcut(ctrl+"3" ,L("Select Filament Settings Tab"))); main_shortcuts.push_back(Shortcut(ctrl+"4" ,L("Select Printer Settings Tab"))); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index f5b4a65454..fa2c166d23 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2101,7 +2101,7 @@ void Plater::priv::arrange() event.SetString(msg); wxQueueEvent(this->q, event.Clone()); */ statusbar()->set_progress(count - st); - statusbar()->set_status_text(msg); + statusbar()->set_status_text(_(msg)); // ok, this is dangerous, but we are protected by the flag // 'arranging' and the arrange button is also disabled. diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 7485d63751..21e8c348d8 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -404,7 +404,7 @@ ObjectDataViewModelNode::ObjectDataViewModelNode(ObjectDataViewModelNode* parent } else if (type == itInstance) { m_idx = parent->GetChildCount(); - m_name = wxString::Format(_(L("Instance_%d")), m_idx + 1); + m_name = wxString::Format(_(L("Instance %d")), m_idx + 1); set_action_icon(); } @@ -466,6 +466,14 @@ void ObjectDataViewModelNode::msw_rescale() update_settings_digest_bitmaps(); } +void ObjectDataViewModelNode::SetIdx(const int& idx) +{ + m_idx = idx; + // update name if this node is instance + if (m_type == itInstance) + m_name = wxString::Format(_(L("Instance %d")), m_idx + 1); +} + // ***************************************************************************** // ---------------------------------------------------------------------------- // ObjectDataViewModel diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp index 001eeb0d1f..2b47cd77eb 100644 --- a/src/slic3r/GUI/wxExtensions.hpp +++ b/src/slic3r/GUI/wxExtensions.hpp @@ -312,15 +312,8 @@ public: const wxBitmap& GetBitmap() const { return m_bmp; } const wxString& GetName() const { return m_name; } ItemType GetType() const { return m_type; } - - void SetIdx(const int& idx) { - m_idx = idx; - // update name if this node is instance - if (m_type == itInstance) - m_name = wxString::Format("Instance_%d", m_idx + 1); - } - - int GetIdx() const { return m_idx; } + void SetIdx(const int& idx); + int GetIdx() const { return m_idx; } // use this function only for childrens void AssignAllVal(ObjectDataViewModelNode& from_node) From b7361200bf117318ed664ba8f213d83cd6840efb Mon Sep 17 00:00:00 2001 From: bubnikv Date: Thu, 9 May 2019 19:24:21 +0200 Subject: [PATCH 92/94] Some more localization improvements. --- resources/localization/Slic3rPE.pot | 3267 ++++++++++-------- src/slic3r/GUI/ButtonsDescription.cpp | 17 +- src/slic3r/GUI/ButtonsDescription.hpp | 16 +- src/slic3r/GUI/GLCanvas3D.cpp | 2 +- src/slic3r/GUI/GUI_App.cpp | 6 +- src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp | 40 +- src/slic3r/GUI/Tab.cpp | 18 +- src/slic3r/GUI/Tab.hpp | 6 +- 8 files changed, 1796 insertions(+), 1576 deletions(-) diff --git a/resources/localization/Slic3rPE.pot b/resources/localization/Slic3rPE.pot index be2a344c9c..e2f4a6ec25 100644 --- a/resources/localization/Slic3rPE.pot +++ b/resources/localization/Slic3rPE.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-04 01:38+0200\n" +"POT-Creation-Date: 2019-05-09 19:23+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,10 +22,30 @@ msgstr "" msgid "About %s" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:67 src/slic3r/GUI/MainFrame.cpp:53 +#: src/slic3r/GUI/AboutDialog.cpp:67 src/slic3r/GUI/MainFrame.cpp:59 msgid "Version" msgstr "" +#: src/slic3r/GUI/AboutDialog.cpp:92 +msgid "Copyright" +msgstr "" + +#. TRN "Slic3r _is licensed under the_ License" +#: src/slic3r/GUI/AboutDialog.cpp:94 +msgid "is licensed under the" +msgstr "" + +#: src/slic3r/GUI/AboutDialog.cpp:95 +msgid "GNU Affero General Public License, version 3" +msgstr "" + +#: src/slic3r/GUI/AboutDialog.cpp:96 +msgid "" +"Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " +"Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " +"numerous others." +msgstr "" + #: src/slic3r/GUI/BedShapeDialog.cpp:60 msgid "Shape" msgstr "" @@ -35,8 +55,8 @@ msgid "Rectangular" msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:72 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:153 src/slic3r/GUI/Plater.cpp:137 -#: src/slic3r/GUI/Tab.cpp:2257 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:232 src/slic3r/GUI/Plater.cpp:137 +#: src/slic3r/GUI/Tab.cpp:2258 msgid "Size" msgstr "" @@ -59,38 +79,38 @@ msgid "Circular" msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:87 src/slic3r/GUI/ConfigWizard.cpp:118 -#: src/slic3r/GUI/ConfigWizard.cpp:561 src/slic3r/GUI/ConfigWizard.cpp:575 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:150 +#: src/slic3r/GUI/ConfigWizard.cpp:565 src/slic3r/GUI/ConfigWizard.cpp:579 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:229 #: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:84 -#: src/libslic3r/PrintConfig.cpp:59 src/libslic3r/PrintConfig.cpp:66 -#: src/libslic3r/PrintConfig.cpp:75 src/libslic3r/PrintConfig.cpp:210 -#: src/libslic3r/PrintConfig.cpp:285 src/libslic3r/PrintConfig.cpp:293 -#: src/libslic3r/PrintConfig.cpp:343 src/libslic3r/PrintConfig.cpp:353 -#: src/libslic3r/PrintConfig.cpp:473 src/libslic3r/PrintConfig.cpp:484 -#: src/libslic3r/PrintConfig.cpp:502 src/libslic3r/PrintConfig.cpp:680 -#: src/libslic3r/PrintConfig.cpp:1166 src/libslic3r/PrintConfig.cpp:1227 -#: src/libslic3r/PrintConfig.cpp:1245 src/libslic3r/PrintConfig.cpp:1263 -#: src/libslic3r/PrintConfig.cpp:1315 src/libslic3r/PrintConfig.cpp:1325 -#: src/libslic3r/PrintConfig.cpp:1446 src/libslic3r/PrintConfig.cpp:1454 -#: src/libslic3r/PrintConfig.cpp:1495 src/libslic3r/PrintConfig.cpp:1503 -#: src/libslic3r/PrintConfig.cpp:1513 src/libslic3r/PrintConfig.cpp:1521 -#: src/libslic3r/PrintConfig.cpp:1529 src/libslic3r/PrintConfig.cpp:1612 -#: src/libslic3r/PrintConfig.cpp:1828 src/libslic3r/PrintConfig.cpp:1898 -#: src/libslic3r/PrintConfig.cpp:1932 src/libslic3r/PrintConfig.cpp:2125 -#: src/libslic3r/PrintConfig.cpp:2132 src/libslic3r/PrintConfig.cpp:2139 -#: src/libslic3r/PrintConfig.cpp:2169 src/libslic3r/PrintConfig.cpp:2179 -#: src/libslic3r/PrintConfig.cpp:2189 src/libslic3r/PrintConfig.cpp:2297 -#: src/libslic3r/PrintConfig.cpp:2372 src/libslic3r/PrintConfig.cpp:2381 -#: src/libslic3r/PrintConfig.cpp:2390 src/libslic3r/PrintConfig.cpp:2400 -#: src/libslic3r/PrintConfig.cpp:2444 src/libslic3r/PrintConfig.cpp:2454 -#: src/libslic3r/PrintConfig.cpp:2473 src/libslic3r/PrintConfig.cpp:2483 -#: src/libslic3r/PrintConfig.cpp:2492 src/libslic3r/PrintConfig.cpp:2510 -#: src/libslic3r/PrintConfig.cpp:2525 src/libslic3r/PrintConfig.cpp:2539 -#: src/libslic3r/PrintConfig.cpp:2552 src/libslic3r/PrintConfig.cpp:2562 +#: src/libslic3r/PrintConfig.cpp:60 src/libslic3r/PrintConfig.cpp:67 +#: src/libslic3r/PrintConfig.cpp:76 src/libslic3r/PrintConfig.cpp:211 +#: src/libslic3r/PrintConfig.cpp:286 src/libslic3r/PrintConfig.cpp:294 +#: src/libslic3r/PrintConfig.cpp:344 src/libslic3r/PrintConfig.cpp:354 +#: src/libslic3r/PrintConfig.cpp:474 src/libslic3r/PrintConfig.cpp:485 +#: src/libslic3r/PrintConfig.cpp:503 src/libslic3r/PrintConfig.cpp:681 +#: src/libslic3r/PrintConfig.cpp:1191 src/libslic3r/PrintConfig.cpp:1252 +#: src/libslic3r/PrintConfig.cpp:1270 src/libslic3r/PrintConfig.cpp:1288 +#: src/libslic3r/PrintConfig.cpp:1340 src/libslic3r/PrintConfig.cpp:1350 +#: src/libslic3r/PrintConfig.cpp:1471 src/libslic3r/PrintConfig.cpp:1479 +#: src/libslic3r/PrintConfig.cpp:1520 src/libslic3r/PrintConfig.cpp:1528 +#: src/libslic3r/PrintConfig.cpp:1538 src/libslic3r/PrintConfig.cpp:1546 +#: src/libslic3r/PrintConfig.cpp:1554 src/libslic3r/PrintConfig.cpp:1637 +#: src/libslic3r/PrintConfig.cpp:1853 src/libslic3r/PrintConfig.cpp:1923 +#: src/libslic3r/PrintConfig.cpp:1957 src/libslic3r/PrintConfig.cpp:2150 +#: src/libslic3r/PrintConfig.cpp:2157 src/libslic3r/PrintConfig.cpp:2164 +#: src/libslic3r/PrintConfig.cpp:2194 src/libslic3r/PrintConfig.cpp:2204 +#: src/libslic3r/PrintConfig.cpp:2214 src/libslic3r/PrintConfig.cpp:2322 +#: src/libslic3r/PrintConfig.cpp:2397 src/libslic3r/PrintConfig.cpp:2406 +#: src/libslic3r/PrintConfig.cpp:2415 src/libslic3r/PrintConfig.cpp:2425 +#: src/libslic3r/PrintConfig.cpp:2469 src/libslic3r/PrintConfig.cpp:2479 +#: src/libslic3r/PrintConfig.cpp:2498 src/libslic3r/PrintConfig.cpp:2508 +#: src/libslic3r/PrintConfig.cpp:2517 src/libslic3r/PrintConfig.cpp:2535 +#: src/libslic3r/PrintConfig.cpp:2550 src/libslic3r/PrintConfig.cpp:2564 +#: src/libslic3r/PrintConfig.cpp:2577 src/libslic3r/PrintConfig.cpp:2587 msgid "mm" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:88 src/libslic3r/PrintConfig.cpp:677 +#: src/slic3r/GUI/BedShapeDialog.cpp:88 src/libslic3r/PrintConfig.cpp:678 msgid "Diameter" msgstr "" @@ -117,7 +137,7 @@ msgstr "" msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/GUI_ObjectList.cpp:1431 +#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/GUI_ObjectList.cpp:1443 msgid "Error! " msgstr "" @@ -130,7 +150,7 @@ msgid "" "The selected file contains several disjoint areas. This is not supported." msgstr "" -#: src/slic3r/GUI/BedShapeDialog.hpp:45 src/slic3r/GUI/ConfigWizard.cpp:524 +#: src/slic3r/GUI/BedShapeDialog.hpp:45 src/slic3r/GUI/ConfigWizard.cpp:530 msgid "Bed Shape" msgstr "" @@ -166,11 +186,11 @@ msgstr "" msgid "Buttons And Text Colors Description" msgstr "" -#: src/slic3r/GUI/ButtonsDescription.cpp:41 +#: src/slic3r/GUI/ButtonsDescription.cpp:36 msgid "Value is the same as the system value" msgstr "" -#: src/slic3r/GUI/ButtonsDescription.cpp:58 +#: src/slic3r/GUI/ButtonsDescription.cpp:53 msgid "" "Value was changed and is not equal to the system value or the last saved " "preset" @@ -216,7 +236,7 @@ msgstr "" msgid "printer" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 src/slic3r/GUI/Tab.cpp:921 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 src/slic3r/GUI/Tab.cpp:929 msgid "vendor" msgstr "" @@ -265,76 +285,81 @@ msgstr "" msgid "All standard" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:189 src/slic3r/GUI/Tab.cpp:2986 +#: src/slic3r/GUI/ConfigWizard.cpp:189 src/slic3r/GUI/Tab.cpp:2987 msgid "All" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:190 src/slic3r/GUI/Plater.cpp:422 +#: src/slic3r/GUI/ConfigWizard.cpp:190 src/slic3r/GUI/Plater.cpp:433 #: src/libslic3r/GCode/PreviewData.cpp:162 msgid "None" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:294 +#: src/slic3r/GUI/ConfigWizard.cpp:296 #, possible-c-format -msgid "Welcome to the %s %s" +msgid "Welcome to the %s Configuration Assistant" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:294 +#: src/slic3r/GUI/ConfigWizard.cpp:298 +#, possible-c-format +msgid "Welcome to the %s Configuration Wizard" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:300 msgid "Welcome" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:298 src/slic3r/GUI/GUI_App.cpp:658 +#: src/slic3r/GUI/ConfigWizard.cpp:304 src/slic3r/GUI/GUI_App.cpp:670 #, possible-c-format msgid "Run %s" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:300 +#: src/slic3r/GUI/ConfigWizard.cpp:306 #, possible-c-format msgid "" "Hello, welcome to %s! This %s helps you with the initial configuration; just " "a few settings and you will be ready to print." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:305 +#: src/slic3r/GUI/ConfigWizard.cpp:311 msgid "" "Remove user profiles - install from scratch (a snapshot will be taken " "beforehand)" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:336 +#: src/slic3r/GUI/ConfigWizard.cpp:342 #, possible-c-format msgid "%s Family" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:373 +#: src/slic3r/GUI/ConfigWizard.cpp:379 msgid "Custom Printer Setup" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:373 +#: src/slic3r/GUI/ConfigWizard.cpp:379 msgid "Custom Printer" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:375 +#: src/slic3r/GUI/ConfigWizard.cpp:381 msgid "Define a custom printer profile" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:377 +#: src/slic3r/GUI/ConfigWizard.cpp:383 msgid "Custom profile name:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:401 +#: src/slic3r/GUI/ConfigWizard.cpp:407 msgid "Automatic updates" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:401 +#: src/slic3r/GUI/ConfigWizard.cpp:407 msgid "Updates" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:409 src/slic3r/GUI/Preferences.cpp:61 +#: src/slic3r/GUI/ConfigWizard.cpp:415 src/slic3r/GUI/Preferences.cpp:61 msgid "Check for application updates" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:413 +#: src/slic3r/GUI/ConfigWizard.cpp:419 #, possible-c-format msgid "" "If enabled, %s checks for new application versions online. When a new " @@ -343,11 +368,11 @@ msgid "" "notification mechanisms, no automatic installation is done." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:419 src/slic3r/GUI/Preferences.cpp:69 +#: src/slic3r/GUI/ConfigWizard.cpp:425 src/slic3r/GUI/Preferences.cpp:69 msgid "Update built-in Presets automatically" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:423 +#: src/slic3r/GUI/ConfigWizard.cpp:429 #, possible-c-format msgid "" "If enabled, %s downloads updates of built-in system presets in the " @@ -356,185 +381,185 @@ msgid "" "startup." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:426 +#: src/slic3r/GUI/ConfigWizard.cpp:432 msgid "" "Updates are never applied without user's consent and never overwrite user's " "customized settings." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:431 +#: src/slic3r/GUI/ConfigWizard.cpp:437 msgid "" "Additionally a backup snapshot of the whole configuration is created before " "an update is applied." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:438 +#: src/slic3r/GUI/ConfigWizard.cpp:444 msgid "Other Vendors" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:440 +#: src/slic3r/GUI/ConfigWizard.cpp:446 #, possible-c-format msgid "Pick another vendor supported by %s:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:486 +#: src/slic3r/GUI/ConfigWizard.cpp:492 msgid "Firmware Type" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:486 src/slic3r/GUI/Tab.cpp:1920 +#: src/slic3r/GUI/ConfigWizard.cpp:492 src/slic3r/GUI/Tab.cpp:1921 msgid "Firmware" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:490 +#: src/slic3r/GUI/ConfigWizard.cpp:496 msgid "Choose the type of firmware used by your printer." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:524 +#: src/slic3r/GUI/ConfigWizard.cpp:530 msgid "Bed Shape and Size" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:527 +#: src/slic3r/GUI/ConfigWizard.cpp:533 msgid "Set the shape of your printer's bed." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:541 +#: src/slic3r/GUI/ConfigWizard.cpp:547 msgid "Filament and Nozzle Diameters" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:541 +#: src/slic3r/GUI/ConfigWizard.cpp:547 msgid "Print Diameters" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:557 +#: src/slic3r/GUI/ConfigWizard.cpp:561 msgid "Enter the diameter of your printer's hot end nozzle." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:560 +#: src/slic3r/GUI/ConfigWizard.cpp:564 msgid "Nozzle Diameter:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:570 +#: src/slic3r/GUI/ConfigWizard.cpp:574 msgid "Enter the diameter of your filament." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:571 +#: src/slic3r/GUI/ConfigWizard.cpp:575 msgid "" "Good precision is required, so use a caliper and do multiple measurements " "along the filament, then compute the average." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:574 +#: src/slic3r/GUI/ConfigWizard.cpp:578 msgid "Filament Diameter:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:592 +#: src/slic3r/GUI/ConfigWizard.cpp:596 msgid "Extruder and Bed Temperatures" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:592 +#: src/slic3r/GUI/ConfigWizard.cpp:596 msgid "Temperatures" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:608 +#: src/slic3r/GUI/ConfigWizard.cpp:612 msgid "Enter the temperature needed for extruding your filament." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:609 +#: src/slic3r/GUI/ConfigWizard.cpp:613 msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:612 +#: src/slic3r/GUI/ConfigWizard.cpp:616 msgid "Extrusion Temperature:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:613 src/slic3r/GUI/ConfigWizard.cpp:627 +#: src/slic3r/GUI/ConfigWizard.cpp:617 src/slic3r/GUI/ConfigWizard.cpp:631 msgid "°C" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:622 +#: src/slic3r/GUI/ConfigWizard.cpp:626 msgid "" "Enter the bed temperature needed for getting your filament to stick to your " "heated bed." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:623 +#: src/slic3r/GUI/ConfigWizard.cpp:627 msgid "" "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have " "no heated bed." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:626 +#: src/slic3r/GUI/ConfigWizard.cpp:630 msgid "Bed Temperature:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1089 +#: src/slic3r/GUI/ConfigWizard.cpp:1093 msgid "Select all standard printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1092 +#: src/slic3r/GUI/ConfigWizard.cpp:1096 msgid "< &Back" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1093 +#: src/slic3r/GUI/ConfigWizard.cpp:1097 msgid "&Next >" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1094 +#: src/slic3r/GUI/ConfigWizard.cpp:1098 msgid "&Finish" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1095 src/slic3r/GUI/FirmwareDialog.cpp:147 +#: src/slic3r/GUI/ConfigWizard.cpp:1099 src/slic3r/GUI/FirmwareDialog.cpp:147 #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:37 #: src/slic3r/GUI/ProgressStatusBar.cpp:28 msgid "Cancel" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1109 +#: src/slic3r/GUI/ConfigWizard.cpp:1113 msgid "Prusa FFF Technology Printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1112 +#: src/slic3r/GUI/ConfigWizard.cpp:1116 msgid "Prusa MSLA Technology Printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1181 -msgid "Configuration Wizard" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:1182 -msgid "Configuration &Wizard" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:1184 +#: src/slic3r/GUI/ConfigWizard.cpp:1185 msgid "Configuration Assistant" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1185 +#: src/slic3r/GUI/ConfigWizard.cpp:1186 msgid "Configuration &Assistant" msgstr "" -#: src/slic3r/GUI/Field.cpp:105 +#: src/slic3r/GUI/ConfigWizard.cpp:1188 +msgid "Configuration Wizard" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:1189 +msgid "Configuration &Wizard" +msgstr "" + +#: src/slic3r/GUI/Field.cpp:93 msgid "default value" msgstr "" -#: src/slic3r/GUI/Field.cpp:108 +#: src/slic3r/GUI/Field.cpp:96 msgid "parameter name" msgstr "" -#: src/slic3r/GUI/Field.cpp:136 +#: src/slic3r/GUI/Field.cpp:124 #, possible-c-format msgid "%s doesn't support percentage" msgstr "" -#: src/slic3r/GUI/Field.cpp:150 src/slic3r/GUI/Field.cpp:173 +#: src/slic3r/GUI/Field.cpp:138 src/slic3r/GUI/Field.cpp:161 msgid "Invalid numeric input." msgstr "" -#: src/slic3r/GUI/Field.cpp:155 +#: src/slic3r/GUI/Field.cpp:143 msgid "Input value is out of range" msgstr "" -#: src/slic3r/GUI/Field.cpp:181 +#: src/slic3r/GUI/Field.cpp:169 #, possible-c-format msgid "" "Do you mean %d%% instead of %d %s?\n" @@ -542,7 +567,7 @@ msgid "" "or NO if you are sure that %d %s is a correct value." msgstr "" -#: src/slic3r/GUI/Field.cpp:184 +#: src/slic3r/GUI/Field.cpp:172 msgid "Parameter validation" msgstr "" @@ -618,50 +643,54 @@ msgstr "" msgid "Firmware image:" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:769 +#: src/slic3r/GUI/FirmwareDialog.cpp:768 src/slic3r/GUI/Tab.cpp:1682 +msgid "Browse" +msgstr "" + +#: src/slic3r/GUI/FirmwareDialog.cpp:770 msgid "Serial port:" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:771 +#: src/slic3r/GUI/FirmwareDialog.cpp:772 msgid "Autodetected" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:772 +#: src/slic3r/GUI/FirmwareDialog.cpp:773 msgid "Rescan" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:779 +#: src/slic3r/GUI/FirmwareDialog.cpp:780 msgid "Progress:" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:782 +#: src/slic3r/GUI/FirmwareDialog.cpp:783 msgid "Status:" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:783 +#: src/slic3r/GUI/FirmwareDialog.cpp:784 msgid "Ready" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:803 +#: src/slic3r/GUI/FirmwareDialog.cpp:804 msgid "Advanced: Output log" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:814 +#: src/slic3r/GUI/FirmwareDialog.cpp:815 #: src/slic3r/GUI/PrintHostDialogs.cpp:160 msgid "Close" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:862 +#: src/slic3r/GUI/FirmwareDialog.cpp:863 msgid "" "Are you sure you want to cancel firmware flashing?\n" "This could leave your printer in an unusable state!" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:863 +#: src/slic3r/GUI/FirmwareDialog.cpp:864 msgid "Confirmation" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:866 +#: src/slic3r/GUI/FirmwareDialog.cpp:867 msgid "Cancelling..." msgstr "" @@ -683,6 +712,52 @@ msgid "" "Resolve a clash to continue slicing/export process correctly" msgstr "" +#: src/slic3r/GUI/GLCanvas3D.cpp:3392 +msgid "Add..." +msgstr "" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3402 src/slic3r/GUI/GUI_ObjectList.cpp:1269 +#: src/slic3r/GUI/Plater.cpp:2908 src/slic3r/GUI/Plater.cpp:2926 +#: src/slic3r/GUI/Tab.cpp:2938 +msgid "Delete" +msgstr "" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3413 src/slic3r/GUI/Plater.cpp:3316 +msgid "Delete all" +msgstr "" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3424 src/slic3r/GUI/KBShortcutsDialog.cpp:135 +msgid "Arrange" +msgstr "" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3438 src/slic3r/GUI/Tab.cpp:2879 +msgid "Copy" +msgstr "" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3449 +msgid "Paste" +msgstr "" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3463 +msgid "Add instance" +msgstr "" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3475 +msgid "Remove instance" +msgstr "" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3490 +msgid "Split to objects" +msgstr "" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3502 src/slic3r/GUI/GUI_ObjectList.cpp:1122 +msgid "Split to parts" +msgstr "" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3517 +msgid "Layers editing" +msgstr "" + #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:35 #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:195 msgid "Rotate lower part upwards" @@ -698,10 +773,7 @@ msgid "Cut object:" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:88 -msgid "Cut [C]" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:188 src/libslic3r/PrintConfig.cpp:3013 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:188 src/libslic3r/PrintConfig.cpp:3039 msgid "Cut" msgstr "" @@ -714,11 +786,11 @@ msgid "Keep lower part" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:32 -msgid "Place on face [F]" +msgid "Place on face" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:51 -msgid "Move [M]" +msgid "Move" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:177 @@ -730,7 +802,11 @@ msgid "Displacement (mm)" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:458 -msgid "Rotate [R]" +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:305 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:324 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:342 +#: src/libslic3r/PrintConfig.cpp:3088 +msgid "Rotate" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:491 @@ -738,139 +814,167 @@ msgid "Rotation (deg)" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:51 -msgid "Scale [S]" +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:231 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:325 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:343 +#: src/libslic3r/PrintConfig.cpp:3103 +msgid "Scale" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:276 msgid "Scale (%)" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:838 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:840 msgid "Head diameter: " msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:851 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:853 msgid "Lock supports under new islands" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:855 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1237 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:857 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1239 msgid "Remove selected points" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:859 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:912 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:861 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:914 msgid "Remove all points" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:864 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1240 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:866 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1242 msgid "Apply changes" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:869 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1241 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:871 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1243 msgid "Discard changes" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:877 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:879 msgid "Minimal points distance: " msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:888 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:890 msgid "Support points density: " msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:902 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1243 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:904 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1245 msgid "Auto-generate points" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:908 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:910 msgid "Manual editing" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:926 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:928 msgid "Clipping of view:" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:928 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:930 msgid "Reset direction" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:995 -msgid "SLA Support Points [L]" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:997 +msgid "SLA Support Points" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1022 -msgid "Do you want to save your manually edited support points ?\n" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1024 +msgid "Do you want to save your manually edited support points?" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1023 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1025 msgid "Save changes?" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1166 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1168 msgid "" "Autogeneration will erase all manually edited points.\n" "\n" "Are you sure you want to do it?\n" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1168 src/slic3r/GUI/GUI.cpp:283 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1170 src/slic3r/GUI/GUI.cpp:283 #: src/slic3r/GUI/WipeTowerDialog.cpp:44 src/slic3r/GUI/WipeTowerDialog.cpp:328 msgid "Warning" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1200 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1202 msgid "SLA gizmo keyboard shortcuts" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1229 -msgid "Add point" -msgstr "" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1230 -msgid "Remove point" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 +msgid "Note: some shortcuts work in (non)editing mode only." msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1231 -msgid "Move point" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1234 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1235 +msgid "Left click" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1231 +msgid "Add point" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1232 -msgid "Add point to selection" +msgid "Right click" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1232 +msgid "Remove point" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1233 -msgid "Remove point from selection" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1236 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1237 +msgid "Drag" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1233 +msgid "Move point" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1234 -msgid "Select by rectangle" +msgid "Add point to selection" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1235 -msgid "Deselect by rectangle" +msgid "Remove point from selection" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1236 -msgid "Select all points" +msgid "Select by rectangle" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1237 +msgid "Deselect by rectangle" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1238 +msgid "Select all points" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1240 +msgid "Mouse wheel" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1240 msgid "Move clipping plane" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1239 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1241 msgid "Reset clipping plane" msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1242 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1244 msgid "Switch to editing mode" msgstr "" -#: src/slic3r/GUI/GUI.cpp:142 src/slic3r/GUI/Tab.cpp:2796 +#: src/slic3r/GUI/GUI.cpp:142 src/slic3r/GUI/Tab.cpp:2797 msgid "It's impossible to print multi-part object(s) with SLA technology." msgstr "" @@ -878,8 +982,7 @@ msgstr "" msgid "Please check and fix your object list." msgstr "" -#: src/slic3r/GUI/GUI.cpp:144 src/slic3r/GUI/GUI_App.cpp:743 -#: src/slic3r/GUI/Tab.cpp:2798 +#: src/slic3r/GUI/GUI.cpp:144 src/slic3r/GUI/Tab.cpp:2799 msgid "Attention!" msgstr "" @@ -887,207 +990,209 @@ msgstr "" msgid "Notice" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:378 +#: src/slic3r/GUI/GUI_App.cpp:390 msgid "Changing of an application language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:386 src/slic3r/GUI/GUI_App.cpp:395 +#: src/slic3r/GUI/GUI_App.cpp:398 src/slic3r/GUI/GUI_App.cpp:407 msgid "Recreating" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:399 +#: src/slic3r/GUI/GUI_App.cpp:411 msgid "Loading of current presets" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:407 +#: src/slic3r/GUI/GUI_App.cpp:419 msgid "Loading of a mode view" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:489 +#: src/slic3r/GUI/GUI_App.cpp:501 msgid "Choose one file (3MF):" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:501 +#: src/slic3r/GUI/GUI_App.cpp:513 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:514 +#: src/slic3r/GUI/GUI_App.cpp:526 msgid "Array of language names and identifiers should have the same size." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:524 +#: src/slic3r/GUI/GUI_App.cpp:536 msgid "Select the language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:524 +#: src/slic3r/GUI/GUI_App.cpp:536 msgid "Language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:594 src/slic3r/GUI/GUI_ObjectList.cpp:1245 -#: src/libslic3r/PrintConfig.cpp:299 +#: src/slic3r/GUI/GUI_App.cpp:606 src/slic3r/GUI/GUI_ObjectList.cpp:1257 +#: src/libslic3r/PrintConfig.cpp:300 msgid "Default" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:661 +#: src/slic3r/GUI/GUI_App.cpp:673 msgid "&Configuration Snapshots" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:661 +#: src/slic3r/GUI/GUI_App.cpp:673 msgid "Inspect / activate configuration snapshots" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:662 +#: src/slic3r/GUI/GUI_App.cpp:674 msgid "Take Configuration &Snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:662 +#: src/slic3r/GUI/GUI_App.cpp:674 msgid "Capture a configuration snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:665 +#: src/slic3r/GUI/GUI_App.cpp:677 msgid "&Preferences" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:671 +#: src/slic3r/GUI/GUI_App.cpp:683 msgid "Application preferences" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:674 src/slic3r/GUI/wxExtensions.cpp:2459 +#: src/slic3r/GUI/GUI_App.cpp:686 src/slic3r/GUI/wxExtensions.cpp:2509 msgid "Simple" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:674 +#: src/slic3r/GUI/GUI_App.cpp:686 msgid "Simple View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:675 src/slic3r/GUI/GUI_ObjectList.cpp:76 -#: src/slic3r/GUI/GUI_ObjectList.cpp:517 src/slic3r/GUI/Tab.cpp:1026 -#: src/slic3r/GUI/Tab.cpp:1041 src/slic3r/GUI/Tab.cpp:1139 -#: src/slic3r/GUI/Tab.cpp:1142 src/slic3r/GUI/Tab.cpp:1515 -#: src/slic3r/GUI/Tab.cpp:1940 src/slic3r/GUI/Tab.cpp:3435 -#: src/slic3r/GUI/wxExtensions.cpp:2460 src/libslic3r/PrintConfig.cpp:72 -#: src/libslic3r/PrintConfig.cpp:187 src/libslic3r/PrintConfig.cpp:350 -#: src/libslic3r/PrintConfig.cpp:988 src/libslic3r/PrintConfig.cpp:2175 +#: src/slic3r/GUI/GUI_App.cpp:687 src/slic3r/GUI/GUI_ObjectList.cpp:85 +#: src/slic3r/GUI/GUI_ObjectList.cpp:539 src/slic3r/GUI/Tab.cpp:1027 +#: src/slic3r/GUI/Tab.cpp:1042 src/slic3r/GUI/Tab.cpp:1140 +#: src/slic3r/GUI/Tab.cpp:1143 src/slic3r/GUI/Tab.cpp:1516 +#: src/slic3r/GUI/Tab.cpp:1941 src/slic3r/GUI/Tab.cpp:3440 +#: src/slic3r/GUI/wxExtensions.cpp:2510 src/libslic3r/PrintConfig.cpp:73 +#: src/libslic3r/PrintConfig.cpp:188 src/libslic3r/PrintConfig.cpp:351 +#: src/libslic3r/PrintConfig.cpp:989 src/libslic3r/PrintConfig.cpp:2200 msgid "Advanced" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:675 +#: src/slic3r/GUI/GUI_App.cpp:687 msgid "Advanced View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:676 src/slic3r/GUI/wxExtensions.cpp:2461 +#: src/slic3r/GUI/GUI_App.cpp:688 src/slic3r/GUI/wxExtensions.cpp:2511 msgid "Expert" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:676 +#: src/slic3r/GUI/GUI_App.cpp:688 msgid "Expert View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:681 +#: src/slic3r/GUI/GUI_App.cpp:693 msgid "Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:681 +#: src/slic3r/GUI/GUI_App.cpp:693 #, possible-c-format msgid "%s View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:683 +#: src/slic3r/GUI/GUI_App.cpp:695 msgid "Change Application &Language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:685 +#: src/slic3r/GUI/GUI_App.cpp:697 msgid "Flash printer &firmware" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:685 +#: src/slic3r/GUI/GUI_App.cpp:697 msgid "Upload a firmware image into an Arduino based printer" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:697 +#: src/slic3r/GUI/GUI_App.cpp:709 msgid "Taking configuration snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:697 +#: src/slic3r/GUI/GUI_App.cpp:709 msgid "Snapshot name" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:740 -msgid "Application will be restarted after language change." +#: src/slic3r/GUI/GUI_App.cpp:752 +msgid "" +"Switching the language will trigger application restart.\n" +"You will lose content of the plater." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:741 -msgid "3D-Scene will be cleaned." +#: src/slic3r/GUI/GUI_App.cpp:754 +msgid "Do you want to proceed?" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:742 -msgid "Please, check your changes before." +#: src/slic3r/GUI/GUI_App.cpp:755 +msgid "Language selection" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:769 +#: src/slic3r/GUI/GUI_App.cpp:781 msgid "&Configuration" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:789 -msgid "You have unsaved changes " +#: src/slic3r/GUI/GUI_App.cpp:801 +msgid "The following presets were modified: " msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:789 -msgid ". Discard changes and continue anyway?" +#: src/slic3r/GUI/GUI_App.cpp:801 src/slic3r/GUI/Tab.cpp:2785 +msgid "Discard changes and continue anyway?" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:790 +#: src/slic3r/GUI/GUI_App.cpp:802 msgid "Unsaved Presets" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:28 src/slic3r/GUI/GUI_ObjectList.cpp:68 -#: src/slic3r/GUI/GUI_ObjectList.cpp:509 src/libslic3r/PrintConfig.cpp:56 -#: src/libslic3r/PrintConfig.cpp:150 src/libslic3r/PrintConfig.cpp:381 -#: src/libslic3r/PrintConfig.cpp:438 src/libslic3r/PrintConfig.cpp:446 -#: src/libslic3r/PrintConfig.cpp:842 src/libslic3r/PrintConfig.cpp:1026 -#: src/libslic3r/PrintConfig.cpp:1305 src/libslic3r/PrintConfig.cpp:1371 -#: src/libslic3r/PrintConfig.cpp:1552 src/libslic3r/PrintConfig.cpp:1987 -#: src/libslic3r/PrintConfig.cpp:2044 +#: src/slic3r/GUI/GUI_ObjectList.cpp:28 src/slic3r/GUI/GUI_ObjectList.cpp:77 +#: src/slic3r/GUI/GUI_ObjectList.cpp:531 src/libslic3r/PrintConfig.cpp:57 +#: src/libslic3r/PrintConfig.cpp:151 src/libslic3r/PrintConfig.cpp:382 +#: src/libslic3r/PrintConfig.cpp:439 src/libslic3r/PrintConfig.cpp:447 +#: src/libslic3r/PrintConfig.cpp:843 src/libslic3r/PrintConfig.cpp:1027 +#: src/libslic3r/PrintConfig.cpp:1330 src/libslic3r/PrintConfig.cpp:1396 +#: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:2012 +#: src/libslic3r/PrintConfig.cpp:2069 msgid "Layers and Perimeters" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:29 src/slic3r/GUI/GUI_ObjectList.cpp:69 -#: src/slic3r/GUI/GUI_ObjectList.cpp:510 src/slic3r/GUI/Plater.cpp:439 -#: src/slic3r/GUI/Tab.cpp:1030 src/slic3r/GUI/Tab.cpp:1031 -#: src/slic3r/GUI/Tab.cpp:1360 src/libslic3r/PrintConfig.cpp:167 -#: src/libslic3r/PrintConfig.cpp:389 src/libslic3r/PrintConfig.cpp:729 -#: src/libslic3r/PrintConfig.cpp:743 src/libslic3r/PrintConfig.cpp:780 -#: src/libslic3r/PrintConfig.cpp:933 src/libslic3r/PrintConfig.cpp:943 -#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:979 -#: src/libslic3r/PrintConfig.cpp:998 src/libslic3r/PrintConfig.cpp:1659 -#: src/libslic3r/PrintConfig.cpp:1676 +#: src/slic3r/GUI/GUI_ObjectList.cpp:29 src/slic3r/GUI/GUI_ObjectList.cpp:78 +#: src/slic3r/GUI/GUI_ObjectList.cpp:532 src/slic3r/GUI/Plater.cpp:447 +#: src/slic3r/GUI/Tab.cpp:1031 src/slic3r/GUI/Tab.cpp:1032 +#: src/slic3r/GUI/Tab.cpp:1361 src/libslic3r/PrintConfig.cpp:168 +#: src/libslic3r/PrintConfig.cpp:390 src/libslic3r/PrintConfig.cpp:730 +#: src/libslic3r/PrintConfig.cpp:744 src/libslic3r/PrintConfig.cpp:781 +#: src/libslic3r/PrintConfig.cpp:934 src/libslic3r/PrintConfig.cpp:944 +#: src/libslic3r/PrintConfig.cpp:962 src/libslic3r/PrintConfig.cpp:980 +#: src/libslic3r/PrintConfig.cpp:999 src/libslic3r/PrintConfig.cpp:1684 +#: src/libslic3r/PrintConfig.cpp:1701 msgid "Infill" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:30 src/slic3r/GUI/GUI_ObjectList.cpp:70 -#: src/slic3r/GUI/GUI_ObjectList.cpp:511 src/slic3r/GUI/GUI_Preview.cpp:236 -#: src/slic3r/GUI/Tab.cpp:1059 src/slic3r/GUI/Tab.cpp:1060 -#: src/libslic3r/PrintConfig.cpp:334 src/libslic3r/PrintConfig.cpp:1432 -#: src/libslic3r/PrintConfig.cpp:1780 src/libslic3r/PrintConfig.cpp:1786 -#: src/libslic3r/PrintConfig.cpp:1794 src/libslic3r/PrintConfig.cpp:1806 -#: src/libslic3r/PrintConfig.cpp:1816 src/libslic3r/PrintConfig.cpp:1824 -#: src/libslic3r/PrintConfig.cpp:1839 src/libslic3r/PrintConfig.cpp:1860 -#: src/libslic3r/PrintConfig.cpp:1871 src/libslic3r/PrintConfig.cpp:1887 -#: src/libslic3r/PrintConfig.cpp:1896 src/libslic3r/PrintConfig.cpp:1905 -#: src/libslic3r/PrintConfig.cpp:1916 src/libslic3r/PrintConfig.cpp:1930 -#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1939 -#: src/libslic3r/PrintConfig.cpp:1948 src/libslic3r/PrintConfig.cpp:1956 -#: src/libslic3r/PrintConfig.cpp:1970 src/libslic3r/GCode/PreviewData.cpp:172 +#: src/slic3r/GUI/GUI_ObjectList.cpp:30 src/slic3r/GUI/GUI_ObjectList.cpp:79 +#: src/slic3r/GUI/GUI_ObjectList.cpp:533 src/slic3r/GUI/GUI_Preview.cpp:236 +#: src/slic3r/GUI/Tab.cpp:1060 src/slic3r/GUI/Tab.cpp:1061 +#: src/libslic3r/PrintConfig.cpp:335 src/libslic3r/PrintConfig.cpp:1457 +#: src/libslic3r/PrintConfig.cpp:1805 src/libslic3r/PrintConfig.cpp:1811 +#: src/libslic3r/PrintConfig.cpp:1819 src/libslic3r/PrintConfig.cpp:1831 +#: src/libslic3r/PrintConfig.cpp:1841 src/libslic3r/PrintConfig.cpp:1849 +#: src/libslic3r/PrintConfig.cpp:1864 src/libslic3r/PrintConfig.cpp:1885 +#: src/libslic3r/PrintConfig.cpp:1896 src/libslic3r/PrintConfig.cpp:1912 +#: src/libslic3r/PrintConfig.cpp:1921 src/libslic3r/PrintConfig.cpp:1930 +#: src/libslic3r/PrintConfig.cpp:1941 src/libslic3r/PrintConfig.cpp:1955 +#: src/libslic3r/PrintConfig.cpp:1963 src/libslic3r/PrintConfig.cpp:1964 +#: src/libslic3r/PrintConfig.cpp:1973 src/libslic3r/PrintConfig.cpp:1981 +#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/GCode/PreviewData.cpp:172 msgid "Support material" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_ObjectList.cpp:72 -#: src/slic3r/GUI/GUI_ObjectList.cpp:513 src/slic3r/GUI/Tab.cpp:1119 -#: src/slic3r/GUI/Tab.cpp:1844 src/libslic3r/PrintConfig.cpp:456 -#: src/libslic3r/PrintConfig.cpp:954 src/libslic3r/PrintConfig.cpp:1340 -#: src/libslic3r/PrintConfig.cpp:1668 src/libslic3r/PrintConfig.cpp:1852 -#: src/libslic3r/PrintConfig.cpp:1878 src/libslic3r/PrintConfig.cpp:2151 -#: src/libslic3r/PrintConfig.cpp:2159 +#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_ObjectList.cpp:81 +#: src/slic3r/GUI/GUI_ObjectList.cpp:535 src/slic3r/GUI/Tab.cpp:1120 +#: src/slic3r/GUI/Tab.cpp:1845 src/libslic3r/PrintConfig.cpp:457 +#: src/libslic3r/PrintConfig.cpp:955 src/libslic3r/PrintConfig.cpp:1365 +#: src/libslic3r/PrintConfig.cpp:1693 src/libslic3r/PrintConfig.cpp:1877 +#: src/libslic3r/PrintConfig.cpp:1903 src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2184 msgid "Extruders" msgstr "" @@ -1095,341 +1200,345 @@ msgstr "" msgid "Pad and Support" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:71 src/slic3r/GUI/GUI_ObjectList.cpp:512 -#: src/slic3r/GUI/GUI_Preview.cpp:215 src/slic3r/GUI/Tab.cpp:1084 -#: src/libslic3r/PrintConfig.cpp:199 src/libslic3r/PrintConfig.cpp:426 -#: src/libslic3r/PrintConfig.cpp:871 src/libslic3r/PrintConfig.cpp:999 -#: src/libslic3r/PrintConfig.cpp:1361 src/libslic3r/PrintConfig.cpp:1598 -#: src/libslic3r/PrintConfig.cpp:1647 src/libslic3r/PrintConfig.cpp:1698 -#: src/libslic3r/PrintConfig.cpp:2029 +#: src/slic3r/GUI/GUI_ObjectList.cpp:45 +msgid "Add part" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:46 +msgid "Add modifier" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:47 +msgid "Add support enforcer" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:48 +msgid "Add support blocker" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:80 src/slic3r/GUI/GUI_ObjectList.cpp:534 +#: src/slic3r/GUI/GUI_Preview.cpp:215 src/slic3r/GUI/Tab.cpp:1085 +#: src/libslic3r/PrintConfig.cpp:200 src/libslic3r/PrintConfig.cpp:427 +#: src/libslic3r/PrintConfig.cpp:872 src/libslic3r/PrintConfig.cpp:1000 +#: src/libslic3r/PrintConfig.cpp:1386 src/libslic3r/PrintConfig.cpp:1623 +#: src/libslic3r/PrintConfig.cpp:1672 src/libslic3r/PrintConfig.cpp:1723 +#: src/libslic3r/PrintConfig.cpp:2054 msgid "Speed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:73 src/slic3r/GUI/GUI_ObjectList.cpp:514 -#: src/libslic3r/PrintConfig.cpp:416 src/libslic3r/PrintConfig.cpp:523 -#: src/libslic3r/PrintConfig.cpp:830 src/libslic3r/PrintConfig.cpp:962 -#: src/libslic3r/PrintConfig.cpp:1349 src/libslic3r/PrintConfig.cpp:1688 -#: src/libslic3r/PrintConfig.cpp:1861 src/libslic3r/PrintConfig.cpp:2018 +#: src/slic3r/GUI/GUI_ObjectList.cpp:82 src/slic3r/GUI/GUI_ObjectList.cpp:536 +#: src/libslic3r/PrintConfig.cpp:417 src/libslic3r/PrintConfig.cpp:524 +#: src/libslic3r/PrintConfig.cpp:831 src/libslic3r/PrintConfig.cpp:963 +#: src/libslic3r/PrintConfig.cpp:1374 src/libslic3r/PrintConfig.cpp:1713 +#: src/libslic3r/PrintConfig.cpp:1886 src/libslic3r/PrintConfig.cpp:2043 msgid "Extrusion Width" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:78 src/slic3r/GUI/GUI_ObjectList.cpp:519 -#: src/slic3r/GUI/Plater.cpp:418 src/slic3r/GUI/Tab.cpp:3397 -#: src/slic3r/GUI/Tab.cpp:3398 src/libslic3r/PrintConfig.cpp:2363 -#: src/libslic3r/PrintConfig.cpp:2370 src/libslic3r/PrintConfig.cpp:2379 -#: src/libslic3r/PrintConfig.cpp:2388 src/libslic3r/PrintConfig.cpp:2398 -#: src/libslic3r/PrintConfig.cpp:2424 src/libslic3r/PrintConfig.cpp:2431 -#: src/libslic3r/PrintConfig.cpp:2442 src/libslic3r/PrintConfig.cpp:2452 -#: src/libslic3r/PrintConfig.cpp:2461 src/libslic3r/PrintConfig.cpp:2471 -#: src/libslic3r/PrintConfig.cpp:2480 src/libslic3r/PrintConfig.cpp:2490 -#: src/libslic3r/PrintConfig.cpp:2500 src/libslic3r/PrintConfig.cpp:2508 +#: src/slic3r/GUI/GUI_ObjectList.cpp:87 src/slic3r/GUI/GUI_ObjectList.cpp:541 +#: src/slic3r/GUI/Plater.cpp:429 src/slic3r/GUI/Tab.cpp:3402 +#: src/slic3r/GUI/Tab.cpp:3403 src/libslic3r/PrintConfig.cpp:2388 +#: src/libslic3r/PrintConfig.cpp:2395 src/libslic3r/PrintConfig.cpp:2404 +#: src/libslic3r/PrintConfig.cpp:2413 src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2449 src/libslic3r/PrintConfig.cpp:2456 +#: src/libslic3r/PrintConfig.cpp:2467 src/libslic3r/PrintConfig.cpp:2477 +#: src/libslic3r/PrintConfig.cpp:2486 src/libslic3r/PrintConfig.cpp:2496 +#: src/libslic3r/PrintConfig.cpp:2505 src/libslic3r/PrintConfig.cpp:2515 +#: src/libslic3r/PrintConfig.cpp:2525 src/libslic3r/PrintConfig.cpp:2533 msgid "Supports" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:79 src/slic3r/GUI/GUI_ObjectList.cpp:520 -#: src/slic3r/GUI/Tab.cpp:3425 src/slic3r/GUI/Tab.cpp:3426 -#: src/libslic3r/PrintConfig.cpp:2516 src/libslic3r/PrintConfig.cpp:2523 -#: src/libslic3r/PrintConfig.cpp:2537 src/libslic3r/PrintConfig.cpp:2547 -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:2569 +#: src/slic3r/GUI/GUI_ObjectList.cpp:88 src/slic3r/GUI/GUI_ObjectList.cpp:542 +#: src/slic3r/GUI/Tab.cpp:3430 src/slic3r/GUI/Tab.cpp:3431 +#: src/libslic3r/PrintConfig.cpp:2541 src/libslic3r/PrintConfig.cpp:2548 +#: src/libslic3r/PrintConfig.cpp:2562 src/libslic3r/PrintConfig.cpp:2572 +#: src/libslic3r/PrintConfig.cpp:2585 src/libslic3r/PrintConfig.cpp:2594 msgid "Pad" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:176 +#: src/slic3r/GUI/GUI_ObjectList.cpp:203 msgid "Name" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:230 +#: src/slic3r/GUI/GUI_ObjectList.cpp:257 #, possible-c-format msgid "Auto-repaired (%d errors):\n" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:237 +#: src/slic3r/GUI/GUI_ObjectList.cpp:264 msgid "degenerate facets" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:238 +#: src/slic3r/GUI/GUI_ObjectList.cpp:265 msgid "edges fixed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:239 +#: src/slic3r/GUI/GUI_ObjectList.cpp:266 msgid "facets removed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:240 +#: src/slic3r/GUI/GUI_ObjectList.cpp:267 msgid "facets added" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:241 +#: src/slic3r/GUI/GUI_ObjectList.cpp:268 msgid "facets reversed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:242 +#: src/slic3r/GUI/GUI_ObjectList.cpp:269 msgid "backwards edges" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:250 +#: src/slic3r/GUI/GUI_ObjectList.cpp:277 msgid "Right button click the icon to fix STL through Netfabb" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:279 +#: src/slic3r/GUI/GUI_ObjectList.cpp:306 msgid "Right button click the icon to change the object settings" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:335 src/slic3r/GUI/Tab.cpp:1479 -#: src/libslic3r/PrintConfig.cpp:455 +#: src/slic3r/GUI/GUI_ObjectList.cpp:362 src/slic3r/GUI/Tab.cpp:1480 +#: src/libslic3r/PrintConfig.cpp:456 msgid "Extruder" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:854 src/slic3r/GUI/GUI_ObjectList.cpp:1139 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1145 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1377 +#: src/slic3r/GUI/GUI_ObjectList.cpp:876 src/slic3r/GUI/GUI_ObjectList.cpp:1151 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1157 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1389 #, possible-c-format msgid "Quick Add Settings (%s)" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:917 +#: src/slic3r/GUI/GUI_ObjectList.cpp:939 msgid "Select showing settings" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1050 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1072 msgid "Load" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1055 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1087 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1090 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1077 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1102 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1105 msgid "Box" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1055 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1077 msgid "Cylinder" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1055 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1077 msgid "Sphere" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1055 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1077 msgid "Slab" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1066 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1082 -msgid "Add part" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1067 -msgid "Add modifier" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1068 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1086 -msgid "Add support enforcer" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1069 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1089 -msgid "Add support blocker" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1110 -msgid "Split to parts" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1118 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1130 msgid "Add settings" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1185 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1197 msgid "Change type" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1192 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1331 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1204 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1343 msgid "Set as a Separated Object" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1200 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1212 msgid "Rename" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1210 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1222 msgid "Fix through the Netfabb" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1219 src/slic3r/GUI/Plater.cpp:2927 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1231 src/slic3r/GUI/Plater.cpp:2944 msgid "Export as STL" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1226 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1238 msgid "Change extruder" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1251 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1263 msgid "Select new extruder for the object/part" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1257 src/slic3r/GUI/Plater.cpp:2891 -#: src/slic3r/GUI/Plater.cpp:2909 src/slic3r/GUI/Tab.cpp:2937 -msgid "Delete" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1331 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1343 msgid "Set as a Separated Objects" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1556 msgid "Generic" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1694 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1699 msgid "You can't delete the last solid part from object." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1711 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1716 msgid "You can't delete the last intance from object." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1737 src/slic3r/GUI/Plater.cpp:2279 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1742 src/slic3r/GUI/Plater.cpp:2290 msgid "" "The selected object couldn't be split because it contains only one part." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1846 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1851 msgid "Group manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1863 msgid "Object manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1873 msgid "Object Settings to modify" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1872 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1877 msgid "Part Settings to modify" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1881 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1886 msgid "Part manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1887 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1892 msgid "Instance manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2417 msgid "Object or Instance" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2417 msgid "Part" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2414 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2419 msgid "Unsupported selection" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2415 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2420 #, possible-c-format msgid "You started your selection with %s Item." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2416 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2421 #, possible-c-format msgid "In this mode you can select only other %s Items%s" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2419 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2424 msgid "of a current Object" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2424 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2497 src/slic3r/GUI/Plater.cpp:118 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2429 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2502 src/slic3r/GUI/Plater.cpp:118 msgid "Info" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2538 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2543 msgid "You can't change a type of the last solid part of the object." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2545 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2550 msgid "Select type of part" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2709 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2714 msgid "Enter new name" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2709 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2714 msgid "Renaming" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2725 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2812 src/slic3r/GUI/Tab.cpp:3278 -#: src/slic3r/GUI/Tab.cpp:3282 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2730 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2824 src/slic3r/GUI/Tab.cpp:3283 +#: src/slic3r/GUI/Tab.cpp:3287 msgid "The supplied name is not valid;" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2726 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2813 src/slic3r/GUI/Tab.cpp:3279 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2731 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2825 src/slic3r/GUI/Tab.cpp:3284 msgid "the following characters are not allowed:" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2833 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2845 msgid "Set extruder for selected items" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2834 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2846 msgid "Select extruder number for selected objects and/or parts" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2847 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2859 msgid "Select extruder number:" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2848 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2860 msgid "This extruder will be set for selected items" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:27 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:40 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:83 +msgid "World coordinates" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:41 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:84 +msgid "Local coordinates" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:60 +msgid "Select coordinate space, in which the transformation will be performed." +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:102 msgid "Object Manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:78 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:153 msgid "Object name" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:150 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:193 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:229 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:282 msgid "Position" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:151 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:194 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:230 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:283 msgid "Rotation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:152 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:234 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:254 -#: src/libslic3r/PrintConfig.cpp:3077 -msgid "Scale" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:195 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:284 msgid "Scale factors" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:233 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:253 -#: src/libslic3r/PrintConfig.cpp:3062 -msgid "Rotate" +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:341 +msgid "Translate" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:252 -msgid "Translate" +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:640 +msgid "" +"The currently manipulated object is tilted (rotation angles are not " +"multiples of 90°).\n" +"Non-uniform scaling of tilted objects is only possible in the World " +"coordinate system,\n" +"once the rotation is embedded into the object coordinates." +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:643 +msgid "" +"This operation is irreversible.\n" +"Do you want to proceed?" msgstr "" #: src/slic3r/GUI/GUI_ObjectSettings.cpp:58 @@ -1445,11 +1554,11 @@ msgstr "" msgid "Feature type" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:213 src/libslic3r/PrintConfig.cpp:468 +#: src/slic3r/GUI/GUI_Preview.cpp:213 src/libslic3r/PrintConfig.cpp:469 msgid "Height" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:214 src/libslic3r/PrintConfig.cpp:2137 +#: src/slic3r/GUI/GUI_Preview.cpp:214 src/libslic3r/PrintConfig.cpp:2162 msgid "Width" msgstr "" @@ -1492,13 +1601,13 @@ msgstr "" msgid "Internal infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:231 src/libslic3r/PrintConfig.cpp:1687 -#: src/libslic3r/PrintConfig.cpp:1697 src/libslic3r/GCode/PreviewData.cpp:167 +#: src/slic3r/GUI/GUI_Preview.cpp:231 src/libslic3r/PrintConfig.cpp:1712 +#: src/libslic3r/PrintConfig.cpp:1722 src/libslic3r/GCode/PreviewData.cpp:167 msgid "Solid infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:232 src/libslic3r/PrintConfig.cpp:2017 -#: src/libslic3r/PrintConfig.cpp:2028 src/libslic3r/GCode/PreviewData.cpp:168 +#: src/slic3r/GUI/GUI_Preview.cpp:232 src/libslic3r/PrintConfig.cpp:2042 +#: src/libslic3r/PrintConfig.cpp:2053 src/libslic3r/GCode/PreviewData.cpp:168 msgid "Top solid infill" msgstr "" @@ -1506,27 +1615,27 @@ msgstr "" msgid "Bridge infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:234 src/libslic3r/PrintConfig.cpp:870 +#: src/slic3r/GUI/GUI_Preview.cpp:234 src/libslic3r/PrintConfig.cpp:871 #: src/libslic3r/GCode/PreviewData.cpp:170 msgid "Gap fill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:235 src/slic3r/GUI/Tab.cpp:1050 +#: src/slic3r/GUI/GUI_Preview.cpp:235 src/slic3r/GUI/Tab.cpp:1051 #: src/libslic3r/GCode/PreviewData.cpp:171 msgid "Skirt" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/PrintConfig.cpp:1904 +#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/PrintConfig.cpp:1929 #: src/libslic3r/GCode/PreviewData.cpp:173 msgid "Support material interface" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/Tab.cpp:1130 +#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/Tab.cpp:1131 #: src/libslic3r/GCode/PreviewData.cpp:174 msgid "Wipe tower" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/PrintConfig.cpp:2051 +#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/PrintConfig.cpp:2076 msgid "Travel" msgstr "" @@ -1542,7 +1651,7 @@ msgstr "" msgid "Shells" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 src/slic3r/GUI/MainFrame.cpp:566 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 src/slic3r/GUI/MainFrame.cpp:571 msgid "Keyboard Shortcuts" msgstr "" @@ -1558,8 +1667,8 @@ msgstr "" msgid "Load Config from .ini/amf/3mf/gcode" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 src/slic3r/GUI/Plater.cpp:733 -#: src/slic3r/GUI/Plater.cpp:3821 src/libslic3r/PrintConfig.cpp:2964 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 src/slic3r/GUI/Plater.cpp:740 +#: src/slic3r/GUI/Plater.cpp:3839 src/libslic3r/PrintConfig.cpp:2990 msgid "Export G-code" msgstr "" @@ -1575,22 +1684,10 @@ msgstr "" msgid "(Re)slice" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 -msgid "Quick slice" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 src/slic3r/GUI/MainFrame.cpp:395 -msgid "Repeat last quick slice" -msgstr "" - #: src/slic3r/GUI/KBShortcutsDialog.cpp:114 msgid "Select Plater Tab" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 -msgid "Quick slice and Save as" -msgstr "" - #: src/slic3r/GUI/KBShortcutsDialog.cpp:116 msgid "Select Print Settings Tab" msgstr "" @@ -1621,15 +1718,15 @@ msgid "Print host upload queue" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:123 -msgid "Camera view " +msgid "Camera view" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:124 -msgid "Add Instance to selected object " +msgid "Add Instance of the selected object" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:125 -msgid "Remove Instance from selected object" +msgid "Remove Instance of the selected object" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:126 @@ -1644,10 +1741,6 @@ msgstr "" msgid "Main Shortcuts" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 -msgid "Arrange" -msgstr "" - #: src/slic3r/GUI/KBShortcutsDialog.cpp:136 msgid "Select All objects" msgstr "" @@ -1693,7 +1786,7 @@ msgid "Gizmo SLA support points" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:147 -#, no-c-format +#, possible-c-format msgid "" "Press to snap by 5% in Gizmo scale\n" "or by 1mm in Gizmo move" @@ -1793,531 +1886,525 @@ msgstr "" msgid "Layers Slider Shortcuts" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:55 +#: src/slic3r/GUI/MainFrame.cpp:61 msgid "" " - Remember to check for updates at http://github.com/prusa3d/slic3r/releases" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:161 +#: src/slic3r/GUI/MainFrame.cpp:163 msgid "Plater" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:339 +#: src/slic3r/GUI/MainFrame.cpp:344 msgid "&Open Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:339 +#: src/slic3r/GUI/MainFrame.cpp:344 msgid "Open a project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:341 +#: src/slic3r/GUI/MainFrame.cpp:346 msgid "&Save Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:341 +#: src/slic3r/GUI/MainFrame.cpp:346 msgid "Save current project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:343 +#: src/slic3r/GUI/MainFrame.cpp:348 msgid "Save Project &as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:343 +#: src/slic3r/GUI/MainFrame.cpp:348 msgid "Save current project file as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:349 +#: src/slic3r/GUI/MainFrame.cpp:354 msgid "Import STL/OBJ/AM&F/3MF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:349 +#: src/slic3r/GUI/MainFrame.cpp:354 msgid "Load a model" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:352 +#: src/slic3r/GUI/MainFrame.cpp:357 msgid "Import &Config" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:352 +#: src/slic3r/GUI/MainFrame.cpp:357 msgid "Load exported configuration file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:354 +#: src/slic3r/GUI/MainFrame.cpp:359 msgid "Import Config from &project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:354 +#: src/slic3r/GUI/MainFrame.cpp:359 msgid "Load configuration from project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:357 +#: src/slic3r/GUI/MainFrame.cpp:362 msgid "Import Config &Bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:357 +#: src/slic3r/GUI/MainFrame.cpp:362 msgid "Load presets from a bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:359 +#: src/slic3r/GUI/MainFrame.cpp:364 msgid "&Import" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:362 src/slic3r/GUI/MainFrame.cpp:602 +#: src/slic3r/GUI/MainFrame.cpp:367 src/slic3r/GUI/MainFrame.cpp:607 msgid "Export &G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:362 +#: src/slic3r/GUI/MainFrame.cpp:367 msgid "Export current plate as G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:366 +#: src/slic3r/GUI/MainFrame.cpp:371 msgid "Export plate as &STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:366 +#: src/slic3r/GUI/MainFrame.cpp:371 msgid "Export current plate as STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:368 +#: src/slic3r/GUI/MainFrame.cpp:373 msgid "Export plate as STL including supports" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:368 +#: src/slic3r/GUI/MainFrame.cpp:373 msgid "Export current plate as STL including supports" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:370 +#: src/slic3r/GUI/MainFrame.cpp:375 msgid "Export plate as &AMF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:370 +#: src/slic3r/GUI/MainFrame.cpp:375 msgid "Export current plate as AMF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:373 +#: src/slic3r/GUI/MainFrame.cpp:378 msgid "Export &Config" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:373 +#: src/slic3r/GUI/MainFrame.cpp:378 msgid "Export current configuration to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:375 +#: src/slic3r/GUI/MainFrame.cpp:380 msgid "Export Config &Bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:375 +#: src/slic3r/GUI/MainFrame.cpp:380 msgid "Export all presets to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:377 +#: src/slic3r/GUI/MainFrame.cpp:382 msgid "&Export" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:383 +#: src/slic3r/GUI/MainFrame.cpp:388 msgid "Quick Slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:383 +#: src/slic3r/GUI/MainFrame.cpp:388 msgid "Slice a file into a G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:389 +#: src/slic3r/GUI/MainFrame.cpp:394 msgid "Quick Slice and Save As" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:389 +#: src/slic3r/GUI/MainFrame.cpp:394 msgid "Slice a file into a G-code, save as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:395 +#: src/slic3r/GUI/MainFrame.cpp:400 msgid "Repeat Last Quick Slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:403 +#: src/slic3r/GUI/MainFrame.cpp:400 +msgid "Repeat last quick slice" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:408 msgid "(Re)Slice &Now" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:403 +#: src/slic3r/GUI/MainFrame.cpp:408 msgid "Start new slicing process" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:406 +#: src/slic3r/GUI/MainFrame.cpp:411 msgid "&Repair STL file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:406 +#: src/slic3r/GUI/MainFrame.cpp:411 msgid "Automatically repair an STL file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:409 +#: src/slic3r/GUI/MainFrame.cpp:414 msgid "&Quit" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:409 +#: src/slic3r/GUI/MainFrame.cpp:414 #, possible-c-format msgid "Quit %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:444 +#: src/slic3r/GUI/MainFrame.cpp:449 msgid "&Select all" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:444 +#: src/slic3r/GUI/MainFrame.cpp:449 msgid "Selects all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:447 +#: src/slic3r/GUI/MainFrame.cpp:452 msgid "&Delete selected" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:447 +#: src/slic3r/GUI/MainFrame.cpp:452 msgid "Deletes the current selection" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:449 +#: src/slic3r/GUI/MainFrame.cpp:454 msgid "Delete &all" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:449 +#: src/slic3r/GUI/MainFrame.cpp:454 msgid "Deletes all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:454 +#: src/slic3r/GUI/MainFrame.cpp:459 msgid "&Copy" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:454 +#: src/slic3r/GUI/MainFrame.cpp:459 msgid "Copy selection to clipboard" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:456 +#: src/slic3r/GUI/MainFrame.cpp:461 msgid "&Paste" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:456 +#: src/slic3r/GUI/MainFrame.cpp:461 msgid "Paste clipboard" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:476 msgid "&Plater Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:476 msgid "Show the plater" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:478 +#: src/slic3r/GUI/MainFrame.cpp:483 msgid "P&rint Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:478 +#: src/slic3r/GUI/MainFrame.cpp:483 msgid "Show the print settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:480 src/slic3r/GUI/MainFrame.cpp:604 +#: src/slic3r/GUI/MainFrame.cpp:485 src/slic3r/GUI/MainFrame.cpp:609 msgid "&Filament Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:480 +#: src/slic3r/GUI/MainFrame.cpp:485 msgid "Show the filament settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:483 +#: src/slic3r/GUI/MainFrame.cpp:488 msgid "Print&er Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:483 +#: src/slic3r/GUI/MainFrame.cpp:488 msgid "Show the printer settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:487 +#: src/slic3r/GUI/MainFrame.cpp:492 msgid "3&D" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:487 +#: src/slic3r/GUI/MainFrame.cpp:492 msgid "Show the 3D editing view" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:494 msgid "Pre&view" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:494 msgid "Show the 3D slices preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:510 +#: src/slic3r/GUI/MainFrame.cpp:515 msgid "Print &Host Upload Queue" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:510 +#: src/slic3r/GUI/MainFrame.cpp:515 msgid "Display the Print Host Upload Queue window" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:519 +#: src/slic3r/GUI/MainFrame.cpp:524 msgid "Iso" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:519 +#: src/slic3r/GUI/MainFrame.cpp:524 msgid "Iso View" msgstr "" #. TRN To be shown in the main menu View->Top -#: src/slic3r/GUI/MainFrame.cpp:522 -msgid "Top" -msgstr "" - #. TRN To be shown in Print Settings "Top solid layers" -#: src/libslic3r/PrintConfig.cpp:2043 -msgctxt "Layers" +#: src/slic3r/GUI/MainFrame.cpp:527 src/libslic3r/PrintConfig.cpp:2068 msgid "Top" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:522 +#: src/slic3r/GUI/MainFrame.cpp:527 msgid "Top View" msgstr "" #. TRN To be shown in the main menu View->Bottom -#: src/slic3r/GUI/MainFrame.cpp:524 -msgid "Bottom" -msgstr "" - #. TRN To be shown in Print Settings "Bottom solid layers" -#: rc/libslic3r/PrintConfig.cpp:149 -msgctxt "Layers" +#: src/slic3r/GUI/MainFrame.cpp:529 src/libslic3r/PrintConfig.cpp:150 msgid "Bottom" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:529 msgid "Bottom View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:525 +#: src/slic3r/GUI/MainFrame.cpp:530 msgid "Front" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:525 +#: src/slic3r/GUI/MainFrame.cpp:530 msgid "Front View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:526 src/libslic3r/PrintConfig.cpp:1562 +#: src/slic3r/GUI/MainFrame.cpp:531 src/libslic3r/PrintConfig.cpp:1587 msgid "Rear" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:526 +#: src/slic3r/GUI/MainFrame.cpp:531 msgid "Rear View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:527 +#: src/slic3r/GUI/MainFrame.cpp:532 msgid "Left" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:527 +#: src/slic3r/GUI/MainFrame.cpp:532 msgid "Left View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:528 +#: src/slic3r/GUI/MainFrame.cpp:533 msgid "Right" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:528 +#: src/slic3r/GUI/MainFrame.cpp:533 msgid "Right View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:542 +#: src/slic3r/GUI/MainFrame.cpp:547 msgid "Prusa 3D &Drivers" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:542 +#: src/slic3r/GUI/MainFrame.cpp:547 msgid "Open the Prusa3D drivers download page in your browser" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:544 +#: src/slic3r/GUI/MainFrame.cpp:549 msgid "Prusa Edition &Releases" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:544 +#: src/slic3r/GUI/MainFrame.cpp:549 msgid "Open the Prusa Edition releases page in your browser" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:550 +#: src/slic3r/GUI/MainFrame.cpp:555 #, possible-c-format msgid "%s &Website" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:551 +#: src/slic3r/GUI/MainFrame.cpp:556 #, possible-c-format msgid "Open the %s website in your browser" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:553 +#: src/slic3r/GUI/MainFrame.cpp:558 #, possible-c-format msgid "%s &Manual" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:554 +#: src/slic3r/GUI/MainFrame.cpp:559 #, possible-c-format msgid "Open the %s manual in your browser" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:557 +#: src/slic3r/GUI/MainFrame.cpp:562 msgid "System &Info" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:557 +#: src/slic3r/GUI/MainFrame.cpp:562 msgid "Show system information" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:559 +#: src/slic3r/GUI/MainFrame.cpp:564 msgid "Show &Configuration Folder" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:559 +#: src/slic3r/GUI/MainFrame.cpp:564 msgid "Show user configuration folder (datadir)" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:561 +#: src/slic3r/GUI/MainFrame.cpp:566 msgid "Report an I&ssue" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:561 +#: src/slic3r/GUI/MainFrame.cpp:566 #, possible-c-format msgid "Report an issue on %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:563 +#: src/slic3r/GUI/MainFrame.cpp:568 #, possible-c-format msgid "&About %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:563 +#: src/slic3r/GUI/MainFrame.cpp:568 msgid "Show about dialog" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:566 +#: src/slic3r/GUI/MainFrame.cpp:571 msgid "Show the list of the keyboard shortcuts" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:574 +#: src/slic3r/GUI/MainFrame.cpp:579 msgid "&File" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:575 +#: src/slic3r/GUI/MainFrame.cpp:580 msgid "&Edit" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:576 +#: src/slic3r/GUI/MainFrame.cpp:581 msgid "&Window" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:577 +#: src/slic3r/GUI/MainFrame.cpp:582 msgid "&View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:580 +#: src/slic3r/GUI/MainFrame.cpp:585 msgid "&Help" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:602 src/slic3r/GUI/Plater.cpp:3821 +#: src/slic3r/GUI/MainFrame.cpp:607 src/slic3r/GUI/Plater.cpp:3839 msgid "Export" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:604 +#: src/slic3r/GUI/MainFrame.cpp:609 msgid "Mate&rial Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:630 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:635 +#: src/slic3r/GUI/MainFrame.cpp:644 msgid "No previously sliced file." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:636 src/slic3r/GUI/PrintHostDialogs.cpp:230 +#: src/slic3r/GUI/MainFrame.cpp:645 src/slic3r/GUI/PrintHostDialogs.cpp:230 msgid "Error" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:641 +#: src/slic3r/GUI/MainFrame.cpp:650 msgid "Previously sliced file (" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:641 +#: src/slic3r/GUI/MainFrame.cpp:650 msgid ") not found." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:642 +#: src/slic3r/GUI/MainFrame.cpp:651 msgid "File Not Found" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:677 src/slic3r/GUI/Tab.cpp:3239 +#: src/slic3r/GUI/MainFrame.cpp:686 src/slic3r/GUI/Tab.cpp:3244 msgid "Save " msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:677 +#: src/slic3r/GUI/MainFrame.cpp:686 msgid "SVG" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:677 +#: src/slic3r/GUI/MainFrame.cpp:686 msgid "G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:677 +#: src/slic3r/GUI/MainFrame.cpp:686 msgid " file as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:692 +#: src/slic3r/GUI/MainFrame.cpp:701 msgid "Save zip file as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:704 src/slic3r/GUI/Plater.cpp:2412 -#: src/slic3r/GUI/Plater.cpp:3615 src/slic3r/GUI/Tab.cpp:1159 -#: src/slic3r/GUI/Tab.cpp:3436 +#: src/slic3r/GUI/MainFrame.cpp:713 src/slic3r/GUI/Plater.cpp:2423 +#: src/slic3r/GUI/Plater.cpp:3633 src/slic3r/GUI/Tab.cpp:1160 +#: src/slic3r/GUI/Tab.cpp:3441 msgid "Slicing" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:704 +#: src/slic3r/GUI/MainFrame.cpp:713 msgid "Processing " msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:727 +#: src/slic3r/GUI/MainFrame.cpp:736 msgid " was successfully sliced." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:729 +#: src/slic3r/GUI/MainFrame.cpp:738 msgid "Slicing Done!" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:744 +#: src/slic3r/GUI/MainFrame.cpp:753 msgid "Select the STL file to repair:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:757 +#: src/slic3r/GUI/MainFrame.cpp:766 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:772 +#: src/slic3r/GUI/MainFrame.cpp:781 msgid "Your file was repaired." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:772 src/libslic3r/PrintConfig.cpp:3058 +#: src/slic3r/GUI/MainFrame.cpp:781 src/libslic3r/PrintConfig.cpp:3084 msgid "Repair" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:786 +#: src/slic3r/GUI/MainFrame.cpp:795 msgid "Save configuration as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:806 src/slic3r/GUI/MainFrame.cpp:870 +#: src/slic3r/GUI/MainFrame.cpp:815 src/slic3r/GUI/MainFrame.cpp:879 msgid "Select configuration to load:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:843 +#: src/slic3r/GUI/MainFrame.cpp:852 msgid "Save presets bundle as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:894 +#: src/slic3r/GUI/MainFrame.cpp:903 #, possible-c-format msgid "%d presets successfully imported." msgstr "" @@ -2352,7 +2439,7 @@ msgstr "" msgid "Sliced Info" msgstr "" -#: src/slic3r/GUI/Plater.cpp:212 src/slic3r/GUI/Plater.cpp:1041 +#: src/slic3r/GUI/Plater.cpp:212 src/slic3r/GUI/Plater.cpp:1048 msgid "Used Filament (m)" msgstr "" @@ -2368,13 +2455,13 @@ msgstr "" msgid "Used Material (unit)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:216 src/slic3r/GUI/Plater.cpp:1056 -#: src/libslic3r/PrintConfig.cpp:717 +#: src/slic3r/GUI/Plater.cpp:216 src/slic3r/GUI/Plater.cpp:1063 +#: src/libslic3r/PrintConfig.cpp:718 msgid "Cost" msgstr "" -#: src/slic3r/GUI/Plater.cpp:217 src/slic3r/GUI/Plater.cpp:1028 -#: src/slic3r/GUI/Plater.cpp:1070 +#: src/slic3r/GUI/Plater.cpp:217 src/slic3r/GUI/Plater.cpp:1035 +#: src/slic3r/GUI/Plater.cpp:1077 msgid "Estimated printing time" msgstr "" @@ -2386,397 +2473,405 @@ msgstr "" msgid "Click to edit preset" msgstr "" -#: src/slic3r/GUI/Plater.cpp:421 +#: src/slic3r/GUI/Plater.cpp:432 msgid "Select what kind of support do you need" msgstr "" -#: src/slic3r/GUI/Plater.cpp:423 src/libslic3r/PrintConfig.cpp:1815 -#: src/libslic3r/PrintConfig.cpp:2423 +#: src/slic3r/GUI/Plater.cpp:434 src/libslic3r/PrintConfig.cpp:1840 +#: src/libslic3r/PrintConfig.cpp:2448 msgid "Support on build plate only" msgstr "" -#: src/slic3r/GUI/Plater.cpp:424 +#: src/slic3r/GUI/Plater.cpp:435 src/slic3r/GUI/Plater.cpp:528 +msgid "For support enforcers only" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:436 msgid "Everywhere" msgstr "" -#: src/slic3r/GUI/Plater.cpp:446 src/slic3r/GUI/Tab.cpp:1056 +#: src/slic3r/GUI/Plater.cpp:454 src/slic3r/GUI/Tab.cpp:1057 msgid "Brim" msgstr "" -#: src/slic3r/GUI/Plater.cpp:448 +#: src/slic3r/GUI/Plater.cpp:456 msgid "" "This flag enables the brim that will be printed around each object on the " "first layer." msgstr "" -#: src/slic3r/GUI/Plater.cpp:456 +#: src/slic3r/GUI/Plater.cpp:464 msgid "Purging volumes" msgstr "" -#: src/slic3r/GUI/Plater.cpp:681 +#: src/slic3r/GUI/Plater.cpp:688 msgid "Print settings" msgstr "" -#: src/slic3r/GUI/Plater.cpp:682 src/slic3r/GUI/Tab.cpp:1470 -#: src/slic3r/GUI/Tab.cpp:1471 +#: src/slic3r/GUI/Plater.cpp:689 src/slic3r/GUI/Tab.cpp:1471 +#: src/slic3r/GUI/Tab.cpp:1472 msgid "Filament" msgstr "" -#: src/slic3r/GUI/Plater.cpp:683 src/slic3r/GUI/Preset.cpp:1276 -msgid "SLA print" +#: src/slic3r/GUI/Plater.cpp:690 +msgid "SLA print settings" msgstr "" -#: src/slic3r/GUI/Plater.cpp:684 src/slic3r/GUI/Preset.cpp:1277 +#: src/slic3r/GUI/Plater.cpp:691 src/slic3r/GUI/Preset.cpp:1277 msgid "SLA material" msgstr "" -#: src/slic3r/GUI/Plater.cpp:685 +#: src/slic3r/GUI/Plater.cpp:692 msgid "Printer" msgstr "" -#: src/slic3r/GUI/Plater.cpp:731 src/slic3r/GUI/Plater.cpp:3822 +#: src/slic3r/GUI/Plater.cpp:738 src/slic3r/GUI/Plater.cpp:3840 msgid "Send to printer" msgstr "" -#: src/slic3r/GUI/Plater.cpp:734 src/slic3r/GUI/Plater.cpp:2412 -#: src/slic3r/GUI/Plater.cpp:3618 +#: src/slic3r/GUI/Plater.cpp:741 src/slic3r/GUI/Plater.cpp:2423 +#: src/slic3r/GUI/Plater.cpp:3636 msgid "Slice now" msgstr "" -#: src/slic3r/GUI/Plater.cpp:873 +#: src/slic3r/GUI/Plater.cpp:880 msgid "Hold Shift to Slice & Export G-code" msgstr "" -#: src/slic3r/GUI/Plater.cpp:974 +#: src/slic3r/GUI/Plater.cpp:981 #, possible-c-format msgid "%d (%d shells)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:979 +#: src/slic3r/GUI/Plater.cpp:986 #, possible-c-format msgid "Auto-repaired (%d errors)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:982 +#: src/slic3r/GUI/Plater.cpp:989 #, possible-c-format msgid "" "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " "facets reversed, %d backwards edges" msgstr "" -#: src/slic3r/GUI/Plater.cpp:992 +#: src/slic3r/GUI/Plater.cpp:999 msgid "Yes" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1015 +#: src/slic3r/GUI/Plater.cpp:1022 msgid "Used Material (ml)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1018 +#: src/slic3r/GUI/Plater.cpp:1025 msgid "object(s)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1018 +#: src/slic3r/GUI/Plater.cpp:1025 msgid "supports and pad" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1043 src/slic3r/GUI/Plater.cpp:1058 +#: src/slic3r/GUI/Plater.cpp:1050 src/slic3r/GUI/Plater.cpp:1065 msgid "objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1043 src/slic3r/GUI/Plater.cpp:1058 +#: src/slic3r/GUI/Plater.cpp:1050 src/slic3r/GUI/Plater.cpp:1065 msgid "wipe tower" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1073 +#: src/slic3r/GUI/Plater.cpp:1080 msgid "normal mode" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1077 -msgid "silent mode" +#: src/slic3r/GUI/Plater.cpp:1084 +msgid "stealth mode" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1590 +#: src/slic3r/GUI/Plater.cpp:1601 msgid "Loading" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1600 +#: src/slic3r/GUI/Plater.cpp:1611 #, possible-c-format msgid "Processing input file %s\n" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1658 +#: src/slic3r/GUI/Plater.cpp:1669 msgid "" "This file contains several objects positioned at multiple heights. Instead " "of considering them as multiple objects, should I consider\n" "this file as a single object having multiple parts?\n" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1661 src/slic3r/GUI/Plater.cpp:1769 +#: src/slic3r/GUI/Plater.cpp:1672 src/slic3r/GUI/Plater.cpp:1780 msgid "Multi-part object detected" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1712 +#: src/slic3r/GUI/Plater.cpp:1723 msgid "" "This file cannot be loaded in a simple mode. Do you want to switch to an " "advanced mode?\n" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1713 +#: src/slic3r/GUI/Plater.cpp:1724 msgid "Detected advanced data" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1746 +#: src/slic3r/GUI/Plater.cpp:1757 #, possible-c-format msgid "" "You can't to add the object(s) from %s because of one or some of them " "is(are) multi-part" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1766 +#: src/slic3r/GUI/Plater.cpp:1777 msgid "" "Multiple objects were loaded for a multi-material printer.\n" "Instead of considering them as multiple objects, should I consider\n" "these files to represent a single object having multiple parts?\n" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1782 +#: src/slic3r/GUI/Plater.cpp:1793 msgid "Loaded" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1874 +#: src/slic3r/GUI/Plater.cpp:1885 msgid "" "Your object appears to be too large, so it was automatically scaled down to " "fit your print bed." msgstr "" -#: src/slic3r/GUI/Plater.cpp:1875 +#: src/slic3r/GUI/Plater.cpp:1886 msgid "Object too large?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1925 +#: src/slic3r/GUI/Plater.cpp:1936 msgid "Export STL file:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1932 +#: src/slic3r/GUI/Plater.cpp:1943 msgid "Export AMF file:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1938 +#: src/slic3r/GUI/Plater.cpp:1949 msgid "Save file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2103 +#: src/slic3r/GUI/Plater.cpp:2114 msgid "Arranging canceled" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2106 +#: src/slic3r/GUI/Plater.cpp:2117 msgid "Arranging" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2140 +#: src/slic3r/GUI/Plater.cpp:2151 msgid "Could not arrange model objects! Some geometries may be invalid." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2144 +#: src/slic3r/GUI/Plater.cpp:2155 msgid "Arranging done." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2185 +#: src/slic3r/GUI/Plater.cpp:2196 msgid "Orientation search canceled" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2190 +#: src/slic3r/GUI/Plater.cpp:2201 msgid "Searching for optimal orientation" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2251 +#: src/slic3r/GUI/Plater.cpp:2262 msgid "Orientation found." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2271 +#: src/slic3r/GUI/Plater.cpp:2282 msgid "" "The selected object can't be split because it contains more than one volume/" "material." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2397 +#: src/slic3r/GUI/Plater.cpp:2408 msgid "Invalid data" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2406 +#: src/slic3r/GUI/Plater.cpp:2417 msgid "Ready to slice" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2444 src/slic3r/GUI/PrintHostDialogs.cpp:231 +#: src/slic3r/GUI/Plater.cpp:2455 src/slic3r/GUI/PrintHostDialogs.cpp:231 msgid "Cancelling" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2461 +#: src/slic3r/GUI/Plater.cpp:2472 msgid "Another export job is currently running." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2722 +#: src/slic3r/GUI/Plater.cpp:2733 msgid "Export failed" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2727 src/slic3r/GUI/PrintHostDialogs.cpp:232 +#: src/slic3r/GUI/Plater.cpp:2738 src/slic3r/GUI/PrintHostDialogs.cpp:232 msgid "Cancelled" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2813 src/slic3r/GUI/Plater.cpp:2825 -#: src/slic3r/GUI/Plater.cpp:2897 +#: src/slic3r/GUI/Plater.cpp:2824 src/slic3r/GUI/Plater.cpp:2836 +#: src/slic3r/GUI/Plater.cpp:2914 msgid "Increase copies" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2891 src/slic3r/GUI/Plater.cpp:2909 +#: src/slic3r/GUI/Plater.cpp:2908 src/slic3r/GUI/Plater.cpp:2926 msgid "Remove the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2897 +#: src/slic3r/GUI/Plater.cpp:2914 msgid "Place one more copy of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2899 +#: src/slic3r/GUI/Plater.cpp:2916 msgid "Decrease copies" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2899 +#: src/slic3r/GUI/Plater.cpp:2916 msgid "Remove one copy of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2901 +#: src/slic3r/GUI/Plater.cpp:2918 msgid "Set number of copies" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2901 +#: src/slic3r/GUI/Plater.cpp:2918 msgid "Change the number of copies of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2924 +#: src/slic3r/GUI/Plater.cpp:2941 msgid "Reload from Disk" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2924 +#: src/slic3r/GUI/Plater.cpp:2941 msgid "Reload the selected file from Disk" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2927 +#: src/slic3r/GUI/Plater.cpp:2944 msgid "Export the selected object as STL file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2939 +#: src/slic3r/GUI/Plater.cpp:2956 msgid "Along X axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2939 +#: src/slic3r/GUI/Plater.cpp:2956 msgid "Mirror the selected object along the X axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2941 +#: src/slic3r/GUI/Plater.cpp:2958 msgid "Along Y axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2941 +#: src/slic3r/GUI/Plater.cpp:2958 msgid "Mirror the selected object along the Y axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2943 +#: src/slic3r/GUI/Plater.cpp:2960 msgid "Along Z axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2943 +#: src/slic3r/GUI/Plater.cpp:2960 msgid "Mirror the selected object along the Z axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2946 +#: src/slic3r/GUI/Plater.cpp:2963 msgid "Mirror" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2946 +#: src/slic3r/GUI/Plater.cpp:2963 msgid "Mirror the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2966 +#: src/slic3r/GUI/Plater.cpp:2983 msgid "To objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2966 src/slic3r/GUI/Plater.cpp:2988 +#: src/slic3r/GUI/Plater.cpp:2983 src/slic3r/GUI/Plater.cpp:3005 msgid "Split the selected object into individual objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2968 +#: src/slic3r/GUI/Plater.cpp:2985 msgid "To parts" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2968 src/slic3r/GUI/Plater.cpp:3008 +#: src/slic3r/GUI/Plater.cpp:2985 src/slic3r/GUI/Plater.cpp:3025 msgid "Split the selected object into individual sub-parts" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2971 src/slic3r/GUI/Plater.cpp:2988 -#: src/slic3r/GUI/Plater.cpp:3008 src/libslic3r/PrintConfig.cpp:3082 +#: src/slic3r/GUI/Plater.cpp:2988 src/slic3r/GUI/Plater.cpp:3005 +#: src/slic3r/GUI/Plater.cpp:3025 src/libslic3r/PrintConfig.cpp:3108 msgid "Split" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2971 +#: src/slic3r/GUI/Plater.cpp:2988 msgid "Split the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2994 +#: src/slic3r/GUI/Plater.cpp:3011 msgid "Optimize orientation" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2994 +#: src/slic3r/GUI/Plater.cpp:3011 msgid "Optimize the rotation of the object for better print results." msgstr "" -#: src/slic3r/GUI/Plater.cpp:3298 +#: src/slic3r/GUI/Plater.cpp:3074 +msgid "3D editor view" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:3085 src/slic3r/GUI/Tab.cpp:2289 +msgid "Preview" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:3316 msgid "All objects will be removed, continue ?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3298 -msgid "Delete all" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:3433 +#: src/slic3r/GUI/Plater.cpp:3451 msgid "Save G-code file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3433 +#: src/slic3r/GUI/Plater.cpp:3451 msgid "Save SL1 file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3545 +#: src/slic3r/GUI/Plater.cpp:3563 #, possible-c-format msgid "STL file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3561 +#: src/slic3r/GUI/Plater.cpp:3579 #, possible-c-format msgid "AMF file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3564 +#: src/slic3r/GUI/Plater.cpp:3582 #, possible-c-format msgid "Error exporting AMF file %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3590 +#: src/slic3r/GUI/Plater.cpp:3608 #, possible-c-format msgid "3MF file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3593 +#: src/slic3r/GUI/Plater.cpp:3611 #, possible-c-format msgid "Error exporting 3MF file %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3822 +#: src/slic3r/GUI/Plater.cpp:3840 msgid "Send G-code" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:19 src/slic3r/GUI/Tab.cpp:1812 -#: src/slic3r/GUI/Tab.cpp:2013 +#: src/slic3r/GUI/Preferences.cpp:19 src/slic3r/GUI/Tab.cpp:1813 +#: src/slic3r/GUI/Tab.cpp:2014 msgid "General" msgstr "" @@ -2883,7 +2978,7 @@ msgstr "" msgid "User presets" msgstr "" -#: src/slic3r/GUI/Preset.cpp:1003 src/slic3r/GUI/Tab.cpp:237 +#: src/slic3r/GUI/Preset.cpp:1003 src/slic3r/GUI/Tab.cpp:238 msgid "Add a new printer" msgstr "" @@ -2891,6 +2986,10 @@ msgstr "" msgid "filament" msgstr "" +#: src/slic3r/GUI/Preset.cpp:1276 +msgid "SLA print" +msgstr "" + #: src/slic3r/GUI/PresetHints.cpp:28 #, possible-c-format msgid "" @@ -3033,6 +3132,30 @@ msgstr "" msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "" +#: src/slic3r/GUI/PrintHostDialogs.cpp:148 +msgid "ID" +msgstr "" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:149 +msgid "Progress" +msgstr "" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:150 +msgid "Status" +msgstr "" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:151 +msgid "Host" +msgstr "" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:152 +msgid "Filename" +msgstr "" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:153 +msgid "Error Message" +msgstr "" + #: src/slic3r/GUI/PrintHostDialogs.cpp:156 msgid "Cancel selected" msgstr "" @@ -3067,10 +3190,10 @@ msgid "Time" msgstr "" #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/RammingChart.cpp:81 -#: src/slic3r/GUI/WipeTowerDialog.cpp:82 src/libslic3r/PrintConfig.cpp:612 -#: src/libslic3r/PrintConfig.cpp:656 src/libslic3r/PrintConfig.cpp:671 -#: src/libslic3r/PrintConfig.cpp:2243 src/libslic3r/PrintConfig.cpp:2252 -#: src/libslic3r/PrintConfig.cpp:2312 src/libslic3r/PrintConfig.cpp:2319 +#: src/slic3r/GUI/WipeTowerDialog.cpp:82 src/libslic3r/PrintConfig.cpp:613 +#: src/libslic3r/PrintConfig.cpp:657 src/libslic3r/PrintConfig.cpp:672 +#: src/libslic3r/PrintConfig.cpp:2268 src/libslic3r/PrintConfig.cpp:2277 +#: src/libslic3r/PrintConfig.cpp:2337 src/libslic3r/PrintConfig.cpp:2344 msgid "s" msgstr "" @@ -3082,211 +3205,211 @@ msgstr "" msgid "System Information" msgstr "" -#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:229 +#: src/slic3r/GUI/Tab.cpp:51 src/libslic3r/PrintConfig.cpp:230 msgid "Compatible printers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:51 +#: src/slic3r/GUI/Tab.cpp:52 msgid "Select the printers this profile is compatible with." msgstr "" -#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:244 +#: src/slic3r/GUI/Tab.cpp:57 src/libslic3r/PrintConfig.cpp:245 msgid "Compatible print profiles" msgstr "" -#: src/slic3r/GUI/Tab.cpp:57 +#: src/slic3r/GUI/Tab.cpp:58 msgid "Select the print profiles this profile is compatible with." msgstr "" -#: src/slic3r/GUI/Tab.cpp:130 +#: src/slic3r/GUI/Tab.cpp:131 msgid "Save current " msgstr "" -#: src/slic3r/GUI/Tab.cpp:131 +#: src/slic3r/GUI/Tab.cpp:132 msgid "Delete this preset" msgstr "" -#: src/slic3r/GUI/Tab.cpp:136 +#: src/slic3r/GUI/Tab.cpp:137 msgid "" "Hover the cursor over buttons to find more information \n" "or click this button." msgstr "" -#: src/slic3r/GUI/Tab.cpp:907 +#: src/slic3r/GUI/Tab.cpp:915 msgid "It's a default preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:908 +#: src/slic3r/GUI/Tab.cpp:916 msgid "It's a system preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:909 +#: src/slic3r/GUI/Tab.cpp:917 msgid "Current preset is inherited from " msgstr "" -#: src/slic3r/GUI/Tab.cpp:914 +#: src/slic3r/GUI/Tab.cpp:922 msgid "It can't be deleted or modified. " msgstr "" -#: src/slic3r/GUI/Tab.cpp:915 +#: src/slic3r/GUI/Tab.cpp:923 msgid "" "Any modifications should be saved as a new preset inherited from this one. " msgstr "" -#: src/slic3r/GUI/Tab.cpp:916 +#: src/slic3r/GUI/Tab.cpp:924 msgid "To do that please specify a new name for the preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:920 +#: src/slic3r/GUI/Tab.cpp:928 msgid "Additional information:" msgstr "" -#: src/slic3r/GUI/Tab.cpp:926 +#: src/slic3r/GUI/Tab.cpp:934 msgid "printer model" msgstr "" -#: src/slic3r/GUI/Tab.cpp:934 +#: src/slic3r/GUI/Tab.cpp:942 msgid "default print profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:937 +#: src/slic3r/GUI/Tab.cpp:945 msgid "default filament profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:951 +#: src/slic3r/GUI/Tab.cpp:959 msgid "default SLA material profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:955 +#: src/slic3r/GUI/Tab.cpp:963 msgid "default SLA print profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:997 src/slic3r/GUI/Tab.cpp:3391 +#: src/slic3r/GUI/Tab.cpp:998 src/slic3r/GUI/Tab.cpp:3396 msgid "Layers and perimeters" msgstr "" -#: src/slic3r/GUI/Tab.cpp:998 src/libslic3r/PrintConfig.cpp:55 +#: src/slic3r/GUI/Tab.cpp:999 src/libslic3r/PrintConfig.cpp:56 msgid "Layer height" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1002 +#: src/slic3r/GUI/Tab.cpp:1003 msgid "Vertical shells" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1013 +#: src/slic3r/GUI/Tab.cpp:1014 msgid "Horizontal shells" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1014 src/libslic3r/PrintConfig.cpp:1710 +#: src/slic3r/GUI/Tab.cpp:1015 src/libslic3r/PrintConfig.cpp:1735 msgid "Solid layers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1019 +#: src/slic3r/GUI/Tab.cpp:1020 msgid "Quality (slower slicing)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1037 +#: src/slic3r/GUI/Tab.cpp:1038 msgid "Reducing printing time" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1049 +#: src/slic3r/GUI/Tab.cpp:1050 msgid "Skirt and brim" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1066 +#: src/slic3r/GUI/Tab.cpp:1067 msgid "Raft" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1070 +#: src/slic3r/GUI/Tab.cpp:1071 msgid "Options for support material and raft" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1085 +#: src/slic3r/GUI/Tab.cpp:1086 msgid "Speed for print moves" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1097 +#: src/slic3r/GUI/Tab.cpp:1098 msgid "Speed for non-print moves" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1100 +#: src/slic3r/GUI/Tab.cpp:1101 msgid "Modifiers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1103 +#: src/slic3r/GUI/Tab.cpp:1104 msgid "Acceleration control (advanced)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1110 +#: src/slic3r/GUI/Tab.cpp:1111 msgid "Autospeed (advanced)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1118 +#: src/slic3r/GUI/Tab.cpp:1119 msgid "Multiple Extruders" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1126 +#: src/slic3r/GUI/Tab.cpp:1127 msgid "Ooze prevention" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1143 +#: src/slic3r/GUI/Tab.cpp:1144 msgid "Extrusion width" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1153 +#: src/slic3r/GUI/Tab.cpp:1154 msgid "Overlap" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1156 +#: src/slic3r/GUI/Tab.cpp:1157 msgid "Flow" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1165 +#: src/slic3r/GUI/Tab.cpp:1166 msgid "Other" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1168 src/slic3r/GUI/Tab.cpp:3439 +#: src/slic3r/GUI/Tab.cpp:1169 src/slic3r/GUI/Tab.cpp:3444 msgid "Output options" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1169 +#: src/slic3r/GUI/Tab.cpp:1170 msgid "Sequential printing" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1171 +#: src/slic3r/GUI/Tab.cpp:1172 msgid "Extruder clearance (mm)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1180 src/slic3r/GUI/Tab.cpp:3440 +#: src/slic3r/GUI/Tab.cpp:1181 src/slic3r/GUI/Tab.cpp:3445 msgid "Output file" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1187 src/libslic3r/PrintConfig.cpp:1383 +#: src/slic3r/GUI/Tab.cpp:1188 src/libslic3r/PrintConfig.cpp:1408 msgid "Post-processing scripts" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1193 src/slic3r/GUI/Tab.cpp:1194 -#: src/slic3r/GUI/Tab.cpp:1576 src/slic3r/GUI/Tab.cpp:1577 -#: src/slic3r/GUI/Tab.cpp:1985 src/slic3r/GUI/Tab.cpp:1986 -#: src/slic3r/GUI/Tab.cpp:2079 src/slic3r/GUI/Tab.cpp:2080 -#: src/slic3r/GUI/Tab.cpp:3328 src/slic3r/GUI/Tab.cpp:3329 +#: src/slic3r/GUI/Tab.cpp:1194 src/slic3r/GUI/Tab.cpp:1195 +#: src/slic3r/GUI/Tab.cpp:1577 src/slic3r/GUI/Tab.cpp:1578 +#: src/slic3r/GUI/Tab.cpp:1986 src/slic3r/GUI/Tab.cpp:1987 +#: src/slic3r/GUI/Tab.cpp:2080 src/slic3r/GUI/Tab.cpp:2081 +#: src/slic3r/GUI/Tab.cpp:3333 src/slic3r/GUI/Tab.cpp:3334 msgid "Notes" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1200 src/slic3r/GUI/Tab.cpp:1584 -#: src/slic3r/GUI/Tab.cpp:1992 src/slic3r/GUI/Tab.cpp:2086 -#: src/slic3r/GUI/Tab.cpp:3336 src/slic3r/GUI/Tab.cpp:3445 -msgid "Dependencies" -msgstr "" - #: src/slic3r/GUI/Tab.cpp:1201 src/slic3r/GUI/Tab.cpp:1585 #: src/slic3r/GUI/Tab.cpp:1993 src/slic3r/GUI/Tab.cpp:2087 -#: src/slic3r/GUI/Tab.cpp:3337 src/slic3r/GUI/Tab.cpp:3446 +#: src/slic3r/GUI/Tab.cpp:3341 src/slic3r/GUI/Tab.cpp:3450 +msgid "Dependencies" +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:1202 src/slic3r/GUI/Tab.cpp:1586 +#: src/slic3r/GUI/Tab.cpp:1994 src/slic3r/GUI/Tab.cpp:2088 +#: src/slic3r/GUI/Tab.cpp:3342 src/slic3r/GUI/Tab.cpp:3451 msgid "Profile dependencies" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1247 -#, no-c-format +#: src/slic3r/GUI/Tab.cpp:1248 +#, possible-c-format msgid "" "The Spiral Vase mode requires:\n" "- one perimeter\n" @@ -3298,11 +3421,11 @@ msgid "" "Shall I adjust those settings in order to enable Spiral Vase?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1254 +#: src/slic3r/GUI/Tab.cpp:1255 msgid "Spiral Vase" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1277 +#: src/slic3r/GUI/Tab.cpp:1278 msgid "" "The Wipe Tower currently supports the non-soluble supports only\n" "if they are printed with the current extruder without triggering a tool " @@ -3313,11 +3436,11 @@ msgid "" "Shall I adjust those settings in order to enable the Wipe Tower?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1281 src/slic3r/GUI/Tab.cpp:1298 +#: src/slic3r/GUI/Tab.cpp:1282 src/slic3r/GUI/Tab.cpp:1299 msgid "Wipe Tower" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1295 +#: src/slic3r/GUI/Tab.cpp:1296 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers\n" "need to be synchronized with the object layers.\n" @@ -3325,7 +3448,7 @@ msgid "" "Shall I synchronize support layers in order to enable the Wipe Tower?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1313 +#: src/slic3r/GUI/Tab.cpp:1314 msgid "" "Supports work better, if the following feature is enabled:\n" "- Detect bridging perimeters\n" @@ -3333,116 +3456,112 @@ msgid "" "Shall I adjust those settings for supports?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1316 +#: src/slic3r/GUI/Tab.cpp:1317 msgid "Support Generator" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1358 +#: src/slic3r/GUI/Tab.cpp:1359 msgid "The " msgstr "" -#: src/slic3r/GUI/Tab.cpp:1358 -#, no-c-format +#: src/slic3r/GUI/Tab.cpp:1359 +#, possible-c-format msgid "" " infill pattern is not supposed to work at 100% density.\n" "\n" "Shall I switch to rectilinear fill pattern?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1478 +#: src/slic3r/GUI/Tab.cpp:1479 msgid "Temperature " msgstr "" -#: src/slic3r/GUI/Tab.cpp:1484 +#: src/slic3r/GUI/Tab.cpp:1485 msgid "Bed" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1489 +#: src/slic3r/GUI/Tab.cpp:1490 msgid "Cooling" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1490 src/libslic3r/PrintConfig.cpp:1286 -#: src/libslic3r/PrintConfig.cpp:2099 +#: src/slic3r/GUI/Tab.cpp:1491 src/libslic3r/PrintConfig.cpp:1311 +#: src/libslic3r/PrintConfig.cpp:2124 msgid "Enable" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1501 +#: src/slic3r/GUI/Tab.cpp:1502 msgid "Fan settings" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1502 +#: src/slic3r/GUI/Tab.cpp:1503 msgid "Fan speed" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1510 +#: src/slic3r/GUI/Tab.cpp:1511 msgid "Cooling thresholds" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1516 +#: src/slic3r/GUI/Tab.cpp:1517 msgid "Filament properties" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1520 +#: src/slic3r/GUI/Tab.cpp:1521 msgid "Print speed override" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1530 +#: src/slic3r/GUI/Tab.cpp:1531 msgid "Toolchange parameters with single extruder MM printers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1545 +#: src/slic3r/GUI/Tab.cpp:1546 msgid "Ramming settings" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1563 src/slic3r/GUI/Tab.cpp:1948 +#: src/slic3r/GUI/Tab.cpp:1564 src/slic3r/GUI/Tab.cpp:1949 msgid "Custom G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1564 src/slic3r/GUI/Tab.cpp:1949 -#: src/libslic3r/PrintConfig.cpp:1736 src/libslic3r/PrintConfig.cpp:1751 +#: src/slic3r/GUI/Tab.cpp:1565 src/slic3r/GUI/Tab.cpp:1950 +#: src/libslic3r/PrintConfig.cpp:1761 src/libslic3r/PrintConfig.cpp:1776 msgid "Start G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1570 src/slic3r/GUI/Tab.cpp:1955 -#: src/libslic3r/PrintConfig.cpp:359 src/libslic3r/PrintConfig.cpp:369 +#: src/slic3r/GUI/Tab.cpp:1571 src/slic3r/GUI/Tab.cpp:1956 +#: src/libslic3r/PrintConfig.cpp:360 src/libslic3r/PrintConfig.cpp:370 msgid "End G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1681 -msgid "Browse" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1700 src/slic3r/GUI/Tab.cpp:1888 +#: src/slic3r/GUI/Tab.cpp:1701 src/slic3r/GUI/Tab.cpp:1889 msgid "Test" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1710 +#: src/slic3r/GUI/Tab.cpp:1711 msgid "Could not get a valid Printer Host reference" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1716 src/slic3r/GUI/Tab.cpp:1901 +#: src/slic3r/GUI/Tab.cpp:1717 src/slic3r/GUI/Tab.cpp:1902 msgid "Success!" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1731 +#: src/slic3r/GUI/Tab.cpp:1732 msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" "signed certificate." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1737 +#: src/slic3r/GUI/Tab.cpp:1738 msgid " Browse " msgstr "" -#: src/slic3r/GUI/Tab.cpp:1744 +#: src/slic3r/GUI/Tab.cpp:1745 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1745 +#: src/slic3r/GUI/Tab.cpp:1746 msgid "Open CA certificate file" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1773 +#: src/slic3r/GUI/Tab.cpp:1774 #, possible-c-format msgid "" "HTTPS CA File:\n" @@ -3452,299 +3571,307 @@ msgid "" "Store / Keychain." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1813 src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:1814 src/slic3r/GUI/Tab.cpp:2015 msgid "Size and coordinates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1818 src/slic3r/GUI/Tab.cpp:2019 -#: src/slic3r/GUI/Tab.cpp:2988 +#: src/slic3r/GUI/Tab.cpp:1819 src/slic3r/GUI/Tab.cpp:2020 +#: src/slic3r/GUI/Tab.cpp:2989 msgid " Set " msgstr "" -#: src/slic3r/GUI/Tab.cpp:1840 +#: src/slic3r/GUI/Tab.cpp:1841 msgid "Capabilities" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1845 +#: src/slic3r/GUI/Tab.cpp:1846 msgid "Number of extruders of the printer." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1873 +#: src/slic3r/GUI/Tab.cpp:1874 msgid "USB/Serial connection" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1874 src/libslic3r/PrintConfig.cpp:1591 +#: src/slic3r/GUI/Tab.cpp:1875 src/libslic3r/PrintConfig.cpp:1616 msgid "Serial port" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1879 +#: src/slic3r/GUI/Tab.cpp:1880 msgid "Rescan serial ports" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1901 +#: src/slic3r/GUI/Tab.cpp:1902 msgid "Connection to printer works correctly." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1904 +#: src/slic3r/GUI/Tab.cpp:1905 msgid "Connection failed." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1917 src/slic3r/GUI/Tab.cpp:2074 +#: src/slic3r/GUI/Tab.cpp:1918 src/slic3r/GUI/Tab.cpp:2075 msgid "Print Host upload" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1961 src/libslic3r/PrintConfig.cpp:128 +#: src/slic3r/GUI/Tab.cpp:1962 src/libslic3r/PrintConfig.cpp:129 msgid "Before layer change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1967 src/libslic3r/PrintConfig.cpp:1031 +#: src/slic3r/GUI/Tab.cpp:1968 src/libslic3r/PrintConfig.cpp:1032 msgid "After layer change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1973 src/libslic3r/PrintConfig.cpp:2006 +#: src/slic3r/GUI/Tab.cpp:1974 src/libslic3r/PrintConfig.cpp:2031 msgid "Tool change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1979 +#: src/slic3r/GUI/Tab.cpp:1980 msgid "Between objects G-code (for sequential printing)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2041 +#: src/slic3r/GUI/Tab.cpp:2042 msgid "Display" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2052 +#: src/slic3r/GUI/Tab.cpp:2053 msgid "Tilt" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2053 +#: src/slic3r/GUI/Tab.cpp:2054 msgid "Tilt time" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2059 src/slic3r/GUI/Tab.cpp:3310 +#: src/slic3r/GUI/Tab.cpp:2060 src/slic3r/GUI/Tab.cpp:3315 msgid "Corrections" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2136 src/slic3r/GUI/Tab.cpp:2209 -#: src/libslic3r/PrintConfig.cpp:1077 src/libslic3r/PrintConfig.cpp:1087 -#: src/libslic3r/PrintConfig.cpp:1097 src/libslic3r/PrintConfig.cpp:1110 -#: src/libslic3r/PrintConfig.cpp:1121 src/libslic3r/PrintConfig.cpp:1132 -#: src/libslic3r/PrintConfig.cpp:1143 +#: src/slic3r/GUI/Tab.cpp:2137 src/slic3r/GUI/Tab.cpp:2210 +#: src/libslic3r/PrintConfig.cpp:1082 src/libslic3r/PrintConfig.cpp:1100 +#: src/libslic3r/PrintConfig.cpp:1118 src/libslic3r/PrintConfig.cpp:1135 +#: src/libslic3r/PrintConfig.cpp:1146 src/libslic3r/PrintConfig.cpp:1157 +#: src/libslic3r/PrintConfig.cpp:1168 msgid "Machine limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2150 -msgid "Values in this column are for Full Power mode" -msgstr "" - #: src/slic3r/GUI/Tab.cpp:2151 -msgid "Full Power" +msgid "Values in this column are for Normal mode" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2156 -msgid "Values in this column are for Silent mode" +#: src/slic3r/GUI/Tab.cpp:2152 +msgid "Normal" msgstr "" #: src/slic3r/GUI/Tab.cpp:2157 -msgid "Silent" +msgid "Values in this column are for Stealth mode" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2165 +#: src/slic3r/GUI/Tab.cpp:2158 +msgid "Stealth" +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:2166 msgid "Maximum feedrates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2170 +#: src/slic3r/GUI/Tab.cpp:2171 msgid "Maximum accelerations" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2177 +#: src/slic3r/GUI/Tab.cpp:2178 msgid "Jerk limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2182 +#: src/slic3r/GUI/Tab.cpp:2183 msgid "Minimum feedrates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2231 src/slic3r/GUI/Tab.cpp:2239 +#: src/slic3r/GUI/Tab.cpp:2232 src/slic3r/GUI/Tab.cpp:2240 msgid "Single extruder MM setup" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2240 +#: src/slic3r/GUI/Tab.cpp:2241 msgid "Single extruder multimaterial parameters" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2253 src/libslic3r/GCode/PreviewData.cpp:475 +#: src/slic3r/GUI/Tab.cpp:2254 src/libslic3r/GCode/PreviewData.cpp:475 #, possible-c-format msgid "Extruder %d" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2260 +#: src/slic3r/GUI/Tab.cpp:2261 msgid "Layer height limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2265 +#: src/slic3r/GUI/Tab.cpp:2266 msgid "Position (for multi-extruder printers)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2268 +#: src/slic3r/GUI/Tab.cpp:2269 msgid "Retraction" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2271 +#: src/slic3r/GUI/Tab.cpp:2272 msgid "Only lift Z" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2284 +#: src/slic3r/GUI/Tab.cpp:2285 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2288 -msgid "Preview" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2429 +#: src/slic3r/GUI/Tab.cpp:2430 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" "Shall I disable it in order to enable Firmware Retraction?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2431 +#: src/slic3r/GUI/Tab.cpp:2432 msgid "Firmware Retraction" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2757 -#, possible-c-format -msgid "Default preset (%s)" -msgstr "" - #: src/slic3r/GUI/Tab.cpp:2758 #, possible-c-format +msgid "Default preset (%s)" +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:2759 +#, possible-c-format msgid "Preset (%s)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2775 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "has the following unsaved changes:" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2779 msgid "is not compatible with printer" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2779 +#: src/slic3r/GUI/Tab.cpp:2780 msgid "is not compatible with print profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2782 msgid "and it has the following unsaved changes:" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2784 -msgid "Discard changes and continue anyway?" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2785 +#: src/slic3r/GUI/Tab.cpp:2786 msgid "Unsaved Changes" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2797 +#: src/slic3r/GUI/Tab.cpp:2798 msgid "Please check your object list before preset changing." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2878 -msgid "Copy" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2900 +#: src/slic3r/GUI/Tab.cpp:2901 msgid "The supplied name is empty. It can't be saved." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2905 +#: src/slic3r/GUI/Tab.cpp:2906 msgid "Cannot overwrite a system profile." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2909 +#: src/slic3r/GUI/Tab.cpp:2910 msgid "Cannot overwrite an external profile." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2935 +#: src/slic3r/GUI/Tab.cpp:2936 msgid "remove" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2935 +#: src/slic3r/GUI/Tab.cpp:2936 msgid "delete" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2936 +#: src/slic3r/GUI/Tab.cpp:2937 msgid "Are you sure you want to " msgstr "" -#: src/slic3r/GUI/Tab.cpp:2936 +#: src/slic3r/GUI/Tab.cpp:2937 msgid " the selected preset?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2937 +#: src/slic3r/GUI/Tab.cpp:2938 msgid "Remove" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2938 +#: src/slic3r/GUI/Tab.cpp:2939 msgid " Preset" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3064 -msgid "" -"LOCKED LOCK;indicates that the settings are the same as the system values " -"for the current option group" +#: src/slic3r/GUI/Tab.cpp:3065 +msgid "LOCKED LOCK" msgstr "" +#. TRN Description for "LOCKED LOCK" #: src/slic3r/GUI/Tab.cpp:3067 msgid "" -"UNLOCKED LOCK;indicates that some settings were changed and are not equal to " -"the system values for the current option group.\n" +"indicates that the settings are the same as the system values for the " +"current option group" +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:3069 +msgid "UNLOCKED LOCK" +msgstr "" + +#. TRN Description for "UNLOCKED LOCK" +#: src/slic3r/GUI/Tab.cpp:3071 +msgid "" +"indicates that some settings were changed and are not equal to the system " +"values for the current option group.\n" "Click the UNLOCKED LOCK icon to reset all settings for current option group " "to the system values." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3073 +#: src/slic3r/GUI/Tab.cpp:3076 +msgid "WHITE BULLET" +msgstr "" + +#. TRN Description for "WHITE BULLET" +#: src/slic3r/GUI/Tab.cpp:3078 msgid "" -"WHITE BULLET;for the left button: \tindicates a non-system preset,\n" +"for the left button: \tindicates a non-system preset,\n" "for the right button: \tindicates that the settings hasn't been modified." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3077 +#: src/slic3r/GUI/Tab.cpp:3081 +msgid "BACK ARROW" +msgstr "" + +#. TRN Description for "BACK ARROW" +#: src/slic3r/GUI/Tab.cpp:3083 msgid "" -"BACK ARROW;indicates that the settings were changed and are not equal to the " -"last saved preset for the current option group.\n" +"indicates that the settings were changed and are not equal to the last saved " +"preset for the current option group.\n" "Click the BACK ARROW icon to reset all settings for the current option group " "to the last saved preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3103 +#: src/slic3r/GUI/Tab.cpp:3108 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system " "values for the current option group" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3105 +#: src/slic3r/GUI/Tab.cpp:3110 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system values for the current option group.\n" "Click to reset all settings for current option group to the system values." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3108 +#: src/slic3r/GUI/Tab.cpp:3113 msgid "WHITE BULLET icon indicates a non system preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3111 +#: src/slic3r/GUI/Tab.cpp:3116 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3113 +#: src/slic3r/GUI/Tab.cpp:3118 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -3752,104 +3879,104 @@ msgid "" "preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3119 +#: src/slic3r/GUI/Tab.cpp:3124 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system value." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3120 +#: src/slic3r/GUI/Tab.cpp:3125 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system value.\n" "Click to reset current value to the system value." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3126 +#: src/slic3r/GUI/Tab.cpp:3131 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3127 +#: src/slic3r/GUI/Tab.cpp:3132 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" "Click to reset current value to the last saved preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3239 +#: src/slic3r/GUI/Tab.cpp:3244 msgid " as:" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3283 +#: src/slic3r/GUI/Tab.cpp:3288 msgid "the following postfix are not allowed:" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3287 +#: src/slic3r/GUI/Tab.cpp:3292 msgid "The supplied name is not available." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3300 +#: src/slic3r/GUI/Tab.cpp:3305 msgid "Material" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3302 src/slic3r/GUI/Tab.cpp:3393 +#: src/slic3r/GUI/Tab.cpp:3307 src/slic3r/GUI/Tab.cpp:3398 msgid "Layers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3306 +#: src/slic3r/GUI/Tab.cpp:3311 msgid "Exposure" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3401 +#: src/slic3r/GUI/Tab.cpp:3406 msgid "Support head" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3406 +#: src/slic3r/GUI/Tab.cpp:3411 msgid "Support pillar" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3416 +#: src/slic3r/GUI/Tab.cpp:3421 msgid "Connection of the support sticks and junctions" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3421 +#: src/slic3r/GUI/Tab.cpp:3426 msgid "Automatic generation" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3483 +#: src/slic3r/GUI/Tab.cpp:3488 msgid "Head penetration should not be greater than the head width." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3484 +#: src/slic3r/GUI/Tab.cpp:3489 msgid "Invalid Head penetration" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3496 +#: src/slic3r/GUI/Tab.cpp:3501 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3497 +#: src/slic3r/GUI/Tab.cpp:3502 msgid "Invalid pinhead diameter" msgstr "" -#: src/slic3r/GUI/Tab.hpp:317 src/slic3r/GUI/Tab.hpp:405 +#: src/slic3r/GUI/Tab.hpp:315 src/slic3r/GUI/Tab.hpp:403 msgid "Print Settings" msgstr "" -#: src/slic3r/GUI/Tab.hpp:335 +#: src/slic3r/GUI/Tab.hpp:333 msgid "Filament Settings" msgstr "" -#: src/slic3r/GUI/Tab.hpp:368 +#: src/slic3r/GUI/Tab.hpp:366 msgid "Printer Settings" msgstr "" -#: src/slic3r/GUI/Tab.hpp:391 +#: src/slic3r/GUI/Tab.hpp:389 msgid "Material Settings" msgstr "" -#: src/slic3r/GUI/Tab.hpp:417 +#: src/slic3r/GUI/Tab.hpp:415 msgid "Save preset" msgstr "" @@ -4046,21 +4173,21 @@ msgstr "" msgid "Show advanced settings" msgstr "" -#: src/slic3r/GUI/wxExtensions.cpp:358 +#: src/slic3r/GUI/wxExtensions.cpp:400 msgid "Instances" msgstr "" -#: src/slic3r/GUI/wxExtensions.cpp:365 +#: src/slic3r/GUI/wxExtensions.cpp:407 src/slic3r/GUI/wxExtensions.cpp:474 #, possible-c-format -msgid "Instance_%d" +msgid "Instance %d" msgstr "" -#: src/slic3r/GUI/wxExtensions.cpp:2412 +#: src/slic3r/GUI/wxExtensions.cpp:2462 #, possible-c-format msgid "Switch to the %s mode" msgstr "" -#: src/slic3r/GUI/wxExtensions.cpp:2413 +#: src/slic3r/GUI/wxExtensions.cpp:2463 #, possible-c-format msgid "Current mode is %s" msgstr "" @@ -4103,7 +4230,7 @@ msgid "Note: OctoPrint version at least 1.1.0 is required." msgstr "" #: src/slic3r/Utils/OctoPrint.cpp:195 -msgid "Connection to Prusa SLA works correctly." +msgid "Connection to Prusa SL1 works correctly." msgstr "" #: src/slic3r/Utils/OctoPrint.cpp:200 @@ -4378,7 +4505,7 @@ msgstr "" #: src/libslic3r/Print.cpp:1223 msgid "" "The Wipe Tower is only supported for multiple objects if they have equal " -"layer heigths" +"layer heights" msgstr "" #: src/libslic3r/Print.cpp:1225 @@ -4460,59 +4587,63 @@ msgstr "" msgid "Generating brim" msgstr "" -#: src/libslic3r/Print.cpp:1517 +#: src/libslic3r/Print.cpp:1520 msgid "Exporting G-code" msgstr "" -#: src/libslic3r/SLAPrint.cpp:55 -msgid "Slicing model" -msgstr "" - -#: src/libslic3r/SLAPrint.cpp:56 src/libslic3r/SLAPrint.cpp:809 -msgid "Generating support points" +#: src/libslic3r/Print.cpp:1524 +msgid "Generating G-code" msgstr "" #: src/libslic3r/SLAPrint.cpp:57 -msgid "Generating support tree" +msgid "Slicing model" msgstr "" -#: src/libslic3r/SLAPrint.cpp:58 -msgid "Generating pad" +#: src/libslic3r/SLAPrint.cpp:58 src/libslic3r/SLAPrint.cpp:819 +msgid "Generating support points" msgstr "" #: src/libslic3r/SLAPrint.cpp:59 +msgid "Generating support tree" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:60 +msgid "Generating pad" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:61 msgid "Slicing supports" msgstr "" -#: src/libslic3r/SLAPrint.cpp:71 +#: src/libslic3r/SLAPrint.cpp:78 msgid "Merging slices and calculating statistics" msgstr "" -#: src/libslic3r/SLAPrint.cpp:72 +#: src/libslic3r/SLAPrint.cpp:79 msgid "Rasterizing layers" msgstr "" -#: src/libslic3r/SLAPrint.cpp:612 +#: src/libslic3r/SLAPrint.cpp:622 msgid "" "Cannot proceed without support points! Add support points or disable support " "generation." msgstr "" -#: src/libslic3r/SLAPrint.cpp:624 +#: src/libslic3r/SLAPrint.cpp:634 msgid "Elevation is too low for object." msgstr "" #. TRN To be shown at the status bar on SLA slicing error. -#: src/libslic3r/SLAPrint.cpp:709 +#: src/libslic3r/SLAPrint.cpp:719 msgid "Slicing had to be stopped due to an internal error." msgstr "" -#: src/libslic3r/SLAPrint.cpp:857 src/libslic3r/SLAPrint.cpp:867 -#: src/libslic3r/SLAPrint.cpp:915 +#: src/libslic3r/SLAPrint.cpp:867 src/libslic3r/SLAPrint.cpp:877 +#: src/libslic3r/SLAPrint.cpp:925 msgid "Visualizing supports" msgstr "" -#: src/libslic3r/SLAPrint.cpp:1459 +#: src/libslic3r/SLAPrint.cpp:1463 msgid "Slicing done" msgstr "" @@ -4520,109 +4651,109 @@ msgstr "" msgid "Failed processing of the output_filename_format template." msgstr "" -#: src/libslic3r/PrintConfig.cpp:42 src/libslic3r/PrintConfig.cpp:43 +#: src/libslic3r/PrintConfig.cpp:43 src/libslic3r/PrintConfig.cpp:44 msgid "Printer technology" msgstr "" -#: src/libslic3r/PrintConfig.cpp:50 +#: src/libslic3r/PrintConfig.cpp:51 msgid "Bed shape" msgstr "" -#: src/libslic3r/PrintConfig.cpp:57 +#: src/libslic3r/PrintConfig.cpp:58 msgid "" "This setting controls the height (and thus the total number) of the slices/" "layers. Thinner layers give better accuracy but take more time to print." msgstr "" -#: src/libslic3r/PrintConfig.cpp:64 +#: src/libslic3r/PrintConfig.cpp:65 msgid "Max print height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:65 +#: src/libslic3r/PrintConfig.cpp:66 msgid "" "Set this to the maximum height that can be reached by your extruder while " "printing." msgstr "" -#: src/libslic3r/PrintConfig.cpp:71 +#: src/libslic3r/PrintConfig.cpp:72 msgid "Slice gap closing radius" msgstr "" -#: src/libslic3r/PrintConfig.cpp:73 +#: src/libslic3r/PrintConfig.cpp:74 msgid "" "Cracks smaller than 2x gap closing radius are being filled during the " "triangle mesh slicing. The gap closing operation may reduce the final print " "resolution, therefore it is advisable to keep the value reasonably low." msgstr "" -#: src/libslic3r/PrintConfig.cpp:81 +#: src/libslic3r/PrintConfig.cpp:82 msgid "Hostname, IP or URL" msgstr "" -#: src/libslic3r/PrintConfig.cpp:82 +#: src/libslic3r/PrintConfig.cpp:83 msgid "" "Slic3r can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance." msgstr "" -#: src/libslic3r/PrintConfig.cpp:88 +#: src/libslic3r/PrintConfig.cpp:89 msgid "API Key / Password" msgstr "" -#: src/libslic3r/PrintConfig.cpp:89 +#: src/libslic3r/PrintConfig.cpp:90 msgid "" "Slic3r can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" -#: src/libslic3r/PrintConfig.cpp:95 +#: src/libslic3r/PrintConfig.cpp:96 msgid "HTTPS CA File" msgstr "" -#: src/libslic3r/PrintConfig.cpp:96 +#: src/libslic3r/PrintConfig.cpp:97 msgid "" "Custom CA certificate file can be specified for HTTPS OctoPrint connections, " "in crt/pem format. If left blank, the default OS CA certificate repository " "is used." msgstr "" -#: src/libslic3r/PrintConfig.cpp:111 +#: src/libslic3r/PrintConfig.cpp:112 msgid "Avoid crossing perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:112 +#: src/libslic3r/PrintConfig.cpp:113 msgid "" "Optimize travel moves in order to minimize the crossing of perimeters. This " "is mostly useful with Bowden extruders which suffer from oozing. This " "feature slows down both the print and the G-code generation." msgstr "" -#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:1977 +#: src/libslic3r/PrintConfig.cpp:120 src/libslic3r/PrintConfig.cpp:2002 msgid "Other layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:120 +#: src/libslic3r/PrintConfig.cpp:121 msgid "" "Bed temperature for layers after the first one. Set this to zero to disable " "bed temperature control commands in the output." msgstr "" -#: src/libslic3r/PrintConfig.cpp:122 +#: src/libslic3r/PrintConfig.cpp:123 msgid "Bed temperature" msgstr "" -#: src/libslic3r/PrintConfig.cpp:129 +#: src/libslic3r/PrintConfig.cpp:130 msgid "" "This custom code is inserted at every layer change, right before the Z move. " "Note that you can use placeholder variables for all Slic3r settings as well " "as [layer_num] and [layer_z]." msgstr "" -#: src/libslic3r/PrintConfig.cpp:139 +#: src/libslic3r/PrintConfig.cpp:140 msgid "Between objects G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:140 +#: src/libslic3r/PrintConfig.cpp:141 msgid "" "This code is inserted between objects when using sequential printing. By " "default extruder and bed temperature are reset using non-wait command; " @@ -4632,69 +4763,69 @@ msgid "" "S[first_layer_temperature]\" command wherever you want." msgstr "" -#: src/libslic3r/PrintConfig.cpp:151 +#: src/libslic3r/PrintConfig.cpp:152 msgid "Number of solid layers to generate on bottom surfaces." msgstr "" -#: src/libslic3r/PrintConfig.cpp:152 +#: src/libslic3r/PrintConfig.cpp:153 msgid "Bottom solid layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:157 +#: src/libslic3r/PrintConfig.cpp:158 msgid "Bridge" msgstr "" -#: src/libslic3r/PrintConfig.cpp:158 +#: src/libslic3r/PrintConfig.cpp:159 msgid "" "This is the acceleration your printer will use for bridges. Set zero to " "disable acceleration control for bridges." msgstr "" -#: src/libslic3r/PrintConfig.cpp:160 src/libslic3r/PrintConfig.cpp:303 -#: src/libslic3r/PrintConfig.cpp:815 src/libslic3r/PrintConfig.cpp:936 -#: src/libslic3r/PrintConfig.cpp:1089 src/libslic3r/PrintConfig.cpp:1134 -#: src/libslic3r/PrintConfig.cpp:1145 src/libslic3r/PrintConfig.cpp:1334 +#: src/libslic3r/PrintConfig.cpp:161 src/libslic3r/PrintConfig.cpp:304 +#: src/libslic3r/PrintConfig.cpp:816 src/libslic3r/PrintConfig.cpp:937 +#: src/libslic3r/PrintConfig.cpp:1106 src/libslic3r/PrintConfig.cpp:1159 +#: src/libslic3r/PrintConfig.cpp:1170 src/libslic3r/PrintConfig.cpp:1359 msgid "mm/s²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:166 +#: src/libslic3r/PrintConfig.cpp:167 msgid "Bridging angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:168 +#: src/libslic3r/PrintConfig.cpp:169 msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for all " "bridges. Use 180° for zero angle." msgstr "" -#: src/libslic3r/PrintConfig.cpp:171 src/libslic3r/PrintConfig.cpp:733 -#: src/libslic3r/PrintConfig.cpp:1570 src/libslic3r/PrintConfig.cpp:1580 -#: src/libslic3r/PrintConfig.cpp:1808 src/libslic3r/PrintConfig.cpp:1962 -#: src/libslic3r/PrintConfig.cpp:2146 src/libslic3r/PrintConfig.cpp:2463 +#: src/libslic3r/PrintConfig.cpp:172 src/libslic3r/PrintConfig.cpp:734 +#: src/libslic3r/PrintConfig.cpp:1595 src/libslic3r/PrintConfig.cpp:1605 +#: src/libslic3r/PrintConfig.cpp:1833 src/libslic3r/PrintConfig.cpp:1987 +#: src/libslic3r/PrintConfig.cpp:2171 src/libslic3r/PrintConfig.cpp:2488 msgid "°" msgstr "" -#: src/libslic3r/PrintConfig.cpp:177 +#: src/libslic3r/PrintConfig.cpp:178 msgid "Bridges fan speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:178 +#: src/libslic3r/PrintConfig.cpp:179 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "" -#: src/libslic3r/PrintConfig.cpp:179 src/libslic3r/PrintConfig.cpp:745 -#: src/libslic3r/PrintConfig.cpp:1154 src/libslic3r/PrintConfig.cpp:1217 -#: src/libslic3r/PrintConfig.cpp:1462 src/libslic3r/PrintConfig.cpp:2260 -#: src/libslic3r/PrintConfig.cpp:2502 +#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:746 +#: src/libslic3r/PrintConfig.cpp:1179 src/libslic3r/PrintConfig.cpp:1242 +#: src/libslic3r/PrintConfig.cpp:1487 src/libslic3r/PrintConfig.cpp:2285 +#: src/libslic3r/PrintConfig.cpp:2527 msgid "%" msgstr "" -#: src/libslic3r/PrintConfig.cpp:186 +#: src/libslic3r/PrintConfig.cpp:187 msgid "Bridge flow ratio" msgstr "" -#: src/libslic3r/PrintConfig.cpp:188 +#: src/libslic3r/PrintConfig.cpp:189 msgid "" "This factor affects the amount of plastic for bridging. You can decrease it " "slightly to pull the extrudates and prevent sagging, although default " @@ -4702,83 +4833,83 @@ msgid "" "before tweaking this." msgstr "" -#: src/libslic3r/PrintConfig.cpp:198 +#: src/libslic3r/PrintConfig.cpp:199 msgid "Bridges" msgstr "" -#: src/libslic3r/PrintConfig.cpp:200 +#: src/libslic3r/PrintConfig.cpp:201 msgid "Speed for printing bridges." msgstr "" -#: src/libslic3r/PrintConfig.cpp:201 src/libslic3r/PrintConfig.cpp:577 -#: src/libslic3r/PrintConfig.cpp:585 src/libslic3r/PrintConfig.cpp:594 -#: src/libslic3r/PrintConfig.cpp:602 src/libslic3r/PrintConfig.cpp:629 -#: src/libslic3r/PrintConfig.cpp:648 src/libslic3r/PrintConfig.cpp:874 -#: src/libslic3r/PrintConfig.cpp:1001 src/libslic3r/PrintConfig.cpp:1079 -#: src/libslic3r/PrintConfig.cpp:1099 src/libslic3r/PrintConfig.cpp:1112 -#: src/libslic3r/PrintConfig.cpp:1123 src/libslic3r/PrintConfig.cpp:1176 -#: src/libslic3r/PrintConfig.cpp:1235 src/libslic3r/PrintConfig.cpp:1363 -#: src/libslic3r/PrintConfig.cpp:1537 src/libslic3r/PrintConfig.cpp:1546 -#: src/libslic3r/PrintConfig.cpp:1941 src/libslic3r/PrintConfig.cpp:2053 +#: src/libslic3r/PrintConfig.cpp:202 src/libslic3r/PrintConfig.cpp:578 +#: src/libslic3r/PrintConfig.cpp:586 src/libslic3r/PrintConfig.cpp:595 +#: src/libslic3r/PrintConfig.cpp:603 src/libslic3r/PrintConfig.cpp:630 +#: src/libslic3r/PrintConfig.cpp:649 src/libslic3r/PrintConfig.cpp:875 +#: src/libslic3r/PrintConfig.cpp:1002 src/libslic3r/PrintConfig.cpp:1088 +#: src/libslic3r/PrintConfig.cpp:1124 src/libslic3r/PrintConfig.cpp:1137 +#: src/libslic3r/PrintConfig.cpp:1148 src/libslic3r/PrintConfig.cpp:1201 +#: src/libslic3r/PrintConfig.cpp:1260 src/libslic3r/PrintConfig.cpp:1388 +#: src/libslic3r/PrintConfig.cpp:1562 src/libslic3r/PrintConfig.cpp:1571 +#: src/libslic3r/PrintConfig.cpp:1966 src/libslic3r/PrintConfig.cpp:2078 msgid "mm/s" msgstr "" -#: src/libslic3r/PrintConfig.cpp:208 +#: src/libslic3r/PrintConfig.cpp:209 msgid "Brim width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:209 +#: src/libslic3r/PrintConfig.cpp:210 msgid "" "Horizontal width of the brim that will be printed around each object on the " "first layer." msgstr "" -#: src/libslic3r/PrintConfig.cpp:216 +#: src/libslic3r/PrintConfig.cpp:217 msgid "Clip multi-part objects" msgstr "" -#: src/libslic3r/PrintConfig.cpp:217 +#: src/libslic3r/PrintConfig.cpp:218 msgid "" "When printing multi-material objects, this settings will make Slic3r to clip " "the overlapping object parts one by the other (2nd part will be clipped by " "the 1st, 3rd part will be clipped by the 1st and 2nd etc)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:224 +#: src/libslic3r/PrintConfig.cpp:225 msgid "Colorprint height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:225 +#: src/libslic3r/PrintConfig.cpp:226 msgid "Heights at which a filament change is to occur. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:235 +#: src/libslic3r/PrintConfig.cpp:236 msgid "Compatible printers condition" msgstr "" -#: src/libslic3r/PrintConfig.cpp:236 +#: src/libslic3r/PrintConfig.cpp:237 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." msgstr "" -#: src/libslic3r/PrintConfig.cpp:250 +#: src/libslic3r/PrintConfig.cpp:251 msgid "Compatible print profiles condition" msgstr "" -#: src/libslic3r/PrintConfig.cpp:251 +#: src/libslic3r/PrintConfig.cpp:252 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." msgstr "" -#: src/libslic3r/PrintConfig.cpp:268 +#: src/libslic3r/PrintConfig.cpp:269 msgid "Complete individual objects" msgstr "" -#: src/libslic3r/PrintConfig.cpp:269 +#: src/libslic3r/PrintConfig.cpp:270 msgid "" "When printing multiple objects or copies, this feature will complete each " "object before moving onto next one (and starting it from its bottom layer). " @@ -4786,114 +4917,114 @@ msgid "" "warn and prevent you from extruder collisions, but beware." msgstr "" -#: src/libslic3r/PrintConfig.cpp:277 +#: src/libslic3r/PrintConfig.cpp:278 msgid "Enable auto cooling" msgstr "" -#: src/libslic3r/PrintConfig.cpp:278 +#: src/libslic3r/PrintConfig.cpp:279 msgid "" "This flag enables the automatic cooling logic that adjusts print speed and " "fan speed according to layer printing time." msgstr "" -#: src/libslic3r/PrintConfig.cpp:283 +#: src/libslic3r/PrintConfig.cpp:284 msgid "Cooling tube position" msgstr "" -#: src/libslic3r/PrintConfig.cpp:284 +#: src/libslic3r/PrintConfig.cpp:285 msgid "Distance of the center-point of the cooling tube from the extruder tip " msgstr "" -#: src/libslic3r/PrintConfig.cpp:291 +#: src/libslic3r/PrintConfig.cpp:292 msgid "Cooling tube length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:292 +#: src/libslic3r/PrintConfig.cpp:293 msgid "Length of the cooling tube to limit space for cooling moves inside it " msgstr "" -#: src/libslic3r/PrintConfig.cpp:300 +#: src/libslic3r/PrintConfig.cpp:301 msgid "" "This is the acceleration your printer will be reset to after the role-" "specific acceleration values are used (perimeter/infill). Set zero to " "prevent resetting acceleration at all." msgstr "" -#: src/libslic3r/PrintConfig.cpp:309 +#: src/libslic3r/PrintConfig.cpp:310 msgid "Default filament profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:310 +#: src/libslic3r/PrintConfig.cpp:311 msgid "" "Default filament profile associated with the current printer profile. On " "selection of the current printer profile, this filament profile will be " "activated." msgstr "" -#: src/libslic3r/PrintConfig.cpp:316 +#: src/libslic3r/PrintConfig.cpp:317 msgid "Default print profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:317 src/libslic3r/PrintConfig.cpp:2341 -#: src/libslic3r/PrintConfig.cpp:2352 +#: src/libslic3r/PrintConfig.cpp:318 src/libslic3r/PrintConfig.cpp:2366 +#: src/libslic3r/PrintConfig.cpp:2377 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " "activated." msgstr "" -#: src/libslic3r/PrintConfig.cpp:323 +#: src/libslic3r/PrintConfig.cpp:324 msgid "Disable fan for the first" msgstr "" -#: src/libslic3r/PrintConfig.cpp:324 +#: src/libslic3r/PrintConfig.cpp:325 msgid "" "You can set this to a positive value to disable fan at all during the first " "layers, so that it does not make adhesion worse." msgstr "" -#: src/libslic3r/PrintConfig.cpp:326 src/libslic3r/PrintConfig.cpp:946 -#: src/libslic3r/PrintConfig.cpp:1435 src/libslic3r/PrintConfig.cpp:1620 -#: src/libslic3r/PrintConfig.cpp:1681 src/libslic3r/PrintConfig.cpp:1844 -#: src/libslic3r/PrintConfig.cpp:1889 +#: src/libslic3r/PrintConfig.cpp:327 src/libslic3r/PrintConfig.cpp:947 +#: src/libslic3r/PrintConfig.cpp:1460 src/libslic3r/PrintConfig.cpp:1645 +#: src/libslic3r/PrintConfig.cpp:1706 src/libslic3r/PrintConfig.cpp:1869 +#: src/libslic3r/PrintConfig.cpp:1914 msgid "layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:333 +#: src/libslic3r/PrintConfig.cpp:334 msgid "Don't support bridges" msgstr "" -#: src/libslic3r/PrintConfig.cpp:335 +#: src/libslic3r/PrintConfig.cpp:336 msgid "" "Experimental option for preventing support material from being generated " "under bridged areas." msgstr "" -#: src/libslic3r/PrintConfig.cpp:341 +#: src/libslic3r/PrintConfig.cpp:342 msgid "Distance between copies" msgstr "" -#: src/libslic3r/PrintConfig.cpp:342 +#: src/libslic3r/PrintConfig.cpp:343 msgid "Distance used for the auto-arrange feature of the plater." msgstr "" -#: src/libslic3r/PrintConfig.cpp:349 +#: src/libslic3r/PrintConfig.cpp:350 msgid "Elephant foot compensation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:351 +#: src/libslic3r/PrintConfig.cpp:352 msgid "" "The first layer will be shrunk in the XY plane by the configured value to " "compensate for the 1st layer squish aka an Elephant Foot effect." msgstr "" -#: src/libslic3r/PrintConfig.cpp:360 +#: src/libslic3r/PrintConfig.cpp:361 msgid "" "This end procedure is inserted at the end of the output file. Note that you " "can use placeholder variables for all Slic3r settings." msgstr "" -#: src/libslic3r/PrintConfig.cpp:370 +#: src/libslic3r/PrintConfig.cpp:371 msgid "" "This end procedure is inserted at the end of the output file, before the " "printer end gcode. Note that you can use placeholder variables for all " @@ -4901,62 +5032,62 @@ msgid "" "extruder order." msgstr "" -#: src/libslic3r/PrintConfig.cpp:380 +#: src/libslic3r/PrintConfig.cpp:381 msgid "Ensure vertical shell thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:382 +#: src/libslic3r/PrintConfig.cpp:383 msgid "" "Add solid infill near sloping surfaces to guarantee the vertical shell " "thickness (top+bottom solid layers)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:388 +#: src/libslic3r/PrintConfig.cpp:389 msgid "Top fill pattern" msgstr "" -#: src/libslic3r/PrintConfig.cpp:390 +#: src/libslic3r/PrintConfig.cpp:391 msgid "" "Fill pattern for top infill. This only affects the top visible layer, and " "not its adjacent solid shells." msgstr "" -#: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:796 -#: src/libslic3r/PrintConfig.cpp:1922 +#: src/libslic3r/PrintConfig.cpp:399 src/libslic3r/PrintConfig.cpp:797 +#: src/libslic3r/PrintConfig.cpp:1947 msgid "Rectilinear" msgstr "" -#: src/libslic3r/PrintConfig.cpp:399 src/libslic3r/PrintConfig.cpp:802 +#: src/libslic3r/PrintConfig.cpp:400 src/libslic3r/PrintConfig.cpp:803 msgid "Concentric" msgstr "" -#: src/libslic3r/PrintConfig.cpp:400 src/libslic3r/PrintConfig.cpp:806 +#: src/libslic3r/PrintConfig.cpp:401 src/libslic3r/PrintConfig.cpp:807 msgid "Hilbert Curve" msgstr "" -#: src/libslic3r/PrintConfig.cpp:401 src/libslic3r/PrintConfig.cpp:807 +#: src/libslic3r/PrintConfig.cpp:402 src/libslic3r/PrintConfig.cpp:808 msgid "Archimedean Chords" msgstr "" -#: src/libslic3r/PrintConfig.cpp:402 src/libslic3r/PrintConfig.cpp:808 +#: src/libslic3r/PrintConfig.cpp:403 src/libslic3r/PrintConfig.cpp:809 msgid "Octagram Spiral" msgstr "" -#: src/libslic3r/PrintConfig.cpp:409 +#: src/libslic3r/PrintConfig.cpp:410 msgid "Bottom fill pattern" msgstr "" -#: src/libslic3r/PrintConfig.cpp:410 +#: src/libslic3r/PrintConfig.cpp:411 msgid "" "Fill pattern for bottom infill. This only affects the bottom external " "visible layer, and not its adjacent solid shells." msgstr "" -#: src/libslic3r/PrintConfig.cpp:415 src/libslic3r/PrintConfig.cpp:425 +#: src/libslic3r/PrintConfig.cpp:416 src/libslic3r/PrintConfig.cpp:426 msgid "External perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:417 +#: src/libslic3r/PrintConfig.cpp:418 msgid "" "Set this to a non-zero value to set a manual extrusion width for external " "perimeters. If left zero, default extrusion width will be used if set, " @@ -4964,56 +5095,56 @@ msgid "" "(for example 200%), it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:420 src/libslic3r/PrintConfig.cpp:835 -#: src/libslic3r/PrintConfig.cpp:967 src/libslic3r/PrintConfig.cpp:1354 -#: src/libslic3r/PrintConfig.cpp:1692 src/libslic3r/PrintConfig.cpp:1865 -#: src/libslic3r/PrintConfig.cpp:2023 +#: src/libslic3r/PrintConfig.cpp:421 src/libslic3r/PrintConfig.cpp:836 +#: src/libslic3r/PrintConfig.cpp:968 src/libslic3r/PrintConfig.cpp:1379 +#: src/libslic3r/PrintConfig.cpp:1717 src/libslic3r/PrintConfig.cpp:1890 +#: src/libslic3r/PrintConfig.cpp:2048 msgid "mm or % (leave 0 for default)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:427 +#: src/libslic3r/PrintConfig.cpp:428 msgid "" "This separate setting will affect the speed of external perimeters (the " "visible ones). If expressed as percentage (for example: 80%) it will be " "calculated on the perimeters speed setting above. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:430 src/libslic3r/PrintConfig.cpp:856 -#: src/libslic3r/PrintConfig.cpp:1651 src/libslic3r/PrintConfig.cpp:1702 -#: src/libslic3r/PrintConfig.cpp:1908 src/libslic3r/PrintConfig.cpp:2035 +#: src/libslic3r/PrintConfig.cpp:431 src/libslic3r/PrintConfig.cpp:857 +#: src/libslic3r/PrintConfig.cpp:1676 src/libslic3r/PrintConfig.cpp:1727 +#: src/libslic3r/PrintConfig.cpp:1933 src/libslic3r/PrintConfig.cpp:2060 msgid "mm/s or %" msgstr "" -#: src/libslic3r/PrintConfig.cpp:437 +#: src/libslic3r/PrintConfig.cpp:438 msgid "External perimeters first" msgstr "" -#: src/libslic3r/PrintConfig.cpp:439 +#: src/libslic3r/PrintConfig.cpp:440 msgid "" "Print contour perimeters from the outermost one to the innermost one instead " "of the default inverse order." msgstr "" -#: src/libslic3r/PrintConfig.cpp:445 +#: src/libslic3r/PrintConfig.cpp:446 msgid "Extra perimeters if needed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:447 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:448 +#, possible-c-format msgid "" "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r " "keeps adding perimeters, until more than 70% of the loop immediately above " "is supported." msgstr "" -#: src/libslic3r/PrintConfig.cpp:457 +#: src/libslic3r/PrintConfig.cpp:458 msgid "" "The extruder to use (unless more specific extruder settings are specified). " "This value overrides perimeter and infill extruders, but not the support " "extruders." msgstr "" -#: src/libslic3r/PrintConfig.cpp:469 +#: src/libslic3r/PrintConfig.cpp:470 msgid "" "Set this to the vertical distance between your nozzle tip and (usually) the " "X carriage rods. In other words, this is the height of the clearance " @@ -5021,30 +5152,30 @@ msgid "" "extruder can peek before colliding with other printed objects." msgstr "" -#: src/libslic3r/PrintConfig.cpp:479 +#: src/libslic3r/PrintConfig.cpp:480 msgid "Radius" msgstr "" -#: src/libslic3r/PrintConfig.cpp:480 +#: src/libslic3r/PrintConfig.cpp:481 msgid "" "Set this to the clearance radius around your extruder. If the extruder is " "not centered, choose the largest value for safety. This setting is used to " "check for collisions and to display the graphical preview in the plater." msgstr "" -#: src/libslic3r/PrintConfig.cpp:490 +#: src/libslic3r/PrintConfig.cpp:491 msgid "Extruder Color" msgstr "" -#: src/libslic3r/PrintConfig.cpp:491 src/libslic3r/PrintConfig.cpp:551 +#: src/libslic3r/PrintConfig.cpp:492 src/libslic3r/PrintConfig.cpp:552 msgid "This is only used in the Slic3r interface as a visual help." msgstr "" -#: src/libslic3r/PrintConfig.cpp:497 +#: src/libslic3r/PrintConfig.cpp:498 msgid "Extruder offset" msgstr "" -#: src/libslic3r/PrintConfig.cpp:498 +#: src/libslic3r/PrintConfig.cpp:499 msgid "" "If your firmware doesn't handle the extruder displacement you need the G-" "code to take it into account. This option lets you specify the displacement " @@ -5052,21 +5183,21 @@ msgid "" "coordinates (they will be subtracted from the XY coordinate)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:507 +#: src/libslic3r/PrintConfig.cpp:508 msgid "Extrusion axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:508 +#: src/libslic3r/PrintConfig.cpp:509 msgid "" "Use this option to set the axis letter associated to your printer's extruder " "(usually E but some printers use A)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:513 +#: src/libslic3r/PrintConfig.cpp:514 msgid "Extrusion multiplier" msgstr "" -#: src/libslic3r/PrintConfig.cpp:514 +#: src/libslic3r/PrintConfig.cpp:515 msgid "" "This factor changes the amount of flow proportionally. You may need to tweak " "this setting to get nice surface finish and correct single wall widths. " @@ -5074,11 +5205,11 @@ msgid "" "more, check filament diameter and your firmware E steps." msgstr "" -#: src/libslic3r/PrintConfig.cpp:522 +#: src/libslic3r/PrintConfig.cpp:523 msgid "Default extrusion width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:524 +#: src/libslic3r/PrintConfig.cpp:525 msgid "" "Set this to a non-zero value to allow a manual extrusion width. If left to " "zero, Slic3r derives extrusion widths from the nozzle diameter (see the " @@ -5087,131 +5218,131 @@ msgid "" "height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:528 +#: src/libslic3r/PrintConfig.cpp:529 msgid "mm or % (leave 0 for auto)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:533 +#: src/libslic3r/PrintConfig.cpp:534 msgid "Keep fan always on" msgstr "" -#: src/libslic3r/PrintConfig.cpp:534 +#: src/libslic3r/PrintConfig.cpp:535 msgid "" "If this is enabled, fan will never be disabled and will be kept running at " "least at its minimum speed. Useful for PLA, harmful for ABS." msgstr "" -#: src/libslic3r/PrintConfig.cpp:539 +#: src/libslic3r/PrintConfig.cpp:540 msgid "Enable fan if layer print time is below" msgstr "" -#: src/libslic3r/PrintConfig.cpp:540 +#: src/libslic3r/PrintConfig.cpp:541 msgid "" "If layer print time is estimated below this number of seconds, fan will be " "enabled and its speed will be calculated by interpolating the minimum and " "maximum speeds." msgstr "" -#: src/libslic3r/PrintConfig.cpp:542 src/libslic3r/PrintConfig.cpp:1638 +#: src/libslic3r/PrintConfig.cpp:543 src/libslic3r/PrintConfig.cpp:1663 msgid "approximate seconds" msgstr "" -#: src/libslic3r/PrintConfig.cpp:550 +#: src/libslic3r/PrintConfig.cpp:551 msgid "Color" msgstr "" -#: src/libslic3r/PrintConfig.cpp:556 +#: src/libslic3r/PrintConfig.cpp:557 msgid "Filament notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:557 +#: src/libslic3r/PrintConfig.cpp:558 msgid "You can put your notes regarding the filament here." msgstr "" -#: src/libslic3r/PrintConfig.cpp:565 src/libslic3r/PrintConfig.cpp:1182 +#: src/libslic3r/PrintConfig.cpp:566 src/libslic3r/PrintConfig.cpp:1207 msgid "Max volumetric speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:566 +#: src/libslic3r/PrintConfig.cpp:567 msgid "" "Maximum volumetric speed allowed for this filament. Limits the maximum " "volumetric speed of a print to the minimum of print and filament volumetric " "speed. Set to zero for no limit." msgstr "" -#: src/libslic3r/PrintConfig.cpp:569 src/libslic3r/PrintConfig.cpp:1185 +#: src/libslic3r/PrintConfig.cpp:570 src/libslic3r/PrintConfig.cpp:1210 msgid "mm³/s" msgstr "" -#: src/libslic3r/PrintConfig.cpp:575 +#: src/libslic3r/PrintConfig.cpp:576 msgid "Loading speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:576 +#: src/libslic3r/PrintConfig.cpp:577 msgid "Speed used for loading the filament on the wipe tower. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:583 +#: src/libslic3r/PrintConfig.cpp:584 msgid "Loading speed at the start" msgstr "" -#: src/libslic3r/PrintConfig.cpp:584 +#: src/libslic3r/PrintConfig.cpp:585 msgid "Speed used at the very beginning of loading phase. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:591 +#: src/libslic3r/PrintConfig.cpp:592 msgid "Unloading speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:592 +#: src/libslic3r/PrintConfig.cpp:593 msgid "" "Speed used for unloading the filament on the wipe tower (does not affect " "initial part of unloading just after ramming). " msgstr "" -#: src/libslic3r/PrintConfig.cpp:600 +#: src/libslic3r/PrintConfig.cpp:601 msgid "Unloading speed at the start" msgstr "" -#: src/libslic3r/PrintConfig.cpp:601 +#: src/libslic3r/PrintConfig.cpp:602 msgid "" "Speed used for unloading the tip of the filament immediately after ramming. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:608 +#: src/libslic3r/PrintConfig.cpp:609 msgid "Delay after unloading" msgstr "" -#: src/libslic3r/PrintConfig.cpp:609 +#: src/libslic3r/PrintConfig.cpp:610 msgid "" "Time to wait after the filament is unloaded. May help to get reliable " "toolchanges with flexible materials that may need more time to shrink to " "original dimensions. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:618 +#: src/libslic3r/PrintConfig.cpp:619 msgid "Number of cooling moves" msgstr "" -#: src/libslic3r/PrintConfig.cpp:619 +#: src/libslic3r/PrintConfig.cpp:620 msgid "" "Filament is cooled by being moved back and forth in the cooling tubes. " "Specify desired number of these moves " msgstr "" -#: src/libslic3r/PrintConfig.cpp:627 +#: src/libslic3r/PrintConfig.cpp:628 msgid "Speed of the first cooling move" msgstr "" -#: src/libslic3r/PrintConfig.cpp:628 +#: src/libslic3r/PrintConfig.cpp:629 msgid "Cooling moves are gradually accelerating beginning at this speed. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:635 +#: src/libslic3r/PrintConfig.cpp:636 msgid "Minimal purge on wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:636 +#: src/libslic3r/PrintConfig.cpp:637 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 " @@ -5220,62 +5351,62 @@ msgid "" "to produce successive infill or sacrificial object extrusions reliably." msgstr "" -#: src/libslic3r/PrintConfig.cpp:640 +#: src/libslic3r/PrintConfig.cpp:641 msgid "mm³" msgstr "" -#: src/libslic3r/PrintConfig.cpp:646 +#: src/libslic3r/PrintConfig.cpp:647 msgid "Speed of the last cooling move" msgstr "" -#: src/libslic3r/PrintConfig.cpp:647 +#: src/libslic3r/PrintConfig.cpp:648 msgid "Cooling moves are gradually accelerating towards this speed. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:654 +#: src/libslic3r/PrintConfig.cpp:655 msgid "Filament load time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:655 +#: src/libslic3r/PrintConfig.cpp:656 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 "" -#: src/libslic3r/PrintConfig.cpp:662 +#: src/libslic3r/PrintConfig.cpp:663 msgid "Ramming parameters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:663 +#: src/libslic3r/PrintConfig.cpp:664 msgid "" "This string is edited by RammingDialog and contains ramming specific " "parameters " msgstr "" -#: src/libslic3r/PrintConfig.cpp:669 +#: src/libslic3r/PrintConfig.cpp:670 msgid "Filament unload time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:670 +#: src/libslic3r/PrintConfig.cpp:671 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 "" -#: src/libslic3r/PrintConfig.cpp:678 +#: src/libslic3r/PrintConfig.cpp:679 msgid "" "Enter your filament diameter here. Good precision is required, so use a " "caliper and do multiple measurements along the filament, then compute the " "average." msgstr "" -#: src/libslic3r/PrintConfig.cpp:685 +#: src/libslic3r/PrintConfig.cpp:686 msgid "Density" msgstr "" -#: src/libslic3r/PrintConfig.cpp:686 +#: src/libslic3r/PrintConfig.cpp:687 msgid "" "Enter your filament density here. This is only for statistical information. " "A decent way is to weigh a known length of filament and compute the ratio of " @@ -5283,113 +5414,113 @@ msgid "" "displacement." msgstr "" -#: src/libslic3r/PrintConfig.cpp:689 +#: src/libslic3r/PrintConfig.cpp:690 msgid "g/cm³" msgstr "" -#: src/libslic3r/PrintConfig.cpp:694 +#: src/libslic3r/PrintConfig.cpp:695 msgid "Filament type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:695 +#: src/libslic3r/PrintConfig.cpp:696 msgid "The filament material type for use in custom G-codes." msgstr "" -#: src/libslic3r/PrintConfig.cpp:711 +#: src/libslic3r/PrintConfig.cpp:712 msgid "Soluble material" msgstr "" -#: src/libslic3r/PrintConfig.cpp:712 +#: src/libslic3r/PrintConfig.cpp:713 msgid "Soluble material is most likely used for a soluble support." msgstr "" -#: src/libslic3r/PrintConfig.cpp:718 +#: src/libslic3r/PrintConfig.cpp:719 msgid "" "Enter your filament cost per kg here. This is only for statistical " "information." msgstr "" -#: src/libslic3r/PrintConfig.cpp:719 +#: src/libslic3r/PrintConfig.cpp:720 msgid "money/kg" msgstr "" -#: src/libslic3r/PrintConfig.cpp:728 +#: src/libslic3r/PrintConfig.cpp:729 msgid "Fill angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:730 +#: src/libslic3r/PrintConfig.cpp:731 msgid "" "Default base angle for infill orientation. Cross-hatching will be applied to " "this. Bridges will be infilled using the best direction Slic3r can detect, " "so this setting does not affect them." msgstr "" -#: src/libslic3r/PrintConfig.cpp:742 +#: src/libslic3r/PrintConfig.cpp:743 msgid "Fill density" msgstr "" -#: src/libslic3r/PrintConfig.cpp:744 +#: src/libslic3r/PrintConfig.cpp:745 msgid "Density of internal infill, expressed in the range 0% - 100%." msgstr "" -#: src/libslic3r/PrintConfig.cpp:779 +#: src/libslic3r/PrintConfig.cpp:780 msgid "Fill pattern" msgstr "" -#: src/libslic3r/PrintConfig.cpp:781 +#: src/libslic3r/PrintConfig.cpp:782 msgid "Fill pattern for general low-density infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:797 +#: src/libslic3r/PrintConfig.cpp:798 msgid "Grid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:798 +#: src/libslic3r/PrintConfig.cpp:799 msgid "Triangles" msgstr "" -#: src/libslic3r/PrintConfig.cpp:799 +#: src/libslic3r/PrintConfig.cpp:800 msgid "Stars" msgstr "" -#: src/libslic3r/PrintConfig.cpp:800 +#: src/libslic3r/PrintConfig.cpp:801 msgid "Cubic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:801 +#: src/libslic3r/PrintConfig.cpp:802 msgid "Line" msgstr "" -#: src/libslic3r/PrintConfig.cpp:803 src/libslic3r/PrintConfig.cpp:1924 +#: src/libslic3r/PrintConfig.cpp:804 src/libslic3r/PrintConfig.cpp:1949 msgid "Honeycomb" msgstr "" -#: src/libslic3r/PrintConfig.cpp:804 +#: src/libslic3r/PrintConfig.cpp:805 msgid "3D Honeycomb" msgstr "" -#: src/libslic3r/PrintConfig.cpp:805 +#: src/libslic3r/PrintConfig.cpp:806 msgid "Gyroid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:812 src/libslic3r/PrintConfig.cpp:821 -#: src/libslic3r/PrintConfig.cpp:829 src/libslic3r/PrintConfig.cpp:862 +#: src/libslic3r/PrintConfig.cpp:813 src/libslic3r/PrintConfig.cpp:822 +#: src/libslic3r/PrintConfig.cpp:830 src/libslic3r/PrintConfig.cpp:863 msgid "First layer" msgstr "" -#: src/libslic3r/PrintConfig.cpp:813 +#: src/libslic3r/PrintConfig.cpp:814 msgid "" "This is the acceleration your printer will use for first layer. Set zero to " "disable acceleration control for first layer." msgstr "" -#: src/libslic3r/PrintConfig.cpp:822 +#: src/libslic3r/PrintConfig.cpp:823 msgid "" "Heated build plate temperature for the first layer. Set this to zero to " "disable bed temperature control commands in the output." msgstr "" -#: src/libslic3r/PrintConfig.cpp:831 +#: src/libslic3r/PrintConfig.cpp:832 msgid "" "Set this to a non-zero value to set a manual extrusion width for first " "layer. You can use this to force fatter extrudates for better adhesion. If " @@ -5397,11 +5528,11 @@ msgid "" "layer height. If set to zero, it will use the default extrusion width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:841 +#: src/libslic3r/PrintConfig.cpp:842 msgid "First layer height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:843 +#: src/libslic3r/PrintConfig.cpp:844 msgid "" "When printing with very low layer heights, you might still want to print a " "thicker bottom layer to improve adhesion and tolerance for non perfect build " @@ -5409,52 +5540,52 @@ msgid "" "example: 150%) over the default layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:847 src/libslic3r/PrintConfig.cpp:992 -#: src/libslic3r/PrintConfig.cpp:1797 +#: src/libslic3r/PrintConfig.cpp:848 src/libslic3r/PrintConfig.cpp:993 +#: src/libslic3r/PrintConfig.cpp:1822 msgid "mm or %" msgstr "" -#: src/libslic3r/PrintConfig.cpp:852 +#: src/libslic3r/PrintConfig.cpp:853 msgid "First layer speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:853 +#: src/libslic3r/PrintConfig.cpp:854 msgid "" "If expressed as absolute value in mm/s, this speed will be applied to all " "the print moves of the first layer, regardless of their type. If expressed " "as a percentage (for example: 40%) it will scale the default speeds." msgstr "" -#: src/libslic3r/PrintConfig.cpp:863 +#: src/libslic3r/PrintConfig.cpp:864 msgid "" "Extruder temperature for first layer. If you want to control temperature " "manually during print, set this to zero to disable temperature control " "commands in the output file." msgstr "" -#: src/libslic3r/PrintConfig.cpp:872 +#: src/libslic3r/PrintConfig.cpp:873 msgid "" "Speed for filling small gaps using short zigzag moves. Keep this reasonably " "low to avoid too much shaking and resonance issues. Set zero to disable gaps " "filling." msgstr "" -#: src/libslic3r/PrintConfig.cpp:880 +#: src/libslic3r/PrintConfig.cpp:881 msgid "Verbose G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:881 +#: src/libslic3r/PrintConfig.cpp:882 msgid "" "Enable this to get a commented G-code file, with each line explained by a " "descriptive text. If you print from SD card, the additional weight of the " "file could make your firmware slow down." msgstr "" -#: src/libslic3r/PrintConfig.cpp:888 +#: src/libslic3r/PrintConfig.cpp:889 msgid "G-code flavor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:889 +#: src/libslic3r/PrintConfig.cpp:890 msgid "" "Some G/M-code commands, including temperature control and others, are not " "universal. Set this option to your printer's firmware to get a compatible " @@ -5462,15 +5593,15 @@ msgid "" "extrusion value at all." msgstr "" -#: src/libslic3r/PrintConfig.cpp:912 +#: src/libslic3r/PrintConfig.cpp:913 msgid "No extrusion" msgstr "" -#: src/libslic3r/PrintConfig.cpp:917 +#: src/libslic3r/PrintConfig.cpp:918 msgid "Label objects" msgstr "" -#: src/libslic3r/PrintConfig.cpp:918 +#: src/libslic3r/PrintConfig.cpp:919 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 " @@ -5478,46 +5609,46 @@ msgid "" "setup and Wipe into Object / Wipe into Infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:925 +#: src/libslic3r/PrintConfig.cpp:926 msgid "High extruder current on filament swap" msgstr "" -#: src/libslic3r/PrintConfig.cpp:926 +#: src/libslic3r/PrintConfig.cpp:927 msgid "" "It may be beneficial to increase the extruder motor current during the " "filament exchange sequence to allow for rapid ramming feed rates and to " "overcome resistance when loading a filament with an ugly shaped tip." msgstr "" -#: src/libslic3r/PrintConfig.cpp:934 +#: src/libslic3r/PrintConfig.cpp:935 msgid "" "This is the acceleration your printer will use for infill. Set zero to " "disable acceleration control for infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:942 +#: src/libslic3r/PrintConfig.cpp:943 msgid "Combine infill every" msgstr "" -#: src/libslic3r/PrintConfig.cpp:944 +#: src/libslic3r/PrintConfig.cpp:945 msgid "" "This feature allows to combine infill and speed up your print by extruding " "thicker infill layers while preserving thin perimeters, thus accuracy." msgstr "" -#: src/libslic3r/PrintConfig.cpp:947 +#: src/libslic3r/PrintConfig.cpp:948 msgid "Combine infill every n layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:953 +#: src/libslic3r/PrintConfig.cpp:954 msgid "Infill extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:955 +#: src/libslic3r/PrintConfig.cpp:956 msgid "The extruder to use when printing infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:963 +#: src/libslic3r/PrintConfig.cpp:964 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill. If " "left zero, default extrusion width will be used if set, otherwise 1.125 x " @@ -5526,32 +5657,32 @@ msgid "" "example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:972 +#: src/libslic3r/PrintConfig.cpp:973 msgid "Infill before perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:973 +#: src/libslic3r/PrintConfig.cpp:974 msgid "" "This option will switch the print order of perimeters and infill, making the " "latter first." msgstr "" -#: src/libslic3r/PrintConfig.cpp:978 +#: src/libslic3r/PrintConfig.cpp:979 msgid "Only infill where needed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:980 +#: src/libslic3r/PrintConfig.cpp:981 msgid "" "This option will limit infill to the areas actually needed for supporting " "ceilings (it will act as internal support material). If enabled, slows down " "the G-code generation due to the multiple checks involved." msgstr "" -#: src/libslic3r/PrintConfig.cpp:987 +#: src/libslic3r/PrintConfig.cpp:988 msgid "Infill/perimeters overlap" msgstr "" -#: src/libslic3r/PrintConfig.cpp:989 +#: src/libslic3r/PrintConfig.cpp:990 msgid "" "This setting applies an additional overlap between infill and perimeters for " "better bonding. Theoretically this shouldn't be needed, but backlash might " @@ -5559,30 +5690,30 @@ msgid "" "perimeter extrusion width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1000 +#: src/libslic3r/PrintConfig.cpp:1001 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1008 +#: src/libslic3r/PrintConfig.cpp:1009 msgid "Inherits profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1009 +#: src/libslic3r/PrintConfig.cpp:1010 msgid "Name of the profile, from which this profile inherits." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1022 +#: src/libslic3r/PrintConfig.cpp:1023 msgid "Interface shells" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1023 +#: src/libslic3r/PrintConfig.cpp:1024 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 "" -#: src/libslic3r/PrintConfig.cpp:1032 +#: src/libslic3r/PrintConfig.cpp:1033 msgid "" "This custom code is inserted at every layer change, right after the Z move " "and before the extruder moves to the first layer point. Note that you can " @@ -5590,11 +5721,11 @@ msgid "" "[layer_z]." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1043 +#: src/libslic3r/PrintConfig.cpp:1044 msgid "Supports remaining times" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1044 +#: src/libslic3r/PrintConfig.cpp:1045 msgid "" "Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute " "intervals into the G-code to let the firmware show accurate remaining time. " @@ -5602,64 +5733,152 @@ msgid "" "firmware supports M73 Qxx Sxx for the silent mode." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1052 -msgid "Supports silent mode" -msgstr "" - #: src/libslic3r/PrintConfig.cpp:1053 -msgid "Set silent mode for the G-code flavor" +msgid "Supports stealth mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1076 -msgid "Maximum feedrate %1%" +#: src/libslic3r/PrintConfig.cpp:1054 +msgid "The firmware supports stealth mode" msgstr "" #: src/libslic3r/PrintConfig.cpp:1078 -msgid "Maximum feedrate of the %1% axis" +msgid "Maximum feedrate X" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1079 +msgid "Maximum feedrate Y" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1080 +msgid "Maximum feedrate Z" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1081 +msgid "Maximum feedrate E" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1084 +msgid "Maximum feedrate of the X axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1085 +msgid "Maximum feedrate of the Y axis" msgstr "" #: src/libslic3r/PrintConfig.cpp:1086 -msgid "Maximum acceleration %1%" +msgid "Maximum feedrate of the Z axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1088 -msgid "Maximum acceleration of the %1% axis" +#: src/libslic3r/PrintConfig.cpp:1087 +msgid "Maximum feedrate of the E axis" msgstr "" #: src/libslic3r/PrintConfig.cpp:1096 -msgid "Maximum jerk %1%" +msgid "Maximum acceleration X" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1097 +msgid "Maximum acceleration Y" msgstr "" #: src/libslic3r/PrintConfig.cpp:1098 -msgid "Maximum jerk of the %1% axis" +msgid "Maximum acceleration Z" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1109 src/libslic3r/PrintConfig.cpp:1111 +#: src/libslic3r/PrintConfig.cpp:1099 +msgid "Maximum acceleration E" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1102 +msgid "Maximum acceleration of the X axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1103 +msgid "Maximum acceleration of the Y axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1104 +msgid "Maximum acceleration of the Z axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1105 +msgid "Maximum acceleration of the E axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1114 +msgid "Maximum jerk X" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1115 +msgid "Maximum jerk Y" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1116 +msgid "Maximum jerk Z" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1117 +msgid "Maximum jerk E" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1120 +msgid "Maximum jerk of the X axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1121 +msgid "Maximum jerk of the Y axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1122 +msgid "Maximum jerk of the Z axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1123 +msgid "Maximum jerk of the E axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1134 msgid "Minimum feedrate when extruding" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1122 +#: src/libslic3r/PrintConfig.cpp:1136 +msgid "Minimum feedrate when extruding (M205 S)" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1145 msgid "Minimum travel feedrate" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1147 +msgid "Minimum travel feedrate (M205 T)" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1156 msgid "Maximum acceleration when extruding" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1142 src/libslic3r/PrintConfig.cpp:1144 +#: src/libslic3r/PrintConfig.cpp:1158 +msgid "Maximum acceleration when extruding (M204 S)" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1167 msgid "Maximum acceleration when retracting" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1152 src/libslic3r/PrintConfig.cpp:1161 +#: src/libslic3r/PrintConfig.cpp:1169 +msgid "Maximum acceleration when retracting (M204 T)" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1177 src/libslic3r/PrintConfig.cpp:1186 msgid "Max" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1153 +#: src/libslic3r/PrintConfig.cpp:1178 msgid "This setting represents the maximum speed of your fan." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1162 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:1187 +#, possible-c-format msgid "" "This is the highest printable layer height for this extruder, used to cap " "the variable layer height and support layer height. Maximum recommended " @@ -5667,28 +5886,28 @@ msgid "" "adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1172 +#: src/libslic3r/PrintConfig.cpp:1197 msgid "Max print speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1173 +#: src/libslic3r/PrintConfig.cpp:1198 msgid "" "When setting other speed settings to 0 Slic3r will autocalculate the optimal " "speed in order to keep constant extruder pressure. This experimental setting " "is used to set the highest print speed you want to allow." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1183 +#: src/libslic3r/PrintConfig.cpp:1208 msgid "" "This experimental setting is used to set the maximum volumetric speed your " "extruder supports." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1192 +#: src/libslic3r/PrintConfig.cpp:1217 msgid "Max volumetric slope positive" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1193 src/libslic3r/PrintConfig.cpp:1204 +#: src/libslic3r/PrintConfig.cpp:1218 src/libslic3r/PrintConfig.cpp:1229 msgid "" "This experimental setting is used to limit the speed of change in extrusion " "rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate " @@ -5696,99 +5915,99 @@ msgid "" "s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1197 src/libslic3r/PrintConfig.cpp:1208 +#: src/libslic3r/PrintConfig.cpp:1222 src/libslic3r/PrintConfig.cpp:1233 msgid "mm³/s²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1203 +#: src/libslic3r/PrintConfig.cpp:1228 msgid "Max volumetric slope negative" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1215 src/libslic3r/PrintConfig.cpp:1224 +#: src/libslic3r/PrintConfig.cpp:1240 src/libslic3r/PrintConfig.cpp:1249 msgid "Min" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1216 +#: src/libslic3r/PrintConfig.cpp:1241 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1225 +#: src/libslic3r/PrintConfig.cpp:1250 msgid "" "This is the lowest printable layer height for this extruder and limits the " "resolution for variable layer height. Typical values are between 0.05 mm and " "0.1 mm." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1233 +#: src/libslic3r/PrintConfig.cpp:1258 msgid "Min print speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1234 +#: src/libslic3r/PrintConfig.cpp:1259 msgid "Slic3r will not scale speed down below this speed." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1241 +#: src/libslic3r/PrintConfig.cpp:1266 msgid "Minimal filament extrusion length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1242 +#: src/libslic3r/PrintConfig.cpp:1267 msgid "" "Generate no less than the number of skirt loops required to consume the " "specified amount of filament on the bottom layer. For multi-extruder " "machines, this minimum applies to each extruder." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1251 +#: src/libslic3r/PrintConfig.cpp:1276 msgid "Configuration notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1252 +#: src/libslic3r/PrintConfig.cpp:1277 msgid "" "You can put here your personal notes. This text will be added to the G-code " "header comments." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1261 +#: src/libslic3r/PrintConfig.cpp:1286 msgid "Nozzle diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1262 +#: src/libslic3r/PrintConfig.cpp:1287 msgid "" "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1267 +#: src/libslic3r/PrintConfig.cpp:1292 msgid "Host Type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1268 +#: src/libslic3r/PrintConfig.cpp:1293 msgid "" "Slic3r can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1279 +#: src/libslic3r/PrintConfig.cpp:1304 msgid "Only retract when crossing perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1280 +#: src/libslic3r/PrintConfig.cpp:1305 msgid "" "Disables retraction when the travel path does not exceed the upper layer's " "perimeters (and thus any ooze will be probably invisible)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1287 +#: src/libslic3r/PrintConfig.cpp:1312 msgid "" "This option will drop the temperature of the inactive extruders to prevent " "oozing. It will enable a tall skirt automatically and move extruders outside " "such skirt when changing temperatures." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1294 +#: src/libslic3r/PrintConfig.cpp:1319 msgid "Output filename format" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1295 +#: src/libslic3r/PrintConfig.cpp:1320 msgid "" "You can use all configuration options as variables inside this template. For " "example: [layer_height], [fill_density] etc. You can also use [timestamp], " @@ -5796,31 +6015,31 @@ msgid "" "[input_filename], [input_filename_base]." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1304 +#: src/libslic3r/PrintConfig.cpp:1329 msgid "Detect bridging perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1306 +#: src/libslic3r/PrintConfig.cpp:1331 msgid "" "Experimental option to adjust flow for overhangs (bridge flow will be used), " "to apply bridge speed to them and enable fan." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1312 +#: src/libslic3r/PrintConfig.cpp:1337 msgid "Filament parking position" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1313 +#: src/libslic3r/PrintConfig.cpp:1338 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 "" -#: src/libslic3r/PrintConfig.cpp:1321 +#: src/libslic3r/PrintConfig.cpp:1346 msgid "Extra loading distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1322 +#: src/libslic3r/PrintConfig.cpp:1347 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 " @@ -5828,28 +6047,28 @@ msgid "" "than unloading. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:1330 src/libslic3r/PrintConfig.cpp:1348 -#: src/libslic3r/PrintConfig.cpp:1360 src/libslic3r/PrintConfig.cpp:1370 +#: src/libslic3r/PrintConfig.cpp:1355 src/libslic3r/PrintConfig.cpp:1373 +#: src/libslic3r/PrintConfig.cpp:1385 src/libslic3r/PrintConfig.cpp:1395 msgid "Perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1331 +#: src/libslic3r/PrintConfig.cpp:1356 msgid "" "This is the acceleration your printer will use for perimeters. A high value " "like 9000 usually gives good results if your hardware is up to the job. Set " "zero to disable acceleration control for perimeters." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1339 +#: src/libslic3r/PrintConfig.cpp:1364 msgid "Perimeter extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1341 +#: src/libslic3r/PrintConfig.cpp:1366 msgid "" "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1350 +#: src/libslic3r/PrintConfig.cpp:1375 msgid "" "Set this to a non-zero value to set a manual extrusion width for perimeters. " "You may want to use thinner extrudates to get more accurate surfaces. If " @@ -5858,12 +6077,12 @@ msgid "" "it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1362 +#: src/libslic3r/PrintConfig.cpp:1387 msgid "" "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1372 +#: src/libslic3r/PrintConfig.cpp:1397 msgid "" "This option sets the number of perimeters to generate for each layer. Note " "that Slic3r may increase this number automatically when it detects sloping " @@ -5871,11 +6090,11 @@ msgid "" "Perimeters option is enabled." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1376 +#: src/libslic3r/PrintConfig.cpp:1401 msgid "(minimum)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1384 +#: src/libslic3r/PrintConfig.cpp:1409 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. " @@ -5884,55 +6103,55 @@ msgid "" "environment variables." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1396 +#: src/libslic3r/PrintConfig.cpp:1421 msgid "Printer type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1397 +#: src/libslic3r/PrintConfig.cpp:1422 msgid "Type of the printer." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1402 +#: src/libslic3r/PrintConfig.cpp:1427 msgid "Printer notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1403 +#: src/libslic3r/PrintConfig.cpp:1428 msgid "You can put your notes regarding the printer here." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1411 +#: src/libslic3r/PrintConfig.cpp:1436 msgid "Printer vendor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1412 +#: src/libslic3r/PrintConfig.cpp:1437 msgid "Name of the printer vendor." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1417 +#: src/libslic3r/PrintConfig.cpp:1442 msgid "Printer variant" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:1443 msgid "" "Name of the printer variant. For example, the printer variants may be " "differentiated by a nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1431 +#: src/libslic3r/PrintConfig.cpp:1456 msgid "Raft layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1433 +#: src/libslic3r/PrintConfig.cpp:1458 msgid "" "The object will be raised by this number of layers, and support material " "will be generated under it." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1441 +#: src/libslic3r/PrintConfig.cpp:1466 msgid "Resolution" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1442 +#: src/libslic3r/PrintConfig.cpp:1467 msgid "" "Minimum detail resolution, used to simplify the input file for speeding up " "the slicing job and reducing memory usage. High-resolution models often " @@ -5940,278 +6159,278 @@ msgid "" "simplification and use full resolution from input." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1452 +#: src/libslic3r/PrintConfig.cpp:1477 msgid "Minimum travel after retraction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1453 +#: src/libslic3r/PrintConfig.cpp:1478 msgid "" "Retraction is not triggered when travel moves are shorter than this length." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1459 +#: src/libslic3r/PrintConfig.cpp:1484 msgid "Retract amount before wipe" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1460 +#: src/libslic3r/PrintConfig.cpp:1485 msgid "" "With bowden extruders, it may be wise to do some amount of quick retract " "before doing the wipe movement." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1467 +#: src/libslic3r/PrintConfig.cpp:1492 msgid "Retract on layer change" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1468 +#: src/libslic3r/PrintConfig.cpp:1493 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1473 src/libslic3r/PrintConfig.cpp:1481 +#: src/libslic3r/PrintConfig.cpp:1498 src/libslic3r/PrintConfig.cpp:1506 msgid "Length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1474 +#: src/libslic3r/PrintConfig.cpp:1499 msgid "Retraction Length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1475 +#: src/libslic3r/PrintConfig.cpp:1500 msgid "" "When retraction is triggered, filament is pulled back by the specified " "amount (the length is measured on raw filament, before it enters the " "extruder)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1477 src/libslic3r/PrintConfig.cpp:1486 +#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1511 msgid "mm (zero to disable)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1507 msgid "Retraction Length (Toolchange)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1483 +#: src/libslic3r/PrintConfig.cpp:1508 msgid "" "When retraction is triggered before changing tool, filament is pulled back " "by the specified amount (the length is measured on raw filament, before it " "enters the extruder)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1491 +#: src/libslic3r/PrintConfig.cpp:1516 msgid "Lift Z" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1492 +#: src/libslic3r/PrintConfig.cpp:1517 msgid "" "If you set this to a positive value, Z is quickly raised every time a " "retraction is triggered. When using multiple extruders, only the setting for " "the first extruder will be considered." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1499 +#: src/libslic3r/PrintConfig.cpp:1524 msgid "Above Z" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1500 +#: src/libslic3r/PrintConfig.cpp:1525 msgid "Only lift Z above" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1501 +#: src/libslic3r/PrintConfig.cpp:1526 msgid "" "If you set this to a positive value, Z lift will only take place above the " "specified absolute Z. You can tune this setting for skipping lift on the " "first layers." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1508 +#: src/libslic3r/PrintConfig.cpp:1533 msgid "Below Z" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1509 +#: src/libslic3r/PrintConfig.cpp:1534 msgid "Only lift Z below" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1510 +#: src/libslic3r/PrintConfig.cpp:1535 msgid "" "If you set this to a positive value, Z lift will only take place below the " "specified absolute Z. You can tune this setting for limiting lift to the " "first layers." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1518 src/libslic3r/PrintConfig.cpp:1526 +#: src/libslic3r/PrintConfig.cpp:1543 src/libslic3r/PrintConfig.cpp:1551 msgid "Extra length on restart" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1519 +#: src/libslic3r/PrintConfig.cpp:1544 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 "" -#: src/libslic3r/PrintConfig.cpp:1527 +#: src/libslic3r/PrintConfig.cpp:1552 msgid "" "When the retraction is compensated after changing tool, the extruder will " "push this additional amount of filament." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1534 src/libslic3r/PrintConfig.cpp:1535 +#: src/libslic3r/PrintConfig.cpp:1559 src/libslic3r/PrintConfig.cpp:1560 msgid "Retraction Speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1536 +#: src/libslic3r/PrintConfig.cpp:1561 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1542 src/libslic3r/PrintConfig.cpp:1543 +#: src/libslic3r/PrintConfig.cpp:1567 src/libslic3r/PrintConfig.cpp:1568 msgid "Deretraction Speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1544 +#: src/libslic3r/PrintConfig.cpp:1569 msgid "" "The speed for loading of a filament into extruder after retraction (it only " "applies to the extruder motor). If left to zero, the retraction speed is " "used." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1551 +#: src/libslic3r/PrintConfig.cpp:1576 msgid "Seam position" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1553 +#: src/libslic3r/PrintConfig.cpp:1578 msgid "Position of perimeters starting points." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1559 +#: src/libslic3r/PrintConfig.cpp:1584 msgid "Random" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1560 +#: src/libslic3r/PrintConfig.cpp:1585 msgid "Nearest" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1561 +#: src/libslic3r/PrintConfig.cpp:1586 msgid "Aligned" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1569 +#: src/libslic3r/PrintConfig.cpp:1594 msgid "Direction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1571 +#: src/libslic3r/PrintConfig.cpp:1596 msgid "Preferred direction of the seam" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1572 +#: src/libslic3r/PrintConfig.cpp:1597 msgid "Seam preferred direction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1579 +#: src/libslic3r/PrintConfig.cpp:1604 msgid "Jitter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1581 +#: src/libslic3r/PrintConfig.cpp:1606 msgid "Seam preferred direction jitter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1582 +#: src/libslic3r/PrintConfig.cpp:1607 msgid "Preferred direction of the seam - jitter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1592 +#: src/libslic3r/PrintConfig.cpp:1617 msgid "USB/serial port for printer connection." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1599 +#: src/libslic3r/PrintConfig.cpp:1624 msgid "Serial port speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1600 +#: src/libslic3r/PrintConfig.cpp:1625 msgid "Speed (baud) of USB/serial port for printer connection." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1609 +#: src/libslic3r/PrintConfig.cpp:1634 msgid "Distance from object" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1610 +#: src/libslic3r/PrintConfig.cpp:1635 msgid "" "Distance between skirt and object(s). Set this to zero to attach the skirt " "to the object(s) and get a brim for better adhesion." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1617 +#: src/libslic3r/PrintConfig.cpp:1642 msgid "Skirt height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1618 +#: src/libslic3r/PrintConfig.cpp:1643 msgid "" "Height of skirt expressed in layers. Set this to a tall value to use skirt " "as a shield against drafts." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1625 +#: src/libslic3r/PrintConfig.cpp:1650 msgid "Loops (minimum)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1626 +#: src/libslic3r/PrintConfig.cpp:1651 msgid "Skirt Loops" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1627 +#: src/libslic3r/PrintConfig.cpp:1652 msgid "" "Number of loops for the skirt. If the Minimum Extrusion Length option is " "set, the number of loops might be greater than the one configured here. Set " "this to zero to disable skirt completely." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1635 +#: src/libslic3r/PrintConfig.cpp:1660 msgid "Slow down if layer print time is below" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1636 +#: src/libslic3r/PrintConfig.cpp:1661 msgid "" "If layer print time is estimated below this number of seconds, print moves " "speed will be scaled down to extend duration to this value." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1646 +#: src/libslic3r/PrintConfig.cpp:1671 msgid "Small perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1648 +#: src/libslic3r/PrintConfig.cpp:1673 msgid "" "This separate setting will affect the speed of perimeters having radius <= " "6.5mm (usually holes). If expressed as percentage (for example: 80%) it will " "be calculated on the perimeters speed setting above. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1658 +#: src/libslic3r/PrintConfig.cpp:1683 msgid "Solid infill threshold area" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1660 +#: src/libslic3r/PrintConfig.cpp:1685 msgid "" "Force solid infill for regions having a smaller area than the specified " "threshold." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1661 +#: src/libslic3r/PrintConfig.cpp:1686 msgid "mm²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1667 +#: src/libslic3r/PrintConfig.cpp:1692 msgid "Solid infill extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1669 +#: src/libslic3r/PrintConfig.cpp:1694 msgid "The extruder to use when printing solid infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1675 +#: src/libslic3r/PrintConfig.cpp:1700 msgid "Solid infill every" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1677 +#: src/libslic3r/PrintConfig.cpp:1702 msgid "" "This feature allows to force a solid layer every given number of layers. " "Zero to disable. You can set this to any value (for example 9999); Slic3r " @@ -6219,7 +6438,7 @@ msgid "" "according to nozzle diameter and layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1689 +#: src/libslic3r/PrintConfig.cpp:1714 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill for " "solid surfaces. If left zero, default extrusion width will be used if set, " @@ -6227,22 +6446,22 @@ msgid "" "(for example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1699 +#: src/libslic3r/PrintConfig.cpp:1724 msgid "" "Speed for printing solid regions (top/bottom/internal horizontal shells). " "This can be expressed as a percentage (for example: 80%) over the default " "infill speed above. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1711 +#: src/libslic3r/PrintConfig.cpp:1736 msgid "Number of solid layers to generate on top and bottom surfaces." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1717 +#: src/libslic3r/PrintConfig.cpp:1742 msgid "Spiral vase" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1718 +#: src/libslic3r/PrintConfig.cpp:1743 msgid "" "This feature will raise Z gradually while printing a single-walled object in " "order to remove any visible seam. This option requires a single perimeter, " @@ -6251,18 +6470,18 @@ msgid "" "when printing more than an object." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1726 +#: src/libslic3r/PrintConfig.cpp:1751 msgid "Temperature variation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1727 +#: src/libslic3r/PrintConfig.cpp:1752 msgid "" "Temperature difference to be applied when an extruder is not active. Enables " "a full-height \"sacrificial\" skirt on which the nozzles are periodically " "wiped." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1737 +#: src/libslic3r/PrintConfig.cpp:1762 msgid "" "This start procedure is inserted at the beginning, after bed has reached the " "target temperature and extruder just started heating, and before extruder " @@ -6273,7 +6492,7 @@ msgid "" "\"M109 S[first_layer_temperature]\" command wherever you want." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1752 +#: src/libslic3r/PrintConfig.cpp:1777 msgid "" "This start procedure is inserted at the beginning, after any printer start " "gcode. This is used to override settings for a specific filament. If Slic3r " @@ -6285,93 +6504,93 @@ msgid "" "extruders, the gcode is processed in extruder order." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1767 +#: src/libslic3r/PrintConfig.cpp:1792 msgid "Single Extruder Multi Material" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1768 +#: src/libslic3r/PrintConfig.cpp:1793 msgid "The printer multiplexes filaments into a single hot end." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1773 +#: src/libslic3r/PrintConfig.cpp:1798 msgid "Prime all printing extruders" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1774 +#: src/libslic3r/PrintConfig.cpp:1799 msgid "" "If enabled, all printing extruders will be primed at the front edge of the " "print bed at the start of the print." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1779 +#: src/libslic3r/PrintConfig.cpp:1804 msgid "Generate support material" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1781 +#: src/libslic3r/PrintConfig.cpp:1806 msgid "Enable support material generation." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1785 +#: src/libslic3r/PrintConfig.cpp:1810 msgid "Auto generated supports" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1787 +#: src/libslic3r/PrintConfig.cpp:1812 msgid "" "If checked, supports will be generated automatically based on the overhang " "threshold value. If unchecked, supports will be generated inside the " "\"Support Enforcer\" volumes only." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1793 +#: src/libslic3r/PrintConfig.cpp:1818 msgid "XY separation between an object and its support" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1795 +#: src/libslic3r/PrintConfig.cpp:1820 msgid "" "XY separation between an object and its support. If expressed as percentage " "(for example 50%), it will be calculated over external perimeter width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1805 +#: src/libslic3r/PrintConfig.cpp:1830 msgid "Pattern angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1807 +#: src/libslic3r/PrintConfig.cpp:1832 msgid "" "Use this setting to rotate the support material pattern on the horizontal " "plane." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1817 src/libslic3r/PrintConfig.cpp:2425 +#: src/libslic3r/PrintConfig.cpp:1842 src/libslic3r/PrintConfig.cpp:2450 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1823 +#: src/libslic3r/PrintConfig.cpp:1848 msgid "Contact Z distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1825 +#: src/libslic3r/PrintConfig.cpp:1850 msgid "" "The vertical distance between object and support material interface. Setting " "this to 0 will also prevent Slic3r from using bridge flow and speed for the " "first object layer." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1832 -msgid "soluble" +#: src/libslic3r/PrintConfig.cpp:1857 +msgid "0 (soluble)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1833 -msgid "detachable" +#: src/libslic3r/PrintConfig.cpp:1858 +msgid "0.2 (detachable)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1838 +#: src/libslic3r/PrintConfig.cpp:1863 msgid "Enforce support for the first" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1840 +#: src/libslic3r/PrintConfig.cpp:1865 msgid "" "Generate support material for the specified number of layers counting from " "bottom, regardless of whether normal support material is enabled or not and " @@ -6379,21 +6598,21 @@ msgid "" "of objects having a very thin or poor footprint on the build plate." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1845 +#: src/libslic3r/PrintConfig.cpp:1870 msgid "Enforce support for the first n layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1851 +#: src/libslic3r/PrintConfig.cpp:1876 msgid "Support material/raft/skirt extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1853 +#: src/libslic3r/PrintConfig.cpp:1878 msgid "" "The extruder to use when printing support material, raft and skirt (1+, 0 to " "use the current extruder to minimize tool changes)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1862 +#: src/libslic3r/PrintConfig.cpp:1887 msgid "" "Set this to a non-zero value to set a manual extrusion width for support " "material. If left zero, default extrusion width will be used if set, " @@ -6401,89 +6620,89 @@ msgid "" "example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1870 +#: src/libslic3r/PrintConfig.cpp:1895 msgid "Interface loops" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1872 +#: src/libslic3r/PrintConfig.cpp:1897 msgid "" "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1877 +#: src/libslic3r/PrintConfig.cpp:1902 msgid "Support material/raft interface extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1879 +#: src/libslic3r/PrintConfig.cpp:1904 msgid "" "The extruder to use when printing support material interface (1+, 0 to use " "the current extruder to minimize tool changes). This affects raft too." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1886 +#: src/libslic3r/PrintConfig.cpp:1911 msgid "Interface layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1888 +#: src/libslic3r/PrintConfig.cpp:1913 msgid "" "Number of interface layers to insert between the object(s) and support " "material." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1895 +#: src/libslic3r/PrintConfig.cpp:1920 msgid "Interface pattern spacing" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1897 +#: src/libslic3r/PrintConfig.cpp:1922 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1906 +#: src/libslic3r/PrintConfig.cpp:1931 msgid "" "Speed for printing support material interface layers. If expressed as " "percentage (for example 50%) it will be calculated over support material " "speed." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1915 +#: src/libslic3r/PrintConfig.cpp:1940 msgid "Pattern" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1917 +#: src/libslic3r/PrintConfig.cpp:1942 msgid "Pattern used to generate support material." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1923 +#: src/libslic3r/PrintConfig.cpp:1948 msgid "Rectilinear grid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1929 +#: src/libslic3r/PrintConfig.cpp:1954 msgid "Pattern spacing" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1931 +#: src/libslic3r/PrintConfig.cpp:1956 msgid "Spacing between support material lines." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1940 +#: src/libslic3r/PrintConfig.cpp:1965 msgid "Speed for printing support material." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1947 +#: src/libslic3r/PrintConfig.cpp:1972 msgid "Synchronize with object layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1949 +#: src/libslic3r/PrintConfig.cpp:1974 msgid "" "Synchronize support layers with the object print layers. This is useful with " "multi-material printers, where the extruder switch is expensive." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1955 +#: src/libslic3r/PrintConfig.cpp:1980 msgid "Overhang threshold" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1957 +#: src/libslic3r/PrintConfig.cpp:1982 msgid "" "Support material will not be generated for overhangs whose slope angle (90° " "= vertical) is above the given threshold. In other words, this value " @@ -6492,54 +6711,54 @@ msgid "" "detection (recommended)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1969 +#: src/libslic3r/PrintConfig.cpp:1994 msgid "With sheath around the support" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1971 +#: src/libslic3r/PrintConfig.cpp:1996 msgid "" "Add a sheath (a single perimeter line) around the base support. This makes " "the support more reliable, but also more difficult to remove." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1978 +#: src/libslic3r/PrintConfig.cpp:2003 msgid "" "Extruder temperature for layers after the first one. Set this to zero to " "disable temperature control commands in the output." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1980 +#: src/libslic3r/PrintConfig.cpp:2005 msgid "Temperature" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1986 +#: src/libslic3r/PrintConfig.cpp:2011 msgid "Detect thin walls" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1988 +#: src/libslic3r/PrintConfig.cpp:2013 msgid "" "Detect single-width walls (parts where two extrusions don't fit and we need " "to collapse them into a single trace)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1994 +#: src/libslic3r/PrintConfig.cpp:2019 msgid "Threads" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1995 +#: src/libslic3r/PrintConfig.cpp:2020 msgid "" "Threads are used to parallelize long-running tasks. Optimal threads number " "is slightly above the number of available cores/processors." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2007 +#: src/libslic3r/PrintConfig.cpp:2032 msgid "" "This custom code is inserted right before every extruder change. Note that " "you can use placeholder variables for all Slic3r settings as well as " "[previous_extruder] and [next_extruder]." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2019 +#: src/libslic3r/PrintConfig.cpp:2044 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill for " "top surfaces. You may want to use thinner extrudates to fill all narrow " @@ -6548,7 +6767,7 @@ msgid "" "percentage (for example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2030 +#: src/libslic3r/PrintConfig.cpp:2055 msgid "" "Speed for printing top solid layers (it only applies to the uppermost " "external layers and not to their internal solid layers). You may want to " @@ -6557,43 +6776,43 @@ msgid "" "for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2045 +#: src/libslic3r/PrintConfig.cpp:2070 msgid "Number of solid layers to generate on top surfaces." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2046 +#: src/libslic3r/PrintConfig.cpp:2071 msgid "Top solid layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2052 +#: src/libslic3r/PrintConfig.cpp:2077 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2060 +#: src/libslic3r/PrintConfig.cpp:2085 msgid "Use firmware retraction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2061 +#: src/libslic3r/PrintConfig.cpp:2086 msgid "" "This experimental setting uses G10 and G11 commands to have the firmware " "handle the retraction. This is only supported in recent Marlin." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2067 +#: src/libslic3r/PrintConfig.cpp:2092 msgid "Use relative E distances" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2068 +#: src/libslic3r/PrintConfig.cpp:2093 msgid "" "If your firmware requires relative E values, check this, otherwise leave it " "unchecked. Most firmwares use absolute values." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2074 +#: src/libslic3r/PrintConfig.cpp:2099 msgid "Use volumetric E" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2075 +#: src/libslic3r/PrintConfig.cpp:2100 msgid "" "This experimental setting uses outputs the E values in cubic millimeters " "instead of linear millimeters. If your firmware doesn't already know " @@ -6603,127 +6822,127 @@ msgid "" "only supported in recent Marlin." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2085 +#: src/libslic3r/PrintConfig.cpp:2110 msgid "Enable variable layer height feature" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2086 +#: src/libslic3r/PrintConfig.cpp:2111 msgid "" "Some printers or printer setups may have difficulties printing with a " "variable layer height. Enabled by default." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2092 +#: src/libslic3r/PrintConfig.cpp:2117 msgid "Wipe while retracting" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2093 +#: src/libslic3r/PrintConfig.cpp:2118 msgid "" "This flag will move the nozzle while retracting to minimize the possible " "blob on leaky extruders." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2100 +#: src/libslic3r/PrintConfig.cpp:2125 msgid "" "Multi material printers may need to prime or purge extruders on tool " "changes. Extrude the excess material into the wipe tower." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2106 +#: src/libslic3r/PrintConfig.cpp:2131 msgid "Purging volumes - load/unload volumes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2107 +#: src/libslic3r/PrintConfig.cpp:2132 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 "" -#: src/libslic3r/PrintConfig.cpp:2113 +#: src/libslic3r/PrintConfig.cpp:2138 msgid "Purging volumes - matrix" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2114 +#: src/libslic3r/PrintConfig.cpp:2139 msgid "" "This matrix describes volumes (in cubic milimetres) required to purge the " "new filament on the wipe tower for any given pair of tools. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:2123 +#: src/libslic3r/PrintConfig.cpp:2148 msgid "Position X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2124 +#: src/libslic3r/PrintConfig.cpp:2149 msgid "X coordinate of the left front corner of a wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2130 +#: src/libslic3r/PrintConfig.cpp:2155 msgid "Position Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2131 +#: src/libslic3r/PrintConfig.cpp:2156 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2138 +#: src/libslic3r/PrintConfig.cpp:2163 msgid "Width of a wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2144 +#: src/libslic3r/PrintConfig.cpp:2169 msgid "Wipe tower rotation angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2145 +#: src/libslic3r/PrintConfig.cpp:2170 msgid "Wipe tower rotation angle with respect to x-axis " msgstr "" -#: src/libslic3r/PrintConfig.cpp:2152 +#: src/libslic3r/PrintConfig.cpp:2177 msgid "Wipe into this object's infill" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2153 +#: src/libslic3r/PrintConfig.cpp:2178 msgid "" "Purging after toolchange will done inside this object's infills. This lowers " "the amount of waste but may result in longer print time due to additional " "travel moves." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2160 +#: src/libslic3r/PrintConfig.cpp:2185 msgid "Wipe into this object" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:2186 msgid "" "Object will be used to purge the nozzle after a toolchange to save material " "that would otherwise end up in the wipe tower and decrease print time. " "Colours of the objects will be mixed as a result." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2167 +#: src/libslic3r/PrintConfig.cpp:2192 msgid "Maximal bridging distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2193 msgid "Maximal distance between supports on sparse infill sections. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:2174 +#: src/libslic3r/PrintConfig.cpp:2199 msgid "XY Size Compensation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2201 msgid "" "The object will be grown/shrunk in the XY plane by the configured value " "(negative = inwards, positive = outwards). This might be useful for fine-" "tuning hole sizes." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2184 +#: src/libslic3r/PrintConfig.cpp:2209 msgid "Z offset" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2185 +#: src/libslic3r/PrintConfig.cpp:2210 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 " @@ -6731,596 +6950,596 @@ msgid "" "print bed, set this to -0.3 (or fix your endstop)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2202 +#: src/libslic3r/PrintConfig.cpp:2227 msgid "Display width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2203 +#: src/libslic3r/PrintConfig.cpp:2228 msgid "Width of the display" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2208 +#: src/libslic3r/PrintConfig.cpp:2233 msgid "Display height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2209 +#: src/libslic3r/PrintConfig.cpp:2234 msgid "Height of the display" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2214 +#: src/libslic3r/PrintConfig.cpp:2239 msgid "Number of pixels in" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2216 +#: src/libslic3r/PrintConfig.cpp:2241 msgid "Number of pixels in X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2222 +#: src/libslic3r/PrintConfig.cpp:2247 msgid "Number of pixels in Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2227 +#: src/libslic3r/PrintConfig.cpp:2252 msgid "Display orientation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2228 +#: src/libslic3r/PrintConfig.cpp:2253 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " "images will be rotated by 90 degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2234 +#: src/libslic3r/PrintConfig.cpp:2259 msgid "Landscape" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2235 +#: src/libslic3r/PrintConfig.cpp:2260 msgid "Portrait" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2240 +#: src/libslic3r/PrintConfig.cpp:2265 msgid "Fast" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2241 +#: src/libslic3r/PrintConfig.cpp:2266 msgid "Fast tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2242 +#: src/libslic3r/PrintConfig.cpp:2267 msgid "Time of the fast tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2249 +#: src/libslic3r/PrintConfig.cpp:2274 msgid "Slow" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2250 +#: src/libslic3r/PrintConfig.cpp:2275 msgid "Slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2251 +#: src/libslic3r/PrintConfig.cpp:2276 msgid "Time of the slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2258 +#: src/libslic3r/PrintConfig.cpp:2283 msgid "Area fill" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2259 +#: src/libslic3r/PrintConfig.cpp:2284 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" "then a slow tilt will be used, otherwise - a fast tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2266 src/libslic3r/PrintConfig.cpp:2267 -#: src/libslic3r/PrintConfig.cpp:2268 +#: src/libslic3r/PrintConfig.cpp:2291 src/libslic3r/PrintConfig.cpp:2292 +#: src/libslic3r/PrintConfig.cpp:2293 msgid "Printer scaling correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2274 src/libslic3r/PrintConfig.cpp:2275 +#: src/libslic3r/PrintConfig.cpp:2299 src/libslic3r/PrintConfig.cpp:2300 msgid "Printer absolute correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2276 +#: src/libslic3r/PrintConfig.cpp:2301 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2282 src/libslic3r/PrintConfig.cpp:2283 +#: src/libslic3r/PrintConfig.cpp:2307 src/libslic3r/PrintConfig.cpp:2308 msgid "Printer gamma correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2284 +#: src/libslic3r/PrintConfig.cpp:2309 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " "behaviour eliminates antialiasing without losing holes in polygons." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2295 src/libslic3r/PrintConfig.cpp:2296 +#: src/libslic3r/PrintConfig.cpp:2320 src/libslic3r/PrintConfig.cpp:2321 msgid "Initial layer height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2302 +#: src/libslic3r/PrintConfig.cpp:2327 msgid "Faded layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2303 +#: src/libslic3r/PrintConfig.cpp:2328 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2310 src/libslic3r/PrintConfig.cpp:2311 +#: src/libslic3r/PrintConfig.cpp:2335 src/libslic3r/PrintConfig.cpp:2336 msgid "Exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2317 src/libslic3r/PrintConfig.cpp:2318 +#: src/libslic3r/PrintConfig.cpp:2342 src/libslic3r/PrintConfig.cpp:2343 msgid "Initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2324 src/libslic3r/PrintConfig.cpp:2325 +#: src/libslic3r/PrintConfig.cpp:2349 src/libslic3r/PrintConfig.cpp:2350 msgid "Correction for expansion" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2331 +#: src/libslic3r/PrintConfig.cpp:2356 msgid "SLA print material notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2332 +#: src/libslic3r/PrintConfig.cpp:2357 msgid "You can put your notes regarding the SLA print material here." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2340 src/libslic3r/PrintConfig.cpp:2351 +#: src/libslic3r/PrintConfig.cpp:2365 src/libslic3r/PrintConfig.cpp:2376 msgid "Default SLA material profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2362 +#: src/libslic3r/PrintConfig.cpp:2387 msgid "Generate supports" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2364 +#: src/libslic3r/PrintConfig.cpp:2389 msgid "Generate supports for the models" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2369 +#: src/libslic3r/PrintConfig.cpp:2394 msgid "Support head front diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2371 +#: src/libslic3r/PrintConfig.cpp:2396 msgid "Diameter of the pointing side of the head" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2378 +#: src/libslic3r/PrintConfig.cpp:2403 msgid "Support head penetration" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2380 +#: src/libslic3r/PrintConfig.cpp:2405 msgid "How much the pinhead has to penetrate the model surface" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2387 +#: src/libslic3r/PrintConfig.cpp:2412 msgid "Support head width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2389 +#: src/libslic3r/PrintConfig.cpp:2414 msgid "Width from the back sphere center to the front sphere center" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2397 +#: src/libslic3r/PrintConfig.cpp:2422 msgid "Support pillar diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2399 +#: src/libslic3r/PrintConfig.cpp:2424 msgid "Diameter in mm of the support pillars" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2407 +#: src/libslic3r/PrintConfig.cpp:2432 msgid "Support pillar connection mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2408 +#: src/libslic3r/PrintConfig.cpp:2433 msgid "" -"Controls the bridge type between two neigboring pillars. Can be zig-zag, " +"Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " "the first two depending on the distance of the two pillars." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2416 +#: src/libslic3r/PrintConfig.cpp:2441 msgid "Zig-Zag" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2417 +#: src/libslic3r/PrintConfig.cpp:2442 msgid "Cross" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2418 +#: src/libslic3r/PrintConfig.cpp:2443 msgid "Dynamic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2430 +#: src/libslic3r/PrintConfig.cpp:2455 msgid "Pillar widening factor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2432 +#: src/libslic3r/PrintConfig.cpp:2457 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2441 +#: src/libslic3r/PrintConfig.cpp:2466 msgid "Support base diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2443 +#: src/libslic3r/PrintConfig.cpp:2468 msgid "Diameter in mm of the pillar base" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2451 +#: src/libslic3r/PrintConfig.cpp:2476 msgid "Support base height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2453 +#: src/libslic3r/PrintConfig.cpp:2478 msgid "The height of the pillar base cone" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2460 +#: src/libslic3r/PrintConfig.cpp:2485 msgid "Critical angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2462 +#: src/libslic3r/PrintConfig.cpp:2487 msgid "The default angle for connecting support sticks and junctions." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2470 +#: src/libslic3r/PrintConfig.cpp:2495 msgid "Max bridge length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2472 +#: src/libslic3r/PrintConfig.cpp:2497 msgid "The max length of a bridge" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2479 +#: src/libslic3r/PrintConfig.cpp:2504 msgid "Max pillar linking distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2481 +#: src/libslic3r/PrintConfig.cpp:2506 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2489 +#: src/libslic3r/PrintConfig.cpp:2514 msgid "Object elevation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2491 +#: src/libslic3r/PrintConfig.cpp:2516 msgid "How much the supports should lift up the supported object." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2499 +#: src/libslic3r/PrintConfig.cpp:2524 msgid "Support points density" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2501 +#: src/libslic3r/PrintConfig.cpp:2526 msgid "This is a relative measure of support points density." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2507 +#: src/libslic3r/PrintConfig.cpp:2532 msgid "Minimal distance of the support points" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2509 +#: src/libslic3r/PrintConfig.cpp:2534 msgid "No support points will be placed closer than this threshold." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2515 +#: src/libslic3r/PrintConfig.cpp:2540 msgid "Use pad" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2517 +#: src/libslic3r/PrintConfig.cpp:2542 msgid "Add a pad underneath the supported model" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2522 +#: src/libslic3r/PrintConfig.cpp:2547 msgid "Pad wall thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2524 +#: src/libslic3r/PrintConfig.cpp:2549 msgid "The thickness of the pad and its optional cavity walls." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2532 +#: src/libslic3r/PrintConfig.cpp:2557 msgid "Pad wall height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2533 +#: src/libslic3r/PrintConfig.cpp:2558 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " -"effect inside the cavity, which makes pealing the print off the vat foil " +"effect inside the cavity, which makes peeling the print off the vat foil " "difficult." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2546 +#: src/libslic3r/PrintConfig.cpp:2571 msgid "Max merge distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2548 +#: src/libslic3r/PrintConfig.cpp:2573 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " "be. If theyare closer, they will get merged into one pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2559 +#: src/libslic3r/PrintConfig.cpp:2584 msgid "Pad edge radius" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2568 +#: src/libslic3r/PrintConfig.cpp:2593 msgid "Pad wall slope" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2570 +#: src/libslic3r/PrintConfig.cpp:2595 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2572 +#: src/libslic3r/PrintConfig.cpp:2597 msgid "degrees" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2931 +#: src/libslic3r/PrintConfig.cpp:2957 msgid "Export OBJ" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2932 +#: src/libslic3r/PrintConfig.cpp:2958 msgid "Export the model(s) as OBJ." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2943 +#: src/libslic3r/PrintConfig.cpp:2969 msgid "Export SLA" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2944 +#: src/libslic3r/PrintConfig.cpp:2970 msgid "Slice the model and export SLA printing layers as PNG." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2949 +#: src/libslic3r/PrintConfig.cpp:2975 msgid "Export 3MF" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2950 +#: src/libslic3r/PrintConfig.cpp:2976 msgid "Export the model(s) as 3MF." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2954 +#: src/libslic3r/PrintConfig.cpp:2980 msgid "Export AMF" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2955 +#: src/libslic3r/PrintConfig.cpp:2981 msgid "Export the model(s) as AMF." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2959 +#: src/libslic3r/PrintConfig.cpp:2985 msgid "Export STL" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2960 +#: src/libslic3r/PrintConfig.cpp:2986 msgid "Export the model(s) as STL." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2965 +#: src/libslic3r/PrintConfig.cpp:2991 msgid "Slice the model and export toolpaths as G-code." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2970 +#: src/libslic3r/PrintConfig.cpp:2996 msgid "Slice" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2971 +#: src/libslic3r/PrintConfig.cpp:2997 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2976 +#: src/libslic3r/PrintConfig.cpp:3002 msgid "Help" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2977 +#: src/libslic3r/PrintConfig.cpp:3003 msgid "Show this help." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2982 +#: src/libslic3r/PrintConfig.cpp:3008 msgid "Help (FFF options)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2983 +#: src/libslic3r/PrintConfig.cpp:3009 msgid "Show the full list of print/G-code configuration options." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2987 +#: src/libslic3r/PrintConfig.cpp:3013 msgid "Help (SLA options)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2988 +#: src/libslic3r/PrintConfig.cpp:3014 msgid "Show the full list of SLA print configuration options." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2992 +#: src/libslic3r/PrintConfig.cpp:3018 msgid "Output Model Info" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2993 +#: src/libslic3r/PrintConfig.cpp:3019 msgid "Write information about the model to the console." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2997 +#: src/libslic3r/PrintConfig.cpp:3023 msgid "Save config file" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2998 +#: src/libslic3r/PrintConfig.cpp:3024 msgid "Save configuration to the specified file." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3008 +#: src/libslic3r/PrintConfig.cpp:3034 msgid "Align XY" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3009 +#: src/libslic3r/PrintConfig.cpp:3035 msgid "Align the model to the given point." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3014 +#: src/libslic3r/PrintConfig.cpp:3040 msgid "Cut model at the given Z." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3035 +#: src/libslic3r/PrintConfig.cpp:3061 msgid "Center" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3036 +#: src/libslic3r/PrintConfig.cpp:3062 msgid "Center the print around the given center." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3040 +#: src/libslic3r/PrintConfig.cpp:3066 msgid "Don't arrange" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3041 +#: src/libslic3r/PrintConfig.cpp:3067 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3044 +#: src/libslic3r/PrintConfig.cpp:3070 msgid "Duplicate" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3045 +#: src/libslic3r/PrintConfig.cpp:3071 msgid "Multiply copies by this factor." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3049 +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Duplicate by grid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3050 +#: src/libslic3r/PrintConfig.cpp:3076 msgid "Multiply copies by creating a grid." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3053 +#: src/libslic3r/PrintConfig.cpp:3079 msgid "Merge" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3054 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3059 +#: src/libslic3r/PrintConfig.cpp:3085 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3063 +#: src/libslic3r/PrintConfig.cpp:3089 msgid "Rotation angle around the Z axis in degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3067 +#: src/libslic3r/PrintConfig.cpp:3093 msgid "Rotate around X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3068 +#: src/libslic3r/PrintConfig.cpp:3094 msgid "Rotation angle around the X axis in degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3072 +#: src/libslic3r/PrintConfig.cpp:3098 msgid "Rotate around Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3073 +#: src/libslic3r/PrintConfig.cpp:3099 msgid "Rotation angle around the Y axis in degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3078 +#: src/libslic3r/PrintConfig.cpp:3104 msgid "Scaling factor or percentage." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3083 +#: src/libslic3r/PrintConfig.cpp:3109 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3086 +#: src/libslic3r/PrintConfig.cpp:3112 msgid "Scale to Fit" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3087 +#: src/libslic3r/PrintConfig.cpp:3113 msgid "Scale to fit the given volume." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3096 +#: src/libslic3r/PrintConfig.cpp:3122 msgid "Ignore non-existent config files" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3097 +#: src/libslic3r/PrintConfig.cpp:3123 msgid "Do not fail if a file supplied to --load does not exist." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3100 +#: src/libslic3r/PrintConfig.cpp:3126 msgid "Load config file" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3101 +#: src/libslic3r/PrintConfig.cpp:3127 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "Output File" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3105 +#: src/libslic3r/PrintConfig.cpp:3131 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3115 +#: src/libslic3r/PrintConfig.cpp:3141 msgid "Data directory" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3116 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " "storage." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3145 msgid "Logging level" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "" "Messages with severity lower or eqal to the loglevel will be printed out. 0:" "trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3125 +#: src/libslic3r/PrintConfig.cpp:3151 msgid "Render with a software renderer" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3126 +#: src/libslic3r/PrintConfig.cpp:3152 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." diff --git a/src/slic3r/GUI/ButtonsDescription.cpp b/src/slic3r/GUI/ButtonsDescription.cpp index 9def347497..f9ab9b89c0 100644 --- a/src/slic3r/GUI/ButtonsDescription.cpp +++ b/src/slic3r/GUI/ButtonsDescription.cpp @@ -12,9 +12,9 @@ namespace Slic3r { namespace GUI { -ButtonsDescription::ButtonsDescription(wxWindow* parent, t_icon_descriptions* icon_descriptions) : +ButtonsDescription::ButtonsDescription(wxWindow* parent, const std::vector &entries) : wxDialog(parent, wxID_ANY, _(L("Buttons And Text Colors Description")), wxDefaultPosition, wxDefaultSize), - m_icon_descriptions(icon_descriptions) + m_entries(entries) { auto grid_sizer = new wxFlexGridSizer(3, 20, 20); @@ -22,18 +22,13 @@ ButtonsDescription::ButtonsDescription(wxWindow* parent, t_icon_descriptions* ic main_sizer->Add(grid_sizer, 0, wxEXPAND | wxALL, 20); // Icon description - for (auto pair : *m_icon_descriptions) + for (const Entry &entry : m_entries) { - auto icon = new wxStaticBitmap(this, wxID_ANY, /***/pair.first->bmp()); + auto icon = new wxStaticBitmap(this, wxID_ANY, entry.bitmap->bmp()); grid_sizer->Add(icon, -1, wxALIGN_CENTRE_VERTICAL); - - std::istringstream f(pair.second); - std::string s; - getline(f, s, ';'); - auto description = new wxStaticText(this, wxID_ANY, _(s)); + auto description = new wxStaticText(this, wxID_ANY, _utf8(entry.symbol)); grid_sizer->Add(description, -1, wxALIGN_CENTRE_VERTICAL); - getline(f, s, ';'); - description = new wxStaticText(this, wxID_ANY, _(s)); + description = new wxStaticText(this, wxID_ANY, _utf8(entry.explanation)); grid_sizer->Add(description, -1, wxALIGN_CENTRE_VERTICAL | wxEXPAND); } diff --git a/src/slic3r/GUI/ButtonsDescription.hpp b/src/slic3r/GUI/ButtonsDescription.hpp index 69005d2a59..5ca74290ad 100644 --- a/src/slic3r/GUI/ButtonsDescription.hpp +++ b/src/slic3r/GUI/ButtonsDescription.hpp @@ -9,14 +9,22 @@ class ScalableBitmap; namespace Slic3r { namespace GUI { -using t_icon_descriptions = std::vector>; - class ButtonsDescription : public wxDialog { - t_icon_descriptions* m_icon_descriptions; public: - ButtonsDescription(wxWindow* parent, t_icon_descriptions* icon_descriptions); + struct Entry { + Entry(ScalableBitmap *bitmap, const std::string &symbol, const std::string &explanation) : bitmap(bitmap), symbol(symbol), explanation(explanation) {} + + ScalableBitmap *bitmap; + std::string symbol; + std::string explanation; + }; + + ButtonsDescription(wxWindow* parent, const std::vector &entries); ~ButtonsDescription() {} + +private: + std::vector m_entries; }; } // GUI diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 8619bec1c5..80815c8be4 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -795,7 +795,7 @@ bool GLCanvas3D::WarningTexture::_generate(const std::string& msg_utf8, const GL if (msg_utf8.empty()) return false; - wxString msg = _(msg_utf8);//GUI::from_u8(msg_utf8); + wxString msg = _(msg_utf8); wxMemoryDC memDC; diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index a41e317679..79b24fe1ac 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -798,8 +798,8 @@ bool GUI_App::check_unsaved_changes() return true; // Ask the user. wxMessageDialog dialog(mainframe, - _(L("You have unsaved changes ")) + dirty + _(L(". Discard changes and continue anyway?")), - _(L("Unsaved Presets")), + _(L("The following presets were modified: ")) + dirty + "\n" + _(L("Discard changes and continue anyway?")), + wxString(SLIC3R_APP_NAME) + " - " + _(L("Unsaved Presets")), wxICON_QUESTION | wxYES_NO | wxNO_DEFAULT); return dialog.ShowModal() == wxID_YES; } @@ -819,7 +819,7 @@ void GUI_App::load_current_presets() this->plater()->set_printer_technology(printer_technology); for (Tab *tab : tabs_list) if (tab->supports_printer_technology(printer_technology)) { - if (tab->name() == "printer") + if (tab->type() == Preset::TYPE_PRINTER) static_cast(tab)->update_pages(); tab->load_current_preset(); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp index b2b7c9872f..bf9bbba8a9 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp @@ -1021,7 +1021,7 @@ void GLGizmoSlaSupports::on_set_state() // on OSX with the wxMessageDialog being shown several times when clicked into. if (m_model_object) { if (m_unsaved_changes) { - wxMessageDialog dlg(GUI::wxGetApp().mainframe, _(L("Do you want to save your manually edited support points ?\n")), + wxMessageDialog dlg(GUI::wxGetApp().mainframe, _(L("Do you want to save your manually edited support points?")) + "\n", _(L("Save changes?")), wxICON_QUESTION | wxYES | wxNO); if (dlg.ShowModal() == wxID_YES) editing_mode_apply_changes(); @@ -1202,15 +1202,15 @@ SlaGizmoHelpDialog::SlaGizmoHelpDialog() : wxDialog(NULL, wxID_ANY, _(L("SLA gizmo keyboard shortcuts")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER) { SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); - const std::string &ctrl = GUI::shortkey_ctrl_prefix(); - const std::string &alt = GUI::shortkey_alt_prefix(); + const wxString ctrl = GUI::shortkey_ctrl_prefix(); + const wxString alt = GUI::shortkey_alt_prefix(); // fonts const wxFont& font = wxGetApp().small_font(); const wxFont& bold_font = wxGetApp().bold_font(); - auto note_text = new wxStaticText(this, wxID_ANY, "Note: some shortcuts work in (non)editing mode only."); + auto note_text = new wxStaticText(this, wxID_ANY, _(L("Note: some shortcuts work in (non)editing mode only."))); note_text->SetFont(font); auto vsizer = new wxBoxSizer(wxVERTICAL); @@ -1227,22 +1227,22 @@ SlaGizmoHelpDialog::SlaGizmoHelpDialog() vsizer->Add(gridsizer); vsizer->AddSpacer(20); - std::vector> shortcuts; - shortcuts.push_back(std::make_pair("Left click", _(L("Add point")))); - shortcuts.push_back(std::make_pair("Right click", _(L("Remove point")))); - shortcuts.push_back(std::make_pair("Drag", _(L("Move point")))); - shortcuts.push_back(std::make_pair(ctrl+"Left click", _(L("Add point to selection")))); - shortcuts.push_back(std::make_pair(alt+"Left click", _(L("Remove point from selection")))); - shortcuts.push_back(std::make_pair("Shift+drag", _(L("Select by rectangle")))); - shortcuts.push_back(std::make_pair(alt+"drag", _(L("Deselect by rectangle")))); - shortcuts.push_back(std::make_pair(ctrl+"A", _(L("Select all points")))); - shortcuts.push_back(std::make_pair("Delete", _(L("Remove selected points")))); - shortcuts.push_back(std::make_pair(ctrl+"mouse wheel", _(L("Move clipping plane")))); - shortcuts.push_back(std::make_pair("R", _(L("Reset clipping plane")))); - shortcuts.push_back(std::make_pair("Enter", _(L("Apply changes")))); - shortcuts.push_back(std::make_pair("Esc", _(L("Discard changes")))); - shortcuts.push_back(std::make_pair("M", _(L("Switch to editing mode")))); - shortcuts.push_back(std::make_pair("A", _(L("Auto-generate points")))); + std::vector> shortcuts; + shortcuts.push_back(std::make_pair(_(L("Left click")), _(L("Add point")))); + shortcuts.push_back(std::make_pair(_(L("Right click")), _(L("Remove point")))); + shortcuts.push_back(std::make_pair(_(L("Drag")), _(L("Move point")))); + shortcuts.push_back(std::make_pair(ctrl+_(L("Left click")), _(L("Add point to selection")))); + shortcuts.push_back(std::make_pair(alt+_(L("Left click")), _(L("Remove point from selection")))); + shortcuts.push_back(std::make_pair(wxString("Shift+")+_(L("Drag")), _(L("Select by rectangle")))); + shortcuts.push_back(std::make_pair(alt+_(L("Drag")), _(L("Deselect by rectangle")))); + shortcuts.push_back(std::make_pair(ctrl+"A", _(L("Select all points")))); + shortcuts.push_back(std::make_pair("Delete", _(L("Remove selected points")))); + shortcuts.push_back(std::make_pair(ctrl+_(L("Mouse wheel")), _(L("Move clipping plane")))); + shortcuts.push_back(std::make_pair("R", _(L("Reset clipping plane")))); + shortcuts.push_back(std::make_pair("Enter", _(L("Apply changes")))); + shortcuts.push_back(std::make_pair("Esc", _(L("Discard changes")))); + shortcuts.push_back(std::make_pair("M", _(L("Switch to editing mode")))); + shortcuts.push_back(std::make_pair("A", _(L("Auto-generate points")))); for (const auto& pair : shortcuts) { auto shortcut = new wxStaticText(this, wxID_ANY, pair.first); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 91424b830b..3a1b5d37d6 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -157,7 +157,7 @@ void Tab::create_preset_tab() m_undo_to_sys_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_roll_back_value(true); })); m_question_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { - auto dlg = new ButtonsDescription(this, &m_icon_descriptions); + auto dlg = new ButtonsDescription(this, m_icon_descriptions); if (dlg->ShowModal() == wxID_OK) { // Colors for ui "decoration" for (Tab *tab : wxGetApp().tabs_list) { @@ -3062,28 +3062,28 @@ void Tab::compatible_widget_reload(PresetDependencies &deps) void Tab::fill_icon_descriptions() { - m_icon_descriptions.push_back(t_icon_description(&m_bmp_value_lock, L("LOCKED LOCK") ";" + m_icon_descriptions.emplace_back(&m_bmp_value_lock, L("LOCKED LOCK"), // TRN Description for "LOCKED LOCK" - L("indicates that the settings are the same as the system values for the current option group"))); + L("indicates that the settings are the same as the system values for the current option group")); - m_icon_descriptions.push_back(t_icon_description(&m_bmp_value_unlock, L("UNLOCKED LOCK") ";" + m_icon_descriptions.emplace_back(&m_bmp_value_unlock, L("UNLOCKED LOCK"), // TRN Description for "UNLOCKED LOCK" L("indicates that some settings were changed and are not equal to the system values for " "the current option group.\n" "Click the UNLOCKED LOCK icon to reset all settings for current option group to " - "the system values."))); + "the system values.")); - m_icon_descriptions.push_back(t_icon_description(&m_bmp_white_bullet, L("WHITE BULLET") ";" + m_icon_descriptions.emplace_back(&m_bmp_white_bullet, L("WHITE BULLET"), // TRN Description for "WHITE BULLET" L("for the left button: \tindicates a non-system preset,\n" - "for the right button: \tindicates that the settings hasn't been modified."))); + "for the right button: \tindicates that the settings hasn't been modified.")); - m_icon_descriptions.push_back(t_icon_description(&m_bmp_value_revert, L("BACK ARROW") ";" + m_icon_descriptions.emplace_back(&m_bmp_value_revert, L("BACK ARROW"), // TRN Description for "BACK ARROW" L("indicates that the settings were changed and are not equal to the last saved preset for " "the current option group.\n" "Click the BACK ARROW icon to reset all settings for the current option group to " - "the last saved preset."))); + "the last saved preset.")); } void Tab::set_tooltips_text() diff --git a/src/slic3r/GUI/Tab.hpp b/src/slic3r/GUI/Tab.hpp index ae13cb4b53..58bd3cfb59 100644 --- a/src/slic3r/GUI/Tab.hpp +++ b/src/slic3r/GUI/Tab.hpp @@ -29,6 +29,7 @@ #include #include "BedShapeDialog.hpp" +#include "ButtonsDescription.hpp" #include "Event.hpp" #include "wxExtensions.hpp" @@ -36,9 +37,6 @@ namespace Slic3r { namespace GUI { -typedef std::pair t_icon_description; -typedef std::vector> t_icon_descriptions; - // Single Tab page containing a{ vsizer } of{ optgroups } // package Slic3r::GUI::Tab::Page; using ConfigOptionsGroupShp = std::shared_ptr; @@ -201,7 +199,7 @@ protected: std::map m_options_list; int m_opt_status_value = 0; - t_icon_descriptions m_icon_descriptions = {}; + std::vector m_icon_descriptions = {}; bool m_is_modified_values{ false }; bool m_is_nonsys_values{ true }; From 2202138fbdf396d150b068ef7bb1e1a3014bb6c3 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Thu, 9 May 2019 19:58:16 +0200 Subject: [PATCH 93/94] Fixed missing conversion from wxString to std::string --- src/slic3r/GUI/BackgroundSlicingProcess.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.cpp b/src/slic3r/GUI/BackgroundSlicingProcess.cpp index 19ee0800b5..d895a61d43 100644 --- a/src/slic3r/GUI/BackgroundSlicingProcess.cpp +++ b/src/slic3r/GUI/BackgroundSlicingProcess.cpp @@ -81,14 +81,14 @@ void BackgroundSlicingProcess::process_fff() // Perform the final post-processing of the export path by applying the print statistics over the file name. std::string export_path = m_fff_print->print_statistics().finalize_output_path(m_export_path); if (copy_file(m_temp_output_path, export_path) != 0) - throw std::runtime_error("Copying of the temporary G-code to the output G-code failed"); - m_print->set_status(95, _(L("Running post-processing scripts")).ToUTF8().data()); + throw std::runtime_error(_utf8(L("Copying of the temporary G-code to the output G-code failed"))); + m_print->set_status(95, _utf8(L("Running post-processing scripts"))); run_post_process_scripts(export_path, m_fff_print->config()); - m_print->set_status(100, (boost::format(_(L("G-code file exported to %1%")).ToUTF8().data()) % export_path).str()); + m_print->set_status(100, (boost::format(_utf8(L("G-code file exported to %1%"))) % export_path).str()); } else if (! m_upload_job.empty()) { prepare_upload(); } else { - m_print->set_status(100, _(L("Slicing complete")).ToUTF8().data()); + m_print->set_status(100, _utf8(L("Slicing complete"))); } this->set_step_done(bspsGCodeFinalize); } @@ -102,11 +102,11 @@ void BackgroundSlicingProcess::process_sla() if (! m_export_path.empty()) { const std::string export_path = m_sla_print->print_statistics().finalize_output_path(m_export_path); m_sla_print->export_raster(export_path); - m_print->set_status(100, (boost::format(_(L("Masked SLA file exported to %1%")).ToUTF8().data()) % export_path).str()); + m_print->set_status(100, (boost::format(_utf8(L("Masked SLA file exported to %1%"))) % export_path).str()); } else if (! m_upload_job.empty()) { prepare_upload(); } else { - m_print->set_status(100, _(L("Slicing complete")).ToUTF8().data()); + m_print->set_status(100, _utf8(L("Slicing complete"))); } this->set_step_done(bspsGCodeFinalize); } @@ -395,9 +395,9 @@ void BackgroundSlicingProcess::prepare_upload() / boost::filesystem::unique_path("." SLIC3R_APP_KEY ".upload.%%%%-%%%%-%%%%-%%%%"); if (m_print == m_fff_print) { - m_print->set_status(95, _(L("Running post-processing scripts")).ToUTF8().data()); + m_print->set_status(95, _utf8(L("Running post-processing scripts"))); if (copy_file(m_temp_output_path, source_path.string()) != 0) { - throw std::runtime_error(_(L("Copying of the temporary G-code to the output G-code failed"))); + throw std::runtime_error(_utf8(L("Copying of the temporary G-code to the output G-code failed"))); } run_post_process_scripts(source_path.string(), m_fff_print->config()); m_upload_job.upload_data.upload_path = m_fff_print->print_statistics().finalize_output_path(m_upload_job.upload_data.upload_path.string()); @@ -406,7 +406,7 @@ void BackgroundSlicingProcess::prepare_upload() m_sla_print->export_raster(source_path.string(), m_upload_job.upload_data.upload_path.string()); } - m_print->set_status(100, (boost::format(_(L("Scheduling upload to `%1%`. See Window -> Print Host Upload Queue")).ToUTF8().data()) % m_upload_job.printhost->get_host()).str()); + m_print->set_status(100, (boost::format(_utf8(L("Scheduling upload to `%1%`. See Window -> Print Host Upload Queue"))) % m_upload_job.printhost->get_host()).str()); m_upload_job.upload_data.source_path = std::move(source_path); From 3c4fa8859cd29b7ec4507533a4de134e9a2dff29 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Thu, 9 May 2019 20:25:24 +0200 Subject: [PATCH 94/94] Unified side text for degrees. --- src/libslic3r/PrintConfig.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 4b45fa26f2..a13a70c94c 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2594,7 +2594,7 @@ void PrintConfigDef::init_sla_params() def->category = L("Pad"); def->tooltip = L("The slope of the pad wall relative to the bed plane. " "90 degrees means straight walls."); - def->sidetext = L("degrees"); + def->sidetext = L("°"); def->min = 45; def->max = 90; def->mode = comAdvanced;