mirror of
https://github.com/FULU-Foundation/OrcaSlicer-bambulab.git
synced 2026-05-16 20:32:43 -07:00
Ported intersect_expolygons() and subtract_expolygons() to XS
This commit is contained in:
@@ -1,4 +1,7 @@
|
||||
#include "ExtrusionEntity.hpp"
|
||||
#include "ExtrusionEntityCollection.hpp"
|
||||
#include "ExPolygonCollection.hpp"
|
||||
#include "ClipperUtils.hpp"
|
||||
|
||||
namespace Slic3r {
|
||||
|
||||
@@ -26,6 +29,36 @@ ExtrusionPath::last_point() const
|
||||
return new Point(this->polyline.points.back());
|
||||
}
|
||||
|
||||
ExtrusionEntityCollection*
|
||||
ExtrusionPath::intersect_expolygons(ExPolygonCollection* collection) const
|
||||
{
|
||||
// perform clipping
|
||||
Polylines clipped;
|
||||
intersection(this->polyline, *collection, clipped);
|
||||
return this->_inflate_collection(clipped);
|
||||
}
|
||||
|
||||
ExtrusionEntityCollection*
|
||||
ExtrusionPath::subtract_expolygons(ExPolygonCollection* collection) const
|
||||
{
|
||||
// perform clipping
|
||||
Polylines clipped;
|
||||
diff(this->polyline, *collection, clipped);
|
||||
return this->_inflate_collection(clipped);
|
||||
}
|
||||
|
||||
ExtrusionEntityCollection*
|
||||
ExtrusionPath::_inflate_collection(const Polylines &polylines) const
|
||||
{
|
||||
ExtrusionEntityCollection* retval = new ExtrusionEntityCollection();
|
||||
for (Polylines::const_iterator it = polylines.begin(); it != polylines.end(); ++it) {
|
||||
ExtrusionPath* path = this->clone();
|
||||
path->polyline = *it;
|
||||
retval->entities.push_back(path);
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
ExtrusionLoop*
|
||||
ExtrusionLoop::clone() const
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user