diff options
author | Alessandro Ranellucci <aar@cpan.org> | 2014-12-24 12:20:55 +0300 |
---|---|---|
committer | Alessandro Ranellucci <aar@cpan.org> | 2014-12-24 12:20:55 +0300 |
commit | 4848cb7606a3f1f0741bcff9cae0cc19764c59f0 (patch) | |
tree | cd4f73bd786f10391fd561ec10f32987606eb413 /xs/src/libslic3r/SurfaceCollection.cpp | |
parent | ea40c4d1b0d7d67464f7cebdd98a669b4b8ffb4b (diff) |
Ported PrintObject::bridge_over_infill() to XS
Diffstat (limited to 'xs/src/libslic3r/SurfaceCollection.cpp')
-rw-r--r-- | xs/src/libslic3r/SurfaceCollection.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/xs/src/libslic3r/SurfaceCollection.cpp b/xs/src/libslic3r/SurfaceCollection.cpp index 027138818..ccf1eaa4e 100644 --- a/xs/src/libslic3r/SurfaceCollection.cpp +++ b/xs/src/libslic3r/SurfaceCollection.cpp @@ -80,6 +80,27 @@ SurfaceCollection::any_internal_contains(const T &item) const template bool SurfaceCollection::any_internal_contains<Line>(const Line &item) const; template bool SurfaceCollection::any_internal_contains<Polyline>(const Polyline &item) const; +SurfacesPtr +SurfaceCollection::filter_by_type(SurfaceType type) +{ + SurfacesPtr ss; + for (Surfaces::iterator surface = this->surfaces.begin(); surface != this->surfaces.end(); ++surface) { + if (surface->surface_type == type) ss.push_back(&*surface); + } + return ss; +} + +void +SurfaceCollection::filter_by_type(SurfaceType type, Polygons* polygons) +{ + for (Surfaces::iterator surface = this->surfaces.begin(); surface != this->surfaces.end(); ++surface) { + if (surface->surface_type == type) { + Polygons pp = surface->expolygon; + polygons->insert(polygons->end(), pp.begin(), pp.end()); + } + } +} + #ifdef SLIC3RXS REGISTER_CLASS(SurfaceCollection, "Surface::Collection"); #endif |