mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-07-18 10:44:29 +08:00
Create sprinter firmware option to decouple it from reprap, because of the changes in reprap-firmware.
also add g10 to temperature detection
This commit is contained in:
parent
cb9eced74c
commit
a42bf8602f
@ -527,7 +527,7 @@ std::string WipeTowerIntegration::prime(GCode &gcodegen)
|
|||||||
|
|
||||||
|
|
||||||
// Disable linear advance for the wipe tower operations.
|
// Disable linear advance for the wipe tower operations.
|
||||||
//gcode += (gcodegen.config().gcode_flavor == gcfRepRap ? std::string("M572 D0 S0\n") : std::string("M900 K0\n"));
|
//gcode += (gcodegen.config().gcode_flavor == gcfRepRap || m_gcode_flavor == gcfSprinter ? std::string("M572 D0 S0\n") : std::string("M900 K0\n"));
|
||||||
|
|
||||||
for (const WipeTower::ToolChangeResult& tcr : m_priming) {
|
for (const WipeTower::ToolChangeResult& tcr : m_priming) {
|
||||||
if (!tcr.extrusions.empty())
|
if (!tcr.extrusions.empty())
|
||||||
@ -1774,10 +1774,10 @@ static bool custom_gcode_sets_temperature(const std::string &gcode, const int mc
|
|||||||
// Do not process this piece of G-code by the time estimator, it already knows the values through another sources.
|
// Do not process this piece of G-code by the time estimator, it already knows the values through another sources.
|
||||||
void GCode::print_machine_envelope(FILE *file, Print &print)
|
void GCode::print_machine_envelope(FILE *file, Print &print)
|
||||||
{
|
{
|
||||||
// gcfRepRap, gcfRepetier, gcfTeacup, gcfMakerWare, gcfMarlin, gcfKlipper, gcfSailfish, gcfMach3, gcfMachinekit,
|
// gcfRepRap, gcfRepetier, gcfTeacup, gcfMakerWare, gcfMarlin, gcfKlipper, gcfSailfish, gcfSprinter, gcfMach3, gcfMachinekit,
|
||||||
/// gcfSmoothie, gcfNoExtrusion, gcfLerdge,
|
/// gcfSmoothie, gcfNoExtrusion, gcfLerdge,
|
||||||
if (print.config().print_machine_envelope) {
|
if (print.config().print_machine_envelope) {
|
||||||
if (std::set<uint8_t>{gcfMarlin, gcfLerdge, gcfRepetier, gcfRepRap}.count(print.config().gcode_flavor.value) > 0)
|
if (std::set<uint8_t>{gcfMarlin, gcfLerdge, gcfRepetier, gcfRepRap, gcfSprinter}.count(print.config().gcode_flavor.value) > 0)
|
||||||
fprintf(file, "M201 X%d Y%d Z%d E%d ; sets maximum accelerations, mm/sec^2\n",
|
fprintf(file, "M201 X%d Y%d Z%d E%d ; sets maximum accelerations, mm/sec^2\n",
|
||||||
int(print.config().machine_max_acceleration_x.values.front() + 0.5),
|
int(print.config().machine_max_acceleration_x.values.front() + 0.5),
|
||||||
int(print.config().machine_max_acceleration_y.values.front() + 0.5),
|
int(print.config().machine_max_acceleration_y.values.front() + 0.5),
|
||||||
@ -1787,7 +1787,7 @@ void GCode::print_machine_envelope(FILE *file, Print &print)
|
|||||||
fprintf(file, "M202 X%d Y%d ; sets maximum travel speed\n",
|
fprintf(file, "M202 X%d Y%d ; sets maximum travel speed\n",
|
||||||
int(print.config().travel_speed.value),
|
int(print.config().travel_speed.value),
|
||||||
int(print.config().travel_speed.value));
|
int(print.config().travel_speed.value));
|
||||||
if (std::set<uint8_t>{gcfMarlin, gcfLerdge, gcfRepetier, gcfRepRap, gcfSmoothie}.count(print.config().gcode_flavor.value) > 0)
|
if (std::set<uint8_t>{gcfMarlin, gcfLerdge, gcfRepetier, gcfRepRap, gcfSmoothie, gcfSprinter}.count(print.config().gcode_flavor.value) > 0)
|
||||||
fprintf(file, "M203 X%d Y%d Z%d E%d ; sets maximum feedrates, mm/sec\n",
|
fprintf(file, "M203 X%d Y%d Z%d E%d ; sets maximum feedrates, mm/sec\n",
|
||||||
int(print.config().machine_max_feedrate_x.values.front() + 0.5),
|
int(print.config().machine_max_feedrate_x.values.front() + 0.5),
|
||||||
int(print.config().machine_max_feedrate_y.values.front() + 0.5),
|
int(print.config().machine_max_feedrate_y.values.front() + 0.5),
|
||||||
@ -1798,7 +1798,7 @@ void GCode::print_machine_envelope(FILE *file, Print &print)
|
|||||||
int(print.config().machine_max_acceleration_extruding.values.front() + 0.5),
|
int(print.config().machine_max_acceleration_extruding.values.front() + 0.5),
|
||||||
int(print.config().machine_max_acceleration_retracting.values.front() + 0.5),
|
int(print.config().machine_max_acceleration_retracting.values.front() + 0.5),
|
||||||
int(print.config().machine_max_acceleration_travel.values.front() + 0.5));
|
int(print.config().machine_max_acceleration_travel.values.front() + 0.5));
|
||||||
if (std::set<uint8_t>{gcfRepRap, gcfKlipper}.count(print.config().gcode_flavor.value) > 0)
|
if (std::set<uint8_t>{gcfRepRap, gcfKlipper, gcfSprinter}.count(print.config().gcode_flavor.value) > 0)
|
||||||
fprintf(file, "M204 P%d T%d ; sets acceleration (P, T), mm/sec^2\n",
|
fprintf(file, "M204 P%d T%d ; sets acceleration (P, T), mm/sec^2\n",
|
||||||
int(print.config().machine_max_acceleration_extruding.values.front() + 0.5),
|
int(print.config().machine_max_acceleration_extruding.values.front() + 0.5),
|
||||||
int(print.config().machine_max_acceleration_travel.values.front() + 0.5));
|
int(print.config().machine_max_acceleration_travel.values.front() + 0.5));
|
||||||
@ -1828,8 +1828,8 @@ void GCode::print_machine_envelope(FILE *file, Print &print)
|
|||||||
|
|
||||||
// Write 1st layer bed temperatures into the G-code.
|
// Write 1st layer bed temperatures into the G-code.
|
||||||
// Only do that if the start G-code does not already contain any M-code controlling an extruder temperature.
|
// Only do that if the start G-code does not already contain any M-code controlling an extruder temperature.
|
||||||
// M140 - Set Extruder Temperature
|
// M140 - Set Bed Temperature
|
||||||
// M190 - Set Extruder Temperature and Wait
|
// M190 - Set Bed Temperature and Wait
|
||||||
void GCode::_print_first_layer_bed_temperature(FILE *file, Print &print, const std::string &gcode, unsigned int first_printing_extruder_id, bool wait)
|
void GCode::_print_first_layer_bed_temperature(FILE *file, Print &print, const std::string &gcode, unsigned int first_printing_extruder_id, bool wait)
|
||||||
{
|
{
|
||||||
// Initial bed temperature based on the first extruder.
|
// Initial bed temperature based on the first extruder.
|
||||||
|
@ -421,8 +421,16 @@ void GCodeAnalyzer::_processG1(const GCodeReader::GCodeLine& line)
|
|||||||
|
|
||||||
void GCodeAnalyzer::_processG10(const GCodeReader::GCodeLine& line)
|
void GCodeAnalyzer::_processG10(const GCodeReader::GCodeLine& line)
|
||||||
{
|
{
|
||||||
|
//special case for reprap (temp done, TODO: offsets)
|
||||||
|
float new_temp;
|
||||||
|
if (m_gcode_flavor == gcfRepRap && line.has_value('S', new_temp))
|
||||||
|
{
|
||||||
|
_set_extruder_temp(new_temp);
|
||||||
|
}
|
||||||
// stores retract move
|
// stores retract move
|
||||||
_store_move(GCodeMove::Retract);
|
else {
|
||||||
|
_store_move(GCodeMove::Retract);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GCodeAnalyzer::_processG11(const GCodeReader::GCodeLine& line)
|
void GCodeAnalyzer::_processG11(const GCodeReader::GCodeLine& line)
|
||||||
|
@ -103,7 +103,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
WipeTowerWriter& disable_linear_advance() {
|
WipeTowerWriter& disable_linear_advance() {
|
||||||
if(m_gcode_flavor == gcfRepRap)
|
if(m_gcode_flavor == gcfRepRap || m_gcode_flavor == gcfSprinter)
|
||||||
m_gcode += std::string("M572 D0 S0\n");
|
m_gcode += std::string("M572 D0 S0\n");
|
||||||
else if(m_gcode_flavor == gcfKlipper)
|
else if(m_gcode_flavor == gcfKlipper)
|
||||||
m_gcode += std::string("SET_PRESSURE_ADVANCE ADVANCE=0\n");
|
m_gcode += std::string("SET_PRESSURE_ADVANCE ADVANCE=0\n");
|
||||||
@ -407,7 +407,7 @@ public:
|
|||||||
{
|
{
|
||||||
if (m_gcode_flavor == gcfKlipper)
|
if (m_gcode_flavor == gcfKlipper)
|
||||||
return *this;
|
return *this;
|
||||||
if (m_gcode_flavor == gcfRepRap)
|
if (m_gcode_flavor == gcfRepRap || m_gcode_flavor == gcfSprinter)
|
||||||
m_gcode += "M906 E";
|
m_gcode += "M906 E";
|
||||||
else
|
else
|
||||||
m_gcode += "M907 E";
|
m_gcode += "M907 E";
|
||||||
|
@ -687,7 +687,7 @@ namespace Slic3r {
|
|||||||
void GCodeTimeEstimator::set_default()
|
void GCodeTimeEstimator::set_default()
|
||||||
{
|
{
|
||||||
set_units(Millimeters);
|
set_units(Millimeters);
|
||||||
set_dialect(gcfRepRap);
|
set_dialect(gcfSprinter);
|
||||||
set_global_positioning_type(Absolute);
|
set_global_positioning_type(Absolute);
|
||||||
set_e_local_positioning_type(Absolute);
|
set_e_local_positioning_type(Absolute);
|
||||||
|
|
||||||
@ -1261,7 +1261,8 @@ namespace Slic3r {
|
|||||||
(dialect == gcfKlipper) ||
|
(dialect == gcfKlipper) ||
|
||||||
(dialect == gcfSmoothie) ||
|
(dialect == gcfSmoothie) ||
|
||||||
(dialect == gcfLerdge) ||
|
(dialect == gcfLerdge) ||
|
||||||
(dialect == gcfRepRap))
|
(dialect == gcfRepRap)||
|
||||||
|
(dialect == gcfSprinter))
|
||||||
{
|
{
|
||||||
if (line.has_value('S', value))
|
if (line.has_value('S', value))
|
||||||
add_additional_time(value);
|
add_additional_time(value);
|
||||||
@ -1373,7 +1374,7 @@ namespace Slic3r {
|
|||||||
GCodeFlavor dialect = get_dialect();
|
GCodeFlavor dialect = get_dialect();
|
||||||
|
|
||||||
// see http://reprap.org/wiki/G-code#M201:_Set_max_printing_acceleration
|
// see http://reprap.org/wiki/G-code#M201:_Set_max_printing_acceleration
|
||||||
float factor = ((dialect != gcfRepRap) && (get_units() == GCodeTimeEstimator::Inches)) ? INCHES_TO_MM : 1.0f;
|
float factor = ((dialect != gcfRepRap) && (dialect != gcfSprinter) && (get_units() == GCodeTimeEstimator::Inches)) ? INCHES_TO_MM : 1.0f;
|
||||||
|
|
||||||
if (line.has_x())
|
if (line.has_x())
|
||||||
set_axis_max_acceleration(X, line.x() * factor);
|
set_axis_max_acceleration(X, line.x() * factor);
|
||||||
|
@ -62,7 +62,7 @@ std::string GCodeWriter::preamble()
|
|||||||
gcode << "G90 ; use absolute coordinates\n";
|
gcode << "G90 ; use absolute coordinates\n";
|
||||||
}
|
}
|
||||||
if (FLAVOR_IS(gcfRepRap) || FLAVOR_IS(gcfMarlin) || FLAVOR_IS(gcfLerdge) || FLAVOR_IS(gcfTeacup) || FLAVOR_IS(gcfRepetier) || FLAVOR_IS(gcfSmoothie)
|
if (FLAVOR_IS(gcfRepRap) || FLAVOR_IS(gcfMarlin) || FLAVOR_IS(gcfLerdge) || FLAVOR_IS(gcfTeacup) || FLAVOR_IS(gcfRepetier) || FLAVOR_IS(gcfSmoothie)
|
||||||
|| FLAVOR_IS(gcfKlipper) || FLAVOR_IS(gcfLerdge)) {
|
|| FLAVOR_IS(gcfSprinter) || FLAVOR_IS(gcfKlipper) || FLAVOR_IS(gcfLerdge)) {
|
||||||
if (this->config.use_relative_e_distances) {
|
if (this->config.use_relative_e_distances) {
|
||||||
gcode << "M83 ; use relative distances for extrusion\n";
|
gcode << "M83 ; use relative distances for extrusion\n";
|
||||||
} else {
|
} else {
|
||||||
@ -88,7 +88,7 @@ std::string GCodeWriter::set_temperature(unsigned int temperature, bool wait, in
|
|||||||
return "";
|
return "";
|
||||||
|
|
||||||
std::string code, comment;
|
std::string code, comment;
|
||||||
if (wait && FLAVOR_IS_NOT(gcfTeacup) && FLAVOR_IS_NOT(gcfRepRap)) {
|
if (wait && FLAVOR_IS_NOT(gcfTeacup) && FLAVOR_IS_NOT(gcfRepRap) && FLAVOR_IS_NOT(gcfSprinter)) {
|
||||||
code = "M109";
|
code = "M109";
|
||||||
comment = "set temperature and wait for it to be reached";
|
comment = "set temperature and wait for it to be reached";
|
||||||
} else {
|
} else {
|
||||||
|
@ -1336,7 +1336,7 @@ std::pair<PrintBase::PrintValidationError, std::string> Print::validate() const
|
|||||||
"and use filaments of the same diameter.") };
|
"and use filaments of the same diameter.") };
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_config.gcode_flavor != gcfRepRap && m_config.gcode_flavor != gcfRepetier && m_config.gcode_flavor != gcfMarlin
|
if (m_config.gcode_flavor != gcfRepRap && m_config.gcode_flavor != gcfSprinter && m_config.gcode_flavor != gcfRepetier && m_config.gcode_flavor != gcfMarlin
|
||||||
&& m_config.gcode_flavor != gcfKlipper)
|
&& m_config.gcode_flavor != gcfKlipper)
|
||||||
return { PrintBase::PrintValidationError::pveWrongSettings,L("The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter and Repetier G-code flavors.") };
|
return { PrintBase::PrintValidationError::pveWrongSettings,L("The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter and Repetier G-code flavors.") };
|
||||||
if (! m_config.use_relative_e_distances)
|
if (! m_config.use_relative_e_distances)
|
||||||
|
@ -1642,9 +1642,10 @@ void PrintConfigDef::init_fff_params()
|
|||||||
def->enum_values.push_back("mach3");
|
def->enum_values.push_back("mach3");
|
||||||
def->enum_values.push_back("machinekit");
|
def->enum_values.push_back("machinekit");
|
||||||
def->enum_values.push_back("smoothie");
|
def->enum_values.push_back("smoothie");
|
||||||
|
def->enum_values.push_back("sprinter");
|
||||||
def->enum_values.push_back("lerdge");
|
def->enum_values.push_back("lerdge");
|
||||||
def->enum_values.push_back("no-extrusion");
|
def->enum_values.push_back("no-extrusion");
|
||||||
def->enum_labels.push_back("RepRap/Sprinter");
|
def->enum_labels.push_back("RepRap");
|
||||||
def->enum_labels.push_back("Repetier");
|
def->enum_labels.push_back("Repetier");
|
||||||
def->enum_labels.push_back("Teacup");
|
def->enum_labels.push_back("Teacup");
|
||||||
def->enum_labels.push_back("MakerWare (MakerBot)");
|
def->enum_labels.push_back("MakerWare (MakerBot)");
|
||||||
@ -1654,6 +1655,7 @@ void PrintConfigDef::init_fff_params()
|
|||||||
def->enum_labels.push_back("Mach3/LinuxCNC");
|
def->enum_labels.push_back("Mach3/LinuxCNC");
|
||||||
def->enum_labels.push_back("Machinekit");
|
def->enum_labels.push_back("Machinekit");
|
||||||
def->enum_labels.push_back("Smoothie");
|
def->enum_labels.push_back("Smoothie");
|
||||||
|
def->enum_labels.push_back("Sprinter");
|
||||||
def->enum_labels.push_back("Lerdge");
|
def->enum_labels.push_back("Lerdge");
|
||||||
def->enum_labels.push_back(L("No extrusion"));
|
def->enum_labels.push_back(L("No extrusion"));
|
||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
@ -4716,6 +4718,7 @@ std::string FullPrintConfig::validate()
|
|||||||
|
|
||||||
if (this->use_firmware_retraction.value &&
|
if (this->use_firmware_retraction.value &&
|
||||||
this->gcode_flavor.value != gcfSmoothie &&
|
this->gcode_flavor.value != gcfSmoothie &&
|
||||||
|
this->gcode_flavor.value != gcfSprinter &&
|
||||||
this->gcode_flavor.value != gcfRepRap &&
|
this->gcode_flavor.value != gcfRepRap &&
|
||||||
this->gcode_flavor.value != gcfMarlin &&
|
this->gcode_flavor.value != gcfMarlin &&
|
||||||
this->gcode_flavor.value != gcfMachinekit &&
|
this->gcode_flavor.value != gcfMachinekit &&
|
||||||
|
@ -49,7 +49,7 @@ enum WipeAlgo {
|
|||||||
|
|
||||||
enum GCodeFlavor : uint8_t {
|
enum GCodeFlavor : uint8_t {
|
||||||
gcfRepRap, gcfRepetier, gcfTeacup, gcfMakerWare, gcfMarlin, gcfKlipper, gcfSailfish, gcfMach3, gcfMachinekit,
|
gcfRepRap, gcfRepetier, gcfTeacup, gcfMakerWare, gcfMarlin, gcfKlipper, gcfSailfish, gcfMach3, gcfMachinekit,
|
||||||
gcfSmoothie, gcfNoExtrusion, gcfLerdge,
|
gcfSmoothie, gcfSprinter, gcfNoExtrusion, gcfLerdge,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum PrintHostType {
|
enum PrintHostType {
|
||||||
@ -142,6 +142,7 @@ template<> inline const t_config_enum_values& ConfigOptionEnum<GCodeFlavor>::get
|
|||||||
keys_map["klipper"] = gcfKlipper;
|
keys_map["klipper"] = gcfKlipper;
|
||||||
keys_map["sailfish"] = gcfSailfish;
|
keys_map["sailfish"] = gcfSailfish;
|
||||||
keys_map["smoothie"] = gcfSmoothie;
|
keys_map["smoothie"] = gcfSmoothie;
|
||||||
|
keys_map["sprinter"] = gcfSprinter;
|
||||||
keys_map["mach3"] = gcfMach3;
|
keys_map["mach3"] = gcfMach3;
|
||||||
keys_map["machinekit"] = gcfMachinekit;
|
keys_map["machinekit"] = gcfMachinekit;
|
||||||
keys_map["no-extrusion"] = gcfNoExtrusion;
|
keys_map["no-extrusion"] = gcfNoExtrusion;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user