initial version, DXFs can b...
Stefan Schuermans authored 11 years ago
|
1) /* drawing (DXF) to G-code (NGC) converter
2) * Copyright 2013 Stefan Schuermans <stefan@schuermans.info>
3) * Copyleft: CC-BY-SA http://creativecommons.org/licenses/by-sa/3.0/
4) */
5)
6) #include <vector>
7)
8) #include "gcode.h"
9) #include "path.h"
10) #include "point.h"
11) #include "settings.h"
12)
13) /**
14) * @brief add a new point to the end of the path
15) * @param[in] point point to add
16) */
17) void Path::addPoint(const Point &point)
18) {
19) mPoints.push_back(point);
20) }
21)
22) /**
23) * @brief add a new point to the end of the path
24) * @param[in] x x coordinate of point to add
25) * @param[in] y y coordinate of point to add
26) */
27) void Path::addPoint(double x, double y)
28) {
29) addPoint(Point(x, y));
30) }
31)
|
implement joining and impro...
Stefan Schuermans authored 11 years ago
|
32) /**
33) * @brief prepend other path to this one
34) * @param[in] other other path to prepend
35) */
36) void Path::prependPath(const Path &other)
37) {
38) mPoints.insert(mPoints.begin(),
39) other.mPoints.begin(), other.mPoints.end());
40) }
41)
42) /**
43) * @brief prepend other path in reverse to this one
44) * @param[in] other other path to prepend
45) */
46) void Path::prependReversedPath(const Path &other)
47) {
48) mPoints.insert(mPoints.begin(),
49) other.mPoints.rbegin(), other.mPoints.rend());
50) }
51)
52) /**
53) * @brief append other path to this one
54) * @param[in] other other path to appepend
55) */
56) void Path::appendPath(const Path &other)
57) {
58) mPoints.insert(mPoints.end(),
59) other.mPoints.begin(), other.mPoints.end());
60) }
61)
62) /**
63) * @brief append other path in reverse to this one
64) * @param[in] other other path to appepend
65) */
66) void Path::appendReversedPath(const Path &other)
67) {
68) mPoints.insert(mPoints.end(),
69) other.mPoints.rbegin(), other.mPoints.rend());
70) }
71)
72) /**
73) * @brief remove points too close to each other
74) * @param[in] eqDist maximum distance of two points to be considered equal
75) */
76) void Path::removeEqPoints(double eqDist)
77) {
78) Points::iterator pt = mPoints.begin();
79) while (pt != mPoints.end()) {
80) Points::iterator next = pt + 1;
81) if (next != mPoints.end() && pt->equals(*next, eqDist))
82) mPoints.erase(next);
83) else
84) pt++;
85) }
86) }
87)
|