mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 04:31:15 -06:00 
			
		
		
		
	 71fa411100
			
		
	
	
		71fa411100
		
	
	
	
	
		
			
			so that the ordering code at G-code export may work directly with pointers to PrintInstances instead of with pair of <PrintObject, copy idx>. Also the PrintInstance knows its source ModelInstance, which allows sorting of PrintInstances for sequential printing in the order they appear in Plater's object list.
		
			
				
	
	
		
			39 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef slic3r_ShortestPath_hpp_
 | |
| #define slic3r_ShortestPath_hpp_
 | |
| 
 | |
| #include "libslic3r.h"
 | |
| #include "ExtrusionEntity.hpp"
 | |
| #include "Point.hpp"
 | |
| 
 | |
| #include <utility>
 | |
| #include <vector>
 | |
| 
 | |
| namespace ClipperLib { class PolyNode; }
 | |
| 
 | |
| namespace Slic3r {
 | |
| 
 | |
| std::vector<size_t> 				 chain_points(const Points &points, Point *start_near = nullptr);
 | |
| 
 | |
| std::vector<std::pair<size_t, bool>> chain_extrusion_entities(std::vector<ExtrusionEntity*> &entities, const Point *start_near = nullptr);
 | |
| void                                 reorder_extrusion_entities(std::vector<ExtrusionEntity*> &entities, const std::vector<std::pair<size_t, bool>> &chain);
 | |
| void                                 chain_and_reorder_extrusion_entities(std::vector<ExtrusionEntity*> &entities, const Point *start_near = nullptr);
 | |
| 
 | |
| std::vector<std::pair<size_t, bool>> chain_extrusion_paths(std::vector<ExtrusionPath> &extrusion_paths, const Point *start_near = nullptr);
 | |
| void                                 reorder_extrusion_paths(std::vector<ExtrusionPath> &extrusion_paths, std::vector<std::pair<size_t, bool>> &chain);
 | |
| void                                 chain_and_reorder_extrusion_paths(std::vector<ExtrusionPath> &extrusion_paths, const Point *start_near = nullptr);
 | |
| 
 | |
| 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); }
 | |
| 
 | |
| std::vector<ClipperLib::PolyNode*>	 chain_clipper_polynodes(const Points &points, const std::vector<ClipperLib::PolyNode*> &items);
 | |
| 
 | |
| // Chain instances of print objects by an approximate shortest path.
 | |
| // Returns pairs of PrintObject idx and instance of that PrintObject.
 | |
| class Print;
 | |
| struct PrintInstance;
 | |
| std::vector<const PrintInstance*> 	 chain_print_object_instances(const Print &print);
 | |
| 
 | |
| 
 | |
| } // namespace Slic3r
 | |
| 
 | |
| #endif /* slic3r_ShortestPath_hpp_ */
 |