mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-12 01:07:57 -06:00
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;
|
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;
|
continue;
|
||||||
}
|
}
|
||||||
ModelObject *new_model_object = new_model.objects[new_object_idx];
|
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));
|
fail_list.push_back(from_u8(has_source ? old_volume->source.input_file : old_volume->name));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
old_model_object->add_volume(*new_model_object->volumes[new_volume_idx]);
|
ModelVolume *new_volume = nullptr;
|
||||||
ModelVolume *new_volume = old_model_object->volumes.back();
|
// 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->set_new_unique_id();
|
||||||
new_volume->config.apply(old_volume->config);
|
new_volume->config.apply(old_volume->config);
|
||||||
new_volume->set_type(old_volume->type());
|
new_volume->set_type(old_volume->type());
|
||||||
new_volume->set_material_id(old_volume->material_id());
|
new_volume->set_material_id(old_volume->material_id());
|
||||||
|
|
||||||
Transform3d transform = Transform3d::Identity();
|
new_volume->source.mesh_offset = old_volume->source.mesh_offset;
|
||||||
transform.translate(new_volume->source.mesh_offset - old_volume->source.mesh_offset);
|
new_volume->set_transformation(old_volume->get_transformation());
|
||||||
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.object_idx = old_volume->source.object_idx;
|
new_volume->source.object_idx = old_volume->source.object_idx;
|
||||||
new_volume->source.volume_idx = old_volume->source.volume_idx;
|
new_volume->source.volume_idx = old_volume->source.volume_idx;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue