diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 8e2d1f391c..d001acedb1 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -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(); diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 53066d7082..9bf1b03e54 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -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; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 40fffc85ba..41d9038a09 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1109,6 +1109,9 @@ std::vector Plater::priv::load_files(const std::vector &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 Plater::priv::load_files(const std::vector &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 Plater::priv::load_model_objects(const ModelObjectPtrs &mode bool scaled_down = false; std::vector 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) { diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 33e34137d2..27628c3db4 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -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();