mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-08 23:46:24 -06:00
ENH: reroder the path seq for concentric fill pattern
Signed-off-by: qing.zhang <qing.zhang@bambulab.com> Change-Id: I06bb9c5666e2205364d7031815e868eccfee6fd5
This commit is contained in:
parent
6ca5df9118
commit
99eee4a2d6
4 changed files with 20 additions and 2 deletions
|
@ -24,6 +24,19 @@ void chain_and_reorder_extrusion_paths(std::vect
|
|||
|
||||
Polylines chain_polylines(Polylines &&src, const Point *start_near = nullptr);
|
||||
inline Polylines chain_polylines(const Polylines& src, const Point* start_near = nullptr) { Polylines tmp(src); return chain_polylines(std::move(tmp), start_near); }
|
||||
template<typename T> inline void reorder_by_shortest_traverse(std::vector<T> &polylines_out)
|
||||
{
|
||||
Points start_point;
|
||||
start_point.reserve(polylines_out.size());
|
||||
for (const T contour : polylines_out) start_point.push_back(contour.points.front());
|
||||
|
||||
std::vector<Points::size_type> order = chain_points(start_point);
|
||||
|
||||
std::vector<T> Temp = polylines_out;
|
||||
polylines_out.erase(polylines_out.begin(), polylines_out.end());
|
||||
|
||||
for (size_t i:order) polylines_out.emplace_back(std::move(Temp[i]));
|
||||
}
|
||||
|
||||
std::vector<ClipperLib::PolyNode*> chain_clipper_polynodes(const Points &points, const std::vector<ClipperLib::PolyNode*> &items);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue