Slic3r has been modified to propagate the following filament specific

values to GCode generator, one per active extruder:

bed_temperature
bridge_fan_speed
cooling
disable_fan_first_layers
fan_always_on
fan_below_layer_time
first_layer_bed_temperature
max_fan_speed
min_fan_speed
min_print_speed
slowdown_below_layer_time

Now it remains to extend Slic3r to correctly apply these values.
This commit is contained in:
bubnikv 2017-06-21 16:15:39 +02:00
parent 0bd2bb1e8e
commit f0325575c2
16 changed files with 180 additions and 135 deletions

View file

@ -26,14 +26,18 @@ PrintConfigDef::PrintConfigDef()
def->default_value = opt;
}
def = this->add("bed_temperature", coInt);
def = this->add("bed_temperature", coInts);
def->label = "Other layers";
def->tooltip = "Bed temperature for layers after the first one. Set this to zero to disable bed temperature control commands in the output.";
def->cli = "bed-temperature=i";
def->cli = "bed-temperature=i@";
def->full_label = "Bed temperature";
def->min = 0;
def->max = 300;
def->default_value = new ConfigOptionInt(0);
{
ConfigOptionInts* opt = new ConfigOptionInts();
opt->values.push_back(0);
def->default_value = opt;
}
def = this->add("before_layer_gcode", coString);
def->label = "Before layer change G-code";
@ -61,14 +65,18 @@ PrintConfigDef::PrintConfigDef()
def->min = 0;
def->default_value = new ConfigOptionFloat(0);
def = this->add("bridge_fan_speed", coInt);
def = this->add("bridge_fan_speed", coInts);
def->label = "Bridges fan speed";
def->tooltip = "This fan speed is enforced during all bridges and overhangs.";
def->sidetext = "%";
def->cli = "bridge-fan-speed=i";
def->cli = "bridge-fan-speed=i@";
def->min = 0;
def->max = 100;
def->default_value = new ConfigOptionInt(100);
{
ConfigOptionInts* opt = new ConfigOptionInts();
opt->values.push_back(100);
def->default_value = opt;
}
def = this->add("bridge_flow_ratio", coFloat);
def->label = "Bridge flow ratio";
@ -108,11 +116,15 @@ PrintConfigDef::PrintConfigDef()
def->cli = "complete-objects!";
def->default_value = new ConfigOptionBool(false);
def = this->add("cooling", coBool);
def = this->add("cooling", coBools);
def->label = "Enable auto cooling";
def->tooltip = "This flag enables the automatic cooling logic that adjusts print speed and fan speed according to layer printing time.";
def->cli = "cooling!";
def->default_value = new ConfigOptionBool(true);
{
ConfigOptionBools* opt = new ConfigOptionBools();
opt->values.push_back(true);
def->default_value = opt;
}
def = this->add("default_acceleration", coFloat);
def->label = "Default";
@ -122,14 +134,18 @@ PrintConfigDef::PrintConfigDef()
def->min = 0;
def->default_value = new ConfigOptionFloat(0);
def = this->add("disable_fan_first_layers", coInt);
def = this->add("disable_fan_first_layers", coInts);
def->label = "Disable fan for the first";
def->tooltip = "You can set this to a positive value to disable fan at all during the first layers, so that it does not make adhesion worse.";
def->sidetext = "layers";
def->cli = "disable-fan-first-layers=i";
def->cli = "disable-fan-first-layers=i@";
def->min = 0;
def->max = 1000;
def->default_value = new ConfigOptionInt(3);
{
ConfigOptionInts* opt = new ConfigOptionInts();
opt->values.push_back(3);
def->default_value = opt;
}
def = this->add("dont_support_bridges", coBool);
def->label = "Don't support bridges";
@ -304,21 +320,29 @@ PrintConfigDef::PrintConfigDef()
def->cli = "extrusion-width=s";
def->default_value = new ConfigOptionFloatOrPercent(0, false);
def = this->add("fan_always_on", coBool);
def = this->add("fan_always_on", coBools);
def->label = "Keep fan always on";
def->tooltip = "If this is enabled, fan will never be disabled and will be kept running at least at its minimum speed. Useful for PLA, harmful for ABS.";
def->cli = "fan-always-on!";
def->default_value = new ConfigOptionBool(false);
{
ConfigOptionBools* opt = new ConfigOptionBools();
opt->values.push_back(false);
def->default_value = opt;
}
def = this->add("fan_below_layer_time", coInt);
def = this->add("fan_below_layer_time", coInts);
def->label = "Enable fan if layer print time is below";
def->tooltip = "If layer print time is estimated below this number of seconds, fan will be enabled and its speed will be calculated by interpolating the minimum and maximum speeds.";
def->sidetext = "approximate seconds";
def->cli = "fan-below-layer-time=i";
def->cli = "fan-below-layer-time=i@";
def->width = 60;
def->min = 0;
def->max = 1000;
def->default_value = new ConfigOptionInt(60);
{
ConfigOptionInts* opt = new ConfigOptionInts();
opt->values.push_back(60);
def->default_value = opt;
}
def = this->add("filament_colour", coStrings);
def->label = "Color";
@ -516,13 +540,17 @@ PrintConfigDef::PrintConfigDef()
def->min = 0;
def->default_value = new ConfigOptionFloat(0);
def = this->add("first_layer_bed_temperature", coInt);
def = this->add("first_layer_bed_temperature", coInts);
def->label = "First layer";
def->tooltip = "Heated build plate temperature for the first layer. Set this to zero to disable bed temperature control commands in the output.";
def->cli = "first-layer-bed-temperature=i";
def->cli = "first-layer-bed-temperature=i@";
def->max = 0;
def->max = 300;
def->default_value = new ConfigOptionInt(0);
{
ConfigOptionInts* opt = new ConfigOptionInts();
opt->values.push_back(0);
def->default_value = opt;
}
def = this->add("first_layer_extrusion_width", coFloatOrPercent);
def->label = "First layer";
@ -694,14 +722,18 @@ PrintConfigDef::PrintConfigDef()
def->min = 0;
def->default_value = new ConfigOptionFloat(0.3);
def = this->add("max_fan_speed", coInt);
def = this->add("max_fan_speed", coInts);
def->label = "Max";
def->tooltip = "This setting represents the maximum speed of your fan.";
def->sidetext = "%";
def->cli = "max-fan-speed=i";
def->cli = "max-fan-speed=i@";
def->min = 0;
def->max = 100;
def->default_value = new ConfigOptionInt(100);
{
ConfigOptionInts* opt = new ConfigOptionInts();
opt->values.push_back(100);
def->default_value = opt;
}
def = this->add("max_layer_height", coFloats);
def->label = "Max";
@ -749,14 +781,18 @@ PrintConfigDef::PrintConfigDef()
def->min = 0;
def->default_value = new ConfigOptionFloat(0);
def = this->add("min_fan_speed", coInt);
def = this->add("min_fan_speed", coInts);
def->label = "Min";
def->tooltip = "This setting represents the minimum PWM your fan needs to work.";
def->sidetext = "%";
def->cli = "min-fan-speed=i";
def->cli = "min-fan-speed=i@";
def->min = 0;
def->max = 100;
def->default_value = new ConfigOptionInt(35);
{
ConfigOptionInts* opt = new ConfigOptionInts();
opt->values.push_back(35);
def->default_value = opt;
}
def = this->add("min_layer_height", coFloats);
def->label = "Min";
@ -770,13 +806,17 @@ PrintConfigDef::PrintConfigDef()
def->default_value = opt;
}
def = this->add("min_print_speed", coFloat);
def = this->add("min_print_speed", coFloats);
def->label = "Min print speed";
def->tooltip = "Slic3r will not scale speed down below this speed.";
def->sidetext = "mm/s";
def->cli = "min-print-speed=f";
def->cli = "min-print-speed=f@";
def->min = 0;
def->default_value = new ConfigOptionFloat(10);
{
ConfigOptionFloats* opt = new ConfigOptionFloats();
opt->values.push_back(10.);
def->default_value = opt;
}
def = this->add("min_skirt_length", coFloat);
def->label = "Minimum extrusion length";
@ -1151,15 +1191,19 @@ PrintConfigDef::PrintConfigDef()
def->min = 0;
def->default_value = new ConfigOptionInt(1);
def = this->add("slowdown_below_layer_time", coInt);
def = this->add("slowdown_below_layer_time", coInts);
def->label = "Slow down if layer print time is below";
def->tooltip = "If layer print time is estimated below this number of seconds, print moves speed will be scaled down to extend duration to this value.";
def->sidetext = "approximate seconds";
def->cli = "slowdown-below-layer-time=i";
def->cli = "slowdown-below-layer-time=i@";
def->width = 60;
def->min = 0;
def->max = 1000;
def->default_value = new ConfigOptionInt(5);
{
ConfigOptionInts* opt = new ConfigOptionInts();
opt->values.push_back(5);
def->default_value = opt;
}
def = this->add("small_perimeter_speed", coFloatOrPercent);
def->label = "Small perimeters";