OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::GCodeProcessor::TimeBlock Struct Reference

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

Collaboration diagram for Slic3r::GCodeProcessor::TimeBlock:

Classes

struct  Flags

Public Member Functions

void calculate_trapezoid ()
float time () const

Public Attributes

EMoveType move_type { EMoveType::Noop }
ExtrusionRole role { erNone }
SkipType skippable_type { SkipType::stNone }
unsigned int move_id { 0 }
unsigned int g1_line_id { 0 }
unsigned int remaining_internal_g1_lines { 0 }
unsigned int layer_id { 0 }
float distance { 0.0f }
float acceleration { 0.0f }
float max_entry_speed { 0.0f }
float safe_feedrate { 0.0f }
float junction_deviation { 0.0f }
float max_mcr_entry_speed_sqr { 0.0f }
float mcr_delta_v2 { 0.0f }
float peak_cruise_v2 { 0.0f }
Flags flags
FeedrateProfile feedrate_profile
Trapezoid trapezoid

Detailed Description


Class Documentation

◆ Slic3r::GCodeProcessor::TimeBlock::Flags

struct Slic3r::GCodeProcessor::TimeBlock::Flags
Class Members
bool nominal_length { false }
bool prepare_stage { false }
bool recalculate { false }

Member Function Documentation

◆ calculate_trapezoid()

void Slic3r::GCodeProcessor::TimeBlock::calculate_trapezoid ( )
334{
335 float accelerate_distance = std::max(0.0f, estimated_acceleration_distance(feedrate_profile.entry, feedrate_profile.cruise, acceleration));
336 const float decelerate_distance = std::max(0.0f, estimated_acceleration_distance(feedrate_profile.cruise, feedrate_profile.exit, -acceleration));
337 float cruise_distance = distance - accelerate_distance - decelerate_distance;
338
339 // Not enough space to reach the nominal feedrate.
340 // This means no cruising, and we'll have to use intersection_distance() to calculate when to abort acceleration
341 // and start braking in order to reach the exit_feedrate exactly at the end of this block.
342 if (cruise_distance < 0.0f) {
343 accelerate_distance = std::clamp(intersection_distance(feedrate_profile.entry, feedrate_profile.exit, acceleration, distance), 0.0f, distance);
344 cruise_distance = 0.0f;
345 trapezoid.cruise_feedrate = speed_from_distance(feedrate_profile.entry, accelerate_distance, acceleration);
346 }
347 else
348 trapezoid.cruise_feedrate = feedrate_profile.cruise;
349
350 trapezoid.accelerate_until = accelerate_distance;
351 trapezoid.decelerate_after = accelerate_distance + cruise_distance;
352}
static float intersection_distance(float initial_rate, float final_rate, float acceleration, float distance)
Definition GCodeProcessor.cpp:213
static float speed_from_distance(float initial_feedrate, float distance, float acceleration)
Definition GCodeProcessor.cpp:218
static float estimated_acceleration_distance(float initial_rate, float target_rate, float acceleration)
Definition GCodeProcessor.cpp:208
float acceleration
Definition GCodeProcessor.hpp:727
float distance
Definition GCodeProcessor.hpp:726
FeedrateProfile feedrate_profile
Definition GCodeProcessor.hpp:737
Trapezoid trapezoid
Definition GCodeProcessor.hpp:738

References acceleration, distance, Slic3r::estimated_acceleration_distance(), feedrate_profile, Slic3r::intersection_distance(), Slic3r::speed_from_distance(), and trapezoid.

Referenced by Slic3r::GCodeProcessor::process_filament_change(), Slic3r::GCodeProcessor::process_filament_change(), Slic3r::GCodeProcessor::process_G1(), Slic3r::GCodeProcessor::process_VG1(), and Slic3r::recalculate_trapezoids().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ time()

float Slic3r::GCodeProcessor::TimeBlock::time ( ) const
inline
743 {
744 return trapezoid.acceleration_time(feedrate_profile.entry, acceleration) +
745 trapezoid.cruise_time() + trapezoid.deceleration_time(distance, acceleration);
746 }

References acceleration, distance, feedrate_profile, and trapezoid.

Referenced by Slic3r::GCodeProcessor::TimeMachine::calculate_time().

Here is the caller graph for this function:

Member Data Documentation

◆ acceleration

◆ distance

◆ feedrate_profile

◆ flags

◆ g1_line_id

◆ junction_deviation

float Slic3r::GCodeProcessor::TimeBlock::junction_deviation { 0.0f }

◆ layer_id

◆ max_entry_speed

◆ max_mcr_entry_speed_sqr

float Slic3r::GCodeProcessor::TimeBlock::max_mcr_entry_speed_sqr { 0.0f }

◆ mcr_delta_v2

float Slic3r::GCodeProcessor::TimeBlock::mcr_delta_v2 { 0.0f }

◆ move_id

◆ move_type

◆ peak_cruise_v2

float Slic3r::GCodeProcessor::TimeBlock::peak_cruise_v2 { 0.0f }

◆ remaining_internal_g1_lines

unsigned int Slic3r::GCodeProcessor::TimeBlock::remaining_internal_g1_lines { 0 }

◆ role

ExtrusionRole Slic3r::GCodeProcessor::TimeBlock::role { erNone }
718{ erNone };
@ erNone
Definition ExtrusionEntity.hpp:27

Referenced by Slic3r::GCodeProcessor::process_G1(), and Slic3r::GCodeProcessor::process_VG1().

◆ safe_feedrate

float Slic3r::GCodeProcessor::TimeBlock::safe_feedrate { 0.0f }

◆ skippable_type

◆ trapezoid


The documentation for this struct was generated from the following files: