OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::GUI::AMSinfo Struct Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/Widgets/AMSItem.hpp>

Collaboration diagram for Slic3r::GUI::AMSinfo:

Public Member Functions

bool operator== (const AMSinfo &other) const
bool operator!= (const AMSinfo &other) const
bool parse_ams_info (MachineObject *obj, DevAms *ams, bool remain_flag=false, bool humidity_flag=false)
void parse_ext_info (MachineObject *obj, DevAmsTray tray)
bool support_drying () const
bool support_humidity () const
Caninfo get_caninfo (const std::string &can_id, bool &found) const
int get_humidity_display_idx () const
bool routes_to_main_extruder () const

Public Attributes

std::string ams_id
std::vector< Caninfo > cans
int nozzle_id = 0
std::string current_can_id
AMSPassRoadSTEP current_step = AMSPassRoadSTEP::AMS_ROAD_STEP_NONE
AMSAction current_action
int curreent_filamentstep
int ams_humidity = 0
int humidity_raw = -1
int left_dray_time = 0
float current_temperature = INVALID_AMS_TEMPERATURE
AMSModel ams_type = AMSModel::GENERIC_AMS
AMSModelOriginType ext_type = AMSModelOriginType::GENERIC_EXT
std::optional< DevFilaSwitch::SwitchPos > switch_pos

Detailed Description

Member Function Documentation

◆ get_caninfo()

Caninfo Slic3r::GUI::AMSinfo::get_caninfo ( const std::string & can_id,
bool & found ) const
217{
218 found = false;
219 for (const auto& can_info : cans)
220 {
221 if (can_info.can_id == can_id)
222 {
223 found = true;
224 return can_info;
225 }
226 }
227
228 return Caninfo();
229};
std::vector< Caninfo > cans
Definition AMSItem.hpp:237

References cans.

◆ get_humidity_display_idx()

int Slic3r::GUI::AMSinfo::get_humidity_display_idx ( ) const
232{
234 {
235 if (ams_humidity > 0 && ams_humidity < 6)
236 {
237 return ams_humidity;
238 }
239 }
241 {
242 if (humidity_raw < 20)
243 {
244 return 5;
245 }
246 else if (humidity_raw < 40)
247 {
248 return 4;
249 }
250 else if (humidity_raw < 60)
251 {
252 return 3;
253 }
254 else if (humidity_raw < 80)
255 {
256 return 2;
257 }
258 else
259 {
260 return 1;
261 }
262 }
263
264 //assert(false && "Invalid AMS type for humidity display");
265 return 1;
266}
@ N3S_AMS
Definition AMSItem.hpp:62
@ GENERIC_AMS
Definition AMSItem.hpp:59
@ N3F_AMS
Definition AMSItem.hpp:61
AMSModel ams_type
Definition AMSItem.hpp:247
int humidity_raw
Definition AMSItem.hpp:244
int ams_humidity
Definition AMSItem.hpp:243

References ams_humidity, ams_type, Slic3r::GUI::GENERIC_AMS, humidity_raw, Slic3r::GUI::N3F_AMS, and Slic3r::GUI::N3S_AMS.

Referenced by support_humidity().

Here is the caller graph for this function:

◆ operator!=()

bool Slic3r::GUI::AMSinfo::operator!= ( const AMSinfo & other) const
inline
278 {
279 if (operator==(other))
280 {
281 return false;
282 }
283
284 return true;
285 };

◆ operator==()

bool Slic3r::GUI::AMSinfo::operator== ( const AMSinfo & other) const
inline
256 {
257 if (ams_id == other.ams_id &&
258 cans == other.cans &&
259 nozzle_id == other.nozzle_id &&
260 current_can_id == other.current_can_id &&
261 current_step == other.current_step &&
262 current_action == other.current_action &&
263 curreent_filamentstep == other.curreent_filamentstep &&
264 ams_humidity == other.ams_humidity &&
265 left_dray_time == other.left_dray_time &&
266 current_temperature == other.current_temperature &&
267 ams_type == other.ams_type &&
268 ext_type == other.ext_type &&
269 switch_pos == other.switch_pos) // Orca: refresh placement when the switch inlet changes
270 {
271 return true;
272 }
273
274 return false;
275 };
AMSModelOriginType ext_type
Definition AMSItem.hpp:248
AMSPassRoadSTEP current_step
Definition AMSItem.hpp:240
std::string ams_id
Definition AMSItem.hpp:236
std::string current_can_id
Definition AMSItem.hpp:239
int curreent_filamentstep
Definition AMSItem.hpp:242
int nozzle_id
Definition AMSItem.hpp:238
float current_temperature
Definition AMSItem.hpp:246
AMSAction current_action
Definition AMSItem.hpp:241
int left_dray_time
Definition AMSItem.hpp:245
std::optional< DevFilaSwitch::SwitchPos > switch_pos
Definition AMSItem.hpp:252

References ams_humidity, ams_id, ams_type, cans, curreent_filamentstep, current_action, current_can_id, current_step, current_temperature, ext_type, left_dray_time, nozzle_id, and switch_pos.

◆ parse_ams_info()

bool Slic3r::GUI::AMSinfo::parse_ams_info ( MachineObject * obj,
DevAms * ams,
bool remain_flag = false,
bool humidity_flag = false )
82{
83 if (!ams) return false;
84 this->ams_id = ams->GetAmsId();
85
86 if (ams->SupportHumidity()){
87 this->ams_humidity = ams->GetHumidityLevel();
88 }
89 else{
90 this->ams_humidity = -1;
91 }
92
93 this->humidity_raw = ams->GetHumidityPercent();
94 this->left_dray_time = ams->GetLeftDryTime();
95 this->current_temperature = ams->GetCurrentTemperature();
96 this->ams_type = AMSModel(ams->GetAmsType());
97
98 nozzle_id = ams->GetExtruderId();
99 switch_pos = ams->GetSwitcherPos(); // Orca: carry the switch inlet for inlet-aware panel placement
100 cans.clear();
101 for (int i = 0; i < ams->GetTrays().size(); i++) {
102 auto it = ams->GetTrays().find(std::to_string(i));
103 Caninfo info;
104 // tray is exists
105 if (it != ams->GetTrays().end() && it->second->is_exists) {
106 if (it->second->is_tray_info_ready()) {
107 info.can_id = it->second->id;
108 info.ctype = it->second->ctype;
109 info.material_name = it->second->get_display_filament_type();
110 info.cali_idx = it->second->cali_idx;
111 info.filament_id = it->second->setting_id;
112 if (!it->second->color.empty()) {
113 info.material_colour = DevAmsTray::decode_color(it->second->color);
114 } else {
115 // set to white by default
116 info.material_colour = AMS_TRAY_DEFAULT_COL;
117 }
118
119 for (std::string cols:it->second->cols) {
120 info.material_cols.push_back(DevAmsTray::decode_color(cols));
121 }
122
123 if (DevFilaSystem::IsBBL_Filament(it->second->tag_uid)) {
124 info.material_state = AMSCanType::AMS_CAN_TYPE_BRAND;
125 } else {
126 info.material_state = AMSCanType::AMS_CAN_TYPE_THIRDBRAND;
127 }
128
129 if (!DevFilaSystem::IsBBL_Filament(it->second->tag_uid) || !remain_flag) {
130 info.material_remain = 100;
131 } else {
132 if(it->second->remain < 0 || it->second->remain > 100) {
133 info.material_remain = 100;/*ignore the invalid data*/
134 } else {
135 info.material_remain = it->second->remain;
136 }
137 }
138
139
140 } else {
141 info.can_id = it->second->id;
142 info.material_name = "";
143 info.cali_idx = -1;
144 info.filament_id = "";
145 info.ctype = 0;
146 info.material_colour = AMS_TRAY_DEFAULT_COL;
147 info.material_state = AMSCanType::AMS_CAN_TYPE_THIRDBRAND;
148 }
149
150 if (it->second->is_tray_info_ready() && obj->cali_version >= 0) {
151 CalibUtils::get_pa_k_n_value_by_cali_idx(obj, it->second->cali_idx, info.k, info.n);
152 }
153 else {
154 info.k = it->second->k;
155 info.n = it->second->n;
156 }
157 } else {
158 //info.can_id = i;
159 info.can_id = std::to_string(i);
160 info.material_state = AMSCanType::AMS_CAN_TYPE_EMPTY;
161 }
162 cans.push_back(info);
163 }
164 return true;
165}
static wxColour decode_color(const std::string &color)
Definition DevFilaSystem.cpp:38
static bool IsBBL_Filament(std::string tag_uid)
Definition DevFilaSystem.cpp:367
static bool get_pa_k_n_value_by_cali_idx(const MachineObject *obj, int cali_idx, float &out_k, float &out_n)
Definition CalibUtils.cpp:1467
AMSModel
Definition AMSItem.hpp:57
@ AMS_CAN_TYPE_BRAND
Definition AMSItem.hpp:140
@ AMS_CAN_TYPE_THIRDBRAND
Definition AMSItem.hpp:141
@ AMS_CAN_TYPE_EMPTY
Definition AMSItem.hpp:142
static const wxColour AMS_TRAY_DEFAULT_COL
Definition AMSItem.cpp:57

References Slic3r::GUI::AMS_CAN_TYPE_BRAND, Slic3r::GUI::AMS_CAN_TYPE_EMPTY, Slic3r::GUI::AMS_CAN_TYPE_THIRDBRAND, ams_humidity, ams_id, Slic3r::GUI::AMS_TRAY_DEFAULT_COL, ams_type, Slic3r::GUI::Caninfo::cali_idx, Slic3r::MachineObject::cali_version, Slic3r::GUI::Caninfo::can_id, cans, Slic3r::GUI::Caninfo::ctype, current_temperature, Slic3r::DevAmsTray::decode_color(), Slic3r::GUI::Caninfo::filament_id, Slic3r::GUI::CalibUtils::get_pa_k_n_value_by_cali_idx(), Slic3r::DevAms::GetAmsId(), Slic3r::DevAms::GetAmsType(), Slic3r::DevAms::GetCurrentTemperature(), Slic3r::DevAms::GetExtruderId(), Slic3r::DevAms::GetHumidityLevel(), Slic3r::DevAms::GetHumidityPercent(), Slic3r::DevAms::GetLeftDryTime(), Slic3r::DevAms::GetSwitcherPos(), Slic3r::DevAms::GetTrays(), humidity_raw, Slic3r::DevFilaSystem::IsBBL_Filament(), Slic3r::GUI::Caninfo::k, left_dray_time, Slic3r::GUI::Caninfo::material_colour, Slic3r::GUI::Caninfo::material_cols, Slic3r::GUI::Caninfo::material_name, Slic3r::GUI::Caninfo::material_remain, Slic3r::GUI::Caninfo::material_state, Slic3r::GUI::Caninfo::n, nozzle_id, Slic3r::DevAms::SupportHumidity(), and switch_pos.

Referenced by Slic3r::GUI::ReselectMachineDialog::CaculateSwitcherDistribution(), Slic3r::GUI::AMSControl::parse_object(), Slic3r::GUI::ExtruderGroup::sync_ams(), Slic3r::GUI::CalibrationPresetPage::sync_ams_info(), and Slic3r::GUI::StatusPanel::update_ams().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parse_ext_info()

void Slic3r::GUI::AMSinfo::parse_ext_info ( MachineObject * obj,
DevAmsTray tray )
167 {
168
169 this->ams_id = tray.id;
171 Caninfo info;
172 info.can_id = std::to_string(0);
173 this->cans.clear();
174
175 if (tray.id == std::to_string(VIRTUAL_TRAY_MAIN_ID))
176 this->nozzle_id = 0;
177 else if (tray.id == std::to_string(VIRTUAL_TRAY_DEPUTY_ID))
178 this->nozzle_id = 1;
179
180 if (tray.is_tray_info_ready()) {
181 info.ctype = tray.ctype;
182 info.material_name = tray.get_display_filament_type();
183 info.cali_idx = tray.cali_idx;
184 info.filament_id = tray.setting_id;
185 if (!tray.color.empty()) {
186 info.material_colour = DevAmsTray::decode_color(tray.color);
187 }
188 else {
189 // set to white by default
190 info.material_colour = AMS_TRAY_DEFAULT_COL;
191 }
192
193 for (std::string cols : tray.cols) {
194 info.material_cols.push_back(DevAmsTray::decode_color(cols));
195 }
196 info.material_remain = 100;
197 }
198 else {
199 info.material_name = "";
200 info.cali_idx = -1;
201 info.filament_id = "";
202 info.ctype = 0;
203 info.material_colour = AMS_TRAY_DEFAULT_COL;
204 }
205 info.material_state = AMSCanType::AMS_CAN_TYPE_VIRTUAL;
206 if (tray.is_tray_info_ready() && obj->cali_version >= 0) {
207 CalibUtils::get_pa_k_n_value_by_cali_idx(obj, tray.cali_idx, info.k, info.n);
208 }
209 else {
210 info.k = tray.k;
211 info.n = tray.n;
212 }
213 this->cans.push_back(info);
214}
#define VIRTUAL_TRAY_DEPUTY_ID
Definition DevDefs.h:90
#define VIRTUAL_TRAY_MAIN_ID
Definition DevDefs.h:89
@ EXT_AMS
Definition AMSItem.hpp:58
@ AMS_CAN_TYPE_VIRTUAL
Definition AMSItem.hpp:143

References Slic3r::GUI::AMS_CAN_TYPE_VIRTUAL, ams_id, Slic3r::GUI::AMS_TRAY_DEFAULT_COL, ams_type, Slic3r::DevAmsTray::cali_idx, Slic3r::GUI::Caninfo::cali_idx, Slic3r::MachineObject::cali_version, Slic3r::GUI::Caninfo::can_id, cans, Slic3r::DevAmsTray::color, Slic3r::DevAmsTray::cols, Slic3r::DevAmsTray::ctype, Slic3r::GUI::Caninfo::ctype, Slic3r::DevAmsTray::decode_color(), Slic3r::GUI::EXT_AMS, Slic3r::GUI::Caninfo::filament_id, Slic3r::DevAmsTray::get_display_filament_type(), Slic3r::GUI::CalibUtils::get_pa_k_n_value_by_cali_idx(), Slic3r::DevAmsTray::id, Slic3r::DevAmsTray::is_tray_info_ready(), Slic3r::DevAmsTray::k, Slic3r::GUI::Caninfo::k, Slic3r::GUI::Caninfo::material_colour, Slic3r::GUI::Caninfo::material_cols, Slic3r::GUI::Caninfo::material_name, Slic3r::GUI::Caninfo::material_remain, Slic3r::GUI::Caninfo::material_state, Slic3r::DevAmsTray::n, Slic3r::GUI::Caninfo::n, nozzle_id, Slic3r::DevAmsTray::setting_id, VIRTUAL_TRAY_DEPUTY_ID, and VIRTUAL_TRAY_MAIN_ID.

Referenced by Slic3r::GUI::CalibrationPresetPage::sync_ams_info(), and Slic3r::GUI::StatusPanel::update_ams().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ routes_to_main_extruder()

bool Slic3r::GUI::AMSinfo::routes_to_main_extruder ( ) const
275{
276 if (switch_pos.has_value())
278 return nozzle_id == MAIN_EXTRUDER_ID;
279}
#define MAIN_EXTRUDER_ID
Definition DevDefs.h:101
@ POS_IN_B
Definition DevFilaSwitch.h:35

References MAIN_EXTRUDER_ID, nozzle_id, Slic3r::DevFilaSwitch::POS_IN_B, and switch_pos.

Referenced by Slic3r::GUI::AMSControl::AddAms(), and Slic3r::GUI::AMSControl::AddAmsPreview().

Here is the caller graph for this function:

◆ support_drying()

bool Slic3r::GUI::AMSinfo::support_drying ( ) const
inline

◆ support_humidity()

bool Slic3r::GUI::AMSinfo::support_humidity ( ) const
inline
291{ return 1 <= get_humidity_display_idx() && get_humidity_display_idx() <= 5; }
int get_humidity_display_idx() const
Definition AMSItem.cpp:231

References get_humidity_display_idx().

Here is the call graph for this function:

Member Data Documentation

◆ ams_humidity

int Slic3r::GUI::AMSinfo::ams_humidity = 0

◆ ams_id

◆ ams_type

◆ cans

◆ curreent_filamentstep

int Slic3r::GUI::AMSinfo::curreent_filamentstep

Referenced by operator==().

◆ current_action

AMSAction Slic3r::GUI::AMSinfo::current_action

Referenced by operator==().

◆ current_can_id

std::string Slic3r::GUI::AMSinfo::current_can_id

◆ current_step

◆ current_temperature

float Slic3r::GUI::AMSinfo::current_temperature = INVALID_AMS_TEMPERATURE

Referenced by operator==(), and parse_ams_info().

◆ ext_type

◆ humidity_raw

int Slic3r::GUI::AMSinfo::humidity_raw = -1

◆ left_dray_time

int Slic3r::GUI::AMSinfo::left_dray_time = 0

Referenced by operator==(), and parse_ams_info().

◆ nozzle_id

◆ switch_pos

std::optional<DevFilaSwitch::SwitchPos> Slic3r::GUI::AMSinfo::switch_pos

The documentation for this struct was generated from the following files:
  • /home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/Widgets/AMSItem.hpp
  • /home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/Widgets/AMSItem.cpp