|
|
e31ea0 |
|
|
|
e31ea0 |
#ifndef GENERATOR_H
|
|
|
e31ea0 |
#define GENERATOR_H
|
|
|
e31ea0 |
|
|
|
e31ea0 |
|
|
|
e31ea0 |
#include "track.h"
|
|
|
e31ea0 |
#include "collider.h"
|
|
|
e31ea0 |
|
|
|
e31ea0 |
|
|
|
e31ea0 |
class Generator {
|
|
|
e31ea0 |
public:
|
|
|
e31ea0 |
virtual ~Generator() { }
|
|
|
e31ea0 |
virtual bool generate(const Collider &collider, Track &track) const = 0;
|
|
|
e31ea0 |
};
|
|
|
e31ea0 |
|
|
|
e31ea0 |
class GeneratorRowsZAX: public Generator {
|
|
|
e31ea0 |
public:
|
|
|
e31ea0 |
Real step_z;
|
|
|
e31ea0 |
Real step_a;
|
|
|
e31ea0 |
Real step_x;
|
|
|
e31ea0 |
|
|
|
e31ea0 |
Real min_x;
|
|
|
e31ea0 |
Real max_x;
|
|
|
e31ea0 |
Real min_z;
|
|
|
e31ea0 |
Real max_z;
|
|
|
e31ea0 |
Real safe_z;
|
|
|
e31ea0 |
|
|
|
e31ea0 |
Real feed_speed;
|
|
|
e31ea0 |
Real move_speed;
|
|
|
e31ea0 |
|
|
|
b2ca59 |
bool skip_middle_layers;
|
|
|
b2ca59 |
bool feed_in_rotation;
|
|
|
b2ca59 |
|
|
|
e31ea0 |
explicit GeneratorRowsZAX():
|
|
|
e31ea0 |
step_z(1),
|
|
|
e31ea0 |
step_a(1),
|
|
|
e31ea0 |
step_x(0.1),
|
|
|
e31ea0 |
min_x(),
|
|
|
e31ea0 |
max_x(),
|
|
|
e31ea0 |
min_z(),
|
|
|
e31ea0 |
max_z(),
|
|
|
e31ea0 |
safe_z(),
|
|
|
e31ea0 |
feed_speed(600),
|
|
|
b2ca59 |
move_speed(1500),
|
|
|
b2ca59 |
skip_middle_layers(false),
|
|
|
b2ca59 |
feed_in_rotation(false)
|
|
|
e31ea0 |
{ }
|
|
|
e31ea0 |
|
|
|
1bcd85 |
void tool_point(Track &track, const TrackPoint &p) const;
|
|
|
e31ea0 |
void tool_up(Track &track, Real safe_z) const;
|
|
|
e31ea0 |
void tool_feed(Track &track, Real safe_z, Real z1, Real z, Real a, Real x) const;
|
|
|
b2ca59 |
void touch(const Collider &collider, Track &track, Real safe_z, Real z1, Real z0, Real a, Real x, bool skip_z0) const;
|
|
|
e31ea0 |
|
|
|
e31ea0 |
bool generate(const Collider &collider, Track &track) const override;
|
|
|
e31ea0 |
};
|
|
|
e31ea0 |
|
|
|
e31ea0 |
|
|
|
e31ea0 |
#endif
|