Fixed object adding to list with same object's name

+ Added name for main object for complex objects
+ Fixed incorrect Instances and Settings deleting from ObjectList
This commit is contained in:
YuSanka 2018-10-19 11:02:50 +02:00
parent d7f013ba19
commit 5557ee3cd2
4 changed files with 8 additions and 4 deletions

View file

@ -415,6 +415,7 @@ void Model::convert_multipart_object(unsigned int max_extruders)
ModelObject* object = new ModelObject(this);
object->input_file = this->objects.front()->input_file;
object->name = this->objects.front()->name;
reset_auto_extruder_id();

View file

@ -868,7 +868,7 @@ void ObjectList::del_settings_from_config()
void ObjectList::del_instances_from_object(const int obj_idx)
{
auto instances = (*m_objects)[obj_idx]->instances;
auto& instances = (*m_objects)[obj_idx]->instances;
if (instances.size() <= 1)
return;

View file

@ -1109,6 +1109,9 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path> &input_
// $self->async_apply_config;
} else {
model = Slic3r::Model::read_from_file(path.string(), nullptr, false);
for (auto obj : model.objects)
if (obj->name.empty())
obj->name = fs::path(obj->input_file).filename().string();
}
}
catch (const std::runtime_error &e) {
@ -1156,7 +1159,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path> &input_
new_model->convert_multipart_object(nozzle_dmrs->values.size());
}
auto loaded_idxs = load_model_objects(model.objects);
auto loaded_idxs = load_model_objects(new_model->objects);
obj_idxs.insert(obj_idxs.end(), loaded_idxs.begin(), loaded_idxs.end());
}
@ -1176,7 +1179,7 @@ std::vector<size_t> Plater::priv::load_model_objects(const ModelObjectPtrs &mode
bool scaled_down = false;
std::vector<size_t> obj_idxs;
#if ENABLE_EXTENDED_SELECTION
unsigned int obj_count = 0;
unsigned int obj_count = model.objects.size();
#endif // ENABLE_EXTENDED_SELECTION
for (ModelObject *model_object : model_objects) {

View file

@ -789,7 +789,7 @@ void PrusaObjectDataViewModel::GetItemInfo(const wxDataViewItem& item, ItemType&
type = itUndef;
PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
if (!node || node->GetIdx() < 0 && node->GetType() != itObject)
if (!node || node->GetIdx() < 0 && !(node->GetType() & (itObject|itSettings|itInstanceRoot)))
return;
idx = node->GetIdx();