-
-
Notifications
You must be signed in to change notification settings - Fork 163
Expand file tree
/
Copy pathToolPath.h
More file actions
80 lines (59 loc) · 2.48 KB
/
ToolPath.h
File metadata and controls
80 lines (59 loc) · 2.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/******************************************************************************\
CAMotics is an Open-Source simulation and CAM software.
Copyright (C) 2011-2019 Joseph Coffland <joseph@cauldrondevelopment.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
\******************************************************************************/
#pragma once
#include <gcode/MoveStream.h>
#include <gcode/ToolTable.h>
#include <cbang/json/Serializable.h>
#include <cbang/geom/Rectangle.h>
#include <vector>
#include <ostream>
namespace cb {namespace JSON {class Sink;}}
namespace GCode {
class STL;
class ToolPath :
protected std::vector<GCode::Move>, public cb::Rectangle3D,
public GCode::MoveStream, public cb::JSON::Serializable {
GCode::ToolTable tools;
double time = 0;
double distance = 0;
public:
ToolPath(const GCode::ToolTable &tools) : tools(tools) {}
~ToolPath();
const cb::Rectangle3D &getBounds() const {return *this;}
const GCode::ToolTable &getTools() const {return tools;}
GCode::ToolTable &getTools() {return tools;}
double getTime() const {return time;}
double getDistance() const {return distance;}
int find(double time, unsigned first, unsigned last) const;
int find(double time) const;
void print() const {}
// From std::vector<GCode::Move>
typedef std::vector<GCode::Move> path_t;
using path_t::size;
using path_t::empty;
using path_t::begin;
using path_t::end;
using path_t::const_iterator;
const Move &operator[](int i) const {return path_t::operator[](i);}
const Move &at(int i) const {return path_t::at(i);}
// From cb::JSON::Serializable
using cb::JSON::Serializable::read;
using cb::JSON::Serializable::write;
void read(const cb::JSON::Value &value) override;
void write(cb::JSON::Sink &sink) const override;
// From GCode::MoveStream
void move(GCode::Move &move) override;
};
}