@@ -167,7 +167,7 @@ void GCodeExport::setInitialAndBuildVolumeTemps(const unsigned int start_extrude
167
167
void GCodeExport::setInitialTemp (int extruder_nr, double temp)
168
168
{
169
169
extruder_attr_[extruder_nr].initial_temp_ = temp;
170
- if (flavor_ == EGCodeFlavor::GRIFFIN || flavor_ == EGCodeFlavor::ULTIGCODE)
170
+ if (flavor_ == EGCodeFlavor::GRIFFIN || flavor_ == EGCodeFlavor::CHEETAH || flavor_ == EGCodeFlavor:: ULTIGCODE)
171
171
{
172
172
extruder_attr_[extruder_nr].current_temperature_ = temp;
173
173
}
@@ -189,6 +189,8 @@ std::string GCodeExport::flavorToString(const EGCodeFlavor& flavor)
189
189
return " Marlin(Volumetric)" ;
190
190
case EGCodeFlavor::GRIFFIN:
191
191
return " Griffin" ;
192
+ case EGCodeFlavor::CHEETAH:
193
+ return " Cheetah" ;
192
194
case EGCodeFlavor::REPETIER:
193
195
return " Repetier" ;
194
196
case EGCodeFlavor::REPRAP:
@@ -211,6 +213,7 @@ std::string GCodeExport::getFileHeader(
211
213
switch (flavor_)
212
214
{
213
215
case EGCodeFlavor::GRIFFIN:
216
+ case EGCodeFlavor::CHEETAH:
214
217
prefix << " ;START_OF_HEADER" << new_line_;
215
218
prefix << " ;HEADER_VERSION:0.1" << new_line_;
216
219
prefix << " ;FLAVOR:" << flavorToString (flavor_) << new_line_;
@@ -687,7 +690,7 @@ bool GCodeExport::initializeExtruderTrains(const SliceDataStorage& storage, cons
687
690
writeCode (mesh_group_settings.get <std::string>(" machine_start_gcode" ).c_str ());
688
691
}
689
692
690
- if (getFlavor () == EGCodeFlavor::GRIFFIN)
693
+ if (getFlavor () == EGCodeFlavor::GRIFFIN || getFlavor () == EGCodeFlavor::CHEETAH )
691
694
{
692
695
std::ostringstream tmp;
693
696
tmp << " T" << start_extruder_nr;
@@ -728,7 +731,7 @@ bool GCodeExport::initializeExtruderTrains(const SliceDataStorage& storage, cons
728
731
tmp << " M227 S" << (mesh_group_settings.get <coord_t >(" retraction_amount" ) * 2560 / 1000 ) << " P" << (mesh_group_settings.get <coord_t >(" retraction_amount" ) * 2560 / 1000 );
729
732
writeLine (tmp.str ().c_str ());
730
733
}
731
- else if (getFlavor () == EGCodeFlavor::GRIFFIN)
734
+ else if (getFlavor () == EGCodeFlavor::GRIFFIN || getFlavor () == EGCodeFlavor::CHEETAH )
732
735
{ // initialize extruder trains
733
736
ExtruderTrain& train = Application::getInstance ().current_slice_ ->scene .extruders [start_extruder_nr];
734
737
processInitialLayerTemperature (storage, start_extruder_nr);
@@ -742,7 +745,7 @@ bool GCodeExport::initializeExtruderTrains(const SliceDataStorage& storage, cons
742
745
{
743
746
writeExtrusionMode (true );
744
747
}
745
- if (getFlavor () != EGCodeFlavor::GRIFFIN)
748
+ if (getFlavor () != EGCodeFlavor::GRIFFIN && getFlavor () != EGCodeFlavor::CHEETAH )
746
749
{
747
750
if (mesh_group_settings.get <bool >(" retraction_enable" ))
748
751
{
@@ -836,6 +839,7 @@ void GCodeExport::processInitialLayerTemperature(const SliceDataStorage& storage
836
839
case EGCodeFlavor::ULTIGCODE:
837
840
return ;
838
841
case EGCodeFlavor::GRIFFIN:
842
+ case EGCodeFlavor::CHEETAH:
839
843
wait_start_extruder = true ;
840
844
break ;
841
845
default :
@@ -857,6 +861,7 @@ bool GCodeExport::needPrimeBlob() const
857
861
switch (getFlavor ())
858
862
{
859
863
case EGCodeFlavor::GRIFFIN:
864
+ case EGCodeFlavor::CHEETAH:
860
865
return true ;
861
866
default :
862
867
// TODO: change this once priming for other firmware types is implemented
@@ -1435,7 +1440,7 @@ void GCodeExport::writePrimeTrain(const Velocity& travel_speed)
1435
1440
writeTravel (prime_pos, travel_speed);
1436
1441
}
1437
1442
1438
- if (flavor_ == EGCodeFlavor::GRIFFIN)
1443
+ if (flavor_ == EGCodeFlavor::GRIFFIN || flavor_ == EGCodeFlavor::CHEETAH )
1439
1444
{
1440
1445
bool should_correct_z = false ;
1441
1446
@@ -1654,7 +1659,7 @@ void GCodeExport::writeBedTemperatureCommand(const Temperature& temperature, con
1654
1659
1655
1660
void GCodeExport::writeBuildVolumeTemperatureCommand (const Temperature& temperature, const bool wait)
1656
1661
{
1657
- if (flavor_ == EGCodeFlavor::ULTIGCODE || flavor_ == EGCodeFlavor::GRIFFIN)
1662
+ if (flavor_ == EGCodeFlavor::ULTIGCODE || flavor_ == EGCodeFlavor::GRIFFIN || flavor_ == EGCodeFlavor::CHEETAH )
1658
1663
{
1659
1664
// Ultimaker printers don't support build volume temperature commands.
1660
1665
return ;
@@ -1735,12 +1740,23 @@ void GCodeExport::writeJerk(const Velocity& jerk)
1735
1740
case EGCodeFlavor::REPRAP:
1736
1741
*output_stream_ << " M566 X" << PrecisionedDouble{ 2 , jerk * 60 } << " Y" << PrecisionedDouble{ 2 , jerk * 60 } << new_line_;
1737
1742
break ;
1743
+ case EGCodeFlavor::CHEETAH:
1744
+ *output_stream_ << " M215 X" << PrecisionedDouble{ 2 , jerk * 1000 } << " Y" << PrecisionedDouble{ 2 , jerk * 1000 } << new_line_;
1745
+ break ;
1738
1746
default :
1739
1747
*output_stream_ << " M205 X" << PrecisionedDouble{ 2 , jerk } << " Y" << PrecisionedDouble{ 2 , jerk } << new_line_;
1740
1748
break ;
1741
1749
}
1742
1750
current_jerk_ = jerk;
1743
- estimate_calculator_.setMaxXyJerk (jerk);
1751
+
1752
+ if (getFlavor () == EGCodeFlavor::CHEETAH)
1753
+ {
1754
+ estimate_calculator_.setMaxXyJerk (jerk / 200 );
1755
+ }
1756
+ else
1757
+ {
1758
+ estimate_calculator_.setMaxXyJerk (jerk);
1759
+ }
1744
1760
}
1745
1761
}
1746
1762
0 commit comments