From cd3be74e3b3336bb46bbec85f6898813181caa79 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Mon, 23 Apr 2018 15:03:38 +0200 Subject: [PATCH 01/15] Workaround for 3D view and GUI buttons not in synch when object's size is almost identical to print volume's size --- xs/src/libslic3r/BoundingBox.hpp | 25 +++++++++++++++++++++++++ xs/src/libslic3r/Model.cpp | 4 ++-- xs/src/libslic3r/Print.cpp | 2 +- xs/src/slic3r/GUI/3DScene.cpp | 2 +- 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/xs/src/libslic3r/BoundingBox.hpp b/xs/src/libslic3r/BoundingBox.hpp index 92a2bd451..a96fd1a30 100644 --- a/xs/src/libslic3r/BoundingBox.hpp +++ b/xs/src/libslic3r/BoundingBox.hpp @@ -147,6 +147,31 @@ public: BoundingBoxf3() : BoundingBox3Base() {}; BoundingBoxf3(const Pointf3 &pmin, const Pointf3 &pmax) : BoundingBox3Base(pmin, pmax) {}; BoundingBoxf3(const std::vector &points) : BoundingBox3Base(points) {}; + + // check if the given point is contained inside this bounding box + // all quantities are compared after being quantized to try to reduce instability due to float imprecision + bool contains_quantized(const Pointf3& point) const { + struct Helper + { + static coordf_t quantize(coordf_t value) + { + static const coordf_t INV_EPSILON = 1.0 / EPSILON; + return round(value * INV_EPSILON + 0.5) * EPSILON; + } + }; + + coordf_t x = Helper::quantize(point.x); + coordf_t y = Helper::quantize(point.y); + coordf_t z = Helper::quantize(point.z); + + return (Helper::quantize(min.x) <= x) && (x <= Helper::quantize(max.x)) + && (Helper::quantize(min.y) <= y) && (y <= Helper::quantize(max.y)) + && (Helper::quantize(min.z) <= z) && (z <= Helper::quantize(max.z)); + } + + bool contains_quantized(const BoundingBoxf3& other) const { + return contains_quantized(other.min) && contains_quantized(other.max); + } }; template diff --git a/xs/src/libslic3r/Model.cpp b/xs/src/libslic3r/Model.cpp index aaea863e8..25e207304 100644 --- a/xs/src/libslic3r/Model.cpp +++ b/xs/src/libslic3r/Model.cpp @@ -463,7 +463,7 @@ bool Model::fits_print_volume(const DynamicPrintConfig* config) const BoundingBoxf3 print_volume(Pointf3(unscale(bed_box_2D.min.x), unscale(bed_box_2D.min.y), 0.0), Pointf3(unscale(bed_box_2D.max.x), unscale(bed_box_2D.max.y), config->opt_float("max_print_height"))); // Allow the objects to protrude below the print bed print_volume.min.z = -1e10; - return print_volume.contains(transformed_bounding_box()); + return print_volume.contains_quantized(transformed_bounding_box()); } bool Model::fits_print_volume(const FullPrintConfig &config) const @@ -474,7 +474,7 @@ bool Model::fits_print_volume(const FullPrintConfig &config) const BoundingBoxf3 print_volume(Pointf3(unscale(bed_box_2D.min.x), unscale(bed_box_2D.min.y), 0.0), Pointf3(unscale(bed_box_2D.max.x), unscale(bed_box_2D.max.y), config.max_print_height)); // Allow the objects to protrude below the print bed print_volume.min.z = -1e10; - return print_volume.contains(transformed_bounding_box()); + return print_volume.contains_quantized(transformed_bounding_box()); } unsigned int Model::get_auto_extruder_id() diff --git a/xs/src/libslic3r/Print.cpp b/xs/src/libslic3r/Print.cpp index e692b1e9e..9de5c0379 100644 --- a/xs/src/libslic3r/Print.cpp +++ b/xs/src/libslic3r/Print.cpp @@ -522,7 +522,7 @@ std::string Print::validate() const // Allow the objects to protrude below the print bed, only the part of the object above the print bed will be sliced. print_volume.min.z = -1e10; for (PrintObject *po : this->objects) { - if (! print_volume.contains(po->model_object()->tight_bounding_box(false))) + if (!print_volume.contains_quantized(po->model_object()->tight_bounding_box(false))) return "Some objects are outside of the print volume."; } diff --git a/xs/src/slic3r/GUI/3DScene.cpp b/xs/src/slic3r/GUI/3DScene.cpp index 7f5e632bb..7d4e4d68c 100644 --- a/xs/src/slic3r/GUI/3DScene.cpp +++ b/xs/src/slic3r/GUI/3DScene.cpp @@ -665,7 +665,7 @@ void GLVolumeCollection::update_outside_state(const DynamicPrintConfig* config, continue; } - volume->is_outside = !print_volume.contains(volume->transformed_bounding_box()); + volume->is_outside = !print_volume.contains_quantized(volume->transformed_bounding_box()); } } From 71d9500b2e7fe37ee4de8ae6d52484285ddfc7a8 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Tue, 24 Apr 2018 09:00:33 +0200 Subject: [PATCH 02/15] More robust fix for 3D view and GUI buttons not in synch when object's size is almost identical to print volume's size --- lib/Slic3r/GUI/3DScene.pm | 2 +- lib/Slic3r/GUI/Plater.pm | 2 +- lib/Slic3r/GUI/Plater/3D.pm | 5 +++-- xs/src/libslic3r/BoundingBox.hpp | 25 ------------------------- xs/src/libslic3r/Model.cpp | 30 ------------------------------ xs/src/libslic3r/Model.hpp | 4 ---- xs/src/libslic3r/Print.cpp | 2 +- xs/src/slic3r/GUI/3DScene.cpp | 25 ++++++++++++++++++------- xs/src/slic3r/GUI/3DScene.hpp | 4 +++- xs/xsp/GUI_3DScene.xsp | 7 ++++++- xs/xsp/Model.xsp | 3 --- 11 files changed, 33 insertions(+), 76 deletions(-) diff --git a/lib/Slic3r/GUI/3DScene.pm b/lib/Slic3r/GUI/3DScene.pm index ff6d73399..80fa337c4 100644 --- a/lib/Slic3r/GUI/3DScene.pm +++ b/lib/Slic3r/GUI/3DScene.pm @@ -1396,7 +1396,7 @@ sub Render { if ($self->enable_picking) { $self->mark_volumes_for_layer_height; $self->volumes->set_print_box($self->bed_bounding_box->x_min, $self->bed_bounding_box->y_min, 0.0, $self->bed_bounding_box->x_max, $self->bed_bounding_box->y_max, $self->{config}->get('max_print_height')); - $self->volumes->update_outside_state($self->{config}, 0); + $self->volumes->check_outside_state($self->{config}); # do not cull backfaces to show broken geometry, if any glDisable(GL_CULL_FACE); } diff --git a/lib/Slic3r/GUI/Plater.pm b/lib/Slic3r/GUI/Plater.pm index ce78eab8e..f9ce75eff 100644 --- a/lib/Slic3r/GUI/Plater.pm +++ b/lib/Slic3r/GUI/Plater.pm @@ -1921,7 +1921,7 @@ sub object_list_changed { } my $export_in_progress = $self->{export_gcode_output_file} || $self->{send_gcode_file}; - my $model_fits = $self->{model}->fits_print_volume($self->{config}); + my $model_fits = $self->{canvas3D} ? $self->{canvas3D}->volumes->check_outside_state($self->{config}) : 1; my $method = ($have_objects && ! $export_in_progress && $model_fits) ? 'Enable' : 'Disable'; $self->{"btn_$_"}->$method for grep $self->{"btn_$_"}, qw(reslice export_gcode print send_gcode); diff --git a/lib/Slic3r/GUI/Plater/3D.pm b/lib/Slic3r/GUI/Plater/3D.pm index dce60e2c4..54b916773 100644 --- a/lib/Slic3r/GUI/Plater/3D.pm +++ b/lib/Slic3r/GUI/Plater/3D.pm @@ -222,13 +222,14 @@ sub reload_scene { # checks for geometry outside the print volume to render it accordingly if (scalar @{$self->volumes} > 0) { - if (!$self->{model}->fits_print_volume($self->{config})) { + my $contained = $self->volumes->check_outside_state($self->{config}); + if (!$contained) { $self->set_warning_enabled(1); Slic3r::GUI::_3DScene::generate_warning_texture(L("Detected object outside print volume")); $self->on_enable_action_buttons->(0) if ($self->on_enable_action_buttons); } else { $self->set_warning_enabled(0); - $self->volumes->update_outside_state($self->{config}, 1); + $self->volumes->reset_outside_state(); Slic3r::GUI::_3DScene::reset_warning_texture(); $self->on_enable_action_buttons->(1) if ($self->on_enable_action_buttons); } diff --git a/xs/src/libslic3r/BoundingBox.hpp b/xs/src/libslic3r/BoundingBox.hpp index a96fd1a30..92a2bd451 100644 --- a/xs/src/libslic3r/BoundingBox.hpp +++ b/xs/src/libslic3r/BoundingBox.hpp @@ -147,31 +147,6 @@ public: BoundingBoxf3() : BoundingBox3Base() {}; BoundingBoxf3(const Pointf3 &pmin, const Pointf3 &pmax) : BoundingBox3Base(pmin, pmax) {}; BoundingBoxf3(const std::vector &points) : BoundingBox3Base(points) {}; - - // check if the given point is contained inside this bounding box - // all quantities are compared after being quantized to try to reduce instability due to float imprecision - bool contains_quantized(const Pointf3& point) const { - struct Helper - { - static coordf_t quantize(coordf_t value) - { - static const coordf_t INV_EPSILON = 1.0 / EPSILON; - return round(value * INV_EPSILON + 0.5) * EPSILON; - } - }; - - coordf_t x = Helper::quantize(point.x); - coordf_t y = Helper::quantize(point.y); - coordf_t z = Helper::quantize(point.z); - - return (Helper::quantize(min.x) <= x) && (x <= Helper::quantize(max.x)) - && (Helper::quantize(min.y) <= y) && (y <= Helper::quantize(max.y)) - && (Helper::quantize(min.z) <= z) && (z <= Helper::quantize(max.z)); - } - - bool contains_quantized(const BoundingBoxf3& other) const { - return contains_quantized(other.min) && contains_quantized(other.max); - } }; template diff --git a/xs/src/libslic3r/Model.cpp b/xs/src/libslic3r/Model.cpp index 25e207304..9c9b56659 100644 --- a/xs/src/libslic3r/Model.cpp +++ b/xs/src/libslic3r/Model.cpp @@ -447,36 +447,6 @@ void Model::adjust_min_z() } } -bool Model::fits_print_volume(const DynamicPrintConfig* config) const -{ - if (config == nullptr) - return false; - - if (objects.empty()) - return true; - - const ConfigOptionPoints* opt = dynamic_cast(config->option("bed_shape")); - if (opt == nullptr) - return false; - - BoundingBox bed_box_2D = get_extents(Polygon::new_scale(opt->values)); - BoundingBoxf3 print_volume(Pointf3(unscale(bed_box_2D.min.x), unscale(bed_box_2D.min.y), 0.0), Pointf3(unscale(bed_box_2D.max.x), unscale(bed_box_2D.max.y), config->opt_float("max_print_height"))); - // Allow the objects to protrude below the print bed - print_volume.min.z = -1e10; - return print_volume.contains_quantized(transformed_bounding_box()); -} - -bool Model::fits_print_volume(const FullPrintConfig &config) const -{ - if (objects.empty()) - return true; - BoundingBox bed_box_2D = get_extents(Polygon::new_scale(config.bed_shape.values)); - BoundingBoxf3 print_volume(Pointf3(unscale(bed_box_2D.min.x), unscale(bed_box_2D.min.y), 0.0), Pointf3(unscale(bed_box_2D.max.x), unscale(bed_box_2D.max.y), config.max_print_height)); - // Allow the objects to protrude below the print bed - print_volume.min.z = -1e10; - return print_volume.contains_quantized(transformed_bounding_box()); -} - unsigned int Model::get_auto_extruder_id() { unsigned int id = s_auto_extruder_id; diff --git a/xs/src/libslic3r/Model.hpp b/xs/src/libslic3r/Model.hpp index 0c0ffe776..0baea979c 100644 --- a/xs/src/libslic3r/Model.hpp +++ b/xs/src/libslic3r/Model.hpp @@ -285,10 +285,6 @@ public: // Ensures that the min z of the model is not negative void adjust_min_z(); - // Returs true if this model is contained into the print volume defined inside the given config - bool fits_print_volume(const DynamicPrintConfig* config) const; - bool fits_print_volume(const FullPrintConfig &config) const; - void print_info() const { for (const ModelObject *o : this->objects) o->print_info(); } static unsigned int get_auto_extruder_id(); diff --git a/xs/src/libslic3r/Print.cpp b/xs/src/libslic3r/Print.cpp index 9de5c0379..585977ba7 100644 --- a/xs/src/libslic3r/Print.cpp +++ b/xs/src/libslic3r/Print.cpp @@ -522,7 +522,7 @@ std::string Print::validate() const // Allow the objects to protrude below the print bed, only the part of the object above the print bed will be sliced. print_volume.min.z = -1e10; for (PrintObject *po : this->objects) { - if (!print_volume.contains_quantized(po->model_object()->tight_bounding_box(false))) + if (!print_volume.contains(po->model_object()->tight_bounding_box(false))) return "Some objects are outside of the print volume."; } diff --git a/xs/src/slic3r/GUI/3DScene.cpp b/xs/src/slic3r/GUI/3DScene.cpp index 7d4e4d68c..b9ac1966e 100644 --- a/xs/src/slic3r/GUI/3DScene.cpp +++ b/xs/src/slic3r/GUI/3DScene.cpp @@ -643,29 +643,40 @@ void GLVolumeCollection::render_legacy() const glDisable(GL_BLEND); } -void GLVolumeCollection::update_outside_state(const DynamicPrintConfig* config, bool all_inside) +bool GLVolumeCollection::check_outside_state(const DynamicPrintConfig* config) { if (config == nullptr) - return; + return false; const ConfigOptionPoints* opt = dynamic_cast(config->option("bed_shape")); if (opt == nullptr) - return; + return false; BoundingBox bed_box_2D = get_extents(Polygon::new_scale(opt->values)); BoundingBoxf3 print_volume(Pointf3(unscale(bed_box_2D.min.x), unscale(bed_box_2D.min.y), 0.0), Pointf3(unscale(bed_box_2D.max.x), unscale(bed_box_2D.max.y), config->opt_float("max_print_height"))); // Allow the objects to protrude below the print bed print_volume.min.z = -1e10; + bool contained = true; for (GLVolume* volume : this->volumes) { - if (all_inside) + if (volume != nullptr) { - volume->is_outside = false; - continue; + bool state = print_volume.contains(volume->transformed_bounding_box()); + contained &= state; + volume->is_outside = !state; } + } - volume->is_outside = !print_volume.contains_quantized(volume->transformed_bounding_box()); + return contained; +} + +void GLVolumeCollection::reset_outside_state() +{ + for (GLVolume* volume : this->volumes) + { + if (volume != nullptr) + volume->is_outside = false; } } diff --git a/xs/src/slic3r/GUI/3DScene.hpp b/xs/src/slic3r/GUI/3DScene.hpp index 8f03e4774..fb5d9f14b 100644 --- a/xs/src/slic3r/GUI/3DScene.hpp +++ b/xs/src/slic3r/GUI/3DScene.hpp @@ -422,7 +422,9 @@ public: print_box_max[0] = max_x; print_box_max[1] = max_y; print_box_max[2] = max_z; } - void update_outside_state(const DynamicPrintConfig* config, bool all_inside); + bool check_outside_state(const DynamicPrintConfig* config); + void reset_outside_state(); + void update_colors_by_extruder(const DynamicPrintConfig* config); // Returns a vector containing the sorted list of all the print_zs of the volumes contained in this collection diff --git a/xs/xsp/GUI_3DScene.xsp b/xs/xsp/GUI_3DScene.xsp index 86d0aeba2..ee5a82ba1 100644 --- a/xs/xsp/GUI_3DScene.xsp +++ b/xs/xsp/GUI_3DScene.xsp @@ -104,7 +104,12 @@ void release_geometry(); void set_print_box(float min_x, float min_y, float min_z, float max_x, float max_y, float max_z); - void update_outside_state(DynamicPrintConfig* config, bool all_inside); + bool check_outside_state(DynamicPrintConfig* config) + %code%{ + RETVAL = THIS->check_outside_state(config); + %}; + + void reset_outside_state(); void update_colors_by_extruder(DynamicPrintConfig* config); bool move_volume_up(int idx) diff --git a/xs/xsp/Model.xsp b/xs/xsp/Model.xsp index 702839537..02017839a 100644 --- a/xs/xsp/Model.xsp +++ b/xs/xsp/Model.xsp @@ -99,9 +99,6 @@ void print_info() const; - bool fits_print_volume(DynamicPrintConfig* config) const - %code%{ RETVAL = THIS->fits_print_volume(config); %}; - bool store_stl(char *path, bool binary) %code%{ TriangleMesh mesh = THIS->mesh(); RETVAL = Slic3r::store_stl(path, &mesh, binary); %}; bool store_amf(char *path, Print* print, bool export_print_config) From 86155ae4c00e2146ca19f42e6eca240d3d8b64fa Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Wed, 9 May 2018 10:28:26 +0200 Subject: [PATCH 03/15] Fixed conflict in previous merge --- xs/src/libslic3r/Model.cpp | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/xs/src/libslic3r/Model.cpp b/xs/src/libslic3r/Model.cpp index 755941144..8ce23b1e5 100644 --- a/xs/src/libslic3r/Model.cpp +++ b/xs/src/libslic3r/Model.cpp @@ -451,36 +451,6 @@ void Model::adjust_min_z() } } -bool Model::fits_print_volume(const DynamicPrintConfig* config) const -{ - if (config == nullptr) - return false; - - if (objects.empty()) - return true; - - const ConfigOptionPoints* opt = dynamic_cast(config->option("bed_shape")); - if (opt == nullptr) - return false; - - BoundingBox bed_box_2D = get_extents(Polygon::new_scale(opt->values)); - BoundingBoxf3 print_volume(Pointf3(unscale(bed_box_2D.min.x), unscale(bed_box_2D.min.y), 0.0), Pointf3(unscale(bed_box_2D.max.x), unscale(bed_box_2D.max.y), config->opt_float("max_print_height"))); - // Allow the objects to protrude below the print bed - print_volume.min.z = -1e10; - return print_volume.contains(transformed_bounding_box()); -} - -bool Model::fits_print_volume(const FullPrintConfig &config) const -{ - if (objects.empty()) - return true; - BoundingBox bed_box_2D = get_extents(Polygon::new_scale(config.bed_shape.values)); - BoundingBoxf3 print_volume(Pointf3(unscale(bed_box_2D.min.x), unscale(bed_box_2D.min.y), 0.0), Pointf3(unscale(bed_box_2D.max.x), unscale(bed_box_2D.max.y), config.max_print_height)); - // Allow the objects to protrude below the print bed - print_volume.min.z = -1e10; - return print_volume.contains(transformed_bounding_box()); -} - unsigned int Model::get_auto_extruder_id(unsigned int max_extruders) { unsigned int id = s_auto_extruder_id; From de0b8226e1eaf26a529b65af87598daf50ca3350 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Thu, 17 May 2018 16:02:31 +0200 Subject: [PATCH 04/15] Tweaks to logic for sliders update in 3D Preview --- lib/Slic3r/GUI/Plater/3DPreview.pm | 64 +++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 19 deletions(-) diff --git a/lib/Slic3r/GUI/Plater/3DPreview.pm b/lib/Slic3r/GUI/Plater/3DPreview.pm index 6b448080d..fec463682 100644 --- a/lib/Slic3r/GUI/Plater/3DPreview.pm +++ b/lib/Slic3r/GUI/Plater/3DPreview.pm @@ -328,22 +328,12 @@ sub load_print { } if ($n_layers == 0) { - $self->enabled(0); - $self->set_z_range(0,0); - $self->slider_low->Hide; - $self->slider_high->Hide; - $self->{z_label_low}->SetLabel(""); - $self->{z_label_high}->SetLabel(""); - $self->{z_label_low_idx}->SetLabel(""); - $self->{z_label_high_idx}->SetLabel(""); + $self->reset_sliders; $self->canvas->reset_legend_texture(); $self->canvas->Refresh; # clears canvas return; } - # used to set the sliders to the extremes of the current zs range - $self->{force_sliders_full_range} = 0; - if ($self->{preferred_color_mode} eq 'tool_or_feature') { # It is left to Slic3r to decide whether the print shall be colored by the tool or by the feature. # Color by feature if it is a single extruder print. @@ -369,6 +359,9 @@ sub load_print { } if ($self->IsShown) { + # used to set the sliders to the extremes of the current zs range + $self->{force_sliders_full_range} = 0; + if ($self->gcode_preview_data->empty) { # load skirt and brim $self->canvas->load_print_toolpaths($self->print, \@colors); @@ -389,13 +382,30 @@ sub load_print { # recalculates zs and update sliders accordingly $self->{layers_z} = $self->canvas->get_current_print_zs(); $n_layers = scalar(@{$self->{layers_z}}); - } + if ($n_layers == 0) { + # all layers filtered out + $self->reset_sliders; + $self->canvas->Refresh; # clears canvas + } + } - $self->update_sliders($n_layers); + $self->update_sliders($n_layers) if ($n_layers > 0); $self->_loaded(1); } } +sub reset_sliders { + my ($self) = @_; + $self->enabled(0); + $self->set_z_range(0,0); + $self->slider_low->Hide; + $self->slider_high->Hide; + $self->{z_label_low}->SetLabel(""); + $self->{z_label_high}->SetLabel(""); + $self->{z_label_low_idx}->SetLabel(""); + $self->{z_label_high_idx}->SetLabel(""); +} + sub update_sliders { my ($self, $n_layers) = @_; @@ -410,18 +420,32 @@ sub update_sliders $z_idx_low = 0; $z_idx_high = $n_layers - 1; } elsif ($z_idx_high < $n_layers && ($self->single_layer || $z_idx_high != 0)) { - # use $z_idx - } else { + # search new indices for nearest z (size of $self->{layers_z} may change in dependence of what is shown) + if (defined($self->{z_low})) { + for (my $i = scalar(@{$self->{layers_z}}) - 1; $i >= 0; $i -= 1) { + if ($self->{layers_z}[$i] <= $self->{z_low}) { + $z_idx_low = $i; + last; + } + } + } + if (defined($self->{z_high})) { + for (my $i = scalar(@{$self->{layers_z}}) - 1; $i >= 0; $i -= 1) { + if ($self->{layers_z}[$i] <= $self->{z_high}) { + $z_idx_high = $i; + last; + } + } + } + } elsif ($z_idx_high >= $n_layers) { # Out of range. Disable 'single layer' view. $self->single_layer(0); $self->{checkbox_singlelayer}->SetValue(0); $z_idx_low = 0; $z_idx_high = $n_layers - 1; - } - if ($self->single_layer) { - $z_idx_low = $z_idx_high; - } elsif ($z_idx_low > $z_idx_high) { + } else { $z_idx_low = 0; + $z_idx_high = $n_layers - 1; } $self->slider_low->SetValue($z_idx_low); @@ -437,6 +461,8 @@ sub set_z_range my ($self, $z_low, $z_high) = @_; return if !$self->enabled; + $self->{z_low} = $z_low; + $self->{z_high} = $z_high; $self->{z_label_low}->SetLabel(sprintf '%.2f', $z_low); $self->{z_label_high}->SetLabel(sprintf '%.2f', $z_high); my $z_idx_low = 1 + $self->slider_low->GetValue; From 0584990b65ccc9304c3511f30f3ceb44331f2f91 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Fri, 18 May 2018 10:14:47 +0200 Subject: [PATCH 05/15] Fixed z layers indices under 3D preview sliders --- lib/Slic3r/GUI/3DScene.pm | 6 ++---- lib/Slic3r/GUI/Plater/3DPreview.pm | 21 ++++++++++++++++----- xs/src/slic3r/GUI/3DScene.cpp | 4 ++-- xs/src/slic3r/GUI/3DScene.hpp | 2 +- xs/xsp/GUI_3DScene.xsp | 5 ++--- 5 files changed, 23 insertions(+), 15 deletions(-) diff --git a/lib/Slic3r/GUI/3DScene.pm b/lib/Slic3r/GUI/3DScene.pm index 3bfb6f759..33c0e8d37 100644 --- a/lib/Slic3r/GUI/3DScene.pm +++ b/lib/Slic3r/GUI/3DScene.pm @@ -2192,10 +2192,8 @@ sub reset_legend_texture { } sub get_current_print_zs { - my ($self) = @_; - - my $count = $self->volumes->get_current_print_zs(); - return $count; + my ($self, $active_only) = @_; + return $self->volumes->get_current_print_zs($active_only); } 1; diff --git a/lib/Slic3r/GUI/Plater/3DPreview.pm b/lib/Slic3r/GUI/Plater/3DPreview.pm index fec463682..de6c6e818 100644 --- a/lib/Slic3r/GUI/Plater/3DPreview.pm +++ b/lib/Slic3r/GUI/Plater/3DPreview.pm @@ -380,7 +380,7 @@ sub load_print { $self->show_hide_ui_elements('full'); # recalculates zs and update sliders accordingly - $self->{layers_z} = $self->canvas->get_current_print_zs(); + $self->{layers_z} = $self->canvas->get_current_print_zs(1); $n_layers = scalar(@{$self->{layers_z}}); if ($n_layers == 0) { # all layers filtered out @@ -465,10 +465,21 @@ sub set_z_range $self->{z_high} = $z_high; $self->{z_label_low}->SetLabel(sprintf '%.2f', $z_low); $self->{z_label_high}->SetLabel(sprintf '%.2f', $z_high); - my $z_idx_low = 1 + $self->slider_low->GetValue; - my $z_idx_high = 1 + $self->slider_high->GetValue; - $self->{z_label_low_idx}->SetLabel(sprintf '%d', $z_idx_low); - $self->{z_label_high_idx}->SetLabel(sprintf '%d', $z_idx_high); + + my $layers_z = $self->canvas->get_current_print_zs(0); + for (my $i = 0; $i < scalar(@{$layers_z}); $i += 1) { + if (($z_low - 1e-6 < @{$layers_z}[$i]) && (@{$layers_z}[$i] < $z_low + 1e-6)) { + $self->{z_label_low_idx}->SetLabel(sprintf '%d', $i + 1); + last; + } + } + for (my $i = 0; $i < scalar(@{$layers_z}); $i += 1) { + if (($z_high - 1e-6 < @{$layers_z}[$i]) && (@{$layers_z}[$i] < $z_high + 1e-6)) { + $self->{z_label_high_idx}->SetLabel(sprintf '%d', $i + 1); + last; + } + } + $self->canvas->set_toolpaths_range($z_low - 1e-6, $z_high + 1e-6); $self->canvas->Refresh if $self->IsShown; } diff --git a/xs/src/slic3r/GUI/3DScene.cpp b/xs/src/slic3r/GUI/3DScene.cpp index 0ead76b88..db1737e14 100644 --- a/xs/src/slic3r/GUI/3DScene.cpp +++ b/xs/src/slic3r/GUI/3DScene.cpp @@ -760,13 +760,13 @@ void GLVolumeCollection::update_colors_by_extruder(const DynamicPrintConfig* con } } -std::vector GLVolumeCollection::get_current_print_zs() const +std::vector GLVolumeCollection::get_current_print_zs(bool active_only) const { // Collect layer top positions of all volumes. std::vector print_zs; for (GLVolume *vol : this->volumes) { - if (vol->is_active) + if (!active_only || vol->is_active) append(print_zs, vol->print_zs); } std::sort(print_zs.begin(), print_zs.end()); diff --git a/xs/src/slic3r/GUI/3DScene.hpp b/xs/src/slic3r/GUI/3DScene.hpp index fb5d9f14b..a417f5f9d 100644 --- a/xs/src/slic3r/GUI/3DScene.hpp +++ b/xs/src/slic3r/GUI/3DScene.hpp @@ -428,7 +428,7 @@ public: void update_colors_by_extruder(const DynamicPrintConfig* config); // Returns a vector containing the sorted list of all the print_zs of the volumes contained in this collection - std::vector get_current_print_zs() const; + std::vector get_current_print_zs(bool active_only) const; private: GLVolumeCollection(const GLVolumeCollection &other); diff --git a/xs/xsp/GUI_3DScene.xsp b/xs/xsp/GUI_3DScene.xsp index ee5a82ba1..6a907291e 100644 --- a/xs/xsp/GUI_3DScene.xsp +++ b/xs/xsp/GUI_3DScene.xsp @@ -92,10 +92,9 @@ int count() %code{% RETVAL = THIS->volumes.size(); %}; - std::vector get_current_print_zs() - %code{% RETVAL = THIS->get_current_print_zs(); %}; + std::vector get_current_print_zs(bool active_only) + %code{% RETVAL = THIS->get_current_print_zs(active_only); %}; - void set_range(double low, double high); void render_VBOs() const; From 99293011e674caa62e872a4ad2c1c9db8dbed3ad Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Fri, 18 May 2018 12:19:54 +0200 Subject: [PATCH 06/15] Corrected brim generation (width), enabling continuity with skirt --- xs/src/libslic3r/Print.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/xs/src/libslic3r/Print.cpp b/xs/src/libslic3r/Print.cpp index 80f68c51b..756fe08f9 100644 --- a/xs/src/libslic3r/Print.cpp +++ b/xs/src/libslic3r/Print.cpp @@ -923,13 +923,15 @@ void Print::_make_skirt() // Initial offset of the brim inner edge from the object (possible with a support & raft). // The skirt will touch the brim if the brim is extruded. - coord_t distance = scale_(std::max(this->config.skirt_distance.value, this->config.brim_width.value)); + Flow brim_flow = this->brim_flow(); + double actual_brim_width = brim_flow.spacing() * floor(this->config.brim_width.value / brim_flow.spacing()); + coord_t distance = scale_(std::max(this->config.skirt_distance.value, actual_brim_width)); // Draw outlines from outside to inside. // Loop while we have less skirts than required or any extruder hasn't reached the min length if any. std::vector extruded_length(extruders.size(), 0.); for (int i = n_skirts, extruder_idx = 0; i > 0; -- i) { // Offset the skirt outside. - distance += coord_t(scale_(spacing)); + distance += coord_t(scale_(spacing/2.)); // Generate the skirt centerline. Polygon loop; { @@ -989,7 +991,7 @@ void Print::_make_brim() } } Polygons loops; - size_t num_loops = size_t(floor(this->config.brim_width.value / flow.width)); + size_t num_loops = size_t(floor(this->config.brim_width.value / flow.spacing())); for (size_t i = 0; i < num_loops; ++ i) { islands = offset(islands, float(flow.scaled_spacing()), jtSquare); for (Polygon &poly : islands) { From 3291cbfdad7f1172016147befb3ec4c2b89d5ffb Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Mon, 21 May 2018 11:19:03 +0200 Subject: [PATCH 07/15] Fix of #889 --- xs/src/slic3r/GUI/3DScene.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/xs/src/slic3r/GUI/3DScene.cpp b/xs/src/slic3r/GUI/3DScene.cpp index db1737e14..cb2e08e1f 100644 --- a/xs/src/slic3r/GUI/3DScene.cpp +++ b/xs/src/slic3r/GUI/3DScene.cpp @@ -2457,7 +2457,7 @@ bool _3DScene::_travel_paths_by_type(const GCodePreviewData& preview_data, GLVol TypesList::iterator type = std::find(types.begin(), types.end(), Type(polyline.type)); if (type != types.end()) { - type->volume->print_zs.push_back(unscale(polyline.polyline.bounding_box().max.z)); + type->volume->print_zs.push_back(unscale(polyline.polyline.bounding_box().min.z)); type->volume->offsets.push_back(type->volume->indexed_vertex_array.quad_indices.size()); type->volume->offsets.push_back(type->volume->indexed_vertex_array.triangle_indices.size()); @@ -2523,7 +2523,7 @@ bool _3DScene::_travel_paths_by_feedrate(const GCodePreviewData& preview_data, G FeedratesList::iterator feedrate = std::find(feedrates.begin(), feedrates.end(), Feedrate(polyline.feedrate)); if (feedrate != feedrates.end()) { - feedrate->volume->print_zs.push_back(unscale(polyline.polyline.bounding_box().max.z)); + feedrate->volume->print_zs.push_back(unscale(polyline.polyline.bounding_box().min.z)); feedrate->volume->offsets.push_back(feedrate->volume->indexed_vertex_array.quad_indices.size()); feedrate->volume->offsets.push_back(feedrate->volume->indexed_vertex_array.triangle_indices.size()); @@ -2589,7 +2589,7 @@ bool _3DScene::_travel_paths_by_tool(const GCodePreviewData& preview_data, GLVol ToolsList::iterator tool = std::find(tools.begin(), tools.end(), Tool(polyline.extruder_id)); if (tool != tools.end()) { - tool->volume->print_zs.push_back(unscale(polyline.polyline.bounding_box().max.z)); + tool->volume->print_zs.push_back(unscale(polyline.polyline.bounding_box().min.z)); tool->volume->offsets.push_back(tool->volume->indexed_vertex_array.quad_indices.size()); tool->volume->offsets.push_back(tool->volume->indexed_vertex_array.triangle_indices.size()); @@ -2613,7 +2613,10 @@ void _3DScene::_load_gcode_retractions(const GCodePreviewData& preview_data, GLV { volumes.volumes.emplace_back(volume); - for (const GCodePreviewData::Retraction::Position& position : preview_data.retraction.positions) + GCodePreviewData::Retraction::PositionsList copy(preview_data.retraction.positions); + std::sort(copy.begin(), copy.end(), [](const GCodePreviewData::Retraction::Position& p1, const GCodePreviewData::Retraction::Position& p2){ return p1.position.z < p2.position.z; }); + + for (const GCodePreviewData::Retraction::Position& position : copy) { volume->print_zs.push_back(unscale(position.position.z)); volume->offsets.push_back(volume->indexed_vertex_array.quad_indices.size()); @@ -2641,7 +2644,10 @@ void _3DScene::_load_gcode_unretractions(const GCodePreviewData& preview_data, G { volumes.volumes.emplace_back(volume); - for (const GCodePreviewData::Retraction::Position& position : preview_data.unretraction.positions) + GCodePreviewData::Retraction::PositionsList copy(preview_data.unretraction.positions); + std::sort(copy.begin(), copy.end(), [](const GCodePreviewData::Retraction::Position& p1, const GCodePreviewData::Retraction::Position& p2){ return p1.position.z < p2.position.z; }); + + for (const GCodePreviewData::Retraction::Position& position : copy) { volume->print_zs.push_back(unscale(position.position.z)); volume->offsets.push_back(volume->indexed_vertex_array.quad_indices.size()); From e2f44a231e95f71f45f9aeb65636f0c703ff43e2 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Tue, 22 May 2018 10:50:38 +0200 Subject: [PATCH 08/15] A fix to use correct spacing with multiloop skirts --- xs/src/libslic3r/Print.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xs/src/libslic3r/Print.cpp b/xs/src/libslic3r/Print.cpp index 756fe08f9..24e523002 100644 --- a/xs/src/libslic3r/Print.cpp +++ b/xs/src/libslic3r/Print.cpp @@ -925,13 +925,13 @@ void Print::_make_skirt() // The skirt will touch the brim if the brim is extruded. Flow brim_flow = this->brim_flow(); double actual_brim_width = brim_flow.spacing() * floor(this->config.brim_width.value / brim_flow.spacing()); - coord_t distance = scale_(std::max(this->config.skirt_distance.value, actual_brim_width)); + coord_t distance = scale_(std::max(this->config.skirt_distance.value, actual_brim_width) - spacing/2.); // Draw outlines from outside to inside. // Loop while we have less skirts than required or any extruder hasn't reached the min length if any. std::vector extruded_length(extruders.size(), 0.); for (int i = n_skirts, extruder_idx = 0; i > 0; -- i) { // Offset the skirt outside. - distance += coord_t(scale_(spacing/2.)); + distance += coord_t(scale_(spacing)); // Generate the skirt centerline. Polygon loop; { From ca3ea125e285905965baa768284c2328c33a87a0 Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 22 May 2018 11:01:05 +0200 Subject: [PATCH 09/15] Partial french translation (#914) * partial french translation progress (45%) * partial french translation progress (60%) --- resources/localization/fr_FR/Slic3rPE_fr.po | 468 +++++++++++--------- 1 file changed, 251 insertions(+), 217 deletions(-) diff --git a/resources/localization/fr_FR/Slic3rPE_fr.po b/resources/localization/fr_FR/Slic3rPE_fr.po index ef5913297..09aa1f185 100644 --- a/resources/localization/fr_FR/Slic3rPE_fr.po +++ b/resources/localization/fr_FR/Slic3rPE_fr.po @@ -3,14 +3,14 @@ msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-28 13:53+0100\n" -"PO-Revision-Date: 2018-02-28 14:14+0100\n" -"Last-Translator: Oleksandra Iushchenko \n" +"PO-Revision-Date: 2018-05-22 09:23+0200\n" +"Last-Translator: Eric Seigne \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr_FR\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 1.8.11\n" "X-Poedit-Basepath: ..\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-SourceCharset: UTF-8\n" @@ -21,25 +21,25 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:39 msgid "Shape" -msgstr "" +msgstr "Forme" #: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:46 msgid "Rectangular" -msgstr "" +msgstr "Rectangulaire" #: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:50 #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1191 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:408 msgid "Size" -msgstr "" +msgstr "Taille" #: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:51 msgid "Size in X and Y of the rectangular plate." -msgstr "" +msgstr "Taille du plateau rectangulaire en X et Y" #: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:57 msgid "Origin" -msgstr "" +msgstr "Origine" #: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:58 msgid "" @@ -49,7 +49,7 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:62 msgid "Circular" -msgstr "" +msgstr "Circulaire" #: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:65 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:129 @@ -82,7 +82,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1737 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1747 msgid "mm" -msgstr "" +msgstr "mm" #: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:66 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:431 @@ -94,53 +94,60 @@ msgid "" "Diameter of the print bed. It is assumed that origin (0,0) is located in the " "center." msgstr "" +"Diamètre du lit d'impression. Il est convenu que l'origine (0,0) est au " +"centre." #: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:71 #: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:150 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:92 msgid "Custom" -msgstr "" +msgstr "Personnalisé" #: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:75 msgid "Load shape from STL..." -msgstr "" +msgstr "Charger la forme depuis un fichier STL..." #: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:120 msgid "Settings" -msgstr "" +msgstr "Paramètres" #: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:298 msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" msgstr "" +"Choisissez le fichier à importer pour la forme du lit (STL/OBJ/AMF/3MF/" +"PRUSA):" #: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:315 msgid "Error! " -msgstr "" +msgstr "Erreur !" #: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:324 msgid "The selected file contains no geometry." -msgstr "" +msgstr "Le fichier sélectionné ne contient aucune donnée géométrique." #: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:328 msgid "" "The selected file contains several disjoint areas. This is not supported." msgstr "" +"Le fichier sélectionné contient des aires disjointes. Ceci n'est pas pris en " +"charge." #: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.hpp:42 msgid "Bed Shape" -msgstr "" +msgstr "Forme du lit" #: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:224 msgid "Array of language names and identifiers should have the same size." msgstr "" +"Le tableau des langues et des identifiants devraient avoir la même taille." #: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:235 msgid "Select the language" -msgstr "" +msgstr "Choisissez la langue" #: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:235 msgid "Language" -msgstr "" +msgstr "Langue" #: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:300 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:170 @@ -149,29 +156,29 @@ msgstr "Défaut" #: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:325 msgid "Change Application Language" -msgstr "" +msgstr "Changer la langue de l'application" #: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:332 msgid "Application will be restarted" -msgstr "" +msgstr "L'application va devoir redémarrer" #: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:332 msgid "Attention!" -msgstr "" +msgstr "Attention !" #: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:339 msgid "&Localization" -msgstr "" +msgstr "&Localisation" #: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:488 #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:470 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1300 msgid "Error" -msgstr "" +msgstr "Erreur" #: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:493 msgid "Notice" -msgstr "" +msgstr "Information" #: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:498 msgid "GLUquadricObjPtr | Attempt to free unreferenced scalar" @@ -179,19 +186,19 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:500 msgid "Warning" -msgstr "" +msgstr "Attention" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:50 msgid "Save current " -msgstr "" +msgstr "Sauvegarder le document en cours" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:51 msgid "Delete this preset" -msgstr "" +msgstr "Supprimer cette préconfiguration" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:313 msgid "Layers and perimeters" -msgstr "" +msgstr "Calques et périmètres" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:314 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:777 @@ -213,7 +220,7 @@ msgstr "Couches solides" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:335 msgid "Quality (slower slicing)" -msgstr "" +msgstr "Qualité (tranchage plus lent)" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:342 #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:356 @@ -248,7 +255,7 @@ msgstr "Remplissage" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:352 msgid "Reducing printing time" -msgstr "" +msgstr "Réduire le temps d'impression" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:364 msgid "Skirt and brim" @@ -258,11 +265,11 @@ msgstr "Contour et débord" #: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:146 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:88 msgid "Skirt" -msgstr "" +msgstr "Contour (Skirt)" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:371 msgid "Brim" -msgstr "" +msgstr "Débord (Brim)" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:374 #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:375 @@ -293,11 +300,11 @@ msgstr "Support" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:380 msgid "Raft" -msgstr "" +msgstr "Support (Raft)" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:384 msgid "Options for support material and raft" -msgstr "" +msgstr "Options pour le matériel de support" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:398 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:118 @@ -315,27 +322,27 @@ msgstr "Vitesse" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:399 msgid "Speed for print moves" -msgstr "" +msgstr "Vitesse pour les déplacements d'impression" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:411 msgid "Speed for non-print moves" -msgstr "" +msgstr "Vitesse pour les déplacements hors impression" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:414 msgid "Modifiers" -msgstr "" +msgstr "Modificateurs" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:417 msgid "Acceleration control (advanced)" -msgstr "" +msgstr "Contrôle de l'accélération (avancé)" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:424 msgid "Autospeed (advanced)" -msgstr "" +msgstr "Vitesse automatique (avancé)" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:430 msgid "Multiple Extruders" -msgstr "" +msgstr "Extrudeurs multiples" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:431 #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:966 @@ -356,11 +363,11 @@ msgstr "" #: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:149 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:91 msgid "Wipe tower" -msgstr "" +msgstr "Tour de " #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:453 msgid "Extrusion width" -msgstr "" +msgstr "Largeur d'extrusion" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:463 msgid "Overlap" @@ -372,15 +379,15 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:469 msgid "Other" -msgstr "" +msgstr "Autre" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:476 msgid "Output options" -msgstr "" +msgstr "Option de sortie" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:477 msgid "Sequential printing" -msgstr "" +msgstr "Impression séquentielle" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:479 msgid "Extruder clearance (mm)" @@ -388,7 +395,7 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:488 msgid "Output file" -msgstr "" +msgstr "Fichier de destination" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:494 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1001 @@ -402,17 +409,17 @@ msgstr "Script de Post-processing" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1156 #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1157 msgid "Notes" -msgstr "" +msgstr "Notes" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:507 #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:867 msgid "Dependencies" -msgstr "" +msgstr "Dépendances" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:508 #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:868 msgid "Profile dependencies" -msgstr "" +msgstr "Dépendances du profil" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:509 #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:869 @@ -436,7 +443,7 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:540 msgid "Spiral Vase" -msgstr "" +msgstr "Vase en spirale" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:560 msgid "" @@ -482,7 +489,7 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:620 msgid "Support Generator" -msgstr "" +msgstr "Générateur de support" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:662 msgid "The " @@ -500,11 +507,11 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:787 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:368 msgid "Filament" -msgstr "" +msgstr "Filament" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:794 msgid "Temperature " -msgstr "" +msgstr "Température" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:795 #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1234 @@ -514,11 +521,11 @@ msgstr "Extrudeur" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:800 msgid "Bed" -msgstr "" +msgstr "Lit" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:805 msgid "Cooling" -msgstr "" +msgstr "Refroidissement" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:806 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:922 @@ -528,11 +535,11 @@ msgstr "Activé" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:817 msgid "Fan settings" -msgstr "" +msgstr "Paramètres du ventilateur" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:818 msgid "Fan speed" -msgstr "" +msgstr "Vitesse du ventilateur" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:826 msgid "Cooling thresholds" @@ -540,7 +547,7 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:832 msgid "Filament properties" -msgstr "" +msgstr "Propriétés du filament" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:836 msgid "Print speed override" @@ -549,7 +556,7 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:846 #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1119 msgid "Custom G-code" -msgstr "" +msgstr "G-Code personnalisé" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:847 #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1120 @@ -568,11 +575,11 @@ msgstr "G-Code de fin" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:937 #: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:11 msgid "General" -msgstr "" +msgstr "Général" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:938 msgid "Size and coordinates" -msgstr "" +msgstr "Taille et coordonnées" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:940 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:34 @@ -590,16 +597,16 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:967 msgid "Number of extruders of the printer." -msgstr "" +msgstr "Nombre d'extrudeurs de l'imprimante." #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:989 msgid "USB/Serial connection" -msgstr "" +msgstr "Connexion série/USB" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:990 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1193 msgid "Serial port" -msgstr "" +msgstr "Port série" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:995 msgid "Rescan serial ports" @@ -608,31 +615,31 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1004 #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1072 msgid "Test" -msgstr "" +msgstr "Test" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1017 msgid "Connection to printer works correctly." -msgstr "" +msgstr "La connexion avec l'imprimante est correcte" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1017 msgid "Success!" -msgstr "" +msgstr "Succès !" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1020 msgid "Connection failed." -msgstr "" +msgstr "Erreur de connexion." #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1032 msgid "OctoPrint upload" -msgstr "" +msgstr "Téléverser vers OctoPrint" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1035 msgid " Browse " -msgstr "" +msgstr "Parcourir" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1110 msgid "Firmware" -msgstr "" +msgstr "Firmware (micrologiciel)" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1132 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:48 @@ -685,7 +692,7 @@ msgstr "" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:150 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2125 msgid "Preview" -msgstr "" +msgstr "Prévisualisation" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1312 msgid "" @@ -696,19 +703,19 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1314 msgid "Firmware Retraction" -msgstr "" +msgstr "Rétractation (firmware)" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1469 msgid "Default " -msgstr "" +msgstr "Défaut" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1469 msgid " preset" -msgstr "" +msgstr "préconfiguration" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1470 msgid " preset\n" -msgstr "" +msgstr "préconfiguration\n" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1488 msgid "" @@ -716,6 +723,9 @@ msgid "" "\n" "is not compatible with printer\n" msgstr "" +"\n" +"\n" +"n'est pas compatible avec l'imprimante\n" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1488 msgid "" @@ -723,6 +733,9 @@ msgid "" "\n" "and it has the following unsaved changes:" msgstr "" +"\n" +"\n" +"et il a les modifications suivantes non sauvegardées :" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1489 msgid "" @@ -730,6 +743,9 @@ msgid "" "\n" "has the following unsaved changes:" msgstr "" +"\n" +"\n" +"a les modifications suivantes non sauvegardées :" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1491 msgid "" @@ -737,26 +753,29 @@ msgid "" "\n" "Discard changes and continue anyway?" msgstr "" +"\n" +"\n" +"Annuler les modification et continuer ?" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1492 msgid "Unsaved Changes" -msgstr "" +msgstr "Modifications non sauvegardées" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1560 msgid "The supplied name is empty. It can't be saved." -msgstr "" +msgstr "Le nom est vide. Sauvegarde impossible." #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1580 msgid "remove" -msgstr "" +msgstr "enlever" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1580 msgid "delete" -msgstr "" +msgstr "supprimer" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1581 msgid "Are you sure you want to " -msgstr "" +msgstr "Êtes vous surs de vouloir" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1581 msgid " the selected preset?" @@ -764,14 +783,14 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1582 msgid "Remove" -msgstr "" +msgstr "Enlever" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1582 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:178 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:196 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2021 msgid "Delete" -msgstr "" +msgstr "Supprimer" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1583 msgid " Preset" @@ -779,17 +798,17 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1636 msgid "All" -msgstr "" +msgstr "Tous" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1667 msgid "Select the printers this profile is compatible with." -msgstr "" +msgstr "Sélectionnez les imprimante compatibles avec ce profil." #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1751 #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:514 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1645 msgid "Save " -msgstr "" +msgstr "Sauvegarder" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1751 msgid " as:" @@ -799,30 +818,32 @@ msgstr "" msgid "" "The supplied name is not valid; the following characters are not allowed:" msgstr "" +"Le nom proposé n'est pas valide; les caractères suivants ne sont pas " +"acceptés:" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1788 msgid "The supplied name is not available." -msgstr "" +msgstr "Le nom proposé n'est pas disponible." #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp:182 msgid "Print Settings" -msgstr "" +msgstr "Paramètres d'impression" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp:202 msgid "Filament Settings" -msgstr "" +msgstr "Paramètres du filament" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp:228 msgid "Printer Settings" -msgstr "" +msgstr "Paramètres de l'imprimante" #: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp:248 msgid "Save preset" -msgstr "" +msgstr "Sauvegarder les paramètres" #: c:\src\Slic3r\xs\src\slic3r\GUI\Field.cpp:42 msgid "default" -msgstr "" +msgstr "défaut" #: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:26 #, c-format @@ -848,7 +869,7 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:36 msgid "Fan " -msgstr "" +msgstr "Ventilateur" #: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:41 #, c-format @@ -862,19 +883,19 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:48 msgid "except for the first layer" -msgstr "" +msgstr "sauf pour le 1er niveau" #: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:50 msgid "will be turned off." -msgstr "" +msgstr "sera stoppé." #: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:151 msgid "external perimeters" -msgstr "" +msgstr "périmètre externe" #: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:160 msgid "perimeters" -msgstr "" +msgstr "périmètre" #: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:169 msgid "infill" @@ -890,7 +911,7 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:198 msgid "support" -msgstr "" +msgstr "support" #: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:208 msgid "support interface" @@ -918,7 +939,7 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:219 msgid "when printing " -msgstr "" +msgstr "pendant l'impression" #: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:220 msgid " with a volumetric rate " @@ -952,11 +973,11 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.hpp:17 msgid "Preferences" -msgstr "" +msgstr "Préférences" #: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:27 msgid "Remember output directory" -msgstr "" +msgstr "Mémoriser le répertoire de destination" #: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:29 msgid "" @@ -966,17 +987,19 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:35 msgid "Auto-center parts" -msgstr "" +msgstr "Centrer automatiquement les objets" #: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:37 msgid "" "If this is enabled, Slic3r will auto-center objects around the print bed " "center." msgstr "" +"Si activ alors Slic3r centrera automatiquement les objets sur le lit " +"d'impression." #: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:43 msgid "Background processing" -msgstr "" +msgstr "Calcul en arrière plan" #: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:45 msgid "" @@ -986,7 +1009,7 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:51 msgid "Disable USB/serial connection" -msgstr "" +msgstr "Désactiver la connexion série/USB" #: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:53 msgid "" @@ -1017,7 +1040,7 @@ msgstr "" #: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:75 msgid "Use legacy OpenGL 1.1 rendering" -msgstr "" +msgstr "Utilisation du rendu OpenGL 1.1" #: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:77 msgid "" @@ -1071,7 +1094,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:59 msgid "Between objects G-code" -msgstr "" +msgstr "G-code entre les objets" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:60 msgid "" @@ -1082,6 +1105,12 @@ msgid "" "variables for all Slic3r settings, so you can put a \"M109 " "S[first_layer_temperature]\" command wherever you want." msgstr "" +"Ce code sera inséré entre chaque objet lors des impressions séquentielles. " +"Par défaut la température de l'extrudeur et le lit sont remis à zéro en " +"utilisant une commande sans délais; cependant si une commande M104, M109, " +"M140 ou M190 est détectée dans ce code personnalisé, Slic3r n'ajoutera pas " +"de commande de température. Note: vous pouvez utiliser des variables Slic3r " +"comme par exemple \"M109 S[first_layer_temperature]\" où vous voulez." #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:68 #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:370 @@ -1129,7 +1158,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:684 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:952 msgid "mm/s²" -msgstr "" +msgstr "mm/s²" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:86 msgid "Bridging angle" @@ -1149,7 +1178,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1401 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1557 msgid "°" -msgstr "" +msgstr "°" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:97 msgid "Bridges fan speed" @@ -1167,7 +1196,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:850 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1060 msgid "%" -msgstr "" +msgstr "%" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:106 msgid "Bridge flow ratio" @@ -1204,11 +1233,11 @@ msgstr "Vitesse d'impression des ponts." #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1536 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1649 msgid "mm/s" -msgstr "" +msgstr "mm/s" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:127 msgid "Brim width" -msgstr "" +msgstr "Largeur du débord (brim)" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:128 msgid "" @@ -1376,7 +1405,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:267 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:277 msgid "External perimeters" -msgstr "" +msgstr "Périmètre externe" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:268 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:377 @@ -1405,7 +1434,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1458 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1619 msgid "mm or % (leave 0 for default)" -msgstr "" +msgstr "mm ou % (laissez 0 pour valeur par défaut)" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:279 msgid "" @@ -1421,7 +1450,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1501 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1631 msgid "mm/s or %" -msgstr "" +msgstr "mm/s ou %" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:289 msgid "External perimeters first" @@ -1488,7 +1517,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:342 msgid "Extruder Color" -msgstr "" +msgstr "Couleur de l'extrudeur" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:343 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:406 @@ -1557,7 +1586,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:382 msgid "mm or % (leave 0 for auto)" -msgstr "" +msgstr "mm ou % (laissez 0 pour automatique)" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:387 msgid "Keep fan always on" @@ -1620,7 +1649,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:425 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:820 msgid "mm³/s" -msgstr "" +msgstr "mm³/s" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:432 msgid "" @@ -1650,11 +1679,11 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:444 msgid "g/cm³" -msgstr "" +msgstr "g/cm³" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:450 msgid "Filament type" -msgstr "" +msgstr "Type de filament" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:451 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1002 @@ -1668,7 +1697,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:470 msgid "Soluble material" -msgstr "" +msgstr "Matériel soluble" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:471 msgid "Soluble material is most likely used for a soluble support." @@ -1775,7 +1804,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:740 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1390 msgid "mm or %" -msgstr "" +msgstr "mm ou %" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:615 msgid "First layer speed" @@ -2030,7 +2059,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:831 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:842 msgid "mm³/s²" -msgstr "" +msgstr "mm³/s²" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:837 msgid "Max volumetric slope negative" @@ -2228,7 +2257,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:994 msgid "(minimum)" -msgstr "" +msgstr "(minimum)" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1014 msgid "Printer notes" @@ -2252,7 +2281,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1039 msgid "Resolution" -msgstr "" +msgstr "Résolution" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1040 msgid "" @@ -2318,7 +2347,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1075 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1085 msgid "mm (zero to disable)" -msgstr "" +msgstr "mm (zéro pour désactiver)" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1081 msgid "Retraction Length (Toolchange)" @@ -2409,7 +2438,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1134 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1135 msgid "Retraction Speed" -msgstr "" +msgstr "Vitesse de rétractation" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1136 msgid "The speed for retractions (it only applies to the extruder motor)." @@ -2437,7 +2466,7 @@ msgstr "Position du point de départ des périmètres." #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1169 msgid "Direction" -msgstr "" +msgstr "Direction" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1171 msgid "Preferred direction of the seam" @@ -2465,7 +2494,7 @@ msgstr "Port USB/Série pour la connexion à l'imprimante." #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1202 msgid "Serial port speed" -msgstr "" +msgstr "Vitesse du port série" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1203 msgid "Speed (baud) of USB/serial port for printer connection." @@ -2551,7 +2580,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1265 msgid "mm²" -msgstr "" +msgstr "mm²" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1271 msgid "Solid infill extruder" @@ -2668,11 +2697,12 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1373 msgid "Single Extruder Multi Material" -msgstr "" +msgstr "Extrudeur seul et Matériaux multiples" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1374 msgid "The printer multiplexes filaments into a single hot end." msgstr "" +"L'imprimante devra multiplexer les filaments via une seule tête d'impression." #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1379 msgid "Generate support material" @@ -2887,7 +2917,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1576 msgid "Temperature" -msgstr "" +msgstr "Température" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1582 msgid "Detect thin walls" @@ -3049,7 +3079,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1702 msgid "Position X" -msgstr "" +msgstr "Position X" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1703 msgid "X coordinate of the left front corner of a wipe tower" @@ -3057,7 +3087,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1709 msgid "Position Y" -msgstr "" +msgstr "Position Y" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1710 msgid "Y coordinate of the left front corner of a wipe tower" @@ -3066,11 +3096,11 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1716 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:70 msgid "Width" -msgstr "" +msgstr "Largeur" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1717 msgid "Width of a wipe tower" -msgstr "" +msgstr "Largeur de la \"wipe tower\"" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1723 msgid "Per color change depth" @@ -3116,17 +3146,17 @@ msgstr "" #: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:137 msgid "None" -msgstr "" +msgstr "Aucun" #: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:138 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:80 msgid "Perimeter" -msgstr "" +msgstr "Périmètre" #: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:139 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:81 msgid "External perimeter" -msgstr "" +msgstr "Périmètre exterieur" #: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:140 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:82 @@ -3145,7 +3175,7 @@ msgstr "" #: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:151 msgid "Mixed" -msgstr "" +msgstr "Mélangé" #: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:330 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:68 @@ -3154,33 +3184,35 @@ msgstr "" #: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:332 msgid "Height (mm)" -msgstr "" +msgstr "Hauteur (mm)" #: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:334 msgid "Width (mm)" -msgstr "" +msgstr "Largeur (mm)" #: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:336 msgid "Speed (mm/s)" -msgstr "" +msgstr "Vitesse (mm/s)" #: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:338 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:72 msgid "Tool" -msgstr "" +msgstr "Outil" #: c:\src\Slic3r\lib\Slic3r\GUI.pm:286 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "" +msgstr "Sélectionnez un ou plusieurs fichiers (STL/OBJ/AMF/3MF/PRUSA):" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:66 msgid "Version " -msgstr "" +msgstr "Version" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:66 msgid "" " - Remember to check for updates at http://github.com/prusa3d/slic3r/releases" msgstr "" +" - N'oubliez pas de vérifier les mises à jours sur http://github.com/prusa3d/" +"slic3r/releases" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:118 msgid "Plater" @@ -3188,11 +3220,11 @@ msgstr "" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:120 msgid "Controller" -msgstr "" +msgstr "Controleur" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:192 msgid "No Bonjour device found" -msgstr "" +msgstr "Aucun périphérique de type Bonjour détecté" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:192 msgid "Device Browser" @@ -3200,39 +3232,41 @@ msgstr "" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:211 msgid "Connection to OctoPrint works correctly." -msgstr "" +msgstr "La connexion avec OctoPrint fonctionne correctement." #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:214 msgid "I wasn't able to connect to OctoPrint (" -msgstr "" +msgstr "Je n'ai pas pu me connecter à OctoPrint (" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:215 msgid "). Check hostname and OctoPrint version (at least 1.1.0 is required)." msgstr "" +"). Vérifiez le nom de l'hôte et la version d'OctoPrint (il faut au moins la " +"version 1.1.0)." #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:251 msgid "Open STL/OBJ/AMF…\tCtrl+O" -msgstr "" +msgstr "Ouvrir STL/OBJ/AMF ...\tCtrl+O" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:251 msgid "Open a model" -msgstr "" +msgstr "Ouvrir un modèle" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:254 msgid "&Load Config…\tCtrl+L" -msgstr "" +msgstr "&Charge une configuration..\tCtrl+L" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:254 msgid "Load exported configuration file" -msgstr "" +msgstr "Charger un fichier de configuration exporté" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:257 msgid "&Export Config…\tCtrl+E" -msgstr "" +msgstr "&Exporter la configuration...\tCtrl+E" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:257 msgid "Export current configuration to file" -msgstr "" +msgstr "Exporter la configuration actuelle vers un fichier" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:260 msgid "&Load Config Bundle…" @@ -3292,31 +3326,31 @@ msgstr "" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:294 msgid "Repair STL file…" -msgstr "" +msgstr "Réparer un fichier STL..." #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:294 msgid "Automatically repair an STL file" -msgstr "" +msgstr "Réparation automatique du fichier STL" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:299 msgid "Preferences…\tCtrl+," -msgstr "" +msgstr "Préférences...\tCtrl+," #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:299 msgid "Application preferences" -msgstr "" +msgstr "Appliquer les préférences" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:304 msgid "&Quit" -msgstr "" +msgstr "&Quitter" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:304 msgid "Quit Slic3r" -msgstr "" +msgstr "Quitter Slic3r" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:314 msgid "Export G-code..." -msgstr "" +msgstr "Exporter le G-Code..." #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:314 msgid "Export current plate as G-code" @@ -3388,55 +3422,55 @@ msgstr "" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:368 msgid "Iso" -msgstr "" +msgstr "Iso" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:368 msgid "Iso View" -msgstr "" +msgstr "Vue Iso" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:369 msgid "Top View" -msgstr "" +msgstr "Vue du dessus" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:370 msgid "Bottom View" -msgstr "" +msgstr "Vue de dessous" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:371 msgid "Front" -msgstr "" +msgstr "Face" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:371 msgid "Front View" -msgstr "" +msgstr "Vue de face" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:372 msgid "Rear" -msgstr "" +msgstr "Arrière" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:372 msgid "Rear View" -msgstr "" +msgstr "Vue arrière" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:373 msgid "Left" -msgstr "" +msgstr "Gauche" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:373 msgid "Left View" -msgstr "" +msgstr "Vue de gauche" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:374 msgid "Right" -msgstr "" +msgstr "Droite" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:374 msgid "Right View" -msgstr "" +msgstr "Vue de droite" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:380 msgid "&Configuration " -msgstr "" +msgstr "&Configuration" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:380 msgid "Run Configuration " @@ -3444,7 +3478,7 @@ msgstr "" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:385 msgid "Prusa 3D Drivers" -msgstr "" +msgstr "Pilotes Prusa 3D (drivers)" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:385 msgid "Open the Prusa3D drivers download page in your browser" @@ -3468,23 +3502,23 @@ msgstr "" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:398 msgid "Slic3r &Manual" -msgstr "" +msgstr "Slic3r &Manuel" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:398 msgid "Open the Slic3r manual in your browser" -msgstr "" +msgstr "Ouvrir le manuel Slic3r dans votre navigateur web" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:402 msgid "System Info" -msgstr "" +msgstr "Informations système" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:402 msgid "Show system information" -msgstr "" +msgstr "Afficher les informations système" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:405 msgid "Report an Issue" -msgstr "" +msgstr "Faire un rapport de bug" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:405 msgid "Report an issue on the Slic3r Prusa Edition" @@ -3492,7 +3526,7 @@ msgstr "" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:408 msgid "&About Slic3r" -msgstr "" +msgstr "&À propos de Slic3r" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:408 msgid "Show about dialog" @@ -3500,27 +3534,27 @@ msgstr "" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:418 msgid "&File" -msgstr "" +msgstr "&Fichier" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:419 msgid "&Plater" -msgstr "" +msgstr "&Plateau" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:420 msgid "&Object" -msgstr "" +msgstr "&Objet" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:421 msgid "&Window" -msgstr "" +msgstr "&Fenêtre" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:422 msgid "&View" -msgstr "" +msgstr "&Vue" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:426 msgid "&Help" -msgstr "" +msgstr "&Aide" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:457 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" @@ -3540,15 +3574,15 @@ msgstr "" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:475 msgid "File Not Found" -msgstr "" +msgstr "Fichier introuvable" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:514 msgid "SVG" -msgstr "" +msgstr "SVG" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:514 msgid "G-code" -msgstr "" +msgstr "G-code" #: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:514 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1645 @@ -3620,38 +3654,38 @@ msgstr "" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:104 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2124 msgid "3D" -msgstr "" +msgstr "3D" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:138 msgid "2D" -msgstr "" +msgstr "2D" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:157 msgid "Layers" -msgstr "" +msgstr "Calques" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:177 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:195 msgid "Add…" -msgstr "" +msgstr "Ajouter..." #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:179 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:197 msgid "Delete All" -msgstr "" +msgstr "Supprimer (tous)" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:180 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:198 msgid "Arrange" -msgstr "" +msgstr "Ordonner" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:182 msgid "More" -msgstr "" +msgstr "Plus" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:183 msgid "Fewer" -msgstr "" +msgstr "Moins" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:185 msgid "45° ccw" @@ -3670,19 +3704,19 @@ msgstr "" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:204 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2099 msgid "Split" -msgstr "" +msgstr "Découper" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:189 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:205 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2102 msgid "Cut…" -msgstr "" +msgstr "Couper..." #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:191 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:206 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2106 msgid "Settings…" -msgstr "" +msgstr "Paramètres..." #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:192 msgid "Layer Editing" @@ -3694,12 +3728,12 @@ msgstr "" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:220 msgid "Name" -msgstr "" +msgstr "Nom" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:221 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:900 msgid "Copies" -msgstr "" +msgstr "Copies" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:222 #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1056 @@ -3710,7 +3744,7 @@ msgstr "Redimensionner" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:236 msgid "Export G-code…" -msgstr "" +msgstr "Exporter le G-code..." #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:237 msgid "Slice now" @@ -3718,31 +3752,31 @@ msgstr "" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:238 msgid "Print…" -msgstr "" +msgstr "Imprimer..." #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:239 msgid "Send to printer" -msgstr "" +msgstr "Envoyer à l'imprimante" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:240 msgid "Export STL…" -msgstr "" +msgstr "Exporter le STL..." #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:367 msgid "Print settings" -msgstr "" +msgstr "Paramètres d'impression" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:369 msgid "Printer" -msgstr "" +msgstr "Imprimante" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:398 msgid "Info" -msgstr "" +msgstr "Info" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:409 msgid "Volume" -msgstr "" +msgstr "Volume" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:410 msgid "Facets" @@ -3750,7 +3784,7 @@ msgstr "" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:411 msgid "Materials" -msgstr "" +msgstr "Matérieux" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:412 msgid "Manifold" @@ -3762,19 +3796,19 @@ msgstr "" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:447 msgid "Used Filament (m)" -msgstr "" +msgstr "Filament utilisé (m)" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:448 msgid "Used Filament (mm³)" -msgstr "" +msgstr "Filament utilisé (mm³)" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:449 msgid "Used Filament (g)" -msgstr "" +msgstr "Filament utilisé (g)" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:451 msgid "Estimated printing time" -msgstr "" +msgstr "Estimation du temps d'impression" #: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:629 msgid "Loading…" From 36b337b7e7b9ce5b358a79ee7815adc765ce8cce Mon Sep 17 00:00:00 2001 From: bubnikv Date: Tue, 22 May 2018 11:45:15 +0200 Subject: [PATCH 10/15] Moved max_print_height from [print:*common*] to [printer:*common*], there is a bug still in Slic3r, it should refuse to load config keys from a wrong location. --- resources/profiles/PrusaResearch.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/profiles/PrusaResearch.ini b/resources/profiles/PrusaResearch.ini index a28405921..77b4f6913 100644 --- a/resources/profiles/PrusaResearch.ini +++ b/resources/profiles/PrusaResearch.ini @@ -68,7 +68,6 @@ infill_first = 0 infill_only_where_needed = 0 infill_overlap = 25% interface_shells = 0 -max_print_height = 200 max_print_speed = 100 max_volumetric_extrusion_rate_slope_negative = 0 max_volumetric_extrusion_rate_slope_positive = 0 @@ -888,6 +887,7 @@ gcode_flavor = marlin layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z] max_layer_height = 0.25 min_layer_height = 0.07 +max_print_height = 200 nozzle_diameter = 0.4 octoprint_apikey = octoprint_host = From ae394ca97dbf10085c0b5b585b76457ee7358e0d Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Tue, 22 May 2018 13:57:28 +0200 Subject: [PATCH 11/15] Fixed remember output directory default value set to true --- xs/src/slic3r/GUI/AppConfig.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/xs/src/slic3r/GUI/AppConfig.cpp b/xs/src/slic3r/GUI/AppConfig.cpp index c1c90fb72..2a33cd733 100644 --- a/xs/src/slic3r/GUI/AppConfig.cpp +++ b/xs/src/slic3r/GUI/AppConfig.cpp @@ -57,6 +57,9 @@ void AppConfig::set_defaults() // https://github.com/prusa3d/Slic3r/issues/233 if (get("use_legacy_opengl").empty()) set("use_legacy_opengl", "0"); + + if (get("remember_output_path").empty()) + set("remember_output_path", "1"); } void AppConfig::load() From 6ea81279ff1a49d60e5000148b3f82f9bfbbf101 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 22 May 2018 14:00:42 +0200 Subject: [PATCH 12/15] Fixed correct updating of the modified preset on Plater tab. --- lib/Slic3r/GUI/Plater.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/Slic3r/GUI/Plater.pm b/lib/Slic3r/GUI/Plater.pm index 0fa651b19..c870adde2 100644 --- a/lib/Slic3r/GUI/Plater.pm +++ b/lib/Slic3r/GUI/Plater.pm @@ -567,7 +567,8 @@ sub _on_select_preset { wxTheApp->{preset_bundle}->update_platter_filament_ui($idx, $choice); } else { my $selected_item = $choice->GetSelection(); - return if ($selected_item == $self->{"selected_item_$group"}); + return if ($selected_item == $self->{"selected_item_$group"} && + !Slic3r::GUI::get_preset_tab($group)->current_preset_is_dirty); my $selected_string = $choice->GetString($selected_item); if ($selected_string eq ("------- ".L("System presets")." -------") || From e8247c5646d512da4c8060ecd7d0a6a3232a6c28 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Tue, 22 May 2018 14:17:27 +0200 Subject: [PATCH 13/15] When loading a config bundle, make sure a config value is not accepted if it is placed in a wrong group (for example, max_print_height does not belong to print settings, but a printer settings, so Slic3r will now complain about it being in print settings, and it will remove the value from the print settings). --- xs/src/slic3r/GUI/Preset.hpp | 1 + xs/src/slic3r/GUI/PresetBundle.cpp | 52 +++++++++++++++++++++--------- 2 files changed, 38 insertions(+), 15 deletions(-) diff --git a/xs/src/slic3r/GUI/Preset.hpp b/xs/src/slic3r/GUI/Preset.hpp index ab01a48ff..31fb69aa8 100644 --- a/xs/src/slic3r/GUI/Preset.hpp +++ b/xs/src/slic3r/GUI/Preset.hpp @@ -244,6 +244,7 @@ public: const std::string& get_suffix_modified(); // Return a preset possibly with modifications. + Preset& default_preset() { return m_presets.front(); } const Preset& default_preset() const { return m_presets.front(); } // Return a preset by an index. If the preset is active, a temporary copy is returned. Preset& preset(size_t idx) { return (int(idx) == m_idx_selected) ? m_edited_preset : m_presets[idx]; } diff --git a/xs/src/slic3r/GUI/PresetBundle.cpp b/xs/src/slic3r/GUI/PresetBundle.cpp index ef48eb6d4..a34640da7 100644 --- a/xs/src/slic3r/GUI/PresetBundle.cpp +++ b/xs/src/slic3r/GUI/PresetBundle.cpp @@ -53,27 +53,31 @@ PresetBundle::PresetBundle() : wxImage::AddHandler(new wxPNGHandler); // Create the ID config keys, as they are not part of the Static print config classes. - this->prints.preset(0).config.opt_string("print_settings_id", true); - this->filaments.preset(0).config.opt_string("filament_settings_id", true); - this->printers.preset(0).config.opt_string("print_settings_id", true); + this->prints.default_preset().config.opt_string("print_settings_id", true); + this->filaments.default_preset().config.opt_string("filament_settings_id", true); + this->printers.default_preset().config.opt_string("printer_settings_id", true); // Create the "compatible printers" keys, as they are not part of the Static print config classes. - this->filaments.preset(0).config.optptr("compatible_printers", true); - this->filaments.preset(0).config.optptr("compatible_printers_condition", true); - this->prints.preset(0).config.optptr("compatible_printers", true); - this->prints.preset(0).config.optptr("compatible_printers_condition", true); + this->filaments.default_preset().config.optptr("compatible_printers", true); + this->filaments.default_preset().config.optptr("compatible_printers_condition", true); + this->prints.default_preset().config.optptr("compatible_printers", true); + this->prints.default_preset().config.optptr("compatible_printers_condition", true); // Create the "inherits" keys. - this->prints.preset(0).config.optptr("inherits", true); - this->filaments.preset(0).config.optptr("inherits", true); - this->printers.preset(0).config.optptr("inherits", true); + this->prints.default_preset().config.optptr("inherits", true); + this->filaments.default_preset().config.optptr("inherits", true); + this->printers.default_preset().config.optptr("inherits", true); // Create the "printer_vendor", "printer_model" and "printer_variant" keys. - this->printers.preset(0).config.optptr("printer_vendor", true); - this->printers.preset(0).config.optptr("printer_model", true); - this->printers.preset(0).config.optptr("printer_variant", true); - + this->printers.default_preset().config.optptr("printer_vendor", true); + this->printers.default_preset().config.optptr("printer_model", true); + this->printers.default_preset().config.optptr("printer_variant", true); + // Load the default preset bitmaps. this->prints .load_bitmap_default("cog.png"); this->filaments.load_bitmap_default("spool.png"); this->printers .load_bitmap_default("printer_empty.png"); this->load_compatible_bitmaps(); + // Re-activate the default presets, so their "edited" preset copies will be updated with the additional configuration values above. + this->prints .select_preset(0); + this->filaments.select_preset(0); + this->printers .select_preset(0); this->project_config.apply_only(FullPrintConfig::defaults(), s_project_options); } @@ -832,10 +836,28 @@ size_t PresetBundle::load_configbundle(const std::string &path, unsigned int fla continue; if (presets != nullptr) { // Load the print, filament or printer preset. - DynamicPrintConfig config(presets->default_preset().config); + const DynamicPrintConfig &default_config = presets->default_preset().config; + DynamicPrintConfig config(default_config); for (auto &kvp : section.second) config.set_deserialize(kvp.first, kvp.second.data()); Preset::normalize(config); + // Report configuration fields, which are misplaced into a wrong group. + std::string incorrect_keys; + size_t n_incorrect_keys = 0; + for (const std::string &key : config.keys()) + if (! default_config.has(key)) { + if (incorrect_keys.empty()) + incorrect_keys = key; + else { + incorrect_keys += ", "; + incorrect_keys += key; + } + config.erase(key); + ++ n_incorrect_keys; + } + if (! incorrect_keys.empty()) + BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The printer preset \"" << + section.first << "\" contains the following incorrect keys: " << incorrect_keys << ", which were removed"; if ((flags & LOAD_CFGBNDLE_SYSTEM) && presets == &printers) { // Filter out printer presets, which are not mentioned in the vendor profile. // These presets are considered not installed. From 360b34944d830655f8d0966d2140a1d293b7b724 Mon Sep 17 00:00:00 2001 From: Vojtech Kral Date: Tue, 22 May 2018 14:33:11 +0200 Subject: [PATCH 14/15] ErrorDialog: Fix size and message encoding --- xs/src/slic3r/GUI/GUI.cpp | 2 +- xs/src/slic3r/GUI/MsgDialog.cpp | 3 ++- xs/src/slic3r/GUI/MsgDialog.hpp | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/xs/src/slic3r/GUI/GUI.cpp b/xs/src/slic3r/GUI/GUI.cpp index aad970236..b00813a71 100644 --- a/xs/src/slic3r/GUI/GUI.cpp +++ b/xs/src/slic3r/GUI/GUI.cpp @@ -607,7 +607,7 @@ void show_error(wxWindow* parent, const wxString& message) { void show_error_id(int id, const std::string& message) { auto *parent = id != 0 ? wxWindow::FindWindowById(id) : nullptr; - show_error(parent, message); + show_error(parent, wxString::FromUTF8(message.data())); } void show_info(wxWindow* parent, const wxString& message, const wxString& title){ diff --git a/xs/src/slic3r/GUI/MsgDialog.cpp b/xs/src/slic3r/GUI/MsgDialog.cpp index 6fba47a37..58679ed9e 100644 --- a/xs/src/slic3r/GUI/MsgDialog.cpp +++ b/xs/src/slic3r/GUI/MsgDialog.cpp @@ -71,11 +71,12 @@ ErrorDialog::ErrorDialog(wxWindow *parent, const wxString &msg) : text->Wrap(CONTENT_WIDTH); p_sizer->Add(text, 1, wxEXPAND); - panel->SetMinSize(wxSize(CONTENT_WIDTH, CONTENT_HEIGHT)); + panel->SetMinSize(wxSize(CONTENT_WIDTH, 0)); panel->SetScrollRate(0, 5); content_sizer->Add(panel, 1, wxEXPAND); + SetMaxSize(wxSize(-1, CONTENT_MAX_HEIGHT)); Fit(); } diff --git a/xs/src/slic3r/GUI/MsgDialog.hpp b/xs/src/slic3r/GUI/MsgDialog.hpp index a01127023..2d570a0bf 100644 --- a/xs/src/slic3r/GUI/MsgDialog.hpp +++ b/xs/src/slic3r/GUI/MsgDialog.hpp @@ -31,7 +31,7 @@ struct MsgDialog : wxDialog protected: enum { CONTENT_WIDTH = 500, - CONTENT_HEIGHT = 300, + CONTENT_MAX_HEIGHT = 600, BORDER = 30, VERT_SPACING = 15, HORIZ_SPACING = 5, From 076b293fec95580f956ca81004fab4ab08295d3d Mon Sep 17 00:00:00 2001 From: bubnikv Date: Tue, 22 May 2018 15:18:38 +0200 Subject: [PATCH 15/15] Bumped up version numbers of the PrusaResearch.ini and the Slic3r itself. --- resources/profiles/PrusaResearch.idx | 1 + resources/profiles/PrusaResearch.ini | 2 +- xs/src/libslic3r/libslic3r.h | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/resources/profiles/PrusaResearch.idx b/resources/profiles/PrusaResearch.idx index e3b1e6ef5..2ebc781b0 100644 --- a/resources/profiles/PrusaResearch.idx +++ b/resources/profiles/PrusaResearch.idx @@ -1,3 +1,4 @@ +0.1.3 Fixed an incorrect position of the max_print_height parameter 0.1.2 Wipe tower changes 0.1.1 Minor print speed adjustments 0.1.0 Initial diff --git a/resources/profiles/PrusaResearch.ini b/resources/profiles/PrusaResearch.ini index 77b4f6913..7bbdf93c8 100644 --- a/resources/profiles/PrusaResearch.ini +++ b/resources/profiles/PrusaResearch.ini @@ -5,7 +5,7 @@ name = Prusa Research # Configuration version of this file. Config file will only be installed, if the config_version differs. # This means, the server may force the Slic3r configuration to be downgraded. -config_version = 0.1.2 +config_version = 0.1.3 # Where to get the updates from? config_update_url = https://raw.githubusercontent.com/prusa3d/Slic3r-settings/master/live/PrusaResearch/ diff --git a/xs/src/libslic3r/libslic3r.h b/xs/src/libslic3r/libslic3r.h index e7b858e8b..8aa0d0277 100644 --- a/xs/src/libslic3r/libslic3r.h +++ b/xs/src/libslic3r/libslic3r.h @@ -14,7 +14,7 @@ #include #define SLIC3R_FORK_NAME "Slic3r Prusa Edition" -#define SLIC3R_VERSION "1.40.0-alpha" +#define SLIC3R_VERSION "1.40.0-alpha2" #define SLIC3R_BUILD "UNKNOWN" typedef int32_t coord_t;