From ff3ae40aeb417d132ae8fd57fe2e58a08930edf6 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Wed, 14 Feb 2018 21:57:46 +0100 Subject: [PATCH] Fixed compilation issues caused by the previous commits --- lib/Slic3r/Print.pm | 7 ++++++- xs/src/libslic3r/GCode/PreviewData.cpp | 6 ++++++ xs/src/libslic3r/GCode/PreviewData.hpp | 1 + xs/xsp/GCode.xsp | 12 +++++++++++- 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/lib/Slic3r/Print.pm b/lib/Slic3r/Print.pm index 4d112536aa..fa3d4a1012 100644 --- a/lib/Slic3r/Print.pm +++ b/lib/Slic3r/Print.pm @@ -81,7 +81,12 @@ sub export_gcode { $self->status_cb->(90, "Exporting G-code" . ($output_file ? " to $output_file" : "")); # The following line may die for multiple reasons. - Slic3r::GCode->new->do_export($self, $output_file, $params{gcode_preview_data}); + my $gcode = Slic3r::GCode->new; + if (defined $params{gcode_preview_data}) { + $gcode->do_export_w_preview($self, $output_file, $params{gcode_preview_data}); + } else { + $gcode->do_export($self, $output_file); + } # run post-processing scripts if (@{$self->config->post_process}) { diff --git a/xs/src/libslic3r/GCode/PreviewData.cpp b/xs/src/libslic3r/GCode/PreviewData.cpp index fc5e4f02b1..5a23d332dd 100644 --- a/xs/src/libslic3r/GCode/PreviewData.cpp +++ b/xs/src/libslic3r/GCode/PreviewData.cpp @@ -1,5 +1,6 @@ #include "Analyzer.hpp" #include "PreviewData.hpp" +#include namespace Slic3r { @@ -238,6 +239,11 @@ void GCodePreviewData::reset() unretraction.positions.clear(); } +bool GCodePreviewData::empty() const +{ + return extrusion.layers.empty() && travel.polylines.empty() && retraction.positions.empty() && unretraction.positions.empty(); +} + const GCodePreviewData::Color& GCodePreviewData::get_extrusion_role_color(ExtrusionRole role) const { return extrusion.role_colors[role]; diff --git a/xs/src/libslic3r/GCode/PreviewData.hpp b/xs/src/libslic3r/GCode/PreviewData.hpp index 59d87a360e..9fb2dc4645 100644 --- a/xs/src/libslic3r/GCode/PreviewData.hpp +++ b/xs/src/libslic3r/GCode/PreviewData.hpp @@ -183,6 +183,7 @@ public: void set_default(); void reset(); + bool empty() const; const Color& get_extrusion_role_color(ExtrusionRole role) const; const Color& get_extrusion_height_color(float height) const; diff --git a/xs/xsp/GCode.xsp b/xs/xsp/GCode.xsp index 4d62e3f81e..b4cb7c0e92 100644 --- a/xs/xsp/GCode.xsp +++ b/xs/xsp/GCode.xsp @@ -18,7 +18,15 @@ %name{Slic3r::GCode} class GCode { GCode(); ~GCode(); - void do_export(Print *print, const char *path, GCodePreviewData *preview_data) + void do_export(Print *print, const char *path) + %code%{ + try { + THIS->do_export(print, path); + } catch (std::exception& e) { + croak(e.what()); + } + %}; + void do_export_w_preview(Print *print, const char *path, GCodePreviewData *preview_data) %code%{ try { THIS->do_export(print, path, preview_data); @@ -56,11 +64,13 @@ GCodePreviewData(); ~GCodePreviewData(); void reset(); + bool empty() const; void set_type(int type) %code%{ if ((0 <= type) && (type < GCodePreviewData::Extrusion::Num_View_Types)) THIS->extrusion.view_type = (GCodePreviewData::Extrusion::EViewType)type; %}; + int type() %code%{ RETVAL = (int)THIS->extrusion.view_type; %}; void set_extrusion_flags(int flags) %code%{ THIS->extrusion.role_flags = (unsigned int)flags; %}; void set_travel_visible(bool visible)