mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-22 06:04:01 -06:00
Merge branch 'master' of https://github.com/prusa3d/PrusaSlicer into et_sinking_contours
This commit is contained in:
commit
c9aa88db0d
10 changed files with 2 additions and 167 deletions
|
@ -836,11 +836,9 @@ void GCodeProcessor::apply_config(const PrintConfig& config)
|
||||||
m_time_processor.export_remaining_time_enabled = config.remaining_times.value;
|
m_time_processor.export_remaining_time_enabled = config.remaining_times.value;
|
||||||
m_use_volumetric_e = config.use_volumetric_e;
|
m_use_volumetric_e = config.use_volumetric_e;
|
||||||
|
|
||||||
#if ENABLE_START_GCODE_VISUALIZATION
|
|
||||||
const ConfigOptionFloatOrPercent* first_layer_height = config.option<ConfigOptionFloatOrPercent>("first_layer_height");
|
const ConfigOptionFloatOrPercent* first_layer_height = config.option<ConfigOptionFloatOrPercent>("first_layer_height");
|
||||||
if (first_layer_height != nullptr)
|
if (first_layer_height != nullptr)
|
||||||
m_first_layer_height = std::abs(first_layer_height->value);
|
m_first_layer_height = std::abs(first_layer_height->value);
|
||||||
#endif // ENABLE_START_GCODE_VISUALIZATION
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GCodeProcessor::apply_config(const DynamicPrintConfig& config)
|
void GCodeProcessor::apply_config(const DynamicPrintConfig& config)
|
||||||
|
@ -1065,11 +1063,9 @@ void GCodeProcessor::apply_config(const DynamicPrintConfig& config)
|
||||||
if (use_volumetric_e != nullptr)
|
if (use_volumetric_e != nullptr)
|
||||||
m_use_volumetric_e = use_volumetric_e->value;
|
m_use_volumetric_e = use_volumetric_e->value;
|
||||||
|
|
||||||
#if ENABLE_START_GCODE_VISUALIZATION
|
|
||||||
const ConfigOptionFloatOrPercent* first_layer_height = config.option<ConfigOptionFloatOrPercent>("first_layer_height");
|
const ConfigOptionFloatOrPercent* first_layer_height = config.option<ConfigOptionFloatOrPercent>("first_layer_height");
|
||||||
if (first_layer_height != nullptr)
|
if (first_layer_height != nullptr)
|
||||||
m_first_layer_height = std::abs(first_layer_height->value);
|
m_first_layer_height = std::abs(first_layer_height->value);
|
||||||
#endif // ENABLE_START_GCODE_VISUALIZATION
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GCodeProcessor::enable_stealth_time_estimator(bool enabled)
|
void GCodeProcessor::enable_stealth_time_estimator(bool enabled)
|
||||||
|
@ -1092,9 +1088,7 @@ void GCodeProcessor::reset()
|
||||||
m_wiping = false;
|
m_wiping = false;
|
||||||
|
|
||||||
m_line_id = 0;
|
m_line_id = 0;
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
m_last_line_id = 0;
|
m_last_line_id = 0;
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
m_feedrate = 0.0f;
|
m_feedrate = 0.0f;
|
||||||
m_width = 0.0f;
|
m_width = 0.0f;
|
||||||
m_height = 0.0f;
|
m_height = 0.0f;
|
||||||
|
@ -1115,10 +1109,8 @@ void GCodeProcessor::reset()
|
||||||
}
|
}
|
||||||
|
|
||||||
m_extruded_last_z = 0.0f;
|
m_extruded_last_z = 0.0f;
|
||||||
#if ENABLE_START_GCODE_VISUALIZATION
|
|
||||||
m_first_layer_height = 0.0f;
|
m_first_layer_height = 0.0f;
|
||||||
m_processing_start_custom_gcode = false;
|
m_processing_start_custom_gcode = false;
|
||||||
#endif // ENABLE_START_GCODE_VISUALIZATION
|
|
||||||
m_g1_line_id = 0;
|
m_g1_line_id = 0;
|
||||||
m_layer_id = 0;
|
m_layer_id = 0;
|
||||||
m_cp_color.reset();
|
m_cp_color.reset();
|
||||||
|
@ -1493,13 +1485,9 @@ void GCodeProcessor::process_tags(const std::string_view comment)
|
||||||
// extrusion role tag
|
// extrusion role tag
|
||||||
if (boost::starts_with(comment, reserved_tag(ETags::Role))) {
|
if (boost::starts_with(comment, reserved_tag(ETags::Role))) {
|
||||||
set_extrusion_role(ExtrusionEntity::string_to_role(comment.substr(reserved_tag(ETags::Role).length())));
|
set_extrusion_role(ExtrusionEntity::string_to_role(comment.substr(reserved_tag(ETags::Role).length())));
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
if (m_extrusion_role == erExternalPerimeter)
|
if (m_extrusion_role == erExternalPerimeter)
|
||||||
m_seams_detector.activate(true);
|
m_seams_detector.activate(true);
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
#if ENABLE_START_GCODE_VISUALIZATION
|
|
||||||
m_processing_start_custom_gcode = (m_extrusion_role == erCustom && m_g1_line_id == 0);
|
m_processing_start_custom_gcode = (m_extrusion_role == erCustom && m_g1_line_id == 0);
|
||||||
#endif // ENABLE_START_GCODE_VISUALIZATION
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1637,10 +1625,9 @@ bool GCodeProcessor::process_cura_tags(const std::string_view comment)
|
||||||
BOOST_LOG_TRIVIAL(warning) << "GCodeProcessor found unknown extrusion role: " << type;
|
BOOST_LOG_TRIVIAL(warning) << "GCodeProcessor found unknown extrusion role: " << type;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
if (m_extrusion_role == erExternalPerimeter)
|
if (m_extrusion_role == erExternalPerimeter)
|
||||||
m_seams_detector.activate(true);
|
m_seams_detector.activate(true);
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1705,9 +1692,7 @@ bool GCodeProcessor::process_simplify3d_tags(const std::string_view comment)
|
||||||
pos = cmt.find(" outer perimeter");
|
pos = cmt.find(" outer perimeter");
|
||||||
if (pos == 0) {
|
if (pos == 0) {
|
||||||
set_extrusion_role(erExternalPerimeter);
|
set_extrusion_role(erExternalPerimeter);
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
m_seams_detector.activate(true);
|
m_seams_detector.activate(true);
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1862,10 +1847,8 @@ bool GCodeProcessor::process_craftware_tags(const std::string_view comment)
|
||||||
BOOST_LOG_TRIVIAL(warning) << "GCodeProcessor found unknown extrusion role: " << type;
|
BOOST_LOG_TRIVIAL(warning) << "GCodeProcessor found unknown extrusion role: " << type;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
if (m_extrusion_role == erExternalPerimeter)
|
if (m_extrusion_role == erExternalPerimeter)
|
||||||
m_seams_detector.activate(true);
|
m_seams_detector.activate(true);
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1906,10 +1889,9 @@ bool GCodeProcessor::process_ideamaker_tags(const std::string_view comment)
|
||||||
BOOST_LOG_TRIVIAL(warning) << "GCodeProcessor found unknown extrusion role: " << type;
|
BOOST_LOG_TRIVIAL(warning) << "GCodeProcessor found unknown extrusion role: " << type;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
if (m_extrusion_role == erExternalPerimeter)
|
if (m_extrusion_role == erExternalPerimeter)
|
||||||
m_seams_detector.activate(true);
|
m_seams_detector.activate(true);
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1978,9 +1960,7 @@ bool GCodeProcessor::process_kissslicer_tags(const std::string_view comment)
|
||||||
pos = comment.find(" 'Perimeter Path'");
|
pos = comment.find(" 'Perimeter Path'");
|
||||||
if (pos == 0) {
|
if (pos == 0) {
|
||||||
set_extrusion_role(erExternalPerimeter);
|
set_extrusion_role(erExternalPerimeter);
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
m_seams_detector.activate(true);
|
m_seams_detector.activate(true);
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2187,11 +2167,7 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line)
|
||||||
#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING
|
#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_START_GCODE_VISUALIZATION
|
|
||||||
if (type == EMoveType::Extrude && (m_width == 0.0f || m_height == 0.0f))
|
if (type == EMoveType::Extrude && (m_width == 0.0f || m_height == 0.0f))
|
||||||
#else
|
|
||||||
if (type == EMoveType::Extrude && (m_extrusion_role == erCustom || m_width == 0.0f || m_height == 0.0f))
|
|
||||||
#endif // ENABLE_START_GCODE_VISUALIZATION
|
|
||||||
type = EMoveType::Travel;
|
type = EMoveType::Travel;
|
||||||
|
|
||||||
// time estimate section
|
// time estimate section
|
||||||
|
@ -2358,7 +2334,6 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line)
|
||||||
machine.calculate_time(TimeProcessor::Planner::queue_size);
|
machine.calculate_time(TimeProcessor::Planner::queue_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
if (m_seams_detector.is_active()) {
|
if (m_seams_detector.is_active()) {
|
||||||
// check for seam starting vertex
|
// check for seam starting vertex
|
||||||
if (type == EMoveType::Extrude && m_extrusion_role == erExternalPerimeter && !m_seams_detector.has_first_vertex())
|
if (type == EMoveType::Extrude && m_extrusion_role == erExternalPerimeter && !m_seams_detector.has_first_vertex())
|
||||||
|
@ -2382,7 +2357,6 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line)
|
||||||
m_seams_detector.activate(false);
|
m_seams_detector.activate(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
|
|
||||||
// store move
|
// store move
|
||||||
store_move_vertex(type);
|
store_move_vertex(type);
|
||||||
|
@ -2837,27 +2811,17 @@ void GCodeProcessor::process_T(const std::string_view command)
|
||||||
|
|
||||||
void GCodeProcessor::store_move_vertex(EMoveType type)
|
void GCodeProcessor::store_move_vertex(EMoveType type)
|
||||||
{
|
{
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
m_last_line_id = (type == EMoveType::Color_change || type == EMoveType::Pause_Print || type == EMoveType::Custom_GCode) ?
|
m_last_line_id = (type == EMoveType::Color_change || type == EMoveType::Pause_Print || type == EMoveType::Custom_GCode) ?
|
||||||
m_line_id + 1 :
|
m_line_id + 1 :
|
||||||
((type == EMoveType::Seam) ? m_last_line_id : m_line_id);
|
((type == EMoveType::Seam) ? m_last_line_id : m_line_id);
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
|
|
||||||
MoveVertex vertex = {
|
MoveVertex vertex = {
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
m_last_line_id,
|
m_last_line_id,
|
||||||
#else
|
|
||||||
(type == EMoveType::Color_change || type == EMoveType::Pause_Print || type == EMoveType::Custom_GCode) ? m_line_id + 1 : m_line_id,
|
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
type,
|
type,
|
||||||
m_extrusion_role,
|
m_extrusion_role,
|
||||||
m_extruder_id,
|
m_extruder_id,
|
||||||
m_cp_color.current,
|
m_cp_color.current,
|
||||||
#if ENABLE_START_GCODE_VISUALIZATION
|
|
||||||
Vec3f(m_end_position[X], m_end_position[Y], m_processing_start_custom_gcode ? m_first_layer_height : m_end_position[Z]) + m_extruder_offsets[m_extruder_id],
|
Vec3f(m_end_position[X], m_end_position[Y], m_processing_start_custom_gcode ? m_first_layer_height : m_end_position[Z]) + m_extruder_offsets[m_extruder_id],
|
||||||
#else
|
|
||||||
Vec3f(m_end_position[X], m_end_position[Y], m_end_position[Z]) + m_extruder_offsets[m_extruder_id],
|
|
||||||
#endif // ENABLE_START_GCODE_VISUALIZATION
|
|
||||||
m_end_position[E] - m_start_position[E],
|
m_end_position[E] - m_start_position[E],
|
||||||
m_feedrate,
|
m_feedrate,
|
||||||
m_width,
|
m_width,
|
||||||
|
|
|
@ -12,9 +12,7 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <string_view>
|
#include <string_view>
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
#include <optional>
|
#include <optional>
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
|
|
||||||
|
@ -23,9 +21,7 @@ namespace Slic3r {
|
||||||
Noop,
|
Noop,
|
||||||
Retract,
|
Retract,
|
||||||
Unretract,
|
Unretract,
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
Seam,
|
Seam,
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
Tool_change,
|
Tool_change,
|
||||||
Color_change,
|
Color_change,
|
||||||
Pause_Print,
|
Pause_Print,
|
||||||
|
@ -363,7 +359,6 @@ namespace Slic3r {
|
||||||
void reset();
|
void reset();
|
||||||
};
|
};
|
||||||
|
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
class SeamsDetector
|
class SeamsDetector
|
||||||
{
|
{
|
||||||
bool m_active{ false };
|
bool m_active{ false };
|
||||||
|
@ -384,7 +379,6 @@ namespace Slic3r {
|
||||||
bool is_active() const { return m_active; }
|
bool is_active() const { return m_active; }
|
||||||
bool has_first_vertex() const { return m_first_vertex.has_value(); }
|
bool has_first_vertex() const { return m_first_vertex.has_value(); }
|
||||||
};
|
};
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
|
|
||||||
#if ENABLE_GCODE_VIEWER_DATA_CHECKING
|
#if ENABLE_GCODE_VIEWER_DATA_CHECKING
|
||||||
struct DataChecker
|
struct DataChecker
|
||||||
|
@ -470,9 +464,7 @@ namespace Slic3r {
|
||||||
bool m_wiping;
|
bool m_wiping;
|
||||||
|
|
||||||
unsigned int m_line_id;
|
unsigned int m_line_id;
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
unsigned int m_last_line_id;
|
unsigned int m_last_line_id;
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
float m_feedrate; // mm/s
|
float m_feedrate; // mm/s
|
||||||
float m_width; // mm
|
float m_width; // mm
|
||||||
float m_height; // mm
|
float m_height; // mm
|
||||||
|
@ -485,17 +477,13 @@ namespace Slic3r {
|
||||||
ExtruderColors m_extruder_colors;
|
ExtruderColors m_extruder_colors;
|
||||||
ExtruderTemps m_extruder_temps;
|
ExtruderTemps m_extruder_temps;
|
||||||
float m_extruded_last_z;
|
float m_extruded_last_z;
|
||||||
#if ENABLE_START_GCODE_VISUALIZATION
|
|
||||||
float m_first_layer_height; // mm
|
float m_first_layer_height; // mm
|
||||||
bool m_processing_start_custom_gcode;
|
bool m_processing_start_custom_gcode;
|
||||||
#endif // ENABLE_START_GCODE_VISUALIZATION
|
|
||||||
unsigned int m_g1_line_id;
|
unsigned int m_g1_line_id;
|
||||||
unsigned int m_layer_id;
|
unsigned int m_layer_id;
|
||||||
CpColor m_cp_color;
|
CpColor m_cp_color;
|
||||||
bool m_use_volumetric_e;
|
bool m_use_volumetric_e;
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
SeamsDetector m_seams_detector;
|
SeamsDetector m_seams_detector;
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
|
|
||||||
enum class EProducer
|
enum class EProducer
|
||||||
{
|
{
|
||||||
|
|
|
@ -41,14 +41,6 @@
|
||||||
//====================
|
//====================
|
||||||
#define ENABLE_2_4_0_ALPHA0 1
|
#define ENABLE_2_4_0_ALPHA0 1
|
||||||
|
|
||||||
// Enable a modified version of automatic downscale on load of objects too big
|
|
||||||
#define ENABLE_MODIFIED_DOWNSCALE_ON_LOAD_OBJECTS_TOO_BIG (1 && ENABLE_2_4_0_ALPHA0)
|
|
||||||
// Enable scrollable legend in preview
|
|
||||||
#define ENABLE_SCROLLABLE_LEGEND (1 && ENABLE_2_4_0_ALPHA0)
|
|
||||||
// Enable visualization of start gcode as regular toolpaths
|
|
||||||
#define ENABLE_START_GCODE_VISUALIZATION (1 && ENABLE_2_4_0_ALPHA0)
|
|
||||||
// Enable visualization of seams in preview
|
|
||||||
#define ENABLE_SEAMS_VISUALIZATION (1 && ENABLE_2_4_0_ALPHA0)
|
|
||||||
// Enable project dirty state manager
|
// Enable project dirty state manager
|
||||||
#define ENABLE_PROJECT_DIRTY_STATE (1 && ENABLE_2_4_0_ALPHA0)
|
#define ENABLE_PROJECT_DIRTY_STATE (1 && ENABLE_2_4_0_ALPHA0)
|
||||||
// Enable project dirty state manager debug window
|
// Enable project dirty state manager debug window
|
||||||
|
|
|
@ -121,9 +121,7 @@ bool GCodeViewer::Path::matches(const GCodeProcessor::MoveVertex& move) const
|
||||||
case EMoveType::Custom_GCode:
|
case EMoveType::Custom_GCode:
|
||||||
case EMoveType::Retract:
|
case EMoveType::Retract:
|
||||||
case EMoveType::Unretract:
|
case EMoveType::Unretract:
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
case EMoveType::Seam:
|
case EMoveType::Seam:
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
case EMoveType::Extrude: {
|
case EMoveType::Extrude: {
|
||||||
// use rounding to reduce the number of generated paths
|
// use rounding to reduce the number of generated paths
|
||||||
return type == move.type && extruder_id == move.extruder_id && cp_color_id == move.cp_color_id && role == move.extrusion_role &&
|
return type == move.type && extruder_id == move.extruder_id && cp_color_id == move.cp_color_id && role == move.extrusion_role &&
|
||||||
|
@ -507,9 +505,7 @@ const std::vector<GCodeViewer::Color> GCodeViewer::Extrusion_Role_Colors {{
|
||||||
const std::vector<GCodeViewer::Color> GCodeViewer::Options_Colors {{
|
const std::vector<GCodeViewer::Color> GCodeViewer::Options_Colors {{
|
||||||
{ 0.803f, 0.135f, 0.839f }, // Retractions
|
{ 0.803f, 0.135f, 0.839f }, // Retractions
|
||||||
{ 0.287f, 0.679f, 0.810f }, // Unretractions
|
{ 0.287f, 0.679f, 0.810f }, // Unretractions
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
{ 0.900f, 0.900f, 0.900f }, // Seams
|
{ 0.900f, 0.900f, 0.900f }, // Seams
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
{ 0.758f, 0.744f, 0.389f }, // ToolChanges
|
{ 0.758f, 0.744f, 0.389f }, // ToolChanges
|
||||||
{ 0.856f, 0.582f, 0.546f }, // ColorChanges
|
{ 0.856f, 0.582f, 0.546f }, // ColorChanges
|
||||||
{ 0.322f, 0.942f, 0.512f }, // PausePrints
|
{ 0.322f, 0.942f, 0.512f }, // PausePrints
|
||||||
|
@ -552,20 +548,12 @@ GCodeViewer::GCodeViewer()
|
||||||
case EMoveType::Pause_Print:
|
case EMoveType::Pause_Print:
|
||||||
case EMoveType::Custom_GCode:
|
case EMoveType::Custom_GCode:
|
||||||
case EMoveType::Retract:
|
case EMoveType::Retract:
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
case EMoveType::Unretract:
|
case EMoveType::Unretract:
|
||||||
case EMoveType::Seam: {
|
case EMoveType::Seam: {
|
||||||
buffer.render_primitive_type = TBuffer::ERenderPrimitiveType::Point;
|
buffer.render_primitive_type = TBuffer::ERenderPrimitiveType::Point;
|
||||||
buffer.vertices.format = VBuffer::EFormat::Position;
|
buffer.vertices.format = VBuffer::EFormat::Position;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
case EMoveType::Unretract: {
|
|
||||||
buffer.render_primitive_type = TBuffer::ERenderPrimitiveType::Point;
|
|
||||||
buffer.vertices.format = VBuffer::EFormat::Position;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
case EMoveType::Wipe:
|
case EMoveType::Wipe:
|
||||||
case EMoveType::Extrude: {
|
case EMoveType::Extrude: {
|
||||||
buffer.render_primitive_type = TBuffer::ERenderPrimitiveType::Triangle;
|
buffer.render_primitive_type = TBuffer::ERenderPrimitiveType::Triangle;
|
||||||
|
@ -775,18 +763,11 @@ void GCodeViewer::render() const
|
||||||
case EMoveType::Pause_Print:
|
case EMoveType::Pause_Print:
|
||||||
case EMoveType::Custom_GCode:
|
case EMoveType::Custom_GCode:
|
||||||
case EMoveType::Retract:
|
case EMoveType::Retract:
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
case EMoveType::Unretract:
|
case EMoveType::Unretract:
|
||||||
case EMoveType::Seam: {
|
case EMoveType::Seam: {
|
||||||
buffer.shader = wxGetApp().is_glsl_version_greater_or_equal_to(1, 20) ? "options_120" : "options_110";
|
buffer.shader = wxGetApp().is_glsl_version_greater_or_equal_to(1, 20) ? "options_120" : "options_110";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
case EMoveType::Unretract: {
|
|
||||||
buffer.shader = wxGetApp().is_glsl_version_greater_or_equal_to(1, 20) ? "options_120" : "options_110";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
case EMoveType::Wipe:
|
case EMoveType::Wipe:
|
||||||
case EMoveType::Extrude: {
|
case EMoveType::Extrude: {
|
||||||
buffer.shader = "gouraud_light";
|
buffer.shader = "gouraud_light";
|
||||||
|
@ -911,9 +892,7 @@ unsigned int GCodeViewer::get_options_visibility_flags() const
|
||||||
flags = set_flag(flags, static_cast<unsigned int>(Preview::OptionType::Wipe), is_toolpath_move_type_visible(EMoveType::Wipe));
|
flags = set_flag(flags, static_cast<unsigned int>(Preview::OptionType::Wipe), is_toolpath_move_type_visible(EMoveType::Wipe));
|
||||||
flags = set_flag(flags, static_cast<unsigned int>(Preview::OptionType::Retractions), is_toolpath_move_type_visible(EMoveType::Retract));
|
flags = set_flag(flags, static_cast<unsigned int>(Preview::OptionType::Retractions), is_toolpath_move_type_visible(EMoveType::Retract));
|
||||||
flags = set_flag(flags, static_cast<unsigned int>(Preview::OptionType::Unretractions), is_toolpath_move_type_visible(EMoveType::Unretract));
|
flags = set_flag(flags, static_cast<unsigned int>(Preview::OptionType::Unretractions), is_toolpath_move_type_visible(EMoveType::Unretract));
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
flags = set_flag(flags, static_cast<unsigned int>(Preview::OptionType::Seams), is_toolpath_move_type_visible(EMoveType::Seam));
|
flags = set_flag(flags, static_cast<unsigned int>(Preview::OptionType::Seams), is_toolpath_move_type_visible(EMoveType::Seam));
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
flags = set_flag(flags, static_cast<unsigned int>(Preview::OptionType::ToolChanges), is_toolpath_move_type_visible(EMoveType::Tool_change));
|
flags = set_flag(flags, static_cast<unsigned int>(Preview::OptionType::ToolChanges), is_toolpath_move_type_visible(EMoveType::Tool_change));
|
||||||
flags = set_flag(flags, static_cast<unsigned int>(Preview::OptionType::ColorChanges), is_toolpath_move_type_visible(EMoveType::Color_change));
|
flags = set_flag(flags, static_cast<unsigned int>(Preview::OptionType::ColorChanges), is_toolpath_move_type_visible(EMoveType::Color_change));
|
||||||
flags = set_flag(flags, static_cast<unsigned int>(Preview::OptionType::PausePrints), is_toolpath_move_type_visible(EMoveType::Pause_Print));
|
flags = set_flag(flags, static_cast<unsigned int>(Preview::OptionType::PausePrints), is_toolpath_move_type_visible(EMoveType::Pause_Print));
|
||||||
|
@ -934,9 +913,7 @@ void GCodeViewer::set_options_visibility_from_flags(unsigned int flags)
|
||||||
set_toolpath_move_type_visible(EMoveType::Wipe, is_flag_set(static_cast<unsigned int>(Preview::OptionType::Wipe)));
|
set_toolpath_move_type_visible(EMoveType::Wipe, is_flag_set(static_cast<unsigned int>(Preview::OptionType::Wipe)));
|
||||||
set_toolpath_move_type_visible(EMoveType::Retract, is_flag_set(static_cast<unsigned int>(Preview::OptionType::Retractions)));
|
set_toolpath_move_type_visible(EMoveType::Retract, is_flag_set(static_cast<unsigned int>(Preview::OptionType::Retractions)));
|
||||||
set_toolpath_move_type_visible(EMoveType::Unretract, is_flag_set(static_cast<unsigned int>(Preview::OptionType::Unretractions)));
|
set_toolpath_move_type_visible(EMoveType::Unretract, is_flag_set(static_cast<unsigned int>(Preview::OptionType::Unretractions)));
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
set_toolpath_move_type_visible(EMoveType::Seam, is_flag_set(static_cast<unsigned int>(Preview::OptionType::Seams)));
|
set_toolpath_move_type_visible(EMoveType::Seam, is_flag_set(static_cast<unsigned int>(Preview::OptionType::Seams)));
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
set_toolpath_move_type_visible(EMoveType::Tool_change, is_flag_set(static_cast<unsigned int>(Preview::OptionType::ToolChanges)));
|
set_toolpath_move_type_visible(EMoveType::Tool_change, is_flag_set(static_cast<unsigned int>(Preview::OptionType::ToolChanges)));
|
||||||
set_toolpath_move_type_visible(EMoveType::Color_change, is_flag_set(static_cast<unsigned int>(Preview::OptionType::ColorChanges)));
|
set_toolpath_move_type_visible(EMoveType::Color_change, is_flag_set(static_cast<unsigned int>(Preview::OptionType::ColorChanges)));
|
||||||
set_toolpath_move_type_visible(EMoveType::Pause_Print, is_flag_set(static_cast<unsigned int>(Preview::OptionType::PausePrints)));
|
set_toolpath_move_type_visible(EMoveType::Pause_Print, is_flag_set(static_cast<unsigned int>(Preview::OptionType::PausePrints)));
|
||||||
|
@ -1412,11 +1389,7 @@ void GCodeViewer::load_toolpaths(const GCodeProcessor::Result& gcode_result)
|
||||||
// for the gcode viewer we need to take in account all moves to correctly size the printbed
|
// for the gcode viewer we need to take in account all moves to correctly size the printbed
|
||||||
m_paths_bounding_box.merge(move.position.cast<double>());
|
m_paths_bounding_box.merge(move.position.cast<double>());
|
||||||
else {
|
else {
|
||||||
#if ENABLE_START_GCODE_VISUALIZATION
|
|
||||||
if (move.type == EMoveType::Extrude && move.extrusion_role != erCustom && move.width != 0.0f && move.height != 0.0f)
|
if (move.type == EMoveType::Extrude && move.extrusion_role != erCustom && move.width != 0.0f && move.height != 0.0f)
|
||||||
#else
|
|
||||||
if (move.type == EMoveType::Extrude && move.width != 0.0f && move.height != 0.0f)
|
|
||||||
#endif // ENABLE_START_GCODE_VISUALIZATION
|
|
||||||
m_paths_bounding_box.merge(move.position.cast<double>());
|
m_paths_bounding_box.merge(move.position.cast<double>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2168,9 +2141,7 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool
|
||||||
case EMoveType::Custom_GCode: { color = Options_Colors[static_cast<unsigned int>(EOptionsColors::CustomGCodes)]; break; }
|
case EMoveType::Custom_GCode: { color = Options_Colors[static_cast<unsigned int>(EOptionsColors::CustomGCodes)]; break; }
|
||||||
case EMoveType::Retract: { color = Options_Colors[static_cast<unsigned int>(EOptionsColors::Retractions)]; break; }
|
case EMoveType::Retract: { color = Options_Colors[static_cast<unsigned int>(EOptionsColors::Retractions)]; break; }
|
||||||
case EMoveType::Unretract: { color = Options_Colors[static_cast<unsigned int>(EOptionsColors::Unretractions)]; break; }
|
case EMoveType::Unretract: { color = Options_Colors[static_cast<unsigned int>(EOptionsColors::Unretractions)]; break; }
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
case EMoveType::Seam: { color = Options_Colors[static_cast<unsigned int>(EOptionsColors::Seams)]; break; }
|
case EMoveType::Seam: { color = Options_Colors[static_cast<unsigned int>(EOptionsColors::Seams)]; break; }
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
case EMoveType::Extrude: {
|
case EMoveType::Extrude: {
|
||||||
if (!top_layer_only ||
|
if (!top_layer_only ||
|
||||||
m_sequential_view.current.last == global_endpoints.last ||
|
m_sequential_view.current.last == global_endpoints.last ||
|
||||||
|
@ -2579,25 +2550,17 @@ void GCodeViewer::render_legend(float& legend_height) const
|
||||||
if (!m_legend_enabled)
|
if (!m_legend_enabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#if ENABLE_SCROLLABLE_LEGEND
|
|
||||||
const Size cnv_size = wxGetApp().plater()->get_current_canvas3D()->get_canvas_size();
|
const Size cnv_size = wxGetApp().plater()->get_current_canvas3D()->get_canvas_size();
|
||||||
#endif // ENABLE_SCROLLABLE_LEGEND
|
|
||||||
|
|
||||||
ImGuiWrapper& imgui = *wxGetApp().imgui();
|
ImGuiWrapper& imgui = *wxGetApp().imgui();
|
||||||
|
|
||||||
imgui.set_next_window_pos(0.0f, 0.0f, ImGuiCond_Always);
|
imgui.set_next_window_pos(0.0f, 0.0f, ImGuiCond_Always);
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
|
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
|
||||||
ImGui::SetNextWindowBgAlpha(0.6f);
|
ImGui::SetNextWindowBgAlpha(0.6f);
|
||||||
#if ENABLE_SCROLLABLE_LEGEND
|
|
||||||
const float max_height = 0.75f * static_cast<float>(cnv_size.get_height());
|
const float max_height = 0.75f * static_cast<float>(cnv_size.get_height());
|
||||||
const float child_height = 0.3333f * max_height;
|
const float child_height = 0.3333f * max_height;
|
||||||
ImGui::SetNextWindowSizeConstraints({ 0.0f, 0.0f }, { -1.0f, max_height });
|
ImGui::SetNextWindowSizeConstraints({ 0.0f, 0.0f }, { -1.0f, max_height });
|
||||||
imgui.begin(std::string("Legend"), ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoMove);
|
imgui.begin(std::string("Legend"), ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoMove);
|
||||||
#else
|
|
||||||
imgui.begin(std::string("Legend"), ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_NoMove);
|
|
||||||
|
|
||||||
ImDrawList* draw_list = ImGui::GetWindowDrawList();
|
|
||||||
#endif // ENABLE_SCROLLABLE_LEGEND
|
|
||||||
|
|
||||||
enum class EItemType : unsigned char
|
enum class EItemType : unsigned char
|
||||||
{
|
{
|
||||||
|
@ -2608,30 +2571,22 @@ void GCodeViewer::render_legend(float& legend_height) const
|
||||||
};
|
};
|
||||||
|
|
||||||
const PrintEstimatedStatistics::Mode& time_mode = m_print_statistics.modes[static_cast<size_t>(m_time_estimate_mode)];
|
const PrintEstimatedStatistics::Mode& time_mode = m_print_statistics.modes[static_cast<size_t>(m_time_estimate_mode)];
|
||||||
#if ENABLE_SCROLLABLE_LEGEND
|
|
||||||
bool show_estimated_time = time_mode.time > 0.0f && (m_view_type == EViewType::FeatureType ||
|
bool show_estimated_time = time_mode.time > 0.0f && (m_view_type == EViewType::FeatureType ||
|
||||||
(m_view_type == EViewType::ColorPrint && !time_mode.custom_gcode_times.empty()));
|
(m_view_type == EViewType::ColorPrint && !time_mode.custom_gcode_times.empty()));
|
||||||
#endif // ENABLE_SCROLLABLE_LEGEND
|
|
||||||
|
|
||||||
const float icon_size = ImGui::GetTextLineHeight();
|
const float icon_size = ImGui::GetTextLineHeight();
|
||||||
const float percent_bar_size = 2.0f * ImGui::GetTextLineHeight();
|
const float percent_bar_size = 2.0f * ImGui::GetTextLineHeight();
|
||||||
|
|
||||||
bool imperial_units = wxGetApp().app_config->get("use_inches") == "1";
|
bool imperial_units = wxGetApp().app_config->get("use_inches") == "1";
|
||||||
|
|
||||||
#if ENABLE_SCROLLABLE_LEGEND
|
|
||||||
auto append_item = [this, icon_size, percent_bar_size, &imgui, imperial_units](EItemType type, const Color& color, const std::string& label,
|
auto append_item = [this, icon_size, percent_bar_size, &imgui, imperial_units](EItemType type, const Color& color, const std::string& label,
|
||||||
#else
|
|
||||||
auto append_item = [this, draw_list, icon_size, percent_bar_size, &imgui, imperial_units](EItemType type, const Color& color, const std::string& label,
|
|
||||||
#endif // ENABLE_SCROLLABLE_LEGEND
|
|
||||||
bool visible = true, const std::string& time = "", float percent = 0.0f, float max_percent = 0.0f, const std::array<float, 4>& offsets = { 0.0f, 0.0f, 0.0f, 0.0f },
|
bool visible = true, const std::string& time = "", float percent = 0.0f, float max_percent = 0.0f, const std::array<float, 4>& offsets = { 0.0f, 0.0f, 0.0f, 0.0f },
|
||||||
double used_filament_m = 0.0, double used_filament_g = 0.0,
|
double used_filament_m = 0.0, double used_filament_g = 0.0,
|
||||||
std::function<void()> callback = nullptr) {
|
std::function<void()> callback = nullptr) {
|
||||||
if (!visible)
|
if (!visible)
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_Alpha, 0.3333f);
|
ImGui::PushStyleVar(ImGuiStyleVar_Alpha, 0.3333f);
|
||||||
|
|
||||||
#if ENABLE_SCROLLABLE_LEGEND
|
|
||||||
ImDrawList* draw_list = ImGui::GetWindowDrawList();
|
ImDrawList* draw_list = ImGui::GetWindowDrawList();
|
||||||
#endif // ENABLE_SCROLLABLE_LEGEND
|
|
||||||
ImVec2 pos = ImGui::GetCursorScreenPos();
|
ImVec2 pos = ImGui::GetCursorScreenPos();
|
||||||
switch (type) {
|
switch (type) {
|
||||||
default:
|
default:
|
||||||
|
@ -2984,7 +2939,6 @@ void GCodeViewer::render_legend(float& legend_height) const
|
||||||
}
|
}
|
||||||
case EViewType::ColorPrint:
|
case EViewType::ColorPrint:
|
||||||
{
|
{
|
||||||
#if ENABLE_SCROLLABLE_LEGEND
|
|
||||||
const std::vector<CustomGCode::Item>& custom_gcode_per_print_z = wxGetApp().plater()->model().custom_gcode_per_print_z.gcodes;
|
const std::vector<CustomGCode::Item>& custom_gcode_per_print_z = wxGetApp().plater()->model().custom_gcode_per_print_z.gcodes;
|
||||||
size_t total_items = 1;
|
size_t total_items = 1;
|
||||||
for (unsigned char i : m_extruder_ids) {
|
for (unsigned char i : m_extruder_ids) {
|
||||||
|
@ -2996,9 +2950,6 @@ void GCodeViewer::render_legend(float& legend_height) const
|
||||||
// add scrollable region, if needed
|
// add scrollable region, if needed
|
||||||
if (need_scrollable)
|
if (need_scrollable)
|
||||||
ImGui::BeginChild("color_prints", { -1.0f, child_height }, false);
|
ImGui::BeginChild("color_prints", { -1.0f, child_height }, false);
|
||||||
#else
|
|
||||||
const std::vector<CustomGCode::Item>& custom_gcode_per_print_z = wxGetApp().plater()->model().custom_gcode_per_print_z.gcodes;
|
|
||||||
#endif // ENABLE_SCROLLABLE_LEGEND
|
|
||||||
if (m_extruders_count == 1) { // single extruder use case
|
if (m_extruders_count == 1) { // single extruder use case
|
||||||
const std::vector<std::pair<Color, std::pair<double, double>>> cp_values = color_print_ranges(0, custom_gcode_per_print_z);
|
const std::vector<std::pair<Color, std::pair<double, double>>> cp_values = color_print_ranges(0, custom_gcode_per_print_z);
|
||||||
const int items_cnt = static_cast<int>(cp_values.size());
|
const int items_cnt = static_cast<int>(cp_values.size());
|
||||||
|
@ -3049,10 +3000,8 @@ void GCodeViewer::render_legend(float& legend_height) const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if ENABLE_SCROLLABLE_LEGEND
|
|
||||||
if (need_scrollable)
|
if (need_scrollable)
|
||||||
ImGui::EndChild();
|
ImGui::EndChild();
|
||||||
#endif // ENABLE_SCROLLABLE_LEGEND
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -3203,12 +3152,10 @@ void GCodeViewer::render_legend(float& legend_height) const
|
||||||
|
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
append_headers({ _u8L("Event"), _u8L("Remaining time"), _u8L("Duration"), _u8L("Used filament") }, offsets);
|
append_headers({ _u8L("Event"), _u8L("Remaining time"), _u8L("Duration"), _u8L("Used filament") }, offsets);
|
||||||
#if ENABLE_SCROLLABLE_LEGEND
|
|
||||||
const bool need_scrollable = static_cast<float>(partial_times.size()) * (icon_size + ImGui::GetStyle().ItemSpacing.y) > child_height;
|
const bool need_scrollable = static_cast<float>(partial_times.size()) * (icon_size + ImGui::GetStyle().ItemSpacing.y) > child_height;
|
||||||
if (need_scrollable)
|
if (need_scrollable)
|
||||||
// add scrollable region
|
// add scrollable region
|
||||||
ImGui::BeginChild("events", { -1.0f, child_height }, false);
|
ImGui::BeginChild("events", { -1.0f, child_height }, false);
|
||||||
#endif // ENABLE_SCROLLABLE_LEGEND
|
|
||||||
|
|
||||||
for (const PartialTime& item : partial_times) {
|
for (const PartialTime& item : partial_times) {
|
||||||
switch (item.type)
|
switch (item.type)
|
||||||
|
@ -3230,10 +3177,8 @@ void GCodeViewer::render_legend(float& legend_height) const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_SCROLLABLE_LEGEND
|
|
||||||
if (need_scrollable)
|
if (need_scrollable)
|
||||||
ImGui::EndChild();
|
ImGui::EndChild();
|
||||||
#endif // ENABLE_SCROLLABLE_LEGEND
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3292,12 +3237,8 @@ void GCodeViewer::render_legend(float& legend_height) const
|
||||||
available(EMoveType::Pause_Print) ||
|
available(EMoveType::Pause_Print) ||
|
||||||
available(EMoveType::Retract) ||
|
available(EMoveType::Retract) ||
|
||||||
available(EMoveType::Tool_change) ||
|
available(EMoveType::Tool_change) ||
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
available(EMoveType::Unretract) ||
|
available(EMoveType::Unretract) ||
|
||||||
available(EMoveType::Seam);
|
available(EMoveType::Seam);
|
||||||
#else
|
|
||||||
available(EMoveType::Unretract);
|
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
};
|
};
|
||||||
|
|
||||||
auto add_option = [this, append_item](EMoveType move_type, EOptionsColors color, const std::string& text) {
|
auto add_option = [this, append_item](EMoveType move_type, EOptionsColors color, const std::string& text) {
|
||||||
|
@ -3315,9 +3256,7 @@ void GCodeViewer::render_legend(float& legend_height) const
|
||||||
// items
|
// items
|
||||||
add_option(EMoveType::Retract, EOptionsColors::Retractions, _u8L("Retractions"));
|
add_option(EMoveType::Retract, EOptionsColors::Retractions, _u8L("Retractions"));
|
||||||
add_option(EMoveType::Unretract, EOptionsColors::Unretractions, _u8L("Deretractions"));
|
add_option(EMoveType::Unretract, EOptionsColors::Unretractions, _u8L("Deretractions"));
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
add_option(EMoveType::Seam, EOptionsColors::Seams, _u8L("Seams"));
|
add_option(EMoveType::Seam, EOptionsColors::Seams, _u8L("Seams"));
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
add_option(EMoveType::Tool_change, EOptionsColors::ToolChanges, _u8L("Tool changes"));
|
add_option(EMoveType::Tool_change, EOptionsColors::ToolChanges, _u8L("Tool changes"));
|
||||||
add_option(EMoveType::Color_change, EOptionsColors::ColorChanges, _u8L("Color changes"));
|
add_option(EMoveType::Color_change, EOptionsColors::ColorChanges, _u8L("Color changes"));
|
||||||
add_option(EMoveType::Pause_Print, EOptionsColors::PausePrints, _u8L("Print pauses"));
|
add_option(EMoveType::Pause_Print, EOptionsColors::PausePrints, _u8L("Print pauses"));
|
||||||
|
@ -3383,14 +3322,7 @@ void GCodeViewer::render_legend(float& legend_height) const
|
||||||
}
|
}
|
||||||
|
|
||||||
// total estimated printing time section
|
// total estimated printing time section
|
||||||
#if ENABLE_SCROLLABLE_LEGEND
|
|
||||||
if (show_estimated_time) {
|
if (show_estimated_time) {
|
||||||
#else
|
|
||||||
if (time_mode.time > 0.0f && (m_view_type == EViewType::FeatureType ||
|
|
||||||
(m_view_type == EViewType::ColorPrint && !time_mode.custom_gcode_times.empty()))) {
|
|
||||||
|
|
||||||
ImGui::Spacing();
|
|
||||||
#endif // ENABLE_SCROLLABLE_LEGEND
|
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
std::string time_title = _u8L("Estimated printing times");
|
std::string time_title = _u8L("Estimated printing times");
|
||||||
switch (m_time_estimate_mode)
|
switch (m_time_estimate_mode)
|
||||||
|
|
|
@ -38,9 +38,7 @@ class GCodeViewer
|
||||||
{
|
{
|
||||||
Retractions,
|
Retractions,
|
||||||
Unretractions,
|
Unretractions,
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
Seams,
|
Seams,
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
ToolChanges,
|
ToolChanges,
|
||||||
ColorChanges,
|
ColorChanges,
|
||||||
PausePrints,
|
PausePrints,
|
||||||
|
|
|
@ -4707,13 +4707,11 @@ void GLCanvas3D::_resize(unsigned int w, unsigned int h)
|
||||||
if (m_canvas == nullptr && m_context == nullptr)
|
if (m_canvas == nullptr && m_context == nullptr)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#if ENABLE_SCROLLABLE_LEGEND
|
|
||||||
const std::array<unsigned int, 2> new_size = { w, h };
|
const std::array<unsigned int, 2> new_size = { w, h };
|
||||||
if (m_old_size == new_size)
|
if (m_old_size == new_size)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_old_size = new_size;
|
m_old_size = new_size;
|
||||||
#endif // ENABLE_SCROLLABLE_LEGEND
|
|
||||||
|
|
||||||
auto *imgui = wxGetApp().imgui();
|
auto *imgui = wxGetApp().imgui();
|
||||||
imgui->set_display_size(static_cast<float>(w), static_cast<float>(h));
|
imgui->set_display_size(static_cast<float>(w), static_cast<float>(h));
|
||||||
|
@ -4724,9 +4722,7 @@ void GLCanvas3D::_resize(unsigned int w, unsigned int h)
|
||||||
imgui->set_scaling(font_size, m_canvas->GetContentScaleFactor(), 1.0f);
|
imgui->set_scaling(font_size, m_canvas->GetContentScaleFactor(), 1.0f);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLE_SCROLLABLE_LEGEND
|
|
||||||
this->request_extra_frame();
|
this->request_extra_frame();
|
||||||
#endif // ENABLE_SCROLLABLE_LEGEND
|
|
||||||
|
|
||||||
// ensures that this canvas is current
|
// ensures that this canvas is current
|
||||||
_set_current();
|
_set_current();
|
||||||
|
|
|
@ -427,9 +427,7 @@ private:
|
||||||
Model* m_model;
|
Model* m_model;
|
||||||
BackgroundSlicingProcess *m_process;
|
BackgroundSlicingProcess *m_process;
|
||||||
|
|
||||||
#if ENABLE_SCROLLABLE_LEGEND
|
|
||||||
std::array<unsigned int, 2> m_old_size{ 0, 0 };
|
std::array<unsigned int, 2> m_old_size{ 0, 0 };
|
||||||
#endif // ENABLE_SCROLLABLE_LEGEND
|
|
||||||
|
|
||||||
// Screen is only refreshed from the OnIdle handler if it is dirty.
|
// Screen is only refreshed from the OnIdle handler if it is dirty.
|
||||||
bool m_dirty;
|
bool m_dirty;
|
||||||
|
@ -787,9 +785,7 @@ public:
|
||||||
const Print* fff_print() const;
|
const Print* fff_print() const;
|
||||||
const SLAPrint* sla_print() const;
|
const SLAPrint* sla_print() const;
|
||||||
|
|
||||||
#if ENABLE_SCROLLABLE_LEGEND
|
|
||||||
void reset_old_size() { m_old_size = { 0, 0 }; }
|
void reset_old_size() { m_old_size = { 0, 0 }; }
|
||||||
#endif // ENABLE_SCROLLABLE_LEGEND
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool _is_shown_on_screen() const;
|
bool _is_shown_on_screen() const;
|
||||||
|
|
|
@ -264,9 +264,7 @@ bool Preview::init(wxWindow* parent, Model* model)
|
||||||
get_option_type_string(OptionType::Wipe) + "|0|" +
|
get_option_type_string(OptionType::Wipe) + "|0|" +
|
||||||
get_option_type_string(OptionType::Retractions) + "|0|" +
|
get_option_type_string(OptionType::Retractions) + "|0|" +
|
||||||
get_option_type_string(OptionType::Unretractions) + "|0|" +
|
get_option_type_string(OptionType::Unretractions) + "|0|" +
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
get_option_type_string(OptionType::Seams) + "|0|" +
|
get_option_type_string(OptionType::Seams) + "|0|" +
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
get_option_type_string(OptionType::ToolChanges) + "|0|" +
|
get_option_type_string(OptionType::ToolChanges) + "|0|" +
|
||||||
get_option_type_string(OptionType::ColorChanges) + "|0|" +
|
get_option_type_string(OptionType::ColorChanges) + "|0|" +
|
||||||
get_option_type_string(OptionType::PausePrints) + "|0|" +
|
get_option_type_string(OptionType::PausePrints) + "|0|" +
|
||||||
|
@ -1033,9 +1031,7 @@ wxString Preview::get_option_type_string(OptionType type) const
|
||||||
case OptionType::Wipe: { return _L("Wipe"); }
|
case OptionType::Wipe: { return _L("Wipe"); }
|
||||||
case OptionType::Retractions: { return _L("Retractions"); }
|
case OptionType::Retractions: { return _L("Retractions"); }
|
||||||
case OptionType::Unretractions: { return _L("Deretractions"); }
|
case OptionType::Unretractions: { return _L("Deretractions"); }
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
case OptionType::Seams: { return _L("Seams"); }
|
case OptionType::Seams: { return _L("Seams"); }
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
case OptionType::ToolChanges: { return _L("Tool changes"); }
|
case OptionType::ToolChanges: { return _L("Tool changes"); }
|
||||||
case OptionType::ColorChanges: { return _L("Color changes"); }
|
case OptionType::ColorChanges: { return _L("Color changes"); }
|
||||||
case OptionType::PausePrints: { return _L("Print pauses"); }
|
case OptionType::PausePrints: { return _L("Print pauses"); }
|
||||||
|
|
|
@ -121,9 +121,7 @@ public:
|
||||||
Wipe,
|
Wipe,
|
||||||
Retractions,
|
Retractions,
|
||||||
Unretractions,
|
Unretractions,
|
||||||
#if ENABLE_SEAMS_VISUALIZATION
|
|
||||||
Seams,
|
Seams,
|
||||||
#endif // ENABLE_SEAMS_VISUALIZATION
|
|
||||||
ToolChanges,
|
ToolChanges,
|
||||||
ColorChanges,
|
ColorChanges,
|
||||||
PausePrints,
|
PausePrints,
|
||||||
|
|
|
@ -2520,7 +2520,6 @@ std::vector<size_t> Plater::priv::load_model_objects(const ModelObjectPtrs& mode
|
||||||
#endif /* AUTOPLACEMENT_ON_LOAD */
|
#endif /* AUTOPLACEMENT_ON_LOAD */
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_MODIFIED_DOWNSCALE_ON_LOAD_OBJECTS_TOO_BIG
|
|
||||||
for (size_t i = 0; i < object->instances.size(); ++i) {
|
for (size_t i = 0; i < object->instances.size(); ++i) {
|
||||||
ModelInstance* instance = object->instances[i];
|
ModelInstance* instance = object->instances[i];
|
||||||
const Vec3d size = object->instance_bounding_box(i).size();
|
const Vec3d size = object->instance_bounding_box(i).size();
|
||||||
|
@ -2542,26 +2541,6 @@ std::vector<size_t> Plater::priv::load_model_objects(const ModelObjectPtrs& mode
|
||||||
scaled_down = true;
|
scaled_down = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
const Vec3d size = object->bounding_box().size();
|
|
||||||
const Vec3d ratio = size.cwiseQuotient(bed_size);
|
|
||||||
const double max_ratio = std::max(ratio(0), ratio(1));
|
|
||||||
if (max_ratio > 10000) {
|
|
||||||
// the size of the object is too big -> this could lead to overflow when moving to clipper coordinates,
|
|
||||||
// so scale down the mesh
|
|
||||||
double inv = 1. / max_ratio;
|
|
||||||
object->scale_mesh_after_creation(Vec3d(inv, inv, inv));
|
|
||||||
object->origin_translation = Vec3d::Zero();
|
|
||||||
object->center_around_origin();
|
|
||||||
scaled_down = true;
|
|
||||||
} else if (max_ratio > 5) {
|
|
||||||
const Vec3d inverse = 1.0 / max_ratio * Vec3d::Ones();
|
|
||||||
for (ModelInstance *instance : object->instances) {
|
|
||||||
instance->set_scaling_factor(inverse);
|
|
||||||
}
|
|
||||||
scaled_down = true;
|
|
||||||
}
|
|
||||||
#endif // ENABLE_MODIFIED_DOWNSCALE_ON_LOAD_OBJECTS_TOO_BIG
|
|
||||||
|
|
||||||
object->ensure_on_bed(allow_negative_z);
|
object->ensure_on_bed(allow_negative_z);
|
||||||
}
|
}
|
||||||
|
@ -3616,10 +3595,8 @@ void Plater::priv::set_current_panel(wxPanel* panel)
|
||||||
|
|
||||||
// sets the canvas as dirty to force a render at the 1st idle event (wxWidgets IsShownOnScreen() is buggy and cannot be used reliably)
|
// sets the canvas as dirty to force a render at the 1st idle event (wxWidgets IsShownOnScreen() is buggy and cannot be used reliably)
|
||||||
view3D->set_as_dirty();
|
view3D->set_as_dirty();
|
||||||
#if ENABLE_SCROLLABLE_LEGEND
|
|
||||||
// reset cached size to force a resize on next call to render() to keep imgui in synch with canvas size
|
// reset cached size to force a resize on next call to render() to keep imgui in synch with canvas size
|
||||||
view3D->get_canvas3d()->reset_old_size();
|
view3D->get_canvas3d()->reset_old_size();
|
||||||
#endif // ENABLE_SCROLLABLE_LEGEND
|
|
||||||
view_toolbar.select_item("3D");
|
view_toolbar.select_item("3D");
|
||||||
if (notification_manager != nullptr)
|
if (notification_manager != nullptr)
|
||||||
notification_manager->set_in_preview(false);
|
notification_manager->set_in_preview(false);
|
||||||
|
@ -3640,10 +3617,8 @@ void Plater::priv::set_current_panel(wxPanel* panel)
|
||||||
preview->reload_print(true);
|
preview->reload_print(true);
|
||||||
|
|
||||||
preview->set_as_dirty();
|
preview->set_as_dirty();
|
||||||
#if ENABLE_SCROLLABLE_LEGEND
|
|
||||||
// reset cached size to force a resize on next call to render() to keep imgui in synch with canvas size
|
// reset cached size to force a resize on next call to render() to keep imgui in synch with canvas size
|
||||||
preview->get_canvas3d()->reset_old_size();
|
preview->get_canvas3d()->reset_old_size();
|
||||||
#endif // ENABLE_SCROLLABLE_LEGEND
|
|
||||||
view_toolbar.select_item("Preview");
|
view_toolbar.select_item("Preview");
|
||||||
if (notification_manager != nullptr)
|
if (notification_manager != nullptr)
|
||||||
notification_manager->set_in_preview(true);
|
notification_manager->set_in_preview(true);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue