Clean up cut surface
This commit is contained in:
parent
e0b77bb4c2
commit
4349e82d27
File diff suppressed because it is too large
Load Diff
@ -17,41 +17,15 @@ namespace Slic3r{
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
struct SurfaceCut : public indexed_triangle_set
|
struct SurfaceCut : public indexed_triangle_set
|
||||||
{
|
{
|
||||||
// connected cutted surface --> inheritance is used
|
|
||||||
//indexed_triangle_set mesh;
|
|
||||||
|
|
||||||
// vertex indices(index to mesh vertices)
|
// vertex indices(index to mesh vertices)
|
||||||
using Index = unsigned int;
|
using Index = unsigned int;
|
||||||
using CutContour = std::vector<std::vector<Index>>;
|
using Contour = std::vector<Index>;
|
||||||
|
using Contours = std::vector<Contour>;
|
||||||
// list of circulated open surface
|
// list of circulated open surface
|
||||||
CutContour contours;
|
Contours contours;
|
||||||
|
|
||||||
// Conversion map from vertex index to contour point
|
|
||||||
// Could be used for filtration of surface cuts
|
|
||||||
// Still I don't have an idea how to filtrate it.
|
|
||||||
// What is wanted result on wave?
|
|
||||||
// std::map<Index, ExPolygonsPoint> vertex2contour;
|
|
||||||
};
|
};
|
||||||
using SurfaceCuts = std::vector<SurfaceCut>;
|
using SurfaceCuts = std::vector<SurfaceCut>;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Merge two surface cuts together
|
|
||||||
/// Added surface cut will be consumed
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sc">Surface cut to extend</param>
|
|
||||||
/// <param name="sc_add">Surface cut to consume</param>
|
|
||||||
void append(SurfaceCut &sc, SurfaceCut &&sc_add);
|
|
||||||
|
|
||||||
// call private function with same name to test it
|
|
||||||
bool merge_intersection(SurfaceCut &sc1, const SurfaceCut &sc2);
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Merge surface cuts int one
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="cuts">input</param>
|
|
||||||
SurfaceCut merge(SurfaceCuts&& cuts);
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Cut surface shape from models.
|
/// Cut surface shape from models.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -162,20 +162,4 @@ TEST_CASE("CutSurface in 3mf", "[Emboss]")
|
|||||||
its_write_obj(cut, "C:/data/temp/cutSurface/result_cut.obj");
|
its_write_obj(cut, "C:/data/temp/cutSurface/result_cut.obj");
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "libslic3r/Format/OBJ.hpp"
|
|
||||||
TEST_CASE("Merge Cuts", "[Emboss]") {
|
|
||||||
std::string dir = "C:/data/temp/";
|
|
||||||
TriangleMesh tm1, tm2;
|
|
||||||
load_obj((dir + "aoi3.obj").c_str(), &tm1);
|
|
||||||
load_obj((dir + "aoi6.obj").c_str(), &tm2);
|
|
||||||
auto create_sc = [](TriangleMesh &tm) -> SurfaceCut {
|
|
||||||
SurfaceCut sc;
|
|
||||||
sc.vertices = std::move(tm.its.vertices);
|
|
||||||
sc.indices = std::move(tm.its.indices);
|
|
||||||
// sc.contours = ???
|
|
||||||
return sc;
|
|
||||||
};
|
|
||||||
SurfaceCut sc1 = create_sc(tm1), sc2 = create_sc(tm2);
|
|
||||||
assert(merge_intersection(sc1, sc2));
|
|
||||||
}
|
|
||||||
#endif // DEBUG_3MF
|
#endif // DEBUG_3MF
|
||||||
|
Loading…
Reference in New Issue
Block a user