mirror of
https://github.com/QIDITECH/QIDISlicer.git
synced 2026-02-01 08:28:42 +03:00
update to latest version
This commit is contained in:
@@ -1685,6 +1685,8 @@ void ObjectList::load_modifier(const wxArrayString& input_files, ModelObject& mo
|
||||
const Vec3d offset = Vec3d(instance_bb.max.x(), instance_bb.min.y(), instance_bb.min.z()) + 0.5 * mesh_bb.size() - instance_offset;
|
||||
new_volume->set_offset(inv_inst_transform * offset);
|
||||
}
|
||||
else
|
||||
new_volume->set_offset(new_volume->source.mesh_offset - model_object.volumes.front()->source.mesh_offset);
|
||||
|
||||
added_volumes.push_back(new_volume);
|
||||
}
|
||||
@@ -2306,38 +2308,18 @@ void ObjectList::merge(bool to_multipart_object)
|
||||
for (int obj_idx : obj_idxs) {
|
||||
ModelObject* object = (*m_objects)[obj_idx];
|
||||
|
||||
const Geometry::Transformation& transformation = object->instances[0]->get_transformation();
|
||||
const Vec3d scale = transformation.get_scaling_factor();
|
||||
const Vec3d mirror = transformation.get_mirror();
|
||||
const Vec3d rotation = transformation.get_rotation();
|
||||
|
||||
if (object->id() == (*m_objects)[obj_idxs.front()]->id()) {
|
||||
new_object->add_instance();
|
||||
new_object->instances[0]->printable = false;
|
||||
}
|
||||
new_object->instances[0]->printable |= object->instances[0]->printable;
|
||||
|
||||
const Transform3d& volume_offset_correction = transformation.get_matrix();
|
||||
const Transform3d new_inst_trafo = new_object->instances[0]->get_matrix().inverse() * object->instances[0]->get_matrix();
|
||||
|
||||
// merge volumes
|
||||
for (const ModelVolume* volume : object->volumes) {
|
||||
ModelVolume* new_volume = new_object->add_volume(*volume);
|
||||
|
||||
//set rotation
|
||||
const Vec3d vol_rot = new_volume->get_rotation() + rotation;
|
||||
new_volume->set_rotation(vol_rot);
|
||||
|
||||
// set scale
|
||||
const Vec3d vol_sc_fact = new_volume->get_scaling_factor().cwiseProduct(scale);
|
||||
new_volume->set_scaling_factor(vol_sc_fact);
|
||||
|
||||
// set mirror
|
||||
const Vec3d vol_mirror = new_volume->get_mirror().cwiseProduct(mirror);
|
||||
new_volume->set_mirror(vol_mirror);
|
||||
|
||||
// set offset
|
||||
const Vec3d vol_offset = volume_offset_correction* new_volume->get_offset();
|
||||
new_volume->set_offset(vol_offset);
|
||||
new_volume->set_transformation(new_inst_trafo * new_volume->get_matrix());
|
||||
}
|
||||
new_object->sort_volumes(wxGetApp().app_config->get_bool("order_volumes"));
|
||||
|
||||
@@ -4400,7 +4382,8 @@ void ObjectList::update_and_show_object_settings_item()
|
||||
const wxDataViewItem item = GetSelection();
|
||||
if (!item) return;
|
||||
|
||||
const wxDataViewItem& obj_item = m_objects_model->IsSettingsItem(item) ? m_objects_model->GetParent(item) : item;
|
||||
// To get object item use GetTopParent(item). This function guarantees return of item with itObject type
|
||||
const wxDataViewItem obj_item = m_objects_model->GetTopParent(item);
|
||||
select_item([this, obj_item](){ return add_settings_item(obj_item, &get_item_config(obj_item).get()); });
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user