Do reprojection also after netfabb repair
This commit is contained in:
parent
f7a43f9757
commit
f91c27b2ff
@ -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
|
||||||
|
@ -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();
|
||||||
|
Loading…
Reference in New Issue
Block a user