Skip to content

Commit c77c30c

Browse files
committed
Disable retract during travel for printers that handle retraction
CURA-11978
1 parent 84be5f5 commit c77c30c

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

include/gcodeExport.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -719,6 +719,11 @@ class GCodeExport : public NoCopy
719719
* Set the priming leftover to be processed during the next z-hop end
720720
*/
721721
void setZHopPrimeLeftover(const ZHopAntiOozing& z_hop_prime_leftover);
722+
723+
/*!
724+
* Indicates whether the printer handles the retraction/priming, totally or with specific commands
725+
*/
726+
bool machineHandlesRetraction() const;
722727
};
723728

724729
} // namespace cura

src/LayerPlan.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2195,13 +2195,15 @@ void LayerPlan::computeAntiOozeAmounts(
21952195
// Compute the desired retraction distance and duration during travel/z-hop
21962196
const double retract_distance = retraction_config->retraction_config.distance;
21972197
const Duration retract_duration = retract_distance / retraction_config->retraction_config.speed;
2198-
const Duration retract_duration_during_zhop_and_travel = retract_duration * retraction_config->retraction_config.retract_during_travel;
2198+
const Ratio retract_during_travel_ratio = gcode.machineHandlesRetraction() ? 0.0_r : retraction_config->retraction_config.retract_during_travel;
2199+
const Duration retract_duration_during_zhop_and_travel = retract_duration * retract_during_travel_ratio;
21992200
const Duration retract_duration_during_travel = std::max(0.0_s, retract_duration_during_zhop_and_travel - travel_durations.z_hop);
22002201

22012202
// Compute the desired priming distance and duration during travel/z-hop
22022203
const double prime_distance = retraction_config->retraction_config.distance + gcode.mm3ToE(retraction_config->retraction_config.prime_volume);
22032204
const Duration prime_duration = prime_distance / retraction_config->retraction_config.primeSpeed;
2204-
const Duration prime_duration_during_zhop_and_travel = prime_duration * retraction_config->retraction_config.prime_during_travel;
2205+
const Ratio prime_during_travel_ratio = gcode.machineHandlesRetraction() ? 0.0_r : retraction_config->retraction_config.prime_during_travel;
2206+
const Duration prime_duration_during_zhop_and_travel = prime_duration * prime_during_travel_ratio;
22052207
const Duration prime_duration_during_travel = std::max(0.0_s, prime_duration_during_zhop_and_travel - travel_durations.z_hop);
22062208

22072209
// Now check whether we actually have enough time during z-hop + travel to fit the retraction and priming

src/gcodeExport.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,11 @@ void GCodeExport::setZHopPrimeLeftover(const ZHopAntiOozing& z_hop_prime_leftove
478478
z_hop_prime_leftover_ = z_hop_prime_leftover;
479479
}
480480

481+
bool GCodeExport::machineHandlesRetraction() const
482+
{
483+
return extruder_attr_[0].machine_firmware_retract_ || flavor_ == EGCodeFlavor::BFB;
484+
}
485+
481486
double GCodeExport::mm3ToE(double mm3) const
482487
{
483488
if (is_volumetric_)

0 commit comments

Comments
 (0)