Salome HOME
bos #24368 EDF 23667 - Duplicates nodes
[modules/smesh.git] / src / SMDS / SMDS_VolumeTool.hxx
index b42a0ae07db606dcee12098e17140c934685c2d1..19aaeadf48ff36915193874b9841c2c2f39aa9c9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -20,7 +20,7 @@
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
-//  SMESH SMDS : implementaion of Salome mesh data structure
+//  SMESH SMDS : implementation of Salome mesh data structure
 // File      : SMDS_VolumeTool.hxx
 // Module    : SMESH
 // Created   : Tue Jul 13 11:27:17 2004
 
 #include "SMESH_SMDS.hxx"
 
+#include <smIdType.hxx>
+
 class SMDS_MeshElement;
 class SMDS_MeshNode;
-class SMDS_VtkVolume;
 class SMDS_MeshVolume;
 
 #include <vector>
@@ -58,20 +59,22 @@ class SMDS_EXPORT SMDS_VolumeTool
 
   SMDS_VolumeTool ();
   ~SMDS_VolumeTool ();
-  SMDS_VolumeTool (const SMDS_MeshElement* theVolume,
-                   const bool              ignoreCentralNodes=true);
+  SMDS_VolumeToolconst SMDS_MeshElement* theVolume,
+                   const bool              ignoreCentralNodes = true);
 
-  bool Set (const SMDS_MeshElement* theVolume,
-            const bool              ignoreCentralNodes=true);
+  bool Set( const SMDS_MeshElement*                  theVolume,
+            const bool                               ignoreCentralNodes = true,
+            const std::vector<const SMDS_MeshNode*>* nodes = 0);
   // Set volume.
   // Return false if theVolume is not of type SMDSAbs_Volume.
   // ignoreCentralNodes makes skip nodes at face centers when returning
-  // nodes of faces of SMDSEntity_TriQuad_Hexa
+  // nodes of faces of SMDSEntity_TriQuad_Hexa.
+  // alternative nodes can be provided
 
   const SMDS_MeshVolume* Element() const;
   // return element
 
-  int ID() const;
+  smIdType ID() const;
   // return element ID
 
   bool IsPoly() const { return myPolyedre; }
@@ -91,10 +94,10 @@ class SMDS_EXPORT SMDS_VolumeTool
   // top and bottom faces are reversed.
   // Result of IsForward() and methods returning nodes change
 
-  const SMDS_MeshNode** GetNodes() { return &myVolumeNodes[0]; }
+  const SMDS_MeshNode** GetNodes() const { return (const SMDS_MeshNode**) &myVolumeNodes[0]; }
   // Return array of volume nodes
 
-  int NbNodes() { return myVolumeNodes.size(); }
+  int NbNodes() const { return (int) myVolumeNodes.size(); }
   // Return array of volume nodes
 
   double GetSize() const;
@@ -247,17 +250,20 @@ class SMDS_EXPORT SMDS_VolumeTool
 
   bool setFace( int faceIndex ) const;
 
-  bool projectNodesToNormal( int faceIndex, double& minProj, double& maxProj ) const;
+  bool projectNodesToNormal( int     faceIndex,
+                             double& minProj,
+                             double& maxProj,
+                             double* normal = 0) const;
 
   const SMDS_MeshElement* myVolume;
-  const SMDS_VtkVolume*   myPolyedre;
+  const SMDS_MeshVolume*  myPolyedre;
   bool                    myIgnoreCentralNodes;
 
   bool                    myVolForward;
   int                     myNbFaces;
   std::vector<const SMDS_MeshNode*> myVolumeNodes;
   std::vector< int >      myPolyIndices; // of a myCurFace
-  std::vector< int >      myPolyQuantities;
+  std::vector<int>        myPolyQuantities;
   std::vector< int >      myPolyFacetOri; // -1-in, +1-out, 0-undef
 
   typedef std::pair<int,int> Link;