MEPP2 Project
AIFMesh.hpp
Go to the documentation of this file.
1 // Copyright (c) 2012-2019 University of Lyon and CNRS (France).
2 // All rights reserved.
3 //
4 // This file is part of MEPP2; you can redistribute it and/or modify
5 // it under the terms of the GNU Lesser General Public License as
6 // published by the Free Software Foundation; either version 3 of
7 // the License, or (at your option) any later version.
8 //
9 // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
10 // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
11 #pragma once
12 
13 #include <iostream>
14 #include <vector>
15 #include <set>
16 #include <limits>
17 #include <stdexcept>
18 #include <boost/range/iterator_range.hpp>
19 
23 
26 
28 
29 
30 namespace FEVV {
31 namespace DataStructures {
32 namespace AIF {
33 
46 class AIFMesh
47 {
48 public:
49  typedef AIFMesh Self;
50  typedef boost::shared_ptr< Self > ptr;
51  typedef boost::shared_ptr< Self > ptr_mesh;
52  typedef boost::shared_ptr< const Self > ptr_cmesh;
53 
55  typedef AIFEdge edge_type;
56  typedef AIFFace face_type;
57 
61 
63  typedef AIFPoint< CoordinateType, 3 > Point; // 3D point for geometry
64  typedef std::array< CoordinateType, 2 >
65  PointUV; // 2D point for texture coords
66  typedef AIFVector< CoordinateType, 3 > Vector; // 3D vector
67 
70 
71 private:
84 
101 
102 public:
106  AIFMesh(void);
107 
111  AIFMesh(const Self &);
112 
116  ~AIFMesh();
117 
121  Self &operator=(const Self &);
122 public:
127  static ptr_mesh New();
133  boost::iterator_range< VertexContainerType::const_iterator >
134  GetVertices() const
135  {
136  return boost::make_iterator_range(m_Vertices.cbegin(), m_Vertices.cend());
137  }
143  boost::iterator_range< VertexContainerType::iterator > GetVertices()
144  {
145  return boost::make_iterator_range(m_Vertices.begin(), m_Vertices.end());
146  }
153  {
154  return m_Vertices.begin();
155  }
162  {
163  return m_Vertices.end();
164  }
165 
171  boost::iterator_range< EdgeContainerType::const_iterator > GetEdges() const
172  {
173  return boost::make_iterator_range(m_Edges.cbegin(), m_Edges.cend());
174  }
180  boost::iterator_range< EdgeContainerType::iterator > GetEdges()
181  {
182  return boost::make_iterator_range(m_Edges.begin(), m_Edges.end());
183  }
189  boost::iterator_range< FaceContainerType::const_iterator > GetFaces() const
190  {
191  return boost::make_iterator_range(m_Faces.cbegin(), m_Faces.cend());
192  }
198  boost::iterator_range< FaceContainerType::iterator > GetFaces()
199  {
200  return boost::make_iterator_range(m_Faces.begin(), m_Faces.end());
201  }
206  unsigned int GetNumberOfVertices() const
207  {
208  return static_cast< unsigned int >(m_Vertices.size());
209  }
214  unsigned int GetNumberOfEdges() const
215  {
216  return static_cast< unsigned int >(m_Edges.size());
217  }
222  unsigned int GetNumberOfFaces() const
223  {
224  return static_cast< unsigned int >(m_Faces.size());
225  }
226 
254  template< typename T >
255  void EraseIsolatedCell(AIFCellContainer< T > &container, const T &cell)
256  {
257  std::size_t idx = cell->GetIndex();
258  if (idx != (std::numeric_limits<std::size_t>::max)())
259  {
260  // remove element from container
261  std::size_t cLastId = 0; // init to 0 to remove C6001 Warning under VS2019
262  if (container[idx]->GetIndex() == idx) // container[idx] should not overflow
263  cLastId = container.remove(idx);
264  else
265  {
266  std::cerr << "EraseIsolatedCell: Warning: cell index does not match container index. A linear search is thus done." << std::endl;
267  auto it = container.begin(), it_e = container.end();
268  for (std::size_t cpt=0; it != it_e; ++it,++cpt)
269  {
270  if ((*it)->GetIndex() == idx)
271  {
272  cLastId = container.remove(cpt);
273  break;
274  }
275  }
276  }
277  // remove entry from property maps
278  PropertyMapContainer *pmc = GetPropertyMapContainer<T>();
279 
280  pmc->removeProperties(idx, cLastId);
281  cell->SetIndex((std::numeric_limits<std::size_t>::max)());
282  }
283  }
291  {
292  EraseIsolatedCell(m_Vertices, vertex);
293  }
300  {
302  }
303 
312  {
313  m_Edges.erase(edge_iter);
314  }
322  {
324  }
325 
331  void clear();
332 public:
337  void Print() const;
338 
339  //---------------------------
340  // Property maps management
341  //---------------------------
342 
350  template< typename CellType >
352 
360  template< typename CellType >
362 
369  template< typename CellType, typename T >
370  PropertyMap< T > *AddPropertyMap(const std::string &mapName)
371  {
372  PropertyMapContainer *pmc = GetPropertyMapContainer< CellType >();
373  return pmc->addPropertyMap< T >(mapName);
374  }
375 
382  template< typename CellType, typename T >
383  PropertyMap< T > *GetPropertyMap(const std::string &mapName)
384  {
385  PropertyMapContainer *pmc = GetPropertyMapContainer< CellType >();
386  return pmc->getPropertyMap< T >(mapName);
387  }
388 
389 
396  template< typename CellType >
397  bool isPropertyMap(const std::string &mapName) const
398  {
399  const PropertyMapContainer *pmc = GetPropertyMapContainer< CellType >();
400  return pmc->isPropertyMap(mapName);
401  }
402 
409  template< typename CellType >
410  bool isAPropertyMapStartingWithPrefix(const std::string &mapPrefixName) const
411  {
412  const PropertyMapContainer *pmc = GetPropertyMapContainer< CellType >();
413  return pmc->isAPropertyMapStartingWithPrefix(mapPrefixName);
414  }
415 
422  template< typename CellType >
423  std::vector< std::string > GetPropertyMapNamesStartingWithPrefix(const std::string &mapPrefixName) const
424  {
425  const PropertyMapContainer *pmc = GetPropertyMapContainer< CellType >();
426  return pmc->GetPropertyMapNamesStartingWithPrefix(mapPrefixName);
427  }
428 
435  template< typename CellType >
436  void RemovePropertyMap(const std::string &mapName)
437  {
438  PropertyMapContainer *pmc = GetPropertyMapContainer< CellType >();
439  pmc->removePropertyMap(mapName);
440  }
441 
450  template< typename CellType, typename T >
451  void SetProperty(const std::string &mapName, std::size_t cellId, T value)
452  {
453  PropertyMapContainer *pmc = GetPropertyMapContainer< CellType >();
454  pmc->setProperty< T >(mapName, cellId, value);
455  }
456 
464  template< typename CellType, typename T >
465  T &GetProperty(const std::string &mapName, std::size_t cellId)
466  {
467  PropertyMapContainer *pmc = GetPropertyMapContainer< CellType >();
468  return pmc->getProperty< T >(mapName, cellId);
469  }
470 
478  template< typename CellType, typename T >
479  const T &GetProperty(const std::string &mapName, std::size_t cellId) const
480  {
481  const PropertyMapContainer *pmc = GetPropertyMapContainer< CellType >();
482  return pmc->getProperty< T >(mapName, cellId);
483  }
484 
485  //---------------------------
486  // Associative property maps management
487  //---------------------------
488 
493  template< typename KeyType, typename ValueType >
495  AddAssocPropertyMap(const std::string &mapName)
496  {
497  return m_AssocPropertyMaps.addAssocPropertyMap< KeyType, ValueType >(
498  mapName);
499  }
500 
505  template< typename KeyType, typename ValueType >
507  GetAssocPropertyMap(const std::string &mapName)
508  {
509  return m_AssocPropertyMaps.getAssocPropertyMap< KeyType, ValueType >(
510  mapName);
511  }
512 
517  void RemoveAssocPropertyMap(const std::string &mapName)
518  {
520  }
521 
526  bool isAssocPropertyMap(const std::string &mapName)
527  {
528  return m_AssocPropertyMaps.isPropertyMap(mapName);
529  }
530 
531 }; // END OF AIFMesh
532 
533 template<>
534 PropertyMapContainer *
535 AIFMesh::GetPropertyMapContainer< AIFVertex::ptr >(void);
536 template<>
537 PropertyMapContainer *
538 AIFMesh::GetPropertyMapContainer< AIFEdge::ptr >(void);
539 template<>
540 PropertyMapContainer *
541 AIFMesh::GetPropertyMapContainer< AIFFace::ptr >(void);
542 template<>
545 template<>
548 template<>
551 
552 } // namespace AIF
553 } // namespace DataStructures
554 } // namespace FEVV
555 
556 
FEVV::DataStructures::AIF::AssocPropertyMap
Definition: AIFProperties.h:446
FEVV::DataStructures::AIF::AIFMesh::GetNumberOfEdges
unsigned int GetNumberOfEdges() const
Definition: AIFMesh.hpp:214
FEVV::DataStructures::AIF::PropertyMapContainer::addAssocPropertyMap
AssocPropertyMap< KeyType, ValueType > * addAssocPropertyMap(const std::string &name)
Definition: AIFProperties.h:688
AIFEdge.hpp
FEVV::DataStructures::AIF::AIFVertex::ptr
boost::shared_ptr< self > ptr
Definition: AIFVertex.hpp:47
FEVV::DataStructures::AIF::AIFFace::NormalCoordinateType
double NormalCoordinateType
Definition: AIFFace.hpp:64
FEVV::DataStructures::AIF::AIFMesh::GetAssocPropertyMap
AssocPropertyMap< KeyType, ValueType > * GetAssocPropertyMap(const std::string &mapName)
Definition: AIFMesh.hpp:507
FEVV::DataStructures::AIF::AIFMesh::m_FacePropertyMaps
PropertyMapContainer m_FacePropertyMaps
Definition: AIFMesh.hpp:96
FEVV::DataStructures::AIF::PropertyMapContainer::getProperty
T & getProperty(const std::string &name, std::size_t idx)
Definition: AIFProperties.h:620
FEVV::DataStructures::AIF::AIFMesh::GetEdges
boost::iterator_range< EdgeContainerType::const_iterator > GetEdges() const
Definition: AIFMesh.hpp:171
FEVV::DataStructures::AIF::AIFMesh::EraseIsolatedEdge
void EraseIsolatedEdge(EdgeContainerType::iterator edge_iter)
Definition: AIFMesh.hpp:311
FEVV::DataStructures::AIF::PropertyMapContainer::removePropertyMap
void removePropertyMap(const std::string &name)
Definition: AIFProperties.h:575
FEVV::DataStructures::AIF::AIFVertex
This class represents a vertex used by AIFMesh objects. An AIFVertex natively saves relations with it...
Definition: AIFVertex.hpp:41
FEVV::DataStructures::AIF::AIFMesh::vertices_begin
VertexContainerType::iterator vertices_begin()
Definition: AIFMesh.hpp:152
FEVV::DataStructures::AIF::AIFMesh::SetProperty
void SetProperty(const std::string &mapName, std::size_t cellId, T value)
Definition: AIFMesh.hpp:451
FEVV::DataStructures::AIF::AIFMesh::GetProperty
const T & GetProperty(const std::string &mapName, std::size_t cellId) const
Definition: AIFMesh.hpp:479
FEVV::DataStructures::AIF::AIFCellContainer::cend
const_iterator cend(void) const
Definition: AIFCellContainer.h:132
FEVV::DataStructures::AIF::PropertyMapContainer::isAPropertyMapStartingWithPrefix
bool isAPropertyMapStartingWithPrefix(const std::string &prefix) const
Definition: AIFProperties.h:502
FEVV::DataStructures::AIF::AIFMesh::face_type
AIFFace face_type
Definition: AIFMesh.hpp:56
FEVV::DataStructures::AIF::PropertyMapContainer::getPropertyMap
PropertyMap< T > * getPropertyMap(const std::string &name) const
Definition: AIFProperties.h:538
FEVV::DataStructures::AIF::PropertyMapContainer::GetPropertyMapNamesStartingWithPrefix
std::vector< std::string > GetPropertyMapNamesStartingWithPrefix(const std::string &prefix) const
Definition: AIFProperties.h:518
FEVV::DataStructures::AIF::AIFMesh::ptr
boost::shared_ptr< Self > ptr
Definition: AIFMesh.hpp:50
FEVV::DataStructures::AIF::AIFMesh::GetPropertyMapNamesStartingWithPrefix
std::vector< std::string > GetPropertyMapNamesStartingWithPrefix(const std::string &mapPrefixName) const
Definition: AIFMesh.hpp:423
FEVV::DataStructures::AIF::AIFMesh::GetFaces
boost::iterator_range< FaceContainerType::const_iterator > GetFaces() const
Definition: AIFMesh.hpp:189
FEVV::DataStructures::AIF::AIFCellContainer::cbegin
const_iterator cbegin(void) const
Definition: AIFCellContainer.h:127
FEVV::DataStructures::AIF::AIFMesh::EdgeContainerType
AIFCellContainer< edge_type::ptr > EdgeContainerType
Definition: AIFMesh.hpp:59
FEVV::DataStructures::AIF::AIFCellContainer::add
void add(T c)
Definition: AIFCellContainer.h:34
FEVV::DataStructures::AIF::AIFMesh::InsertIsolatedFace
void InsertIsolatedFace(face_type::ptr face)
Definition: AIFMesh.hpp:247
FEVV::DataStructures::AIF::AIFFace
This class represents a face used by AIFMesh objects. An AIFFace natively saves relations with its in...
Definition: AIFFace.hpp:46
FEVV::DataStructures::AIF::AIFFace::ptr
boost::shared_ptr< self > ptr
Definition: AIFFace.hpp:52
AIFFace.hpp
FEVV::DataStructures::AIF::AIFMesh::GetVertices
boost::iterator_range< VertexContainerType::iterator > GetVertices()
Definition: AIFMesh.hpp:143
FEVV::DataStructures::AIF::PropertyMapContainer::setProperty
void setProperty(const std::string &name, std::size_t idx, const T &value)
Definition: AIFProperties.h:606
FEVV::DataStructures::AIF::AIFMesh::vertex_type
AIFVertex vertex_type
Definition: AIFMesh.hpp:54
FEVV::DataStructures::AIF::AIFMesh::New
static ptr_mesh New()
Definition: AIFMesh.inl:720
FEVV::DataStructures::AIF::PropertyMapContainer::removeProperties
void removeProperties(std::size_t idx, std::size_t cLastIdx)
Definition: AIFProperties.h:646
FEVV::DataStructures::AIF::AIFMesh::vertices_end
VertexContainerType::iterator vertices_end()
Definition: AIFMesh.hpp:161
FEVV::DataStructures::AIF::AIFMesh::VertexContainerType
AIFCellContainer< vertex_type::ptr > VertexContainerType
Definition: AIFMesh.hpp:58
FEVV::DataStructures::AIF::AIFMesh::GetPropertyMapContainer
const PropertyMapContainer * GetPropertyMapContainer(void) const
FEVV::DataStructures::AIF::AIFMesh::Vector
AIFVector< CoordinateType, 3 > Vector
Definition: AIFMesh.hpp:66
FEVV::DataStructures::AIF::edge
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::edge_descriptor edge(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::halfedge_descriptor h, const FEVV::DataStructures::AIF::AIFMesh &sm)
Returns the edge corresponding to h and opposite(h).
Definition: Graph_traits_aif.h:345
FEVV::DataStructures::AIF::AIFMesh::ptr_cmesh
boost::shared_ptr< const Self > ptr_cmesh
Definition: AIFMesh.hpp:52
FEVV::DataStructures::AIF::AIFMesh::RemovePropertyMap
void RemovePropertyMap(const std::string &mapName)
Definition: AIFMesh.hpp:436
FEVV::DataStructures::AIF::AIFCellContainer< vertex_type::ptr >::iterator
std::vector< vertex_type::ptr >::iterator iterator
Definition: AIFCellContainer.h:28
FEVV::DataStructures::AIF::AIFCellContainer::begin
iterator begin(void)
Definition: AIFCellContainer.h:108
FEVV::DataStructures::AIF::AIFMesh::GetNumberOfVertices
unsigned int GetNumberOfVertices() const
Definition: AIFMesh.hpp:206
FEVV::DataStructures::AIF::PropertyMap
Definition: AIFProperties.h:381
FEVV::DataStructures::AIF::PropertyMapContainer
Definition: AIFProperties.h:469
FEVV::DataStructures::AIF::AIFMesh::EraseIsolatedFace
void EraseIsolatedFace(face_type::ptr face)
Definition: AIFMesh.hpp:321
FEVV::DataStructures::AIF::AIFMesh::Point
AIFPoint< CoordinateType, 3 > Point
Definition: AIFMesh.hpp:63
FEVV
Interfaces for plugins These interfaces will be used for different plugins.
Definition: Assert.h:16
FEVV::DataStructures::AIF::AIFVertex::CoordinateType
double CoordinateType
Definition: AIFVertex.hpp:59
FEVV::DataStructures::AIF::AIFMesh::InsertIsolatedEdge
void InsertIsolatedEdge(edge_type::ptr edge)
Definition: AIFMesh.hpp:240
FEVV::DataStructures::AIF::AIFMesh::InsertIsolatedVertex
void InsertIsolatedVertex(vertex_type::ptr vertex)
Definition: AIFMesh.hpp:233
FEVV::DataStructures::AIF::AIFMesh::m_EdgePropertyMaps
PropertyMapContainer m_EdgePropertyMaps
Definition: AIFMesh.hpp:92
FEVV::DataStructures::AIF::PropertyMapContainer::getAssocPropertyMap
AssocPropertyMap< KeyType, ValueType > * getAssocPropertyMap(const std::string &name)
Definition: AIFProperties.h:665
FEVV::DataStructures::AIF::AIFMesh::isAssocPropertyMap
bool isAssocPropertyMap(const std::string &mapName)
Definition: AIFMesh.hpp:526
Helpers.hxx
AIFCellContainer.h
FEVV::DataStructures::AIF::AIFMesh::isAPropertyMapStartingWithPrefix
bool isAPropertyMapStartingWithPrefix(const std::string &mapPrefixName) const
Definition: AIFMesh.hpp:410
FEVV::DataStructures::AIF::AIFMesh::AddAssocPropertyMap
AssocPropertyMap< KeyType, ValueType > * AddAssocPropertyMap(const std::string &mapName)
Definition: AIFMesh.hpp:495
FEVV::DataStructures::AIF::AIFMesh::Print
void Print() const
Definition: AIFMesh.inl:728
FEVV::DataStructures::AIF::AIFCellContainer::remove
std::size_t remove(std::size_t i)
Definition: AIFCellContainer.h:43
FEVV::DataStructures::AIF::AIFMesh::AIFMesh
AIFMesh(void)
Definition: AIFMesh.inl:19
FEVV::DataStructures::AIF::AIFMesh::ptr_mesh
boost::shared_ptr< Self > ptr_mesh
Definition: AIFMesh.hpp:51
FEVV::DataStructures::AIF::AIFMesh::CoordinateType
AIFVertex::CoordinateType CoordinateType
Definition: AIFMesh.hpp:62
FEVV::DataStructures::AIF::AIFMesh::GetVertices
boost::iterator_range< VertexContainerType::const_iterator > GetVertices() const
Definition: AIFMesh.hpp:134
FEVV::DataStructures::AIF::AIFMesh::edge_type
AIFEdge edge_type
Definition: AIFMesh.hpp:55
AIFMesh.inl
FEVV::DataStructures::AIF::AIFEdge::ptr
boost::shared_ptr< self > ptr
Definition: AIFEdge.hpp:56
FEVV::DataStructures::AIF::AIFVector
Definition: AIFProperties.h:173
FEVV::DataStructures::AIF::AIFMesh::operator=
Self & operator=(const Self &)
Definition: AIFMesh.inl:40
FEVV::DataStructures::AIF::AIFMesh::GetNumberOfFaces
unsigned int GetNumberOfFaces() const
Definition: AIFMesh.hpp:222
FEVV::DataStructures::AIF::GetPropertyMapContainer< AIFVertex::ptr >
PropertyMapContainer * AIFMesh::GetPropertyMapContainer< AIFVertex::ptr >(void)
Definition: AIFMesh.inl:765
FEVV::DataStructures::AIF::AIFMesh::FaceContainerType
AIFCellContainer< face_type::ptr > FaceContainerType
Definition: AIFMesh.hpp:60
FEVV::DataStructures::AIF::AIFMesh::RemoveAssocPropertyMap
void RemoveAssocPropertyMap(const std::string &mapName)
Definition: AIFMesh.hpp:517
FEVV::DataStructures::AIF::AIFMesh::m_Vertices
VertexContainerType m_Vertices
Definition: AIFMesh.hpp:75
FEVV::DataStructures::AIF::GetPropertyMapContainer< AIFFace::ptr >
PropertyMapContainer * AIFMesh::GetPropertyMapContainer< AIFFace::ptr >(void)
Definition: AIFMesh.inl:781
FEVV::DataStructures::AIF::AIFMesh::Self
AIFMesh Self
Definition: AIFMesh.hpp:49
FEVV::DataStructures::AIF::AIFMesh::EraseIsolatedVertex
void EraseIsolatedVertex(vertex_type::ptr vertex)
Definition: AIFMesh.hpp:290
FEVV::DataStructures::AIF::AIFMesh::PointUV
std::array< CoordinateType, 2 > PointUV
Definition: AIFMesh.hpp:65
FEVV::DataStructures::AIF::AIFCellContainer< vertex_type::ptr >
FEVV::DataStructures::AIF::PropertyMapContainer::isPropertyMap
bool isPropertyMap(const std::string &name) const
Definition: AIFProperties.h:488
FEVV::DataStructures::AIF::AIFMesh::isPropertyMap
bool isPropertyMap(const std::string &mapName) const
Definition: AIFMesh.hpp:397
FEVV::DataStructures::AIF::AIFMesh::clear
void clear()
Definition: AIFMesh.inl:706
FEVV::DataStructures::AIF::AIFMesh::m_VertexPropertyMaps
PropertyMapContainer m_VertexPropertyMaps
Definition: AIFMesh.hpp:88
FEVV::DataStructures::AIF::GetPropertyMapContainer< AIFEdge::ptr >
PropertyMapContainer * AIFMesh::GetPropertyMapContainer< AIFEdge::ptr >(void)
Definition: AIFMesh.inl:773
FEVV::DataStructures::AIF::AIFMesh::m_Faces
FaceContainerType m_Faces
Definition: AIFMesh.hpp:83
FEVV::DataStructures::AIF::PropertyMapContainer::addPropertyMap
PropertyMap< T > * addPropertyMap(const std::string &name)
Definition: AIFProperties.h:559
FEVV::DataStructures::AIF::AIFMesh::m_Edges
EdgeContainerType m_Edges
Definition: AIFMesh.hpp:79
FEVV::DataStructures::AIF::AIFMesh::EraseIsolatedCell
void EraseIsolatedCell(AIFCellContainer< T > &container, const T &cell)
Definition: AIFMesh.hpp:255
FEVV::DataStructures::AIF::AIFMesh
This class represents an AIF structure. AIF structure can deal with both manifold and non-manifold su...
Definition: AIFMesh.hpp:47
FEVV::DataStructures::AIF::face
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::face_descriptor face(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::halfedge_descriptor h, const FEVV::DataStructures::AIF::AIFMesh &)
Returns the face incident to halfedge h.
Definition: Graph_traits_aif.h:664
FEVV::DataStructures::AIF::AIFCellContainer::end
iterator end(void)
Definition: AIFCellContainer.h:112
FEVV::DataStructures::AIF::AIFCellContainer::erase
void erase(const iterator iter)
Definition: AIFCellContainer.h:146
FEVV::DataStructures::AIF::AIFMesh::~AIFMesh
~AIFMesh()
Definition: AIFMesh.inl:33
FEVV::DataStructures::AIF::AIFEdge
This class represents an edge used by AIFMesh objects. An AIFEdge natively saves relations with its i...
Definition: AIFEdge.hpp:49
FEVV::DataStructures::AIF::AIFMesh::AddPropertyMap
PropertyMap< T > * AddPropertyMap(const std::string &mapName)
Definition: AIFMesh.hpp:370
FEVV::DataStructures::AIF::AIFMesh::GetProperty
T & GetProperty(const std::string &mapName, std::size_t cellId)
Definition: AIFMesh.hpp:465
FEVV::DataStructures::AIF::AIFMesh::GetEdges
boost::iterator_range< EdgeContainerType::iterator > GetEdges()
Definition: AIFMesh.hpp:180
AIFProperties.h
FEVV::DataStructures::AIF::AIFMesh::GetPropertyMapContainer
PropertyMapContainer * GetPropertyMapContainer(void)
FEVV::DataStructures::AIF::AIFMesh::EraseIsolatedEdge
void EraseIsolatedEdge(edge_type::ptr edge)
Definition: AIFMesh.hpp:299
FEVV::DataStructures::AIF::AIFMesh::Normal
AIFVector< NormalCoordinateType, 3 > Normal
Definition: AIFMesh.hpp:69
AIFVertex.hpp
FEVV::DataStructures::AIF::AIFMesh::GetPropertyMap
PropertyMap< T > * GetPropertyMap(const std::string &mapName)
Definition: AIFMesh.hpp:383
FEVV::DataStructures::AIF::AIFMesh::NormalCoordinateType
AIFFace::NormalCoordinateType NormalCoordinateType
Definition: AIFMesh.hpp:68
FEVV::DataStructures::AIF::AIFMesh::GetFaces
boost::iterator_range< FaceContainerType::iterator > GetFaces()
Definition: AIFMesh.hpp:198
FEVV::DataStructures::AIF::AIFCellContainer::size
std::size_t size(void) const
Definition: AIFCellContainer.h:136
FEVV::DataStructures::AIF::AIFPoint
Definition: AIFProperties.h:31
FEVV::DataStructures::AIF::AIFMesh::m_AssocPropertyMaps
PropertyMapContainer m_AssocPropertyMaps
Definition: AIFMesh.hpp:100