FIX: reload step file not work
JIRA:STUDIO-7282 GITHUB:#4247 fix commit ed34eaa Change-Id: Ib73654052d8f0b6b917f86a910b4f91a0198f2d4 (cherry picked from commit 387ff008c85588f8ab378ffa283f428b2ff2ec8c)
This commit is contained in:
parent
bab2790759
commit
539dea0885
|
@ -5799,6 +5799,11 @@ void Plater::priv::reload_from_disk()
|
|||
}
|
||||
}
|
||||
if (found) break;
|
||||
// BBS: step model,object loaded as a volume. GUI_ObfectList.cpp load_modifier()
|
||||
if (obj->name == old_volume->name) {
|
||||
new_object_idx = (int) o;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5807,22 +5812,34 @@ void Plater::priv::reload_from_disk()
|
|||
continue;
|
||||
}
|
||||
ModelObject *new_model_object = new_model.objects[new_object_idx];
|
||||
if (new_volume_idx < 0 || int(new_model_object->volumes.size()) <= new_volume_idx) {
|
||||
if (int(new_model_object->volumes.size()) <= new_volume_idx) {
|
||||
fail_list.push_back(from_u8(has_source ? old_volume->source.input_file : old_volume->name));
|
||||
continue;
|
||||
}
|
||||
|
||||
old_model_object->add_volume(*new_model_object->volumes[new_volume_idx]);
|
||||
ModelVolume *new_volume = old_model_object->volumes.back();
|
||||
ModelVolume *new_volume = nullptr;
|
||||
// BBS: step model
|
||||
if (new_volume_idx < 0 && new_object_idx >= 0) {
|
||||
TriangleMesh mesh = new_model_object->mesh();
|
||||
new_volume = old_model_object->add_volume(std::move(mesh));
|
||||
new_volume->name = new_model_object->name;
|
||||
new_volume->source.input_file = new_model_object->input_file;
|
||||
}else {
|
||||
new_volume = old_model_object->add_volume(*new_model_object->volumes[new_volume_idx]);
|
||||
// new_volume = old_model_object->volumes.back();
|
||||
}
|
||||
|
||||
new_volume->set_new_unique_id();
|
||||
new_volume->config.apply(old_volume->config);
|
||||
new_volume->set_type(old_volume->type());
|
||||
new_volume->set_material_id(old_volume->material_id());
|
||||
|
||||
Transform3d transform = Transform3d::Identity();
|
||||
transform.translate(new_volume->source.mesh_offset - old_volume->source.mesh_offset);
|
||||
new_volume->set_transformation(old_volume->get_transformation().get_matrix() * old_volume->source.transform.get_matrix(true) *
|
||||
transform * new_volume->source.transform.get_matrix(true).inverse());
|
||||
new_volume->source.mesh_offset = old_volume->source.mesh_offset;
|
||||
new_volume->set_offset(old_volume->get_offset());
|
||||
// Transform3d transform = Transform3d::Identity();
|
||||
// transform.translate(new_volume->source.mesh_offset - old_volume->source.mesh_offset);
|
||||
// new_volume->set_transformation(old_volume->get_transformation().get_matrix() * old_volume->source.transform.get_matrix(true) *
|
||||
// transform * new_volume->source.transform.get_matrix(true).inverse());
|
||||
|
||||
new_volume->source.object_idx = old_volume->source.object_idx;
|
||||
new_volume->source.volume_idx = old_volume->source.volume_idx;
|
||||
|
|
Loading…
Reference in New Issue