OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::GCodeProcessor::OptionsZCorrector Class Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/libslic3r/GCode/GCodeProcessor.hpp>

Collaboration diagram for Slic3r::GCodeProcessor::OptionsZCorrector:

Public Member Functions

 OptionsZCorrector (GCodeProcessorResult &result)
void set ()
void on_moves_inserted (const std::vector< std::pair< unsigned int, unsigned int > > &id_map)
std::optional< size_t > update (float height)
void reset ()

Private Attributes

GCodeProcessorResult & m_result
std::optional< size_t > m_move_id
std::optional< size_t > m_custom_gcode_per_print_z_id

Detailed Description

Constructor & Destructor Documentation

◆ OptionsZCorrector()

Slic3r::GCodeProcessor::OptionsZCorrector::OptionsZCorrector ( GCodeProcessorResult & result)
inlineexplicit
1095 : m_result(result) {
1096 }
GCodeProcessorResult & m_result
Definition GCodeProcessor.hpp:1090
GCodeProcessorResult & result()
Definition GCodeProcessor.hpp:1435

References m_result, and Slic3r::GCodeProcessor::result().

Here is the call graph for this function:

Member Function Documentation

◆ on_moves_inserted()

void Slic3r::GCodeProcessor::OptionsZCorrector::on_moves_inserted ( const std::vector< std::pair< unsigned int, unsigned int > > & id_map)
inline
1105 {
1106 if (!m_move_id.has_value())
1107 return;
1108 auto it = std::lower_bound(id_map.begin(), id_map.end(), *m_move_id,
1109 [](const std::pair<unsigned int, unsigned int>& entry, size_t id) { return entry.first < id; });
1110 if (it != id_map.begin()) {
1111 --it;
1112 *m_move_id += it->second - it->first;
1113 }
1114 }
std::optional< size_t > m_move_id
Definition GCodeProcessor.hpp:1091

References m_move_id.

◆ reset()

void Slic3r::GCodeProcessor::OptionsZCorrector::reset ( )
inline
1133 {
1134 m_move_id.reset();
1136 }
std::optional< size_t > m_custom_gcode_per_print_z_id
Definition GCodeProcessor.hpp:1092

References m_custom_gcode_per_print_z_id, and m_move_id.

Referenced by update().

Here is the caller graph for this function:

◆ set()

void Slic3r::GCodeProcessor::OptionsZCorrector::set ( )
inline
1098 {
1099 m_move_id = m_result.moves.size() - 1;
1100 m_custom_gcode_per_print_z_id = m_result.custom_gcode_per_print_z.size() - 1;
1101 }

References m_custom_gcode_per_print_z_id, m_move_id, and m_result.

◆ update()

std::optional< size_t > Slic3r::GCodeProcessor::OptionsZCorrector::update ( float height)
inline
1117 {
1118 if (!m_move_id.has_value() || !m_custom_gcode_per_print_z_id.has_value())
1119 return std::nullopt;
1120
1121 const Vec3f position = m_result.moves.back().position;
1122 const size_t erased = *m_move_id;
1123
1124 GCodeProcessorResult::MoveVertex& move = m_result.moves.emplace_back(m_result.moves[erased]);
1125 move.position = position;
1126 move.height = height;
1127 m_result.moves.erase(m_result.moves.begin() + erased);
1128 m_result.custom_gcode_per_print_z[*m_custom_gcode_per_print_z_id].print_z = position.z();
1129 reset();
1130 return erased;
1131 }
void reset()
Definition GCodeProcessor.hpp:1133
coord_t height(const BoundingBox &box)
Definition Arrange.cpp:1185
Eigen::Matrix< float, 3, 1, Eigen::DontAlign > Vec3f
Definition Point.hpp:65

References Slic3r::GCodeProcessorResult::MoveVertex::height, m_custom_gcode_per_print_z_id, m_move_id, m_result, Slic3r::GCodeProcessorResult::MoveVertex::position, and reset().

Here is the call graph for this function:

Member Data Documentation

◆ m_custom_gcode_per_print_z_id

std::optional<size_t> Slic3r::GCodeProcessor::OptionsZCorrector::m_custom_gcode_per_print_z_id
private

Referenced by reset(), set(), and update().

◆ m_move_id

std::optional<size_t> Slic3r::GCodeProcessor::OptionsZCorrector::m_move_id
private

Referenced by on_moves_inserted(), reset(), set(), and update().

◆ m_result

GCodeProcessorResult& Slic3r::GCodeProcessor::OptionsZCorrector::m_result
private

Referenced by OptionsZCorrector(), set(), and update().


The documentation for this class was generated from the following file: