FIX: fix bug when delete filament
update filament of HeightRange jira: none Change-Id: I62cb21a65ecdfc36e8bc7d0915a85ecba578e49f
This commit is contained in:
parent
a6ad5c8be8
commit
8232a716e6
|
@ -3090,7 +3090,7 @@ void ModelVolume::update_extruder_count_when_delete_filament(size_t extruder_cou
|
|||
std::vector<int> used_extruders = get_extruders();
|
||||
for (int extruder_id : used_extruders) {
|
||||
if (extruder_id == filament_id) {
|
||||
mmu_segmentation_facets.set_enforcer_block_type_limit(*this, (EnforcerBlockerType)(extruder_count + 1), (EnforcerBlockerType) filament_id);
|
||||
mmu_segmentation_facets.set_enforcer_block_type_limit(*this, (EnforcerBlockerType)(extruder_count + 1), (EnforcerBlockerType)(filament_id + 1));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1558,7 +1558,7 @@ void TriangleSelector::get_facets_split_by_tjoints(const Vec3i &vertices, const
|
|||
this->get_facets_split_by_tjoints(
|
||||
{ vertices(0), midpoints(0), midpoints(2) },
|
||||
{ this->neighbor_child(neighbors(0), vertices(1), vertices(0), Partition::Second),
|
||||
-1,
|
||||
-1,
|
||||
this->neighbor_child(neighbors(2), vertices(0), vertices(2), Partition::First) },
|
||||
out_triangles);
|
||||
this->get_facets_split_by_tjoints(
|
||||
|
@ -1764,7 +1764,7 @@ void TriangleSelector::deserialize(const std::pair<std::vector<std::pair<int, in
|
|||
}
|
||||
|
||||
// BBS
|
||||
if (state > max_ebt)
|
||||
if (state > max_ebt || state == to_delete_filament)
|
||||
state = EnforcerBlockerType::NONE;
|
||||
|
||||
if (to_delete_filament != EnforcerBlockerType::NONE && state != EnforcerBlockerType::NONE) {
|
||||
|
|
|
@ -744,6 +744,39 @@ void ObjectList::update_filament_values_for_items_when_delete_filament(const siz
|
|||
object->volumes[id]->config.erase(key);
|
||||
}
|
||||
}
|
||||
|
||||
item = m_objects_model->GetItemById(i);
|
||||
ObjectDataViewModelNode *object_node = static_cast<ObjectDataViewModelNode *>(item.GetID());
|
||||
if (object_node->GetChildCount() == 0)
|
||||
continue;
|
||||
|
||||
// update height_range
|
||||
for (size_t i = 0; i < object_node->GetChildCount(); i++) {
|
||||
ObjectDataViewModelNode * layer_root_node = object_node->GetNthChild(i);
|
||||
if (layer_root_node->GetType() != ItemType::itLayerRoot)
|
||||
continue;
|
||||
for (size_t j = 0; j < layer_root_node->GetChildCount(); j++) {
|
||||
ObjectDataViewModelNode * layer_node = layer_root_node->GetNthChild(j);
|
||||
auto layer_item = wxDataViewItem((void *) layer_root_node->GetNthChild(j));
|
||||
if (!layer_item)
|
||||
continue;
|
||||
auto l_iter = object->layer_config_ranges.find(layer_node->GetLayerRange());
|
||||
if (l_iter != object->layer_config_ranges.end()) {
|
||||
auto& layer_range_item = *(l_iter);
|
||||
if (layer_range_item.second.has("extruder") && layer_range_item.second.option("extruder")->getInt() == filament_id + 1) {
|
||||
int new_extruder = 0;
|
||||
extruder = wxString::Format("%d", new_extruder);
|
||||
layer_range_item.second.set("extruder", new_extruder);
|
||||
} else {
|
||||
int layer_filament_id = layer_range_item.second.option("extruder")->getInt();
|
||||
int new_extruder = layer_filament_id > filament_id ? layer_filament_id - 1 : layer_filament_id;
|
||||
extruder = wxString::Format("%d", new_extruder);
|
||||
layer_range_item.second.set("extruder", new_extruder);
|
||||
}
|
||||
m_objects_model->SetExtruder(extruder, layer_item);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// BBS
|
||||
|
|
|
@ -1895,7 +1895,7 @@ void Sidebar::delete_filament(size_t filament_id) {
|
|||
if (filament_id > filament_count)
|
||||
return;
|
||||
|
||||
if (wxGetApp().preset_bundle->is_the_only_edited_filament(filament_id) || (filament_id == 1)) {
|
||||
if (wxGetApp().preset_bundle->is_the_only_edited_filament(filament_id) || (filament_id == 0)) {
|
||||
wxGetApp().get_tab(Preset::TYPE_FILAMENT)->select_preset(wxGetApp().preset_bundle->filament_presets[0], false, "", true);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue