53#ifndef MESHSELECTION_HH
54#define MESHSELECTION_HH
64#include <OpenMesh/Core/Mesh/Handles.hh>
71namespace MeshSelection {
85template<
typename MeshT >
94template<
typename MeshT >
106template<
typename MeshT >
108void unselectVertices(
MeshT* _mesh,
const std::vector< int >& _vertices);
113template<
typename MeshT >
115void selectAllVertices(
MeshT* _mesh);
120template<
typename MeshT >
122void clearVertexSelection(
MeshT* _mesh);
127template<
typename MeshT >
129void invertVertexSelection(
MeshT* _mesh);
135template<
typename MeshT >
137void selectBoundaryVertices(
MeshT* _mesh);
142template<
typename MeshT >
144void shrinkVertexSelection(
MeshT* _mesh) ;
149template<
typename MeshT >
151void growVertexSelection(
MeshT* _mesh);
158template<
typename MeshT >
160std::vector< int > getVertexSelection(
MeshT* _mesh);
167template<
typename MeshT >
169std::vector< int > getVertexSelection(
MeshT* _mesh,
bool& _invert);
180template<
typename MeshT >
182void selectBoundaryVertices(
MeshT* _mesh,
const typename MeshT::VertexHandle& _vh);
189template<
typename MeshT >
191void convertVertexToEdgeSelection(
MeshT* _mesh,
const std::vector< int >& _vertices);
197template<
typename MeshT >
199void convertVertexToEdgeSelection(
MeshT* _mesh);
206template<
typename MeshT >
208void convertVertexToHalfedgeSelection(
MeshT* _mesh,
const std::vector< int >& _vertices);
214template<
typename MeshT >
216void convertVertexToHalfedgeSelection(
MeshT* _mesh);
223template<
typename MeshT >
225void convertVertexToFaceSelection(
MeshT* _mesh,
const std::vector< int >& _vertices);
231template<
typename MeshT >
233void convertVertexToFaceSelection(
MeshT* _mesh);
239template<
typename MeshT >
241void convertVertexSelectionToFeatureVertices(
MeshT* _mesh);
247template<
typename MeshT >
249void convertFeatureVerticesToVertexSelection(
MeshT* _mesh);
255template<
typename MeshT >
257void clearFeatureVertices(
MeshT* _mesh);
273template<
typename MeshT >
275void setArea(
MeshT* _mesh,
const std::vector< int >& _vertices ,
unsigned int _type,
bool _state);
283template<
typename MeshT >
285void setArea(
MeshT* _mesh ,
unsigned int _type,
bool _state);
289template<
typename MeshT >
291std::vector< int > getArea(
MeshT* _mesh,
unsigned int _type);
299template<
typename MeshT >
301std::vector< int > getArea(
MeshT* _mesh,
unsigned int _type ,
bool& _invert);
315template<
typename MeshT >
317void selectEdges(
MeshT* _mesh,
const std::vector< int >& _edges,
const double _dihedral_angle_threshold = 0.0);
326template<
typename MeshT >
334template<
typename MeshT >
336void unselectEdges(
MeshT* _mesh,
const std::vector< int >& _edges);
339template<
typename MeshT >
341void selectAllEdges(
MeshT* _mesh);
344template<
typename MeshT >
346void clearEdgeSelection(
MeshT* _mesh);
349template<
typename MeshT >
351void invertEdgeSelection(
MeshT* _mesh);
354template<
typename MeshT >
356void growEdgeSelection(
MeshT* _mesh);
359template<
typename MeshT >
360void selectBoundaryEdges(
MeshT* _mesh);
364template<
typename MeshT >
366std::vector< int > getEdgeSelection(
MeshT* _mesh);
372template<
typename MeshT >
374std::vector< int > getEdgeSelection(
MeshT* _mesh,
bool& _invert);
381template<
typename MeshT >
383void convertEdgeToVertexSelection(
MeshT* _mesh,
const std::vector< int >& _edges);
388template<
typename MeshT >
390void convertEdgeToVertexSelection(
MeshT* _mesh);
397template<
typename MeshT >
399void convertEdgeToFaceSelection(
MeshT* _mesh,
const std::vector< int >& _edges);
404template<
typename MeshT >
406void convertEdgeToFaceSelection(
MeshT* _mesh);
411template<
typename MeshT >
413void convertEdgeToHalfedgeSelection(
MeshT* _mesh);
418template<
typename MeshT >
420void convertEdgeSelectionToFeatureEdges(
MeshT* _mesh);
425template<
typename MeshT >
427void convertFeatureEdgesToEdgeSelection(
MeshT* _mesh);
432template<
typename MeshT >
434void clearFeatureEdges(
MeshT* _mesh);
448template<
typename MeshT >
450void selectHalfedges(
MeshT* _mesh,
const std::vector< int >& _halfedges);
457template<
typename MeshT >
465template<
typename MeshT >
467void unselectHalfedges(
MeshT* _mesh,
const std::vector< int >& _halfedges);
470template<
typename MeshT >
472void selectAllHalfedges(
MeshT* _mesh);
475template<
typename MeshT >
477void clearHalfedgeSelection(
MeshT* _mesh);
480template<
typename MeshT >
482void invertHalfedgeSelection(
MeshT* _mesh);
485template<
typename MeshT >
486void selectBoundaryHalfedges(
MeshT* _mesh);
490template<
typename MeshT >
492std::vector< int > getHalfedgeSelection(
MeshT* _mesh);
497template<
typename MeshT >
499void convertHalfedgeToVertexSelection(
MeshT* _mesh);
504template<
typename MeshT >
506void convertHalfedgeToEdgeSelection(
MeshT* _mesh);
511template<
typename MeshT >
513void convertHalfedgeToFaceSelection(
MeshT* _mesh);
524template<
typename MeshT >
526void selectFaces(
MeshT* _mesh,
const std::vector< int >& _faces );
533template<
typename MeshT >
541template<
typename MeshT >
543void unselectFaces(
MeshT* _mesh,
const std::vector< int >& _faces );
546template<
typename MeshT >
548void selectAllFaces(
MeshT* _mesh);
551template<
typename MeshT >
553void clearFaceSelection(
MeshT* _mesh);
556template<
typename MeshT >
558void invertFaceSelection(
MeshT* _mesh);
561template<
typename MeshT >
562void selectBoundaryFaces(
MeshT* _mesh);
568template<
typename MeshT >
570void shrinkFaceSelection(
MeshT* _mesh);
576template<
typename MeshT >
578void growFaceSelection(
MeshT* _mesh);
582template<
typename MeshT >
584std::vector< int > getFaceSelection(
MeshT* _mesh);
591template<
typename MeshT >
593std::vector< int > getFaceSelection(
MeshT* _mesh,
bool& _invert);
601template<
typename MeshT >
603void convertFaceToVertexSelection(
MeshT* _mesh,
const std::vector< int >& _faces);
608template<
typename MeshT >
610void convertFaceToVertexSelection(
MeshT* _mesh);
615template<
typename MeshT >
617void convertFaceToEdgeSelection(
MeshT* _mesh);
622template<
typename MeshT >
624void convertFaceToHalfedgeSelection(
MeshT* _mesh);
629template<
typename MeshT >
631void convertFaceSelectionToFeatureFaces(
MeshT* _mesh);
636template<
typename MeshT >
638void convertFeatureFacesToFaceSelection(
MeshT* _mesh);
643template<
typename MeshT >
645void clearFeatureFaces(
MeshT* _mesh);
652#if defined(INCLUDE_TEMPLATES) && !defined(MESHSELECTION_C)
653#define MESHSELECTION_TEMPLATES
654#include "MeshSelectionT_impl.hh"
void selectHalfedges(MeshT *_mesh, const std::vector< int > &_halfedges)
Select given halfedges of a mesh.
void selectVertices(MeshT *_mesh, const std::vector< int > &_vertices)
Select given vertices of a mesh.
void selectFaces(MeshT *_mesh, const std::vector< int > &_faces)
Select given faces of a mesh.
void selectElements(MeshT *_mesh, const std::vector< int > &_vertices, OpenMesh::VertexHandle)
Select given vertices of a mesh Same as selectVertices.
void selectEdges(MeshT *_mesh, const std::vector< int > &_edges, const double _dihedral_angle_threshold=0.0)
Select given edges of a mesh.
Handle for a edge entity.
Handle for a face entity.
Handle for a halfedge entity.
Handle for a vertex entity.