2014-05-10 15:08:49 +02:00
|
|
|
#ifndef slic3r_GCode_hpp_
|
|
|
|
|
#define slic3r_GCode_hpp_
|
|
|
|
|
|
|
|
|
|
#include <myinit.h>
|
2015-07-01 20:14:05 +02:00
|
|
|
#include "ExPolygon.hpp"
|
2015-07-01 21:47:17 +02:00
|
|
|
#include "GCodeWriter.hpp"
|
|
|
|
|
#include "Layer.hpp"
|
2015-07-01 20:14:05 +02:00
|
|
|
#include "MotionPlanner.hpp"
|
2015-07-01 21:47:17 +02:00
|
|
|
#include "Point.hpp"
|
|
|
|
|
#include "PlaceholderParser.hpp"
|
|
|
|
|
#include "Print.hpp"
|
|
|
|
|
#include "PrintConfig.hpp"
|
2014-05-10 15:08:49 +02:00
|
|
|
#include <string>
|
|
|
|
|
|
|
|
|
|
namespace Slic3r {
|
|
|
|
|
|
|
|
|
|
// draft for a binary representation of a G-code line
|
|
|
|
|
|
2015-07-01 20:14:05 +02:00
|
|
|
class AvoidCrossingPerimeters {
|
2014-05-10 15:08:49 +02:00
|
|
|
public:
|
|
|
|
|
|
2015-07-01 20:14:05 +02:00
|
|
|
// this flag triggers the use of the external configuration space
|
|
|
|
|
bool use_external_mp;
|
|
|
|
|
bool use_external_mp_once; // just for the next travel move
|
|
|
|
|
|
|
|
|
|
// this flag disables avoid_crossing_perimeters just for the next travel move
|
|
|
|
|
// we enable it by default for the first travel move in print
|
|
|
|
|
bool disable_once;
|
|
|
|
|
|
|
|
|
|
AvoidCrossingPerimeters();
|
|
|
|
|
~AvoidCrossingPerimeters();
|
|
|
|
|
void init_external_mp(const ExPolygons &islands);
|
|
|
|
|
void init_layer_mp(const ExPolygons &islands);
|
|
|
|
|
|
|
|
|
|
//Polyline travel_to(GCode &gcodegen, const Point &point);
|
|
|
|
|
Polyline travel_to(Point point, const Pointf &gcodegen_origin,
|
|
|
|
|
const Point &gcodegen_last_pos);
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
MotionPlanner* _external_mp;
|
|
|
|
|
MotionPlanner* _layer_mp;
|
2014-05-10 15:08:49 +02:00
|
|
|
};
|
|
|
|
|
|
2015-07-01 21:01:42 +02:00
|
|
|
class OozePrevention {
|
|
|
|
|
public:
|
|
|
|
|
bool enable;
|
|
|
|
|
Points standby_points;
|
|
|
|
|
|
|
|
|
|
OozePrevention();
|
|
|
|
|
};
|
|
|
|
|
|
2015-07-01 20:57:16 +02:00
|
|
|
class Wipe {
|
|
|
|
|
public:
|
|
|
|
|
bool enable;
|
|
|
|
|
Polyline path;
|
|
|
|
|
|
|
|
|
|
Wipe();
|
|
|
|
|
bool has_path();
|
|
|
|
|
void reset_path();
|
|
|
|
|
//std::string wipe(GCode &gcodegen, bool toolchange = false);
|
|
|
|
|
};
|
|
|
|
|
|
2015-07-01 21:47:17 +02:00
|
|
|
class GCode {
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
/* Origin of print coordinates expressed in unscaled G-code coordinates.
|
|
|
|
|
This affects the input arguments supplied to the extrude*() and travel_to()
|
|
|
|
|
methods. */
|
|
|
|
|
Pointf origin;
|
|
|
|
|
FullPrintConfig config;
|
|
|
|
|
GCodeWriter writer;
|
|
|
|
|
PlaceholderParser* placeholder_parser;
|
|
|
|
|
OozePrevention ooze_prevention;
|
|
|
|
|
Wipe wipe;
|
|
|
|
|
AvoidCrossingPerimeters avoid_crossing_perimeters;
|
|
|
|
|
bool enable_loop_clipping;
|
|
|
|
|
bool enable_cooling_markers;
|
|
|
|
|
size_t layer_count;
|
|
|
|
|
int layer_index; // just a counter
|
|
|
|
|
Layer* layer;
|
|
|
|
|
std::map<PrintObject*,Point> _seam_position;
|
|
|
|
|
bool first_layer; // this flag triggers first layer speeds
|
|
|
|
|
unsigned int elapsed_time; // seconds
|
|
|
|
|
Point last_pos;
|
|
|
|
|
bool last_pos_defined;
|
|
|
|
|
double volumetric_speed;
|
|
|
|
|
|
|
|
|
|
GCode();
|
|
|
|
|
};
|
|
|
|
|
|
2014-05-10 15:08:49 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif
|