mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-17 02:22:17 +00:00
FIX: use wrong retraction params in tool change
1. Set shared retract length size to 2. Filaments in one extruder shares the param 2. Move toolchange function before unretract function in append_tcr to get the correct logic jira:NONE Signed-off-by: xun.zhang <xun.zhang@bambulab.com> Change-Id: I215a542ce36107071fad39f1f9e30234fb19a3a0 (cherry picked from commit c4ef6e9e0950c58a8c5f612662145c6a256884ad)
This commit is contained in:
@@ -3,8 +3,8 @@
|
||||
|
||||
namespace Slic3r {
|
||||
|
||||
double Extruder::m_share_E = 0.;
|
||||
double Extruder::m_share_retracted = 0.;
|
||||
std::vector<double> Extruder::m_share_E = {0.,0.};
|
||||
std::vector<double> Extruder::m_share_retracted = {0.,0.};
|
||||
|
||||
Extruder::Extruder(unsigned int id, GCodeConfig *config, bool share_extruder) :
|
||||
m_id(id),
|
||||
@@ -32,11 +32,11 @@ double Extruder::extrude(double dE)
|
||||
// BBS
|
||||
if (m_share_extruder) {
|
||||
if (m_config->use_relative_e_distances)
|
||||
m_share_E = 0.;
|
||||
m_share_E += dE;
|
||||
m_share_E[extruder_id()] = 0.;
|
||||
m_share_E[extruder_id()] += dE;
|
||||
m_absolute_E += dE;
|
||||
if (dE < 0.)
|
||||
m_share_retracted -= dE;
|
||||
m_share_retracted[extruder_id()] -= dE;
|
||||
} else {
|
||||
// in case of relative E distances we always reset to 0 before any output
|
||||
if (m_config->use_relative_e_distances)
|
||||
@@ -61,13 +61,13 @@ double Extruder::retract(double length, double restart_extra)
|
||||
// BBS
|
||||
if (m_share_extruder) {
|
||||
if (m_config->use_relative_e_distances)
|
||||
m_share_E = 0.;
|
||||
double to_retract = std::max(0., length - m_share_retracted);
|
||||
m_share_E[extruder_id()] = 0.;
|
||||
double to_retract = std::max(0., length - m_share_retracted[extruder_id()]);
|
||||
m_restart_extra = restart_extra;
|
||||
if (to_retract > 0.) {
|
||||
m_share_E -= to_retract;
|
||||
m_share_E[extruder_id()] -= to_retract;
|
||||
m_absolute_E -= to_retract;
|
||||
m_share_retracted += to_retract;
|
||||
m_share_retracted[extruder_id()] += to_retract;
|
||||
}
|
||||
return to_retract;
|
||||
} else {
|
||||
@@ -89,9 +89,9 @@ double Extruder::unretract()
|
||||
{
|
||||
// BBS
|
||||
if (m_share_extruder) {
|
||||
double dE = m_share_retracted + m_restart_extra;
|
||||
double dE = m_share_retracted[extruder_id()] + m_restart_extra;
|
||||
this->extrude(dE);
|
||||
m_share_retracted = 0.;
|
||||
m_share_retracted[extruder_id()] = 0.;
|
||||
m_restart_extra = 0.;
|
||||
return dE;
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user