FIX: modify the filament id for painting color

jira: none
Change-Id: I25dcab95f1499783afd892c790f1e18232ea4f72
This commit is contained in:
zhimin.zeng 2024-10-29 14:05:53 +08:00 committed by lane.wei
parent 3f791574cd
commit f7a0e66e0d
4 changed files with 11 additions and 7 deletions

View File

@ -3107,7 +3107,7 @@ void ModelVolume::update_extruder_count_when_delete_filament(size_t extruder_cou
std::vector<int> used_extruders = get_extruders(); std::vector<int> used_extruders = get_extruders();
for (int extruder_id : used_extruders) { for (int extruder_id : used_extruders) {
if (extruder_id == filament_id) { if (extruder_id == filament_id) {
mmu_segmentation_facets.set_enforcer_block_type_limit(*this, (EnforcerBlockerType)(extruder_count + 1), (EnforcerBlockerType)(filament_id + 1), (EnforcerBlockerType)(replace_filament_id + 1)); mmu_segmentation_facets.set_enforcer_block_type_limit(*this, (EnforcerBlockerType)(extruder_count), (EnforcerBlockerType)(filament_id), (EnforcerBlockerType)(replace_filament_id));
break; break;
} }
} }

View File

@ -1768,13 +1768,17 @@ void TriangleSelector::deserialize(const std::pair<std::vector<std::pair<int, in
} }
// BBS // BBS
if (state > max_ebt || state == to_delete_filament) if (state == to_delete_filament)
state = replace_filament; state = replace_filament;
else if (to_delete_filament != EnforcerBlockerType::NONE && state != EnforcerBlockerType::NONE) {
if (to_delete_filament != EnforcerBlockerType::NONE && state != EnforcerBlockerType::NONE) {
state = state > to_delete_filament ? EnforcerBlockerType((int)state - 1) : state; state = state > to_delete_filament ? EnforcerBlockerType((int)state - 1) : state;
} }
if (state > max_ebt) {
assert(false);
state = EnforcerBlockerType::NONE;
}
// Only valid if is_split. // Only valid if is_split.
int special_side = code >> 2; int special_side = code >> 2;

View File

@ -1974,7 +1974,7 @@ void Sidebar::delete_filament(size_t filament_id, int replace_filament_id) {
wxGetApp().preset_bundle->update_num_filaments(filament_id); wxGetApp().preset_bundle->update_num_filaments(filament_id);
wxGetApp().plater()->get_partplate_list().on_filament_deleted(filament_count, filament_id); wxGetApp().plater()->get_partplate_list().on_filament_deleted(filament_count, filament_id);
wxGetApp().plater()->on_filaments_delete(filament_count, filament_id, replace_filament_id > filament_id ? (replace_filament_id - 1) : replace_filament_id); wxGetApp().plater()->on_filaments_delete(filament_count, filament_id, replace_filament_id > (int)filament_id ? (replace_filament_id - 1) : replace_filament_id);
wxGetApp().get_tab(Preset::TYPE_PRINT)->update(); wxGetApp().get_tab(Preset::TYPE_PRINT)->update();
wxGetApp().preset_bundle->export_selections(*wxGetApp().app_config); wxGetApp().preset_bundle->export_selections(*wxGetApp().app_config);
} }
@ -13422,7 +13422,7 @@ void Plater::on_filaments_delete(size_t num_filaments, size_t filament_id, int r
// update mmu info // update mmu info
for (ModelObject *mo : wxGetApp().model().objects) { for (ModelObject *mo : wxGetApp().model().objects) {
for (ModelVolume *mv : mo->volumes) { for (ModelVolume *mv : mo->volumes) {
mv->update_extruder_count_when_delete_filament(num_filaments, filament_id, replace_filament_id); mv->update_extruder_count_when_delete_filament(num_filaments, filament_id + 1, replace_filament_id + 1); // this function is 1 base
} }
} }

View File

@ -141,7 +141,7 @@ public:
void on_filaments_delete(size_t filament_id); void on_filaments_delete(size_t filament_id);
void add_filament(); void add_filament();
void delete_filament(size_t filament_id = size_t(-1), int replace_filament_id = -1); // 0 base void delete_filament(size_t filament_id = size_t(-1), int replace_filament_id = -1); // 0 base, -1 means default
void change_filament(size_t from_id, size_t to_id); // 0 base void change_filament(size_t from_id, size_t to_id); // 0 base
void edit_filament(); void edit_filament();
void add_custom_filament(wxColour new_col); void add_custom_filament(wxColour new_col);