2013-12-21 15:15:41 +00:00
|
|
|
#ifndef slic3r_PrintConfig_hpp_
|
|
|
|
#define slic3r_PrintConfig_hpp_
|
|
|
|
|
|
|
|
#include "Config.hpp"
|
|
|
|
|
2015-07-02 12:35:21 +00:00
|
|
|
#define OPT_PTR(KEY) if (opt_key == #KEY) return &this->KEY
|
|
|
|
|
2013-12-21 15:15:41 +00:00
|
|
|
namespace Slic3r {
|
|
|
|
|
|
|
|
enum GCodeFlavor {
|
2015-01-07 20:20:58 +00:00
|
|
|
gcfRepRap, gcfTeacup, gcfMakerWare, gcfSailfish, gcfMach3, gcfMachinekit, gcfNoExtrusion,
|
2013-12-21 15:15:41 +00:00
|
|
|
};
|
|
|
|
|
2013-12-21 23:39:03 +00:00
|
|
|
enum InfillPattern {
|
2015-11-01 18:03:11 +00:00
|
|
|
ipRectilinear, ipGrid, ipLine, ipConcentric, ipHoneycomb, ip3DHoneycomb,
|
2013-12-21 23:39:03 +00:00
|
|
|
ipHilbertCurve, ipArchimedeanChords, ipOctagramSpiral,
|
|
|
|
};
|
|
|
|
|
2014-01-05 15:51:16 +00:00
|
|
|
enum SupportMaterialPattern {
|
|
|
|
smpRectilinear, smpRectilinearGrid, smpHoneycomb, smpPillars,
|
|
|
|
};
|
|
|
|
|
2014-05-24 20:10:28 +00:00
|
|
|
enum SeamPosition {
|
2014-05-22 17:34:49 +00:00
|
|
|
spRandom, spNearest, spAligned
|
|
|
|
};
|
|
|
|
|
2013-12-21 15:15:41 +00:00
|
|
|
template<> inline t_config_enum_values ConfigOptionEnum<GCodeFlavor>::get_enum_values() {
|
|
|
|
t_config_enum_values keys_map;
|
|
|
|
keys_map["reprap"] = gcfRepRap;
|
|
|
|
keys_map["teacup"] = gcfTeacup;
|
|
|
|
keys_map["makerware"] = gcfMakerWare;
|
|
|
|
keys_map["sailfish"] = gcfSailfish;
|
|
|
|
keys_map["mach3"] = gcfMach3;
|
2015-01-07 20:20:58 +00:00
|
|
|
keys_map["machinekit"] = gcfMachinekit;
|
2013-12-21 15:15:41 +00:00
|
|
|
keys_map["no-extrusion"] = gcfNoExtrusion;
|
|
|
|
return keys_map;
|
|
|
|
}
|
|
|
|
|
2013-12-21 23:39:03 +00:00
|
|
|
template<> inline t_config_enum_values ConfigOptionEnum<InfillPattern>::get_enum_values() {
|
|
|
|
t_config_enum_values keys_map;
|
|
|
|
keys_map["rectilinear"] = ipRectilinear;
|
2015-11-01 18:03:11 +00:00
|
|
|
keys_map["grid"] = ipGrid;
|
2013-12-21 23:39:03 +00:00
|
|
|
keys_map["line"] = ipLine;
|
|
|
|
keys_map["concentric"] = ipConcentric;
|
|
|
|
keys_map["honeycomb"] = ipHoneycomb;
|
2014-07-26 15:07:43 +00:00
|
|
|
keys_map["3dhoneycomb"] = ip3DHoneycomb;
|
2013-12-21 23:39:03 +00:00
|
|
|
keys_map["hilbertcurve"] = ipHilbertCurve;
|
|
|
|
keys_map["archimedeanchords"] = ipArchimedeanChords;
|
|
|
|
keys_map["octagramspiral"] = ipOctagramSpiral;
|
|
|
|
return keys_map;
|
|
|
|
}
|
|
|
|
|
2014-01-05 15:51:16 +00:00
|
|
|
template<> inline t_config_enum_values ConfigOptionEnum<SupportMaterialPattern>::get_enum_values() {
|
|
|
|
t_config_enum_values keys_map;
|
|
|
|
keys_map["rectilinear"] = smpRectilinear;
|
|
|
|
keys_map["rectilinear-grid"] = smpRectilinearGrid;
|
|
|
|
keys_map["honeycomb"] = smpHoneycomb;
|
|
|
|
keys_map["pillars"] = smpPillars;
|
|
|
|
return keys_map;
|
|
|
|
}
|
|
|
|
|
2014-05-24 20:10:28 +00:00
|
|
|
template<> inline t_config_enum_values ConfigOptionEnum<SeamPosition>::get_enum_values() {
|
2014-05-22 17:34:49 +00:00
|
|
|
t_config_enum_values keys_map;
|
|
|
|
keys_map["random"] = spRandom;
|
|
|
|
keys_map["nearest"] = spNearest;
|
|
|
|
keys_map["aligned"] = spAligned;
|
|
|
|
return keys_map;
|
|
|
|
}
|
|
|
|
|
2015-12-07 18:39:49 +00:00
|
|
|
class PrintConfigDef : public ConfigDef
|
2013-12-21 15:15:41 +00:00
|
|
|
{
|
|
|
|
public:
|
2015-12-07 18:39:49 +00:00
|
|
|
PrintConfigDef();
|
2013-12-31 14:52:37 +00:00
|
|
|
};
|
|
|
|
|
2015-12-07 18:39:49 +00:00
|
|
|
extern PrintConfigDef print_config_def;
|
|
|
|
|
|
|
|
class PrintConfigBase : public virtual ConfigBase
|
2014-03-25 23:08:15 +00:00
|
|
|
{
|
|
|
|
public:
|
2015-12-07 18:39:49 +00:00
|
|
|
PrintConfigBase() {
|
|
|
|
this->def = &print_config_def;
|
2014-03-25 23:08:15 +00:00
|
|
|
};
|
2014-03-26 23:01:33 +00:00
|
|
|
|
2015-12-07 18:39:49 +00:00
|
|
|
double min_object_distance() const;
|
|
|
|
};
|
|
|
|
|
|
|
|
class DynamicPrintConfig : public PrintConfigBase, public DynamicConfig
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
DynamicPrintConfig() : PrintConfigBase(), DynamicConfig() {};
|
2015-03-06 08:56:58 +00:00
|
|
|
void normalize();
|
2014-03-25 23:08:15 +00:00
|
|
|
};
|
|
|
|
|
2015-12-07 18:39:49 +00:00
|
|
|
class StaticPrintConfigBase : public PrintConfigBase, public StaticConfig
|
2014-03-25 23:08:15 +00:00
|
|
|
{
|
|
|
|
public:
|
2015-12-07 18:39:49 +00:00
|
|
|
StaticPrintConfigBase() : PrintConfigBase(), StaticConfig() {};
|
2014-03-25 23:08:15 +00:00
|
|
|
};
|
|
|
|
|
2015-12-07 18:39:49 +00:00
|
|
|
class PrintObjectConfig : public virtual StaticPrintConfigBase
|
2013-12-31 14:52:37 +00:00
|
|
|
{
|
|
|
|
public:
|
2014-04-26 15:19:50 +00:00
|
|
|
ConfigOptionBool dont_support_bridges;
|
2013-12-31 14:52:37 +00:00
|
|
|
ConfigOptionFloatOrPercent extrusion_width;
|
|
|
|
ConfigOptionFloatOrPercent first_layer_height;
|
2014-01-02 16:24:23 +00:00
|
|
|
ConfigOptionBool infill_only_where_needed;
|
2014-03-25 00:11:28 +00:00
|
|
|
ConfigOptionBool interface_shells;
|
2013-12-31 14:52:37 +00:00
|
|
|
ConfigOptionFloat layer_height;
|
|
|
|
ConfigOptionInt raft_layers;
|
2014-05-24 20:10:28 +00:00
|
|
|
ConfigOptionEnum<SeamPosition> seam_position;
|
2013-12-31 14:52:37 +00:00
|
|
|
ConfigOptionBool support_material;
|
|
|
|
ConfigOptionInt support_material_angle;
|
2015-01-19 08:52:24 +00:00
|
|
|
ConfigOptionFloat support_material_contact_distance;
|
2013-12-31 14:52:37 +00:00
|
|
|
ConfigOptionInt support_material_enforce_layers;
|
|
|
|
ConfigOptionInt support_material_extruder;
|
|
|
|
ConfigOptionFloatOrPercent support_material_extrusion_width;
|
|
|
|
ConfigOptionInt support_material_interface_extruder;
|
|
|
|
ConfigOptionInt support_material_interface_layers;
|
|
|
|
ConfigOptionFloat support_material_interface_spacing;
|
2014-05-21 13:21:20 +00:00
|
|
|
ConfigOptionFloatOrPercent support_material_interface_speed;
|
2014-01-05 15:51:16 +00:00
|
|
|
ConfigOptionEnum<SupportMaterialPattern> support_material_pattern;
|
2013-12-31 14:52:37 +00:00
|
|
|
ConfigOptionFloat support_material_spacing;
|
|
|
|
ConfigOptionFloat support_material_speed;
|
|
|
|
ConfigOptionInt support_material_threshold;
|
2014-06-10 11:28:57 +00:00
|
|
|
ConfigOptionFloat xy_size_compensation;
|
2013-12-31 14:52:37 +00:00
|
|
|
|
2015-12-07 18:39:49 +00:00
|
|
|
PrintObjectConfig() : StaticPrintConfigBase() {
|
|
|
|
this->set_defaults();
|
2013-12-31 14:52:37 +00:00
|
|
|
};
|
|
|
|
|
2015-08-11 23:03:43 +00:00
|
|
|
ConfigOption* option(const t_config_option_key &opt_key, bool create = false) {
|
2015-07-02 12:35:21 +00:00
|
|
|
OPT_PTR(dont_support_bridges);
|
|
|
|
OPT_PTR(extrusion_width);
|
|
|
|
OPT_PTR(first_layer_height);
|
|
|
|
OPT_PTR(infill_only_where_needed);
|
|
|
|
OPT_PTR(interface_shells);
|
|
|
|
OPT_PTR(layer_height);
|
|
|
|
OPT_PTR(raft_layers);
|
|
|
|
OPT_PTR(seam_position);
|
|
|
|
OPT_PTR(support_material);
|
|
|
|
OPT_PTR(support_material_angle);
|
|
|
|
OPT_PTR(support_material_contact_distance);
|
|
|
|
OPT_PTR(support_material_enforce_layers);
|
|
|
|
OPT_PTR(support_material_extruder);
|
|
|
|
OPT_PTR(support_material_extrusion_width);
|
|
|
|
OPT_PTR(support_material_interface_extruder);
|
|
|
|
OPT_PTR(support_material_interface_layers);
|
|
|
|
OPT_PTR(support_material_interface_spacing);
|
|
|
|
OPT_PTR(support_material_interface_speed);
|
|
|
|
OPT_PTR(support_material_pattern);
|
|
|
|
OPT_PTR(support_material_spacing);
|
|
|
|
OPT_PTR(support_material_speed);
|
|
|
|
OPT_PTR(support_material_threshold);
|
|
|
|
OPT_PTR(xy_size_compensation);
|
2013-12-31 14:52:37 +00:00
|
|
|
|
|
|
|
return NULL;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2015-12-07 18:39:49 +00:00
|
|
|
class PrintRegionConfig : public virtual StaticPrintConfigBase
|
2013-12-31 14:52:37 +00:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
ConfigOptionInt bottom_solid_layers;
|
2014-06-11 20:10:33 +00:00
|
|
|
ConfigOptionFloat bridge_flow_ratio;
|
2014-05-15 16:49:11 +00:00
|
|
|
ConfigOptionFloat bridge_speed;
|
2014-11-26 23:38:05 +00:00
|
|
|
ConfigOptionEnum<InfillPattern> external_fill_pattern;
|
2014-06-09 19:14:48 +00:00
|
|
|
ConfigOptionFloatOrPercent external_perimeter_extrusion_width;
|
2014-05-15 16:49:11 +00:00
|
|
|
ConfigOptionFloatOrPercent external_perimeter_speed;
|
2014-06-11 20:15:28 +00:00
|
|
|
ConfigOptionBool external_perimeters_first;
|
2013-12-31 14:52:37 +00:00
|
|
|
ConfigOptionBool extra_perimeters;
|
|
|
|
ConfigOptionInt fill_angle;
|
2014-03-22 15:23:33 +00:00
|
|
|
ConfigOptionPercent fill_density;
|
2013-12-31 14:52:37 +00:00
|
|
|
ConfigOptionEnum<InfillPattern> fill_pattern;
|
2014-05-15 16:49:11 +00:00
|
|
|
ConfigOptionFloat gap_fill_speed;
|
2013-12-31 14:52:37 +00:00
|
|
|
ConfigOptionInt infill_extruder;
|
|
|
|
ConfigOptionFloatOrPercent infill_extrusion_width;
|
|
|
|
ConfigOptionInt infill_every_layers;
|
2015-02-01 11:08:25 +00:00
|
|
|
ConfigOptionFloatOrPercent infill_overlap;
|
2014-05-15 16:49:11 +00:00
|
|
|
ConfigOptionFloat infill_speed;
|
2014-05-12 21:02:33 +00:00
|
|
|
ConfigOptionBool overhangs;
|
2013-12-31 14:52:37 +00:00
|
|
|
ConfigOptionInt perimeter_extruder;
|
|
|
|
ConfigOptionFloatOrPercent perimeter_extrusion_width;
|
2014-05-15 16:49:11 +00:00
|
|
|
ConfigOptionFloat perimeter_speed;
|
2013-12-31 14:52:37 +00:00
|
|
|
ConfigOptionInt perimeters;
|
2014-05-15 16:49:11 +00:00
|
|
|
ConfigOptionFloatOrPercent small_perimeter_speed;
|
2013-12-31 14:52:37 +00:00
|
|
|
ConfigOptionFloat solid_infill_below_area;
|
2014-12-16 23:34:00 +00:00
|
|
|
ConfigOptionInt solid_infill_extruder;
|
2013-12-31 14:52:37 +00:00
|
|
|
ConfigOptionFloatOrPercent solid_infill_extrusion_width;
|
|
|
|
ConfigOptionInt solid_infill_every_layers;
|
2014-05-15 16:49:11 +00:00
|
|
|
ConfigOptionFloatOrPercent solid_infill_speed;
|
2013-12-31 14:52:37 +00:00
|
|
|
ConfigOptionBool thin_walls;
|
|
|
|
ConfigOptionFloatOrPercent top_infill_extrusion_width;
|
|
|
|
ConfigOptionInt top_solid_layers;
|
2014-05-15 16:49:11 +00:00
|
|
|
ConfigOptionFloatOrPercent top_solid_infill_speed;
|
2013-12-31 14:52:37 +00:00
|
|
|
|
2015-12-07 18:39:49 +00:00
|
|
|
PrintRegionConfig() : StaticPrintConfigBase() {
|
|
|
|
this->set_defaults();
|
2013-12-31 14:52:37 +00:00
|
|
|
};
|
|
|
|
|
2015-08-11 23:03:43 +00:00
|
|
|
ConfigOption* option(const t_config_option_key &opt_key, bool create = false) {
|
2015-07-02 12:35:21 +00:00
|
|
|
OPT_PTR(bottom_solid_layers);
|
|
|
|
OPT_PTR(bridge_flow_ratio);
|
|
|
|
OPT_PTR(bridge_speed);
|
|
|
|
OPT_PTR(external_fill_pattern);
|
|
|
|
OPT_PTR(external_perimeter_extrusion_width);
|
|
|
|
OPT_PTR(external_perimeter_speed);
|
|
|
|
OPT_PTR(external_perimeters_first);
|
|
|
|
OPT_PTR(extra_perimeters);
|
|
|
|
OPT_PTR(fill_angle);
|
|
|
|
OPT_PTR(fill_density);
|
|
|
|
OPT_PTR(fill_pattern);
|
|
|
|
OPT_PTR(gap_fill_speed);
|
|
|
|
OPT_PTR(infill_extruder);
|
|
|
|
OPT_PTR(infill_extrusion_width);
|
|
|
|
OPT_PTR(infill_every_layers);
|
|
|
|
OPT_PTR(infill_overlap);
|
|
|
|
OPT_PTR(infill_speed);
|
|
|
|
OPT_PTR(overhangs);
|
|
|
|
OPT_PTR(perimeter_extruder);
|
|
|
|
OPT_PTR(perimeter_extrusion_width);
|
|
|
|
OPT_PTR(perimeter_speed);
|
|
|
|
OPT_PTR(perimeters);
|
|
|
|
OPT_PTR(small_perimeter_speed);
|
|
|
|
OPT_PTR(solid_infill_below_area);
|
|
|
|
OPT_PTR(solid_infill_extruder);
|
|
|
|
OPT_PTR(solid_infill_extrusion_width);
|
|
|
|
OPT_PTR(solid_infill_every_layers);
|
|
|
|
OPT_PTR(solid_infill_speed);
|
|
|
|
OPT_PTR(thin_walls);
|
|
|
|
OPT_PTR(top_infill_extrusion_width);
|
|
|
|
OPT_PTR(top_solid_infill_speed);
|
|
|
|
OPT_PTR(top_solid_layers);
|
2013-12-31 14:52:37 +00:00
|
|
|
|
|
|
|
return NULL;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2015-12-07 18:39:49 +00:00
|
|
|
class GCodeConfig : public virtual StaticPrintConfigBase
|
2014-10-18 15:41:21 +00:00
|
|
|
{
|
|
|
|
public:
|
2015-01-30 19:08:00 +00:00
|
|
|
ConfigOptionString before_layer_gcode;
|
2015-01-05 18:39:10 +00:00
|
|
|
ConfigOptionString end_gcode;
|
2014-10-18 15:41:21 +00:00
|
|
|
ConfigOptionString extrusion_axis;
|
2014-10-25 08:42:07 +00:00
|
|
|
ConfigOptionFloats extrusion_multiplier;
|
|
|
|
ConfigOptionFloats filament_diameter;
|
2014-10-18 15:41:21 +00:00
|
|
|
ConfigOptionBool gcode_comments;
|
|
|
|
ConfigOptionEnum<GCodeFlavor> gcode_flavor;
|
2015-01-05 18:39:10 +00:00
|
|
|
ConfigOptionString layer_gcode;
|
2015-05-31 20:04:32 +00:00
|
|
|
ConfigOptionFloat max_print_speed;
|
|
|
|
ConfigOptionFloat max_volumetric_speed;
|
2014-11-24 17:22:39 +00:00
|
|
|
ConfigOptionFloat pressure_advance;
|
2014-10-21 18:16:45 +00:00
|
|
|
ConfigOptionFloats retract_length;
|
|
|
|
ConfigOptionFloats retract_length_toolchange;
|
|
|
|
ConfigOptionFloats retract_lift;
|
|
|
|
ConfigOptionFloats retract_restart_extra;
|
|
|
|
ConfigOptionFloats retract_restart_extra_toolchange;
|
2015-12-07 18:39:49 +00:00
|
|
|
ConfigOptionFloats retract_speed;
|
2015-01-05 18:39:10 +00:00
|
|
|
ConfigOptionString start_gcode;
|
|
|
|
ConfigOptionString toolchange_gcode;
|
2014-10-21 18:16:45 +00:00
|
|
|
ConfigOptionFloat travel_speed;
|
2014-10-18 15:41:21 +00:00
|
|
|
ConfigOptionBool use_firmware_retraction;
|
|
|
|
ConfigOptionBool use_relative_e_distances;
|
2015-01-05 18:39:10 +00:00
|
|
|
ConfigOptionBool use_volumetric_e;
|
2014-10-18 15:41:21 +00:00
|
|
|
|
2015-12-07 18:39:49 +00:00
|
|
|
GCodeConfig() : StaticPrintConfigBase() {
|
|
|
|
this->set_defaults();
|
2014-10-18 15:41:21 +00:00
|
|
|
};
|
|
|
|
|
2015-08-11 23:03:43 +00:00
|
|
|
ConfigOption* option(const t_config_option_key &opt_key, bool create = false) {
|
2015-07-02 12:35:21 +00:00
|
|
|
OPT_PTR(before_layer_gcode);
|
|
|
|
OPT_PTR(end_gcode);
|
|
|
|
OPT_PTR(extrusion_axis);
|
|
|
|
OPT_PTR(extrusion_multiplier);
|
|
|
|
OPT_PTR(filament_diameter);
|
|
|
|
OPT_PTR(gcode_comments);
|
|
|
|
OPT_PTR(gcode_flavor);
|
|
|
|
OPT_PTR(layer_gcode);
|
|
|
|
OPT_PTR(max_print_speed);
|
|
|
|
OPT_PTR(max_volumetric_speed);
|
|
|
|
OPT_PTR(pressure_advance);
|
|
|
|
OPT_PTR(retract_length);
|
|
|
|
OPT_PTR(retract_length_toolchange);
|
|
|
|
OPT_PTR(retract_lift);
|
|
|
|
OPT_PTR(retract_restart_extra);
|
|
|
|
OPT_PTR(retract_restart_extra_toolchange);
|
|
|
|
OPT_PTR(retract_speed);
|
|
|
|
OPT_PTR(start_gcode);
|
|
|
|
OPT_PTR(toolchange_gcode);
|
|
|
|
OPT_PTR(travel_speed);
|
|
|
|
OPT_PTR(use_firmware_retraction);
|
|
|
|
OPT_PTR(use_relative_e_distances);
|
|
|
|
OPT_PTR(use_volumetric_e);
|
2014-10-18 15:41:21 +00:00
|
|
|
|
|
|
|
return NULL;
|
|
|
|
};
|
2014-11-23 17:59:18 +00:00
|
|
|
|
|
|
|
std::string get_extrusion_axis() const
|
|
|
|
{
|
2015-01-07 20:20:58 +00:00
|
|
|
if ((this->gcode_flavor.value == gcfMach3) || (this->gcode_flavor.value == gcfMachinekit)) {
|
2014-11-23 17:59:18 +00:00
|
|
|
return "A";
|
|
|
|
} else if (this->gcode_flavor.value == gcfNoExtrusion) {
|
|
|
|
return "";
|
|
|
|
} else {
|
|
|
|
return this->extrusion_axis.value;
|
|
|
|
}
|
|
|
|
};
|
2014-10-18 15:41:21 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class PrintConfig : public GCodeConfig
|
2013-12-31 14:52:37 +00:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
ConfigOptionBool avoid_crossing_perimeters;
|
2014-06-15 23:49:49 +00:00
|
|
|
ConfigOptionPoints bed_shape;
|
2013-12-31 14:52:37 +00:00
|
|
|
ConfigOptionInt bed_temperature;
|
|
|
|
ConfigOptionFloat bridge_acceleration;
|
|
|
|
ConfigOptionInt bridge_fan_speed;
|
|
|
|
ConfigOptionFloat brim_width;
|
|
|
|
ConfigOptionBool complete_objects;
|
|
|
|
ConfigOptionBool cooling;
|
|
|
|
ConfigOptionFloat default_acceleration;
|
|
|
|
ConfigOptionInt disable_fan_first_layers;
|
|
|
|
ConfigOptionFloat duplicate_distance;
|
|
|
|
ConfigOptionFloat extruder_clearance_height;
|
|
|
|
ConfigOptionFloat extruder_clearance_radius;
|
|
|
|
ConfigOptionPoints extruder_offset;
|
|
|
|
ConfigOptionBool fan_always_on;
|
|
|
|
ConfigOptionInt fan_below_layer_time;
|
2015-05-26 00:01:43 +00:00
|
|
|
ConfigOptionStrings filament_colour;
|
2013-12-31 14:52:37 +00:00
|
|
|
ConfigOptionFloat first_layer_acceleration;
|
|
|
|
ConfigOptionInt first_layer_bed_temperature;
|
2014-01-02 23:34:30 +00:00
|
|
|
ConfigOptionFloatOrPercent first_layer_extrusion_width;
|
2013-12-31 14:52:37 +00:00
|
|
|
ConfigOptionFloatOrPercent first_layer_speed;
|
|
|
|
ConfigOptionInts first_layer_temperature;
|
|
|
|
ConfigOptionBool gcode_arcs;
|
|
|
|
ConfigOptionFloat infill_acceleration;
|
|
|
|
ConfigOptionBool infill_first;
|
|
|
|
ConfigOptionInt max_fan_speed;
|
|
|
|
ConfigOptionInt min_fan_speed;
|
2015-12-07 18:39:49 +00:00
|
|
|
ConfigOptionFloat min_print_speed;
|
2013-12-31 14:52:37 +00:00
|
|
|
ConfigOptionFloat min_skirt_length;
|
|
|
|
ConfigOptionString notes;
|
|
|
|
ConfigOptionFloats nozzle_diameter;
|
|
|
|
ConfigOptionBool only_retract_when_crossing_perimeters;
|
|
|
|
ConfigOptionBool ooze_prevention;
|
|
|
|
ConfigOptionString output_filename_format;
|
|
|
|
ConfigOptionFloat perimeter_acceleration;
|
|
|
|
ConfigOptionStrings post_process;
|
|
|
|
ConfigOptionFloat resolution;
|
|
|
|
ConfigOptionFloats retract_before_travel;
|
|
|
|
ConfigOptionBools retract_layer_change;
|
|
|
|
ConfigOptionFloat skirt_distance;
|
|
|
|
ConfigOptionInt skirt_height;
|
|
|
|
ConfigOptionInt skirts;
|
|
|
|
ConfigOptionInt slowdown_below_layer_time;
|
|
|
|
ConfigOptionBool spiral_vase;
|
|
|
|
ConfigOptionInt standby_temperature_delta;
|
|
|
|
ConfigOptionInts temperature;
|
|
|
|
ConfigOptionInt threads;
|
|
|
|
ConfigOptionFloat vibration_limit;
|
|
|
|
ConfigOptionBools wipe;
|
|
|
|
ConfigOptionFloat z_offset;
|
|
|
|
|
2014-10-18 15:41:21 +00:00
|
|
|
PrintConfig() : GCodeConfig() {
|
2015-12-07 18:39:49 +00:00
|
|
|
this->set_defaults();
|
2013-12-31 14:52:37 +00:00
|
|
|
};
|
|
|
|
|
2015-08-11 23:03:43 +00:00
|
|
|
ConfigOption* option(const t_config_option_key &opt_key, bool create = false) {
|
2015-07-02 12:35:21 +00:00
|
|
|
OPT_PTR(avoid_crossing_perimeters);
|
|
|
|
OPT_PTR(bed_shape);
|
|
|
|
OPT_PTR(bed_temperature);
|
|
|
|
OPT_PTR(bridge_acceleration);
|
|
|
|
OPT_PTR(bridge_fan_speed);
|
|
|
|
OPT_PTR(brim_width);
|
|
|
|
OPT_PTR(complete_objects);
|
|
|
|
OPT_PTR(cooling);
|
|
|
|
OPT_PTR(default_acceleration);
|
|
|
|
OPT_PTR(disable_fan_first_layers);
|
|
|
|
OPT_PTR(duplicate_distance);
|
|
|
|
OPT_PTR(extruder_clearance_height);
|
|
|
|
OPT_PTR(extruder_clearance_radius);
|
|
|
|
OPT_PTR(extruder_offset);
|
|
|
|
OPT_PTR(fan_always_on);
|
|
|
|
OPT_PTR(fan_below_layer_time);
|
|
|
|
OPT_PTR(filament_colour);
|
|
|
|
OPT_PTR(first_layer_acceleration);
|
|
|
|
OPT_PTR(first_layer_bed_temperature);
|
|
|
|
OPT_PTR(first_layer_extrusion_width);
|
|
|
|
OPT_PTR(first_layer_speed);
|
|
|
|
OPT_PTR(first_layer_temperature);
|
|
|
|
OPT_PTR(gcode_arcs);
|
|
|
|
OPT_PTR(infill_acceleration);
|
|
|
|
OPT_PTR(infill_first);
|
|
|
|
OPT_PTR(max_fan_speed);
|
|
|
|
OPT_PTR(min_fan_speed);
|
|
|
|
OPT_PTR(min_print_speed);
|
|
|
|
OPT_PTR(min_skirt_length);
|
|
|
|
OPT_PTR(notes);
|
|
|
|
OPT_PTR(nozzle_diameter);
|
|
|
|
OPT_PTR(only_retract_when_crossing_perimeters);
|
|
|
|
OPT_PTR(ooze_prevention);
|
|
|
|
OPT_PTR(output_filename_format);
|
|
|
|
OPT_PTR(perimeter_acceleration);
|
|
|
|
OPT_PTR(post_process);
|
|
|
|
OPT_PTR(resolution);
|
|
|
|
OPT_PTR(retract_before_travel);
|
|
|
|
OPT_PTR(retract_layer_change);
|
|
|
|
OPT_PTR(skirt_distance);
|
|
|
|
OPT_PTR(skirt_height);
|
|
|
|
OPT_PTR(skirts);
|
|
|
|
OPT_PTR(slowdown_below_layer_time);
|
|
|
|
OPT_PTR(spiral_vase);
|
|
|
|
OPT_PTR(standby_temperature_delta);
|
|
|
|
OPT_PTR(temperature);
|
|
|
|
OPT_PTR(threads);
|
|
|
|
OPT_PTR(vibration_limit);
|
|
|
|
OPT_PTR(wipe);
|
|
|
|
OPT_PTR(z_offset);
|
2013-12-31 14:52:37 +00:00
|
|
|
|
2014-10-18 15:41:21 +00:00
|
|
|
// look in parent class
|
|
|
|
ConfigOption* opt;
|
|
|
|
if ((opt = GCodeConfig::option(opt_key, create)) != NULL) return opt;
|
|
|
|
|
2013-12-31 14:52:37 +00:00
|
|
|
return NULL;
|
2013-12-21 15:15:41 +00:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2015-12-07 18:39:49 +00:00
|
|
|
class HostConfig : public virtual StaticPrintConfigBase
|
2014-12-28 00:30:05 +00:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
ConfigOptionString octoprint_host;
|
|
|
|
ConfigOptionString octoprint_apikey;
|
2015-01-03 22:25:55 +00:00
|
|
|
ConfigOptionString serial_port;
|
|
|
|
ConfigOptionInt serial_speed;
|
2014-12-28 00:30:05 +00:00
|
|
|
|
2015-12-07 18:39:49 +00:00
|
|
|
HostConfig() : StaticPrintConfigBase() {
|
|
|
|
this->set_defaults();
|
2014-12-28 00:30:05 +00:00
|
|
|
};
|
|
|
|
|
2015-08-11 23:03:43 +00:00
|
|
|
ConfigOption* option(const t_config_option_key &opt_key, bool create = false) {
|
2015-07-02 12:35:21 +00:00
|
|
|
OPT_PTR(octoprint_host);
|
|
|
|
OPT_PTR(octoprint_apikey);
|
2015-11-01 18:12:13 +00:00
|
|
|
OPT_PTR(serial_port);
|
|
|
|
OPT_PTR(serial_speed);
|
2014-12-28 00:30:05 +00:00
|
|
|
|
|
|
|
return NULL;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
class FullPrintConfig
|
|
|
|
: public PrintObjectConfig, public PrintRegionConfig, public PrintConfig, public HostConfig
|
2014-10-18 15:41:21 +00:00
|
|
|
{
|
2014-03-25 23:08:15 +00:00
|
|
|
public:
|
2015-08-11 23:03:43 +00:00
|
|
|
ConfigOption* option(const t_config_option_key &opt_key, bool create = false) {
|
2014-01-02 09:44:54 +00:00
|
|
|
ConfigOption* opt;
|
|
|
|
if ((opt = PrintObjectConfig::option(opt_key, create)) != NULL) return opt;
|
|
|
|
if ((opt = PrintRegionConfig::option(opt_key, create)) != NULL) return opt;
|
|
|
|
if ((opt = PrintConfig::option(opt_key, create)) != NULL) return opt;
|
2014-12-28 00:30:05 +00:00
|
|
|
if ((opt = HostConfig::option(opt_key, create)) != NULL) return opt;
|
2014-01-02 09:44:54 +00:00
|
|
|
return NULL;
|
|
|
|
};
|
|
|
|
};
|
2013-12-31 14:52:37 +00:00
|
|
|
|
2013-12-21 15:15:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|