Do reprojection also after netfabb repair

This commit is contained in:
tamasmeszaros 2020-05-13 14:53:05 +02:00
parent f7a43f9757
commit f91c27b2ff
2 changed files with 19 additions and 10 deletions

View File

@ -5,6 +5,7 @@
#include "SupportPoint.hpp" #include "SupportPoint.hpp"
#include "Hollowing.hpp" #include "Hollowing.hpp"
#include "EigenMesh3D.hpp" #include "EigenMesh3D.hpp"
#include "libslic3r/Model.hpp"
#include <tbb/parallel_for.h> #include <tbb/parallel_for.h>
@ -24,5 +25,21 @@ void reproject_support_points(const EigenMesh3D &mesh, std::vector<PointType> &p
}); });
} }
inline void reproject_points_and_holes(ModelObject *object)
{
bool has_sppoints = !object->sla_support_points.empty();
bool has_holes = !object->sla_drain_holes.empty();
if (!object || (!has_holes && !has_sppoints)) return;
EigenMesh3D emesh{object->raw_mesh()};
if (has_sppoints)
reproject_support_points(emesh, object->sla_support_points);
if (has_holes)
reproject_support_points(emesh, object->sla_drain_holes);
}
}} }}
#endif // REPROJECTPOINTSONMESH_HPP #endif // REPROJECTPOINTSONMESH_HPP

View File

@ -3124,16 +3124,7 @@ void Plater::priv::reload_from_disk()
old_model_object->delete_volume(old_model_object->volumes.size() - 1); old_model_object->delete_volume(old_model_object->volumes.size() - 1);
old_model_object->ensure_on_bed(); old_model_object->ensure_on_bed();
std::unique_ptr<sla::EigenMesh3D> emesh; sla::reproject_points_and_holes(old_model_object);
if (!old_model_object->sla_support_points.empty()) {
emesh = std::make_unique<sla::EigenMesh3D>(old_model_object->raw_mesh());
sla::reproject_support_points(*emesh, old_model_object->sla_support_points);
}
if (!old_model_object->sla_drain_holes.empty()) {
if (!emesh) emesh = std::make_unique<sla::EigenMesh3D>(old_model_object->raw_mesh());
sla::reproject_support_points(*emesh, old_model_object->sla_drain_holes);
}
} }
} }
} }
@ -3189,6 +3180,7 @@ void Plater::priv::fix_through_netfabb(const int obj_idx, const int vol_idx/* =
Plater::TakeSnapshot snapshot(q, _L("Fix Throught NetFabb")); Plater::TakeSnapshot snapshot(q, _L("Fix Throught NetFabb"));
fix_model_by_win10_sdk_gui(*model.objects[obj_idx], vol_idx); fix_model_by_win10_sdk_gui(*model.objects[obj_idx], vol_idx);
sla::reproject_points_and_holes(model.objects[obj_idx]);
this->update(); this->update();
this->object_list_changed(); this->object_list_changed();
this->schedule_background_process(); this->schedule_background_process();