Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbubnikv <bubnikv@gmail.com>2018-11-08 22:18:40 +0300
committerbubnikv <bubnikv@gmail.com>2018-11-08 22:18:40 +0300
commitbbfbe88a5fdcda79efe5a9a58b96847b17a1db41 (patch)
treec45920a5572c56535d0e95e02ec8ae2eb93a5f64 /src/slic3r
parent811404d97a367939c83120cfc6ebb6b8b94a4f7d (diff)
Integrated SLAPrint into background processing.
Fixed couple of compiler warnings.
Diffstat (limited to 'src/slic3r')
-rw-r--r--src/slic3r/GUI/BackgroundSlicingProcess.cpp88
-rw-r--r--src/slic3r/GUI/BackgroundSlicingProcess.hpp20
-rw-r--r--src/slic3r/GUI/BonjourDialog.cpp3
-rw-r--r--src/slic3r/GUI/GUI.cpp2
-rw-r--r--src/slic3r/GUI/GUI_App.cpp13
-rw-r--r--src/slic3r/GUI/GUI_Utils.cpp2
-rw-r--r--src/slic3r/GUI/Plater.cpp39
-rw-r--r--src/slic3r/GUI/Preset.cpp2
-rw-r--r--src/slic3r/GUI/PresetBundle.cpp6
-rw-r--r--src/slic3r/GUI/RammingChart.cpp2
-rw-r--r--src/slic3r/GUI/Tab.cpp2
-rw-r--r--src/slic3r/Utils/Bonjour.cpp2
-rw-r--r--src/slic3r/Utils/FixModelByWin10.cpp20
-rw-r--r--src/slic3r/Utils/HexFile.cpp2
-rw-r--r--src/slic3r/pchheader.hpp5
15 files changed, 134 insertions, 74 deletions
diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.cpp b/src/slic3r/GUI/BackgroundSlicingProcess.cpp
index 62a6bb8a8..d9a60caa9 100644
--- a/src/slic3r/GUI/BackgroundSlicingProcess.cpp
+++ b/src/slic3r/GUI/BackgroundSlicingProcess.cpp
@@ -7,9 +7,10 @@
#include <wx/stdpaths.h>
// Print now includes tbb, and tbb includes Windows. This breaks compilation of wxWidgets if included before wx.
-#include "../../libslic3r/Print.hpp"
-#include "../../libslic3r/Utils.hpp"
-#include "../../libslic3r/GCode/PostProcessor.hpp"
+#include "libslic3r/Print.hpp"
+#include "libslic3r/SLAPrint.hpp"
+#include "libslic3r/Utils.hpp"
+#include "libslic3r/GCode/PostProcessor.hpp"
//#undef NDEBUG
#include <cassert>
@@ -35,8 +36,49 @@ BackgroundSlicingProcess::~BackgroundSlicingProcess()
boost::nowide::remove(m_temp_output_path.c_str());
}
+void BackgroundSlicingProcess::select_technology(PrinterTechnology tech)
+{
+ if (m_print == nullptr || m_print->technology() != tech) {
+ if (m_print != nullptr)
+ this->reset();
+ switch (tech) {
+ case ptFFF: m_print = m_fff_print; break;
+ case ptSLA: m_print = m_sla_print; break;
+ }
+ }
+ assert(m_print != nullptr);
+}
+
+// This function may one day be merged into the Print, but historically the print was separated
+// from the G-code generator.
+void BackgroundSlicingProcess::process_fff()
+{
+ assert(m_print == m_fff_print);
+ m_print->process();
+ if (! m_print->canceled()) {
+ wxQueueEvent(GUI::wxGetApp().mainframe->m_plater, new wxCommandEvent(m_event_sliced_id));
+ m_fff_print->export_gcode(m_temp_output_path, m_gcode_preview_data);
+ if (! m_print->canceled() && ! this->is_step_done(bspsGCodeFinalize)) {
+ this->set_step_started(bspsGCodeFinalize);
+ if (! m_export_path.empty()) {
+ //FIXME localize the messages
+ if (copy_file(m_temp_output_path, m_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");
+ run_post_process_scripts(m_export_path, m_fff_print->config());
+ m_print->set_status(100, "G-code file exported to " + m_export_path);
+ } else {
+ m_print->set_status(100, "Slicing complete");
+ }
+ this->set_step_done(bspsGCodeFinalize);
+ }
+ }
+}
+
void BackgroundSlicingProcess::thread_proc()
{
+ assert(m_print != nullptr);
+ assert(m_print == m_fff_print || m_print == m_sla_print);
std::unique_lock<std::mutex> lck(m_mutex);
// Let the caller know we are ready to run the background processing task.
m_state = STATE_IDLE;
@@ -56,25 +98,10 @@ void BackgroundSlicingProcess::thread_proc()
std::string error;
try {
assert(m_print != nullptr);
- m_print->process();
- if (! m_print->canceled()) {
- wxQueueEvent(GUI::wxGetApp().mainframe->m_plater, new wxCommandEvent(m_event_sliced_id));
- m_print->export_gcode(m_temp_output_path, m_gcode_preview_data);
- if (! m_print->canceled() && ! this->is_step_done(bspsGCodeFinalize)) {
- this->set_step_started(bspsGCodeFinalize);
- if (! m_export_path.empty()) {
- //FIXME localize the messages
- if (copy_file(m_temp_output_path, m_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");
- run_post_process_scripts(m_export_path, m_print->config());
- m_print->set_status(100, "G-code file exported to " + m_export_path);
- } else {
- m_print->set_status(100, "Slicing complete");
- }
- this->set_step_done(bspsGCodeFinalize);
- }
- }
+ switch(m_print->technology()) {
+ case ptFFF: this->process_fff(); break;
+ default: m_print->process(); break;
+ }
} catch (CanceledException & /* ex */) {
// Canceled, this is all right.
assert(m_print->canceled());
@@ -133,6 +160,10 @@ void BackgroundSlicingProcess::join_background_thread()
bool BackgroundSlicingProcess::start()
{
+ if (m_print->empty())
+ // The print is empty (no object in Model, or all objects are out of the print bed).
+ return false;
+
std::unique_lock<std::mutex> lck(m_mutex);
if (m_state == STATE_INITIAL) {
// The worker thread is not running yet. Start it.
@@ -183,6 +214,7 @@ bool BackgroundSlicingProcess::reset()
bool stopped = this->stop();
this->reset_export();
m_print->clear();
+ this->invalidate_all_steps();
return stopped;
}
@@ -203,20 +235,18 @@ void BackgroundSlicingProcess::stop_internal()
m_print->set_cancel_callback([](){});
}
-// Apply config over the print. Returns false, if the new config values caused any of the already
-// processed steps to be invalidated, therefore the task will need to be restarted.
-bool BackgroundSlicingProcess::apply_config(const DynamicPrintConfig &config)
+std::string BackgroundSlicingProcess::validate()
{
- this->stop();
- bool invalidated = m_print->apply_config(config);
- return invalidated;
+ assert(m_print != nullptr);
+ return m_print->validate();
}
// Apply config over the print. Returns false, if the new config values caused any of the already
// processed steps to be invalidated, therefore the task will need to be restarted.
Print::ApplyStatus BackgroundSlicingProcess::apply(const Model &model, const DynamicPrintConfig &config)
{
-// this->stop();
+ assert(m_print != nullptr);
+ assert(config.opt_enum<PrinterTechnology>("printer_technology") == m_print->technology());
Print::ApplyStatus invalidated = m_print->apply(model, config);
return invalidated;
}
diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.hpp b/src/slic3r/GUI/BackgroundSlicingProcess.hpp
index 6b589739e..b008437c0 100644
--- a/src/slic3r/GUI/BackgroundSlicingProcess.hpp
+++ b/src/slic3r/GUI/BackgroundSlicingProcess.hpp
@@ -13,6 +13,7 @@ namespace Slic3r {
class DynamicPrintConfig;
class GCodePreviewData;
class Model;
+class SLAPrint;
// Print step IDs for keeping track of the print state.
enum BackgroundSlicingProcessStep {
@@ -28,7 +29,8 @@ public:
// Stop the background processing and finalize the bacgkround processing thread, remove temp files.
~BackgroundSlicingProcess();
- void set_print(Print *print) { m_print = print; }
+ void set_fff_print(Print *print) { m_fff_print = print; }
+ void set_sla_print(SLAPrint *print) { m_sla_print = print; }
void set_gcode_preview_data(GCodePreviewData *gpd) { m_gcode_preview_data = gpd; }
// The following wxCommandEvent will be sent to the UI thread / Platter window, when the slicing is finished
// and the background processing will transition into G-code export.
@@ -38,6 +40,8 @@ public:
// The wxCommandEvent is sent to the UI thread asynchronously without waiting for the event to be processed.
void set_finished_event(int event_id) { m_event_finished_id = event_id; }
+ // Activate either m_fff_print or m_sla_print.
+ void select_technology(PrinterTechnology tech);
// Start the background processing. Returns false if the background processing was already running.
bool start();
// Cancel the background processing. Returns false if the background processing was not running.
@@ -47,9 +51,8 @@ public:
// Useful when the Model or configuration is being changed drastically.
bool reset();
- // Apply config over the print. Returns false, if the new config values caused any of the already
- // processed steps to be invalidated, therefore the task will need to be restarted.
- bool apply_config(const DynamicPrintConfig &config);
+ // Validate the print. Returns an empty string if valid, returns an error message if invalid.
+ std::string validate();
// Apply config over the print. Returns false, if the new config values caused any of the already
// processed steps to be invalidated, therefore the task will need to be restarted.
Print::ApplyStatus apply(const Model &model, const DynamicPrintConfig &config);
@@ -90,7 +93,14 @@ private:
// This function shall not trigger any UI update through the wxWidgets event.
void stop_internal();
- Print *m_print = nullptr;
+ // Helper to wrap the FFF slicing & G-code generation.
+ void process_fff();
+
+ // Currently active print. It is one of m_fff_print and m_sla_print.
+ PrintBase *m_print = nullptr;
+ // Non-owned pointers to Print instances.
+ Print *m_fff_print = nullptr;
+ SLAPrint *m_sla_print = nullptr;
// Data structure, to which the G-code export writes its annotations.
GCodePreviewData *m_gcode_preview_data = nullptr;
// Temporary G-code, there is one defined for the BackgroundSlicingProcess, differentiated from the other processes by a process ID.
diff --git a/src/slic3r/GUI/BonjourDialog.cpp b/src/slic3r/GUI/BonjourDialog.cpp
index 11cfea642..9d303a85e 100644
--- a/src/slic3r/GUI/BonjourDialog.cpp
+++ b/src/slic3r/GUI/BonjourDialog.cpp
@@ -18,8 +18,9 @@
namespace Slic3r {
-struct BonjourReplyEvent : public wxEvent
+class BonjourReplyEvent : public wxEvent
{
+public:
BonjourReply reply;
BonjourReplyEvent(wxEventType eventType, int winid, BonjourReply &&reply) :
diff --git a/src/slic3r/GUI/GUI.cpp b/src/slic3r/GUI/GUI.cpp
index 172151141..b6136a15c 100644
--- a/src/slic3r/GUI/GUI.cpp
+++ b/src/slic3r/GUI/GUI.cpp
@@ -193,7 +193,7 @@ void change_opt_value(DynamicPrintConfig& config, const t_config_option_key& opt
config.set_key_value(opt_key, new ConfigOptionBool(boost::any_cast<bool>(value)));
break;
case coBools:{
- ConfigOptionBools* vec_new = new ConfigOptionBools{ (bool)boost::any_cast<unsigned char>(value) };
+ ConfigOptionBools* vec_new = new ConfigOptionBools{ boost::any_cast<unsigned char>(value) != 0 };
config.option<ConfigOptionBools>(opt_key)->set_at(vec_new, opt_index, 0);
break;}
case coInt:
diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp
index 112278124..f144b0ef3 100644
--- a/src/slic3r/GUI/GUI_App.cpp
+++ b/src/slic3r/GUI/GUI_App.cpp
@@ -92,13 +92,12 @@ bool GUI_App::OnInit()
// Suppress the '- default -' presets.
preset_bundle->set_default_suppressed(app_config->get("no_defaults") == "1");
- // eval{
- preset_bundle->load_presets(*app_config);
- // };
- // if ($@) {
- // warn $@ . "\n";
- // show_error(undef, $@);
- // }
+ try {
+ preset_bundle->load_presets(*app_config);
+ } catch (const std::exception & /* ex */) {
+ // warn $@ . "\n";
+ // show_error(undef, $@);
+ }
// Let the libslic3r know the callback, which will translate messages on demand.
Slic3r::I18N::set_translate_callback(libslic3r_translate_callback);
diff --git a/src/slic3r/GUI/GUI_Utils.cpp b/src/slic3r/GUI/GUI_Utils.cpp
index 5a7ece586..c9fa96f4c 100644
--- a/src/slic3r/GUI/GUI_Utils.cpp
+++ b/src/slic3r/GUI/GUI_Utils.cpp
@@ -100,7 +100,7 @@ boost::optional<WindowMetrics> WindowMetrics::deserialize(const std::string &str
WindowMetrics res;
res.rect = wxRect(metrics[0], metrics[1], metrics[2], metrics[3]);
- res.maximized = metrics[4];
+ res.maximized = metrics[4] != 0;
return res;
}
diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp
index a1db54b0d..99821a351 100644
--- a/src/slic3r/GUI/Plater.cpp
+++ b/src/slic3r/GUI/Plater.cpp
@@ -26,6 +26,7 @@
#include "libslic3r/PrintConfig.hpp"
#include "libslic3r/Model.hpp"
#include "libslic3r/Print.hpp"
+#include "libslic3r/SLAPrint.hpp"
#include "libslic3r/GCode/PreviewData.hpp"
#include "libslic3r/Utils.hpp"
#include "libslic3r/Polygon.hpp"
@@ -852,6 +853,7 @@ struct Plater::priv
// Data
Slic3r::DynamicPrintConfig *config;
Slic3r::Print print;
+ Slic3r::SLAPrint sla_print;
Slic3r::Model model;
Slic3r::GCodePreviewData gcode_preview_data;
@@ -949,17 +951,19 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) :
"brim_width", "variable_layer_height", "serial_port", "serial_speed", "host_type", "print_host",
"printhost_apikey", "printhost_cafile", "nozzle_diameter", "single_extruder_multi_material",
"wipe_tower", "wipe_tower_x", "wipe_tower_y", "wipe_tower_width", "wipe_tower_rotation_angle",
- "extruder_colour", "filament_colour", "max_print_height", "printer_model"
+ "extruder_colour", "filament_colour", "max_print_height", "printer_model", "printer_technology"
})),
notebook(new wxNotebook(q, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxNB_BOTTOM)),
sidebar(new Sidebar(q)),
canvas3D(GLCanvas3DManager::create_wxglcanvas(notebook))
{
- // TODO: background_process.set_print(&slaprint);
- background_process.set_print(&print);
+ background_process.set_fff_print(&print);
+ background_process.set_sla_print(&sla_print);
background_process.set_gcode_preview_data(&gcode_preview_data);
background_process.set_sliced_event(EVT_SLICING_COMPLETED);
background_process.set_finished_event(EVT_PROCESS_COMPLETED);
+ // Default printer technology for default config.
+ background_process.select_technology(wxGetApp().preset_bundle->printers.get_edited_preset().printer_technology());
// Register progress callback from the Print class to the Platter.
print.set_status_callback([this](int percent, const std::string &message) {
wxCommandEvent event(EVT_PROGRESS_BAR);
@@ -1516,6 +1520,7 @@ void Plater::priv::schedule_background_process()
void Plater::priv::async_apply_config()
{
DynamicPrintConfig config = wxGetApp().preset_bundle->full_config();
+ auto printer_technology = config.opt_enum<PrinterTechnology>("printer_technology");
BoundingBox bed_box_2D = get_extents(Polygon::new_scale(config.opt<ConfigOptionPoints>("bed_shape")->values));
BoundingBoxf3 print_volume(unscale(bed_box_2D.min(0), bed_box_2D.min(1), 0.0), unscale(bed_box_2D.max(0), bed_box_2D.max(1), scale_(config.opt_float("max_print_height"))));
// Allow the objects to protrude below the print bed, only the part of the object above the print bed will be sliced.
@@ -1536,17 +1541,19 @@ void Plater::priv::async_apply_config()
// Reset preview canvases. If the print has been invalidated, the preview canvases will be cleared.
// Otherwise they will be just refreshed.
this->gcode_preview_data.reset();
- if (this->preview != nullptr)
- this->preview->reload_print();
- // We also need to reload 3D scene because of the wipe tower preview box
- if (this->config->opt_bool("wipe_tower")) {
-// std::vector<int> selections = this->collect_selections();
-// Slic3r::_3DScene::set_objects_selections(this->canvas3D, selections);
-// Slic3r::_3DScene::reload_scene(this->canvas3D, 1);
+ if (printer_technology == ptFFF) {
+ if (this->preview != nullptr)
+ this->preview->reload_print();
+ // We also need to reload 3D scene because of the wipe tower preview box
+ if (this->config->opt_bool("wipe_tower")) {
+ // std::vector<int> selections = this->collect_selections();
+ // Slic3r::_3DScene::set_objects_selections(this->canvas3D, selections);
+ // Slic3r::_3DScene::reload_scene(this->canvas3D, 1);
+ }
}
}
if (invalidated != Print::APPLY_STATUS_UNCHANGED && this->get_config("background_processing") == "1" &&
- this->print.num_object_instances() > 0 && this->background_process.start())
+ this->background_process.start())
this->statusbar()->set_cancel_callback([this]() {
this->statusbar()->set_status_text(L("Cancelling"));
this->background_process.stop();
@@ -1557,13 +1564,13 @@ void Plater::priv::start_background_process()
{
if (this->background_process.running())
return;
- // return if ! @{$self->{objects}} || $self->{background_slicing_process}->running;
// Don't start process thread if Print is not valid.
- std::string err = this->q->print().validate();
+ std::string err = this->background_process.validate();
if (! err.empty()) {
this->statusbar()->set_status_text(err);
} else {
// Copy the names of active presets into the placeholder parser.
+ //FIXME how to generate a file name for the SLA printers?
wxGetApp().preset_bundle->export_selections(this->q->print().placeholder_parser());
// Start the background process.
this->background_process.start();
@@ -2052,7 +2059,7 @@ void Plater::export_gcode(fs::path output_path)
std::string err = wxGetApp().preset_bundle->full_config().validate();
if (err.empty())
- err = p->print.validate();
+ err = p->background_process.validate();
if (! err.empty()) {
// The config is not valid
GUI::show_error(this, _(err));
@@ -2198,7 +2205,9 @@ void Plater::on_config_change(const DynamicPrintConfig &config)
bool update_scheduled = false;
for (auto opt_key : p->config->diff(config)) {
p->config->set_key_value(opt_key, config.option(opt_key)->clone());
- if (opt_key == "bed_shape") {
+ if (opt_key == "printer_technology")
+ p->background_process.select_technology(config.opt_enum<PrinterTechnology>(opt_key));
+ else if (opt_key == "bed_shape") {
if (p->canvas3D) _3DScene::set_bed_shape(p->canvas3D, p->config->option<ConfigOptionPoints>(opt_key)->values);
if (p->preview) p->preview->set_bed_shape(p->config->option<ConfigOptionPoints>(opt_key)->values);
update_scheduled = true;
diff --git a/src/slic3r/GUI/Preset.cpp b/src/slic3r/GUI/Preset.cpp
index 892b391c2..b6d19b8ef 100644
--- a/src/slic3r/GUI/Preset.cpp
+++ b/src/slic3r/GUI/Preset.cpp
@@ -1039,7 +1039,7 @@ std::string PresetCollection::path_from_name(const std::string &new_name) const
const Preset& PrinterPresetCollection::default_preset_for(const DynamicPrintConfig &config) const
{
const ConfigOptionEnumGeneric *opt_printer_technology = config.opt<ConfigOptionEnumGeneric>("printer_technology");
- return this->default_preset((opt_printer_technology == nullptr || opt_printer_technology->value == 0) ? 0 : 1);
+ return this->default_preset((opt_printer_technology == nullptr || opt_printer_technology->value == ptFFF) ? 0 : 1);
}
} // namespace Slic3r
diff --git a/src/slic3r/GUI/PresetBundle.cpp b/src/slic3r/GUI/PresetBundle.cpp
index f51e9f647..bd7e7ab13 100644
--- a/src/slic3r/GUI/PresetBundle.cpp
+++ b/src/slic3r/GUI/PresetBundle.cpp
@@ -524,6 +524,8 @@ DynamicPrintConfig PresetBundle::full_fff_config() const
};
add_if_some_non_empty(std::move(compatible_printers_condition), "compatible_printers_condition_cummulative");
add_if_some_non_empty(std::move(inherits), "inherits_cummulative");
+
+ out.option<ConfigOptionEnumGeneric>("printer_technology", true)->value = ptFFF;
return out;
}
@@ -566,7 +568,9 @@ DynamicPrintConfig PresetBundle::full_sla_config() const
};
add_if_some_non_empty(std::move(compatible_printers_condition), "compatible_printers_condition_cummulative");
add_if_some_non_empty(std::move(inherits), "inherits_cummulative");
- return out;
+
+ out.option<ConfigOptionEnumGeneric>("printer_technology", true)->value = ptSLA;
+ return out;
}
// Load an external config file containing the print, filament and printer presets.
diff --git a/src/slic3r/GUI/RammingChart.cpp b/src/slic3r/GUI/RammingChart.cpp
index 8954ff93b..8fadfa867 100644
--- a/src/slic3r/GUI/RammingChart.cpp
+++ b/src/slic3r/GUI/RammingChart.cpp
@@ -52,7 +52,7 @@ void Chart::draw() {
// draw x-axis:
float last_mark = -10000;
- for (float math_x=int(visible_area.m_x*10)/10 ; math_x < (visible_area.m_x+visible_area.m_width) ; math_x+=0.1) {
+ for (float math_x=int(visible_area.m_x*10)/10 ; math_x < (visible_area.m_x+visible_area.m_width) ; math_x+=0.1f) {
int x = math_to_screen(wxPoint2DDouble(math_x,visible_area.m_y)).x;
int y = m_rect.GetBottom();
if (x-last_mark < 50) continue;
diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp
index ff681d223..ebde3bb42 100644
--- a/src/slic3r/GUI/Tab.cpp
+++ b/src/slic3r/GUI/Tab.cpp
@@ -2327,7 +2327,7 @@ void Tab::update_page_tree_visibility()
// Called by the UI combo box when the user switches profiles.
// Select a preset by a name.If !defined(name), then the default preset is selected.
// If the current profile is modified, user is asked to save the changes.
-void Tab::select_preset(std::string preset_name /*= ""*/)
+void Tab::select_preset(std::string preset_name)
{
// If no name is provided, select the "-- default --" preset.
if (preset_name.empty())
diff --git a/src/slic3r/Utils/Bonjour.cpp b/src/slic3r/Utils/Bonjour.cpp
index 09d9b5873..bfd9d4828 100644
--- a/src/slic3r/Utils/Bonjour.cpp
+++ b/src/slic3r/Utils/Bonjour.cpp
@@ -677,7 +677,7 @@ void Bonjour::priv::lookup_perform()
socket.async_receive_from(asio::buffer(buffer, buffer.size()), recv_from, recv_handler);
}
}
- } catch (std::exception& e) {
+ } catch (std::exception& /* e */) {
}
}
diff --git a/src/slic3r/Utils/FixModelByWin10.cpp b/src/slic3r/Utils/FixModelByWin10.cpp
index 16787f0f5..cec0802bd 100644
--- a/src/slic3r/Utils/FixModelByWin10.cpp
+++ b/src/slic3r/Utils/FixModelByWin10.cpp
@@ -4,6 +4,16 @@
# define NOMINMAX
#endif
+// Windows Runtime
+#include <roapi.h>
+// for ComPtr
+#include <wrl/client.h>
+
+// from C:/Program Files (x86)/Windows Kits/10/Include/10.0.17134.0/
+#include <winrt/robuffer.h>
+#include <winrt/windows.storage.provider.h>
+#include <winrt/windows.graphics.printing3d.h>
+
#include "FixModelByWin10.hpp"
#include <atomic>
@@ -18,14 +28,6 @@
#include <boost/nowide/convert.hpp>
#include <boost/nowide/cstdio.hpp>
-#include <roapi.h>
-// for ComPtr
-#include <wrl/client.h>
-// from C:/Program Files (x86)/Windows Kits/10/Include/10.0.17134.0/
-#include <winrt/robuffer.h>
-#include <winrt/windows.storage.provider.h>
-#include <winrt/windows.graphics.printing3d.h>
-
#include "libslic3r/Model.hpp"
#include "libslic3r/Print.hpp"
#include "libslic3r/Format/3mf.hpp"
@@ -370,7 +372,7 @@ void fix_model_by_win10_sdk_gui(const ModelObject &model_object, const Print &pr
success = true;
finished = true;
on_progress(L("Model repair finished"), 100);
- } catch (RepairCanceledException &ex) {
+ } catch (RepairCanceledException & /* ex */) {
canceled = true;
finished = true;
on_progress(L("Model repair canceled"), 100);
diff --git a/src/slic3r/Utils/HexFile.cpp b/src/slic3r/Utils/HexFile.cpp
index 282c647bd..9e0803325 100644
--- a/src/slic3r/Utils/HexFile.cpp
+++ b/src/slic3r/Utils/HexFile.cpp
@@ -76,7 +76,7 @@ HexFile::HexFile(fs::path path) :
pt::ptree ptree;
try {
pt::read_ini(header_ini, ptree);
- } catch (std::exception &e) {
+ } catch (std::exception & /* e */) {
return;
}
diff --git a/src/slic3r/pchheader.hpp b/src/slic3r/pchheader.hpp
index e0a1802d5..3b321d960 100644
--- a/src/slic3r/pchheader.hpp
+++ b/src/slic3r/pchheader.hpp
@@ -87,6 +87,11 @@
#include <tbb/parallel_for.h>
#include <tbb/spin_mutex.h>
+#ifdef _MSC_VER
+ // avoid some "macro redefinition" warnings
+ #include <urlmon.h>
+#endif /* _MSC_VER */
+
#include <wx/app.h>
#include <wx/bitmap.h>
#include <wx/bmpbuttn.h>