Disable reload from disk for built-in objects
This commit is contained in:
parent
b6b52fee73
commit
bf7b554235
@ -1070,8 +1070,7 @@ void ModelObject::convert_units(ModelObjectPtrs& new_objects, ConversionType con
|
|||||||
new_object->input_file.clear();
|
new_object->input_file.clear();
|
||||||
|
|
||||||
int vol_idx = 0;
|
int vol_idx = 0;
|
||||||
for (ModelVolume* volume : volumes)
|
for (ModelVolume* volume : volumes) {
|
||||||
{
|
|
||||||
if (!volume->mesh().empty()) {
|
if (!volume->mesh().empty()) {
|
||||||
TriangleMesh mesh(volume->mesh());
|
TriangleMesh mesh(volume->mesh());
|
||||||
mesh.require_shared_vertices();
|
mesh.require_shared_vertices();
|
||||||
@ -1089,6 +1088,7 @@ void ModelObject::convert_units(ModelObjectPtrs& new_objects, ConversionType con
|
|||||||
vol->source.volume_idx = vol_idx;
|
vol->source.volume_idx = vol_idx;
|
||||||
vol->source.is_converted_from_inches = volume->source.is_converted_from_inches;
|
vol->source.is_converted_from_inches = volume->source.is_converted_from_inches;
|
||||||
vol->source.is_converted_from_meters = volume->source.is_converted_from_meters;
|
vol->source.is_converted_from_meters = volume->source.is_converted_from_meters;
|
||||||
|
vol->source.is_from_builtin_objects = volume->source.is_from_builtin_objects;
|
||||||
|
|
||||||
vol->supported_facets.assign(volume->supported_facets);
|
vol->supported_facets.assign(volume->supported_facets);
|
||||||
vol->seam_facets.assign(volume->seam_facets);
|
vol->seam_facets.assign(volume->seam_facets);
|
||||||
|
@ -596,13 +596,14 @@ public:
|
|||||||
int volume_idx{ -1 };
|
int volume_idx{ -1 };
|
||||||
Vec3d mesh_offset{ Vec3d::Zero() };
|
Vec3d mesh_offset{ Vec3d::Zero() };
|
||||||
Geometry::Transformation transform;
|
Geometry::Transformation transform;
|
||||||
bool is_converted_from_inches = false;
|
bool is_converted_from_inches{ false };
|
||||||
bool is_converted_from_meters = false;
|
bool is_converted_from_meters{ false };
|
||||||
|
bool is_from_builtin_objects{ false };
|
||||||
|
|
||||||
template<class Archive> void serialize(Archive& ar) {
|
template<class Archive> void serialize(Archive& ar) {
|
||||||
//FIXME Vojtech: Serialize / deserialize only if the Source is set.
|
//FIXME Vojtech: Serialize / deserialize only if the Source is set.
|
||||||
// likely testing input_file or object_idx would be sufficient.
|
// likely testing input_file or object_idx would be sufficient.
|
||||||
ar(input_file, object_idx, volume_idx, mesh_offset, transform, is_converted_from_inches, is_converted_from_meters);
|
ar(input_file, object_idx, volume_idx, mesh_offset, transform, is_converted_from_inches, is_converted_from_meters, is_from_builtin_objects);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Source source;
|
Source source;
|
||||||
|
@ -1637,6 +1637,7 @@ void ObjectList::load_generic_subobject(const std::string& type_name, const Mode
|
|||||||
new_volume->name = into_u8(name);
|
new_volume->name = into_u8(name);
|
||||||
// set a default extruder value, since user can't add it manually
|
// set a default extruder value, since user can't add it manually
|
||||||
new_volume->config.set_key_value("extruder", new ConfigOptionInt(0));
|
new_volume->config.set_key_value("extruder", new ConfigOptionInt(0));
|
||||||
|
new_volume->source.is_from_builtin_objects = true;
|
||||||
|
|
||||||
select_item([this, obj_idx, new_volume]() {
|
select_item([this, obj_idx, new_volume]() {
|
||||||
wxDataViewItem sel_item;
|
wxDataViewItem sel_item;
|
||||||
|
@ -3350,7 +3350,7 @@ void Plater::priv::reload_from_disk()
|
|||||||
else
|
else
|
||||||
missing_input_paths.push_back(volume->source.input_file);
|
missing_input_paths.push_back(volume->source.input_file);
|
||||||
}
|
}
|
||||||
else if (!object->input_file.empty() && volume->is_model_part() && !volume->name.empty())
|
else if (!object->input_file.empty() && volume->is_model_part() && !volume->name.empty() && !volume->source.is_from_builtin_objects)
|
||||||
missing_input_paths.push_back(volume->name);
|
missing_input_paths.push_back(volume->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4323,14 +4323,12 @@ bool Plater::priv::can_reload_from_disk() const
|
|||||||
|
|
||||||
// collects selected ModelVolumes
|
// collects selected ModelVolumes
|
||||||
const std::set<unsigned int>& selected_volumes_idxs = selection.get_volume_idxs();
|
const std::set<unsigned int>& selected_volumes_idxs = selection.get_volume_idxs();
|
||||||
for (unsigned int idx : selected_volumes_idxs)
|
for (unsigned int idx : selected_volumes_idxs) {
|
||||||
{
|
|
||||||
const GLVolume* v = selection.get_volume(idx);
|
const GLVolume* v = selection.get_volume(idx);
|
||||||
int v_idx = v->volume_idx();
|
int v_idx = v->volume_idx();
|
||||||
if (v_idx >= 0)
|
if (v_idx >= 0) {
|
||||||
{
|
|
||||||
int o_idx = v->object_idx();
|
int o_idx = v->object_idx();
|
||||||
if ((0 <= o_idx) && (o_idx < (int)model.objects.size()))
|
if (0 <= o_idx && o_idx < (int)model.objects.size())
|
||||||
selected_volumes.push_back({ o_idx, v_idx });
|
selected_volumes.push_back({ o_idx, v_idx });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4339,13 +4337,12 @@ bool Plater::priv::can_reload_from_disk() const
|
|||||||
|
|
||||||
// collects paths of files to load
|
// collects paths of files to load
|
||||||
std::vector<fs::path> paths;
|
std::vector<fs::path> paths;
|
||||||
for (const SelectedVolume& v : selected_volumes)
|
for (const SelectedVolume& v : selected_volumes) {
|
||||||
{
|
|
||||||
const ModelObject* object = model.objects[v.object_idx];
|
const ModelObject* object = model.objects[v.object_idx];
|
||||||
const ModelVolume* volume = object->volumes[v.volume_idx];
|
const ModelVolume* volume = object->volumes[v.volume_idx];
|
||||||
if (!volume->source.input_file.empty())
|
if (!volume->source.input_file.empty())
|
||||||
paths.push_back(volume->source.input_file);
|
paths.push_back(volume->source.input_file);
|
||||||
else if (!object->input_file.empty() && !volume->name.empty())
|
else if (!object->input_file.empty() && !volume->name.empty() && !volume->source.is_from_builtin_objects)
|
||||||
paths.push_back(volume->name);
|
paths.push_back(volume->name);
|
||||||
}
|
}
|
||||||
std::sort(paths.begin(), paths.end());
|
std::sort(paths.begin(), paths.end());
|
||||||
|
Loading…
Reference in New Issue
Block a user