mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-07-30 22:21:59 +08:00
New gcode visualization integration - Do not reset visible range when toggling options/roles visibility
This commit is contained in:
parent
038bb05d1c
commit
0faaf6b683
@ -4811,8 +4811,16 @@ void GCodeViewer::render_legend(float& legend_height)
|
||||
append_item(EItemType::Rect, libvgcode::convert(libvgcode::Extrusion_Roles_Colors[static_cast<size_t>(role)]), labels[i],
|
||||
visible, times[i], percents[i], max_time_percent, offsets, used_filaments_m[i], used_filaments_g[i],
|
||||
[this, role]() {
|
||||
const std::array<uint32_t, 2> view_visible_range = m_new_viewer.get_view_visible_range();
|
||||
const std::array<uint32_t, 2> view_enabled_range = m_new_viewer.get_view_enabled_range();
|
||||
m_new_viewer.toggle_extrusion_role_visibility((libvgcode::EGCodeExtrusionRole)role);
|
||||
wxGetApp().plater()->update_preview_moves_slider();
|
||||
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();
|
||||
}
|
||||
);
|
||||
@ -5527,20 +5535,38 @@ void GCodeViewer::render_legend(float& legend_height)
|
||||
if (imgui.draw_radio_button(name, 1.5f * icon_size, active, draw_callback)) {
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#if ENABLE_NEW_GCODE_VIEWER
|
||||
const std::array<uint32_t, 2> view_visible_range = m_new_viewer.get_view_visible_range();
|
||||
const std::array<uint32_t, 2> view_enabled_range = m_new_viewer.get_view_enabled_range();
|
||||
bool keep_visible_range = false;
|
||||
#if ENABLE_NEW_GCODE_VIEWER_NO_COG_AND_TOOL_MARKERS
|
||||
switch (type)
|
||||
{
|
||||
case Preview::OptionType::CenterOfGravity: { m_cog.set_visible(!active); break; }
|
||||
case Preview::OptionType::ToolMarker: { m_sequential_view.marker.set_visible(!active); break; }
|
||||
case Preview::OptionType::Shells: { m_shells.visible = !active; break; }
|
||||
default: { m_new_viewer.toggle_option_visibility(libvgcode::convert(type)); break; }
|
||||
default: {
|
||||
m_new_viewer.toggle_option_visibility(libvgcode::convert(type));
|
||||
if (view_visible_range != view_enabled_range)
|
||||
keep_visible_range = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
#else
|
||||
if (type == Preview::OptionType::Shells)
|
||||
m_shells.visible = !active;
|
||||
else
|
||||
else {
|
||||
m_new_viewer.toggle_option_visibility(libvgcode::convert(type));
|
||||
if (view_visible_range != view_enabled_range)
|
||||
keep_visible_range = true;
|
||||
}
|
||||
#endif // ENABLE_NEW_GCODE_VIEWER_NO_COG_AND_TOOL_MARKERS
|
||||
std::optional<int> view_visible_range_min;
|
||||
std::optional<int> view_visible_range_max;
|
||||
if (keep_visible_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);
|
||||
#else
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
unsigned int new_flags = set_flag(flags, flag, !active);
|
||||
@ -5554,10 +5580,10 @@ void GCodeViewer::render_legend(float& legend_height)
|
||||
bool keep_last = m_sequential_view.current.last != m_sequential_view.global.last;
|
||||
wxGetApp().plater()->get_current_canvas3D()->refresh_gcode_preview_render_paths(keep_first, keep_last);
|
||||
}
|
||||
wxGetApp().plater()->update_preview_moves_slider();
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
wxGetApp().plater()->update_preview_moves_slider();
|
||||
}
|
||||
|
||||
if (ImGui::IsItemHovered()) {
|
||||
|
@ -710,7 +710,15 @@ void Preview::update_layers_slider_from_canvas(wxKeyEvent& event)
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#if ENABLE_NEW_GCODE_VIEWER
|
||||
void Preview::update_moves_slider(std::optional<int> visible_range_min, std::optional<int> visible_range_max)
|
||||
#else
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
void Preview::update_moves_slider()
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
{
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#if ENABLE_NEW_GCODE_VIEWER
|
||||
@ -723,6 +731,10 @@ void Preview::update_moves_slider()
|
||||
std::vector<double> alternate_values;
|
||||
alternate_values.reserve(range_size);
|
||||
|
||||
std::optional<uint32_t> visible_range_min_id;
|
||||
std::optional<uint32_t> visible_range_max_id;
|
||||
uint32_t counter = 0;
|
||||
|
||||
for (uint32_t i = range[0]; i <= range[1]; ++i) {
|
||||
const uint32_t gcode_id = m_canvas->get_gcode_vertex_at(static_cast<size_t>(i)).gcode_id;
|
||||
if (i > range[0]) {
|
||||
@ -738,12 +750,20 @@ void Preview::update_moves_slider()
|
||||
|
||||
values.emplace_back(static_cast<double>(i + 1));
|
||||
alternate_values.emplace_back(static_cast<double>(gcode_id));
|
||||
if (visible_range_min.has_value() && i + 1 == visible_range_min)
|
||||
visible_range_min_id = counter;
|
||||
else if (visible_range_max.has_value() && i + 1 == visible_range_max)
|
||||
visible_range_max_id = counter;
|
||||
++counter;
|
||||
}
|
||||
|
||||
const int span_min_id = visible_range_min_id.has_value() ? static_cast<int>(*visible_range_min_id) : 0;
|
||||
const int span_max_id = visible_range_max_id.has_value() ? static_cast<int>(*visible_range_max_id) : static_cast<int>(values.size()) - 1;
|
||||
|
||||
m_moves_slider->SetSliderValues(values);
|
||||
m_moves_slider->SetSliderAlternateValues(alternate_values);
|
||||
m_moves_slider->SetMaxValue(int(values.size()) - 1);
|
||||
m_moves_slider->SetSelectionSpan(values.front() - 1 - range[0], values.back() - 1 - range[0]);
|
||||
m_moves_slider->SetMaxValue(static_cast<int>(values.size()) - 1);
|
||||
m_moves_slider->SetSelectionSpan(span_min_id, span_max_id);
|
||||
#else
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
const GCodeViewer::SequentialView& view = m_canvas->get_gcode_sequential_view();
|
||||
|
@ -149,7 +149,15 @@ public:
|
||||
|
||||
bool is_loaded() const { return m_loaded; }
|
||||
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#if ENABLE_NEW_GCODE_VIEWER
|
||||
void update_moves_slider(std::optional<int> visible_range_min = std::nullopt, std::optional<int> visible_range_max = std::nullopt);
|
||||
#else
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
void update_moves_slider();
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
void enable_moves_slider(bool enable);
|
||||
void move_moves_slider(wxKeyEvent& evt);
|
||||
void hide_layers_slider();
|
||||
|
@ -40,12 +40,9 @@ void ViewRange::set_full(uint32_t min, uint32_t max)
|
||||
m_full.clamp(m_enabled);
|
||||
// force the visible range to stay inside the modified enabled range
|
||||
m_enabled.clamp(m_visible);
|
||||
if (new_max) {
|
||||
if (new_max)
|
||||
// force the enabled range to fill the extended full range
|
||||
m_enabled.set_max(max);
|
||||
// force the visible range to fill the extended enabled range
|
||||
m_visible.set_max(max);
|
||||
}
|
||||
}
|
||||
|
||||
const std::array<uint32_t, 2>& ViewRange::get_enabled() const
|
||||
|
@ -397,6 +397,9 @@ void ViewerImpl::reset()
|
||||
m_cog_marker.reset();
|
||||
#endif // !ENABLE_NEW_GCODE_VIEWER_NO_COG_AND_TOOL_MARKERS
|
||||
|
||||
m_enabled_segments_count = 0;
|
||||
m_enabled_options_count = 0;
|
||||
|
||||
delete_textures(m_enabled_options_tex_id);
|
||||
delete_buffers(m_enabled_options_buf_id);
|
||||
|
||||
@ -642,7 +645,7 @@ void ViewerImpl::update_colors()
|
||||
const uint32_t top_layer_id = m_settings.top_layer_only_view_range ? m_layers.get_view_range()[1] : 0;
|
||||
const bool color_top_layer_only = m_view_range.get_full()[1] != m_view_range.get_visible()[1];
|
||||
std::vector<float> colors(m_vertices.size());
|
||||
for (size_t i = 0; i < m_vertices.size(); i++) {
|
||||
for (size_t i = 0; i < m_vertices.size(); ++i) {
|
||||
colors[i] = (color_top_layer_only && m_vertices[i].layer_id < top_layer_id &&
|
||||
(!m_settings.spiral_vase_mode || i != m_view_range.get_enabled()[0])) ?
|
||||
encode_color(Dummy_Color) : encode_color(select_color(m_vertices[i]));
|
||||
@ -801,7 +804,7 @@ void ViewerImpl::toggle_option_visibility(EOptionType type)
|
||||
try {
|
||||
bool& value = m_settings.options_visibility.at(type);
|
||||
value = !value;
|
||||
m_settings.update_view_full_range = true;
|
||||
update_view_full_range();
|
||||
m_settings.update_enabled_entities = true;
|
||||
m_settings.update_colors = true;
|
||||
}
|
||||
@ -855,7 +858,7 @@ void ViewerImpl::set_view_visible_range(uint32_t min, uint32_t max)
|
||||
// when calling m_view_range.set_visible()
|
||||
update_view_full_range();
|
||||
m_view_range.set_visible(min, max);
|
||||
m_settings.update_enabled_entities = true;
|
||||
update_enabled_entities();
|
||||
m_settings.update_colors = true;
|
||||
}
|
||||
|
||||
@ -1165,7 +1168,10 @@ void ViewerImpl::update_view_full_range()
|
||||
}
|
||||
}
|
||||
|
||||
m_view_range.set_full(std::distance(m_vertices.begin(), first_it), std::distance(m_vertices.begin(), last_it));
|
||||
if (first_it != last_it)
|
||||
m_view_range.set_full(std::distance(m_vertices.begin(), first_it), std::distance(m_vertices.begin(), last_it));
|
||||
else
|
||||
m_view_range.set_full(Range());
|
||||
|
||||
if (m_settings.top_layer_only_view_range) {
|
||||
const std::array<uint32_t, 2>& full_range = m_view_range.get_full();
|
||||
|
@ -393,7 +393,15 @@ struct Plater::priv
|
||||
|
||||
void set_preview_layers_slider_values_range(int bottom, int top);
|
||||
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#if ENABLE_NEW_GCODE_VIEWER
|
||||
void update_preview_moves_slider(std::optional<int> visible_range_min = std::nullopt, std::optional<int> visible_range_max = std::nullopt);
|
||||
#else
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
void update_preview_moves_slider();
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
void enable_preview_moves_slider(bool enable);
|
||||
|
||||
void reset_gcode_toolpaths();
|
||||
@ -3316,10 +3324,21 @@ void Plater::priv::set_preview_layers_slider_values_range(int bottom, int top)
|
||||
preview->set_layers_slider_values_range(bottom, top);
|
||||
}
|
||||
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#if ENABLE_NEW_GCODE_VIEWER
|
||||
void Plater::priv::update_preview_moves_slider(std::optional<int> visible_range_min, std::optional<int> visible_range_max)
|
||||
{
|
||||
preview->update_moves_slider(visible_range_min, visible_range_max);
|
||||
}
|
||||
#else
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
void Plater::priv::update_preview_moves_slider()
|
||||
{
|
||||
preview->update_moves_slider();
|
||||
}
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
void Plater::priv::enable_preview_moves_slider(bool enable)
|
||||
{
|
||||
@ -6779,10 +6798,21 @@ void Plater::set_preview_layers_slider_values_range(int bottom, int top)
|
||||
p->set_preview_layers_slider_values_range(bottom, top);
|
||||
}
|
||||
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#if ENABLE_NEW_GCODE_VIEWER
|
||||
void Plater::update_preview_moves_slider(std::optional<int> visible_range_min, std::optional<int> visible_range_max)
|
||||
{
|
||||
p->update_preview_moves_slider(visible_range_min, visible_range_max);
|
||||
}
|
||||
#else
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
void Plater::update_preview_moves_slider()
|
||||
{
|
||||
p->update_preview_moves_slider();
|
||||
}
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
void Plater::enable_preview_moves_slider(bool enable)
|
||||
{
|
||||
|
@ -336,7 +336,15 @@ public:
|
||||
|
||||
void set_preview_layers_slider_values_range(int bottom, int top);
|
||||
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#if ENABLE_NEW_GCODE_VIEWER
|
||||
void update_preview_moves_slider(std::optional<int> visible_range_min = std::nullopt, std::optional<int> visible_range_max = std::nullopt);
|
||||
#else
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
void update_preview_moves_slider();
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
void enable_preview_moves_slider(bool enable);
|
||||
|
||||
void reset_gcode_toolpaths();
|
||||
|
Loading…
x
Reference in New Issue
Block a user