mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-08-01 04:22:04 +08:00
New gcode visualization integration - Fixed management of gcode preview view type
This commit is contained in:
parent
9362a7047a
commit
13f9d6f28e
@ -4747,6 +4747,22 @@ void GCodeViewer::render_legend(float& legend_height)
|
|||||||
return std::make_pair(it->second.first * koef, it->second.second);
|
return std::make_pair(it->second.first * koef, it->second.second);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if ENABLE_NEW_GCODE_VIEWER
|
||||||
|
auto toggle_extrusion_role_visibility = [this](libvgcode::EGCodeExtrusionRole role) {
|
||||||
|
const libvgcode::Interval view_visible_range = m_viewer.get_view_visible_range();
|
||||||
|
const libvgcode::Interval view_enabled_range = m_viewer.get_view_enabled_range();
|
||||||
|
m_viewer.toggle_extrusion_role_visibility(role);
|
||||||
|
std::optional<int> view_visible_range_min;
|
||||||
|
std::optional<int> view_visible_range_max;
|
||||||
|
if (view_visible_range != view_enabled_range) {
|
||||||
|
view_visible_range_min = static_cast<int>(view_visible_range[0]);
|
||||||
|
view_visible_range_max = static_cast<int>(view_visible_range[1]);
|
||||||
|
}
|
||||||
|
wxGetApp().plater()->update_preview_moves_slider(view_visible_range_min, view_visible_range_max);
|
||||||
|
wxGetApp().plater()->get_current_canvas3D()->set_as_dirty();
|
||||||
|
};
|
||||||
|
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||||
|
|
||||||
// data used to properly align items in columns when showing time
|
// data used to properly align items in columns when showing time
|
||||||
std::array<float, 4> offsets = { 0.0f, 0.0f, 0.0f, 0.0f };
|
std::array<float, 4> offsets = { 0.0f, 0.0f, 0.0f, 0.0f };
|
||||||
std::vector<std::string> labels;
|
std::vector<std::string> labels;
|
||||||
@ -4903,9 +4919,12 @@ void GCodeViewer::render_legend(float& legend_height)
|
|||||||
|
|
||||||
#if ENABLE_NEW_GCODE_VIEWER
|
#if ENABLE_NEW_GCODE_VIEWER
|
||||||
if (curr_view_type_i != new_view_type_i) {
|
if (curr_view_type_i != new_view_type_i) {
|
||||||
m_viewer.set_view_type(static_cast<libvgcode::EViewType>(new_view_type_i));
|
enable_view_type_cache_load(false);
|
||||||
|
set_view_type(static_cast<libvgcode::EViewType>(new_view_type_i));
|
||||||
|
enable_view_type_cache_load(true);
|
||||||
wxGetApp().plater()->set_keep_current_preview_type(true);
|
wxGetApp().plater()->set_keep_current_preview_type(true);
|
||||||
wxGetApp().plater()->refresh_print();
|
wxGetApp().plater()->get_current_canvas3D()->set_as_dirty();
|
||||||
|
wxGetApp().plater()->get_current_canvas3D()->request_extra_frame();
|
||||||
view_type_changed = true;
|
view_type_changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4960,19 +4979,7 @@ void GCodeViewer::render_legend(float& legend_height)
|
|||||||
|
|
||||||
append_item(EItemType::Rect, libvgcode::convert(m_viewer.get_extrusion_role_color(role)), labels[i],
|
append_item(EItemType::Rect, libvgcode::convert(m_viewer.get_extrusion_role_color(role)), labels[i],
|
||||||
visible, times[i], percents[i], max_time_percent, offsets, used_filaments_m[i], used_filaments_g[i],
|
visible, times[i], percents[i], max_time_percent, offsets, used_filaments_m[i], used_filaments_g[i],
|
||||||
[this, role]() {
|
[role, toggle_extrusion_role_visibility]() { toggle_extrusion_role_visibility(role); }
|
||||||
const libvgcode::Interval view_visible_range = m_viewer.get_view_visible_range();
|
|
||||||
const libvgcode::Interval view_enabled_range = m_viewer.get_view_enabled_range();
|
|
||||||
m_viewer.toggle_extrusion_role_visibility((libvgcode::EGCodeExtrusionRole)role);
|
|
||||||
std::optional<int> view_visible_range_min;
|
|
||||||
std::optional<int> view_visible_range_max;
|
|
||||||
if (view_visible_range != view_enabled_range) {
|
|
||||||
view_visible_range_min = static_cast<int>(view_visible_range[0]);
|
|
||||||
view_visible_range_max = static_cast<int>(view_visible_range[1]);
|
|
||||||
}
|
|
||||||
wxGetApp().plater()->update_preview_moves_slider(view_visible_range_min, view_visible_range_max);
|
|
||||||
wxGetApp().plater()->get_current_canvas3D()->set_as_dirty();
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
#else
|
#else
|
||||||
max_time_percent = std::max(max_time_percent, time_mode.travel_time / time_mode.time);
|
max_time_percent = std::max(max_time_percent, time_mode.travel_time / time_mode.time);
|
||||||
@ -5430,12 +5437,12 @@ void GCodeViewer::render_legend(float& legend_height)
|
|||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
if (imgui.button(btn_text, ImVec2(-1.0f, 0.0f), true)) {
|
if (imgui.button(btn_text, ImVec2(-1.0f, 0.0f), true)) {
|
||||||
#if ENABLE_NEW_GCODE_VIEWER
|
#if ENABLE_NEW_GCODE_VIEWER
|
||||||
m_viewer.toggle_extrusion_role_visibility((libvgcode::EGCodeExtrusionRole)GCodeExtrusionRole::Custom);
|
toggle_extrusion_role_visibility(libvgcode::EGCodeExtrusionRole::Custom);
|
||||||
#else
|
#else
|
||||||
m_extrusions.role_visibility_flags = custom_visible ? m_extrusions.role_visibility_flags & ~(1 << int(GCodeExtrusionRole::Custom)) :
|
m_extrusions.role_visibility_flags = custom_visible ? m_extrusions.role_visibility_flags & ~(1 << int(GCodeExtrusionRole::Custom)) :
|
||||||
m_extrusions.role_visibility_flags | (1 << int(GCodeExtrusionRole::Custom));
|
m_extrusions.role_visibility_flags | (1 << int(GCodeExtrusionRole::Custom));
|
||||||
#endif // ENABLE_NEW_GCODE_VIEWER
|
|
||||||
wxGetApp().plater()->refresh_print();
|
wxGetApp().plater()->refresh_print();
|
||||||
|
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -866,6 +866,13 @@ private:
|
|||||||
#endif // ENABLE_COG_AND_TOOL_MARKERS
|
#endif // ENABLE_COG_AND_TOOL_MARKERS
|
||||||
bool m_legend_visible{ true };
|
bool m_legend_visible{ true };
|
||||||
bool m_legend_enabled{ true };
|
bool m_legend_enabled{ true };
|
||||||
|
struct ViewTypeCache
|
||||||
|
{
|
||||||
|
bool write{ false };
|
||||||
|
bool load{ false };
|
||||||
|
libvgcode::EViewType value{ libvgcode::EViewType::FeatureType };
|
||||||
|
};
|
||||||
|
ViewTypeCache m_view_type_cache;
|
||||||
#else
|
#else
|
||||||
EViewType m_view_type{ EViewType::FeatureType };
|
EViewType m_view_type{ EViewType::FeatureType };
|
||||||
bool m_legend_enabled{ true };
|
bool m_legend_enabled{ true };
|
||||||
@ -974,8 +981,18 @@ public:
|
|||||||
bool is_contained_in_bed() const { return m_contained_in_bed; }
|
bool is_contained_in_bed() const { return m_contained_in_bed; }
|
||||||
|
|
||||||
#if ENABLE_NEW_GCODE_VIEWER
|
#if ENABLE_NEW_GCODE_VIEWER
|
||||||
void set_view_type(libvgcode::EViewType type) { m_viewer.set_view_type(type); }
|
void set_view_type(libvgcode::EViewType type) {
|
||||||
|
m_viewer.set_view_type((m_view_type_cache.load && m_view_type_cache.value != type) ? m_view_type_cache.value : type);
|
||||||
|
const libvgcode::EViewType view_type = get_view_type();
|
||||||
|
if (m_view_type_cache.write && m_view_type_cache.value != view_type)
|
||||||
|
m_view_type_cache.value = view_type;
|
||||||
|
}
|
||||||
|
|
||||||
libvgcode::EViewType get_view_type() const { return m_viewer.get_view_type(); }
|
libvgcode::EViewType get_view_type() const { return m_viewer.get_view_type(); }
|
||||||
|
void enable_view_type_cache_load(bool enable) { m_view_type_cache.load = enable; }
|
||||||
|
void enable_view_type_cache_write(bool enable) { m_view_type_cache.write = enable; }
|
||||||
|
bool is_view_type_cache_load_enabled() const { return m_view_type_cache.load; }
|
||||||
|
bool is_view_type_cache_write_enabled() const { return m_view_type_cache.write; }
|
||||||
#else
|
#else
|
||||||
EViewType get_view_type() const { return m_view_type; }
|
EViewType get_view_type() const { return m_view_type; }
|
||||||
void set_view_type(EViewType type) {
|
void set_view_type(EViewType type) {
|
||||||
|
@ -2691,6 +2691,9 @@ void GLCanvas3D::load_gcode_preview(const GCodeProcessorResult& gcode_result, co
|
|||||||
{
|
{
|
||||||
#if ENABLE_NEW_GCODE_VIEWER
|
#if ENABLE_NEW_GCODE_VIEWER
|
||||||
m_gcode_viewer.enable_legend(true);
|
m_gcode_viewer.enable_legend(true);
|
||||||
|
m_gcode_viewer.enable_view_type_cache_write(true);
|
||||||
|
m_gcode_viewer.enable_view_type_cache_load(true);
|
||||||
|
m_gcode_viewer.set_view_type(m_gcode_viewer.get_view_type());
|
||||||
m_gcode_viewer.load_as_gcode(gcode_result, *this->fff_print(), str_tool_colors);
|
m_gcode_viewer.load_as_gcode(gcode_result, *this->fff_print(), str_tool_colors);
|
||||||
m_gcode_layers_times_cache = m_gcode_viewer.get_layers_times();
|
m_gcode_layers_times_cache = m_gcode_viewer.get_layers_times();
|
||||||
#else
|
#else
|
||||||
@ -2748,6 +2751,9 @@ void GLCanvas3D::load_preview(const std::vector<std::string>& str_tool_colors, c
|
|||||||
|
|
||||||
// send data to the viewer
|
// send data to the viewer
|
||||||
m_gcode_viewer.enable_legend(false);
|
m_gcode_viewer.enable_legend(false);
|
||||||
|
m_gcode_viewer.enable_view_type_cache_write(false);
|
||||||
|
m_gcode_viewer.enable_view_type_cache_load(false);
|
||||||
|
m_gcode_viewer.set_view_type(libvgcode::EViewType::FeatureType);
|
||||||
m_gcode_viewer.load_as_preview(std::move(data), str_tool_colors);
|
m_gcode_viewer.load_as_preview(std::move(data), str_tool_colors);
|
||||||
#else
|
#else
|
||||||
const BuildVolume& build_volume = m_bed.build_volume();
|
const BuildVolume& build_volume = m_bed.build_volume();
|
||||||
|
@ -874,6 +874,10 @@ public:
|
|||||||
#if ENABLE_NEW_GCODE_VIEWER
|
#if ENABLE_NEW_GCODE_VIEWER
|
||||||
void set_gcode_view_type(libvgcode::EViewType type) { return m_gcode_viewer.set_view_type(type); }
|
void set_gcode_view_type(libvgcode::EViewType type) { return m_gcode_viewer.set_view_type(type); }
|
||||||
libvgcode::EViewType get_gcode_view_type() const { return m_gcode_viewer.get_view_type(); }
|
libvgcode::EViewType get_gcode_view_type() const { return m_gcode_viewer.get_view_type(); }
|
||||||
|
void enable_gcode_view_type_cache_load(bool enable) { m_gcode_viewer.enable_view_type_cache_load(enable); }
|
||||||
|
void enable_gcode_view_type_cache_write(bool enable) { m_gcode_viewer.enable_view_type_cache_write(enable); }
|
||||||
|
bool is_gcode_view_type_cache_load_enabled() const { return m_gcode_viewer.is_view_type_cache_load_enabled(); }
|
||||||
|
bool is_gcode_view_type_cache_write_enabled() const { return m_gcode_viewer.is_view_type_cache_write_enabled(); }
|
||||||
#else
|
#else
|
||||||
void refresh_gcode_preview_render_paths(bool keep_sequential_current_first, bool keep_sequential_current_last);
|
void refresh_gcode_preview_render_paths(bool keep_sequential_current_first, bool keep_sequential_current_last);
|
||||||
void set_gcode_view_preview_type(GCodeViewer::EViewType type) { return m_gcode_viewer.set_view_type(type); }
|
void set_gcode_view_preview_type(GCodeViewer::EViewType type) { return m_gcode_viewer.set_view_type(type); }
|
||||||
|
@ -305,6 +305,16 @@ void Preview::load_print(bool keep_z_range)
|
|||||||
Layout();
|
Layout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if ENABLE_NEW_GCODE_VIEWER
|
||||||
|
void Preview::reload_print()
|
||||||
|
{
|
||||||
|
if (!IsShown())
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_loaded = false;
|
||||||
|
load_print();
|
||||||
|
}
|
||||||
|
#else
|
||||||
void Preview::reload_print(bool keep_volumes)
|
void Preview::reload_print(bool keep_volumes)
|
||||||
{
|
{
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
@ -331,6 +341,7 @@ void Preview::reload_print(bool keep_volumes)
|
|||||||
|
|
||||||
load_print();
|
load_print();
|
||||||
}
|
}
|
||||||
|
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||||
|
|
||||||
void Preview::refresh_print()
|
void Preview::refresh_print()
|
||||||
{
|
{
|
||||||
@ -437,8 +448,12 @@ wxBoxSizer* Preview::create_layers_slider_sizer()
|
|||||||
m_schedule_background_process();
|
m_schedule_background_process();
|
||||||
|
|
||||||
m_keep_current_preview_type = false;
|
m_keep_current_preview_type = false;
|
||||||
|
#if ENABLE_NEW_GCODE_VIEWER
|
||||||
|
reload_print();
|
||||||
|
#else
|
||||||
reload_print(false);
|
reload_print(false);
|
||||||
});
|
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||||
|
});
|
||||||
|
|
||||||
return sizer;
|
return sizer;
|
||||||
}
|
}
|
||||||
@ -850,18 +865,20 @@ void Preview::load_print_as_fff(bool keep_z_range)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_NEW_GCODE_VIEWER
|
#if ENABLE_NEW_GCODE_VIEWER
|
||||||
const libvgcode::EViewType gcode_view_type = m_canvas->get_gcode_view_type();
|
libvgcode::EViewType gcode_view_type = m_canvas->get_gcode_view_type();
|
||||||
|
const bool gcode_preview_data_valid = !m_gcode_result->moves.empty();
|
||||||
|
const bool is_pregcode_preview = !gcode_preview_data_valid && wxGetApp().is_editor();
|
||||||
#else
|
#else
|
||||||
GCodeViewer::EViewType gcode_view_type = m_canvas->get_gcode_view_preview_type();
|
GCodeViewer::EViewType gcode_view_type = m_canvas->get_gcode_view_preview_type();
|
||||||
|
const bool gcode_preview_data_valid = !m_gcode_result->moves.empty();
|
||||||
#endif // ENABLE_NEW_GCODE_VIEWER
|
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||||
bool gcode_preview_data_valid = !m_gcode_result->moves.empty();
|
|
||||||
|
|
||||||
// Collect colors per extruder.
|
// Collect colors per extruder.
|
||||||
std::vector<std::string> colors;
|
std::vector<std::string> colors;
|
||||||
std::vector<CustomGCode::Item> color_print_values = {};
|
std::vector<CustomGCode::Item> color_print_values = {};
|
||||||
// set color print values, if it si selected "ColorPrint" view type
|
// set color print values, if it is selected "ColorPrint" view type
|
||||||
#if ENABLE_NEW_GCODE_VIEWER
|
#if ENABLE_NEW_GCODE_VIEWER
|
||||||
if (gcode_view_type == libvgcode::EViewType::ColorPrint) {
|
if (gcode_view_type == libvgcode::EViewType::ColorPrint || is_pregcode_preview) {
|
||||||
#else
|
#else
|
||||||
if (gcode_view_type == GCodeViewer::EViewType::ColorPrint) {
|
if (gcode_view_type == GCodeViewer::EViewType::ColorPrint) {
|
||||||
#endif // ENABLE_NEW_GCODE_VIEWER
|
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||||
@ -891,6 +908,10 @@ void Preview::load_print_as_fff(bool keep_z_range)
|
|||||||
if (gcode_preview_data_valid) {
|
if (gcode_preview_data_valid) {
|
||||||
// Load the real G-code preview.
|
// Load the real G-code preview.
|
||||||
m_canvas->load_gcode_preview(*m_gcode_result, colors);
|
m_canvas->load_gcode_preview(*m_gcode_result, colors);
|
||||||
|
#if ENABLE_NEW_GCODE_VIEWER
|
||||||
|
// the view type may have been changed by the call m_canvas->load_gcode_preview()
|
||||||
|
gcode_view_type = m_canvas->get_gcode_view_type();
|
||||||
|
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||||
m_left_sizer->Layout();
|
m_left_sizer->Layout();
|
||||||
Refresh();
|
Refresh();
|
||||||
zs = m_canvas->get_gcode_layers_zs();
|
zs = m_canvas->get_gcode_layers_zs();
|
||||||
@ -898,9 +919,18 @@ void Preview::load_print_as_fff(bool keep_z_range)
|
|||||||
m_left_sizer->Show(m_bottom_toolbar_panel);
|
m_left_sizer->Show(m_bottom_toolbar_panel);
|
||||||
m_loaded = true;
|
m_loaded = true;
|
||||||
}
|
}
|
||||||
|
#if ENABLE_NEW_GCODE_VIEWER
|
||||||
|
else if (is_pregcode_preview) {
|
||||||
|
#else
|
||||||
else if (wxGetApp().is_editor()) {
|
else if (wxGetApp().is_editor()) {
|
||||||
|
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||||
// Load the initial preview based on slices, not the final G-code.
|
// Load the initial preview based on slices, not the final G-code.
|
||||||
m_canvas->load_preview(colors, color_print_values);
|
m_canvas->load_preview(colors, color_print_values);
|
||||||
|
#if ENABLE_NEW_GCODE_VIEWER
|
||||||
|
// the view type has been changed by the call m_canvas->load_gcode_preview()
|
||||||
|
if (gcode_view_type == libvgcode::EViewType::ColorPrint && !color_print_values.empty())
|
||||||
|
m_canvas->set_gcode_view_type(gcode_view_type);
|
||||||
|
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||||
m_left_sizer->Hide(m_bottom_toolbar_panel);
|
m_left_sizer->Hide(m_bottom_toolbar_panel);
|
||||||
m_left_sizer->Layout();
|
m_left_sizer->Layout();
|
||||||
Refresh();
|
Refresh();
|
||||||
@ -917,10 +947,10 @@ void Preview::load_print_as_fff(bool keep_z_range)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!zs.empty() && !m_keep_current_preview_type) {
|
if (!zs.empty() && !m_keep_current_preview_type) {
|
||||||
unsigned int number_extruders = wxGetApp().is_editor() ?
|
const unsigned int number_extruders = wxGetApp().is_editor() ?
|
||||||
(unsigned int)print->extruders().size() :
|
(unsigned int)print->extruders().size() :
|
||||||
m_canvas->get_gcode_extruders_count();
|
m_canvas->get_gcode_extruders_count();
|
||||||
std::vector<Item> gcodes = wxGetApp().is_editor() ?
|
const std::vector<Item> gcodes = wxGetApp().is_editor() ?
|
||||||
wxGetApp().plater()->model().custom_gcode_per_print_z.gcodes :
|
wxGetApp().plater()->model().custom_gcode_per_print_z.gcodes :
|
||||||
m_canvas->get_custom_gcode_per_print_z();
|
m_canvas->get_custom_gcode_per_print_z();
|
||||||
const bool contains_color_gcodes = std::any_of(std::begin(gcodes), std::end(gcodes),
|
const bool contains_color_gcodes = std::any_of(std::begin(gcodes), std::end(gcodes),
|
||||||
@ -936,13 +966,20 @@ void Preview::load_print_as_fff(bool keep_z_range)
|
|||||||
#endif // ENABLE_NEW_GCODE_VIEWER
|
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||||
if (choice != gcode_view_type) {
|
if (choice != gcode_view_type) {
|
||||||
#if ENABLE_NEW_GCODE_VIEWER
|
#if ENABLE_NEW_GCODE_VIEWER
|
||||||
|
const bool gcode_view_type_cache_load = m_canvas->is_gcode_view_type_cache_load_enabled();
|
||||||
|
if (gcode_view_type_cache_load)
|
||||||
|
m_canvas->enable_gcode_view_type_cache_load(false);
|
||||||
m_canvas->set_gcode_view_type(choice);
|
m_canvas->set_gcode_view_type(choice);
|
||||||
|
if (gcode_view_type_cache_load)
|
||||||
|
m_canvas->enable_gcode_view_type_cache_load(true);
|
||||||
#else
|
#else
|
||||||
m_canvas->set_gcode_view_preview_type(choice);
|
m_canvas->set_gcode_view_preview_type(choice);
|
||||||
#endif // ENABLE_NEW_GCODE_VIEWER
|
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||||
if (wxGetApp().is_gcode_viewer())
|
if (wxGetApp().is_gcode_viewer())
|
||||||
m_keep_current_preview_type = true;
|
m_keep_current_preview_type = true;
|
||||||
|
#if !ENABLE_NEW_GCODE_VIEWER
|
||||||
refresh_print();
|
refresh_print();
|
||||||
|
#endif // !ENABLE_NEW_GCODE_VIEWER
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,11 +89,13 @@ class Preview : public wxPanel
|
|||||||
BackgroundSlicingProcess* m_process;
|
BackgroundSlicingProcess* m_process;
|
||||||
GCodeProcessorResult* m_gcode_result;
|
GCodeProcessorResult* m_gcode_result;
|
||||||
|
|
||||||
|
#if !ENABLE_NEW_GCODE_VIEWER
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
// We are getting mysterious crashes on Linux in gtk due to OpenGL context activation GH #1874 #1955.
|
// We are getting mysterious crashes on Linux in gtk due to OpenGL context activation GH #1874 #1955.
|
||||||
// So we are applying a workaround here.
|
// So we are applying a workaround here.
|
||||||
bool m_volumes_cleanup_required { false };
|
bool m_volumes_cleanup_required { false };
|
||||||
#endif /* __linux__ */
|
#endif /* __linux__ */
|
||||||
|
#endif // !ENABLE_NEW_GCODE_VIEWER
|
||||||
|
|
||||||
// Calling this function object forces Plater::schedule_background_process.
|
// Calling this function object forces Plater::schedule_background_process.
|
||||||
std::function<void()> m_schedule_background_process;
|
std::function<void()> m_schedule_background_process;
|
||||||
@ -138,7 +140,11 @@ public:
|
|||||||
|
|
||||||
void load_gcode_shells();
|
void load_gcode_shells();
|
||||||
void load_print(bool keep_z_range = false);
|
void load_print(bool keep_z_range = false);
|
||||||
|
#if ENABLE_NEW_GCODE_VIEWER
|
||||||
|
void reload_print();
|
||||||
|
#else
|
||||||
void reload_print(bool keep_volumes = false);
|
void reload_print(bool keep_volumes = false);
|
||||||
|
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||||
void refresh_print();
|
void refresh_print();
|
||||||
|
|
||||||
void msw_rescale();
|
void msw_rescale();
|
||||||
|
@ -2707,7 +2707,11 @@ void Plater::priv::set_current_panel(wxPanel* panel)
|
|||||||
q->reslice();
|
q->reslice();
|
||||||
}
|
}
|
||||||
// keeps current gcode preview, if any
|
// keeps current gcode preview, if any
|
||||||
|
#if ENABLE_NEW_GCODE_VIEWER
|
||||||
|
preview->reload_print();
|
||||||
|
#else
|
||||||
preview->reload_print(true);
|
preview->reload_print(true);
|
||||||
|
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||||
}
|
}
|
||||||
|
|
||||||
preview->set_as_dirty();
|
preview->set_as_dirty();
|
||||||
@ -4020,7 +4024,11 @@ void Plater::load_gcode(const wxString& filename)
|
|||||||
// cleanup view before to start loading/processing
|
// cleanup view before to start loading/processing
|
||||||
p->gcode_result.reset();
|
p->gcode_result.reset();
|
||||||
reset_gcode_toolpaths();
|
reset_gcode_toolpaths();
|
||||||
|
#if ENABLE_NEW_GCODE_VIEWER
|
||||||
|
p->preview->reload_print();
|
||||||
|
#else
|
||||||
p->preview->reload_print(false);
|
p->preview->reload_print(false);
|
||||||
|
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||||
p->get_current_canvas3D()->render();
|
p->get_current_canvas3D()->render();
|
||||||
|
|
||||||
wxBusyCursor wait;
|
wxBusyCursor wait;
|
||||||
@ -4041,7 +4049,11 @@ void Plater::load_gcode(const wxString& filename)
|
|||||||
// show results
|
// show results
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
#if ENABLE_NEW_GCODE_VIEWER
|
||||||
|
p->preview->reload_print();
|
||||||
|
#else
|
||||||
p->preview->reload_print(false);
|
p->preview->reload_print(false);
|
||||||
|
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||||
}
|
}
|
||||||
catch (const std::exception&)
|
catch (const std::exception&)
|
||||||
{
|
{
|
||||||
@ -4049,7 +4061,11 @@ void Plater::load_gcode(const wxString& filename)
|
|||||||
p->gcode_result.reset();
|
p->gcode_result.reset();
|
||||||
reset_gcode_toolpaths();
|
reset_gcode_toolpaths();
|
||||||
set_default_bed_shape();
|
set_default_bed_shape();
|
||||||
|
#if ENABLE_NEW_GCODE_VIEWER
|
||||||
|
p->preview->reload_print();
|
||||||
|
#else
|
||||||
p->preview->reload_print(false);
|
p->preview->reload_print(false);
|
||||||
|
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||||
p->get_current_canvas3D()->render();
|
p->get_current_canvas3D()->render();
|
||||||
MessageDialog(this, _L("The selected file") + ":\n" + filename + "\n" + _L("does not contain valid gcode."),
|
MessageDialog(this, _L("The selected file") + ":\n" + filename + "\n" + _L("does not contain valid gcode."),
|
||||||
wxString(GCODEVIEWER_APP_NAME) + " - " + _L("Error while loading .gcode file"), wxOK | wxICON_WARNING | wxCENTRE).ShowModal();
|
wxString(GCODEVIEWER_APP_NAME) + " - " + _L("Error while loading .gcode file"), wxOK | wxICON_WARNING | wxCENTRE).ShowModal();
|
||||||
@ -5791,7 +5807,11 @@ void Plater::reslice()
|
|||||||
if (clean_gcode_toolpaths)
|
if (clean_gcode_toolpaths)
|
||||||
reset_gcode_toolpaths();
|
reset_gcode_toolpaths();
|
||||||
|
|
||||||
|
#if ENABLE_NEW_GCODE_VIEWER
|
||||||
|
p->preview->reload_print();
|
||||||
|
#else
|
||||||
p->preview->reload_print(!clean_gcode_toolpaths);
|
p->preview->reload_print(!clean_gcode_toolpaths);
|
||||||
|
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||||
}
|
}
|
||||||
|
|
||||||
void Plater::reslice_until_step_inner(int step, const ModelObject &object, bool postpone_error_messages)
|
void Plater::reslice_until_step_inner(int step, const ModelObject &object, bool postpone_error_messages)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user