OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
FilamentGroup.hpp File Reference
#include <chrono>
#include <functional>
#include <memory>
#include <numeric>
#include <optional>
#include <set>
#include <map>
#include <string>
#include <unordered_map>
#include <utility>
#include <vector>
#include <queue>
#include "GCode/ToolOrderUtils.hpp"
#include "FilamentGroupUtils.hpp"
#include "PrintConfig.hpp"
#include "MultiNozzleUtils.hpp"
Include dependency graph for FilamentGroup.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  Slic3r::FilamentGroupUtils::FlushTimeMachine
struct  Slic3r::FilamentGroupUtils::MemoryedGroup
struct  Slic3r::FilamentGroupContext
struct  Slic3r::FilamentGroupContext::ModelInfo
struct  Slic3r::FilamentGroupContext::GroupInfo
struct  Slic3r::FilamentGroupContext::MachineInfo
struct  Slic3r::FilamentGroupContext::SpeedInfo
struct  Slic3r::FilamentGroupContext::NozzleInfo
class  Slic3r::FlushDistanceEvaluator
class  Slic3r::TimeEvaluator
struct  Slic3r::ClusteringBudget
class  Slic3r::FilamentGroup
struct  Slic3r::FilamentPlanRes
class  Slic3r::KMediods

Namespaces

namespace  Slic3r
 |/ Copyright (c) Prusa Research 2020 - 2023 Enrico Turri @enricoturri1966 |/ |/ PrusaSlicer is released under the terms of the AGPLv3 or higher |/
namespace  Slic3r::FilamentGroupUtils

Typedefs

using Slic3r::FilamentGroupUtils::MemoryedGroupHeap = std::priority_queue<MemoryedGroup, std::vector<MemoryedGroup>, std::greater<MemoryedGroup>>

Enumerations

enum  Slic3r::FGStrategy { Slic3r::BestCost , Slic3r::BestFit }
enum  Slic3r::FGMode { Slic3r::FlushMode , Slic3r::MatchMode }

Functions

std::vector< unsigned int > Slic3r::collect_sorted_used_filaments (const std::vector< std::vector< unsigned int > > &layer_filaments)
void Slic3r::FilamentGroupUtils::update_memoryed_groups (const MemoryedGroup &item, const double gap_threshold, MemoryedGroupHeap &groups)
std::vector< int > Slic3r::select_best_group_for_ams (const std::vector< std::vector< int > > &filament_to_nozzles, const std::vector< MultiNozzleUtils::NozzleInfo > &nozzle_list, const std::vector< unsigned int > &used_filaments, const std::vector< FilamentGroupUtils::FilamentInfo > &used_filament_info, const std::vector< std::vector< MachineFilamentInfo > > &machine_filament_info_, const bool has_filament_switcher, const double color_threshold)
 Select the group that best fit the filaments in AMS.
std::vector< int > Slic3r::calc_filament_group_for_manual_multi_nozzle (const std::vector< int > &filament_map_manual, const FilamentGroupContext &ctx)
std::vector< int > Slic3r::calc_filament_group_for_match_multi_nozzle (const FilamentGroupContext &ctx)
std::vector< FilamentPlanRes > Slic3r::plan_filament_nozzle_mapping_and_order (const FilamentGroupContext &ctx)

Variables

static const int DEFAULT_CLUSTER_SIZE = 16
static const int ABSOLUTE_FLUSH_GAP_TOLERANCE = 10

Class Documentation

◆ Slic3r::FilamentGroupContext

struct Slic3r::FilamentGroupContext
Collaboration diagram for Slic3r::FilamentGroupContext:
Class Members
struct GroupInfo group_info
struct MachineInfo machine_info
struct ModelInfo model_info
struct NozzleInfo nozzle_info
struct SpeedInfo speed_info

◆ Slic3r::FilamentGroupContext::ModelInfo

struct Slic3r::FilamentGroupContext::ModelInfo
Collaboration diagram for Slic3r::FilamentGroupContext::ModelInfo:
Class Members
vector< string > filament_ids
vector< FilamentInfo > filament_info
vector< FlushMatrix > flush_matrix
vector< vector< unsigned int > > layer_filaments
vector< set< int > > unprintable_filaments
map< int, set< NozzleVolumeType > > unprintable_volumes

◆ Slic3r::FilamentGroupContext::GroupInfo

struct Slic3r::FilamentGroupContext::GroupInfo
Collaboration diagram for Slic3r::FilamentGroupContext::GroupInfo:
Class Members
vector< int > filament_volume_map
bool has_filament_switcher = false
bool ignore_ext_filament
double max_gap_threshold
FGMode mode
FGStrategy strategy
int total_filament_num

◆ Slic3r::FilamentGroupContext::MachineInfo

struct Slic3r::FilamentGroupContext::MachineInfo
Collaboration diagram for Slic3r::FilamentGroupContext::MachineInfo:
Class Members
vector< vector< MachineFilamentInfo > > machine_filament_info
int master_extruder_id
vector< int > max_group_size
vector< bool > prefer_non_model_filament

◆ Slic3r::FilamentGroupContext::SpeedInfo

struct Slic3r::FilamentGroupContext::SpeedInfo
Collaboration diagram for Slic3r::FilamentGroupContext::SpeedInfo:
Class Members
vector< bool > ams_preload_enabled
FilamentChangeTimeParams change_time_params
double extruder_change_time
double filament_change_time
unordered_map< int, unordered_map< int, double > > filament_print_time
bool group_with_time

◆ Slic3r::FilamentGroupContext::NozzleInfo

struct Slic3r::FilamentGroupContext::NozzleInfo
Collaboration diagram for Slic3r::FilamentGroupContext::NozzleInfo:
Class Members
map< int, vector< int > > extruder_nozzle_list
vector< NozzleInfo > nozzle_list
unordered_map< int, int > nozzle_status

◆ Slic3r::ClusteringBudget

struct Slic3r::ClusteringBudget
Class Members
int max_restarts = 30
int timeout_ms = 3000

◆ Slic3r::FilamentPlanRes

struct Slic3r::FilamentPlanRes
Collaboration diagram for Slic3r::FilamentPlanRes:
Class Members
vector< int > fil_nozzle_match
vector< int > fil_order

Variable Documentation

◆ ABSOLUTE_FLUSH_GAP_TOLERANCE

const int ABSOLUTE_FLUSH_GAP_TOLERANCE = 10
static

◆ DEFAULT_CLUSTER_SIZE

const int DEFAULT_CLUSTER_SIZE = 16
static