Fix reload step modifiers/parts (#8083)
* FIX: reload step file not work JIRA:STUDIO-7282 GITHUB:#4247 fix commit ed34eaa Change-Id: Ib73654052d8f0b6b917f86a910b4f91a0198f2d4 (cherry picked from commit 387ff008c85588f8ab378ffa283f428b2ff2ec8c) (cherry picked from commit 539dea08854673045db779332fd1c2a0d994beda) * FIX:reload stl from disk,transformation is error jira: STUDIO-8391 Change-Id: Ic006973fe0f2b0c0208c391d064ab373fd15a772 (cherry picked from commit b5d18d4ae7a5b1c40e728ac93a96d36dabe83d42) --------- Co-authored-by: Mack <yongfang.bian@bambulab.com> Co-authored-by: zhou.xu <zhou.xu@bambulab.com>
This commit is contained in:
parent
cef15842bb
commit
6cdede8e10
1 changed files with 20 additions and 7 deletions
|
@ -5974,6 +5974,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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5982,22 +5987,30 @@ 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_no_offset() *
|
||||
transform * new_volume->source.transform.get_matrix_no_offset().inverse());
|
||||
new_volume->source.mesh_offset = old_volume->source.mesh_offset;
|
||||
new_volume->set_transformation(old_volume->get_transformation());
|
||||
|
||||
new_volume->source.object_idx = old_volume->source.object_idx;
|
||||
new_volume->source.volume_idx = old_volume->source.volume_idx;
|
||||
|
|
Loading…
Reference in a new issue