29 #ifndef SMDS_VolumeTool_HeaderFile 
   30 #define SMDS_VolumeTool_HeaderFile 
   55   enum VolumeType { UNKNOWN = -1, TETRA = 0, PYRAM, PENTA, HEXA,
 
   56                     HEX_PRISM, 
QUAD_TETRA, QUAD_PYRAM, QUAD_PENTA, QUAD_HEXA,
 
   62                    const bool              ignoreCentralNodes = 
true);
 
   65             const bool                               ignoreCentralNodes = 
true,
 
   66             const std::vector<const SMDS_MeshNode*>* nodes = 0);
 
   79   bool IsPoly()
 const { 
return myPolyedre; }
 
   85   VolumeType GetVolumeType() 
const;
 
   99   int NbNodes()
 const { 
return myVolumeNodes.size(); }
 
  102   double GetSize() 
const;
 
  107   bool IsOut(
double X, 
double Y, 
double Z, 
double tol) 
const;
 
  116                  const bool           theIgnoreMediumNodes=
false) 
const;
 
  120   bool IsLinked (
const int theNode1Index,
 
  121                  const int theNode2Index,
 
  122                  bool      theIgnoreMediumNodes=
false) 
const;
 
  130   int GetAllExistingEdges(std::vector<const SMDS_MeshElement*> & edges) 
const;
 
  133   double MinLinearSize2() 
const;
 
  136   double MaxLinearSize2() 
const;
 
  146   void SetExternalNormal ();
 
  153   int NbFaceNodes( 
int faceIndex ) 
const;
 
  156   const int* GetFaceNodesIndices( 
int faceIndex ) 
const;
 
  176   bool GetFaceNodes (
int faceIndex,
 
  177                      std::set<const SMDS_MeshNode*>& theFaceNodes ) 
const;
 
  180   bool IsFaceExternal( 
int faceIndex ) 
const;
 
  184   bool IsFreeFace(  
int faceIndex, 
const SMDS_MeshElement** otherVol=0 ) 
const;
 
  188   bool IsFreeFaceAdv(  
int faceIndex, 
const SMDS_MeshElement** otherVol=0 ) 
const;
 
  192   bool GetFaceNormal (
int faceIndex, 
double & X, 
double & Y, 
double & 
Z) 
const;
 
  195   bool GetFaceBaryCenter (
int faceIndex, 
double & X, 
double & Y, 
double & 
Z) 
const;
 
  198   double GetFaceArea( 
int faceIndex ) 
const;
 
  201   int GetOppFaceIndex( 
int faceIndex ) 
const;
 
  204   int GetCenterNodeIndex( 
int faceIndex ) 
const;
 
  207   int GetFaceIndex( 
const std::set<const SMDS_MeshNode*>& theFaceNodes,
 
  208                     const int                             theFaceIndexHint=-1) 
const;
 
  216   int GetAllExistingFaces(std::vector<const SMDS_MeshElement*> & faces) 
const;
 
  223   static VolumeType GetType(
int nbNodes);
 
  226   static int NbFaces( VolumeType type );
 
  229   static const int* GetFaceNodesIndices(VolumeType type,
 
  238   static int NbFaceNodes(VolumeType type, 
int faceIndex );
 
  242   static int NbCornerNodes(VolumeType type);
 
  245   static int GetOppFaceIndexOfHex( 
int faceIndex );
 
  250   bool setFace( 
int faceIndex ) 
const;
 
  252   bool projectNodesToNormal( 
int faceIndex, 
double& minProj, 
double& maxProj ) 
const;
 
  265   typedef std::pair<int,int> 
Link;