MeshLib Documentation
Loading...
Searching...
No Matches
MR::MeshComponents Namespace Reference

Classes

struct  LargeByAreaComponentsSettings
 

Enumerations

enum  FaceIncidence { PerEdge , PerVertex }
 Face incidence type. More...
 

Functions

MRMESH_API FaceBitSet getComponent (const MeshPart &meshPart, FaceId id, FaceIncidence incidence=FaceIncidence::PerEdge, const UndirectedEdgePredicate &isCompBd={})
 
MRMESH_API VertBitSet getComponentVerts (const Mesh &mesh, VertId id, const VertBitSet *region=nullptr)
 
MRMESH_API VertBitSet getLargestComponentVerts (const Mesh &mesh, const VertBitSet *region=nullptr)
 returns the largest by number of elements component
 
MRMESH_API VertBitSet getLargeComponentVerts (const Mesh &mesh, int minVerts, const VertBitSet *region=nullptr)
 returns the union of vertex connected components, each having at least
 
MRMESH_API FaceBitSet getLargestComponent (const MeshPart &meshPart, FaceIncidence incidence=FaceIncidence::PerEdge, const UndirectedEdgePredicate &isCompBd={}, float minArea=0, int *numSmallerComponents=nullptr)
 returns the largest by surface area component or empty set if its area is smaller than
 
MRMESH_API FaceBitSet getComponents (const MeshPart &meshPart, const FaceBitSet &seeds, FaceIncidence incidence=FaceIncidence::PerEdge, const UndirectedEdgePredicate &isCompBd={})
 returns union of connected components, each of which contains at least one seed face
 
MRMESH_API FaceBitSet getLargeByAreaComponents (const MeshPart &meshPart, float minArea, const UndirectedEdgePredicate &isCompBd)
 returns the union of connected components, each having at least given area
 
MRMESH_API FaceBitSet getLargeByAreaComponents (const MeshPart &meshPart, UnionFind< FaceId > &unionFind, float minArea, UndirectedEdgeBitSet *outBdEdgesBetweenLargeComps=nullptr)
 given prepared union-find structure returns the union of connected components, each having at least given area
 
MRMESH_API std::vector< FaceBitSet > getNLargeByAreaComponents (const MeshPart &meshPart, const LargeByAreaComponentsSettings &settings)
 returns requested number of largest by area connected components in descending by area order
 
MRMESH_API FaceBitSet getLargeByAreaSmoothComponents (const MeshPart &meshPart, float minArea, float angleFromPlanar, UndirectedEdgeBitSet *outBdEdgesBetweenLargeComps=nullptr)
 
MRMESH_API VertBitSet getComponentsVerts (const Mesh &mesh, const VertBitSet &seeds, const VertBitSet *region=nullptr)
 returns union of connected components, each of which contains at least one seed vert
 
MRMESH_API size_t getNumComponents (const MeshPart &meshPart, FaceIncidence incidence=FaceIncidence::PerEdge, const UndirectedEdgePredicate &isCompBd={})
 returns the number of connected components in mesh part
 
MRMESH_API std::vector< FaceBitSet > getAllComponents (const MeshPart &meshPart, FaceIncidence incidence=FaceIncidence::PerEdge, const UndirectedEdgePredicate &isCompBd={})
 
MRMESH_API std::pair< std::vector< FaceBitSet >, int > getAllComponents (const MeshPart &meshPart, int maxComponentCount, FaceIncidence incidence=FaceIncidence::PerEdge, const UndirectedEdgePredicate &isCompBd={})
 
MRMESH_API std::vector< FaceBitSet > getAllComponents (Face2RegionMap &componentsMap, int componentsCount, const FaceBitSet &region, int maxComponentCount)
 
MRMESH_API std::pair< Face2RegionMap, int > getAllComponentsMap (const MeshPart &meshPart, FaceIncidence incidence=FaceIncidence::PerEdge, const UndirectedEdgePredicate &isCompBd={})
 
MRMESH_API Vector< double, RegionId > getRegionAreas (const MeshPart &meshPart, const Face2RegionMap &regionMap, int numRegions)
 computes the area of each region given via the map
 
MRMESH_API std::pair< FaceBitSet, int > getLargeByAreaRegions (const MeshPart &meshPart, const Face2RegionMap &regionMap, int numRegions, float minArea)
 
MRMESH_API std::vector< VertBitSet > getAllComponentsVerts (const Mesh &mesh, const VertBitSet *region=nullptr)
 gets all connected components of mesh part
 
MRMESH_API std::vector< VertBitSet > getAllComponentsVertsSeparatedByPath (const Mesh &mesh, const SurfacePath &path)
 gets all connected components, separating vertices by given path (either closed or from boundary to boundary)
 
MRMESH_API std::vector< VertBitSet > getAllComponentsVertsSeparatedByPaths (const Mesh &mesh, const std::vector< SurfacePath > &paths)
 gets all connected components, separating vertices by given paths (either closed or from boundary to boundary)
 
MRMESH_API std::vector< EdgeBitSet > getAllComponentsEdges (const Mesh &mesh, const EdgeBitSet &edges)
 subdivides given edges on connected components
 
MRMESH_API std::vector< UndirectedEdgeBitSet > getAllComponentsUndirectedEdges (const Mesh &mesh, const UndirectedEdgeBitSet &edges)
 subdivides given edges on connected components
 
MRMESH_API std::vector< FaceBitSet > getAllFlatComponents (const MeshPart &meshPart, float zTolerance)
 gets all connected components where difference between the highest and the lowest point is less than
 
MRMESH_API bool hasFullySelectedComponent (const Mesh &mesh, const VertBitSet &selection)
 returns true if all vertices of a mesh connected component are present in selection
 
MRMESH_API void excludeFullySelectedComponents (const Mesh &mesh, VertBitSet &selection)
 if all vertices of a mesh connected component are present in selection exludes these vertices
 
MRMESH_API UnionFind< FaceId > getUnionFindStructureFaces (const MeshPart &meshPart, FaceIncidence incidence=FaceIncidence::PerEdge, const UndirectedEdgePredicate &isCompBd={})
 gets union-find structure for faces with different options of face-connectivity
 
MRMESH_API UnionFind< FaceId > getUnionFindStructureFacesPerEdge (const MeshPart &meshPart, const UndirectedEdgePredicate &isCompBd={})
 
MRMESH_API UnionFind< VertId > getUnionFindStructureVerts (const Mesh &mesh, const VertBitSet *region=nullptr)
 gets union-find structure for vertices
 
MRMESH_API UnionFind< VertId > getUnionFindStructureVerts (const Mesh &mesh, const EdgeBitSet &edges)
 gets union-find structure for vertices, considering connections by given edges only
 
MRMESH_API UnionFind< VertId > getUnionFindStructureVerts (const Mesh &mesh, const UndirectedEdgeBitSet &edges)
 gets union-find structure for vertices, considering connections by given undirected edges only
 
MRMESH_API UnionFind< VertId > getUnionFindStructureVertsEx (const Mesh &mesh, const UndirectedEdgeBitSet &ignoreEdges)
 gets union-find structure for vertices, considering connections by all edges excluding given ones
 
MRMESH_API UnionFind< VertId > getUnionFindStructureVertsSeparatedByPath (const Mesh &mesh, const SurfacePath &path, VertBitSet *outPathVerts=nullptr)
 gets union-find structure for vertices, separating vertices by given path (either closed or from boundary to boundary)
 
MRMESH_API UnionFind< VertId > getUnionFindStructureVertsSeparatedByPaths (const Mesh &mesh, const std::vector< SurfacePath > &paths, VertBitSet *outPathVerts=nullptr)
 
MRMESH_API UnionFind< UndirectedEdgeId > getUnionFindStructureUndirectedEdges (const Mesh &mesh, bool allPointToRoots=false)
 
MRMESH_API UndirectedEdgeBitSet getComponentsUndirectedEdges (const Mesh &mesh, const UndirectedEdgeBitSet &seeds)
 returns union of connected components, each of which contains at least one seed edge